localize.dev

الوثائق / Astro

ترجمة Astro، تلقائية

توطين موقع Astro: صفحات .astro تحصل على t() من لغة عنوان URL، وكل صفحة ثابتة تحصل على نسخة لكل لغة لمحركات البحث، وجزر React أو Vue أو Svelte تتبع ذلك.

كيف يعمل

النص والتعبيرات في ملفات .astro تصبح {t('key')}، مع t التي تقرأ اللغة من عنوان URL (/es/about). كل صفحة تحصل على نسخة لكل لغة، بحيث تكون كل لغة صفحة حقيقية وقابلة للفهرسة؛ الطرق الديناميكية تحتفظ بـ getStaticPaths وخصائصها.

جزر React و Vue و Svelte تتم ترجمتها في نفس التشغيل، كل منها بمكتبتها الخاصة، وفقًا للغة الصفحة.

قبل وبعد

المخرجات الحقيقية للمحرك لهذا الملف. في تشغيل حقيقي، يقوم النموذج المستضاف بتسمية المفاتيح من السياق.

src/pages/products/tea.astro · قبل
---
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>
src/pages/products/tea.astro · بعد
---
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>
locales/en.json
{
  "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 واحصل على طلب سحب عند كل دفعة. جربه على الكود الخاص بك أولاً في ملعب.