我需要为站点管理员提供翻译站点界面的方法。按钮,标题和标签中的所有文字都应该是可编辑的,当添加新语言时,他将能够为他们输入新的翻译。
为此我想使用一个所见即所得的编辑器。我有一些编辑的经验,所以我没有技术问题使其工作。我的问题是:
当我用wysiwyg编辑器编辑html时,然后通过ajax存储请求(在数据库中)将更改提交给服务器。为了识别提交的内容,并将其与某个表/行相关联,我使用唯一标识符,例如table_name+row_id
。此标识符写入html,然后在提交内容时使用
当内容来自数据库并且table_name+row_id
时没有问题,但我如何编辑界面,所有不具备此uid的静态html元素。
首先,我将所有静态文本移动到数据库,但问题是所有这些内容都源自html文件,所以我没有任何方法来识别它并将其绑定到数据库行需要编辑
现在我在html中使用手写的唯一ID,但这需要花费很多时间和精力。 我需要一个更好的方法来做到这一点,我无法在网上找到任何东西
现在是如何运作的:
html文件:
<h1 id="page_title">
<?=get_text('51920ae518647','This is a page title')?>
</h1>
* $uniq_id
参数是手写在html中的
服务器端:
function get_text($uniq_id, $default){
$return_text = "";
if (!empty($page['data']['html_text']['by_uniq_id'][$uniq_id])){
$return_text = $page['data']['html_text']['by_uniq_id'][$uniq_id]->text;
}
else{// insert the default value to the db
$text = new html_text($uniq_id, $default);
if ($text->save()){
$page['data']['html_text']['by_uniq_id'][$uniq_id] = $text;
$return_text = $default;
}
else{
error_log("Get html text error : new text save failed");
}
}
if ($is_admin)
return '<span class="editable_content" id="' . $uniq_id . '">' . $return_text . '</span>';
else
return $return_text;
}
答案 0 :(得分:1)
例如,在带有.PO文件的PHP中(也用于其他语言),它们使用文本本身作为键。在您的示例中,密钥为:
This is a page title
即使你的网站上有两次这个字符串,也没关系,因为翻译总是一样的。当然,有时单个单词具有不同的含义,但您只需将页面名称添加到键中即可。