Tài liệu
Cài đặt ban đầu
Bắt đầu bằng cách thêm gói định vị Angular vào dự án của bạn:
ng add @angular/localize
Lệnh này sẽ thực hiện các thay đổi sau:
- Thêm gói @angular/localize vào các phụ thuộc của bạn
- Thêm "@angular/localize/init" vào mảng polyfills trong angular.json
- Thêm tham chiếu sau vào main.ts của bạn:
/// <reference types="@angular/localize" />
Nó cũng sẽ thêm cấu hình extract-i18n vào angular.json:
"extract-i18n": {
"builder": "ng-extract-i18n-merge:ng-extract-i18n-merge",
"options": {
"buildTarget": "your-app:build",
"format": "xlf",
"outputPath": "src/locale",
"includeContext": true,
"resetTranslationState": true,
"targetFiles": [
"messages.fr.xlf",
"messages.vi.xlf"
]
}
}
Lưu ý: Chúng tôi sẽ điều chỉnh outputPath sau trong cấu hình để phù hợp với quy trình làm việc của chúng tôi.
Angular i18n CLI Tool
To simplify the management of Angular i18n configuration, you can use our CLI tool:
npm install --save-dev @softwarity/angular-i18n-cli
This tool provides several features to streamline your i18n workflow:
- Easy initialization of i18n configuration in your Angular project
- Simple addition and removal of locales
- Automatic configuration of build settings for each locale
- Proper setup of XLIFF file formats
Cài đặt Công cụ Dịch thuật
Để quản lý các tệp dịch, chúng tôi sẽ sử dụng ng-extract-i18n-merge, công cụ này đơn giản hóa quá trình trích xuất và gộp các bản dịch:
npm install --save-dev ng-extract-i18n-merge
Công cụ này cung cấp một số lợi ích:
- Tự động trích xuất các chuỗi có thể dịch từ ứng dụng của bạn
- Gộp các bản dịch mới với các bản dịch hiện có trong một bước duy nhất
- Giữ nguyên các bản dịch hiện có trong quá trình cập nhật
- Hỗ trợ nhiều ngôn ngữ mục tiêu
Tệp cấu hình
package.json
"scripts": {
...
"extract-i18n": "ng extract-i18n",
"build": "ng build --localize"
...
}
angular.json
Cập nhật cấu hình i18n trong angular.json:
"i18n": {
"sourceLocale": "en",
"locales": {
"fr": {
"translation": "src/locale/messages.fr.xlf"
},
"vi": {
"translation": "src/locale/messages.vi.xlf"
}
}
},
Sau đó thay thế cấu hình extract-i18n tiêu chuẩn bằng ng-extract-i18n-merge:
"extract-i18n": {
"builder": "ng-extract-i18n-merge:ng-extract-i18n-merge",
"options": {
"buildTarget": "your-app:build",
"format": "xlf",
"outputPath": "src/locale",
"includeContext": true,
"resetTranslationState": true,
"targetFiles": [
"messages.fr.xlf",
"messages.vi.xlf"
]
}
}
Các Tùy Chọn Cấu Hình Quan Trọng:
- tên mục tiêu xây dựng: Tên mục tiêu xây dựng của ứng dụng của bạn
- đường dẫn xuất: Thư mục nơi các tệp bản dịch sẽ được lưu trữ
- bao gồm ngữ cảnh: Bao gồm thông tin tệp nguồn trong các tệp XLIFF
- Đặt lại trạng thái dịch: Đánh dấu tất cả các bản dịch cần được xem xét khi có thay đổi
- tệp tin mục tiêu: Danh sách các tệp tin dịch để tạo/cập nhật
Build configurations
Thêm cấu hình cho mỗi ngôn ngữ trong phần xây dựng:
"architect": {
"build": {
"configurations": {
"fr": {
"localize": ["fr"]
},
"vi": {
"localize": ["vi"]
}
}
}
}
Chuẩn bị các thành phần cho việc dịch thuật
Để làm cho các thành phần của bạn sẵn sàng cho việc dịch, bạn cần đánh dấu văn bản cần được dịch. Angular cung cấp hai cách để thực hiện điều này:
Tài liệu Angular: Đánh dấu văn bản để dịch
Tìm hiểu thêm về cách chuẩn bị ứng dụng của bạn cho việc dịch thuật.
Dịch Tài liệu Mẫu
Sử dụng thuộc tính i18n trong các mẫu của bạn để đánh dấu văn bản cần dịch:
<tag attribute="This is a sample attribute text that needs translation."
i18n-attribute="@@ATTRIBUTE_TEXT"
i18n="@@TAG_TEXT">This is a sample text that needs translation.</tag>
// EXAMPLE
<button title="Title button" i18n-title="@@TITLE_BUTTON"i18n="@@LABEL_BUTTON">label button</button>
@@prefix định nghĩa một ID tùy chỉnh cho bản dịch. Việc sử dụng SNAKE_CASE được khuyến nghị để đảm bảo tính nhất quán.
Dịch vụ thành phần
Đối với văn bản trong mã thành phần của bạn, hãy sử dụng thẻ mẫu $localize:
import { Component } from '@angular/core';
@Component({
selector: 'app-example',
template: '...'
})
export class ExampleComponent {
title = $localize`:@@PAGE_TITLE:Welcome to our application`;
errorMessage = $localize`:@@ERROR_MESSAGE:An error occurred while processing your request`;
}
Xây dựng và phục vụ
Xây dựng với bản dịch
Xây dựng ứng dụng của bạn với tất cả các bản dịch:
npm run build
Hoặc xây dựng cho một ngôn ngữ cụ thể (sử dụng tiếng Pháp làm ví dụ):
ng build --configuration=fr
Máy chủ phát triển
Phục vụ ứng dụng của bạn với các bản dịch trong quá trình phát triển:
ng serve --configuration=fr
⚠️ Lưu Ý Quan Trọng
Sau khi thêm nội dung có thể dịch mới hoặc sửa đổi các bản dịch hiện có:
ng extract-i18n
- để trích xuất và cập nhật tất cả các tệp dịch trong một bước
Quy trình làm việc đơn giản này đảm bảo rằng các tệp dịch của bạn luôn được cập nhật với nội dung nguồn, giúp quá trình quốc tế hóa trở nên hiệu quả và không có lỗi.