ترقية react-i18next من 17.x إلى 18.x
مقارنة الواجهة العامة لـ react-i18next بين 17.1.13 و18.0.0، محسوبة تلقائيًا من أنواع TypeScript. التوقيع المعدّل تغيير محتمل غير متوافق، وليس أمرًا مؤكدًا.
الملخص
| مسارات الاستيراد المحذوفة | 0 |
|---|---|
| الصادرات المحذوفة | 0 |
| التوقيعات المعدّلة | 5 |
| أعضاء الأصناف أو الواجهات المحذوفة | 0 |
| أعضاء الأصناف أو الواجهات المعدّلة | 0 |
| موقوفة حديثًا | 1 |
| تغييرات المتطلبات (engines واعتماديات peer) | 3 |
| صادرات جديدة | 1 |
الصادرات المحذوفة
لم يُكتشف شيء.
التوقيعات المعدّلة
| export | قبل | بعد |
|---|---|---|
react-i18next · useSSR | (initialI18nStore: Resource, initialLanguage: string): void | (initialI18nStore: Resource, initialLanguage: string, props?: { i18n?: any; } | undefined): void |
react-i18next · ErrorCode | "NO_I18NEXT_INSTANCE" | "NO_LANGUAGES" | "DEPRECATED_OPTION" | "TRANS_NULL_VALUE" | "TRANS_INVALID_OBJ" | "TRANS_INVALID_VAR" | "TRANS_INVALID_COMPONENTS" | "USE_T_BEFORE_READY" | "SUSPENDED_WHILE_LOADING" | "NO_I18NEXT_INSTANCE" | "NO_LANGUAGES" | "DEPRECATED_OPTION" | "TRANS_NULL_VALUE" | "TRANS_INVALID_OBJ" | "TRANS_INVALID_VAR" | "TRANS_INVALID_COMPONENTS" | "USE_T_BEFORE_READY" | "SUSPENDED_WHILE_LOADING" | "I18N_NOT_INITIALIZED" | "ICU_TRANS_RENDER_ERROR" | "GLOBAL_INSTANCE_ON_SERVER" |
react-i18next · I18nContext | React.Context<{ i18n: i18n; }> | React.Context<{ i18n: i18n; defaultNS?: string | string[] | undefined; } | undefined> |
react-i18next · useTranslation | <const Ns extends FlatNamespace | $Tuple<FlatNamespace> | undefined = undefined, const KPrefix extends KeyPrefix<FallbackNs<Ns>> = undefined>(ns?: Ns | undefined, options?: UseTranslationOptions<KPrefix> | undefined): UseTranslationResponse<FallbackNs<Ns>, KPrefix> | UseTranslationSelector | UseTranslationLegacy |
react-i18next · UseTranslationOptions | { i18n?: any; useSuspense?: boolean | undefined; keyPrefix?: KPrefix | undefined; bindI18n?: string | false | undefined; nsMode?: "fallback" | "default" | undefined; lng?: string | undefined; } | { i18n?: any; useSuspense?: boolean | undefined; keyPrefix?: KPrefix | undefined; bindI18n?: string | false | undefined; bindI18nStore?: string | false | undefined; nsMode?: "fallback" | "default" | undefined; lng?: string | undefined; } |
أعضاء الأصناف أو الواجهات المحذوفة
لم يُكتشف شيء.
أعضاء الأصناف أو الواجهات المعدّلة
لم يُكتشف شيء.
موقوفة حديثًا
| export | @deprecated |
|---|---|
react-i18next · TransSelectorProps.shouldUnescape | ignored: Trans always decodes HTML entities |
تغييرات المتطلبات (engines واعتماديات peer)
| قبل | بعد | |
|---|---|---|
engines.node | — | >=22 |
peerDependencies.react | >= 16.8.0 | >= 18.0.0 |
peerDependencies.i18next | >= 26.2.0 | >= 27.0.0 |
صادرات جديدة (1)
| import | export | kind |
|---|---|---|
react-i18next | ReactOptions | variable |
سجل التغييرات بين هذين الإصدارين
نص نشره مؤلفو الحزمة، معروض كما هو.
18.0.0
Released together with i18next 27. The migration guide lists every change with what to do: https://react.i18next.com/latest/migrating-v17-to-v18
### Breaking changes
- requires i18next 27 (peer `>= 27.0.0`) and React 18 or later (peer `>= 18.0.0`). React 16 and 17 apps stay on react-i18next 17: on i18next 27, use react-i18next 17.1.13 or later (it brings the types of the `react` init options), or 18. `useSyncExternalStore` comes from React itself, so `use-sync-external-store` is no longer a dependency.
- `Trans` output no longer depends on `interpolation.escapeValue`: it always decodes HTML entities after parsing, as `IcuTrans` does, in text and in attribute values, both with `react.unescape` (attribute values used the built-in decoder before). With i18next's default `escapeValue: true`, a value `Tom & Jerry` rendered as `Tom & Jerry` and a date `17/12/2025` as `17/12/2025`; both now render as written, and so do entities in the translation itself (`&`, `<`, ` `, ...). Values still render as text, never as markup (since 17.1.10). The `shouldUnescape` prop and `react.transDefaultProps.shouldUnescape` are ignored and warn (`DEPRECATED_OPTION`, in development and with `debug: true`); remove them. Snapshot tests that contain entities inside `Trans` output need an update ([#1903](https://github.com/i18next/react-i18next/issues/1903), [#1893](https://github.com/i18next/react-i18next/issues/1893)).
- `Trans` and `IcuTrans` re-render on language change by themselves: they subscribe to the `react.bindI18n` (default `languageChanged`) and `react.bindI18nStore` events, like `useTranslation`. Before, they only updated when a parent re-rendered ([#1710](https://github.com/i18next/react-i18next/issues/1710)). They still neither load translations nor suspend; with a `t` prop, that `t` still decides the language. `TransWithoutContext` and `IcuTransWithoutContext` stay hook-free.
- the `react` options of an instance stay on that instance. `initReactI18next` copied them into module-wide defaults, so a second instance without `react` options inherited, for example, the first one's `useSuspense: false`. Set them on every instance, or call `setDefaults()` once.
- the `i18n` returned by `useTranslation` (and passed by `withTranslation` and `Translation`) forwards reads and writes to the instance. It was a copy taken when the language changed, so after `await i18n.changeLanguage('de')` the copy still said `en`, and properties set on it never reached the instance. It is still a new object whenever the language changes, for dependency arrays and the React Compiler. Because the old object now reads the current language too, a check like `prevProps.i18n.language !== this.props.i18n.language` (or the language of a `usePrevious(i18n)`) no longer sees a change: compare the objects (`prevProps.i18n !== this.props.i18n`) or keep the previous language yourself.
- `useSSR` and `withSSR` call i18next's `hydrate()` instead of writing `resourceStore.data`,زوّد وكيل الذكاء الاصطناعي بهذه البيانات
Vigia خادم MCP مجاني: يتحقق وكيل البرمجة لديك من الإصدارات والتغييرات غير المتوافقة والثغرات قبل أن يكتب الشيفرة. بلا تسجيل ولا مفتاح API.
claude mcp add --transport http vigia https://vigia.coredls.cloud/mcp
أضِف إلى Cursorأضِف إلى VS Code★ نجمة على GitHub
أي عميل MCP آخر
{ "mcpServers": { "vigia": { "url": "https://vigia.coredls.cloud/mcp" } } }مهارة للوكلاء (SKILL.md): تخبر الوكيل متى يستخدم Vigia · GitHub Action لطلبات السحب
الأسئلة الشائعة
ما التغييرات غير المتوافقة عند ترقية react-i18next من 17 إلى 18؟
بين react-i18next 17.1.13 و18.0.0 وجد Vigia عدد 0 من الصادرات المحذوفة، و5 من التوقيعات المعدّلة، و0 من أعضاء الأصناف أو الواجهات المحذوفة أو المعدّلة.
ما الذي أصبح موقوفًا في react-i18next 18؟
عُلِّم 1 من الصادرات أو الأعضاء حديثًا على أنها موقوفة في react-i18next 18.0.0.
للوكلاء
GET https://vigia.coredls.cloud/v1/packages/npm/react-i18next/upgrade?from=17.1.13&to=18.0.0