为了支持软件国际化,许多编程语言和平台支持获取在向用户显示的UI中使用的本地化资源的方法(例如Java的java.util.ResourceBundle
类)。通常,如果用户首选语言环境的资源不可用,则会有一个回退机制或区域设置解析过程,它将尝试从可用资源集中查找最近匹配的资源。例如,如果en-US
的资源不可用,则系统通常会尝试查找en
的资源。
对于许多语言和平台的资源包解决方案,区域设置解析过程似乎几乎相同。他们是否遵循一些标准的区域设置解析算法,或者,如果没有,是否存在这样的标准?
答案 0 :(得分:2)
显然有RFC 4647,匹配语言标签,它描述了用于指定用户首选语言列表的“语言范围”的语法,以及“过滤”和“查找”机制。将语言范围与RFC 4646语言标记进行比较和匹配。 RFC 4647将这些机制描述为:
过滤产生一组(可能为空)语言标签,而查找产生单一语言标签。
答案 1 :(得分:1)
我本身并不知道标准。
然而,正在使用的算法是区域设置是分层的这一事实的微不足道的结果。有一个(名义上的)根区域设置没有名称。在这下面是仅限语言的语言环境(en,fr等)。其下是国家语言环境(en_GB,en_US等)。在这些之下,可选地,变体区域设置(en_GB_Yorkshire,en_GB_cockney等 - 对于现实示例,请查看挪威)。
找到合适资源的自然方法是从最低,最具体的区域设置开始,然后沿树向上走,直到找到一些东西。所以,从en_US_TX开始,你升级到en_US,然后是en,然后是根。
答案 2 :(得分:1)
CLDR - Unicode Common Locale Data Repository基于language distance提出了(截至2015年)算法。如果没有距离数据,这不是解决方案,但值得关注未来的解决方案。