Localization gettext如何处理a/an或d'/判定元件?

Localization gettext如何处理a/an或d'/判定元件?,localization,internationalization,gettext,Localization,Internationalization,Gettext,想象这个字符串用于翻译: “您的路径被%s阻止” 如果变量为“anaconda”,该怎么办。现在应该是“您的路径被%s阻塞” gettext如何处理这个问题,或者客户端程序员应该如何处理这个问题,或者其他系统如何处理这个问题 想象一下这个字符串: “%s的页面” 我们想输入“布莱恩”、“吉姆”或“露辛达”。一切都很好 但在法文译本中,这是: “第%s页” 对Jean-Paul或Claudette来说这很好,但可怜的Anais呢?她需要的是“第二页”,而不是“第二页” gettext能解决这个问题

想象这个字符串用于翻译:

“您的路径被%s阻止”

如果变量为“anaconda”,该怎么办。现在应该是“您的路径被%s阻塞”

gettext如何处理这个问题,或者客户端程序员应该如何处理这个问题,或者其他系统如何处理这个问题

想象一下这个字符串:

“%s的页面”

我们想输入“布莱恩”、“吉姆”或“露辛达”。一切都很好

但在法文译本中,这是:

“第%s页”

对Jean-Paul或Claudette来说这很好,但可怜的Anais呢?她需要的是“第二页”,而不是“第二页”


gettext能解决这个问题吗?标准做法是什么?

正如您所料,gettext不能帮助您构建语法正确的字符串。即使在英语中没有问题,以编程方式构造显示文本也是一个很大的本地化问题,因为可能会出现特定于语言的问题。如果它是可管理的,您可能应该为每种情况设置单独的字符串,例如“您的路径被恐龙阻挡”、“您的路径被兔子阻挡”、“您的路径被蟒蛇阻挡”等。这意味着大量的重复,但是翻译系统通过使用翻译记忆帮助自动化翻译过程,甚至在更复杂的情况下,自动翻译(译者只需要校对和修改,如果需要的话)

你的“安娜页”/“克劳德特页”就是一个很好的例子。在这种情况下,唯一的解决方案是将格式字符串存储在可本地化字符串表中(听起来您已经在这样做了),以便本地化人员可以提出可行的解决方案。(例如“Page de:Anais”虽然不是在所有情况下都非常有效,但它们将“%s的页面”本地化为“Page de:%s”)。但是本地化程序确实需要了解这种格式字符串的去向和构造方式,所以您需要弄清楚这一点


最广泛误译的字符串之一是“%n of%n”(用于打印页面,如第“1页/4页”),没有上下文,该字符串通常被翻译成完全错误的字符串。例如,在法语中,直译是“1 de 4”,在本上下文中没有意义,它应该是“1 sur 4”。

您是否尝试过这些案例?%s的页面”。也不会总是用英语。如果名称以硬s结尾,则通常只需添加撇号。e、 我认为公平地说,gettext不处理这个问题。