الوثائق / Astro
ترجمة Astro، تلقائية
توطين موقع Astro: صفحات .astro تحصل على t() من لغة عنوان URL، وكل صفحة ثابتة تحصل على نسخة لكل لغة لمحركات البحث، وجزر React أو Vue أو Svelte تتبع ذلك.
كيف يعمل
النص والتعبيرات في ملفات .astro تصبح {t('key')}، مع t التي تقرأ اللغة من عنوان URL (/es/about). كل صفحة تحصل على نسخة لكل لغة، بحيث تكون كل لغة صفحة حقيقية وقابلة للفهرسة؛ الطرق الديناميكية تحتفظ بـ getStaticPaths وخصائصها.
جزر React و Vue و Svelte تتم ترجمتها في نفس التشغيل، كل منها بمكتبتها الخاصة، وفقًا للغة الصفحة.
قبل وبعد
المخرجات الحقيقية للمحرك لهذا الملف. في تشغيل حقيقي، يقوم النموذج المستضاف بتسمية المفاتيح من السياق.
---
import Layout from '../../layouts/Layout.astro';
const product = { name: 'Jasmine tea', stock: 12 };
---
<Layout title="Our teas">
<h1>{product.name}, picked this spring</h1>
<p>{product.stock > 0 ? 'In stock' : 'Sold out'}</p>
</Layout>---
import Layout from '../../layouts/Layout.astro';
import { getLangFromUrl, useTranslations } from '../i18n';
const product = { name: 'Jasmine tea', stock: 12 };
const t = useTranslations(getLangFromUrl(Astro.url));
---
<Layout title={t('tea.our_teas')}>
<h1>{t('tea.picked_this_spring', { name: product.name })}</h1>
<p>{product.stock > 0 ? t('tea.in_stock') : t('tea.sold_out')}</p>
</Layout>{
"tea": {
"our_teas": "Our teas",
"picked_this_spring": "{{name}}, picked this spring",
"in_stock": "In stock",
"sold_out": "Sold out"
}
}ما يضيفه الإعداد
الإعداد الأول يقوم بإعداد وحدة src/i18n مولدة (الجزر: مكتباتها الخاصة) إذا لم يكن المشروع يحتوي عليه بعد:
src/i18nمعt،getLangFromUrlوlocalizePath- نسخة من كل صفحة تحت
src/pages/<lang>/، بما في ذلك المسارات الديناميكية - تم تعيين
<html lang dir>من عنوان URL في التصاميم
قم بتشغيله
يتطلب 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 واحصل على طلب سحب عند كل دفعة. جربه على الكود الخاص بك أولاً في ملعب.