2010-02-05 10 views
2

Qt 애플리케이션을 개발하는 동안 QTranslator를 사용할 때 문제가 발생했습니다. 약간의 연구 끝에 문제가 Qt에서 발생한 문제인 것으로 알았습니다.Qt 번역본 및 네임 스페이스

using namespace; 

지시어. here에있는 지침에 따라 코드가 특수한 주석을 사용하여 클래스가 네임 스페이스 안에 있다는 것을 알게되었습니다. 특별한 코멘트는 다음과 같습니다 :

/* 
TRANSLATOR namespace::MyClass 
*/ 

그래서 나는 모든 소스에서이 문자열을 관리하는 QStrings를 추가했습니다. 그러나 여전히 응용 프로그램은 번역되지 않습니다. QTranslator의 installTranslator 메소드가 true를 리턴합니다. 번역기를 설치하기 위해 사용하는 실제 코드는

Application app(argc,argv); //Application is a subclass of QApplication 
QTextCoded::setCodecForTr(QTextCodec::codecForName("utf8")); 
QTranslator translator; 
translator.load(QString("..//language//") + locale); 
app.installTranslator(&translator); 
app.exec(); 

누구나 동일한 문제가 발생 했습니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까?

EDIT--

는 여전히 결과를 위의 코드에서 하나의 작은 실수를 수정하지 않지만.

+0

블라인드 추측 : 당신이 번역 원하는 문자열에있는 QObject :: TR()를 사용하고 있습니까? 또한 Qt는 lupdate하는 동안 동적 문자열을 알 수 없으므로 어떤 문자열이 나타날지 (DB에서 검색 될 수 있음) 알게되면 해당 코드가 실행되지 않아도 tr() 내부에 나타나는지 확인해야합니다. – erelender

+0

@erelender 예, 저는 모든 컴파일 타임 문자열에서 tr()을 사용하고 있습니다 (레이블 및 버튼 텍스트, 메이저). 그리고 아직 나는 번역을 제대로하지 못하고있다. – cake

답변

0

번역기를 설치하지만 번역기를로드하지 않습니다.

정확히 지정 링크를 문서 :

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 

    QTranslator translator; 
    translator.load(QString("arrowpad_") + locale); // here load translation 
    app.installTranslator(&translator); 

    app.exec() 
} 
+0

작전 ...이 단계를 잊어 버렸지 만 문제가되지는 않습니다 (전에 시도했습니다). 나는 그 질문을 편집하고있다. – cake