我们正在创建一个新的模板,并拥有一些在任何地方尚未定义的新文本。

如果要在我们添加一些之前定义它们

"Mage_TheModule::Foo";"Fuh"

translate.csv 在主题中。

处理新翻译的好方法是什么?

他们应该只是将它们添加到 translate.csv 显然没有模块代码?

还是仅为翻译创建自己的模块更好 /需要?

有帮助吗?

解决方案

最佳实践取决于主题的预期用途:这是将要分发和重复使用的主题,还是它是特定项目主题?

1.分布式主题,旨在重复使用

避免使用 translate.csv 在这种情况下,完全是。最终用户添加自己的 translate.csv 以他的孩子为主题,这将覆盖您的主题(通常,他们的后备机制适用)。他们需要复制原始文件中的所有内容,并跟踪更改。

而是使用主题模块。大多数主题都带有一个或多个模块,这些模块主要包含特定于主题的块,也包含新的翻译。然后使用 Mage::helper('yourtheme')->__('your string') 用于翻译和:

  1. 您免受与第三方模块的冲突
  2. 用户可以覆盖此特定翻译 Your_Theme::your string他们的 translate.csv

2.项目特定主题

对于项目特定主题的翻译, translate.csv 被发明了,所以我会使用它。

您应该知道,模块范围未直接连接到相应CSV文件中的现有翻译。因此,您可以在不添加新模块或修改模块CSV文件的情况下使用现有的翻译范围。

例如,如果我添加自定义翻译,那就是 在产品页面上使用Mage_Catalog 块,翻译看起来像这样:

"Mage_Catalog::New translation","New translation"

有关如何在此处查找特定翻译范围的更多信息: 翻译和权威的hierachy

(或者您可以使用我的 TranslationHints 扩大)

其他提示

我首选的方法 - 尤其是如果您需要特定模块的翻译或要分发模块 - 是创建模块特定的CSV文件(在模块的config.xml中定义)并将其放入 app/locale各自的翻译目录。您的“主题”将找出由于语言语言设置而用于使用哪个。

如果特定于主题, 在translate.csv中使用模块代码。我 个人不会 像translate.csv 根本 - 但我更喜欢内联翻译 - 和.

Translate.csv应该适用于您的产品的最终用户,这些产品必须对您的主题进行调整(例如购物袋与购物车)。

编辑:两年后,要纠正我曾经坚持的古老信念。

如果它们是特定于主题的,则应将它们添加到 translate.csv.
如果您的网站仅使用英语,您甚至可以忽略翻译。
如果您的网站使用其他语言,并且文本的含义取决于一个或多个模块,则应在该特定模块的翻译文件中添加这些文本。 (但不要修改英语文件)。
我通常采用第二种方法,因为在网站的下一个“面抬起”上,我不必复制 translate.csv 主题文件。
您还可以创建一个只能处理文本翻译的单独扩展程序,但是如果您这样做,则必须调用每个文本: Mage::helper('myhelper')->__('Some text'). 。这是可以用于内部使用的,但是如果要重复使用模板,则必须将扩展名从一个项目迁移到另一个项目。

您的问题同时是修辞和模糊的。

我的方法完全像您在问题中所描述的那样。如果翻译不是模块特定的 "text":"text" 进入 translate.csv 你的主题。它将排除模块依赖项,还将使您的主题与翻译重新分布。

许可以下: CC-BY-SA归因
scroll top