使用es xl(拉丁美洲西班牙语)进行django本地化



iOS 8有两种西班牙语语言可供选择。西班牙和西班牙(墨西哥)。

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

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

我尝试在我的区域设置目录中添加es_XL和ex_MX翻译文件,但没有成功。

如有任何帮助,我们将不胜感激。

所以问题最终是django和python都不支持语言代码es-xl。iOS在将系统语言设置为Español(墨西哥)时发送的语言代码。因此,我的解决方案是创建中间件,当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       

另一个对我来说非常有效的解决方案是添加缺失的语言代码es_XL,假设它是在您的设备设置为语言时调用的:Español(墨西哥)。

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

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

然后,在中分配区域

$_territoryData = array(
  'XL' => 'es_XL', ...

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

问题消失了!

最新更新