翻译和固定数量的字母单词

Translation and fixed number of letters words

在我的软件的一部分中,我需要不同语言的具有固定字母数的单词列表。

我的软件已经国际化(使用 gettext,并且运行良好)。但是,由于无法将 4 个字母的英语单词翻译成另一种语言的 4 个字母单词(除了一些例外情况),我无法想象让 gettext 处理这些单词列表的合理方式.

所以,现在,我决定像这样存储我的话(英文和法文名称的缩写示例):

FOUR_LETTERS_WORDS = { 'fr': ["ANGE", "ANIS", "ASIE", "AUBE", "AVEN", "AZUR"],
                       'en': ["LEFT", "LAMP", "ATOM", "GIRL", "PLUM", "NAVY", "GIFT", "DARK"] }

(这是python语法,但问题与使用的编程语言关系不大)

列表的长度不需要相同;他们不需要包含相同的词。

我的问题如下:如果我的软件要翻译成另一种语言,比如德语,那么所有属于 gettext 范围内的字符串都将列在 pot 文件中并将可供翻译。但是,我还需要一个包含 4 个字母的德语单词列表,它不会出现在翻译文件中。

我想知道我是否需要考虑问一下译者he/she是否也可以提供这样的单词列表,或者是否有更好的方法来处理这种情况? (也许可以通过 gettext 找到令人满意的解决方法?)。

编辑意识到这个问题实际上与编程语言没有太大关系,所以删除了 python* 标签

您可以使用 gettext 来完成。可以使用 "keys" 而不是完整的句子进行翻译。

如果您在 .po 文件中使用句子并且不想翻译主要语言(比如英语),则不需要翻译它们,只提供这些的翻译文件字。如果 gettext 找到一个翻译文件,它会使用它,否则它会显示密钥(msgid)。可以是一个完整的句子,也可以是一个key,没关系。

为此,您只需为这些词使用特定的文本域并使用 dgettext() 函数。该域允许您根据上下文或您选择的任何标准(功能、子包等)分隔文件。

要统计这些字,可没那么容易。例如,您可以使用 grep -c 来计算它们。您可以提供一个特定的密钥,其中包含 4 个字母单词的数量(这将是一个肮脏的 hack,您可能不会真正依赖它)。
也许 Python 中还有另一种方式,我不懂这种语言...