我正在使用gettext来翻译我的网页。我已经用四种语言(西班牙语、英语、法语和葡萄牙语)翻译了我的网页。我只翻译了我的php文件中的内容。
我想要的也是翻译我的数据库中的东西,例如,一些我存储在那里的文本。我该怎么做呢?
我想用echo _($var);替换从db获取值的变量,但我不认为这是一个真正的选项。
那么,你会给我推荐另一种方法吗?还是我必须用gettext来翻译它?
谢谢!
发布于 2014-03-25 19:03:34
我不知道您的数据库的结构,但是有一种解决方案是将db值转换成适当的语言,并使用语言键创建表,以便使表规范化,并取决于您可以引用该表的语言选择。
发布于 2014-04-08 17:01:05
对我来说,一个很好的实现是将所有UI代码保存在UI端。这意味着将要翻译的项放入JavaScript文件,以便Grunt任务从JavaScript文件中提取它。Ruben在他的文章“将JavaScript代码中的字符串标记为可翻译的字符串”中谈到了这一点。下面是我在一个测试项目中用来演示这个想法的代码的一个例子。
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之后,再次运行“咕噜提取”任务,您应该会在*.pot文件中看到这些值。
现在,您可以完成您的翻译并将其编译回您的翻译JavaScript文件。例如,当UI从后端获得"Access“时,如果选择西班牙语,它将知道如何将其转换为"Acceso”。
我在我的博客文章角-GetText的局部化中更深入地讨论了这个问题。如果你还有问题,请参考并告诉我。
发布于 2014-10-13 19:12:34
我当时也有类似的情况,所以我们决定在前端用角度的gettext做所有的翻译。
基本上,我们从DB中提取了所需的所有字符串,并将它们放入html文件中。然后创建一个运行在插值值上的postTranslate过滤器。
想了解更多细节,请看我的答案这里。
https://stackoverflow.com/questions/22643605
复制相似问题