WIKI使用導航
站長百科導航
站長專題
- 網(wǎng)站推廣
- 網(wǎng)站程序
- 網(wǎng)站賺錢
- 虛擬主機
- cPanel
- 網(wǎng)址導航專題
- 云計算
- 微博營銷
- 虛擬主機管理系統(tǒng)
- 開放平臺
- WIKI程序與應用
- 美國十大主機
Gallery: 本地化:修訂間差異
Firebrance(討論 | 貢獻) (→?本地化的新建) |
Firebrance(討論 | 貢獻) 無編輯摘要 |
||
第206行: | 第206行: | ||
'描述'則應是該語言的本土說法。 | '描述'則應是該語言的本土說法。 | ||
現(xiàn)在登入G2,在用戶偏好(你可能需要 | |||
通過站點管理對用戶進行編輯)中,你應能在下拉列表中看到 | |||
German。而如果你選擇了它,并以剛才那個用戶的身份登入的話, | |||
就能看到消息被翻譯為該語言了。你還可以將語言選擇器區(qū)塊 | |||
添加到站點中,使用外觀主題設定就可以做到。 | |||
''' | '''注:''' 如果語言修改沒有起效,請回顧一下[[Gallery2:Language_Settings|語言設定]]的優(yōu)先級(會話語言(Session language) > 用戶偏好(user preferences) > 站點范圍的默認語言(site wide default language))。如果有疑慮的話,可以使用語言區(qū)塊或在用戶偏好中反復嘗試。 | ||
== 本地化的提交 == | == 本地化的提交 == | ||
現(xiàn)在本地化就應創(chuàng)建號了,你需要將其 | |||
打包并發(fā)送給我們,這樣我們就能將其添入存儲庫。 | |||
最好的打包方式如下: | |||
<pre> | <pre> | ||
第231行: | 第231行: | ||
</pre> | </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!|幫助部分]])告知我們。 | |||
== 本地化的維護 == | == 本地化的維護 == | ||
第241行: | 第241行: | ||
</pre> | </pre> | ||
這會從你所在的模塊中提取出所有消息 | |||
并更新.po文件。瀏覽.po文件,找到所有具有 | |||
空msgstr或被標記為"模糊(fuzzy)"的區(qū)塊并更新它們。在它們 | |||
被修復之后,移除fuzzy標識。你看到的標識會是如下的 | |||
樣子: | |||
<pre> | <pre> | ||
第253行: | 第253行: | ||
</pre> | </pre> | ||
"#, fuzzy"表示它是模糊的,但"#~"表明該 | |||
字串不存在于G2中(我們可能將其刪除或修改了 | |||
)。你可以刪除這些內(nèi)容. | |||
你應當快速地做一次gettext提供的檢查,以驗證.po文件: | |||
? msgfmt -v -c --stat de.po | ? msgfmt -v -c --stat de.po | ||
當一切都設置好后,運行: | |||
<pre> | <pre> | ||
第266行: | 第266行: | ||
</pre> | </pre> | ||
翻譯文件被PHP緩存(這就是其快速的原因) | |||
因此在重啟web服務器之前,可能無法看到所作的修改。這是 | |||
有點麻煩,但我還沒有想出好的解決辦法。 | |||
參見[[#本地化的新建]|本地化的新建]]部分的測試信息,并向我們提交新文件。 | |||
== 何處尋求幫助?== | == 何處尋求幫助?== | ||
如果你需要幫助,有三個地方可以求助: | |||
; The Gallery translations forums: | ; The Gallery translations forums: | ||
第286行: | 第286行: | ||
== 翻譯列表 == | == 翻譯列表 == | ||
所有可用的Gallery2翻譯,都在此以字母表順序列出了,帶有維護者/作者名單。某些翻譯100%保持更新并且完成,某些則僅完成了2%或過期了。參見 [http://gallery.menalto.com/localization/gallery2 本地化報告]。如果你有G2的開發(fā)者整合包,就可以運行{{exampleurl|/lib/tools/reports/localization.php}}來查看所有已安裝翻譯的狀態(tài)。 | |||
{| class="gallery" style="background-color: #eee; width: 800px" | {| class="gallery" style="background-color: #eee; width: 800px" | ||
|- | |- | ||
! align="left" width="200px" | | ! align="left" width="200px" | 語言 | ||
! align="left" | | ! align="left" | 語言代碼 | ||
! align="left" | | ! align="left" | 最后翻譯者 | ||
! align="left" | | ! align="left" | 翻譯者列表 | ||
|- | |- | ||
|Afrikaans | |Afrikaans | ||
第326行: | 第326行: | ||
|- | |- | ||
|中國 | |中國 | ||
Chinese [ | Chinese [簡體] | ||
|zh_CN | |zh_CN | ||
|Wayne Zhang | |Wayne Zhang | ||
第332行: | 第332行: | ||
|- | |- | ||
|臺灣 | |臺灣 | ||
Chinese [ | Chinese [繁體] | ||
|zh_TW | |zh_TW | ||
|Stephen Chu | |Stephen Chu |
2008年10月25日 (六) 15:24的版本
Gallery2的本地化
綜述
Gallery是國際化的。不對特定語言文本消息的包含, 取而代之地,它使用特殊的方法追蹤文本 以進行抽取并翻譯成其他語言。用戶則會看見 文本被翻譯成他們使用的語言版本。
為了能夠讓用戶看到Gallery文本的本地化版本, 就需要先將這些Gallery要顯示的文本消息進行 翻譯。此過程就被稱為"本地化"。
這里我們嘗試說明一下如何創(chuàng)建并維護G2中本地化 文件的內(nèi)容。這并不是特別困難的任務, 但要求無論何時基礎內(nèi)容有改變,我們都要保證 各類文件的更新度。我們挺幸運的,因為有這樣的工具能 協(xié)助我們完成此類操作過程。
要求
為了能夠有效率地進行,你需要在計算機上 安裝一些工具。我僅在FreeBSD box中做了測試,但我想如果用在Linux,Solaris或其他Unix類系統(tǒng) 上也不會太麻煩。在Windows上可能會有些難度, 但也是有可能實現(xiàn)的。 以下為必須安裝,并在你的路徑中:
- 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文件創(chuàng)建最新的翻譯。就目前的SVN或nightly快照版的運行情況都不錯。最新的G2開發(fā)者版本也能運行,但某些翻譯的字串可能有些過時了。
本地化的新建
瀏覽一下Gallery就能發(fā)現(xiàn)不少名為"po"的目錄。("po"是一gettext術語,即"可移植對象(portable object)")。以下為找到它們的一個方法:
find . -type d -name po <-- 輸入這個 ./themes/matrix/po <-- 會看到這個 ./lib/tools/po ./modules/core/po ./modules/comment/po ./modules/netpbm/po ** 忽略"lib/tools/po"目錄。
這些目錄還有翻譯源文件。你要 使用合適的語言代碼來新建文件,接著在它們之中 添入經(jīng)過翻譯的文本。首先要做的就是從 下面的兩個表格中識別出正確的代碼:
- 語言代碼
- 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)
In most cases you will need just the language code, such as "de" for German. To provide country specific translations for a language used in multiple countries you can use a code in the format xx_XX, such as "pt_BR" for Portuguese/Brazil. If you are unsure which to use, include both language and country. If you find a translation for your language already exists then move on to Maintaining a localization.
Once you've chosen the code, you need to create a new .po file for your code. Let's assume that you chose "de". For each po directory, you need to do this:
make de.po
This will find all text that is marked for localization ({g->text} in tpl files, translate() or i18n() in php code) and create a po file that is ready to be translated.
有關文本編輯器。
- 有一些工具可以處理.po文件:
- poEdit(多平臺)
- KBabel(Unix KDE)
- GTranslator(Unix Gnome)
- Emacs with po-mode(多平臺)
- Vim with PO plug-in(多平臺)
我比較喜歡用XEmacs,因此我會 在下面的例子中拿XEmacs做例子。如果你有其他編輯器 的使用指導,請分享一下。XEmacs的主要模式被稱為"po-模式",如果你安裝了它,在編輯.po文件時就會 自動轉入。我在這里不準備這么做,但 你可以嘗試一下。
現(xiàn)在我們來編輯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字符集。因為它允許我們在同一頁面上對多個語言進行渲染,這對某一語言站點頁面上其他語言的用戶評論是有好處的。
這里有modules/core/po/de.po的完整的header樣例。注意編寫者是如何維護前任翻譯者名單的。
# 前任翻譯者(迄今所知,如有脫漏,請在此添加): # - 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"
如果你的語言中不包含復數(shù)詞用法,如漢語或土耳其語,就得修改以下語句:
"Plural-Forms: nplurals=2; plural=(n != 1);\n" -> Change to "Plural-Forms: nplurals=1; plural=0;\n".
這樣,你只需翻譯msgstr[0]并注釋掉或移除msgstr [1].
接著來看看Gallery證書下的語句行:
#, fuzzy msgid "" msgstr ""
模糊的關鍵詞告知你區(qū)塊的翻譯 不完整。但一旦更新了administration entry,就 可以移除"#, fuzzy"這一行以允許稍后翻譯的 編譯。
接下來你會看到一系列區(qū)塊:
#, c-format (<-- 在某些語句行中僅能看到這個) msgid "a message in english, with %d or %s tags in it" msgstr ""
你需要將英語消息的翻譯置入 msgstr區(qū)塊中,用引號括起來,例如:
#, 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值含有有助于進行翻譯的提示信息:
#. HINT: Button label for Bold msgid "B" msgstr "F"
注意提示內(nèi)容不應翻譯或包括在msgstr文本中。你可以使用翻譯追蹤器(Translations Tracker)為特殊字串請求額外的提示文本。指定模塊/外觀主題以及msgid。注意strings.raw文件列出了用到msgid的文件。
在編輯這些消息之前,你確實應當將編輯器設為UTF-8模式, 這樣編輯器才能使用正確的字符集。 如果你由于某種原因無法在UTF-8模式中進行編輯, 請考慮使用GNU的"recode"程序,在提交翻譯內(nèi)容給我們之前, 將其轉為UTF-8(或者直接發(fā)給我們也許,我們會進行重新編碼)。
如果你使用XEmacs的MULE(即多語言支持(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)
當你編輯UTF-8的文件時,會有一些"u" 出現(xiàn)在屏幕底部狀態(tài)條左側。使用現(xiàn)有的 .po文件來看一看。
在進行一些翻譯之后,來看看效果。運行:
make install PO=de
它會將你的.po文件編譯到一個.mo文件中,并將其安裝到合適的位置。在修改.po文件之后,對各目錄都要重復此步驟。如果你在創(chuàng)建locale目錄時發(fā)生錯誤,請在運行make之前建立目錄結構(如:modules/mymodule/locale/de/LC_MESSAGES)。
最后,你需要編輯modules/core/classes/GalleryTranslator.class,并在函數(shù)getLanguageData中加入如下語句:
/* German */ $this->_supportedLanguages['de']['DE']['description'] = 'Deutsch'; $defaultCountry['de'] = 'DE';
批注應為該語言的英語說法;語言 '描述'則應是該語言的本土說法。
現(xiàn)在登入G2,在用戶偏好(你可能需要 通過站點管理對用戶進行編輯)中,你應能在下拉列表中看到 German。而如果你選擇了它,并以剛才那個用戶的身份登入的話, 就能看到消息被翻譯為該語言了。你還可以將語言選擇器區(qū)塊 添加到站點中,使用外觀主題設定就可以做到。
注: 如果語言修改沒有起效,請回顧一下語言設定的優(yōu)先級(會話語言(Session language) > 用戶偏好(user preferences) > 站點范圍的默認語言(site wide default language))。如果有疑慮的話,可以使用語言區(qū)塊或在用戶偏好中反復嘗試。
本地化的提交
現(xiàn)在本地化就應創(chuàng)建號了,你需要將其 打包并發(fā)送給我們,這樣我們就能將其添入存儲庫。 最好的打包方式如下:
cd gallery2 zip de.zip `find . -name de.po`
or:
cd gallery2 tar czf nl.tar.gz `find . -name nl.po`
你翻譯過的文件會被做成zipfile或tarball。當然使用你自己的語言代碼取代上面的de或nl。接著瀏覽SourceForge 的Gallery項目頁面上的幫助部分)告知我們。
本地化的維護
cd po make de.po (using German as an example)
這會從你所在的模塊中提取出所有消息 并更新.po文件。瀏覽.po文件,找到所有具有 空msgstr或被標記為"模糊(fuzzy)"的區(qū)塊并更新它們。在它們 被修復之后,移除fuzzy標識。你看到的標識會是如下的 樣子:
#, fuzzy #~ msgid "User" #~ msgstr "Gebruikersnaam"
"#, fuzzy"表示它是模糊的,但"#~"表明該 字串不存在于G2中(我們可能將其刪除或修改了 )。你可以刪除這些內(nèi)容.
你應當快速地做一次gettext提供的檢查,以驗證.po文件:
msgfmt -v -c --stat de.po
當一切都設置好后,運行:
make install PO=de
翻譯文件被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%或過期了。參見 本地化報告。如果你有G2的開發(fā)者整合包,就可以運行http://www.example.com/gallery/lib/tools/reports/localization.php來查看所有已安裝翻譯的狀態(tài)。
語言 | 語言代碼 | 最后翻譯者 | 翻譯者列表 |
---|---|---|---|
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 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 |
Roman?
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 |