Articles of gettext

gettext的效率:内存中的翻译

我有一个embedded式系统与Flash和一个非常低端的CPU和较less的RAM。 我想知道使用.MO文件gettext语言翻译的效率。 为了进行语言环境语言string获取,每次gettext从flash读取MO文件时,首先将完整的MO二进制文件加载到RAM中,并从那里执行语言环境string提取? 如果MO文件(由于有很多string会很大〜1Mb)总是加载到RAM中,所以会消耗掉我的RAM。

是否有一个gettext实用程序,允许我通过提供一个msgid和一个新的msgstring作为参数从命令行更改PO文件?

是否有一个gettext实用程序,允许我通过提供一个msgid和一个新的msgstring作为参数从命令行更改PO文件?

没有gettext的Linux Glib安装?

是否可以安装Glib(在我的情况下2.33.3)没有gettext? 我通过谷歌search,但我只是发现一些人认为这应该是可能的。 但没有人描述它。 目的:我需要安装udev。 这需要glib。 有人能帮我吗? 注意:我在目标板上使用定制的2.6.36内核

为什么区域设置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 […]

如何告诉bash从自定义位置获取gettext .mo文件?

我为一个非常具体的项目创build了一个bash脚本,这些string必须是可翻译的。 我已经成功地遵循以下教程:对bash脚本的gettext支持: http://mywiki.wooledge.org/BashFAQ/098 但是,教程的一部分要求运行msgfmt命令为每种语言生成编译的.mo文件。 为了使它工作,我必须以root身份运行命令,.mo文件保存在/ usr / share / locale /(lang)/ LC_MESSAGES下。 我想将.mo文件保存在相对于bash脚本的子目录中,这很容易。 但是,当脚本运行时,bash必须知道必须在适当的自定义位置中查找.mo文件。 如何做到这一点? 我所要做的就是让整个项目与.pot和.mo文件一起,自成一体,并能够更新翻译而不必使用sudo。

i18n / gettext:web应用程序中的setlocaleconfiguration

所以我开始弄乱gettext但是我仍然对某些事情感到困惑,如果有人能够帮助我并为我填补空白,那将是非常棒的。 通常大部分的实现只是基于一个语言参数调用setlocale 。 有什么情况下我需要使用putenv ,也许是在Windows设置的边缘情况? 我的php框架的默认语言是英文,UTF-8 – 所以我把LC_ALL设置为en_US.utf-8 ,因为en_US是ISO-8859-1 / Latin1,显然这不像UTF-8那样支持? 在调用setlocale(LC_ALL, 'en_US.utf-8')之后,我应该知道哪些陷阱? 由于它改变了所有这些: LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME, and LC_MESSAGES – 我将不得不更新任何脚本,例如,生成时间或类似的东西? 比方说,新configuration的服务器没有configurationes_ES.utf-8语言环境,我知道如何生成语言环境,但是如果不能使用,我应该在数组中提供备份吗? 如果有人能提供一个实际的例子,那将是非常好的,例如: setlocale( LC_ALL, array('es_ES.UTF-8', 'es_ES', 'es') ) 有什么样的网站提供这样的例子,或者人们通常会自己排列优先顺序吗? 我在某个地方看到, locale或i18n文件夹的常见结构如下所示。 这个结构真的很重要吗? 似乎所有这一切发生的时候,你bindtextdomain('messages', 'locale')recursionsearch该目录messages.mo ,我可能不会注意,但它可能会考虑目录。 我应该对结构有多严格? locale en_US LC_MESSAGES messages.po es_ES LC_MESSAGES messages.po 6.我是否应该试图testing系统是否真的支持locale? 因为例如,如果一个服务器没有语言环境,我试图用setlocale设置它,它不会错误或任何东西,它只会默默地让它通过。

msginit电子邮件地址命令行参数?

msginit提示input电子邮件地址。 有没有办法告诉msginit什么电子邮件地址使用,而不会提示如命令行参数? 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++ -ohellogt hellogt.cxx xgettext -d hellogt -o hellogt.pot hellogt.cxx msginit -l es_MX -o spanish.po -i hellogt.pot

用于设置MIMEtypes的xgettext,msginit,msgfmt序列的命令或选项?

波兰语文本msgfmt“无效多字节序列”错误通过手动编辑模板文件中的MIME Con​​tent-Type字符集来更正。 有没有一些命令或选项设置MIMEtypes的xgettext,msginit,msgfmt序列? cat >plt.cxx <<EOF // plt.cxx #include <libintl.h> #include <locale.h> #include <iostream> int main (){ setlocale(LC_ALL, ""); bindtextdomain("plt", "."); textdomain( "plt"); std::cout << gettext("Invalid input. Enter a string at least 20 characters long.") << std::endl; } EOF g++ -o plt plt.cxx xgettext –package-name plt –package-version 1.2 –default-domain plt –output plt.pot plt.cxx sed –in-place […]

波兰文本msgfmt“无效多字节序列”错误

使用完整的C ++ i18n gettext()“hello world”示例我将语言环境从“ es_MX ”更改为“ pl_PL ”,并将文本从“hello,world!”更改为 到“input无效,input至less20个字符的string”。 波兰语翻译包含几个字符,导致msgfmt“łąźó”中的“无效多字节序列”错误。 翻译的文本是从网页上复制的。 我认为utf8是问题。 如果是这样,应该用什么来代替? cat >plt.cxx <<EOF // plt.cxx #include <libintl.h> #include <locale.h> #include <iostream> int main (){ setlocale(LC_ALL, ""); bindtextdomain("plt", "."); textdomain( "plt"); std::cout << gettext("Invalid input. Enter a string at least 20 characters long.") << std::endl; } EOF g++ -o plt plt.cxx xgettext […]

如何使用grep(或其他LSB工具)计算.po中的空翻译?

我可以使用像这样的命令在vim中执行空翻译的search: /""\n\n 但我的任务是find一些非翻译的string。 任何想法如何使用每个Linux应该有的标准工具(请不要单独的软件包)做到这一点。 下面是包含2个翻译string和2个非翻译string(长和短变体)的.po文件的示例。 msgid "translated string" msgstr "some translation" msgid "non-translated string" msgstr "" msgid "" "Some long translated string which starts from new line " "and can last for few lines" msgstr "" "Translation of some long string which starts from new line " "and lasts for few lines" msgid "" "Some […]