将数据库翻译成不同的语言

时间:2014-03-25 18:45:09

标签: php mysql database gettext

我正在使用 gettext 来翻译我的网页。我已经将我的网页几乎翻译成四种语言(西班牙语,英语,法语和葡萄牙语)。我只翻译了我的php文件中的内容。

我想要的是翻译我的数据库中的东西,例如,我存储在那里的一些文本。我该怎么办? 我想过用echo _($var);替换带有db值的变量,但我认为这不是一个真正的选择。

那么,你会告诉我另一种方法,或者我必须使用gettext翻译它吗? 谢谢!

3 个答案:

答案 0 :(得分:0)

我不知道数据库的结构,但是一种解决方案是将db值转换为适当的语言并使用语言键创建表,以便表格被标准化,并且根据语言选择,您可以引用该表。

答案 1 :(得分:0)

一个适合我的实现是将所有UI代码保留在UI端。这意味着将要翻译的项目放入JavaScript文件中,以便您的Grunt任务将从JavaScript文件中提取它。 Ruben Vermeersch在他的帖子a Marking strings in JavaScript code as translatable中谈到了这一点。以下是我在测试项目中用于演示此想法的代码示例。

angular.module('Test')
    .controller(['gettext', function(gettext) {
        //  Arrays Required for Translation Grunt Task (Do Not Remove)
        var productNames = [
            gettext("Access"),
            gettext("Database Compare"),
            gettext("Excel"),
            gettext("Lync"),
            gettext("OneNote"),
            gettext("Outlook"),
            gettext("PowerPoint"),
            gettext("Publisher"),
            gettext("Visio"),
            gettext("Word")
        ];
    }]);

以这种方式注释JavaScript后,再次运行'grunt extract'任务,您应该在* .pot文件中看到这些值。

现在您已准备好进行翻译并将其编译回您的翻译JavaScript文件。当UI现在从后端获得“访问”时,如果选择了西班牙语,它将知道如何将其翻译为“Acceso”。

我在博文a Localization With Angular-GetText中更深入地讨论了这个问题。如果您仍有疑问,请参阅并告知我们。

答案 2 :(得分:0)

我处于类似情况,我们决定使用angular-gettext在前端进行所有翻译。

基本上我们从数据库中提取了所需的所有字符串,并将它们放入html文件中。然后创建了一个postTranslate过滤器,该过滤器在内插值上运行。

有关详细信息,请查看我的回答here