站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
建站程序
开发
服务器
办公软件
开发教程
服务器教程
软件使用教程
运营教程
热门电子书
WordPress教程
宝塔面板教程
CSS教程
Shopify教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
WordPress:Translating WordPress
”
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
__TOC__ ''国际化'' 和 ''地方化''是术语,用来描述使WordPress(和其它这样的项目)以英语以外的其它语言显示,供不同地区,持不同方言和地方特色的网民使用。 将这个软件本地化需要两个步骤。第一步是软件的开发者提供一个机制和方法来最终地翻译软件和界面来适应本地的特点和用户的语言。WordPress开发者已经完成了这一步,因此从理论上来讲,WordPress可以在任何语言背景中使用。 第二步就是真正地''本地化'',网页上的文本和其它的设置都翻译好了,并且符合其它的语言和文化习惯,并且使用了软件开发者指定的构架。WordPress已经被本地化翻译为许多种语言(更多的信息,请看看[[WordPress:WordPress in Your Language|英语外其它语言的WordPress]])。 这篇文章解释了翻译者(双语或者多个语言的WordPress用户)怎样才能将WordPress本地化为更多的语言。 == 翻译 WordPress == 在你开始翻译WordPress之前,查看[[WordPress:WordPress in Your Language|英语外其它语言的WordPress]] (以及那里引用的资源)是否已有了将WordPress翻译为你的语言的版本。也有可能每个人或者(一个组)已经开始将WordPress翻译为你的母语,但是他们还没有翻译完。要找到这样的信息,订阅[[WordPress:Mailing_Lists#Polyglots|wp-polyglots mailing list]],介绍你自己,并且问问有没有什么人正将WordPress翻译为你的母语。也有一个[[WordPress:L10n:Localization_Teams|本地化小组]] 和 [[WordPress:L10n:Teams Currently Forming|正在形成的本地化小组]]列表,你可以查看这个列表看看翻译是不是正在进行。 === 资格 === 假如WordPress还没有翻译为你的语言或者有人正在翻译,你可能想要作为志愿者来一起将WordPress翻译为你的母语,下面是你所需要的资格: *你必须真正能够运用双语—对英语和你要翻译成的语言非常熟练。对两种语言掌握不透,会使得翻译对你来讲变得很难,或者你翻译后的WordPress版本,本地人看不懂。 *你需要熟悉PHP,因为你有时候需要通读WordPress编码来领会翻译这个信息的最好的方法。 *你应该熟悉人类语言构造:名词,动词,冠词等等,每种词的不同类型,并且能够识别这些词在不同的英语语境中的意思。 === 关于本地化 === '''本地化'''是指语言与当地方言之间的结合。一般来说,本地化是指国家本地化,如葡萄牙语(葡萄牙),葡萄牙语(巴西)。 你可以将WordPress翻译为任何国家的语言,甚至是其它种类的英语,如加拿大英语或者澳大利亚英语,来适应当地的拼写和习惯用法。 WordPress默认语言是美国英语。 == 本地化技术 == WordPress的开发者选择使用[http://www.gnu.org/software/gettext/gettext.html GNU gettext]本地化框架来提供WordPress本地化的基本结构。Gettext是一个成熟的,广泛使用的,软件翻译模框架,而且是免费软件领域/开放源码本地化的''实际''标准。 gettext使用''消息标准''的翻译—就是说,显示给用户的每个"消息"都是单个翻译的,不管这个消息是一段话还是一个单词。在WordPress中,WordPress PHP 文件通过两个PHP函数产生,翻译,并且使用这样的"消息"。当消息作为参数传给另一个函数的时候,会用到<tt>__()</tt>;使用<tt>_e()</tt>直接在网页上写信息。更多的关于这两个函数的详细信息: ; <tt>__($message)</tt> :搜索翻译<tt>$message</tt>的本地化模块,并且将翻译传递给PHP<tt>返回</tt>申明。如果没有找到<tt>$message</tt>的翻译,只会返回<tt>$message</tt>。 ;<tt>_e($message)</tt> : 搜索翻译<tt>$message</tt>的本地化模块,并且将翻译传递给PHP<tt>echo</tt>申明。如果没有找到<tt>$message</tt>的翻译,只会echoes<tt>$message</tt>。 注意如果你正将一个主题或者插件国际化,你应该使用一个"文本域"。更多关于怎样国际化一个插件的内容的信息,请看看[[WordPress:Writing a Plugin|编写一个插件]];主题国际化的操作也类似。 Gettext框架照顾到了大部分的WordPress。但是,WordPress版本中的某些部分不能使用gettext—更多关于怎样翻译这些部分的信息,请看看[[WordPress:Files For Direct Translation|关于直接翻译的文件]]。 === gettext 文件 === Gettext翻译框架中使用了三种类型的文件。这些文件在翻译过程中,由翻译工具产生和/或者使用,如下: ;POT(轻便目标模板)文件:本地化过程中的第一步是使用一个程序来搜索WordPress源代码并且找出通过<tt>__()</tt> or <tt>_e()</tt>函数的每个message。这个英语message列表被输进一个特别格式的模板文件(POT文件),这个文件形成了翻译的基础。一般来说,你可以为WordPress下载一个POT文件,这样你就不要制造一个自己的POT文件了。如果主题/插件开发者将所有的文本包含在<tt>__()</tt> 或者<tt>_e()</tt>函数中,主题和插件也可以使用分开的POT文件。 :PO(轻便对象)文件:本地化过程的第二步是翻译者将POT文件中的所有内容翻译为目标语言,并且在一个PO文件中保存英语和翻译好的内容。 ;MO(机器对象)文件:本地化过程的最后一步是,PO文件在一个程序中运行,这个程序将PO文件转变为最优化的机器可读的二进制文件(MO文件)。将翻译汇编为机器代码来使得本地化程序运行时候,能够更快地重新找到翻译。 == 翻译工具== 有不同的工具能够辅助翻译。你可以使用任何你喜欢的翻译工具。 ; [https://translations.launchpad.net/ Launchpad] : Ubuntu Linux项目有一个网站能够使你不看PO或者PO文件,就可以翻译内容,并且直接将翻译内容导出到MO。 :''注: 许多翻译人员发现Rosetta是个很好的出发点,但是如果要校正整个翻译内容,许多翻译者开始选择手工编辑PO文件或者使用一个程序像poEdit或者KBabel,因为Rosetta缺少一个搜索功能和其它对于校正和编辑来说至关重要的功能。'' ; [http://pootle.locamotion.org/projects/wordpress/ Pootle] :一个开放源码,以网络为基础的翻译系统。服务器托管在Locamotion.org当然拥有WordPress翻译。 ;[http://www.poedit.net/ poEdit] :Windows,Mac OS X和UNIX/Linux的一个开放源码程序,提供一个便于使用的GUI来编辑PO文件并且产生MO文件。 ;[http://i18n.kde.org/tools/kbabel/ KBabel] :Linux上的KDE窗口管理器的另一个开放源码PO编辑程序。 ;[http://www.gnu.org/software/gettext/ GNU Gettext] :官方的Gettext工具包包含了创建POTs,操作Pos,和产生MOs的命令行工具。那些适合于一个命令行shell。 === 用Launchpad翻译 === 我们有一个单独的页面关于[[WordPress:Translating_WordPress_with_Launchpad|在Lanchpad上翻译WordPress的指示说明。]] === 用Pootle翻译(在Locamotion.org) === # 在Pootle服务器上[http://pootle.locamotion.org/register.html 注册一个帐户],并且向[http://codex.wordpress.org/Special:Emailuser/Leuce 其中的一位管理员]发送电子邮件,添加你的语言。 # 在试着翻译任何内容之前,记住[http://pootle.locamotion.org/login.html登录] 到 Pootle。访客没有登录的时候,有时候能够阅读或者提出建议,但是只有登录后,才能够翻译。 # 访问WordPress页面,查找你的语言。例如,Afrikaans页面在[http://pootle.locamotion.org/af/wordpress/ pootle.locamotion.org/af/wordpress/](记住拖尾的斜线)。 # 点击 "显示编辑功能"。 #点击"快速翻译",编辑没有翻译的,模糊的字符串,或者点击"翻译所有的",编辑所有的字符串。 需要在Locamotion.org上翻译WordPress,单一的wordpress.pot文件需要被分成更小的逻辑单位。这里也有readme.html文件,还有一个文件包含有所有的字符串,你可以动手将这些字符串添加到PHP文件。 同时看看WordPress的Decathlon wiki页面,[http://translate.sourceforge.net/wiki/decathlon/wordpress here] 和[http://translate.sourceforge.net/wiki/decathlon/wordpress_files here]。 '''将你的翻译融合到 wordpress.pot''' 一般来说,使用Pootle服务器,翻译人员能够在任何时候,下载自己选择的软件的PO文件,可以将这个文件递交到翻译项目中。然而,由于原始的源文件在pootle.locamotion.org上被分割为更小的单元,翻译人员必须动手将这些翻译结合,返回到wordpress.pot文件,然后再递交给WordPress。 #下载[http://svn.automattic.com/wordpress-i18n/pot/trunk/wordpress.pot 官方的 WordPress POT文件]。 #在你的电脑上下载并且安装[http://translate.sourceforge.net/wiki/toolkit/installation 翻译Toolkit]。 #从Pootle服务器上下载翻译好的或者部分翻译好的PO文件。你可以一个个地下载这些文件或者将这些文件解压再下载(请看看网站上的选项)。一般来说,你不需要登录到Pootle上下载已经翻译为你的母语的PO文件。 #首先,将PO文件结合到一个单一的翻译存储器中(因为使用单一的文件而不是多个文件,更容易执行接下来的步骤),并且从命令行中执行下面的内容:'''po2tmx -l xx -i pofiles -o xx.tmx''' "xx"是你的目标语言代码的位置。 这会创建一个 TMX 翻译记忆文件,称为 xx.tmx。 #其次,先前翻译的WordPress POT文件使用了翻译记忆。要实现这一点,请从命令行中执行以下的:'''pot2po --tm=xx.tmx -i wordpress.pot -o wordpress_xx.po'''。会为你的语言创建一个PO文件,称为wordpress_xx.po。 #最后,在你的PO文件上做一个单词/字符串统计,看看多少已经翻译好了,还有多少较模糊,没有翻译,从命令行中使用:'''pocount wordpress_xx.po''' 如果所有的PO文件都翻译完了,最后的wordpress_xx.po也全部翻译完了。如果PO文件中的一些字符串还没有翻译,pot2po命令可能导致wordpress_xx.po中出现一些模糊的翻译(这并不是件坏事)。 === 用poEdit翻译 === #下载并且安装[http://www.poedit.net/ poEdit] #下载[http://svn.automattic.com/wordpress-i18n/pot/trunk/wordpress.pot 官方 WordPress POT 文件] [[WordPress:Image:po_edit_windows.jpg|right|thumb|100px| poEdit 界面]] #在poEdit中打开文件。 #''(看图像)''标为(1)的框是来自POT文件的原始内容(英语写的)。标记为(2)的框是你添加翻译的框。标记为(3)和(4)的框是用来添加关于内容的评论。如果你与一组翻译人员合作,并且想在PO文件上交流看法,这些框迟早有用。 #进入'''文件 → 保存 as…'''在一个PO文件中保存你的翻译。 #当你完成翻译后,进入'''文件 → 保存 as…'''再次地产生一个MO文件。 #或者你可以将你的poEdit设置为当点击'''文件 → 喜好'''来保存变化的时候,总是编译一个MO文件而且在'''编辑 符'''上选中在保存框中''自动编辑.mo 文件'' 。 ===用KBabel 翻译=== ''这个部分还未完成。'' #下载[http://svn.automattic.com/wordpress-i18n/pot/trunk/wordpress.pot 官方的 WordPress POT 文件] #在KBabel中打开文件 === 用 Gettext工具翻译 === #下载[http://svn.automattic.com/wordpress-i18n/pot/trunk/wordpress.pot 官方 WordPress POT文件] #在你最喜爱的文本编辑器中打开文件。 #更新标头信息 #翻译内容 #用.po文件扩展名来保存文件 #发行<tt>msgfmt -o ''filename''.mo ''filename''.po</tt> ==== PO 文件标头 ==== 在PO文件的开始部分,称为''标头''。这个标头给出了翻译是关于哪个版本的软件包的,翻译人员是谁,以及翻译是何时创建的。这个标头的某些部分对于所有的WordPress翻译都是通用的: # '''WordPress语言(本地化)翻译。''' # 版权(C) '''YEAR WordPress 投稿者。''' #这个文件发行的许可证与'''WordPress'''软件包的相同。 # 第一个作者 <EMAIL@ADDRESS>, YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-版本: '''WordPress 版本'''\n" "Report-Msgid-Bugs-To: \n" "POT-创建-日期: 2005-02-27 17:11-0600\n" "PO-修订-日期: YEAR-MO-DA HO:MI+ZONE\n" "最后的-翻译人员: 全名<EMAIL@ADDRESS>\n" "语言-小组: 语言 <LL@li.org>\n" "MIME-版本: 1.0\n" "内容-形式: text/plain; charset=CHARSET\n" "内容-翻译-编码: 8bit\n" 用适当值填上剩下的大写字母文本部分。 ====内容格式 ==== 文件的剩余部分会是以下的格式: #: wp-comments-post.php:13 msgid "对不起, 这篇文章不能够评论。" msgstr "" #: wp-comments-post.php:29 msgid "对不起,你登录后,才能够发表评论。" msgstr "" #: wp-comments-post.php:35 msgid "错误: 请填上必须的内容 (姓名,电子邮件)。" msgstr "" 每个内容的第一行包括了这个内容在WordPress编码中处于什么位置。这些消息内容都位于wp-comments-post.php,分别在第13,29,和第35行。有时候,你看到一个消息内容,你需要查看这个内容的语境;查看WordPress核心中的某行或者某些行,你就会了解消息内容应该什么时候显示,显示在什么位置,甚至还知道使用你的网络浏览器来重现这个消息内容。有的消息内容会出现在同一个文本的多处;这样肯定有多行给出了一个文件和一行的位置。 下一行,<tt>msgid</tt>,是''源'' message。WordPress正是将这个命令行发送到<tt>__()</tt>或者 <tt>_e()</tt>函数,而且你需要翻译这个message。 最后一行,<tt>msgstr</tt>,是一个空白的命令行,你需要在这个命令行上填上你的翻译。 下面是几个相同的行在翻译之后,是怎样的,使用'''[http://svn.automattic.com/wordpress-i18n/fr_FR/trunk/messages/fr_FR.po 法语 (法国)]''' 本地化来作为一个例子: #: wp-comments-post.php:13 msgid "对不起,这篇文章的评论功能已经关闭了。" msgstr "'''L'ajout de commentaire n'est pas ou plus possible pour cet article.'''" #: wp-comments-post.php:29 msgid "对不起,你登录后才能够发表评论。" msgstr "'''Vous devez être connecté pour rédiger un commentaire.'''" #: wp-comments-post.php:35 msgid "错误:请填上必要的内容 (姓名,电子邮件)。" msgstr "'''Erreur : veuillez remplir les champs obligatoires vides (nom, e-mail).'''" :''注: 请看看下面的 '''[[#WordPress:Character_Encodings|字符集编码]]''' 和 '''[[#WordPress:HTML_Character_Entities|HTML 字符集实体]]''' 关于怎样在翻译中使用 HTML 字符实体。'' == messages 的类型== === 标签 === '''Labels'''通常用在HTML<tt><label></tt>, <tt><legend></tt>, <tt><a></tt>, 或者<tt><select></tt>标签中。这些标签通常是一个UI元素的简单而精确的描述符。这些标签有时候可能很难翻译,特别如果标签是单词的话,而且如果单词可以被翻译为名词或者祈使句中的动词。拥有最多的'''labels'''的时候,你需要在编码中搜索一下,在找出编码在上下文中的用法,然后再决定合适地翻译编码。 因为这麽多的message是WordPress管理界面的一部分,'''Labels'''可能是翻译最频繁的message。 ==== 例子==== msgid "Post" msgstr "Artikkeli" ''"post"可以被翻译为一个命令式的动词,但是在这个语境中,它是一个名词。"post"在英语中的名词形式,翻译会比较难,一些翻译小组很难决定哪个翻译最合适。许多翻译使用其英语的对等词"Article,"的确是这样的。<small>(来自'''[http://svn.automattic.com/wordpress-i18n/fi_FI/trunk/messages/fi_FI.po Finnish (Finland)]''' 翻译。)</small>'' #: wp-login.php:79 wp-login.php:233 wp-register.php:166 #: wp-includes/template-functions-general.php:46 msgid "Register" msgstr "रजिस्टर" ''<small>来自'''北印度语''' 翻译。</small>'' #: wp-admin/admin-functions.php:357 msgid "- Select -" msgstr " - Dewis -" ''这个例子周围的破折号可能会被删除或者取消,如果这些破折号可能会使本地用户感到疑惑,或者你的本地化有不同的使用惯例。<small>来自 '''威尔士语言'''翻译。</small>'' === Informational Messages === 另一种常见的message形式,'''informational message'''通常是由完整的句子组成的,通常传递信息或者需要一个用户的执行活动。因为informational message比'''labels'''要长,这些message更容易翻译。然而,message越长,正式化(或者非正式化)的差别越大,翻译人员应该注意到这一点。 ==== 例子 ==== #: wp-login.php:146 msgid "你的新密码在邮件中。" msgstr "Вашата нова парола е в електронната ви поща." ''这个特别的 message包含了一个更改了的英语正式用语 ("邮件中的check/支票"), 这导致了非正式性用语。 <small>(来自 '''[http://svn.automattic.com/wordpress-i18n/bg_BG/trunk/messages/bg_BG.po 保加利亚语 (保加利亚)]'''翻译。)</small>'' #: wp-includes/functions.php:1636 msgid "<strong>Error</strong>: Incorrect password." msgstr "<strong>FEL</strong>: Felaktigt lösenord." ''错误信息因为更加简短精确,倾向于更加地正式。 <small>(来自'''[http://svn.automattic.com/wordpress-i18n/sv_SE/trunk/messages/sv_SE.po 瑞典语 (瑞典)]''' 翻译。)</small>'' #: wp-includes/functions-post.php:467 msgid "对不起,你只能每隔十五秒才能够发表一个新的评论。慢点,伙计。 " msgstr "Leider kannst du nur alle 15 Sekunden einen neuen Kommentar eingeben. Immer locker bleiben." ''当然,并不是所有的都那样。<small>(来自'''[http://svn.automattic.com/wordpress-i18n/de_DE/trunk/messages/de_DE.po 德语(德国)]''' 翻译。)</small>'' === 拥有描述的字符串 === 如果一个字符串包含有一个竖线|,|右边的部分是一个描述。这个描述的目的在于帮助你翻译字符串,将字符串放到某个语境中,或者提供额外的信息。 ==== 例子 ==== #: wp-includes/locale.php:186 msgid "" "number_format_decimal_point|$dec_point argument for http://php.net/number_format, default is ." msgstr "," ''描述建议你如果要翻译字符串,就要查看一个网页。'' === 时间和日期本地化设置 === WordPress没有使用内置的本地化切换功能,大多数主机的许多语言都没有配置这个功能,WordPress使用了gettext翻译模块来完成时间和日期的翻译和格式。 WordPress翻译下面的内容: ==== 月份名称 ==== #: wp-includes/locale.php:42 wp-includes/locale.php:57 msgid "五月" msgstr "Květen" ''<small>(From the '''[http://svn.automattic.com/wordpress-i18n/cs_CZ/trunk/messages/cs_CZ.po 捷克语 (捷克共和国)]''' 翻译。)</small>'' ==== 月份缩写 ==== #: wp-includes/locale.php:57 msgid "May_May_abbreviation" msgstr "Mag" ''注意不寻常的 <tt>msgid</tt>。 这些messages '''不'''应该直译: 它们破解了英语中的一个事实,全名和缩略名是相同的, Gettext 可能错误地将两个结合在一篇文章中。<small>(来自'''[http://svn.automattic.com/wordpress-i18n/it_IT/trunk/messages/it_IT.po 意大利语(意大利)]''' 翻译。)</small>'' ==== 星期名称 ==== #: wp-includes/locale.php:7 #: wp-includes/locale.php:18 #: wp-includes/locale.php:31 msgid "星期二" msgstr "火曜日" ''<small>(From the '''[http://svn.automattic.com/wordpress-i18n/ja_JP/trunk/messages/ja_JP.po 日语 (日本)]'''翻译。)</small>'' ==== 星期缩写 ==== #: wp-includes/locale.php:31 msgid "Tue" msgstr "Уто" ''<small>(来自'''[http://svn.automattic.com/wordpress-i18n/sr_RS/trunk/messages/sr_RS.po 塞尔维亚语言 (塞尔维亚)]''' 翻译。)</small>'' ==== 星期词首大写 ==== #: wp-includes/locale.php:18 msgid "T_星期二_词首大写" msgstr "ti" ''星期首字母大写符合WordPress历法的特色,与月份缩略词使用同样的方法,以符合要求,因为在英语中星期二和星期四的首字母是一样的。并不是所有的本地化都是用对每个日期都使用单字母缩略词的形式:在这个例子中, 挪威语Bokmål使用一个额外的字母来区分 ''tirsdag'' (星期二)和''torsdag'' (星期四)。<small>(来自'''[http://svn.automattic.com/wordpress-i18n/nb_NO/trunk/messages/nb_NO.po 挪威语 Bokmål (挪威)]''' 翻译。)</small>'' ==== 日期格式字符串 ==== 这些是[http://php.net/date PHP <tt>日期()</tt>]格式字符串,而且这些字符串能够使你更改你的本地化的日期和时间的格式。 WordPress使用本地化文件其它地方的翻译来用于月份名称,星期名称,等等。这个特别的字符串可以选择哪个元素要包含在日期 &时间,和日期时间呈现的次序中。 从<tt>theme.pot</tt>文件中取出这个<tt>msgid</tt>: #: archive.php:40 search.php:19 single.php:22 msgid "l, F jS, Y" msgstr "" 在英语中,这个的形式是: 2005,2月27日,星期天 然而,不同的本地化语言的日期形式是不同的,在丹麦语中,例如,日期写为: søndag, 27. februar 2005 要做到这一点,上述的<tt>msgid</tt>应该被翻译为: #: archive.php:40 search.php:19 single.php:22 msgid "l, F jS, Y" msgstr "l, j. F Y" 另一个例子,在汉语和日语中,日期的格式是: 2005年2月27日 翻译中可以达到这个要求: #: archive.php:40 search.php:19 single.php:22 msgid "l, F jS, Y" msgstr "Y年n月j日" 最后,如果你的日期格式中需要包含字面意思的文字字符,就如西班牙语有时出现的那样,你可以在反斜线符号后面加上: #: archive.php:40 search.php:19 single.php:22 msgid "l, F jS, Y" msgstr "l j \d\e F \d\e Y " 这回输出: domingo 27 de febrero de 2005 ==== 通过WordPress-PHP 翻译==== 要翻译你的日期,例如,在你的插件中使用wp-函数[http://code.wordpress.de/xref/nav.htm?wp-includes/functions.php.htm#mysql2date mysql2date(Dateformat, Datestring)]。这个使用月和星期翻译来返回你的日期。 === 占位符Messages === 许多message包含特别的PHP格式的占位符,这个允许翻译后,插入不可翻译的动态内容到message。PHP占位符拥有两种不同的格式: ; <tt>%s</tt> : 只有一个占位符呈现的时候,会使用这个标记。 ; <tt>%1$s</tt>, <tt>%2$s</tt>, <tt>%3$s</tt>, … :有限的占位符,允许翻译来重新地组织字符串中占位符的顺序,同时保持每个占位符所代表的信息。 ====例子 ==== #: wp-login.php:116 msgid "这个电子邮件成功地发送到了 %s的电子邮件地址。" msgstr "El 电子邮件 fue enviado satisfactoriamente a la dirección e-mail de %s" ''这个 message 插入了用户的用户名,电子邮件正是发送到这个用户名。<small>(来自 '''[http://svn.automattic.com/wordpress-i18n/es_ES/trunk/messages/es_ES.po 西班牙语 (西班牙)]''' 翻译。)</small>'' #: wp-admin/upload.php:96 #, php-format msgid "File %1$s of type %2$s is not allowed." msgstr "类型为%2$s的文件%1$s不允许被上传。" ''这个message颠倒了翻译中文件名和类型是次序。<small>(来自'''[http://svn.automattic.com/wordpress-i18n/zh_CN/trunk/messages/zh_CN.po汉语 (中国)]'''翻译。)</small>'' ==优秀的翻译小贴士 == ;不要直译,要整体地翻译:要知道两个或者多个语言,毫无疑问你知道你所说的语言拥有不同的结构,韵律,语调和变形形式。翻译过的message不需要与英语语言结构相同:了解源语言的意思,然后以目标语言的习惯,将它以相同的意思表述出来。就如创建一个''等同''的message和一个''对等的''message之间的区别:不要复制原话,要翻译出来。即使message中有更多的结构内容,你要有创建性的思想,将这些结果更改,使其更加地适应你的本地化用户的习惯表述和逻辑。 ;试着保持同等级别的正式性(或者非正式性):每个message有一个不同级别的正式性或者非正式性。你的目标语言中需要使用什么样的正式性或者非正式性,你需要自己决定(或者与你的小组一起决定),但是WordPress messages(特别是''informational messages'')倾向于使用一种客气的非正式的语调。试着在目标语言的语境中找到对等的语调。 ;不要使用俚语或者针对特别用户的术语:一些术语需要用在博客中,但是不可以使用在"in"人群所用的口语中。如果外行的写博客的人要使用你的语言来安装WordPress,他们会知道这些术语的意思吗?单词像''pingback'', ''trackback'', 和''feed''是这个规则的例外;这些是特别难以翻译的术语,许多翻译人员选择将这些术语保留英文。 ;阅读你的母语中其它的软件的本地化:如果你遇到了麻烦或者需要指导,试着阅读其它流行软件工具的翻译,来摸索一些哪些术语是经常使用的,用语有多正式,等等。当然,WordPress拥有自己的语调和氛围,因此当你阅读其它的本地化翻译的时候,要牢记这一点,但是可以自由地查找UI术语等等来与你的母语的其它软件中这些术语的翻译保持一致。 == WordPress 本地化知识库 == [http://svn.automattic.com/wordpress-i18n/ http://svn.automattic.com/wordpress-i18n/]上的'''WordPress 本地化知识库'''是一个[[WordPress:Using_Subversion|子版本 知识库]]这里保存了官方的WordPress翻译。不同的小组一起合作将WordPress翻译为他们的母语,而且小组维护人员使得知识库保持更新和变化。 === 加入 === 任何人都可以加入这个知识库。只要订阅[[WordPress:Mailing_Lists#Polyglots|wp-polyglots mailing list]],介绍你自己,让他人知道你想要翻译什么。如果已经有一个你的母语翻译的小组,他们会通知你,让你加入。如果没有这样的小组,你可以志愿成为你的母语翻译维护人员,或者本地化人员,或者只是付出你的本地化翻译,知识库维护人员会添加你的翻译。 === 指导方针和要求 === ''注: 随着系统的升级,这些指导方针会受系统变化的支配;如果指导方针改变了,知识库维护人员会非常乐意帮助你来更新你储存在知识库中的文件。'' ==== 字符编码==== 所有的本地化翻译应该至少有一个UTF-8版本,但是可能会随意地在本地化翻译受欢迎的其它字符编码中添加版本。 PHP不支持Byte Order Marker(BOMs),因此要确定你贡献的UTF-8编码的文件不包含有BOMs。 ==== HTML 字符实体 ==== 除了一些例外(下面所列出的),所有的内容都应该逐字翻译,不应该跳过重音节单词或者HTML字符实体上特别的字符。 一些字符必须要避免与XHTML标记相冲突:尖括号(<tt>&lt;</tt> 和 <tt>&gt;</tt>), 和&符号 (<tt>&amp;</tt>)。此外,有一些更易于使用的字符,丢失了,例如non-breaking spaces(<tt>&nbsp;</tt>),angle quotes(<tt>&laquo;</tt>和 <tt>&raquo;</tt>), curly apostrophes (<tt>&#8217;</tt>)和curly quotes。 关于W3C关于字符编码和字符实体的最好做法的更多的信息,请看看下面的参考: * http://www.w3.org/TR/2004/WD-i18n-html-tech-char-20040509/#IDAPNGO * http://www.w3.org/International/tutorials/tutorial-char-enc/#exceptional ====知识库文件结构 ==== 知识库包含了每个本地化翻译的目录,这些目录命名为如下: * [http://en.wikipedia.org/wiki/ISO_639 ISO 639 语言代码] (小写字母) *一个底线 * [http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 ISO 3166-1 alpha-2 国家代码] (大写字母) *如果目录是同一个本地化翻译脚本的变化形式,一个 @ 标记, 和 [http://www.unicode.org/iso15924/iso15924-codes.html ISO 15924 脚本代码]。 在每个本地化翻译的目录中有正规的子版本译文目录:支部/, 标签/, 和枝干/。 在合适的译文目录内部有以下的子目录。 ===== messages/ ===== <ul> <li>messages/</li> <ul> <li>kubrick</li> </ul> </ul> 这个目录包含了本地化翻译的Gettext MO 和 PO文件。Message文件命名以locale名命名。 在<code>kubrick</code>文件夹中,你应该将i18n-ed的翻译放到(使用与以上相同的PO/MO文件名)[http://svn.automattic.com/wordpress-i18n/theme/ default theme, residing at the wordpress-i18n svn 知识库]。还有另一种方式翻译默认主题: ===== dist/ ===== 目录包含有所有的[[WordPress:Files_For_Direct_Translation| WordPress 发行的,不能够被 Gettexted的文件]],可以被翻译为本地化语言。 如果本地化翻译中只有一个文件的UTF-8翻译,dist/目录可能直接拥有许多内容,dist内部的结果应该反映wordpress根目录的结构: <ul> <li>dist/ <ul> <li>license.html</li> <li>readme.html</li> <li>wp-config-sample.php</li> <li>…</li> <li>wp-admin/ <ul> <li>install.php</li> <li>upgrade.php</li> <li>…</li> </ul> </li> </ul> </li> </ul> 如果本地化翻译不止包含一个UTF-8字符编码,那么dist/应该包含每个编码的子目录: <ul> <li>dist/ <ul> <li>UTF-8/ <ul> <li>license.html</li> <li>readme.html</li> <li>wp-config-sample.php</li> <li>…</li> <li>wp-admin/ <ul> <li>install.php</li> <li>upgrade.php</li> <li>…</li> </ul> </li> </ul> </li> <li>ISO-8859-1/ <ul> <li>…</li> </ul> </li> <li>…</li> </ul> </li> </ul> ===== 主题/ ===== ''最好翻译 i18n-ed kubrick (请看看上面的 <tt>messages/</tt> 部分),而不是使用 <tt>主题/</tt>。'' 与dist/dir类似,主题/包含很难翻译的主题文件。如果只呈现了一个UTF-8翻译,目录上可以有每个翻译好的主题的子目录。这些子目录包含了与原始主题相同的文件(只是这些文件已经翻译好了),而且与原始主题命名相同: <ul> <li>theme/ <ul> <li>default/ <ul> <li>404.php</li> <li>index.php</li> <li>sidebar.php</li> <li>…</li> <li>images/ <ul> <li>…</li> </ul> </li> </ul> </li> </ul> </li> </ul> 正如dist/目录,如果呈现了多个字符编码,主题/应该包含每个字符编码的子目录,依次包含关于有翻译好的每个主题的子目录。 == 使用本地化 == 为了要本地化安装你的wordpress,如果本地化还不存在,创建一个目录名为''languages'' 而不是''wp-includes''。然后如上所述,从[http://svn.automattic.com/wordpress-i18n/ 子版本知识库]中提取一个适当的本地化文件。语言的main .mo文件应该在''languages''目录内部。在''wp-config.php''内部为你选择的语言,设置WPLANG。例如,如果你想使用法语,你就会有: <pre>define ('WPLANG', 'fr_FR');</pre> == 发现并解决问题== ;Rosetta不会将我的翻译以一个MO文件导出。只是显示,"出现了一个系统错误。":你的翻译中有一个语法错误,阻止翻译汇编成一个MO。下载PO并且试着动手用<tt>msgfmt</tt>将它编译。这样你会得知哪行出现了错误,这样你可以动手更改这些错误。如果你没有安装一个GNU Gettext软件包,你可以试着在poEdit或者 KBabel中打开PO文件,看看这些文件能否帮助你来更改错误,或者你可以发送电子邮件到[[WordPress:Mailing_Lists#Polyglots|wp-polyglots mailing list]]让其他人来帮助你解决程序错误。 ==资源== [http://boren.nu/archives/2004/11/01/localizing-plugins-and-themes/ Ryan Boren's Localizing Plugins and Themes]<br /> [http://urbangiraffe.com/articles/translating-wordpress-themes-and-plugins/ Translating WordPress into another language (themes and plugins too)] [http://boren.nu/archives/2004/11/01/localizing-plugins-and-themes/ Ryan Boren的插件和主题本地化]<br /> [http://urbangiraffe.com/articles/translating-wordpress-themes-and-plugins/ 将WordPress翻译为英语外的其它语言 (主题和插件)]
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)