완성된 번역을 프로젝트에 병합하려면 다음 단계를 진행하세요.
- Angular CLI로 프로젝트의 배포 파일 사본을 빌드합니다.
"localize"옵션을 사용해 모든 i18n 메시지를 유효한 번역으로 교체하고 현지화된 애플리케이션 버전을 빌드합니다. 현지화된 애플리케이션 버전은 하나의 지역에 맞게 번역된 애플리케이션 배포 파일의 완전한 사본입니다.
번역을 병합한 후에는 서버 측 언어 감지 기능이나 서로 다른 하위 디렉터리를 사용해 각 애플리케이션 배포 사본을 제공하세요.
도움말: 각 애플리케이션 배포 사본을 제공하는 방법에 대한 자세한 내용은 여러 지역 배포하기를 참고하세요.
애플리케이션을 컴파일 시점에 번역할 때는 빌드 과정에서 AOT(ahead-of-time) 컴파일을 사용해 크기가 작고 빠르며 바로 실행할 수 있는 애플리케이션을 생성합니다.
도움말: 빌드 과정에 대한 자세한 설명은 Angular 앱 빌드 및 실행하기를 참고하세요.
빌드 과정은 .xlf 형식이나 .xtb처럼 Angular가 이해할 수 있는 다른 형식의 번역 파일에 적용할 수 있습니다.
Angular가 사용하는 번역 파일 형식에 대한 자세한 내용은 원본 언어 파일 형식 변경하기를 참고하세요.
각 지역의 애플리케이션 배포 사본을 개별적으로 빌드하려면 프로젝트의 angular.json 작업 공간 빌드 설정 파일에서 빌드 설정에 지역을 정의하세요.
이 방법을 사용하면 지역마다 애플리케이션 전체를 빌드할 필요가 없어 빌드 시간이 줄어듭니다.
지역별 애플리케이션 버전을 생성하려면 angular.json 작업 공간 빌드 설정 파일의 "localize" 옵션을 사용하세요.
또한 명령줄에서 빌드하려면 Angular CLI의 build 명령에 --localize 옵션을 사용하세요.
도움말: 필요하면 커스텀 지역 설정을 위해 특정 지역에만 빌드 옵션을 적용할 수 있습니다.
빌드 설정에 지역 정의하기
프로젝트의 angular.json 작업 공간 빌드 설정 파일에서 i18n 프로젝트 옵션으로 지역을 정의하세요.
다음 하위 옵션은 원본 언어를 식별하고, 프로젝트에서 지원하는 번역의 위치를 컴파일러에 알려줍니다.
| 하위 옵션 | 설명 |
|---|---|
sourceLocale |
애플리케이션 소스 코드에서 사용하는 지역입니다(기본값은 en-US). code, baseHref, subPath 프로퍼티를 가진 객체일 수도 있습니다. |
locales |
지역 식별자와 번역 파일을 연결하는 맵입니다. 각 항목은 translation, baseHref, subPath 프로퍼티를 가진 객체일 수도 있습니다. |
i18n 프로퍼티와 타입의 전체 목록은 i18n 옵션을 참고하세요.
en-US와 fr의 angular.json 예제
예를 들어 다음 angular.json 작업 공간 빌드 설정 파일의 일부에서는 원본 지역을 en-US로 설정하고 프랑스어(fr) 지역 번역 파일의 경로를 지정합니다.
angular.json
"projects": {
"angular.io-example": {
// ...
"i18n": {
"sourceLocale": "en-US",
"locales": {
"fr": {
"translation": "src/locale/messages.fr.xlf",
// ...
}
}
},
"architect": {
// ...
}
}
}
}
지역별 애플리케이션 버전 생성하기
빌드 설정에서 정의한 지역을 사용하려면 angular.json 작업 공간 빌드 설정 파일의 "localize" 옵션으로 해당 빌드 설정에서 생성할 지역을 CLI에 알려주세요.
- 빌드 설정에 정의한 모든 지역을 사용하려면
"localize"를true로 설정합니다. - 정의한 지역 중 일부만 빌드하려면 해당 지역 식별자를 배열에 담아
"localize"에 지정합니다. - 현지화를 비활성화하고 지역별 버전을 생성하지 않으려면
"localize"를false로 설정합니다.
도움말: 컴포넌트 템플릿을 현지화하려면 AOT(ahead-of-time) 컴파일이 필요합니다.
이 설정을 변경한 적이 있다면 AOT를 사용할 수 있도록 "aot"를 true로 설정하세요.
도움말: i18n 배포의 복잡성과 재빌드 시간을 최소화해야 한다는 점을 고려해, 개발 서버는 한 번에 하나의 지역만 현지화할 수 있습니다.
"localize" 옵션을 true 또는 둘 이상의 지역을 담은 배열로 설정하고 ng serve를 실행하면 개발 서버가 경고를 출력하고 현지화를 비활성화합니다.
특정 지역을 대상으로 개발하려면 "localize" 옵션에 해당 지역을 지정하세요.
예를 들어 프랑스어(fr)의 경우 "localize": ["fr"]로 지정합니다.
CLI는 지역 데이터를 불러오고 등록한 후, 생성된 각 버전을 다른 지역 버전과 구분하기 위해 지역별 디렉터리에 배치합니다.
이 디렉터리들은 프로젝트에 설정된 outputPath 안에 생성됩니다.
각 애플리케이션 버전의 html 엘리먼트에서 lang 어트리뷰트는 해당 지역으로 설정됩니다.
CLI는 설정된 baseHref에 지역을 추가해 각 애플리케이션 버전의 HTML 기준 HREF도 조정합니다.
모든 설정에서 상속받을 수 있도록 "localize" 프로퍼티를 공통 설정에 지정하세요.
다른 설정을 재정의하도록 이 프로퍼티를 지정할 수도 있습니다.
angular.json에서 모든 지역을 빌드에 포함하는 예제
다음 예제는 빌드 설정에 정의한 모든 지역을 빌드하도록 angular.json 작업 공간 빌드 설정 파일의 "localize" 옵션을 true로 설정한 모습입니다.
angular.json
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"localize": true,
// ...
},
명령줄에서 빌드하기
기존 production 설정으로 ng build 명령을 실행할 때 --localize 옵션을 사용할 수도 있습니다.
CLI는 빌드 설정에 정의한 모든 지역을 빌드합니다.
빌드 설정에 지역을 지정했다면 "localize" 옵션을 true로 설정한 것과 같은 방식으로 동작합니다.
도움말: 지역 설정 방법에 대한 자세한 내용은 지역별 애플리케이션 버전 생성하기를 참고하세요.
ng build --localize
특정 지역에만 빌드 옵션 적용하기
하나의 지역에만 특정 빌드 옵션을 적용하려면 해당 지역 하나를 지정해 지역 전용 커스텀 설정을 만드세요.
중요: Angular CLI 개발 서버(ng serve)는 하나의 지역에만 사용하세요.
프랑스어 빌드 예제
다음 예제는 하나의 지역을 사용하는 지역 전용 커스텀 설정을 보여줍니다.
angular.json
"build": {
// ...
"configurations": {
// ...
"fr": {
"localize": ["fr"]
}
},
// ...
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"configurations": {
// ...
"fr": {
"buildTarget": "angular.io-example:build:development,fr"
}
},
// ...
},
// ...
}
이 설정을 ng serve나 ng build 명령에 전달하세요.
다음 코드 예제는 프랑스어 파일을 제공하는 방법을 보여줍니다.
ng serve --configuration=fr
프로덕션 빌드에서는 설정을 조합해 두 설정을 모두 적용하세요.
ng build --configuration=production,fr
angular.json
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
// ...
},
"configurations": {
// ...
"fr": {
"localize": ["fr"]
}
},
// ...
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"configurations": {
"production": {
"buildTarget": "angular.io-example:build:production"
},
// ...
"fr": {
"buildTarget": "angular.io-example:build:development,fr"
}
},
// ...
},
// ...
}
누락된 번역 보고하기
번역이 누락되면 빌드는 성공하지만 Missing translation for message "{translation_text}"와 같은 경고가 발생합니다.
Angular 컴파일러가 생성하는 경고 수준을 설정하려면 다음 수준 중 하나를 지정하세요.
| 경고 수준 | 설명 | 출력 |
|---|---|---|
error |
오류를 발생시키고 빌드를 실패시킵니다. | 해당 없음 |
ignore |
아무 작업도 하지 않습니다. | 해당 없음 |
warning |
콘솔이나 셸에 기본 경고를 표시합니다. | Missing translation for message "{translation_text}" |
angular.json 작업 공간 빌드 설정 파일의 build 대상에 있는 options 섹션에서 경고 수준을 지정하세요.
angular.json의 error 경고 예제
다음 예제는 경고 수준을 error로 설정하는 방법을 보여줍니다.
angular.json
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
// ...
"i18nMissingTranslation": "error"
},
도움말: Angular 프로젝트를 Angular 애플리케이션으로 컴파일하면 각 i18n 어트리뷰트가 $localize 태그가 붙은 메시지 문자열로 바뀝니다.
따라서 Angular 애플리케이션은 컴파일 후에 번역됩니다.
또한 지역마다 Angular 프로젝트 전체를 다시 컴파일하지 않고도 현지화된 Angular 애플리케이션 버전을 만들 수 있습니다.
Angular 애플리케이션을 번역할 때 번역 변환 과정은 템플릿 리터럴 문자열의 구성 요소(정적 문자열과 표현식)를 번역 모음의 문자열로 교체하고 순서를 재배치합니다.
자세한 내용은 $localize를 참고하세요.
요약: 한 번 컴파일한 다음 지역별로 번역합니다.