组织本地化翻译文件的最佳方式

时间:2015-04-28 20:29:08

标签: php localization translation gettext

当我开始构建项目时,.po翻译文件中会有相当多的条目。我使用Poedit构建这些。

我的问题是,此文件中条目的最佳做法是什么?我在想,而不是引用诸如以下的条目:

echo _('This is an entry.');

我正在考虑组织他们:

echo _('error_pwd');
echo _('error_user_taken');

其中,一旦浏览了翻译文件,就会输出如下内容:

Password incorrect. Please try again.
Username is already taken. Please try another.

因此,我的所有翻译都可以按类型进行整理,例如error_msg_status_tip_等。

有没有人看到过这种方式,或者对更有条理的方法有任何建议?

2 个答案:

答案 0 :(得分:1)

这是其他框架的标准方法,例如的Symfony / Laravel:

trans('error.validation');

但它有一个垮台,如果你忘记在你的网站上翻译一个短语,它将显示为关键字'error.validation'

答案 1 :(得分:1)

实际上没关系!

这取决于你。

但是,我建议您不要在部分中拆分翻译。 这样做没有任何好处。实际上,大多数项目对所有msgid条目使用一种文件方法。 像django,see

当然,如果您仍希望按部分进行拆分翻译,可能需要查看Domains

来自PHP doc:

  

此函数(textdomain())设置要在进行调用时搜索的域   gettext(),通常以应用程序命名。

此外,如前所述,使用msgid作为真实短语(而不是下划线或点缀符号键)的优点是,如果没有条目的翻译,它将保留为默认消息。

这里有一些有用的链接: