站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
建站程序
开发
服务器
办公软件
开发教程
服务器教程
软件使用教程
运营教程
热门电子书
WordPress教程
宝塔面板教程
CSS教程
Shopify教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
Gallery:本地化
”
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
= Gallery2的本地化 = == 综述 == Gallery是国际化的。不对特定语言文本消息的包含, 取而代之地,它使用特殊的方法追踪文本 以进行抽取并翻译成其他语言。用户则会看见 文本被翻译成他们使用的语言版本。 为了能够让用户看到Gallery文本的本地化版本, 就需要先将这些Gallery要显示的文本消息进行 翻译。此过程就被称为"本地化"。 这里我们尝试说明一下如何创建并维护G2中本地化 文件的内容。这并不是特别困难的任务, 但要求无论何时基础内容有改变,我们都要保证 各类文件的更新度。我们挺幸运的,因为有这样的工具能 协助我们完成此类操作过程。 == 要求 == 为了能够有效率地进行,你需要在计算机上 安装一些工具。我仅在FreeBSD box中做了测试,但我想如果用在Linux,Solaris或其他Unix类系统 上也不会太麻烦。在Windows上可能会有些难度, 但也是有可能实现的。 以下为必须安装,并在你的路径中: ; gettext : http://www.gnu.org/software/gettext/ ; gmake (或make): http://www.gnu.org/software/make/make.html ; php二进制: http://php.net ; perl : http://perl.com '''注''':如果你使用FreeBSD,并希望能取代''make''而使用''gmake'',因为FreeBSD的默认不与GNU兼容。 你还需要用当前G2文件创建最新的翻译。就目前的SVN或nightly快照版的运行情况都不错。最新的G2开发者版本也能运行,但某些翻译的字串可能有些过时了。 == 本地化的新建 == 浏览一下Gallery就能发现不少名为"po"的目录。("po"是一gettext术语,即"可移植对象(portable object)")。以下为找到它们的一个方法: <pre> find . -type d -name po <-- 输入这个 ./themes/matrix/po <-- 会看到这个 ./lib/tools/po ./modules/core/po ./modules/comment/po ./modules/netpbm/po ** 忽略"lib/tools/po"目录。 </pre> 这些目录还有翻译源文件。你要 使用合适的语言代码来新建文件,接着在它们之中 添入经过翻译的文本。首先要做的就是从 下面的两个表格中识别出正确的代码: ; 语言代码: : http://www.gnu.org/software/gettext/manual/html_mono/gettext.html#SEC221 : (or http://ftp.ics.uci.edu/pub/ietf/http/related/iso639.txt) ; 国家代码: : http://www.gnu.org/software/gettext/manual/html_mono/gettext.html#SEC222 : (or http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html) 在大多数情况下,你只需要语言代码即可,如德语就是"de"。要为多个国家中提供特定国家语言的翻译,你可以使用这样的代码格式,xx_XX,例如"pt_BR"表示葡萄牙语/巴西。如果你确定该用哪一个,包括语言和国家。如果你发现已有你使用语言的翻译的话,请接着看 [[#本地化的维护|本地化的维护]]。 一旦选好了代码,就需要为你的代码新建一个.po 文件。假定你选择是的"de"。那么对各po目录, 你需要做的是: <pre> make de.po </pre> 这将找到该本地化标记的所有文本(tpl文件中的[[Gallery:Tpl_Reference#Gallery_Custom_Tags|{g->text}]],php代码中的translate()或i18n()),并创建一个即将进行翻译的po文件。 有关文本编辑器。 * 有一些工具可以处理.po文件: ** [http://poedit.sourceforge.net/ poEdit](多平台) ** [http://i18n.kde.org/tools/kbabel/ KBabel](Unix KDE) ** [http://gtranslator.sourceforge.net/ GTranslator](Unix Gnome) ** [http://www.gnu.org/software/emacs/emacs.html Emacs with po-mode](多平台) ** [http://www.vim.org/ Vim] with [http://www.vim.org/scripts/script.php?script_id=695 PO plug-in](多平台) 我比较喜欢用XEmacs,因此我会 在下面的例子中拿XEmacs做例子。如果你有其他编辑器 的使用指导,请分享一下。XEmacs的主要模式被称为"po-模式",如果你安装了它,在编辑.po文件时就会 自动转入。我在这里不准备这么做,但 你可以尝试一下。 现在我们来编辑de.po。在其顶部应有Gallery的证书。你需要对以下值做自定义: ; Last-Translator :将你的名字及email以此格式输入:"FirstName LastName <email@address>" ; Language-Team : 输入语言及-翻译邮件列表,如"German <gallery-translations@lists.sourceforge.net>" ; Content-Type : 将此设置给"Content-Type:text/plain; charset=UTF-8\n" : 我们希望你使用UTF-8字符集。因为它允许我们在同一页面上对多个语言进行渲染,这对某一语言站点页面上其他语言的用户评论是有好处的。 这里有[http://cvs.sourceforge.net/viewcvs.py/gallery/gallery2/modules/core/po/de.po?rev=1.13&view=auto modules/core/po/de.po]的完整的header样例。注意编写者是如何维护前任翻译者名单的。 <pre> # 前任翻译者(迄今所知,如有脱漏,请在此添加): # - Jens Tkotz <jens@peino.de> # - Ernesto Baschny <ernst@baschny.de> ... # msgid "" msgstr "" "Project-Id-Version: Gallery: Core 1.0.32\n" "POT-Creation-Date: 2003-02-11 03:09-0800\n" "PO-Revision-Date: 2006-03-05 02:25+0000\n" "Last-Translator: Frederik Kunz <frederik.kunz@web.de>\n" "Language-Team: German <gallery-devel@lists.sourceforge.net>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" </pre> 如果你的语言中不包含复数词用法,如汉语或土耳其语,就得修改以下语句: <pre> "Plural-Forms: nplurals=2; plural=(n != 1);\n" -> Change to "Plural-Forms: nplurals=1; plural=0;\n". </pre> 这样,你只需翻译msgstr[0]并注释掉或移除msgstr [1]. 接着来看看Gallery证书下的语句行: <pre> #, fuzzy msgid "" msgstr "" </pre> 模糊的关键词告知你区块的翻译 不完整。但一旦更新了administration entry,就 可以移除"#, fuzzy"这一行以允许稍后翻译的 编译。 接下来你会看到一系列区块: <pre> #, c-format (<-- 在某些语句行中仅能看到这个) msgid "a message in english, with %d or %s tags in it" msgstr "" </pre> 你需要将英语消息的翻译置入 msgstr区块中,用引号括起来,例如: <pre> #, c-format msgid "a message in english, with %d or %s tags in it" msgstr "eine Anzeige auf englisch, mit %d oder %s etikettiert in ihr" </pre> 某些msgid值含有有助于进行翻译的提示信息: <pre> #. HINT: Button label for Bold msgid "B" msgstr "F" </pre> 注意提示内容不应翻译或包括在msgstr文本中。你可以使用[http://sourceforge.net/tracker/?func=browse&group_id=7130&atid=582564 翻译追踪器(Translations Tracker)]为特殊字串请求额外的提示文本。指定模块/外观主题以及msgid。注意<tt>strings.raw</tt>文件列出了用到msgid的文件。 在编辑这些消息之前,你确实应当将编辑器设为UTF-8模式, 这样编辑器才能使用正确的字符集。 如果你由于某种原因无法在UTF-8模式中进行编辑, 请考虑使用GNU的"recode"程序,在提交翻译内容给我们之前, 将其转为UTF-8(或者直接发给我们也许,我们会进行重新编码)。 如果你使用XEmacs的MULE(即多语言支持(MULtilanguagE)),你可以将一下内容添加到 ~/.xemacs/init.el中去 <pre> ; Enable Unicode support (via Mule-UCS) ; (require 'un-define) (set-coding-priority-list '(utf-8)) (set-coding-category-system 'utf-8 'utf-8) </pre> 当你编辑UTF-8的文件时,会有一些"u" 出现在屏幕底部状态条左侧。使用现有的 .po文件来看一看。 在进行一些翻译之后,来看看效果。运行: <pre> make install PO=de </pre> 它会将你的.po文件编译到一个.mo文件中,并将其安装到合适的位置。在修改.po文件之后,对各目录都要重复此步骤。如果你在创建locale目录时发生错误,请在运行make之前建立目录结构(如:modules/mymodule/locale/de/LC_MESSAGES)。 最后,你需要编辑modules/core/classes/GalleryTranslator.class,并在函数getLanguageData中加入如下语句: <pre> /* German */ $this->_supportedLanguages['de']['DE']['description'] = 'Deutsch'; $defaultCountry['de'] = 'DE'; </pre> 批注应为该语言的英语说法;语言 '描述'则应是该语言的本土说法。 现在登入G2,在用户偏好(你可能需要 通过站点管理对用户进行编辑)中,你应能在下拉列表中看到 German。而如果你选择了它,并以刚才那个用户的身份登入的话, 就能看到消息被翻译为该语言了。你还可以将语言选择器区块 添加到站点中,使用外观主题设定就可以做到。 '''注:''' 如果语言修改没有起效,请回顾一下[[Gallery:Language_Settings|语言设定]]的优先级(会话语言(Session language) > 用户偏好(user preferences) > 站点范围的默认语言(site wide default language))。如果有疑虑的话,可以使用语言区块或在用户偏好中反复尝试。 == 本地化的提交 == 现在本地化就应创建号了,你需要将其 打包并发送给我们,这样我们就能将其添入存储库。 最好的打包方式如下: <pre> cd gallery2 zip de.zip `find . -name de.po` </pre> or: <pre> cd gallery2 tar czf nl.tar.gz `find . -name nl.po` </pre> 你翻译过的文件会被做成zipfile或tarball。当然使用你自己的语言代码取代上面的de或nl。接着浏览SourceForge 的Gallery项目页面上的[http://sourceforge.net/tracker/?func=browse&group_id=7130&atid=582564 翻译追踪器]并点击"Submit New"按钮。将你的翻译放入"Gallery 2"组中,并将文件加入附件上传。如果你的翻译 过了几天还没有被采用的话,请上IRC(参见[[#Where_to_go_for_help!|帮助部分]])告知我们。 == 本地化的维护 == <pre> cd po make de.po (using German as an example) </pre> 这会从你所在的模块中提取出所有消息 并更新.po文件。浏览.po文件,找到所有具有 空msgstr或被标记为"模糊(fuzzy)"的区块并更新它们。在它们 被修复之后,移除fuzzy标识。你看到的标识会是如下的 样子: <pre> #, fuzzy #~ msgid "User" #~ msgstr "Gebruikersnaam" </pre> "#, fuzzy"表示它是模糊的,但"#~"表明该 字串不存在于G2中(我们可能将其删除或修改了 )。你可以删除这些内容. 你应当快速地做一次gettext提供的检查,以验证.po文件: msgfmt -v -c --stat de.po 当一切都设置好后,运行: <pre> make install PO=de </pre> 翻译文件被PHP缓存(这就是其快速的原因) 因此在重启web服务器之前,可能无法看到所作的修改。这是 有点麻烦,但我还没有想出好的解决办法。 参见[[#本地化的新建]|本地化的新建]]部分的测试信息,并向我们提交新文件。 == 何处寻求帮助?== 如果你需要帮助,有三个地方可以求助: ; The Gallery translations forums: : http://gallery.menalto.com/forum/74 ; The gallery-translations mailing list: : http://codex.gallery2.org/index.php/Mailing_Lists ; The Gallery IRC channel : #gallery on irc://chat.freenode.net == 翻译列表 == 所有可用的Gallery2翻译,都在此以字母表顺序列出了,带有维护者/作者名单。某些翻译100%保持更新并且完成,某些则仅完成了2%或过期了。参见 [http://gallery.menalto.com/localization/gallery2 本地化报告]。如果你有G2的开发者整合包,就可以运行{{exampleurl|/lib/tools/reports/localization.php}}来查看所有已安装翻译的状态。 {| class="gallery" style="background-color: #eee; width: 800px" |- ! align="left" width="200px" | 语言 ! align="left" | 语言代码 ! align="left" | 最后翻译者 ! align="left" | 翻译者列表 |- |Afrikaans Afrikaans |af |Renier |Renier |- |العربية Arabic |ar |Mohammad Saleh |Mohammad Saleh |- |Български Bulgarian |bg |Bisser Dobrev |Bisser Dobrev |- |Беларуская Belarusian |be |Alex Lavysh |Alex Lavysh |- |Català Catalan |ca_ES |Roger Cervantes |Juan Vega Aiguadé; Roger Cervantes |- |中国 Chinese [简体] |zh_CN |Wayne Zhang |Wayne Zhang |- |台灣 Chinese [繁體] |zh_TW |Stephen Chu |Stephen Chu |- |Česky Czech |cs |Jan Korbel |Jan Korbel |- |Dansk Danish |da |Jens Hyllegaard |Lasse Bang Mikkelsen, Allan Beaufour, Bjørn Graabek, Jens Hyllegaard |- |Deutsch German |de |Andy Staudacher |Jens Tkotz, Ernesto Baschny, Frederik Kunz, Georg Rehfeld, Bananeweizen, Moritz Stoltenburg |- |Ελληνικά Greek |el |Anthi Andreou |Nikos Batsis, Anthi Andreou |- |English [British] |en_GB |Stephen Ryan |Joan McGalliard, Alan Harder, Stephen Ryan |- |Español Spanish |es |Oscar Garcia Amor |Oscar Garcia Amor |- |Español de Argentina Spanish [Argentine] |es_AR |Alvaro Cortizo |Alvaro Cortizo |- |Español de Mexico Spanish [Mexican] |es_MX |Wieland E. Kublun |Wieland E. Kublun |- |Eesti Estonian |et |poromaan |poromaan |- |Euskera Basque |eu |Piarres Beobide |Piarres Beobide |- |فارسی Farsi |fa |Mohammad Samini |Jalal Kheradmand, Pedram Hayati, Mohammad Samini |- |Français French |fr |Arnaud MOURONVAL |Arnaud MOURONVAL |- |עברית Hebrew |he |Guy Sheffer |Guy Sheffer, Omri Amos |- |Irish Gaelic Irish |ga |Beckett Madden-Woods |Beckett Madden-Woods |- |Íslenska Icelandic |is |Johann S Jonsson |Johann S Jonsson |- |Italiano Italian |it |Ermanno Baschiera |Ermanno Baschiera |- |日本語 Japanese |ja |Kennichi Uehara |Kennichi Uehara, Yosuke Suzuki |- |한국말 Korean |ko |Juice |Juice |- |Latviešu Latvian |lv |Jānis Baiža |Jānis Baiža |- |Lietuvių Lithuanian |lt |Darius Žitkevičius |Darius Žitkevičius |- |Magyar Hungarian |hu |Sandor Dibuz |Gergely Dömsödi, József R.Nagy, Sandor Dibuz |- |Nederlands Dutch |nl |Marijke van Velsen |Marcel van Groenigen, Kees van den Broek, Arjen Gideonse, B. Scheijgrond, Marijke van Velsen |- |Norsk Bokmål Norwegian |no |Sverre M. Vikan |Frode Tviberg, Sverre M. Vikan, Jon Harald Carlsen, Robin Smidsrod (sponsored by [http://www.griegmultimedia.no Grieg Multimedia AS]), Terje Dahl |- |Polski Polish |pl |Kappana |Sebastian Marek, Kappana |- |Português Portuguese |pt |Francisco Neto |Hugo Cruz, Francisco Neto |- |Português Brasileiro Portuguese [Brazilian] |pt_BR |Paulino Michelazzo |Ernesto Baschny, José Ricardo, Celso Reeks, Paulino Michelazzo |- |Română Romanian |ro |Serban Constantintinescu |Serban Constantintinescu |- |Русский Russian |ru |Ser Moro |Konstantin Ivanov, modus, Ser Moro |- |Українська Ukrainian |uk |Anton Gladky |Yurii Smetana, Anton Gladky |- |Quốc Ngữ (國語) Vietnamese |vi |Trung Dong Huynh |Trung Dong Huynh |- |Suomea Finnish |fi |Jyrki Heinonen |Jussi Karppanen; Erkka Hakkarainen; Jyrki Heinonen |- |Srpski Serbian |sr |Jozef Selesi |Jozef Selesi |- |Slovenčina Slovak |sk |Branislav Hanacek |Branislav Hanacek |- |Slovenščina Slovenian |sl |Jure Babnik |Janez Troha, Jure Babnik |- |Svenska Swedish |sv |Anders Lindquist |Christian Wallin, Mikael Gustafsson, Peter Liversten, Hampus Nygren, Anders Lindquist |- |Türkçe Turkish |tr |Goker ISIK |Goker ISIK, Roman Neumüller |}
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)
本页使用的模板:
模板:Exampleurl
(
编辑
)