首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用不带国家/地区代码的gettext (“es”而不是“es_ES”)

尝试使用不带国家/地区代码的gettext (“es”而不是“es_ES”)
EN

Stack Overflow用户
提问于 2013-10-17 20:40:46
回答 1查看 948关注 0票数 4

我在我的php项目中有下面的文件:

代码语言:javascript
复制
libraries/locale/es_ES/LC_MESSAGES/messages.po
libraries/locale/es_ES/LC_MESSAGES/messages.mo
libraries/locale/es/LC_MESSAGES/messages.po
libraries/locale/es/LC_MESSAGES/messages.mo

这两个文件都是用PoEdit编辑的相同文件,只是目录->属性->语言(分别是es和es_ES )不同

并将此代码放入localization.php文件中

代码语言:javascript
复制
$language = "es_ES.UTF-8";
putenv("LANG=$language");
setlocale(LC_ALL, $language);
bindtextdomain(STRING_DOMAIN, LOCALE_PATH);
textdomain(STRING_DOMAIN);

echo "Test translation: "._('string to translate');

这段代码运行良好,“要翻译的字符串”显示正确。但是,如果我尝试使用通用的“es”代码:

代码语言:javascript
复制
$language = "es.UTF-8";

...String不会翻译。似乎与我的ubuntu中安装的语言环境有关(es_ES.utf8存在,但不存在es.utf8)

我可以强制gettext使用es.UTF-8文件吗?

EN

回答 1

Stack Overflow用户

发布于 2013-10-20 10:28:35

作为一种解决办法,您可以始终使用localedef在现有语言环境的基础上编译新的语言环境。创建基于es_ES.UTF-8es

代码语言:javascript
复制
 localedef -i es_ES -f UTF-8 es.UTF8

但是这里有一些重要的问题,这些问题涵盖了简单加载翻译文件之外的领域。由于您的特定于区域设置的信息(如日期和时间格式、度量等)取决于已安装的区域设置,因此最好制定一个关于区域设置使用的计划。假设您使用的是西班牙语(西班牙)的es_ES,什么是es?它是专为一种特定的西班牙语口味准备的,比如es_IC (加那利群岛),还是某种拉丁美洲风味?

下面是一个清晰的示例;如果我想设计一个定制的区域设置库来涵盖各种风格的西班牙语,我会这样做;首先,我添加那些可以用locale-gen轻松安装的区域设置

代码语言:javascript
复制
  locale-gen es_ES.UTF-8 es_MX.UTF-8 es_AR.UTF-8

然后我想要基于es_MXes_US和基于es_ARes_419 (419是拉丁美洲的地理区号

代码语言:javascript
复制
  localedef -i es_MX -f UTF-8 es_US.UTF-8
  localedef -i es_AR -f UTF-8 es_419.UTF-8
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19427030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档