close

88國語言翻譯公司

維基百科,自由的百科全書
前往:導覽,搜尋
gettext
開發者 GNU專案
穩定版本 0.19.8.1(2016年6月11日,​9個月前​(2016-06-11
作業系統 跨平台
類型 軟體開發,翻譯
授權條款 LGPL(函式庫),GPL(工具),GFDL/GPL(文件)
網站 http://www.gnu.org/software/gettext/

gettext是GNU國際化與在地化(i18n)函式庫。它常被用於編寫多語言程式。

目錄

  • 1 開發
  • 2 翻譯
  • 3 執行
  • 4 參考
  • 5 另見
  • 6 外部連結

開發[編輯]

程式原始碼需要進行修改以回應GNU gettext請求翻譯多數程式語言均已通過字元封裝的方式實現了對其的支援。為了減少輸入量和代碼量,此功能通常以標記別名「_」的形式使用,所以例如以下C語言代碼:

printf(gettext("My name is %s.
"), my_name);

應當寫作:

printf(_("My name is %s.
"), my_name);

gettext使用其中的字串尋找對應的其他語言翻譯,若沒有可用翻譯則返回原始內容。

C語言外, GNU gettext還支援C++,Objective-C,Pascal/Object Pascal,sh指令碼,bash指令碼,Python,GNU CLISP,Emacs Lisp,librep,GNU Smalltalk,Java,GNU awk,wxWidgets(通過wxLocale類),YCP(YaST2語言),Tcl,Perl,PHP,Pike,Ruby以及R翻譯用法均與在C語言上類似。

xgettext程式從原始碼生成.pot檔案,作為原始碼中需翻譯內容的模板。一個典型的.pot檔案條目應當是這樣的:

#: src/name.c:36
msgid "My name is %s.
"
msgstr ""

注釋被直接放置在字串前,用於幫助翻譯者理解待翻譯內容:

/// TRANSLATORS: Please leave %s as it is翻譯社 because it is needed by the program.
/// Thank you for contributing to this project.
printf(_("My name is %s.
"), my_name);

本例中的注釋是以 ///開頭的,其作用是用於xgettext程式生成.pot模板檔案翻譯

xgettext --add-comments=///

在.pot檔案中的注釋應為以下形式:

#. TRANSLATORS: Please leave %s as it is翻譯社 because it is needed by the program.
#. Thank you for contributing to this project. 
#: src/name.c:36
msgid "My name is %s.
"
msgstr ""

翻譯[編輯]

翻譯者需要工作的物件是.po檔案,它是由msginit程式從.pot模板檔案生成的。例如使用msginit初始化法語翻譯檔案時,萬國翻譯社們執行以下命令:

msginit --locale=fr --input=name.pot

這將會使用指定的name.pot在當前目錄建立一個fr.po,其中的一個條目應該是以下形式的:

 #: src/name.c:36
 msgid "My name is %s.
"
 msgstr ""

翻譯者需要手工或使用類似Poedit、gtranslator、OmegaT或Emacs等工具的相應模式編輯該檔案。翻譯完成後,檔案應為如下的樣子:

 #: src/name.c:36
 msgid "My name is %s.
"
 msgstr "Je m'appelle %s.
"

最後.po檔案需要使用msgfmt編譯為.mo檔案以用作釋出。

執行[編輯]

使用Unix類型作業系統的用戶只需設定環境變數中的LC_MESSAGES(但是ubuntu linux 是用LANG),程式將自動從相應的.mo檔案中讀取語言資訊。

參考[編輯]

另見[編輯]

外部連結[編輯]

  • Gettext首頁
  • 使用gettext在地化PHP網站 - 解些和範例。
  • Gettext Commons - Java gettext工具集
  • Autotools教程
  • gted - GetText EDitor和工具整合
  • Gorm PO檔案編輯器
  • Windows 下的對應函式為 LoadString,直接讀取適合當前 locale/lcid 設定的資源字串

引用自: https://zh.wikipedia.org/wiki/Gettext
有關翻譯的問題歡迎諮詢

arrow
arrow
    創作者介紹
    創作者 armstrjg1p8 的頭像
    armstrjg1p8

    armstrjg1p8@outlook.com

    armstrjg1p8 發表在 痞客邦 留言(0) 人氣()