Qt多語言切換

2021-10-02 19:35:34 字數 3121 閱讀 6431

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 建立中介軟...