要在 Windows 使用 xgettext, msgmerge, msgfmt ... 等, 要安裝哪些東西?
Windows 的 GetText 工具安裝
- 於 GetText for Windows 下載 Binaries 版, 安裝即可. (假設安裝於 C:\gettext)
GetText 所需相關 Library 安裝
- 上述套件下載後, 於 Windows XP 會缺下述兩個 Library:
- libexpat.dll
- libiconv2.dll
- 可自行去尋找, 或者 直接下載 我抓好的版本 : gettext-dll.tgz
- 將這兩個檔案放到 C:\gettext\bin\ 即可.
GetText 工具使用
- C:\gettext\bin\xgettext.exe --from-code=UTF-8 -d hello hello.php
- C:\gettext\bin\msgmerge.exe -o hello.po locale/zh_TW/LC_MESSAGES/hello.po hello.po
- C:\gettext\bin\msgfmt.exe -o locale/zh_TW/LC_MESSAGES/hello.mo hello.po
详细的过程,让我迅速的上手
xgettext.exe
msgmerge.exe
msgfmt.exe
可以对上述运用的参数做个简要说明呢?
工具使用的顺序2,3应该调换一下吧
msgfmt.exe: hello.po: warning: Charset "CHARSET" is not a portable encoding name
.
Message conversion to user's charset might not wo
rk.
运行msgfmt.exe时,产生如上警告,不知道是否有影响?
第一步xgettext.exe产生po文件
第二步msgfmt.exe产生mo文件
不知道第三步有什么作用哦,感觉po文件都是同一个啊?
而且看到你描述的“gettext 看的是 mo 檔, 不是 po 檔 :)”
xgettext.exe : 把文字抽成 po 檔
msgmerge.exe : 把抽出來的 po 檔 和你之前翻譯的 po 檔 merge
msgfmt.exe: 把 CHARSET 設好一次, 以後 merge 後, 就不會警告了. po 檔是給你翻譯用, mo 檔是機器在看, msgfmt 就是做 po -> mo 轉換.
msgmerge.exe : 把抽出來的 po 檔 和你之前翻譯的 po 檔 merge
请问为什么要合并呢?
msgfmt.exe: 把 CHARSET 設好一次, 以後 merge 後, 就不會警告了. po 檔是給你翻譯用, mo 檔是機器在看, msgfmt 就是做 po -> mo 轉換.
请问如何设置charset
你翻譯好第一次, 然後試試看要翻第二次, 你會怎麼做?
會跑 xgettext.ext, 但是抓出來的東西都是空的, 所以會需要把你之前翻譯得做合併.
CHARSET 就進去改, 設 UTF-8 之類, 就看你的語系編碼而定.
我在WindowsXP SP3,简体中文环境下,locale如何设置,_("")值都是原值,请问如何处理?
你要去翻譯 po 檔~
請問hello.php檔要存在哪個資料夾??
放哪邊都可以, 一般都放在你要呈現網頁的地方. 🙂