lupdate 사용법
lupdate 명령줄 도구는 C++ 소스, C++ 헤더, Java, Python, QML 및 UI 파일에서 번역 가능한 문자열을 찾아 TS 파일을 생성하거나 업데이트합니다.
qmake로 빌드할 때는 명령줄이나 .pro 파일에서 처리할 파일을 지정하십시오.
CMake로 빌드할 때는 CMake 명령어를 사용하여 TS 파일을 생성하거나 업데이트하고 이를 QM 파일로 변환하는 타깃을 추가하십시오. lupdate 도구는 타깃을 빌드할 때 명령어에 전달하는 옵션을 사용하여 실행됩니다.
프로젝트 파일에서 번역을 지정하는 방법에 대한 자세한 내용은 ‘애플리케이션 현지화’를 참조하십시오.
lupdate 구문
lupdate [options] [project-file]...
lupdate [options] [source-file|path|@lst-file]... -ts ts-files|@lst-file여기서:
options는 하나 이상의 lupdate 옵션을 의미합니다.project-file는 프로젝트 구성 파일입니다.source-file번역 가능한 문자열이 포함된 파일입니다.path번역 원본 파일이 포함된 폴더의 경로입니다.@lst-filelst-file에서 추가 파일 이름(한 줄에 하나씩) 또는 포함 경로(한 줄에 하나씩,-I접두사가 붙음)를 읽습니다.ts-files생성하거나 업데이트할 TS 파일들입니다.
최신 도움말을 보려면 다음을 입력하십시오:
lupdate -helplupdate options
| 옵션 | 작업 |
|---|---|
-help | 최신 도움말 정보를 표시하고 종료합니다. |
-no-obsolete | 사용되지 않거나 삭제된 문자열을 모두 제거합니다. |
-extensions <ext>[,<ext>]... | 지정된 확장자를 가진 파일만 처리합니다. 목록에서 확장자를 구분할 때는 쉼표를 사용하십시오. 공백은 사용하지 마십시오. 기본값은 다음과 같습니다: java,jui,ui,c,c++,cc,cpp,cxx,ch,h,h++,hh,hpp,hxx,js,qs,qml,qrc. |
-pluralonly | 복수형 메시지만 포함합니다. |
-silent | 현재 수행 중인 작업에 대한 설명은 표시하지 않습니다. |
-no-sort | TS 파일에서 컨텍스트를 정렬하지 마십시오. |
-sort-messages | TS 파일에서 컨텍스트 내 메시지를 알파벳순으로 정렬하십시오. |
-no-recursive | 디렉터리를 재귀적으로 스캔하지 마십시오. |
-recursive | 디렉터리를 재귀적으로 스캔합니다(기본값). |
-warnings-are-errors | 경고를 오류로 취급합니다. |
-I <includepath> or -I<includepath> | 이 추가 위치에서 포함 파일을 찾습니다. 여러 경로를 지정할 수 있습니다. |
-locations {absolute|relative|none} | TS 파일에 소스 코드 참조를 저장하는 방식을 지정하거나 재정의합니다.
위치를 지정하지 않으면 |
-no-ui-lines | UI 파일 참조 시 줄 번호를 기록하지 않습니다. |
-disable-heuristic {sametext|similartext} | 명명된 병합 휴리스틱을 비활성화합니다. 여러 번 지정할 수 있습니다. |
-project <filename> | JSON 형식으로 프로젝트 설명이 포함된 파일의 이름입니다. lupdate-pro -dump-json <file> 를 사용하여 .pro 파일에서 이 파일을 생성할 수 있습니다. |
-pro <filename> | .pro 파일의 이름입니다. .pro 파일 구문을 따르지만 다른 파일 확장자를 가진 파일에 유용합니다. 프로젝트가 재귀적으로 탐색되어 병합됩니다. 이 옵션은 더 이상 권장되지 않습니다. 대신 lupdate-pro 도구를 사용하십시오. |
-pro-out <directory> | 후속 .pro 파일을 처리하기 위한 가상 출력 디렉터리입니다. |
-pro-debug | .pro 파일 처리 과정을 추적합니다. 더 자세한 정보를 보려면 두 번 지정하십시오. |
-source-language <language>[_<region>] | 새 파일의 소스 문자열 언어를 지정합니다. 지정하지 않으면 기본값은 POSIX입니다. |
-target-language <language>[_<region>] | 새 파일의 번역 언어를 지정합니다. 언어를 지정하지 않으면 lupdate 가 파일 이름을 기준으로 언어를 결정합니다. |
-tr-function-alias <function>{+=,=}<alias>[,<function>{+=,=}<alias>]... | += 를 사용하면, <alias> 을 <function> 의 대체 철자로 인식합니다. =, 를 사용하면, <alias> 을 <function> 의 유일한 철자로 인식합니다.사용 가능한 `
|
-ts <ts-file>... | 출력 파일을 지정합니다. 이 설정은 TRANSLATIONS 을 재정의합니다. |
-version | lupdate 의 버전을 표시하고 종료합니다. |
예제
CMake에서 lupdate 사용
CMake로 빌드할 때는 CMake 명령어를 사용하여 CMakeLists.txt 파일에 대상에 대한 번역을 추가한 다음, 해당 대상을 빌드하십시오.
다음 옵션 중 하나를 선택하십시오:
- app과 같은 타깃에서 qt_add_translations를 사용하십시오. 이렇게 하면 qt_add_lupdate 와 qt_add_lrelease가 호출됩니다.
- 타깃에 `
qt_add_lupdate`을 사용합니다.
해당 타깃(예: ` app_lupdate`)을 빌드하여 해당 타깃의 .ts 파일을 업데이트하십시오. 모든 타깃의 .ts 파일을 업데이트하려면 ` update_translations` 타깃을 빌드하십시오.
qmake에서 lupdate 사용
단일 QML 파일에 대한 번역 파일을 생성하려면:
lupdate main.qml -ts main_en.ts다른 언어(예: 프랑스어)용 번역 파일을 만들려면, main_en.ts 파일을 main_fr.ts로 복사한 다음, 프랑스어 TS 파일 내의 문자열을 번역하십시오.
lupdate .qrc 파일에 나열된 QML 파일을 처리합니다:
RESOURCES += qml.qrclupdate 를 통해 모든 QML 파일을 처리하려면:
lupdate application.qrc -ts myapp_en.ts.qrc 파일을 사용하지 않고 현재 작업 디렉터리(또는 그 하위 폴더)에 있는 모든 QML 파일을 처리하려면:
lupdate . -extensions qml -ts myapp_en.tsQML 및 C++ 소스 파일 모두에서 번역 가능한 문자열을 확인하려면:
lupdate qml.qrc filevalidator.cpp -ts myapp_en.ts프로젝트 파일에서 언어를 명시하지 않고 영어와 프랑스어에 사용할 .ts 파일을 생성하려면:
lupdate qml.qrc filevalidator.cpp -ts myapp_en.ts myapp_fr.tsTS 파일을 번역가에게 전달하면, 번역가는 ‘ Qt Linguist ’를 사용하여 파일을 열고 번역 내용을 삽입합니다.
XLIFF 형식 파일
TS 파일 형식은 사람이 읽기 쉬운 간단한 XML 형식으로, 버전 관리 시스템과 함께 사용할 수 있습니다. 또한 lupdate 는 XLIFF(Localization Interchange File Format) 파일(.xlf)을 처리할 수 있습니다.
참고: 현재 XLIFF 1.1 및 1.2버전만 지원됩니다.
Qt Linguist 에서 XLIFF 파일을 열고 편집할 수 있습니다.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.