<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Gettext</id>
	<title>Gettext - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Gettext"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Gettext&amp;action=history"/>
	<updated>2026-07-04T08:04:50Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Gettext&amp;diff=585559&amp;oldid=prev</id>
		<title>imported&gt;Cewbot：​去除重複的轉換規則: 去除與公共轉換組重複的轉換規則 (1): 存在於轉換組 IT: zh-cn:函数库;zh-tw:函式庫 (本次機械人作業已完成12692.2%)</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Gettext&amp;diff=585559&amp;oldid=prev"/>
		<updated>2024-09-29T14:03:43Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Cewbot/log/20191129/configuration&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User:Cewbot/log/20191129/configuration（页面不存在）&quot;&gt;去除重複的轉換規則&lt;/a&gt;: 去除與公共轉換組重複的轉換規則 (1): 存在於轉換組 IT: zh-cn:函数库;zh-tw:函式庫 (本次機械人作業已完成12692.2%)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Unreferenced|time=2009-09-19}}&lt;br /&gt;
{{NoteTA&lt;br /&gt;
|G1=IT&lt;br /&gt;
|G2=FL&lt;br /&gt;
|2=zh-hans:注释;zh-tw:註解;&lt;br /&gt;
}}&lt;br /&gt;
{{lowercase title}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox Software&lt;br /&gt;
| name = gettext&lt;br /&gt;
| developer = [[GNU|GNU项目]]&lt;br /&gt;
| operating system = [[跨平台]]&lt;br /&gt;
| genre = [[软件开发]]，[[翻译]]&lt;br /&gt;
| license = [[LGPL]]（函数库），[[GPL]]（工具），[[GNU自由文档许可证|GFDL]]/GPL（文档）&lt;br /&gt;
| website = {{URL|https://www.gnu.org/software/gettext/}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;gettext&amp;#039;&amp;#039;&amp;#039;是[[GNU]][[国际化与本地化]]（i18n）函数库。它常被用于编写多语言程序。&lt;br /&gt;
&lt;br /&gt;
==开发==&lt;br /&gt;
程序源代码需要进行修改以响应GNU gettext请求。多数[[编程语言]]均已通过字符封装的方式实现了对其的支持。为了减少输入量和-{zh-hans:代码;zh-tw:程式碼;}-量，此功能通常以标记[[别名]]“_”的形式使用，所以例如以下[[C语言]]-{zh-hans:代码;zh-tw:程式碼;}-：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=c&amp;gt;&lt;br /&gt;
printf(gettext(&amp;quot;My name is %s.\n&amp;quot;), my_name);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
应当写作：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=c&amp;gt;&lt;br /&gt;
printf(_(&amp;quot;My name is %s.\n&amp;quot;), my_name);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gettext使用其中的字符串寻找对应的其他语言翻译，若没有可用翻译则-{zh-hans:返回;zh-tw:傳回;}-原始内容。&lt;br /&gt;
&lt;br /&gt;
除[[C语言]]外，GNU gettext还支持[[C++]]、[[Objective-C]]、[[Pascal语言|Pascal]]/[[Object Pascal]]、[[Bourne shell|sh]]脚本、[[bash]]脚本、[[Python语言|Python]]、GNU [[CLISP]]，[[Emacs Lisp]]、ibrep、GNU [[Smalltalk]]、[[Java语言|Java]]、GNU [[AWK|awk]]、[[wxWidgets]]（-{zh-hans:通过;zh-tw:透過;}-wxLocale-{zh-hans:类;zh-tw:類別;}-）、YCP（[[YaST2]]语言）、[[Tcl]]、[[Perl]]、[[PHP]]、[[Pike语言|Pike]]、[[Ruby语言|Ruby]]以及[[R语言|R]]。用法均与在[[C语言]]上类似。&lt;br /&gt;
&lt;br /&gt;
xgettext程序从源代码生成&amp;#039;&amp;#039;&amp;#039;.pot&amp;#039;&amp;#039;&amp;#039;文件，作为源代码中需翻译内容的模板。一个典型的.pot文件条目应当是这样的：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=gettext&amp;gt;&lt;br /&gt;
#: src/name.c:36&lt;br /&gt;
msgid &amp;quot;My name is %s.\n&amp;quot;&lt;br /&gt;
msgstr &amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[註解_(程式設計)|註解]]被直接放置在字符串前，用于帮助翻译者理解原文的內容：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=c&amp;gt;&lt;br /&gt;
/// TRANSLATORS: Please leave %s as it is, because it is needed by the program.&lt;br /&gt;
/// Thank you for contributing to this project.&lt;br /&gt;
printf(_(&amp;quot;My name is %s.\n&amp;quot;), my_name);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
本例中的註解是以 &amp;#039;&amp;#039;&amp;#039;///&amp;#039;&amp;#039;&amp;#039;开头的，其作用是用于&amp;lt;code&amp;gt;xgettext&amp;lt;/code&amp;gt;程序生成&amp;lt;code&amp;gt;.pot&amp;lt;/code&amp;gt;模板文件。&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;xgettext --add-comments=///&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在.pot文件中的注释应为以下形式：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=gettext&amp;gt;&lt;br /&gt;
#. TRANSLATORS: Please leave %s as it is, because it is needed by the program.&lt;br /&gt;
#. Thank you for contributing to this project. &lt;br /&gt;
#: src/name.c:36&lt;br /&gt;
msgid &amp;quot;My name is %s.\n&amp;quot;&lt;br /&gt;
msgstr &amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==翻译==&lt;br /&gt;
翻譯者需要處理的-{對象}-是&amp;#039;&amp;#039;&amp;#039;.po&amp;#039;&amp;#039;&amp;#039;文件，它是由&amp;lt;tt&amp;gt;msginit&amp;lt;/tt&amp;gt;程序从.pot模板文件生成的。例如使用&amp;lt;tt&amp;gt;msginit&amp;lt;/tt&amp;gt;初始化法语翻译文件时，我们运行以下命令：&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=bash&amp;gt;msginit --locale=fr --input=name.pot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这将会使用指定的name.pot在当前目录创建一个fr.po，其中的一个条目应该是以下形式的：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=gettext&amp;gt;&lt;br /&gt;
#: src/name.c:36&lt;br /&gt;
msgid &amp;quot;My name is %s.\n&amp;quot;&lt;br /&gt;
msgstr &amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
翻译者需要手工或使用类似[[Poedit]]、[[gtranslator]]、[[OmegaT]]或[[Emacs]]等工具的相应模式编辑该文件。翻译完成后，文件应为如下的样子：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=gettext&amp;gt;&lt;br /&gt;
#: src/name.c:36&lt;br /&gt;
msgid &amp;quot;My name is %s.\n&amp;quot;&lt;br /&gt;
msgstr &amp;quot;Je m&amp;#039;appelle %s.\n&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
最后.po文件需要使用&amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;msgfmt&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;编译为&amp;#039;&amp;#039;&amp;#039;.mo&amp;#039;&amp;#039;&amp;#039;文件以用作发布。&lt;br /&gt;
&lt;br /&gt;
==執行==&lt;br /&gt;
使用[[Unix]]类型操作系统的用户只需设置[[环境变量]]中的&amp;lt;code&amp;gt;LC_MESSAGES(但是ubuntu linux 是用LANG)&amp;lt;/code&amp;gt;{{Citation needed|但是ubuntu linux 是用LANG}}，程序将自动从相应的&amp;lt;code&amp;gt;.mo&amp;lt;/code&amp;gt;文件中读取语言信息。&lt;br /&gt;
&lt;br /&gt;
==参考==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
==另见==&lt;br /&gt;
{{portal|Free software|Free Software Portal Logo.svg}}&lt;br /&gt;
&lt;br /&gt;
* [[国际化和本地化]]&lt;br /&gt;
* [[翻译工具]]&lt;br /&gt;
&lt;br /&gt;
==外部链接==&lt;br /&gt;
* [http://www.gnu.org/software/gettext/gettext.html Gettext主页]{{Wayback|url=http://www.gnu.org/software/gettext/gettext.html |date=20120217133749 }}&lt;br /&gt;
* [http://mel.melaxis.com/devblog/2005/08/06/localizing-php-web-sites-using-gettext/ 使用gettext本地化PHP网站] {{Wayback|url=http://mel.melaxis.com/devblog/2005/08/06/localizing-php-web-sites-using-gettext/ |date=20201201231950 }} - 解些和示例。&lt;br /&gt;
* [http://code.google.com/p/gettext-commons/ Gettext Commons - Java gettext工具集] {{Wayback|url=http://code.google.com/p/gettext-commons/ |date=20160112125037 }}&lt;br /&gt;
* [http://www.lrde.epita.fr/~adl/autotools.html Autotools教程]{{Wayback|url=http://www.lrde.epita.fr/~adl/autotools.html |date=20101227173311 }}&lt;br /&gt;
* [https://web.archive.org/web/20181001050711/http://www.gted.org/ gted - GetText EDitor和工具集成]&lt;br /&gt;
* [http://gorm.po.dk/ Gorm PO文件编辑器] {{Wayback|url=http://gorm.po.dk/ |date=20210126042222 }}&lt;br /&gt;
* [http://msdn.microsoft.com/en-us/library/windows/desktop/ms647486(v=vs.85).aspx Windows 下的对应函数为 LoadString，直接读取适合当前 locale/lcid 设置的资源字符串] {{Wayback|url=http://msdn.microsoft.com/en-us/library/windows/desktop/ms647486(v=vs.85).aspx |date=20170715073405 }}&lt;br /&gt;
&lt;br /&gt;
{{GNU}}&lt;br /&gt;
&lt;br /&gt;
[[Category:GNU计划软件]]&lt;br /&gt;
[[Category:翻译]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Cewbot</name></author>
	</entry>
</feed>