【问题标题】:Translating a db into different languages将数据库翻译成不同的语言
【发布时间】:2014-03-25 18:45:09
【问题描述】:

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

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

那么,你能推荐我另一种方式来做到这一点,还是我必须使用 gettext 翻译它?
谢谢!

【问题讨论】:

  • 我写了a blog post about this some time ago。我的解决方案是特定于 postgres 的(或者实现是,无论如何),但我列出了我在其他地方遇到的一些其他解决方案。
  • @IMSoP 好的,谢谢!我会看看它! :D

标签: php mysql database gettext


【解决方案1】:

我不知道您的数据库的结构,但是一种解决方案是将 db 值翻译成适当的语言并使用语言键创建表,以便表得到规范化,并且根据语言选择,您可以参考该表。

【讨论】:

  • 是的,我想过!如果我找不到更好的东西,我会这样做!
【解决方案2】:

对我来说效果很好的一个实现是将所有 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 现在例如从后端获得“Access”时,如果选择了西班牙语,它将知道如何将其翻译为“Acceso”。

我在我的博文a Localization With Angular-GetText 中更深入地讨论了这个问题。如果您仍有疑问,请参考该内容并告诉我。

【讨论】:

    【解决方案3】:

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

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

    更多详情请看我的回答here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-04
      相关资源
      最近更新 更多