الوثائق / Angular
التدويل في Angular باستخدام ngx-translate، تلقائي
نقل النص الثابت في قوالب Angular إلى أنبوب ngx-translate، مع معالجة تدفق التحكم، والارتباطات وسمات aria، للتطبيقات المستقلة وNgModule، بما في ذلك الإصدارات الأقدم من Angular.
كيف يعمل
القوالب (.html ملفات و template: مدمجة) تصبح {{ 'key' | translate }}، سمات [placeholder]="'key' | translate" ([attr.aria-label] ل aria)، وسلاسل النصوص في الارتباطات ('key' | translate).
يتم تحليل القوالب باستخدام المترجم الخاص بـ Angular، بحيث يتم فهم @if، @for، *ngIf والقوالب المدمجة. العناصر التي تستخدم سمة i18n الخاصة بـ Angular تترك لها.
جملة حول رابط أو نص غامق تبقى رسالة واحدة: يتم عرضها بواسطة <i18n-t>، مع كل عنصر في <ng-template i18nSlot>. قبل Angular 14 تأتي كـ I18nTModule.
المكونات المعلنة في NgModule (أي مكون قبل Angular 19 بدون standalone: true) تحصل على TranslateModule من خلال الوحدة التي تعلن عنها.
ngx-translate لا يدعم الجمع، لذا {{ n }} {{ n === 1 ? 'order' : 'orders' }} يختار مفتاحه باستخدام أنبوب مولد: ('orders.left_' + (n | pluralForm)) | translate: { count: n }، مع _one، _few، _other… لكل لغة.
قبل وبعد
المخرجات الحقيقية للمحرك لهذا الملف. في تشغيل حقيقي، يقوم النموذج المستضاف بتسمية المفاتيح من السياق.
<h1>Your orders</h1>
@if (orders.length) {
<p>Hi {{ user.name }}, your orders are on their way.</p>
} @else {
<p>No orders yet. Read the <a routerLink="/shipping">shipping options</a> first.</p>
}
<input placeholder="Search orders" aria-label="Search" /><h1>{{ 'orders.your_orders' | translate }}</h1>
@if (orders.length) {
<p>{{ 'orders.hi_your_orders_are_on' | translate: { name: user.name } }}</p>
} @else {
<p><i18n-t key="orders.no_orders_yet_read_the"><ng-template i18nSlot="a"><a routerLink="/shipping">{{ 'orders.shipping_options' | translate }}</a></ng-template></i18n-t></p>
}
<input [placeholder]="'orders.search_orders' | translate" [attr.aria-label]="'orders.search' | translate" />{
"orders": {
"your_orders": "Your orders",
"hi_your_orders_are_on": "Hi {{name}}, your orders are on their way.",
"shipping_options": "shipping options",
"no_orders_yet_read_the": "No orders yet. Read the {{a}} first.",
"search_orders": "Search orders",
"search": "Search"
}
}ما يضيفه الإعداد
الإعداد الأول يقوم بإعداد @ngx-translate/core إذا لم يكن المشروع يحتوي عليه بعد:
@ngx-translate/core، عند الإصدار الذي يدعمه Angular الخاص بك- تجميع
src/app/i18n.tsلكل اللغات (بدون محمل HTTP) provideI18n()فيapp.config.ts(وهوI18nModuleفيapp.module.tsقبل Angular 16)، وأنبوب في كل مكون مستقل أو NgModule معلن
قم بتشغيله
يتطلب CLI إصدار Node.js 22 أو أحدث.
npm install --save-dev localize-dev
npx localize-dev login
# Preview, then write the changes
npx localize-dev run --dry-run -l es,fr,de
npx localize-dev run -l es,fr,de
# Or open a pull request instead
npx localize-dev pr -l es,fr,deأو أضف إجراء GitHub واحصل على طلب سحب عند كل دفعة. جربه على الكود الخاص بك أولاً في ملعب.