久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

Gallery:本地化

來(lái)自站長(zhǎng)百科
(重定向自Gallery:Localization
跳轉(zhuǎn)至: 導(dǎo)航、? 搜索

Gallery2的本地化[ ]

綜述[ ]

Gallery是國(guó)際化的。不對(duì)特定語(yǔ)言文本消息的包含, 取而代之地,它使用特殊的方法追蹤文本 以進(jìn)行抽取并翻譯成其他語(yǔ)言。用戶則會(huì)看見 文本被翻譯成他們使用的語(yǔ)言版本。

為了能夠讓用戶看到Gallery文本的本地化版本, 就需要先將這些Gallery要顯示的文本消息進(jìn)行 翻譯。此過(guò)程就被稱為"本地化"。

這里我們嘗試說(shuō)明一下如何創(chuàng)建并維護(hù)G2中本地化 文件的內(nèi)容。這并不是特別困難的任務(wù), 但要求無(wú)論何時(shí)基礎(chǔ)內(nèi)容有改變,我們都要保證 各類文件的更新度。我們挺幸運(yùn)的,因?yàn)橛羞@樣的工具能 協(xié)助我們完成此類操作過(guò)程。

要求[ ]

為了能夠有效率地進(jìn)行,你需要在計(jì)算機(jī)上 安裝一些工具。我僅在FreeBSD box中做了測(cè)試,但我想如果用在Linux,Solaris或其他Unix類系統(tǒng) 上也不會(huì)太麻煩。在Windows上可能會(huì)有些難度, 但也是有可能實(shí)現(xiàn)的。 以下為必須安裝,并在你的路徑中:

gettext
http://www.gnu.org/software/gettext/
gmake (或make)
http://www.gnu.org/software/make/make.html
php二進(jìn)制
http://php.net
perl
http://perl.com

:如果你使用FreeBSD,并希望能取代make而使用gmake,因?yàn)镕reeBSD的默認(rèn)不與GNU兼容。

你還需要用當(dāng)前G2文件創(chuàng)建最新的翻譯。就目前的SVN或nightly快照版的運(yùn)行情況都不錯(cuò)。最新的G2開發(fā)者版本也能運(yùn)行,但某些翻譯的字串可能有些過(guò)時(shí)了。

本地化的新建[ ]

瀏覽一下Gallery就能發(fā)現(xiàn)不少名為"po"的目錄。("po"是一gettext術(shù)語(yǔ),即"可移植對(duì)象(portable object)")。以下為找到它們的一個(gè)方法:

find . -type d -name po			<-- 輸入這個(gè)

./themes/matrix/po	          	<-- 會(huì)看到這個(gè)
./lib/tools/po
./modules/core/po
./modules/comment/po
./modules/netpbm/po

** 忽略"lib/tools/po"目錄。

這些目錄還有翻譯源文件。你要 使用合適的語(yǔ)言代碼來(lái)新建文件,接著在它們之中 添入經(jīng)過(guò)翻譯的文本。首先要做的就是從 下面的兩個(gè)表格中識(shí)別出正確的代碼:

語(yǔ)言代碼
http://www.gnu.org/software/gettext/manual/html_mono/gettext.html#SEC221
(or http://ftp.ics.uci.edu/pub/ietf/http/related/iso639.txt)
國(guó)家代碼
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)

在大多數(shù)情況下,你只需要語(yǔ)言代碼即可,如德語(yǔ)就是"de"。要為多個(gè)國(guó)家中提供特定國(guó)家語(yǔ)言的翻譯,你可以使用這樣的代碼格式,xx_XX,例如"pt_BR"表示葡萄牙語(yǔ)/巴西。如果你確定該用哪一個(gè),包括語(yǔ)言和國(guó)家。如果你發(fā)現(xiàn)已有你使用語(yǔ)言的翻譯的話,請(qǐng)接著看 本地化的維護(hù)。

一旦選好了代碼,就需要為你的代碼新建一個(gè).po 文件。假定你選擇是的"de"。那么對(duì)各po目錄, 你需要做的是:

make de.po

這將找到該本地化標(biāo)記的所有文本(tpl文件中的{g->text},php代碼中的translate()或i18n()),并創(chuàng)建一個(gè)即將進(jìn)行翻譯的po文件。

有關(guān)文本編輯器。

我比較喜歡用XEmacs,因此我會(huì) 在下面的例子中拿XEmacs做例子。如果你有其他編輯器 的使用指導(dǎo),請(qǐng)分享一下。XEmacs的主要模式被稱為"po-模式",如果你安裝了它,在編輯.po文件時(shí)就會(huì) 自動(dòng)轉(zhuǎn)入。我在這里不準(zhǔn)備這么做,但 你可以嘗試一下。

現(xiàn)在我們來(lái)編輯de.po。在其頂部應(yīng)有Gallery的證書。你需要對(duì)以下值做自定義:

Last-Translator
將你的名字及email以此格式輸入:"FirstName LastName <email@address>"
Language-Team
輸入語(yǔ)言及-翻譯郵件列表,如"German <gallery-translations@lists.sourceforge.net>"
Content-Type
將此設(shè)置給"Content-Type:text/plain; charset=UTF-8\n"
我們希望你使用UTF-8字符集。因?yàn)樗试S我們?cè)谕豁?yè)面上對(duì)多個(gè)語(yǔ)言進(jìn)行渲染,這對(duì)某一語(yǔ)言站點(diǎn)頁(yè)面上其他語(yǔ)言的用戶評(píng)論是有好處的。

這里有modules/core/po/de.po的完整的header樣例。注意編寫者是如何維護(hù)前任翻譯者名單的。

# 前任翻譯者(迄今所知,如有脫漏,請(qǐng)?jiān)诖颂砑樱?# - 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"

如果你的語(yǔ)言中不包含復(fù)數(shù)詞用法,如漢語(yǔ)或土耳其語(yǔ),就得修改以下語(yǔ)句:

"Plural-Forms: nplurals=2; plural=(n != 1);\n"
    -> Change to "Plural-Forms: nplurals=1; plural=0;\n".

這樣,你只需翻譯msgstr[0]并注釋掉或移除msgstr [1].

接著來(lái)看看Gallery證書下的語(yǔ)句行:

#, fuzzy
msgid ""
msgstr ""

模糊的關(guān)鍵詞告知你區(qū)塊的翻譯 不完整。但一旦更新了administration entry,就 可以移除"#, fuzzy"這一行以允許稍后翻譯的 編譯。

接下來(lái)你會(huì)看到一系列區(qū)塊:

#, c-format		(<-- 在某些語(yǔ)句行中僅能看到這個(gè))
msgid "a message in english, with %d or %s tags in it"
msgstr ""

你需要將英語(yǔ)消息的翻譯置入 msgstr區(qū)塊中,用引號(hào)括起來(lái),例如:

#, 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"

某些msgid值含有有助于進(jìn)行翻譯的提示信息:

#. HINT: Button label for Bold
msgid "B"
msgstr "F"

注意提示內(nèi)容不應(yīng)翻譯或包括在msgstr文本中。你可以使用翻譯追蹤器(Translations Tracker)為特殊字串請(qǐng)求額外的提示文本。指定模塊/外觀主題以及msgid。注意strings.raw文件列出了用到msgid的文件。

在編輯這些消息之前,你確實(shí)應(yīng)當(dāng)將編輯器設(shè)為UTF-8模式, 這樣編輯器才能使用正確的字符集。 如果你由于某種原因無(wú)法在UTF-8模式中進(jìn)行編輯, 請(qǐng)考慮使用GNU的"recode"程序,在提交翻譯內(nèi)容給我們之前, 將其轉(zhuǎn)為UTF-8(或者直接發(fā)給我們也許,我們會(huì)進(jìn)行重新編碼)。

如果你使用XEmacs的MULE(即多語(yǔ)言支持(MULtilanguagE)),你可以將一下內(nèi)容添加到 ~/.xemacs/init.el中去

; Enable Unicode support (via Mule-UCS)
;
(require 'un-define)
(set-coding-priority-list '(utf-8))
(set-coding-category-system 'utf-8 'utf-8)

當(dāng)你編輯UTF-8的文件時(shí),會(huì)有一些"u" 出現(xiàn)在屏幕底部狀態(tài)條左側(cè)。使用現(xiàn)有的 .po文件來(lái)看一看。

在進(jìn)行一些翻譯之后,來(lái)看看效果。運(yùn)行:

make install PO=de

它會(huì)將你的.po文件編譯到一個(gè).mo文件中,并將其安裝到合適的位置。在修改.po文件之后,對(duì)各目錄都要重復(fù)此步驟。如果你在創(chuàng)建locale目錄時(shí)發(fā)生錯(cuò)誤,請(qǐng)?jiān)谶\(yùn)行make之前建立目錄結(jié)構(gòu)(如:modules/mymodule/locale/de/LC_MESSAGES)。

最后,你需要編輯modules/core/classes/GalleryTranslator.class,并在函數(shù)getLanguageData中加入如下語(yǔ)句:

/* German */
$this->_supportedLanguages['de']['DE']['description'] = 'Deutsch';
$defaultCountry['de'] = 'DE';

批注應(yīng)為該語(yǔ)言的英語(yǔ)說(shuō)法;語(yǔ)言 '描述'則應(yīng)是該語(yǔ)言的本土說(shuō)法。

現(xiàn)在登入G2,在用戶偏好(你可能需要 通過(guò)站點(diǎn)管理對(duì)用戶進(jìn)行編輯)中,你應(yīng)能在下拉列表中看到 German。而如果你選擇了它,并以剛才那個(gè)用戶的身份登入的話, 就能看到消息被翻譯為該語(yǔ)言了。你還可以將語(yǔ)言選擇器區(qū)塊 添加到站點(diǎn)中,使用外觀主題設(shè)定就可以做到。

注: 如果語(yǔ)言修改沒有起效,請(qǐng)回顧一下語(yǔ)言設(shè)定的優(yōu)先級(jí)(會(huì)話語(yǔ)言(Session language) > 用戶偏好(user preferences) > 站點(diǎn)范圍的默認(rèn)語(yǔ)言(site wide default language))。如果有疑慮的話,可以使用語(yǔ)言區(qū)塊或在用戶偏好中反復(fù)嘗試。

本地化的提交[ ]

現(xiàn)在本地化就應(yīng)創(chuàng)建號(hào)了,你需要將其 打包并發(fā)送給我們,這樣我們就能將其添入存儲(chǔ)庫(kù)。 最好的打包方式如下:

cd gallery2
zip de.zip `find . -name de.po`

or:

cd gallery2
tar czf nl.tar.gz `find . -name nl.po`

你翻譯過(guò)的文件會(huì)被做成zipfile或tarball。當(dāng)然使用你自己的語(yǔ)言代碼取代上面的de或nl。接著瀏覽SourceForge 的Gallery項(xiàng)目頁(yè)面上的幫助部分)告知我們。

本地化的維護(hù)[ ]

cd po
make de.po	(using German as an example)

這會(huì)從你所在的模塊中提取出所有消息 并更新.po文件。瀏覽.po文件,找到所有具有 空msgstr或被標(biāo)記為"模糊(fuzzy)"的區(qū)塊并更新它們。在它們 被修復(fù)之后,移除fuzzy標(biāo)識(shí)。你看到的標(biāo)識(shí)會(huì)是如下的 樣子:

#, fuzzy
#~ msgid "User"
#~ msgstr "Gebruikersnaam"

"#, fuzzy"表示它是模糊的,但"#~"表明該 字串不存在于G2中(我們可能將其刪除或修改了 )。你可以刪除這些內(nèi)容.

你應(yīng)當(dāng)快速地做一次gettext提供的檢查,以驗(yàn)證.po文件:

msgfmt -v -c --stat de.po

當(dāng)一切都設(shè)置好后,運(yùn)行:

make install PO=de

翻譯文件被PHP緩存(這就是其快速的原因) 因此在重啟web服務(wù)器之前,可能無(wú)法看到所作的修改。這是 有點(diǎn)麻煩,但我還沒有想出好的解決辦法。

參見[[#本地化的新建]|本地化的新建]]部分的測(cè)試信息,并向我們提交新文件。

何處尋求幫助?[ ]

如果你需要幫助,有三個(gè)地方可以求助:

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翻譯,都在此以字母表順序列出了,帶有維護(hù)者/作者名單。某些翻譯100%保持更新并且完成,某些則僅完成了2%或過(guò)期了。參見 本地化報(bào)告。如果你有G2的開發(fā)者整合包,就可以運(yùn)行http://www.example.com/gallery/lib/tools/reports/localization.php來(lái)查看所有已安裝翻譯的狀態(tài)。