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ó:

  1. 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.