wysiwyg编辑器的完整界面翻译

时间:2013-11-07 14:22:26

标签: php user-interface wysiwyg multilingual

我需要为站点管理员提供翻译站点界面的方法。按钮,标题和标签中的所有文字都应该是可编辑的,当添加新语言时,他将能够为他们输入新的翻译。

为此我想使用一个所见即所得的编辑器。我有一些编辑的经验,所以我没有技术问题使其工作。我的问题是:

当我用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;
}

1 个答案:

答案 0 :(得分:1)

例如,在带有.PO文件的PHP中(也用于其他语言),它们使用文本本身作为键。在您的示例中,密钥为:

This is a page title

即使你的网站上有两次这个字符串,也没关系,因为翻译总是一样的。当然,有时单个单词具有不同的含义,但您只需将页面名称添加到键中即可。