Laravel gettext还是本地化?

3
我想问一下,本地化Laravel项目的首选工具是什么以及为什么?我已经使用过gettext插件并且效果很好。我喜欢使用POedit,它允许没有编程技能的翻译人员使用。此外,翻译提示也很棒。
使用Laravel本地化有什么好处吗?另外,使用gettext有什么缺点吗?
谢谢!
3个回答

2

为什么不同时使用GetText和本地化?

  • 在源文本中使用GetText对于开发人员来说非常方便,可以快速高效地处理新功能,而无需“编造”键、切换文件、保持键和源文本之间的一致性等。此外,使用GetText可以更容易地检查是否已翻译所有内容,您不必担心某些键/值已过时。

  • 使用带有键/值的PHP trans() 对于文案撰写非常方便。市场团队或CEO可以轻松更改所有语言的文本(包括源语言),而无需更改代码。

出于这些原因,我们创建了https://translation.io/laravel,允许您同时使用两种语法(我们建议仅在需要通过翻译界面编辑文本时才使用PHP键/值)。

如果您需要更多技术信息,请访问以下链接:https://github.com/translation/laravel


1

@Peter Matisko,请问你能否给我们稍微更新一下,你是如何决定使用哪一个翻译库的?

就我个人而言,我尝试了很多不同的翻译库,但gettext仍然是我的首选:

  • 从代码中提取所有翻译并生成翻译文件(*.po)
  • 翻译编辑器可在Mac、Windows和Unix上运行(Poedit最初发布于约20年前)
  • 翻译复数形式

1
我也喜欢gettext。POedit用于翻译很酷。我有专业版,它提供了翻译建议,节省了很多时间。此外,如果可能的话,我想避免键值翻译方法,因为使用键的代码更难读取。 - Peter Matisko

1
本地化方法在Laravel文档中有描述。您基本上需要维护所有要翻译的语言文件。要从文件中提取它们,您可以在Blade模板中使用trans()trans_choice()(用于复数)或__() 帮助程序。
这是最基本的翻译处理。在更高的级别上,您可能希望将所有翻译保存到数据库中。Github上存在一些执行此操作的软件包。例如:

以及更多。只需搜索Laravel翻译

该方法仅在您使用Blade作为前端时有效。如果您使用VueJs、Angular或React,则blade辅助程序将不再起作用,您必须找到不同的方法来处理此问题。这可能取决于前述前端框架的现有语言处理方式。

我写了一篇关于这个主题的博客文章


谢谢您的文章,我正在浏览它。您认为gettex是更大项目的好解决方案吗?另外,翻译应该存储在数据库中还是文件中? - Peter Matisko
1
我猜想使用Gettext和翻译服务器是有意义的,当你有一个团队或者一个翻译办公室需要翻译所有的字符串时。这通常出现在开源世界中,志愿者会翻译程序。没有对或错,只要完成工作就可以了。 - common sense

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接