php gettext 多語言翻譯

2022-03-06 09:55:49 字數 1952 閱讀 8809

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");

print

<

?>

<?=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...