2017-10-12 8 views
0

QTranslator에 대한 대부분의 설명서와 QApplication을 설치하는 것은 QLocale에 대해 simplistic cases이라고 가정합니다.실제 QLocale을 사용한 표준 QTranslator 예제

현실 세계에서 사용자의 언어는 언어와 국가를 고려해야하며 일반적으로 언어 (en)의 번역 파일을 먼저 얻은 다음 해당 언어를 사용하는 각 국가의 추가 번역 파일 (en_US).

기본값 인 QLocale()을 사용하면 적절한 번역 파일을로드하는 가장 우아한 방법은 무엇입니까?

여기에 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()); 
}