2016-11-25 14 views
1

OSにインストールされている言語を検出したい。 I実行することを行うには :OS言語を検出する

qDebug() << QLocale::system(); 
// result = QLocale(English, Latin, UnitedStates) 

を私はQStringの中でそれを保存したいのですが、それだけで行うことはできません。

QString langs = QLocale::system().toString(); 

私は、文字列で、この結果を保存することができますどのように? OS言語を検出するためのより良い方法はありますか? もう1つのことは、可能であればQtを使用してキーボードの言語設定を検出できるかどうかです。

QLocaleは、システムの異なる表現を取得するには、アプリケーションの起動だから、

で、システムのロケール設定から を決定されたデフォルトのロケールの概念をサポートしています。

+1

"自分のOSにインストールされている言語を検出する"とはどういう意味ですか?あなたは詳細を教えていただけますか? – peppe

+0

私のアプリケーションが動作しているコンピュータにインストールされている言語パックの一覧を知りたい – vitor13almeida

+0

「言語パック」とは何ですか?どのOSの下で? – peppe

答えて

3

documentation for QLocaleがあることを示しQLocaleの以下の方法の1つ以上があなたを助けるかもしれません:

qDebug() << QLocale::system().name(); 
qDebug() << QLocale::system().nativeCountryName(); 
qDebug() << QLocale::system().nativeLanguageName(); 

出力例:GUIアプリケーションで

"en_GB" 
"United Kingdom" 
"British English" 

次のように、あなたが入力方法について同様の詳細情報を取得することができます。

qDebug() << QGuiApplication::inputMethod()->locale().name(); 
+0

QLocale :: system()は私に3つの言語を表示しますが、私は2つしかインストールしていません。言語パックがインストールされていることを表示するために、Qtで何をしたいのですか? – vitor13almeida

+0

@ vitor13almeida「インストール済み」の言語はどのように知っていますか?正確なOSとディストリビューションは? –

+0

ENGとPT langパックのUbuntu。メニュー、ウィンドウ、アプリ、ENGのこの種のもの、キーボードはPTまたはENGです。 WindowsとLinuxでOS、OSバージョン、langs、eyboard layout/langs ...を保存する必要があります – vitor13almeida

0

あなたは、ユーザーの好みの順に、言語のリストを取得することができます(例えばシステム環境設定で定義されているmacOS上で)、QLocale::system().uiLanguages()となります。ロケールのユーザーできる名前については

は、あなたが

QString("%1 (%2)").arg(QLocale::languageToString(locale.language()), 
         QLocale::countryToString(locale.country())); 
+0

QLocale :: system().uiLanguages()には1つのみが表示されます。 Qtで欲しいことをすることは可能ですか? – vitor13almeida

1

のようなもの、それは、私はQtのをやりたいインストールされている言語パックを表示することは可能ですが使用できますか?

いいえQtではこれを行うことはできません。ターゲットとするプラットフォームごとにプラットフォーム固有のアプローチが必要です。

「言語パック」の概念は移植性がありません。例えば。ほとんどのUnixアプリケーション(OS Xのものを含む)は、サポートできるすべての言語をサポートしており、インストールすることなく瞬時に言語を切り替えることができます。

+0

ok。どのようにLinux OSのためにそれを行うための任意の提案?ファイルをチェックし、いくつかのC++クラスを使用します...? – vitor13almeida

+0

@ vitor13almeidaほとんどの場合、何もすることはありません。すべてのアプリケーションは、現在選択されているロケール言語で翻訳されていれば表示されます。翻訳されているかどうかを確認するには?ソースパッケージやバイナリを調べて、ある種の翻訳ファイルやそのクッキークラムなどを調べなければなりません。それを行うための単純な包括的な方法はありません。アプリにどの言語がどの言語でサポートされているかを問うポータブルな方法はありません。ほとんどのXデスクトップ環境にはデフォルトですべての翻訳が含まれていることをご存じですか? –

+1

@ vitor13almeidaあなたはなぜこの情報が必要だと思っているのかという基本的な質問に答える必要がありますか?正確にどのようなアプリケーションですか?異なるアプリケーションが複数の言語を異なる範囲でサポートすることは、おそらく分かっています。OSSでは、ボランティアの翻訳作業の可用性に依存します。たとえば、完全な15の翻訳を含むKDEコントロールセンターですが、わずか10のウィンドウマネージャーです。これは問題を説明するための数字です。 –