`gettext的翻译的Linux
29 gennaio 2008, 15:54 地点 , 壳牌 , 提示和技巧 1月29日,2008,15:54函数`gettext的设计,让整个操作系统的GNU / Linux的翻译。 正是因为这个原因它是100%,大量的编程语言和脚本语言兼容,ç+ +,ç#,Python的猛砸,GNU的clsip,Emacs Lisp中的GNU Smalltalk中,Java的,GNU awk的,帕斯卡尔,wxWidgets的,多糖YCP ,TCL,PHP,派克,和其他。
首先,让我们来看看如何使用`gettext的源代码内。 实施细则各不相同,取决于你的项目所使用的编程语言,但语法几乎是相同的,至少流行的编程语言:功能只包含消息的字符串被翻译。 应当指出的是,几乎总是使用的缩写形式,它只是对应一个下划线。 这样,下面的代码在C:
printf(gettext("My name is %s\n"), mio_nome);
变为:
printf(_("My name is %s\n"), mio_nome);
后来,命令xgettext的过滤代码,找到刚刚插入功能的gettext,创建模板文件。锅基础上从源提取的字符串。 例如一个文件代码,包含上述行锅。如下:
#: include/myname.php:36
msgid "My name is %s\n"
msgstr ""
要开始翻译是在程序中使用“msginit。 移动文件。小`:`msginit是可以生成一个新的文件,其中包含新的。位在目标语言中的骨架。 例如,以翻译进入意大利en_EN.po文件,只要运行以下命令:
LOCALE = En_US的msginit-输入= en_EN.po
该计划将创造的的文件it_IT.po,其内容将类似于以下:
#: include/myname.php:36
msgid "My name is %s\n"
msgstr "My name is %s\n"
在这一点上,翻译没有做翻译msgstr字符串。 翻译可以做任何编辑器直接在命令行,或使用类似的具体方案poEdit的 。 结果会看起来如下:
#: include/myname.php:36
msgid "My name is %s\n"
msgstr "Mi chiamo %s\n"
宝当翻译文件必须编译成二进制文件,莫通过`msgfmt`。
msgfmt it_IT.po















2008年10月10日15时48分
你好,我为KDE3前段时间servicemenus时间。
现在,我带他们到KDE4,我想添加的野蛮语言支持
在实践中,菜单调用一个bash脚本,最初我已进入所有已经串“在同一个脚本翻译:
例如
-----------------
en_msg_savefile =“保存文件...”
it_msg_savefile =“保存文件...”
等等......
msg_SaveFile EVAL = \ $ $(回声$ {郎} _msg_SaveFile“)
然后回声“$ {} msg_SaveFile的”
----------------
现在我不知道,你认为“你可以很容易地采用上面介绍的过程中,您在bash找到scriptino?
谢谢
2008年10月10日,21:25
我发现我一直在寻找,谢谢。
我想问你一件事,有一些词在英语scivono在一定的方式,但不是在意大利或其他语言。
例如:完成
我写在意大利的成品或成品,根据操作之前进行。
例如,如果我旋转图像将是“一个窗口,说:”图像旋转casa.jpg“,”完成“
总是用英文写“完成”!
你知道我能做些什么来解决这件事呢?
谢谢你在前进。
许多人开始使用KDE4和我已经写了几封电子邮件,希望脚本港。 到目前为止,除了有8种语言,但可以增加更多'出来。
问候高飞
10月13日上午10时05分,2008
您好约瑟夫
借口拖延,他们都非常忙。 首先回答你的第二个问题:如果选择要使用的gettext的基础语言和所有的字的各种翻译必然独特的地方的翻译语言是更比出发阐述时,之间的对应关系,是要双射,在可能的情况下。 如果您有关的biunivocità的说是不可能的,所以你只需要翻译的短语,而不是单个词块。 或,作为每一个良好的翻译,你就需要一些小的狡猾。 在您的情况下,我会与“做”而不是“完成/”转换“完成”。 但我相信你有更复杂的例子,在这个简单的解决方案是不够的,girameli在这里,我们一起讨论他们。
关于你的第一个问题,也知道你已经找到了解决办法单独的,我告诉你,使用gettext是最简单和快速,并保存到调用eval和其他的“招数”
在这个地址找到了非常显着的实际例子:
http://tldp.org/LDP/abs/html/localization.html~~V
但是...我相信你已经看到了它,那么我请你在这里发布你如何实现它为所有的利益简短的例子
再见! 伊万
10月13日,2008 10:24
你好,伊万,感谢答复。
给我时间给一个好名字的变量,并修正了一些其他的小东西,然后发表一些“复杂”。
反正当我运行的kde-look.org市民,我这里与KDE3: http://www.kde-look.org/content/show.php/konq-pdf?content=37321
不久
在23:55 2008年10月13日
花样时,你提到的保持完整所有dettaggli语言翻译,只是使用昏迷关键哈希键由你创造,而不是翻译本身。 例如:
在“源文件”的gettext(msg_saveFile_title)
然后我们创建的文件en.po,等it.po
在这样的消息和独特的多“让我用男性,女性或中性,和其他功能。
你觉得呢?
你好
10月15日,2008 12:31
为脚本,您发布的kde-look.org,让我知道,当你这样做,我很好奇。 第二个消息(使用gettext的哈希键),我敢肯定,这将是几乎不可能实现的语言是非常不同的另一种形态和句法的角度,唯一的解决办法是产生所有必要的短语在源语言和产生相应的短语在翻译的语言。 这是一个无尽的裁员源,但相信我,有没有替代的解决方案,使用简单,但作为gettext的非常有效的。 但他总是能说话,也许是我,我没有赶上在您的文章的最大意义。
再见
伊万
10月15日,2008 15:40
谈到一个小开发商渠道知道将i18nc国际contextualised。 在实践中,它允许你指定基于上下文的消息。 因为'我被告知,这将是更好,每个软件都有洙en_gb sorgento英语的消息,然后通过lacoalizzazione,其他语言,我有没有深度。 所以,在这个光,我可以不使用上面提到的技术。
在任何情况下,我也说,你不应该使用gettext直接,所以我可以用它来砸。
这个介绍后,我决定做这些事与技术“评估”,和“如何在bash中使用指针
我刚刚做完今天servicemenus和有海的功能与PDF工作。 我已经添加了一些比以前的版本。 我仍然想念的翻译,所以我们应该“等待我riconsegnino由翻译翻译句子的各种来源,我认为它会”的时间(大约有8种语言)位。
我承诺,作为一个复杂的多一点,然后采取“我写的servicemenus之一,将切断所有功能,除了一个和评论进一步”简易程序只与国际化的一部分。
主题:
一个servicemenu从PDF文档中提取图像。 (这被称为pdfimages和E'与poppler-utils所载的程序)。
它将成为'的文件。桌面放置在〜/ .kde/share/kde4/services/ServiceMenus或相当于系统(所有用户)。
barbatrucco:我注意到,您还可以创建一个子文件夹,让你有更多的'。
文件我们称之为pdfimages.desktop(任意名称)和包含:
当你点击一个条目,运行KDE,有小号在EXEC行[郎,郎和“KDE本身的语言。
正如你看到的,被称为命名1 scriptino sm_pdfimages.sh传递某些参数:语言,动作,文件上的工作。
让scriptino,其中将包含:
现在让我们看看会发生什么,当你调用脚本中的问题:
首先,我必须说,我使用内容变量行动,直接作为函数调用
这样,如果储蓄房屋等... 

当运行一个函数(例如,所有),bash的变量值替换。 analizziamone只有一个:“$ {} msg_imagesRootName_title的”
这个变量包含了一个对话框,标题,指定的语言,但不是
正确的句子,首先吸引我的一个小游戏获得,振奋自己! 指针小学(很基本)
第一件事首先,先定义的变量在任何语言,我感兴趣的消息,我调用的变量本身包含所使用的语言的字符串名称。
因此,标题为:
正如你可以看到不同的名称仅仅是个开始。
然后定义一个变量,其名称和相同以上,但没有在这样的“lang”中描述的:
msg_imagesRootName_title EVAL = \ $ $(回声$ {郎} _msg_imagesRootName_title“)如果我们假设,在使用的语言是这个过程中,壳在$ it_msg_imagesRootName_title和游戏“做值,告诉msg_imagesRootName_title采取的。
在实践中,变量将包含msg_imagesRootName_title“正确的信息,根据所使用的语言。
成品。
几个备选方案进行评估后,所以这似乎是最国际化的脚本,方便。 当然,如果有人有另一种想法,会受到欢迎。
fiuu ...... 更容易实现比解释。
如上所述,它会在发布之前还需要一段时间,即使我现在能做到这一点,将稍后添加翻译。
PS如果你想放的代码,以使更“可读标签,勇往直前。
好日子的所有
约瑟夫
10月15日,2008 16:13
砂锅菜,这不是一个简单的评论,但后与controfiocchi! 致意
我承认我还没有时间来测试你的代码,但逻辑是存在的,并解释是明确的。
你是首次获得进入我的网志串连! 
伊万
10月15日,2008年在21时42分
你好,伊万,感谢Blogroll中。
。 
评论似乎长的,因为代码
我还没有明白为什么'你不应该使用gettext直接,它似乎非常简单,易于升级。
在任何情况下,这些服务菜单是一件事没有完成,难以控制的命令流。
现在,我把脚本中的一切,我有时间,包括“有更多的机会检查。 如果你对我所做的菜单来看,流动是连续的,因为每个文件内的命令。桌面“我无法利用的优势,如果或变量。 其实我记得做翻跟头,为了不诉诸外部文件
我希望,例如刺激公布了创建上下文菜单位。 毕竟,我们自己,我们将提高我们的KDE4,或者至少是我跟我和有我精。
如果我能,我尝试把这项工作kde.org PDF,所以任何人都可以轻松工作,无需安装任何。
所有的:
欢迎新功能提示和建议。
我不是一个程序员,你甚至没有参加。 尽管世界各地的许多人都感谢我的东西,我什至认为是可能的。
我想KDE4或任何其他与他们每个人都做好。 (总是在开放式系统)。
约瑟夫
2008年11月24日1:03
虽然有一些延误,我在昨天公布的servicemenu我曾参与过。
我放在广告上的kde-look.org, http://www.egregorion.net
有无畏的tar.gz的deb。
有乐趣
约瑟夫