微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么区域设置es_MX工作但不是es?

GNU gettext的维基百科条目显示一个例子,其中语言环境只是语言“fr”。 i18n gettext()“hello world”示例具有语言和国家/地区的语言环境值“ es_MX ”。 我已经修改了“ es_MX ”的例子来使用es_MX ,但是它会产生英文文本而不是预期的西class牙文。

cat >hellogt.cxx <<EOF // hellogt.cxx #include <libintl.h> #include <locale.h> #include <iostream> int main (){ setlocale(LC_ALL,""); bindtextdomain("hellogt","."); textdomain( "hellogt"); std::cout << gettext("hello,world!") << std::endl; } EOF g++ -o hellogt hellogt.cxx xgettext --package-name hellogt --package-version 1.2 --default-domain hellogt --output hellogt.pot hellogt.cxx msginit --no-translator --locale es --output-file hellogt_spanish.po --input hellogt.pot sed --in-place hellogt_spanish.po --expression='/"hello,world!"/,/#: / s/""/"hola mundo"/' mkdir --parents ./es.utf8/LC_MESSAGES msgfmt --check --verbose --output-file ./es.utf8/LC_MESSAGES/hellogt.mo hellogt_spanish.po LANG=es.utf8 ./hellogt

根据使用环境variables控制您的语言环境 :

环境variablesLANGUAGE,仅由GNU gettext使用…如果定义,则LANGUAGE优先于LC_ALL,LC_MESSAGES和LANG。

LANGUAGE=es.utf8 ./hellogt

产生预期的西class牙文本而不是英文。

标准函数翻译iso-639代码的语言名称

我可以发送string到IME(Windows)来获得翻译吗?

什么是Windows代码页?

gettext的效率:内存中的翻译

如何获得完整的Unicode支持包括VCL控件中的中文字符或XP中的Windows公共控件,就像它在Win7中一样

但这并不能解释为什么“LANG = ES”不起作用。

replace为gettext

为什么当主目录有特殊字符时,os.path.expanduser会出错?

连字符和撇号字符 – 不同语言的相同ASCII码?

如何在HTML for Windows中呈现狭窄的不间断空格?

剪贴板数据集CF_TEXT无法正确检索为CF_UNICODETEXT

嗯…这听起来像一个平台问题。 我在Mac OSX下做了完全相同的事情,并得到了预期的结果。 我怀疑你的linux版本不喜欢LANG=es.utf8 。 如果后者甚至受支持,请检查您的本地系统文档setlocale(3)如setlocale(3)或xlocale(3) 。

IIRC,仅包含作为iso-639语言代码的主要标识符的区域标识符具有附加到主要讲话国家的ISO-3166国家代码。 然后,通过在/usr/share/locale查找得到的语言环境查找。 我查看了我的MacBook上的语言环境目录,并且有一个名为es的目录以及es_ES 。 这可能是一个简单的系统配置问题。

如果您正在开发商业应用程序,我强烈推荐使用ICU,而不是使用gettext和标准库提供的语言环境。 Gettext将用于简单的消息查找,但它不能提供您真正需要的完全国际化的应用程序。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐