qt多語言切換
在需要被翻譯的字串前面標識tr
如qstring str=tr(「hello,world!」); ,這很重要,因為翻譯工具會把原始碼中tr標識的字串提取出來,翻譯成其他語言,如果沒有用tr標識的,不會被工具提取。
在介面中輸入的文字,預設已經是加上tr的了,所以在翻譯時也能看見。
建議:在程式中的字串使用英文,漢語等通過多國語翻譯來實現,而不要採取把漢字寫在**中。
3.由介面的ui資訊,生成ts檔案
有兩種方式來實現,
命令方式(qt4.5.3推薦,因為沒找到qtcreate):
輸入e:/qt/4.5.3/bin/lupdate.exe *.pro執行lupdate
選單方式
工具->外部->qt語言家->更新翻譯,將生成翻譯檔案cn.ts
5.生成qm檔案
命令方式:
輸入e:/qt/4.5.3/bin/lrelease.exe *.pro執行
選單方式
ts檔案翻譯完成後,執行qt creator中的【工具】-》【外部】-》【qt語言家】-》【部署翻譯(lrelease)】就會生成最終要用到的qm檔案,如下圖所示:
6.通過**呼叫qm檔案,進行語言切換
qtranslator g_tran;//必須設定成全域性變數,如果是區域性變數,設定將失效。
qtranslator translator;bool b = false;b = translator.load(「cn.qm」);a.installtranslator(&translator);
connect(langcombo, signal(currentindexchanged(int)), this, slot(changelang(int)) );
// 載入不同的語言包
void lhsyncclientprivate::changelang(const qstring strlanguage)
qstring strlanguagefile;
if (strlanguage.compare("en") == 0)
else if (strlanguage.compare("zh") == 0)
if (qfile(strlanguagefile).exists())
else
問題:
無法開啟包括檔案:「qtranslaotr」: no such file or directory
qmake qt += core
7 修改ts檔案
** qdialogbuttonbox的確定、取消按鈕沒有正常翻譯
解決方法:在「qt_zh_cn.ts」裡面手動新增:
qplatformtheme ok 確定 cancel 取消 .....** qmessagebox中的qmessagebox::yes, qmessagebox::no沒有正常翻譯
解決方法:上述context中再新增:
&yes 是 &no 否
8 問題
///*********************臺啟動過程******************************
try
//**位置不能在cplatfrommanager宣告之前,否則有問題:qstring出現assert錯誤)
#if (qt_version < qt_version_check(5, 0, 0))
qtextcodec::setcodecfortr(qtextcodec::codecforname(「gbk」));
qtextcodec::setcodecforcstrings(qtextcodec::codecforname(「gbk」));
#else
#endif
qtextcodec::setcodecforlocale(qtextcodec::codecforname(「gbk」));
//qtranslator m_translator=new qtranslator();
qtranslator m_translator;
qstring strlanguage="zh";
qstring sfilepath_char="",strlanguagefile="",strpath=":/myabc_soft";
bool loadqmfile=false;
#if defined(q_os_win)
if (ar**[0]!="")
else
#else
strpath=「ems/myabc_soft」;
#endif
if (strlanguage.compare("en") == 0)
else if (strlanguage.compare("zh") == 0)
if (qfile(strlanguagefile).exists()) }
mainuicode* t=new mainuicode();
把main函式傳遞的引數個數/引數陣列,用於傳遞配置檔案的路徑
t->argc=argc;
t->ar**=ar**;
/提取配置檔案在的路徑
t->sfilepath_char=ar**[0];
把路徑傳遞給讀配置檔案類
t->sfilepathconfigtable_exeinput=ar**[1];
//初始化過程,讀取功能塊聯絡訊號表和功能塊配置訊號表
t->init();
strlanguage=t->cplatfrommanager.gconfigoperateex.strlanguage;
if (strlanguage.compare("en") == 0)
else if (strlanguage.compare("zh") == 0)
if (qfile(strlanguagefile).exists()) }
//啟動的時候視窗最大化
//t->showmaximized();
t->shownormal(); }
catch(bool)
多語言切換
專案中應用到了多語言切換,鞏固一下。貼上 大家一起學習。廢話不多說直接上 1 新增多語言 在res values 下預設有個strings,需要多種語言就來建立幾個strings,values右鍵 new 乙個 values res file file name 就是strings director...
ios多語言切換
軟體需要適配多語言,通常想到的第乙個方法就是切換多語言的時候傳送通知到各個頁面,從而實現多語言的切換,其實這個方法太不好了,通知多,影響大,有的乾脆直接重啟軟體來切換多語言,其實這幾種都是不可取的,現在作者提供乙個簡單的方法僅供參考 1理論準備 現在大部分軟體頁面的控制器都是tabbar和narba...
laravel 多語言切換
1 建立翻譯檔案 翻譯檔案所在目錄為resources lang,在此建立 zh lang.php檔案 在此建立的為中文 return username 使用者名稱 password 密碼 rememberme 記住密碼 login 登入 badpassword 使用者名稱或密碼錯誤.2 建立中介軟...