在我的软件的一部分中,我需要用不同的语言列出具有固定字母数量的单词。
我的软件已经国际化(使用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
范围内的所有字符串都会列在底池文件中并且可用翻译。但是,我还需要一个4个德语单词的列表,这些单词不会出现在翻译文件中。
我想知道我是否需要考虑询问翻译他/她是否也可以提供这样的单词列表,或者是否有更好的方法来处理这种情况? (也许找到一个令人满意的解决方法gettext
?)。
答案 0 :(得分:1)
你可以用gettext来做。可以使用“键”代替完整的句子进行翻译。
如果您在.po
文件中使用句子并且不想翻译主要语言(例如英语),则不需要翻译它们,只需为这些单词提供翻译文件。如果gettext找到翻译文件,它会使用它,否则它会显示密钥(msgid
)。它可以是一个完整的句子或一把钥匙,没关系。
要做到这一点,您只需要为这些单词使用特定的文本域并使用dgettext()
函数。域允许您根据上下文或您选择的任何条件(functionnality,sub-package等)来分隔文件。
要计算这些词,这并不容易。例如,您可以使用grep -c
来计算它们。您可以提供一个包含4个字母单词的特定密钥(这可能是您可能不会真正依赖的脏黑客)。
也许在Python中有另一种方式,我不知道这种语言......