代码之家  ›  专栏  ›  技术社区  ›  Calamity Jane

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

  •  0
  • Calamity Jane  · 技术社区  · 6 年前

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

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

    使用文本的优点是:

    • 在XLF文件中,源和目标并排用于转换器。
    • Twig文件对于设计师来说仍然是有意义的,而不必检查网站。
    • 很明显,占位符的作用是什么
    • 它是这样从代码中提取的,不存在手动错误复制和粘贴

    缺点是:

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

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

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

    1 回复  |  直到 6 年前
        1
  •  2
  •   Marc-André    6 年前

    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 %} 在其他地方,那么你就必须管理另一个翻译,即使它是相同的。

    当然,我们可以说您希望进行大小写转换,但是如果使用twig,您可以使用一些帮助函数来处理 lower , upper capitalize .

    VS

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