localize.dev

الوثائق / Solid

ترجمة SolidJS تلقائيًا

ترجمة تطبيق SolidJS: يحصل JSX على useTranslation() من وحدة i18next المولدة التي يكون لغتها إشارة، بحيث يتم تحديث النص في المكان عند تغيير اللغة.

كيف يعمل

يتم إعادة كتابة JSX مثل React، مع useTranslation() القادمة من وحدة مولدة. t() يقرأ إشارة اللغة، لذلك يتم تحديث JSX عند استدعاء setLanguage().

جملة حول رابط تبقى رسالة واحدة (Read the <a>terms</a> first)، يتم عرضها بواسطة rich() مع العناصر الأصلية.

قبل وبعد

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

src/components/Cart.tsx · قبل
export function Cart(props) {
  return (
    <section>
      <h2>Hi {props.name}, your cart</h2>
      <p>Read the <a href="/terms">terms</a> before paying.</p>
      <button title="Pay now">Checkout</button>
    </section>
  );
}
src/components/Cart.tsx · بعد
import { useTranslation, rich } from '../i18n';

export function Cart(props) {
  const { t } = useTranslation();
  return (
    <section>
      <h2>{t('cart.hi_your_cart', { name: props.name })}</h2>
      <p>{rich(t('cart.read_the_terms_before_paying'), { a: (c) => <a href="/terms">{c}</a> })}</p>
      <button title={t('cart.pay_now')}>{t('cart.checkout')}</button>
    </section>
  );
}
locales/en.json
{
  "cart": {
    "hi_your_cart": "Hi {{name}}, your cart",
    "read_the_terms_before_paying": "Read the <a>terms</a> before paying.",
    "pay_now": "Pay now",
    "checkout": "Checkout"
  }
}

ما يضيفه الإعداد

الإعداد الأول يقوم بإعداد i18next إذا لم يكن المشروع يحتوي عليه بعد:

  • i18next
  • src/i18n.ts مع useTranslation() و setLanguage()

قم بتشغيله

يتطلب 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 واحصل على طلب سحب عند كل دفعة. جربه على الكود الخاص بك أولاً في ملعب.