gettext 基本範例
測試環境
- Ubuntu 14.04
程式碼
example/i18n/gettext/basic/main.js
#!/usr/bin/gjs
const GLib = imports.gi.GLib;
const GetText = imports.gettext;
const _ = GetText.gettext;
const _Package = 'vlc';
GetText.bindtextdomain(_Package, '/usr/share/locale');
GetText.textdomain(_Package);
print('===== locale =====');
print('LANG: \t\t\t', GLib.getenv('LANG'));
print('LANGUAGE: \t\t', GLib.getenv('LANGUAGE'));
print('LC_ALL: \t\t', GLib.getenv('LC_ALL'));
print('===== text =====');
print(_('File'));
example/i18n/gettext/basic/zh_TW.sh
#!/bin/sh
export LANG=zh_TW.UTF-8
export LANGUAGE=zh_TW.UTF-8
export LC_ALL=zh_TW.UTF-8
./main.js
example/i18n/gettext/basic/zh_CN.sh
#!/bin/sh
export LANG=zh_CN.UTF-8
export LANGUAGE=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
./main.js
example/i18n/gettext/basic/en_US.sh
#!/bin/sh
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
./main.js
測試
zh_TW
請確保「/usr/share/locale/zh_TW/LC_MESSAGES/vlc.mo」這個檔存在。
請確保「locale -a | grep zh_TW.utf8 」會顯示「zh_TW.utf8」。
然後執行
$ ./zh_TW.sh
顯示
===== locale =====
LANG: zh_TW.UTF-8
LANGUAGE: zh_TW.UTF-8
LC_ALL: zh_TW.UTF-8
===== text =====
檔案
請對照「Github / videolan / vlc / po / zh_TW.po」這裡的翻譯。
會看到
msgid "File"
msgstr "檔案"
zh_CN
請確保「/usr/share/locale/zh_CN/LC_MESSAGES/vlc.mo」這個檔存在。
請確保「locale -a | grep zh_CN.utf8 」會顯示「zh_CN.utf8」。
然後執行
$ ./zh_CN.sh
顯示
===== locale =====
LANG: zh_CN.UTF-8
LANGUAGE: zh_CN.UTF-8
LC_ALL: zh_CN.UTF-8
===== text =====
文件
請對照「Github / videolan / vlc / po / zh_CN.po」這裡的翻譯。
會看到
msgid "File"
msgstr "文件"
en_US
執行
$ ./en_US.sh
顯示
===== locale =====
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
LC_ALL: en_US.UTF-8
===== text =====
File
注意事項
mo檔是否存在
若是「/usr/share/locale/zh_TW/LC_MESSAGES/vlc.mo」 或是「/usr/share/locale/zh_CN/LC_MESSAGES/vlc.mo」 不存在。
執行下面的指令安裝「vlc-data」這個套件
$ sudo apt-get install vlc-data
若有安裝「vlc-data」這個套件
執行
$ dpkg -S /usr/share/locale/zh_TW/LC_MESSAGES/vlc.mo
顯示
vlc-data: /usr/share/locale/zh_TW/LC_MESSAGES/vlc.mo
執行
$ dpkg -S /usr/share/locale/zh_CN/LC_MESSAGES/vlc.mo
顯示
vlc-data: /usr/share/locale/zh_CN/LC_MESSAGES/vlc.mo
locale是否支援
zh_TW
執行「locale -a | grep zh_TW.utf8 」若是沒有顯示「zh_TW.utf8」。
請執行
$ sudo locale-gen zh_TW.UTF-8
再執行
locale -a | grep zh_TW.utf8
就會顯示
zh_TW.utf8
在「/var/lib/locales/supported.d/local」這個檔
$ cat /var/lib/locales/supported.d/local | grep zh_TW
也會看到新加入一行
zh_TW.UTF-8 UTF-8
所以上面的方式,也可以改成直接在「/var/lib/locales/supported.d/local」加入一行「zh_TW.UTF-8 UTF-8」
然後執行
$ sudo locale-gen
或是
$ sudo locale-gen --purge
zh_CN
執行「locale -a | grep zh_CN.utf8 」若是沒有顯示「zh_CN.utf8」。
請執行
$ sudo locale-gen zh_CN.UTF-8
其餘的參照上面「zh_TW」的作法
更多參考
- Github / GNOME / gjs / examples / gettext.js
- Github / GNOME / gjs / modules / gettext.js
- Wiki / gettext
- Tsung's Blog / Ubuntu 9.10 增加 / 設定 語系(Locale)
- Tsung's Blog / 使用 gettext 來實做 PHP 多國語系支援(I18N)
- 石頭閒語 / gjs - 中文字的處理
- 石頭閒語 / PHP 網頁訊息國際化與 gettext 使用經驗
- 石頭閒語 / Vala with GNU gettext
Manual
- man locale
- man locale-gen
相關檔案
- /var/lib/locales/supported.d/local
- /usr/lib/locale/locale-archive
- /etc/default/locale