1、在window與linux下的多語言切換有些區別,主要putenv的設定區別。
在window下echo setlocale('lang=zh_cn'),而在linux下如果支援該語言,則會輸出設定的內容
windows的php**:
<?php//translate();
// include_once 'include/setlan.php';
echo
putenv('lang=zh_cn') . "--------------";
echo
setlocale(lc_all, 'zh_cn');
$domain = 'translate'; //
網域名稱,可以任意取個有意義的名字,不過要跟相應的.mo檔案的檔名相同(不包括副檔名)。
echo bindtextdomain("translate", dirname(__file__) . "/locale/") . "-------"; //
設定某個域的mo檔案路徑
echo bind_textdomain_codeset("translate", 'utf-8') . "-------------"; //
設定mo檔案的編碼為utf-8
// echo $domain;
echo textdomain($domain) . "----------------------
"; //
設定gettext()函式從哪個域去找mo檔案
$str = _("hello world love you");
<
?>
<?=gettext('hello world love you')?>
linux下:
<?php$lang = 'en_us'; //
linux不支援zh-hans,所以gettext、php都不支援。使用locale -a可以看到os支援的語言文字國家地區碼。
putenv('language=' . $lang); //
ubuntu 需要,centos不需要此行
echo
setlocale(lc_all, $lang . '.utf8'); //
ubuntu 需要.utf8,centos可有可無
$domain = 'translate';
bindtextdomain(
$domain, dirname(__file__) . '/locale');
bind_textdomain_codeset(
$domain , 'utf-8');
textdomain(
$domain
);echo _('asdf');
echo "\n";
exit
;?>
目錄為en_us,如下:
| |---locale| |-----en_us
| |-----lc_messages
| | |----------translate.mo translate.po
| |
桌面linux:要實現中文的翻譯,需要設定linux的區域語言。設定方法:
linux 區域語言的工作原理
linux中的多語言環境(lc_all, lang, locale)
開發板要支援國際化(internationalization,簡寫為i18n,需要加入以下操作
1、busybox支援中文的顯示,主要是加入locale的支援:
2、開發板下存在/usr/lib/locale/locale-archive的編碼集。生成locale-archive方法。 busybox沒有locale相關命令,可以在桌面上linux上生成拷貝到開發板上。
生成編碼集:
Qt多語言翻譯示例
乙個基礎的翻譯示例和一些注意事項 示例目錄 qttranslation languages en.qm en.ts languages.qrc zh cn.qm zh cn.ts main.cpp qttranslation.promain.cpp include include include i...
軟體多語言
locale是指特定於某個國家或地區的一組設定,包括字符集,數字 貨幣 時間和日期的格式等。在windows中,每個locale可以用乙個32位數字表示,記作lcid。在winnt.h中可以看到lcid的組成。它的高16位表示字元的排序方法,一般為0。在它的低16位中,低10位是primary la...
多語言切換
專案中應用到了多語言切換,鞏固一下。貼上 大家一起學習。廢話不多說直接上 1 新增多語言 在res values 下預設有個strings,需要多種語言就來建立幾個strings,values右鍵 new 乙個 values res file file name 就是strings director...