I18n:语言环境名称或语言代码?

nal*_*zok 5 python django localization internationalization django-i18n

根据Django文档

区域名称

语言环境名称,可以是表格的语言规范,也可以是表格ll的语言和国家/地区组合名称ll_CC。例如:itde_ATespt_BR。语言部分总是小写,国家部分总是大写。分隔符是一个下划线。

语言代码

代表一种语言的名称。浏览器使用此格式在“接受语言” HTTP标头中发送其接受的语言名称。例如:itde-atespt-br。语言代码通常以小写形式表示,但是HTTP Accept-Language标头不区分大小写。分隔符是破折号。

问题:

  1. 当我看到ites在某人的代码中时,如何辨别它是语言环境名称还是语言代码?
  2. 我们什么时候应该使用语言环境代码,什么时候使用语言代码?

小智 1

区域设置代码可以通过setlocale(3)调用来理解,并配置几种众所周知的格式的本地化,例如日期、时间和货币以及错误消息的语言。可用的区域设置取决于平台和系统。

语言代码建立在区域设置之上,但用于网络通信。在实践中,您应该处理请求和响应层的语言代码以及应用程序内的区域设置代码,但区别并不严格,因为它们解决相同的问题:本地化和国际化。

举个例子:Django根据Accept-Language header设置语言,它使用语言代码格式,然后为应用程序设置相应的区域设置,从而选择与语言代码对应的区域设置代码。

因此可以肯定地说“语言代码是区域设置代码的序列化格式”

nl_NL.ISO-8859-15被序列化为Accept-language: nl-NL+ Accept-Charset: iso-8859-15。重要的是在正确的情况下使用正确的形式,但无论起源如何,其含义es始终是。Spanish