使用关键字vs真实短语进行翻译

时间:2012-09-04 18:58:07

标签: python django internationalization translation templating

对于拥有大量固定字符串(标签,公告等)的网站,我将为项目添加国际化,并且我想知道您在原始代码中使用关键字与真实短语的体验?哪一个更好用?

检查此示例 - 在django中:

真实的短语:

<p>
    {% trans "Welcome to my website" %}
</p>

关键字:

<p>
    {% trans "WELCOME_MESSAGE" %}
</p>

当然使用真实的短语更容易,但我有一些不好的经历。考虑一般词,{% trans "contacts" %}用作页面的标题,在{{selected_contacts_count}}{% trans "contacts" %}这样的词组中使用的其他地方,contacts的翻译作为页面的标题可能与{{{{1}的翻译不同1}}作为短语中的单词,所以这是冲突。

3 个答案:

答案 0 :(得分:2)

当然,关键字更好,不仅因为它们更容易为程序员阅读,而且还能更快地在文件中查找这些字符串,并且您不会“绑定”一种语言(例如英语)

答案 1 :(得分:2)

我认为这主要是个人品味的问题。

使用真实短语,您将遇到上述碰撞,您可以使用

作为示例

{% blocktrans %}{{selected_contacts_count}} contacts{% endblocktrans %}代替。

使用关键字,您必须为所有翻译创建一个唯一的关键字,这在项目增长时可能不那么容易,因此事先设计某种命名约定可能是个好主意。

答案 2 :(得分:1)

关键字。

某个地方,有时候,某个地方,你需要有一个翻译表。它可能是平面文件,它可能是数据库存储,但它可能看起来像这样:

field | language | message

构建和维护基于关键字的系统会更容易:

WELCOME_MESSAGE | EN | Welcome to our online h ome
WELCOME_MESSAGE | FR | bienvenue chez nous en ligne
WELCOME_MESSAGE | SW | kuwakaribisha nyumbani kwetu online

如果您正在将数据插入到这些翻译中,那么您可能遇到的一个问题是必须处理多元化:

There is one item.  
There are four items.

You have one new message.
You have four new messages.

因此,当你向前迈进时,请记住这一点。