最佳实践Symfony翻译占位符命名文本与密钥

时间:2018-12-11 13:37:45

标签: symfony internationalization symfony4

我们正在翻译现有的Symfony4应用程序,方法是使用翻译组件提取文本,并另外使用php-translation / symfony-bundle

我们不确定将现有文本用作键或插入占位符是否更好。

使用文本的优点是:

  • 在xlf文件中,源和目标并排使用,以用于翻译器。
  • 树枝文件对于设计师而言仍然有意义,而无需检查网站
  • 很清楚占位符是什么
  • 它是从代码中这样提取的,没有容易出错的手动复制和粘贴

缺点是:

  • 每次修改原始来源时,我们都有一个无效的密钥

您和您的团队如何处理? 翻译文件是您存储库的一部分吗?

此链接建议使用按键: https://medium.com/@smaine.milianni/straightforward-symfony-4-best-practices-e6d1b3c0a9dd

1 个答案:

答案 0 :(得分:2)

According to Symfony

  

始终使用键而不是内容字符串进行翻译。

     

使用密钥可简化翻译文件的管理,因为   您可以更改原始内容,而不必更新所有   翻译文件。

     

键应始终描述其目的,而不是位置。对于   例如,如果表单的字段带有标签Username,则很不错   键将是label.username,而不是edit_form.label.username

使用键代替文本通常会避免在内容中设置键时出现错误,并且显示的内容要小得多。

示例

<div>
    <span>{% trans %}Please enter the value of this input in order for the calculation to work{% endtrans %}</span>
    <label>{% trans %}Simple Input{% endtrans %}</label>
    <input type="text"/>
</div>

在这种情况下,如果您将{% trans %}Simple input{% endtrans %}写在其他地方,那么即使它是相同的,也必须管理另一个翻译。

当然,我们可以争辩说您希望进行大写/小写转换,但是例如,如果使用细枝,则可以使用一些帮助函数来处理lowerupper和{{3 }}。

VS

<div>
    <span>{% trans %}help_text.simple_input{% endtrans %}</span>
    <label>{% trans %}label.simple_input{% endtrans %}</label>
    <input type="text"/>
</div>