0

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

为此,我想使用所见即所得的编辑器。我与 thou 编辑有一些经验,所以我没有任何技术问题使它工作。我的问题是这样的:

当我使用所见即所得编辑器编辑 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;
}
4

1 回答 1

1

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

This is a page title

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

于 2013-11-08T11:39:25.257 回答