2017-10-12 28 views
0

QTranslatorに関するほとんどのドキュメントは、QApplicationの場合はsimplistic casesの場合はQLocaleと仮定しているようです。実際のQLocaleを使用した正式なQTranslatorの例

現実世界では、ユーザーのロケールは言語と国を考慮する必要があります。これは通常、言語(en)の翻訳ファイルを最初に取得し、その言語を使用する各国の追加の翻訳ファイルを使用します。en_US )。

デフォルトのQLocale()を使用すると、適切な翻訳ファイル(どちらが存在するかによって、1つ、2つ、またはまったくありません)をロードする最もエレガントな方法は何ですか?

ここではsome codeとなりますが、それはちょっと面倒です。

答えて

0
bool Application::installTranslator(QString localeName) 
{ 
    QTranslator* translator = new QTranslator(this); 

    QString fileToLoad = ":/translators/translation_" + localeName + ".qm"; 

    if (!QFile::exists(fileToLoad)) 
    return; 

    if (translator->load(fileToLoad)) // Caution this will perform stripping of '_' heuristic 
    QApplication::installTranslator(translator); 
} 

void Application::installTranslator() 
{ 
    QLocale locale; 
    boost::optional<QString> optLanguage = m_commandLineParser->getLanguage(); 
    if (optLanguage) 
    locale = QLocale(optLanguage.get()); 

    // Load language (en, de, etc.) translator first 
    QString language = locale.name().left(2); 
    installTranslator(language); 

    // Load country translator (en_US, de_CH, etc.) translator second 
    installTranslator(locale.name()); 
} 
関連する問題