在Django中何时使用区域设置名称和何时使用语言代码?

8
根据Django文档

语言环境名称

语言环境名称,可以是形如ll的语言规范,也可以是形如ll_CC的组合语言和国家规范。例如:itde_ATespt_BR。语言部分始终为小写,国家部分为大写。分隔符为下划线。

语言代码

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

问题:

  1. 当我在别人的代码中看到 it 或者 es,我怎么知道它是区域名称还是语言代码?
  2. 什么时候应该使用区域代码,什么时候应该使用语言代码?
1个回答

1
Locale代码可以被setlocale(3)调用所理解,它配置了几种众所周知的格式的本地化,例如日期、时间和货币,以及错误消息的语言。可用的区域设置因平台和系统而异。
语言代码建立在Locale之上,但在网络通信中使用。实际上,您应该在请求和响应层处理语言代码,在应用程序中处理Locale代码,但是这两者的区别并不严格,因为它们解决了相同的问题:本地化和国际化。
Django根据Accept-Language标头设置语言,该标头使用语言代码格式,然后相应地设置应用程序的Locale,从而选择与语言代码对应的Locale代码。
因此,可以说“语言代码是Locale代码的序列化格式”nl_NL.ISO-8859-15序列化为Accept-language: nl-NL+Accept-Charset: iso-8859-15。重要的是在正确的情况下使用正确的形式,但是es的含义始终是西班牙语,无论其来源如何。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接