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

Best way to organize your localized translation file

当我开始构建一个项目时,.po t运行slation 文件中会有很多条目。我使用 Poedit 来构建这些。

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

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

我想像这样组织它们:

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

其中,一旦 运行 通过 t运行slation 文件,将输出如下内容:

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

因此,我所有的 运行 文章都可以按类型组织,例如 error_msg_status_tip_ 等。

有没有人见过这样做的,或者对更有条理的方法有什么建议?

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

trans('error.validation');

但它有一个缺点,如果您忘记翻译您网站上的一个短语,它会显示为关键字 'error.validation'

其实没关系!

这完全取决于你。

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

当然,如果您仍想按部分拆分翻译,您可能想看看 Domains:

来自 PHP 文档:

This function (textdomain()) sets the domain to search within when calls are made to gettext(), usually the named after an application.

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

这里有一些有用的链接: