让django本地化与es-xl一起工作(拉丁美洲西班牙语)

时间:2015-02-24 04:55:28

标签: django

iOS 8有西班牙语的两种语言选择。 Español和Español(墨西哥)。

如果我切换到Español,并且浏览器发送HTTP_ACCEPT_LANGUAGE: es-es一切正常。

将iPad切换为Español(墨西哥)时,本地化默认为英语。查看标题时,我可以看到HTTP_ACCEPT_LANGUAGE: es-xl

我尝试在我的语言环境目录中添加es_XL和ex_MX转换文件,但没有运气。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

所以问题最终是django或python都不支持语言代码es-xl。将系统语言设置为Español(墨西哥)时iOS发送的语言代码。所以我的解决方案是创建中间件,当es-xl存在时,我激活es-mx作为当前语言。

class LanguageCodeVerification(object):                            
    def process_request(self, request):                            
      #iOS sends unsupported language code es-xl                   
      if request.META.get('HTTP_ACCEPT_LANGUAGE','')[0:5] == 'es-xl':
          user_language = 'es-mx'                                     
          translation.activate(user_language)                      
          request.session['django_language'] = user_language       

答案 1 :(得分:0)

另一个适合我的解决方案是添加缺少的语言代码es_XL,假设在您的设备设置为语言时调用它:Español(墨西哥)。

/Zend/Locale.php 文件中添加区域设置日期:

$_localeData = array(
 'es_XL' => true, ...

然后,在:

中分配区域
$_territoryData = array(
  'XL' => 'es_XL', ...

最后,在 / Zend / Locale / Data / 中,您需要复制文件es_MX.xml并将其重命名为es_XL.xml

问题消失了!