2017-11-14 11 views
1

私はQtの初心者です。 Qtを使用して設計されたアプリケーションがあり、複数のウィンドウがあり、それぞれにハードコードされたテキストのラベルがいくつかあります。このアプリケーションのマルチ言語サポートを追加する最も簡単な方法は何でしょうか?どのQtオブジェクト/関数を使うべきですか?ハードコードされたテキストを含むQtアプリケーションに多言語オプションを追加する

私の現在のアイデアは、おそらく言語のすべてのラベルのテキストを含む別々のXMLファイルを作成することです。次に、ユーザーがメニューから言語アイコンを選択すると、関連するXMLファイルをロードします。しかし、私はこれをどうやって行うのか分かりません。どんな助けも高く評価されるでしょう!

更新: hereの例を実装しようとしました。しかし、それは次のエラーをスローし、私はそれを修正することはできません。 'class Ui :: MainWindow'には 'menuLanguage'という名前のメンバーがありません。

QActionGroup * langGroup =新しいQActionGroup(ui-> menuLanguage);

+0

上のあなたの質問私はちょうどドキュメントに従うと、彼らが提案するようにしてくださいしたいのためのサンプルプロジェクトです。 – hyde

答えて

1

Qtには翻訳がサポートされています。 Look in Qt Linguist

基本的には、すべてのハードコードされたテキストにQObject::trという番号を付けてマークします。

lbl->setText(tr("My text to translate")); 

Qtの言語学者は、(lupdate.exeを使用して)このような呼び出しのためのすべてのソースファイルとUIのフォームを解析し、tsファイルを作成します。 Qt LinguistのGUIアプリケーションを使用すると、翻訳することができます。 lreleaseを使用すると、実行時にロードされますqmファイルを作成し、自動的にテキストに

+0

詳細な対応をありがとうございます。私はそれを試してみます – Isuru

0

Qt Linguist試してみてください。

0123:

私はあなたに簡単な例を作りました

.PRO

TRANSLATIONS += translation_fa.ts 

の.h

#include <QTranslator> 
QTranslator translator; 

た.cpp

if(translator.load("E:/Qt/Linguist/linguist/translation_fa.qm")) 
    qDebug()<<"successfully load qm file."; 
else 
    qDebug()<<"problem in load qm file."; 


// change language to second language 
qApp->installTranslator(&translator); 

// change language to default language 
qApp->removeTranslator(&translator); 

Qt Linguist Toolsを使用することを忘れないでください。

image

これはgithub download here.

+0

@イスル私の答えはあなたが答えを受け入れるか、それをupvote、おかげで有用だった場合。 – aghilpro

+0

私はすでにあなたの答えに投票しました。しかし、私はまだ助けが必要です。私はこの例で与えられた手順、https://wiki.qtに従った。io/How_to_create_a_multi_language_application#File_system_structure_of_the_application:しかし、それは次のエラーを出します:class Ui :: MainWindowに 'menuLanguage'という名前のメンバがありません – Isuru

+1

私はあなたに例を挙げます。私にいくつか教えてください。 – aghilpro

関連する問題