【问题标题】:Best way to organize your localized translation file组织本地化翻译文件的最佳方式
【发布时间】:2015-04-28 20:29:07
【问题描述】:

当我开始构建一个项目时,.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_等。

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

【问题讨论】:

  • 是 - 每种类型都有多个翻译文件。其他翻译库支持这个,比如 Symfony2,但我不知道你的实现。
  • 第二个比较好,可能你以后也想改英文错误,如果用第一个再改英文信息,可能会出错
  • 我不明白,我只注意到问题的日期是asked Apr 28 at 20:29,并且没有设置赏金,为什么我们现在在第一页看到这个?

标签: php localization translation gettext


【解决方案1】:

其实没关系!

这完全取决于你。

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

当然,如果你还想按部分拆分翻译,不妨看看Domains

来自 PHP 文档:

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

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

这里有一些有用的链接:

【讨论】:

    【解决方案2】:

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

    trans('error.validation');
    

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

    【讨论】:

    • 为什么不检查,如果找不到该短语,只需显示消息“错误”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    • 2014-09-04
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2013-08-12
    相关资源
    最近更新 更多