Full Code of i18next/react-i18next for AI

master b00adfad4296 cached
503 files
1.4 MB
405.2k tokens
427 symbols
1 requests
Download .txt
Showing preview only (1,617K chars total). Download the full file or copy to clipboard to get everything.
Repository: i18next/react-i18next
Branch: master
Commit: b00adfad4296
Files: 503
Total size: 1.4 MB

Directory structure:
gitextract_okq1t3_6/

├── .all-contributorsrc
├── .babelrc
├── .codeclimate.yml
├── .coveralls.yml
├── .editorconfig
├── .eslintignore
├── .eslintrc.json
├── .github/
│   ├── stale.yml
│   └── workflows/
│       └── CI.yml
├── .gitignore
├── .husky/
│   └── pre-commit
├── .npmignore
├── .prettierignore
├── .prettierrc.json
├── CHANGELOG.md
├── LICENSE
├── README.md
├── TransWithoutContext.d.mts
├── TransWithoutContext.d.ts
├── example/
│   ├── ReactNativeLocizeProject/
│   │   ├── .bundle/
│   │   │   └── config
│   │   ├── .eslintrc.js
│   │   ├── .gitignore
│   │   ├── .prettierrc.js
│   │   ├── .watchmanconfig
│   │   ├── App.tsx
│   │   ├── Gemfile
│   │   ├── README.md
│   │   ├── __tests__/
│   │   │   └── App.test.tsx
│   │   ├── android/
│   │   │   ├── app/
│   │   │   │   ├── build.gradle
│   │   │   │   ├── debug.keystore
│   │   │   │   ├── proguard-rules.pro
│   │   │   │   └── src/
│   │   │   │       ├── debug/
│   │   │   │       │   └── AndroidManifest.xml
│   │   │   │       └── main/
│   │   │   │           ├── AndroidManifest.xml
│   │   │   │           ├── java/
│   │   │   │           │   └── com/
│   │   │   │           │       └── reactnativelocizeproject/
│   │   │   │           │           ├── MainActivity.kt
│   │   │   │           │           └── MainApplication.kt
│   │   │   │           └── res/
│   │   │   │               ├── drawable/
│   │   │   │               │   └── rn_edit_text_material.xml
│   │   │   │               └── values/
│   │   │   │                   ├── strings.xml
│   │   │   │                   └── styles.xml
│   │   │   ├── build.gradle
│   │   │   ├── gradle/
│   │   │   │   └── wrapper/
│   │   │   │       ├── gradle-wrapper.jar
│   │   │   │       └── gradle-wrapper.properties
│   │   │   ├── gradle.properties
│   │   │   ├── gradlew
│   │   │   ├── gradlew.bat
│   │   │   └── settings.gradle
│   │   ├── app.json
│   │   ├── babel.config.js
│   │   ├── i18n.js
│   │   ├── index.js
│   │   ├── ios/
│   │   │   ├── .xcode.env
│   │   │   ├── Podfile
│   │   │   ├── ReactNativeLocizeProject/
│   │   │   │   ├── AppDelegate.swift
│   │   │   │   ├── Images.xcassets/
│   │   │   │   │   ├── AppIcon.appiconset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Info.plist
│   │   │   │   ├── LaunchScreen.storyboard
│   │   │   │   └── PrivacyInfo.xcprivacy
│   │   │   ├── ReactNativeLocizeProject.xcodeproj/
│   │   │   │   ├── project.pbxproj
│   │   │   │   └── xcshareddata/
│   │   │   │       └── xcschemes/
│   │   │   │           └── ReactNativeLocizeProject.xcscheme
│   │   │   └── ReactNativeLocizeProject.xcworkspace/
│   │   │       └── contents.xcworkspacedata
│   │   ├── jest.config.js
│   │   ├── metro.config.js
│   │   ├── package.json
│   │   └── tsconfig.json
│   ├── ReactNativeProject/
│   │   ├── .bundle/
│   │   │   └── config
│   │   ├── .eslintrc.js
│   │   ├── .gitignore
│   │   ├── .prettierrc.js
│   │   ├── .watchmanconfig
│   │   ├── App.tsx
│   │   ├── Gemfile
│   │   ├── README.md
│   │   ├── __tests__/
│   │   │   └── App.test.tsx
│   │   ├── android/
│   │   │   ├── app/
│   │   │   │   ├── build.gradle
│   │   │   │   ├── debug.keystore
│   │   │   │   ├── proguard-rules.pro
│   │   │   │   └── src/
│   │   │   │       ├── debug/
│   │   │   │       │   └── AndroidManifest.xml
│   │   │   │       └── main/
│   │   │   │           ├── AndroidManifest.xml
│   │   │   │           ├── java/
│   │   │   │           │   └── com/
│   │   │   │           │       └── reactnativeproject/
│   │   │   │           │           ├── MainActivity.kt
│   │   │   │           │           └── MainApplication.kt
│   │   │   │           └── res/
│   │   │   │               ├── drawable/
│   │   │   │               │   └── rn_edit_text_material.xml
│   │   │   │               └── values/
│   │   │   │                   ├── strings.xml
│   │   │   │                   └── styles.xml
│   │   │   ├── build.gradle
│   │   │   ├── gradle/
│   │   │   │   └── wrapper/
│   │   │   │       ├── gradle-wrapper.jar
│   │   │   │       └── gradle-wrapper.properties
│   │   │   ├── gradle.properties
│   │   │   ├── gradlew
│   │   │   ├── gradlew.bat
│   │   │   └── settings.gradle
│   │   ├── app.json
│   │   ├── babel.config.js
│   │   ├── i18n.js
│   │   ├── index.js
│   │   ├── ios/
│   │   │   ├── .xcode.env
│   │   │   ├── Podfile
│   │   │   ├── ReactNativeProject/
│   │   │   │   ├── AppDelegate.swift
│   │   │   │   ├── Images.xcassets/
│   │   │   │   │   ├── AppIcon.appiconset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Info.plist
│   │   │   │   ├── LaunchScreen.storyboard
│   │   │   │   └── PrivacyInfo.xcprivacy
│   │   │   ├── ReactNativeProject.xcodeproj/
│   │   │   │   ├── project.pbxproj
│   │   │   │   └── xcshareddata/
│   │   │   │       └── xcschemes/
│   │   │   │           └── ReactNativeProject.xcscheme
│   │   │   └── ReactNativeProject.xcworkspace/
│   │   │       └── contents.xcworkspacedata
│   │   ├── jest.config.js
│   │   ├── locales/
│   │   │   ├── de/
│   │   │   │   └── translation.json
│   │   │   └── en/
│   │   │       └── translation.json
│   │   ├── metro.config.js
│   │   ├── package.json
│   │   └── tsconfig.json
│   ├── devserver-save-missing/
│   │   ├── .gitignore
│   │   ├── README.md
│   │   ├── config-overrides.js
│   │   ├── package.json
│   │   ├── public/
│   │   │   ├── index.html
│   │   │   ├── locales/
│   │   │   │   ├── de/
│   │   │   │   │   └── translation.json
│   │   │   │   └── en/
│   │   │   │       └── translation.json
│   │   │   └── manifest.json
│   │   ├── src/
│   │   │   ├── App.css
│   │   │   ├── App.js
│   │   │   ├── i18n.js
│   │   │   ├── index.css
│   │   │   └── index.js
│   │   └── webpack.config.js
│   ├── locize/
│   │   ├── .eslintrc.js
│   │   ├── .gitignore
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── public/
│   │   │   ├── index.html
│   │   │   └── manifest.json
│   │   └── src/
│   │       ├── App.css
│   │       ├── App.js
│   │       ├── i18n.js
│   │       ├── index.css
│   │       └── index.js
│   ├── razzle-ssr/
│   │   ├── .gitignore
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── public/
│   │   │   └── robots.txt
│   │   └── src/
│   │       ├── App.css
│   │       ├── App.js
│   │       ├── Home.css
│   │       ├── Home.js
│   │       ├── client.js
│   │       ├── i18n.js
│   │       ├── index.js
│   │       ├── locales/
│   │       │   ├── de/
│   │       │   │   └── translations.json
│   │       │   └── en/
│   │       │       └── translations.json
│   │       └── server.js
│   ├── react/
│   │   ├── .gitignore
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── public/
│   │   │   ├── index.html
│   │   │   ├── locales/
│   │   │   │   ├── de/
│   │   │   │   │   └── translation.json
│   │   │   │   └── en/
│   │   │   │       └── translation.json
│   │   │   └── manifest.json
│   │   └── src/
│   │       ├── App.css
│   │       ├── App.js
│   │       ├── i18n.js
│   │       ├── index.css
│   │       └── index.js
│   ├── react-component-lib/
│   │   ├── .gitignore
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── public/
│   │   │   ├── index.html
│   │   │   ├── locales/
│   │   │   │   ├── de/
│   │   │   │   │   └── translation.json
│   │   │   │   └── en/
│   │   │   │       └── translation.json
│   │   │   └── manifest.json
│   │   └── src/
│   │       ├── App.css
│   │       ├── App.js
│   │       ├── i18n.js
│   │       ├── index.css
│   │       ├── index.js
│   │       └── other-lib/
│   │           ├── component.js
│   │           └── i18n.js
│   ├── react-fluent/
│   │   ├── .gitignore
│   │   ├── package.json
│   │   ├── public/
│   │   │   ├── index.html
│   │   │   ├── locales/
│   │   │   │   ├── de/
│   │   │   │   │   └── translations.ftl
│   │   │   │   └── en/
│   │   │   │       └── translations.ftl
│   │   │   └── manifest.json
│   │   └── src/
│   │       ├── App.css
│   │       ├── App.js
│   │       ├── i18n.js
│   │       ├── index.css
│   │       └── index.js
│   ├── react-icu/
│   │   ├── .gitignore
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── public/
│   │   │   ├── index.html
│   │   │   ├── locales/
│   │   │   │   ├── de/
│   │   │   │   │   └── translations.json
│   │   │   │   ├── en/
│   │   │   │   │   └── translations.json
│   │   │   │   └── ru/
│   │   │   │       └── translations.json
│   │   │   ├── manifest.json
│   │   │   └── robots.txt
│   │   └── src/
│   │       ├── App.css
│   │       ├── App.js
│   │       ├── App.test.js
│   │       ├── ComponentUsingMacro.js
│   │       ├── ComponentUsingMacroInterpolated.js
│   │       ├── i18n.js
│   │       ├── index.css
│   │       ├── index.js
│   │       ├── serviceWorker.js
│   │       └── setupTests.js
│   ├── react-localstorage/
│   │   ├── .gitignore
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── public/
│   │   │   ├── index.html
│   │   │   ├── locales/
│   │   │   │   ├── de/
│   │   │   │   │   └── translation.json
│   │   │   │   └── en/
│   │   │   │       └── translation.json
│   │   │   └── manifest.json
│   │   └── src/
│   │       ├── App.css
│   │       ├── App.js
│   │       ├── i18n.js
│   │       ├── index.css
│   │       └── index.js
│   ├── react-typescript/
│   │   ├── simple/
│   │   │   ├── .gitignore
│   │   │   ├── README.md
│   │   │   ├── package.json
│   │   │   ├── public/
│   │   │   │   ├── index.html
│   │   │   │   ├── manifest.json
│   │   │   │   └── robots.txt
│   │   │   ├── src/
│   │   │   │   ├── @types/
│   │   │   │   │   ├── i18next.d.ts
│   │   │   │   │   ├── react-app-env.d.ts
│   │   │   │   │   └── resources.ts
│   │   │   │   ├── App.tsx
│   │   │   │   ├── i18n/
│   │   │   │   │   ├── config.ts
│   │   │   │   │   └── en/
│   │   │   │   │       └── translation.json
│   │   │   │   ├── index.css
│   │   │   │   └── index.tsx
│   │   │   └── tsconfig.json
│   │   └── simple-multi-namespaces/
│   │       ├── .gitignore
│   │       ├── README.md
│   │       ├── package.json
│   │       ├── public/
│   │       │   ├── index.html
│   │       │   ├── manifest.json
│   │       │   └── robots.txt
│   │       ├── src/
│   │       │   ├── @types/
│   │       │   │   ├── i18next.d.ts
│   │       │   │   ├── react-app-env.d.ts
│   │       │   │   └── resources.ts
│   │       │   ├── App.tsx
│   │       │   ├── components/
│   │       │   │   ├── Comp1.tsx
│   │       │   │   ├── Comp2.tsx
│   │       │   │   └── Comp3.tsx
│   │       │   ├── i18n/
│   │       │   │   ├── config.ts
│   │       │   │   └── en/
│   │       │   │       ├── ns1.json
│   │       │   │       └── ns2.json
│   │       │   ├── index.css
│   │       │   └── index.tsx
│   │       └── tsconfig.json
│   ├── react_native_windows/
│   │   ├── .buckconfig
│   │   ├── .eslintrc.js
│   │   ├── .flowconfig
│   │   ├── .gitattributes
│   │   ├── .gitignore
│   │   ├── .prettierrc.json
│   │   ├── .watchmanconfig
│   │   ├── App.js
│   │   ├── __tests__/
│   │   │   └── App-test.js
│   │   ├── android/
│   │   │   ├── app/
│   │   │   │   ├── BUCK
│   │   │   │   ├── build.gradle
│   │   │   │   ├── build_defs.bzl
│   │   │   │   ├── debug.keystore
│   │   │   │   ├── proguard-rules.pro
│   │   │   │   └── src/
│   │   │   │       ├── debug/
│   │   │   │       │   ├── AndroidManifest.xml
│   │   │   │       │   └── java/
│   │   │   │       │       └── com/
│   │   │   │       │           └── react_native_windows/
│   │   │   │       │               └── ReactNativeFlipper.java
│   │   │   │       └── main/
│   │   │   │           ├── AndroidManifest.xml
│   │   │   │           ├── java/
│   │   │   │           │   └── com/
│   │   │   │           │       └── react_native_windows/
│   │   │   │           │           ├── MainActivity.java
│   │   │   │           │           └── MainApplication.java
│   │   │   │           └── res/
│   │   │   │               └── values/
│   │   │   │                   ├── strings.xml
│   │   │   │                   └── styles.xml
│   │   │   ├── build.gradle
│   │   │   ├── gradle/
│   │   │   │   └── wrapper/
│   │   │   │       ├── gradle-wrapper.jar
│   │   │   │       └── gradle-wrapper.properties
│   │   │   ├── gradle.properties
│   │   │   ├── gradlew
│   │   │   ├── gradlew.bat
│   │   │   └── settings.gradle
│   │   ├── app.json
│   │   ├── babel.config.js
│   │   ├── index.js
│   │   ├── ios/
│   │   │   ├── Podfile
│   │   │   ├── react_native_windows/
│   │   │   │   ├── AppDelegate.h
│   │   │   │   ├── AppDelegate.m
│   │   │   │   ├── Images.xcassets/
│   │   │   │   │   ├── AppIcon.appiconset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Info.plist
│   │   │   │   ├── LaunchScreen.storyboard
│   │   │   │   └── main.m
│   │   │   ├── react_native_windows-tvOS/
│   │   │   │   └── Info.plist
│   │   │   ├── react_native_windows-tvOSTests/
│   │   │   │   └── Info.plist
│   │   │   ├── react_native_windows.xcodeproj/
│   │   │   │   ├── project.pbxproj
│   │   │   │   └── xcshareddata/
│   │   │   │       └── xcschemes/
│   │   │   │           ├── react_native_windows-tvOS.xcscheme
│   │   │   │           └── react_native_windows.xcscheme
│   │   │   └── react_native_windowsTests/
│   │   │       ├── Info.plist
│   │   │       └── react_native_windowsTests.m
│   │   ├── macos/
│   │   │   ├── .gitignore
│   │   │   ├── Podfile
│   │   │   ├── react_native_windows-iOS/
│   │   │   │   ├── AppDelegate.h
│   │   │   │   ├── AppDelegate.m
│   │   │   │   ├── Base.lproj/
│   │   │   │   │   └── LaunchScreen.xib
│   │   │   │   ├── Images.xcassets/
│   │   │   │   │   ├── AppIcon.appiconset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Info.plist
│   │   │   │   └── main.m
│   │   │   ├── react_native_windows-macOS/
│   │   │   │   ├── AppDelegate.h
│   │   │   │   ├── AppDelegate.m
│   │   │   │   ├── Assets.xcassets/
│   │   │   │   │   ├── AppIcon.appiconset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Base.lproj/
│   │   │   │   │   └── Main.storyboard
│   │   │   │   ├── Info.plist
│   │   │   │   ├── ViewController.h
│   │   │   │   ├── ViewController.m
│   │   │   │   ├── main.m
│   │   │   │   └── react_native_windows.entitlements
│   │   │   ├── react_native_windows.xcodeproj/
│   │   │   │   ├── project.pbxproj
│   │   │   │   └── xcshareddata/
│   │   │   │       └── xcschemes/
│   │   │   │           ├── react_native_windows-iOS.xcscheme
│   │   │   │           └── react_native_windows-macOS.xcscheme
│   │   │   └── react_native_windows.xcworkspace/
│   │   │       └── contents.xcworkspacedata
│   │   ├── metro.config.js
│   │   ├── metro.config.macos.js
│   │   ├── package.json
│   │   ├── react-native.config.js
│   │   └── windows/
│   │       ├── .gitignore
│   │       ├── react_native_windows/
│   │       │   ├── .gitignore
│   │       │   ├── App.cpp
│   │       │   ├── App.h
│   │       │   ├── App.idl
│   │       │   ├── App.xaml
│   │       │   ├── AutolinkedNativeModules.g.cpp
│   │       │   ├── AutolinkedNativeModules.g.h
│   │       │   ├── AutolinkedNativeModules.g.targets
│   │       │   ├── MainPage.cpp
│   │       │   ├── MainPage.h
│   │       │   ├── MainPage.idl
│   │       │   ├── MainPage.xaml
│   │       │   ├── Package.appxmanifest
│   │       │   ├── PropertySheet.props
│   │       │   ├── ReactPackageProvider.cpp
│   │       │   ├── ReactPackageProvider.h
│   │       │   ├── packages.config
│   │       │   ├── pch.cpp
│   │       │   ├── pch.h
│   │       │   ├── react_native_windows.vcxproj
│   │       │   ├── react_native_windows.vcxproj.filters
│   │       │   └── react_native_windows_TemporaryKey.pfx
│   │       └── react_native_windows.sln
│   ├── storybook/
│   │   ├── .gitignore
│   │   ├── .storybook/
│   │   │   ├── main.js
│   │   │   └── preview.js
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── public/
│   │   │   ├── index.html
│   │   │   ├── locales/
│   │   │   │   ├── ar/
│   │   │   │   │   └── translation.json
│   │   │   │   ├── de/
│   │   │   │   │   └── translation.json
│   │   │   │   └── en/
│   │   │   │       └── translation.json
│   │   │   └── manifest.json
│   │   └── src/
│   │       ├── App.css
│   │       ├── App.js
│   │       ├── i18n.js
│   │       ├── index.css
│   │       ├── index.js
│   │       └── stories/
│   │           ├── app.stories.js
│   │           └── components.stories.js
│   └── test-jest/
│       ├── .gitignore
│       ├── README.md
│       ├── package.json
│       ├── public/
│       │   ├── index.html
│       │   ├── locales/
│       │   │   ├── de/
│       │   │   │   └── translations.json
│       │   │   └── en/
│       │   │       └── translations.json
│       │   └── manifest.json
│       └── src/
│           ├── App.css
│           ├── App.js
│           ├── App.test.js
│           ├── Trans.js
│           ├── Trans.test.js
│           ├── Translation.js
│           ├── Translation.test.js
│           ├── UseTranslation.js
│           ├── UseTranslation.test.js
│           ├── UseTranslationWithInterpolation.js
│           ├── UseTranslationWithInterpolation.test.js
│           ├── WithTranslation.js
│           ├── WithTranslation.test.js
│           ├── __mocks__/
│           │   └── react-i18next.js
│           ├── i18n.js
│           ├── index.css
│           ├── index.js
│           └── setupTests.js
├── helpers.d.ts
├── icu.macro.d.mts
├── icu.macro.d.ts
├── icu.macro.js
├── index.d.mts
├── index.d.ts
├── initReactI18next.d.mts
├── initReactI18next.d.ts
├── lint-staged.config.mjs
├── package.json
├── react-i18next.js
├── rollup.config.mjs
├── src/
│   ├── I18nextProvider.js
│   ├── IcuTrans.js
│   ├── IcuTransUtils/
│   │   ├── TranslationParserError.js
│   │   ├── htmlEntityDecoder.js
│   │   ├── index.js
│   │   ├── renderTranslation.js
│   │   └── tokenizer.js
│   ├── IcuTransWithoutContext.js
│   ├── Trans.js
│   ├── TransWithoutContext.js
│   ├── Translation.js
│   ├── context.js
│   ├── defaults.js
│   ├── i18nInstance.js
│   ├── index.js
│   ├── initReactI18next.js
│   ├── unescape.js
│   ├── useSSR.js
│   ├── useTranslation.js
│   ├── utils.js
│   ├── withSSR.js
│   └── withTranslation.js
├── test/
│   ├── I18nextProvider.spec.jsx
│   ├── IcuTrans/
│   │   ├── IcuTrans.spec.jsx
│   │   ├── IcuTransWithoutContext.spec.jsx
│   │   └── utils/
│   │       ├── htmlEntityDecoder.spec.js
│   │       ├── renderTranslation.spec.js
│   │       └── tokenizer.spec.js
│   ├── Translation.spec.jsx
│   ├── __snapshots__/
│   │   └── icu.macro.spec.js.snap
│   ├── backendLngAwareMock.js
│   ├── backendMock.js
│   ├── hasLoadedNamespaceMock.js
│   ├── i18n.js
│   ├── i18nNoLng.js
│   ├── icu.macro.spec.js
│   ├── initReactI18next.spec.js
│   ├── setup.js
│   ├── trans.nodeToString.spec.jsx
│   ├── trans.render.dynamic.spec.jsx
│   ├── trans.render.icu.spec.jsx
│   ├── trans.render.noLng.spec.jsx
│   ├── trans.render.object.spec.jsx
│   ├── trans.render.spec.jsx
│   ├── typescript/
│   │   ├── custom-types/
│   │   │   ├── IcuTrans.test.tsx
│   │   │   ├── Trans.test.tsx
│   │   │   ├── TransWithoutContext.test.tsx
│   │   │   ├── Translation.test.ts
│   │   │   ├── i18next.d.ts
│   │   │   ├── tsconfig.json
│   │   │   └── useTranslation.test.ts
│   │   ├── issue-1899/
│   │   │   ├── check-types.sh
│   │   │   ├── i18next.d.ts
│   │   │   ├── import-check.ts
│   │   │   └── tsconfig.json
│   │   ├── misc/
│   │   │   ├── I18nextProvider.test.tsx
│   │   │   ├── IcuTrans.test.tsx
│   │   │   ├── IcuTransWithoutContext.test.tsx
│   │   │   ├── Trans.test.tsx
│   │   │   ├── TransWithoutContext.test.tsx
│   │   │   ├── Translation.test.tsx
│   │   │   ├── context.test.tsx
│   │   │   ├── tsconfig.json
│   │   │   ├── tsconfig.nonEsModuleInterop.json
│   │   │   ├── useSSR.test.tsx
│   │   │   ├── useTranslation.test.ts
│   │   │   ├── withSSR.test.tsx
│   │   │   └── withTranslation.test.tsx
│   │   ├── selector-custom-types/
│   │   │   ├── IcuTrans.test.tsx
│   │   │   ├── IcuTransWithoutContext.test.tsx
│   │   │   ├── Trans.test.tsx
│   │   │   ├── TransWithoutContext.test.tsx
│   │   │   ├── Translation.test.tsx
│   │   │   ├── i18next.d.ts
│   │   │   ├── tsconfig.json
│   │   │   └── useTranslation.test.ts
│   │   └── selector-optimize/
│   │       ├── IcuTrans.test.tsx
│   │       ├── IcuTransWithoutContext.test.tsx
│   │       ├── Trans.test.tsx
│   │       ├── TransWithoutContext.test.tsx
│   │       ├── Translation.test.tsx
│   │       ├── i18next.d.ts
│   │       ├── tsconfig.json
│   │       └── useTranslation.test.ts
│   ├── unescape.spec.js
│   ├── useSSR.spec.js
│   ├── useTranslation.advanced.spec.js
│   ├── useTranslation.bindI18nStore.spec.jsx
│   ├── useTranslation.loading.spec.js
│   ├── useTranslation.loadingLng.spec.js
│   ├── useTranslation.ready.spec.jsx
│   ├── useTranslation.spec.jsx
│   ├── useTranslation.usedNamespaces.spec.js
│   ├── utils.spec.js
│   ├── withSSR.spec.jsx
│   ├── withTranslation.keyPrefix.spec.jsx
│   └── withTranslation.spec.jsx
├── tsconfig.json
├── vitest.config.mts
└── vitest.workspace.typescript.mts

================================================
FILE CONTENTS
================================================

================================================
FILE: .all-contributorsrc
================================================
{
  "projectName": "react-i18next",
  "projectOwner": "i18next",
  "repoType": "github",
  "repoHost": "https://github.com",
  "files": ["README.md"],
  "imageSize": 100,
  "commit": false,
  "contributors": [
    {
      "login": "jamuhl",
      "name": "Jan Mühlemann",
      "avatar_url": "https://avatars3.githubusercontent.com/u/977772?v=4",
      "profile": "http://twitter.com/jamuhl",
      "contributions": ["code", "example", "doc", "question"]
    },
    {
      "login": "adrai",
      "name": "Adriano Raiano",
      "avatar_url": "https://avatars0.githubusercontent.com/u/1086194?v=4",
      "profile": "http://twitter.com/#!/adrirai",
      "contributions": ["code", "example", "doc", "question"]
    },
    {
      "login": "tigerabrodi",
      "name": "Tiger Abrodi",
      "avatar_url": "https://avatars1.githubusercontent.com/u/49603590?v=4",
      "profile": "https://tigerabrodi.dev/",
      "contributions": ["question", "code", "review"]
    },
    {
      "login": "pedrodurek",
      "name": "Pedro Durek",
      "avatar_url": "https://avatars1.githubusercontent.com/u/12190482?v=4",
      "profile": "https://github.com/pedrodurek",
      "contributions": ["code", "example"]
    }
  ],
  "commitConvention": "none"
}


================================================
FILE: .babelrc
================================================
{
  "env": {
    "development": {
      "presets": [
        [
          "@babel/env",
          {
            "targets": { "browsers": ["defaults"] }
          }
        ],
        "@babel/react"
      ],
      "plugins": ["@babel/plugin-transform-runtime"]
    },
    "jsnext": {
      "presets": [
        [
          "@babel/env",
          {
            "targets": { "browsers": ["defaults"] },
            "modules": false,
            "useBuiltIns": false
          }
        ],
        "@babel/react"
      ],
      "plugins": ["@babel/plugin-transform-runtime"]
    }
  },
  "comments": false
}


================================================
FILE: .codeclimate.yml
================================================
engines:
  duplication:
    enabled: true
    config:
      languages:
        - ruby
        - javascript:
            mass_threshold: 58
        - python
        - php
  eslint:
    # Disabled since this engine used a different set of version of
    # `@typescript/eslint` and `typescript`
    #
    # @see https://github.com/i18next/i18next/pull/2098
    enabled: false
    channel: 'eslint-8'
  fixme:
    enabled: true
ratings:
  paths:
    - 'src/**/*'
exclude_paths:
  - test/
  - coverage/
  - dist/
  - example/
  - 'react-i18next.js'
  - 'react-i18next.min.js'
  - 'rollup.config.js'
  - 'src/shallowEqual.js'


================================================
FILE: .coveralls.yml
================================================
repo_token: a7NPPsDW6jNJ3x23jBgWuO6KxV3Eq0mF2


================================================
FILE: .editorconfig
================================================
# EditorConfig is awesome: http://EditorConfig.org
root = true

[*]
charset = utf-8
end_of_line = lf
indent_size = 2
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true


================================================
FILE: .eslintignore
================================================
**/dist/
**/node_modules/
example/**/*
**/react-i18next.js
**/react-i18next.min.js


================================================
FILE: .eslintrc.json
================================================
{
  "extends": ["airbnb", "prettier"],
  "parser": "@babel/eslint-parser",
  "parserOptions": {
    "ecmaVersion": 8,
    "ecmaFeatures": {
      "experimentalObjectRestSpread": true,
      "impliedStrict": true,
      "classes": true
    }
  },
  "env": {
    "browser": true,
    "node": true
  },
  "reportUnusedDisableDirectives": true,
  "rules": {
    "no-debugger": 0,
    "no-alert": 0,
    "no-unused-vars": [1, { "argsIgnorePattern": "res|next|^err" }],
    "prefer-arrow-callback": ["error", { "allowNamedFunctions": true }],
    "prefer-const": ["error", { "destructuring": "all" }],
    "arrow-body-style": [2, "as-needed"],
    "no-unused-expressions": [2, { "allowTaggedTemplates": true }],
    "no-param-reassign": [2, { "props": false }],
    "no-console": 0,
    "no-use-before-define": 0,
    "no-nested-ternary": 0,
    "import/prefer-default-export": 0,
    "import/no-extraneous-dependencies": 1,
    "import/no-named-as-default-member": 1,
    "import": 0,
    "func-names": 0,
    "space-before-function-paren": 0,
    "comma-dangle": 0,
    "max-len": 0,
    "import/extensions": 0,
    "no-underscore-dangle": 0,
    "consistent-return": 0,
    "react/display-name": 1,
    "react/no-array-index-key": 0,
    "react/jsx-no-useless-fragment": ["error", { "allowExpressions": true }],
    "react/react-in-jsx-scope": 0,
    "react/prefer-stateless-function": 0,
    "react/forbid-prop-types": 0,
    "react/no-unescaped-entities": 0,
    "react/prop-types": 0,
    "jsx-a11y/accessible-emoji": 0,
    "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"] }],
    "react/no-unknown-property": ["error", { "ignore": ["i18nIsDynamicList"] }],
    "radix": 0,
    "no-shadow": [
      2,
      { "hoist": "all", "allow": ["resolve", "reject", "done", "next", "err", "error"] }
    ],
    "quotes": [2, "single", { "avoidEscape": true, "allowTemplateLiterals": true }],
    "jsx-a11y/href-no-hash": "off",
    "jsx-a11y/anchor-is-valid": ["warn", { "aspects": ["invalidHref"] }],
    "react/jsx-props-no-spreading": 0
  },
  "overrides": [
    {
      "files": ["test/*"],
      "extends": ["plugin:testing-library/react", "plugin:jest-dom/recommended"],
      "globals": {
        "globalThis": false
      },
      "rules": {
        "testing-library/no-node-access": ["error", { "allowContainerFirstChild": true }],
        "testing-library/no-manual-cleanup": "off"
      }
    }
  ]
}


================================================
FILE: .github/stale.yml
================================================
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 7
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
  - 'discussion'
  - 'feature request'
  - 'bug'
  - 'breaking change'
  - 'doc'
  - 'issue'
  - 'help wanted'
  - 'good first issue'
  - 'pr hold'
# Label to use when marking an issue as stale
staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
  This issue has been automatically marked as stale because it has not had
  recent activity. It will be closed if no further activity occurs. Thank you
  for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false


================================================
FILE: .github/workflows/CI.yml
================================================
name: CI

on:
  push:
    branches:
      - master
  pull_request:
    # types: [opened, synchronize, reopened, ready_for_review]
    branches:
      - '**'

jobs:
  codeQuality:
    name: Check code quality (lint and format)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'npm'

      - name: Install dependencies
        run: npm install

      - name: Format check
        run: npm run format

      - name: Lint
        run: npm run lint

  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'npm'

      - name: Install dependencies
        run: npm install

      - name: Build
        run: npm run build

  test:
    name: Test on node ${{ matrix.node }} and ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        node: ['22.x', '20.x', '18.x']
        os: [ubuntu-latest]
        # Collect coverage only for node 20 and ubuntu-latest, no need to run it twice
        # @see https://docs.github.com/en/actions/using-jobs/using-a-matrix-for-your-jobs#expanding-or-adding-matrix-configurations
        include:
          - collectCoverage: true
            node: '20.x'
            os: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node }}
          cache: 'npm'

      - name: Install dependencies
        run: npm install

      - name: Test
        if: ${{ !matrix.collectCoverage }}
        run: npm test

      - name: Test with coverage
        if: ${{ matrix.collectCoverage }}
        run: npm run test:coverage

      - name: Coveralls
        if: ${{ matrix.collectCoverage }}
        uses: coverallsapp/github-action@v2

  testTypescript:
    name: Test typescript
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'npm'

      - name: Install dependencies
        run: npm install

      - name: Test
        run: npm run test:typescript


================================================
FILE: .gitignore
================================================
# Ignore specific files
.settings.xml
.monitor
.DS_Store
*.orig
npm-debug.log
npm-debug.log.*
*.dat
.idea
.vscode
.eslintcache

# Ignore various temporary files
*~
*.swp


# Ignore various Node.js related directories and files
node_modules
node_modules/**/*
coverage/**/*
example/build/**/*
dist/**/*
.next
yarn.lock
out

# ignore packaged releases
*.tgz

# vitest temp / cache files
tsconfig.vitest-temp.json


================================================
FILE: .husky/pre-commit
================================================
npm exec lint-staged


================================================
FILE: .npmignore
================================================
test/
coverage/
example/
bin/
.babelrc
.editorconfig
.eslintignore
.eslintrc
.gitignore
bower.json
.github
.circleci
.vscode
rollup.config.js
rollup.config.mjs
.all-contributorsrc
.codeclimate.yml
.coveralls.yml
tsconfig*.json
.prettierrc.json
vitest.config.mts
vitest.workspace.mts

================================================
FILE: .prettierignore
================================================
**/dist/
**/react-i18next.js
**/react-i18next.min.js
**/example/


================================================
FILE: .prettierrc.json
================================================
{
  "$schema": "https://json.schemastore.org/prettierrc.json",
  "bracketSpacing": true,
  "bracketSameLine": false,
  "printWidth": 100,
  "semi": true,
  "singleQuote": true,
  "trailingComma": "all"
}


================================================
FILE: CHANGELOG.md
================================================
### 16.5.8

- A selector function cannot be resolved without an i18n instance... returning empty string is safer than leaking the raw function reference. [1907](https://github.com/i18next/react-i18next/issues/1907)

### 16.5.7

- fix: `<Trans>` component with `enableSelector: true` does not support multiple selectors for fallbacks [1907](https://github.com/i18next/react-i18next/issues/1907)

### 16.5.6

- fix: prevent crash in `useSSR` when `init()` hasn't been called before `useSSR` — now logs a warning instead of throwing [1604](https://github.com/i18next/react-i18next/discussions/1604)

### 16.5.5

- fix: prevent crash in `useSSR`, `getInitialProps` and `Translation` when no i18next instance is available (e.g. in monorepo setups with duplicate `react-i18next` copies) — now logs a clear warning instead of throwing [1604](https://github.com/i18next/react-i18next/discussions/1604)

### 16.5.4

- fix: Overriding React component props not working [1902](https://github.com/i18next/react-i18next/pull/1902)

### 16.5.3

- fix: Trans named tags with underscore [1901](https://github.com/i18next/react-i18next/pull/1901)

### 16.5.2

- fix: Type errors when you've declared a resources type [1899](https://github.com/i18next/react-i18next/issues/1899) via [1900](https://github.com/i18next/react-i18next/pull/1900)

### 16.5.1

- fix: export `nodesToString` (runtime + TypeScript typings) to support `i18next-cli` ([i18next/i18next-cli#155](https://github.com/i18next/i18next-cli/pull/155))

### 16.5.0

- Add configuration option `transDefaultProps` to set default props for the Trans component (e.g. `tOptions`, `shouldUnescape`, `values`) [1895](https://github.com/i18next/react-i18next/issues/1895)

### 16.4.1

- fix(Trans): prevent double-escaping of interpolated values in component props (e.g. title). Unescape HTML entities before passing prop values to React to avoid rendered output like `&amp;quot;` / `&amp;#39;`. [1893](https://github.com/i18next/react-i18next/issues/1893)

### 16.4.0

- `<Trans count>` prop: optional - infer count from children [1891](https://github.com/i18next/react-i18next/issues/1891)

### 16.3.5

- fix runaway effect in useTranslation [1888](https://github.com/i18next/react-i18next/issues/1888) by [1889](https://github.com/i18next/react-i18next/pull/1889)

### 16.3.4

- Fix: avoid the "ref is not a prop" warning when a user ref is placed on an element inside `<Trans>` [1887](https://github.com/i18next/react-i18next/issues/1887), by still trying to fix element.ref access issue with react 19 [1846](https://github.com/i18next/react-i18next/pull/1846)

### 16.3.3

- improve useTranslation to fix "Maximum update depth exceeded" but still support new react-compiler [1885](https://github.com/i18next/react-i18next/issues/1885) [1863](https://github.com/i18next/react-i18next/issues/1863#issuecomment-3491246391)

### 16.3.2

- fix: avoid "Uncaught TypeError: Cannot redefine property: \_\_original"

### 16.3.1

- revert fix: Incosistent behaviour of Trans and t. Trans set defaultValue when t call doesn't set the field. [1876](https://github.com/i18next/react-i18next/issues/1876) [f22d478](https://github.com/i18next/react-i18next/commit/f22d4787187e6cfc54d57f5fbede1c816ea19565)

### 16.3.0

- fix: add i18n wrapper for React Compiler and React.memo compatibility [1884](https://github.com/i18next/react-i18next/pull/1884)

### 16.2.4

- try to fix "Trans component do not render anymore children as default value in test environment" [1883](https://github.com/i18next/react-i18next/issues/1883) by also respecting [1876](https://github.com/i18next/react-i18next/issues/1876)

### 16.2.3

- fix hyphened component break issue [1882](https://github.com/i18next/react-i18next/pull/1882)

### 16.2.2

- fix trans component break with less than sign [1880](https://github.com/i18next/react-i18next/pull/1880), closes [1734](https://github.com/i18next/react-i18next/issues/1734)

### 16.2.1

- fix regression in v16.2.0: bindI18nStore does not work correctly [1879](https://github.com/i18next/react-i18next/issues/1879)

### 16.2.0

- try to address: useTranslation hook violates React's rules of hooks by conditionally calling inner hooks [1863](https://github.com/i18next/react-i18next/issues/1863)

### 16.1.6

- fix: fix: handle spread props for inner components in Trans (icu) [1877](https://github.com/i18next/react-i18next/pull/1877)

### 16.1.5

- fix: Incosistent behaviour of Trans and t. Trans set defaultValue when t call doesn't set the field. [1876](https://github.com/i18next/react-i18next/issues/1876)
- Trans: use also defaultValue via tOptions as fallback

### 16.1.4

- fix: detect pre-transformation use of interpolation like number/date/etc. [1875](https://github.com/i18next/react-i18next/pull/1875)

### 16.1.3

- fix: ensure invalid identifiers are quoted in the props object [1874](https://github.com/i18next/react-i18next/pull/1874)

### 16.1.2

- missing.js extensions for Icu imports

### 16.1.1

- exports for `IcuTrans` component [1873](https://github.com/i18next/react-i18next/pull/1873)

### 16.1.0

- Introduce `IcuTrans` component [1869](https://github.com/i18next/react-i18next/issues/1869)

### 16.0.1

- fix: Using <Trans> component with named tags throws error when Selector API is enabled [1867](https://github.com/i18next/react-i18next/issues/1867) with [1868](https://github.com/i18next/react-i18next/pull/1868)

### 16.0.0

- major upgrade i18next dep to address [1865](https://github.com/i18next/react-i18next/issues/1865)

### 15.7.4

- downgrade i18next dep to address [1865](https://github.com/i18next/react-i18next/issues/1865)

### 15.7.3

- exports TransSelectorProps [1862](https://github.com/i18next/react-i18next/pull/1862) to address [1861](https://github.com/i18next/react-i18next/issues/1861)

### 15.7.2

- update i18next dependency

### 15.7.1

- Fix: \_EnableSelector type (for compatibility, enableSelector does not exist in TypeOptions) [1858](https://github.com/i18next/react-i18next/pull/1858)

### 15.7.0

- add new selector API to improve TypeScript IDE performance [1852](https://github.com/i18next/react-i18next/pull/1852)
  - read more about it [here](https://github.com/i18next/i18next/blob/master/CHANGELOG.md#2540)

### 15.6.1

avoid exception when passing bindI18n: false [1856](https://github.com/i18next/react-i18next/pull/1856)

### 15.6.0

fix: passing components as object should still allow for indexed matching of children [1854](https://github.com/i18next/react-i18next/pull/1854)

### 15.5.3

chore: update `@babel/runtime` [1851](https://github.com/i18next/react-i18next/pull/1851)

### 15.5.2

fix element.ref access issue with react 19 [1846](https://github.com/i18next/react-i18next/pull/1846)

### 15.5.1

add typescript as optional peer dependency [1843](https://github.com/i18next/react-i18next/pull/1843)

### 15.5.0

feat: use const type parameters for useTranslation() [1842](https://github.com/i18next/react-i18next/pull/1842)

### 15.4.1

fix: unique key warning on componentized element [1835](https://github.com/i18next/react-i18next/pull/1835)

### 15.4.0

feat: add meta with codes on warnings to allow conditional logging [1826](https://github.com/i18next/react-i18next/pull/1826)

### 15.3.0

Uses the i18next logger instead of the default console logger, if there is a valid i18next instance. Now the debug i18next option is respected, and you can also inject your own logger module: https://www.i18next.com/misc/creating-own-plugins#logger

### 15.2.0

This version may be breaking if you still use React < v18 with TypeScript.
For JS users this version is equal to v15.1.4

- fix: Global JSX namespace is deprecated [1823](https://github.com/i18next/react-i18next/issues/1823) with [1822](https://github.com/i18next/react-i18next/pull/1822)

### 15.1.4

- Fix: warning each child should have a unique key [1820](https://github.com/i18next/react-i18next/pull/1820)

### 15.1.3

- fix: Self-closing REACT components in translation strings should not attempt to replace the component's children [1815](https://github.com/i18next/react-i18next/issues/1815) [1816](https://github.com/i18next/react-i18next/pull/1816)

### 15.1.2

- fix: Attempted to assign to readonly property [1813](https://github.com/i18next/react-i18next/pull/1813)

### 15.1.1

- fix: Not all namespaces are loaded when passing the lng option to useTranslate [1809](https://github.com/i18next/react-i18next/issues/1809)

### 15.1.0

- fix: `<Trans />` warns 'Each child in a list should have a unique "key" prop.' for react 19 [1806](https://github.com/i18next/react-i18next/pull/1806)

### 15.0.3

- try to fix [unexpected token issue](https://github.com/i18next/next-i18next/issues/2302)

### 15.0.2

- try to fix Trans handling with alwaysFormat set to true [1801](https://github.com/i18next/react-i18next/issues/1801)

### 15.0.1

- revert arrow function in class property to address [this](https://github.com/i18next/react-i18next/commit/46e8ea5ff69325b73087811a2ce6a2b1faffa971#r145061161)

### 15.0.0

- use optional chaining, nullish coalescing and nullish coalescing assignment [1774](https://github.com/i18next/react-i18next/pull/1774)
- Build config and optimizations [1769](https://github.com/i18next/react-i18next/pull/1769)
- some dependency updates [1768](https://github.com/i18next/react-i18next/pull/1768)
- use modern hasLoadedNamespace code (now requires at least i18next > v19.4.5 (introduced in june 2020))

### 14.1.3

- create a isObject helper function [1766](https://github.com/i18next/react-i18next/pull/1766)
- optimize nodesToString [1765](https://github.com/i18next/react-i18next/pull/1765)
- Simplifies hasValidReactChildren [1764](https://github.com/i18next/react-i18next/pull/1764)
- create a isString helper to avoid code duplication [1763](https://github.com/i18next/react-i18next/pull/1763)
- use arrow functions where possible [1762](https://github.com/i18next/react-i18next/pull/1762)
- use the commented out async code [1761](https://github.com/i18next/react-i18next/pull/1761)

### 14.1.2

- bring back internal interpolationOverride handling for Trans component (if there are childrens), fixes [1754](https://github.com/i18next/react-i18next/issues/1754)

### 14.1.1

- do not modify passed tOptions context property to address [1745](https://github.com/i18next/react-i18next/issues/1745)

### 14.1.0

- types(`Trans`): add typechecking on context prop [1732](https://github.com/i18next/react-i18next/pull/1732) (might break if using "internal" `Trans` or `TransProps`)

### 14.0.8

- fix: issue [1728](https://github.com/i18next/react-i18next/issues/1728) when useSuspense is false and default ns [1731](https://github.com/i18next/react-i18next/pull/1731)

### 14.0.7

- try to get rid of internal interpolationOverride handling for Trans component, fixes [1729](https://github.com/i18next/react-i18next/issues/1729)

### 14.0.6

- align context handling of Trans component with t function, fixes [1729](https://github.com/i18next/react-i18next/issues/1729)

### 14.0.5

- Fix [1691](https://github.com/i18next/react-i18next/issues/1691) for strict mode, by preserving change language binding [1720](https://github.com/i18next/react-i18next/pull/1720)

### 14.0.4

- fix interpolation of the count prop [1719](https://github.com/i18next/react-i18next/issues/1719)

### 14.0.3

- revert changes done in v14.0.2 since it breaks normal language change render updates

### 14.0.2

- Fix/bug [1691](https://github.com/i18next/react-i18next/issues/1691) make returned t function identical upon second effect run in strict mode [1716](https://github.com/i18next/react-i18next/pull/1716)

### 14.0.1

- types: fix typo in `CustomInstanceExtensions` [1713](https://github.com/i18next/react-i18next/pull/1713)

### 14.0.0

- types: reportNamespaces is now optional, should fix [1693](https://github.com/i18next/react-i18next/issues/1693)

### 13.5.0

- self-closing components in translation strings should not attempt to replace the component's children [1695](https://github.com/i18next/react-i18next/issues/1695)

### 13.4.1

- types: use CustomInstanceExtenstions to extend reportNamespaces

### 13.4.0

- fix: separate cjs and mjs typings

### 13.3.2

- types: fix consider importing '\*.js'

### 13.3.1

- optimize defaultVariables feature introduced in last release

### 13.3.0

- Respect defaultVariables in the interpolation options [1685](https://github.com/i18next/react-i18next/issues/1685)

### 13.2.2

- Fix missing TransWithoutContext type [1672](https://github.com/i18next/react-i18next/pull/1672)

### 13.2.1

- types: Allow iterable ReactI18NextChildren as children [1669](https://github.com/i18next/react-i18next/pull/1669)

### 13.2.0

- Don't use defaults prop as default key [1664](https://github.com/i18next/react-i18next/pull/1664)

### 13.1.2

- postpone usage of newer ES syntax

### 13.1.1

- Render all children regardless of type when using i18nIsDynamicList prop [1661](https://github.com/i18next/react-i18next/pull/1661)

### 13.1.0

- Fix non-list dynamic content in Trans component [1660](https://github.com/i18next/react-i18next/pull/1660)

### 13.0.3

- fix unescape is not consistently called for all values [1657](https://github.com/i18next/react-i18next/issues/1657)

### 13.0.2

- export icu.macro [1652](https://github.com/i18next/react-i18next/issues/1652)

### 13.0.1

- types: Fix performance issue in Trans component [1646](https://github.com/i18next/react-i18next/pull/1646)

### 13.0.0

- Update types to support t function redesign [1615](https://github.com/i18next/react-i18next/pull/1615)
- requires i18next >= v23.0.1

### 12.3.1

- optimization for optional lng prop for useTranslation, should now prevent missings when lazy loading translations [1637](https://github.com/i18next/react-i18next/issues/1637)

### 12.3.0

- optional lng prop for useTranslation (helping on server side [1637](https://github.com/i18next/react-i18next/issues/1637))

### 12.2.2

- try to fix conditional exports in package.json

### 12.2.1

- type fix: the type of defaultNS in I18nextProvider should support string[] [1633](https://github.com/i18next/react-i18next/pull/1633)

### 12.2.0

- if defaultValue is passed in not ready t functio (via useTranslation) return that instead of the key, even though the user-land could should be fixed [1618](https://github.com/i18next/react-i18next/issues/1618)

### 12.1.5

- fix react merged types [1606](https://github.com/i18next/react-i18next/pull/1606) originally introduced with #1531 to address #1506

### 12.1.4

- fix crash in gatsby [1594](https://github.com/i18next/react-i18next/issues/1594)

### 12.1.3

- fix fallback of t function in Trans component

### 12.1.2

- fix crash in gatsby [1594](https://github.com/i18next/react-i18next/issues/1594)

### 12.1.1

- fix for node resolution [1589](https://github.com/i18next/react-i18next/issues/1589)

### 12.1.0

- context-less version of Trans component to be used for environments without react context [1588](https://github.com/i18next/react-i18next/pull/1588)

### 12.0.0

- Update t function types to rely on types coming from i18next [1501](https://github.com/i18next/react-i18next/pull/1501)

### 11.18.6

- types: nsMode [1554](https://github.com/i18next/react-i18next/issues/1554)

### 11.18.5

- support unescaping forward slash [1548](https://github.com/i18next/react-i18next/pull/1548)

### 11.18.4

- fix: reset t when keyPrefix is updated [1544](https://github.com/i18next/react-i18next/pull/1544)

### 11.18.3

- types: bindI18n option for UseTranslationOptions

### 11.18.2

- more html entities to unescape by default [1538](https://github.com/i18next/react-i18next/pull/1538)

### 11.18.1

- types: allow iterable with objects as children [1531](https://github.com/i18next/react-i18next/pull/1531)

### 11.18.0

- ability to add custom unescape function [1529](https://github.com/i18next/react-i18next/pull/1529)

### 11.17.4

- fix: UMD build [1527](https://github.com/i18next/react-i18next/issues/1527)

### 11.17.3

- style: explicit React imports [1525](https://github.com/i18next/react-i18next/pull/1525)

### 11.17.2

- reset t if ns changes in useTranslation [1518](https://github.com/i18next/react-i18next/pull/1518)

### 11.17.1

- Stricter typescript type for Trans components prop [1516](https://github.com/i18next/react-i18next/pull/1516)

### 11.17.0

- Add support for keyPrefix in withTranslation [1512](https://github.com/i18next/react-i18next/pull/1512)

### 11.16.11

- types: fix Translation component types regression [1511](https://github.com/i18next/react-i18next/pull/1511)

### 11.16.10

- types: translation component types [1509](https://github.com/i18next/react-i18next/pull/1509)

### 11.16.9

- types: fix missing generic type for HTMLAttributes [1499](https://github.com/i18next/react-i18next/pull/1499)

### 11.16.8

- types: fix Trans component to support react 18 types, by introducing allowObjectInHTMLChildren TS option [1492](https://github.com/i18next/react-i18next/pull/1492)

### 11.16.7

- types: Added objects explicitly to Trans children [1486](https://github.com/i18next/react-i18next/pull/1486)

### 11.16.6

- fix: warn just once 'i18n.languages were undefined or empty' and return true, like before

### 11.16.5

- types: ReactNode should be prefixed with React [1481](https://github.com/i18next/react-i18next/pull/1481)

### 11.16.4

- fix type 'TFunctionResult' is not assignable to type 'ReactNode' on React 18 [1480](https://github.com/i18next/react-i18next/pull/1480)

### 11.16.3

- types: children fix for React v18 [1478](https://github.com/i18next/react-i18next/pull/1478)
- fix: apply [same fix](https://github.com/i18next/i18next/commit/0dcf7fdede9d58e16f82179b41b09f10eda5aeea) for local hasLoadedNamespace function

### 11.16.2

- update macro to wrap defaults in brackets when necessary [1472](https://github.com/i18next/react-i18next/pull/1472)

### 11.16.1

- types: for context prop of Trans component

### 11.16.0

- fix: transSupportBasicHtmlNodes for keepArray check [1470](https://github.com/i18next/react-i18next/pull/1470)
- feat: add context prop to Trans component [1464](https://github.com/i18next/react-i18next/issues/1464)

### 11.15.7

- types: add nsSeparator to CustomTypeOptions [1471](https://github.com/i18next/react-i18next/pull/1471)

### 11.15.6

- fix error for typescript 4.6 [1453](https://github.com/i18next/react-i18next/pull/1463)

### 11.15.5

- types: fix never return type when using plurals [1453](https://github.com/i18next/react-i18next/pull/1453)

### 11.15.4

- types: add values field to Plural component in macros [1446](https://github.com/i18next/react-i18next/pull/1446)

### 11.15.3

- types: fix for issue introduced with type extension for react-native [1436](https://github.com/i18next/react-i18next/pull/1436)

### 11.15.2

- types: TypeScript interface for the Trans component does now accept react-native props [1418](https://github.com/i18next/react-i18next/pull/1418)

### 11.15.1

- add missing types for shouldUnescape and useTranslation [1429](https://github.com/i18next/react-i18next/pull/1429)

### 11.15.0

- option to unescape html in Trans [1426](https://github.com/i18next/react-i18next/pull/1426)

### 11.14.3

- types: remove undefined from conditional type [1410](https://github.com/i18next/react-i18next/pull/1410)

### 11.14.2

- Add type-safe support to deep keyPrefix [1403](https://github.com/i18next/react-i18next/pull/1403)

### 11.14.1

- Rollback [1402](https://github.com/i18next/react-i18next/pull/1402): Remove generics from Trans component to suppress warning issue [1400](https://github.com/i18next/react-i18next/pull/1400)

### 11.14.0

- Remove generics from Trans component to suppress warning issue [1400](https://github.com/i18next/react-i18next/pull/1400)
- Add type support to plurals [1399](https://github.com/i18next/react-i18next/pull/1399)

### 11.13.0

- feat(types): add type-safe support to keyPrefix option [1390](https://github.com/i18next/react-i18next/pull/1390)
- feat(types): allow key separator augmentation [1367](https://github.com/i18next/react-i18next/pull/1367)

### 11.12.0

- feature: add key prefix support to useTranslation hook [1371](https://github.com/i18next/react-i18next/pull/1371)

### 11.11.4

- typescript: add returnNull and returnEptyString options to TypeOptions interface [1341](https://github.com/i18next/react-i18next/pull/1341)

### 11.11.3

- Trans: parse first, then interpolate [1345](https://github.com/i18next/react-i18next/pull/1345)

### 11.11.2

- feat(typings): support readonly namespaces in TFuncKey [1340](https://github.com/i18next/react-i18next/pull/1340)

### 11.11.1

- feat(types): allow readonly namespaces in useTranslation [1339](https://github.com/i18next/react-i18next/pull/1339)

### 11.11.0

- introduce `CustomTypeOptions` type definition and deprecate the `Resources` type definition [1328](https://github.com/i18next/react-i18next/pull/1328)

### 11.10.0

- add transWrapTextNodes option [1324](https://github.com/i18next/react-i18next/pull/1324) to prevent a well-known Google Translate issue with React apps [1323](https://github.com/i18next/react-i18next/issues/1323), thanks to [feross](https://github.com/feross)

### 11.9.0

- typescript/icu macro: add new syntax for interpolation of complex types [1316](https://github.com/i18next/react-i18next/pull/1316) -> [docs for template usage](https://react.i18next.com/misc/using-with-icu-format#tagged-template-for-icu)

### 11.8.15

- ignore null children in Trans component [1307](https://github.com/i18next/react-i18next/issues/1307)

### 11.8.14

- update html-parse-stringify to fix uppercase elements in Trans component [1304](https://github.com/i18next/react-i18next/issues/1304)

### 11.8.13

- Replace html-parse-stringify2 with html-parse-stringify [1283](https://github.com/i18next/react-i18next/pull/1283) to prevent [CVE-2021-23346](https://github.com/i18next/react-i18next/issues/1275)

### 11.8.12

- refactor: remove unneeded object [1286](https://github.com/i18next/react-i18next/pull/1286)

### 11.8.11

- typescript: Bug fixes [1284](https://github.com/i18next/react-i18next/pull/1284)

### 11.8.10

- typescript: Move type definition files [1276](https://github.com/i18next/react-i18next/pull/1276)

### 11.8.9

- Fix allow to replace i18n in provider with useTranslation hook [1273](https://github.com/i18next/react-i18next/pull/1273)

### 11.8.8

- typescript: Allow `TFuncKey` to be used without specifying the namespace, in the same way TFunction and useTranslation work [1262](https://github.com/i18next/react-i18next/pull/1262)

### 11.8.7

- warning for old wait usage

### 11.8.6

- typescript: Updated TS definitions (adding useSuspense option in TranslationProps) [1247](https://github.com/i18next/react-i18next/pull/1247)

### 11.8.5

- typescript: fix: Inference for specific keys ts 4.1 [1230](https://github.com/i18next/react-i18next/pull/1230)

### 11.8.4

- typescript: Add workaround to suppress infinite instantiation warning [1227](https://github.com/i18next/react-i18next/pull/1227)
- typescript: withTranslation() typing fix for defaultProps [1226](https://github.com/i18next/react-i18next/pull/1226)
- typescript: Accept const components prop for Trans [1224](https://github.com/i18next/react-i18next/pull/1224)

### 11.8.3

- Fix: Return type inference for t function (typescript 4.1) [1221](https://github.com/i18next/react-i18next/pull/1221)

### 11.8.2

- fix: type definitions for typescript 4.1 [1220](https://github.com/i18next/react-i18next/pull/1220)

### 11.8.1

- fix: typescript definitions for t function without namespaces [1214](https://github.com/i18next/react-i18next/pull/1214)

### 11.8.0

- typescript: Make the translation function fully type-safe [1193](https://github.com/i18next/react-i18next/pull/1193)
- trans should work with misleading overloaded empty elements in components [1206](https://github.com/i18next/react-i18next/pull/1206)

### 11.7.4

- fixes passing interpolations options via Trans components tOptions prop [1204](https://github.com/i18next/react-i18next/pull/1204)

### 11.7.3

- Avoid redundant re-rendering in I18nextProvider [1174](https://github.com/i18next/react-i18next/pull/1174)

### 11.7.2

- Avoid setState while react is rendering [1165](https://github.com/i18next/react-i18next/pull/1165)

### 11.7.1

- typescript: fix: typescript definition of context object [1160](https://github.com/i18next/react-i18next/pull/1160)

### 11.7.0

- Trans interpolating self-closing tags in components prop(object) [1140](https://github.com/i18next/react-i18next/pull/1140)

### 11.6.0

- Trans allow components props to be an object containing named interpolation elements

### 11.5.1

- providing filename when running babel.parse in icu.macro [1133](https://github.com/i18next/react-i18next/pull/1133)

### 11.5.0

- Trans: merge option in mapAST [1120](https://github.com/i18next/react-i18next/pull/1120)

### 11.4.0

- Add sideEffects false to package json to allow tree shaking [1097](https://github.com/i18next/react-i18next/pull/1097)

### 11.3.5

- fix returning defaultValue for Trans component [1092](https://github.com/i18next/react-i18next/pull/1092)

### 11.3.4

- [useTranslation] Avoid setting the new `t` function if the component is unmounted. (1051)[https://github.com/i18next/react-i18next/pull/1051]

### 11.3.3

- fixes copying ns in useSSR

### 11.3.2

- typescript: Add optional defaultN [1050](https://github.com/i18next/react-i18next/pull/1050)

### 11.3.1

- typescript: Translation component's ready parameter is missing in TypeScript definition [1044](https://github.com/i18next/react-i18next/pull/1044)
- change hook condition in Trans to equal useTranslations implementation

### 11.3.0

- useSSR: add namespaces to init options options.ns [1031](https://github.com/i18next/react-i18next/issues/1031)
- typescript: Fix the type of the components props of Trans [1036](https://github.com/i18next/react-i18next/pull/1036)

### 11.2.7

- typescript: Allow ComponentType for Trans' `parent` type [1021](https://github.com/i18next/react-i18next/pull/1021)

### 11.2.6

- typescript: Allow html props on Trans, fix `parent` prop type [1019](https://github.com/i18next/react-i18next/pull/1019)

### 11.2.5

- handle array fallback on wrongly configured app ;) [1010](https://github.com/i18next/react-i18next/pull/1010)

### 11.2.4

- typescript: Extend withTranslation tests to include optional props [1009](https://github.com/i18next/react-i18next/pull/1009)

### 11.2.3

- Store should be initialized after useSSR [1008](https://github.com/i18next/react-i18next/pull/1008)

### 11.2.2

- Only pass forwardedRef to children if options.withRef is false [999](https://github.com/i18next/react-i18next/pull/999)

### 11.2.1

- remove used jsx in withTranslation to avoid issues while compiling [994](https://github.com/i18next/react-i18next/pull/994)

### 11.2.0

- withTranslation allow not only passing a ref with option withRef but also passing a forwardedRef from outside as props (before forwardedRef was only added to wrapped component if the withRef option was set) [992](https://github.com/i18next/react-i18next/pull/992)

### 11.1.0

- Update `rollup.config.js` for IE11 Transpilations [988](https://github.com/i18next/react-i18next/pull/988)

### 11.0.1

- typescript: Use updated ts export default from i18next [984](https://github.com/i18next/react-i18next/pull/984)

### 11.0.0

- **Breaking** based on i18next changes made in [v18.0.0](https://github.com/i18next/i18next/blob/master/CHANGELOG.md#1800) changing the language should not trigger a Suspense anylonger. The state will be ready and `t` bound to the previous language until `languageChanged` get triggered -> this results in a nicer experience for users (no flickering Suspense while changing the language). Based on issue "Suspence is fired during lang change when useTranslation called in between" [975](https://github.com/i18next/react-i18next/issues/975)
- the default bindI18n is now `languageChanged` and `languageChanging` was removed from that default
- Adding `languageChanging` to bindI18n will bring back old behaviour where a language change will trigger a Suspense / ready: false while loading those new translations
- You can now override the defaults in i18next.options.react for `bindI18n`, `bindI18nStore` and `useSuspense` in the hook by `useTranslation(ns, { bindI18n, bindI18nStore, useSuspense})` or in the HOC by passing those as props.

### 10.13.2

- typescript: Add t function to TransProps types [969](https://github.com/i18next/react-i18next/pull/969)
- lint: Fix linter errors [966](https://github.com/i18next/react-i18next/pull/966)

### 10.13.1

- avoid conditional hook call in edge case (was only issue in wrong setup useContext outside I18nextProvider) [951](https://github.com/i18next/react-i18next/pull/951)

### 10.13.0

- also use count from `values` object passed to Trans if passed - else use the one on props [947](https://github.com/i18next/react-i18next/pull/947)

### 10.12.5

- typescript: Update types for reportNamespaces [945](https://github.com/i18next/react-i18next/pull/945)
- typescript: Improve withSSR type definition [943](https://github.com/i18next/react-i18next/pull/943)

### 10.12.4

- ICU: Fixes macro to support count prop and expressions better [939](https://github.com/i18next/react-i18next/pull/939)

### 10.12.3

- avoid conditional hook call in edge case (wrong setup) [935](https://github.com/i18next/react-i18next/pull/935)

### 10.12.2

- Trans: do not replace html tags in translation strings that are not in the transKeepBasicHtmlNodesFor array [919](https://github.com/i18next/react-i18next/issues/919)

### 10.12.1

- Set ready flag to false when i18n instance has not been initialised [918](https://github.com/i18next/react-i18next/pull/918)

### 10.12.0

- fix / extend icu.macro: ICU: Trans macro will parse defaults as alternate to children [917](https://github.com/i18next/react-i18next/pull/917)

### 10.11.5

- typescript: fix types for use() [912](https://github.com/i18next/react-i18next/pull/912)

### 10.11.4

- assert edge case trans component get set a key
- assert context get destructed of empty object if context gets used falsely on a component got pulled out of main tree from react-portal or similar

### 10.11.3

- only apply initial values in useSSR, withSSR on i18next instances not being a clone (eg. created by express middleware on server) ==> don't apply on serverside

### 10.11.2

- Reload translations whenever namespaces passed to useTranslation() change [878](https://github.com/i18next/react-i18next/pull/878)

### 10.11.1

- fixes a regression in Trans component taking namespace from passed t function [867](https://github.com/i18next/react-i18next/issues/867#issuecomment-502395958)

### 10.11.0

- Restore support passing the defaultNS via I18nextProvider prop [860](https://github.com/i18next/react-i18next/pull/860)

### 10.10.0

- HOC: expose wrapped component as WrappedComponent property [853](https://github.com/i18next/react-i18next/pull/853)

### 10.9.1

- Fix useEffect mount/unmount usage [852](https://github.com/i18next/react-i18next/pull/852)

### 10.9.0

- trigger suspense on languageChanging by add listening to that event too (new in i18next@15.1.0) - if you do not like this behaviour of suspending during languageChange - remove it from bindI18n

### 10.8.1

- expose context [829](https://github.com/i18next/react-i18next/pull/829)

### 10.8.0

- Support taking values for interpolation not only from content but the props count, values too: Replace count prop from <Trans> in translation string automatically [826](https://github.com/i18next/react-i18next/issues/826)

### 10.7.0

- brings back nsMode=default|fallback [822](https://github.com/i18next/react-i18next/pull/822)
- typescript: Add missing type definition for withTranslation options [821](https://github.com/i18next/react-i18next/pull/821)

### 10.6.2

- Fix Trans component ignore default options [818](https://github.com/i18next/react-i18next/pull/818)

### 10.6.1

- useTranslation useEffect also guard against unmounted for bound events...seems unmount and actual call to useEffect cleanup are not in correct order (component is first unmounted and then unbound - should be vice versa)

### 10.6.0

- use forwardRef for withTranslation [802](https://github.com/i18next/react-i18next/pull/802)
- fixes Translation reset after component is unmounted with useTranslation [801](https://github.com/i18next/react-i18next/issues/801)

### 10.5.3

- Fix the displayName of HOC components [798](https://github.com/i18next/react-i18next/pull/798)

### 10.5.2

- fixes: transSupportBasicHtmlNodes doesn't work with self-closing Trans [790](https://github.com/i18next/react-i18next/issues/790)

### 10.5.1

- ReferenceError: setImmediate is not defined [787](https://github.com/i18next/react-i18next/issues/787)

### 10.5.0

- Adding support for nested component inside Trans that are a list.map like `<ul>{['a', 'b'].map(item => ( <li key={item}>{item}</li> ))}</ul>` [784](https://github.com/i18next/react-i18next/pull/784) (Adding `<ul i18nIsDynamicList>` will also create correct missing string)

### 10.4.2

- typescript: updated typescript definition of the UseTranslationOptions interface, added the useSuspense configuration property [778](https://github.com/i18next/react-i18next/pull/778)

### 10.4.1

- allow p in Trans

### 10.4.0

- allow br, strong, i tags be used for translations handled by Trans

### 10.3.1

- IE11 sending console as the first argument to apply [774](https://github.com/i18next/react-i18next/pull/774)

### 10.3.0

- Allow to enable/disable useSuspense at a hook or component level [769](https://github.com/i18next/react-i18next/pull/769)
- typescript: Add ready/tReady type definitions [753](https://github.com/i18next/react-i18next/pull/753)

### 10.2.1

- fix cimode won't load therefore won't be ready [768](https://github.com/i18next/react-i18next/issues/768)

### 10.2.0

- Add bindI18nStore event options to listen to store changes if needed [749](https://github.com/i18next/react-i18next/pull/749)

### 10.1.2

- allow passing ready if i18next not initialized yet but initialStore set (timing issue in razzle)

### 10.1.1

- forward ready state in withTranslation, Translation

### 10.1.0

- better naming for Wrappers in HOC for easier use of react debugger in console
- allow setting options react.useSuspense to false on i18next.init to avoid usage of suspense

### 10.0.5

- fixes namespace loading for false inital state undefined
- typescript: Make children optional within TransProps [728](https://github.com/i18next/react-i18next/pull/728)

### 10.0.4

- try avoiding pull in of regenerator runtime for async usage -> use Promise for now

### 10.0.3

- fix initial props on withSSR

### 10.0.2

- refactor ready state in useTranslation

### 10.0.1

- allow object spread `const { t } = useTranslation()` [714](https://github.com/i18next/react-i18next/pull/714)
- typescript: add types for I18nextProvider [721](https://github.com/i18next/react-i18next/pull/721)

### 10.0.0

- released to npm
- for MIGRATION READ [https://react.i18next.com/latest/migrating-v9-to-v10](https://react.i18next.com/latest/migrating-v9-to-v10)

### 10.0.0-alpha.3

- hooks: make reportNS bound to the i18n instance - so report is per request [711](https://github.com/i18next/react-i18next/issues/711)

### 10.0.0-alpha.2

- hooks: add Translation render prop [708](https://github.com/i18next/react-i18next/issues/708)
- hooks: add I18nextProvider for passing i18n instance via context
- hooks: might fix infinit loop issue on undefined language (set ready to true anyway) [673](https://github.com/i18next/react-i18next/issues/673)

### 10.0.0-alpha.1

- hooks: initial alpha version with all build targets -> preparing v10 release

### 9.0.10

- typescript: Add TS definition for reportNS prop [699](https://github.com/i18next/react-i18next/pull/699)

### 9.0.9

- typescript: fix: useTranslation hooks typing [698](https://github.com/i18next/react-i18next/pull/698)

### 9.0.8

- typescript: TFunction usage inside NamespacesConsumer should behave [694](https://github.com/i18next/react-i18next/pull/694)

### 9.0.7

- fixing react-i18next throwing webpack error when initializeing using @babel/runtime 7.3.0 [685](https://github.com/i18next/react-i18next/issues/685)

### 9.0.6

- updated all deps

### 9.0.5

- UMD: Environment optimization with rollup-plugin-replace support [683](https://github.com/i18next/react-i18next/pull/683)

### 9.0.4

- typescript: add generic type to t function and the tests [665](https://github.com/i18next/react-i18next/pull/665)
- hooks: enable passing in i18n to useTranslation hook so we could wrap that with a useContext enabled hook

### 9.0.3

- fix useSSR for hooks storing state on i18n instance and not globally [671](https://github.com/i18next/react-i18next/issues/671)
- should fix case where fallbackLng is set false and invalid lng is loaded in hooks -> never ready [677](https://github.com/i18next/react-i18next/issues/677)
- multiple typescript improvements

### 9.0.2

- fix hooks ts [658](https://github.com/i18next/react-i18next/pull/658)

### 9.0.1

- fix ts [655](https://github.com/i18next/react-i18next/pull/655)

### 9.0.0

- allow defining `transEmptyNodeValue` in i18next.options.react to set a default fallback value for empty nodes to allow i18next fallback flow [462](https://github.com/i18next/react-i18next/pull/462)
- Warn if i18next instance is a promise [652](https://github.com/i18next/react-i18next/pull/652)
- keeping legacy names (no deprecation on them as this will be last version using those -> v10 will be based on hooks)

**BREAKING**

- out of licensing reasons the ponyfill for react-context had to be removed [635](https://github.com/i18next/react-i18next/issues/635)

Using react >= 16.3.0 will be save - in other cases you will need to polyfill react.createContext yourself!!

### 8.4.0

- update typescript definitions for i18next v13 [631](https://github.com/i18next/react-i18next/pull/631)

### 8.3.9

- try fixing hooks ready algorithm [642](https://github.com/i18next/react-i18next/issues/642)

### 8.3.8

- try fixing edge case of unset state: [615](https://github.com/i18next/react-i18next/issues/615)

### 8.3.7

- handle initial SSR props only once

### 8.3.6

- remove componentWillReceiveProps call in I18nextProvider to comply with react strict mode [596](https://github.com/i18next/react-i18next/pull/596)

### 8.3.5

- rename named export to window.ReactI18next for standalone js

### 8.3.4

- try fixing standalone browser build

### 8.3.3

- remove wait option in hooks code (not used anylonger)

### 8.3.2

- use react suspense in hooks experimental code [learn more](https://react.i18next.com/experimental/using-with-hooks)

### 8.3.1

- make export in ./hooks.js explicit

### 8.3.0

- Ensure withI18n hoists static members. [584](https://github.com/i18next/react-i18next/pull/584)

### 8.2.0

- comes with support for hooks that are experimental in react v16.7.0-alpha [learn more](https://react.i18next.com/experimental/using-with-hooks)

### 8.1.2

- publish changes to typescript definitions [567](https://github.com/i18next/react-i18next/pull/567)

### 8.1.1

- persisting generated i18nOptions on withI18n hoc to avoid rerenders on pure components

### 8.1.0

- add typedefinitions [557](https://github.com/i18next/react-i18next/pull/557)

### 8.0.8

- add innerRefs support to withContext, withI18n

### 8.0.7

- replaces getWrappedInstance on withNamespaces / translate with passing a innerRef https://github.com/facebook/react/issues/13456 [534](https://github.com/i18next/react-i18next/issues/534)

### 8.0.6

- fix SSR cases

### 8.0.5

- fix issue with context not applied when merging i18n options

### 8.0.4

- add prop-types to peer deps as long we use the ponyfill create-react-context

### 8.0.3

- remove prop-types in tests

### 8.0.2

- remove proptypes dependency - not needed anylonger as we do not define old context
- move out ssr stuff to utils
- move reportNS to the NamespacesConsumer

### 8.0.1

- use @babel/plugin-transform-runtime

### 8.0.0

- translate HOC was renamed to "withNamespaces" as it controls which namespaces should be loaded
- I18n render prop was renamed to "NamespacesConsumer" as it controls which namespaces should be "consumed"
- there is a new context.consuming HOC "withI18n" adds i18n, t to component props (without the extra options of withNamespaces)

- there is a simplification for interpolation in translations

`'Hello <1><0>{{name}}</0></1>, you have <3>{{count}}</3> message. Open <5>hear</5>.'`

can be written as:

`'Hello <1>{{name}}</1>, you have {{count}} message. Open <5>hear</5>.'`

=> there is no need to add `<0>...</0>` around interpolated values anylonger
=> your old files having those extra pseudo tags will still work without needing to change them

- there is a new I18nContext -> I18nContext.provider, I18next.consumer using new react context api

**Using react's new context api**

should be non breaking in most cases, with following exceptions:

- using preact you will have to use preact.createContext plugin (or eventual hope the provided polyfill works for preact too)
- you used the translate.getWrappedInstance function -> you will need to use instance.getWrappedInstance().getWrappedInstance() now as the translate hoc is now wrapped in an additional I18nContext.Consumer

still we prefer to increase this to a **major version** as beside the described egde cases there might be other effects we not have covered with our tests

### 7.13.0

- Load missing namespaces when updating ns prop on I18n component [523](https://github.com/i18next/react-i18next/pull/523)

### 7.12.0

- pass down lng via props in I18n and translate HOC - for use cases like [508](https://github.com/i18next/react-i18next/issues/508)

### 7.11.1

- fix related to issue #504: also report default Namespace with translate() [506](https://github.com/i18next/react-i18next/pull/506)

### 7.11.0

- Added reportNS function to I18NextProvider to report used namespaces [500](https://github.com/i18next/react-i18next/pull/500)

### 7.10.1

- fix small issue in icu.macro introduced on refactoring

### 7.10.0

- Adds import { Trans, Plural, Select } from `react-i18next/icu.macro` a babel macro to allow nicer components used with ICU format (which as default would result in invalid JSX). [discussion](https://github.com/i18next/react-i18next/issues/439)

### 7.9.1

- Skip custom html tags in Trans component translation [PR482](https://github.com/i18next/react-i18next/pull/482)

### 7.9.0

- Support defaultNS from I18nextProvider props [PR478](https://github.com/i18next/react-i18next/pull/478)
- Don't polyfill Object.entries globally [476](https://github.com/i18next/react-i18next/pull/476)

### 7.8.1

- i18n in context is optional as it can be passed via props too [474](https://github.com/i18next/react-i18next/pull/474)

### 7.8.0

- avoid rerenders triggered by bound i18next events while I18n or translate hoc are not ready yet (omitBoundRerender: true --- is default) [456](https://github.com/i18next/react-i18next/issues/456)

### 7.7.0

- Allow Trans component to be used with props only for icu use case (next step babel makro) [439](https://github.com/i18next/react-i18next/issues/439)

### 7.6.1

- Allow to pass a function as parent for <Trans /> component [PR424](https://github.com/i18next/react-i18next/pull/424)

### 7.6.0

- adds tOptions to Trans component to support ICU
- removes componentWillMount lifecycle method from I18n.js render props as it will get deprecated on react 16.3 [404](https://github.com/i18next/react-i18next/issues/404)

### 7.5.1

- Fix reference to props in constructor [PR411](https://github.com/i18next/react-i18next/pull/411)

### 7.5.0

- passes down tReady from translate hoc for cases you prefer showing a placeholder instead of default return null in case of wait: true and not yet loaded translations [PR400](https://github.com/i18next/react-i18next/pull/400)
- I18n render prop calls with ready as third param

### 7.4.0

- enables setting prop `ns` on Trans component to override namespace passed by render prop or hoc
- allows trans component with no children just returning the string getting from translations

### 7.3.6

- reorder selection of i18n in I18n render prop

### 7.3.5

- reorder selection of i18n in I18n render prop

### 7.3.4

- more save access to options in general

### 7.3.3

- more save access to options.react

### 7.3.2

- replace Interpolate PureComponent with Component to assert it gets rerendered on lng change

### 7.3.1

- remove react-dom from peer dependencies as module is used in react-native too

### 7.3.0

- Allow translate HOC to take a function for getting namespaces [372](https://github.com/i18next/react-i18next/pull/372)

### 7.2.0

- Add usePureComponent option [PR357](https://github.com/i18next/react-i18next/pull/357)
- Render empty string on empty string as Trans child [PR364](https://github.com/i18next/react-i18next/pull/364)

### 7.1.1

- fixes: bring back Trans component t fc from context

### 7.1.0

- optional take i18n.t in Trans component if non t function passed in via props or context

### 7.0.2

- fixes rendering in Trans component in case of no parent

### 7.0.1

- working Trans component without the need of setting options.react

### 7.0.0

- **[BREAKING]** As with react 16 you can return multiple elements from render - based on that we do not need to return a wrapper any longer from Trans component.

Starting with v7.0.0 Trans component per default won't add a parent div around content passed as children. It will just return it's children.

You still got the option to set a parent if you prefer content being wrapped.

If you prefer wrapping for all your Trans components (or for backwards compatibility) you can set option `react.defaultTransParent` to an element on i18next init.

### 6.2.0

- adds hashTransKey function for custom key generation in case of not passing a key to Trans component and not like having the source value as key

### 6.1.0

- pre-check namespaces to avoid unnecessary initial `null` render [PR336](https://github.com/i18next/react-i18next/pull/336)

### 6.0.6

- remove PureComponent from Trans

### 6.0.5

- fixes support passing i18n and t to Trans as props [PR315](https://github.com/i18next/react-i18next/pull/315)

### 6.0.4

- fixes translate hoc build

### 6.0.3

- stop using PureComponent and use Component again...seems we get an issue with react-router v4 if using PureComponents
- recreate t function on i18next updates so PureComponents relying on t get an update triggered

### 6.0.2

- rebuild needed cause of uppercasing for components name was not reflected in last build

### 6.0.1

- remove react from dependencies - not sure how that came into the package.json

### 6.0.0

- **[BREAKING]** removes options to set translateFuncName in translate hoc (was not supported in Trans and Interpolate component anyway)
- setting i18n instance and defaults can now be done by i18next.use(reactI18nextModule) making I18nextProvider obsolete
- As an alternative to the translate hoc you now can use the I18n component supporting a render props (for details about render props https://www.youtube.com/watch?v=BcVAq3YFiuc)

### 5.4.1

- fixes AST implementation for preact

### 5.4.0

- replaces regex used to parse nodes from string to an ast implementation solving [#298](https://github.com/i18next/react-i18next/issues/298)

### 5.3.0

- Pass extra parameters to Trans parent component

### 5.2.0

- adds module export in package.json pointing to es dist files.

### 5.1.0

- you now can set i18n instance on translate hoc once using setI18n:

```
import translate from 'react-i18next';
import i18n from './i18n';

translate.setI18n(i18n);
```

### 5.0.0

- **[BREAKING]** we no longer accept wait to be specified on i18next init options like `{ wait: true }` -> all overrides for the translate hoc now have to be in child `react` like `{ react: { wait: true } }`
- you now can override all the default options for translate hoc by setting them on i18next.init (excluding `translateFuncName` as we need that upfront to define childContextTypes)

```
i18next.init({
  // ... other options
  react: {
    wait: false,
    withRef: false,
    bindI18n: 'languageChanged loaded',
    bindStore: 'added removed',
    nsMode: 'default'
  }
});
```

- you now can override all defaults for translate hoc options (including `translateFuncName`) by using:

```
import translate from 'react-i18next';

translate.setDefaults({
  wait: false,
  withRef: false,
  bindI18n: 'languageChanged loaded',
  bindStore: 'added removed',
  nsMode: 'default',
  translateFuncName: 't'
});
```

### 4.8.0

- make trans component work with preact and preact-compat
- add preact example

### 4.7.0

- Trans component parent element configurable [PR278](https://github.com/i18next/react-i18next/pull/278)

### 4.6.4

- optimize generated defaultValue for components not having children

### 4.6.3

- move react, prop-types, ... to peerDependency again

### 4.6.2

- optimize trans component output

### 4.6.1

- fixes issue in changeLanguage on set via translate hoc ssr

### 4.6.0

- allow passing initialI18nStore and initialLanguage to I18nextProvider via props to support simpler ssr
- adds a serverside rendering sample based on razzle

### 4.5.0

- pass i18n instance to context inside translate hoc to simplify usage in nextjs
- options.react.exposeNamespace will expose namespace on data-i18next-options for consuming in editors

### 4.4.0

- introduces Trans component which enables you to translate nested components incl. interpolation by resulting in one translatable string. [learn more](https://react.i18next.com/components/trans-component.html)

### 4.3.0

- allow passing down initialI18nStore and initialLanguage to translate hoc to support ssr scenario better see example/nextjs

### 4.2.0

- allow passing i18next instance in translate hoc options makes integration in nextjs easier

### 4.1.2

- Remove workaround to set ready if there was no initialized signal [PR263](https://github.com/i18next/react-i18next/pull/263)

### 4.1.1

- Fix react-i18next to work with TypeScript [PR261](https://github.com/i18next/react-i18next/pull/261)

### 4.1.0

- eslint cleanup
- a lot more tests
- flag nsMode: 'fallback' -> uses namespaces passed to translate hoc as fallbacks [#254](https://github.com/i18next/react-i18next/issues/254)

### 4.0.0

- deploys 3.1.1 as possible breaking: fixes issue in fixing t function - pass only first namespace not an array of namespaces (access other namespaces like: this.props.t('namespace:key'))

### 3.1.2

- reverts last change

### 3.1.1

- fixes issue in fixing t function - pass only first namespace not an array of namespaces

### 3.1.0

- fixes wrong warning of missing prop on interpolate with format
- the wait flag on translate hoc can now be set globally on i18next options `i18next.init({ wait: true })`

### 3.0.0

- [BREAKING] assert you install prop-types as a peerDependency based on changes in react >= 15.5.x
- update react to 15.5.x use prop-types module to remove react warnings [PR248](https://github.com/i18next/react-i18next/pull/248)
- update all dependencies
- move react, prop-types to peerDependencies

### 2.2.3

- try not access store if undefined for hmr

### 2.2.1

- fixes validation for missing prop in interpolate component

### 2.2.0

- support formatting inside interpolate component

### 2.1.0

- tanslate hoc: expose the i18n instance via props

### 2.0.0

- translate hoc wait option asserts now that i18next is initialized before rendering (waits for lng detection)
- [BREAKING] needs i18next >= 4.2.0

### 1.11.0

- pass style prop to interpolate component
- define i18next as a peerDependency

### 1.10.1

- Suppresses required context type warning if passing i18n as a prop [PR205](https://github.com/i18next/react-i18next/pull/205)

### 1.10.0

- allow passing i18next instance via props to translate hoc [PR203](https://github.com/i18next/react-i18next/pull/203)

### 1.9.0

- adds options bindI18n, bindStore can be set to false or string of events to bind for triggering updates

### 1.8.0

- allows to set a className on interpolate component
- update all dependencies and devDependencies

### 1.7.0

- add option to change t function name to something else [PR196](https://github.com/i18next/react-i18next/pull/196)
- Added an option of using the <Interpolate /> with a raw HTML [PR195](https://github.com/i18next/react-i18next/pull/195)

### 1.6.3

- only trigger loaded namespaces if mounted

### 1.6.2

- update for react 15.2, eliminates Unknown Prop Warning

### 1.6.1

- Added conditional warning on unmatched variable during interpolation [PR 160](https://github.com/i18next/react-i18next/pull/160

### 1.6.0

- Hoist non react statics [PR 150](https://github.com/i18next/react-i18next/pull/150

### 1.5.3

- Handle i18next added and removed resource events [PR 150](https://github.com/i18next/react-i18next/pull/150

### 1.5.2

- move ns loading to did mount

### 1.5.1

- possible fix for HRM issues

### 1.5.0

- adds wait option, which delays initial rendering until translations are loaded

### 1.4.2

- possible fix for HRM issues

### 1.4.1

- change global name

### 1.4.0

- adds getWrappedInstance() to translate wrapper

### 1.3.0

- Support for universal apps / server-side rendering [PR 52](https://github.com/i18next/react-i18next/pull/52)

### 1.2.2

- fixes bower json - bower publish only

### 1.2.0

- change build to rollup

### 1.1.0

- added WrappedComponent property to translate wrapper [PR 15](https://github.com/i18next/react-i18next/pull/15)

### 1.0.1

- fixing export of index

### 1.0.0

- change package.json main to `/lib/index.js`
- move build from gulp to npm run script


================================================
FILE: LICENSE
================================================
The MIT License (MIT)

Copyright (c) 2015-present i18next

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.



================================================
FILE: README.md
================================================
# react-i18next [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Awesome%20react-i18next%20for%20react.js%20based%20on%20i18next%20internationalization%20ecosystem%20&url=https://github.com/i18next/react-i18next&via=jamuhl&hashtags=i18n,reactjs,js,dev)

[![CI](https://github.com/i18next/react-i18next/actions/workflows/CI.yml/badge.svg)](https://github.com/i18next/react-i18next/actions/workflows/CI.yml)
[![Coverage Status](https://coveralls.io/repos/github/i18next/react-i18next/badge.svg)](https://coveralls.io/github/i18next/react-i18next)
[![Quality][quality-badge]][quality-url]
[![npm][npm-dl-badge]][npm-url]

[npm-icon]: https://nodei.co/npm/react-i18next.png?downloads=true
[npm-url]: https://npmjs.org/package/react-i18next
[quality-badge]: https://npm.packagequality.com/shield/react-i18next.svg
[quality-url]: https://packagequality.com/#?package=react-i18next
[npm-dl-badge]: https://img.shields.io/npm/dw/react-i18next

### IMPORTANT:

Master Branch is the newest version using hooks (>= v10).

```bash
$ >=v10.0.0
npm i react-i18next
```

**react-native: To use hooks within react-native, you must use react-native v0.59.0 or higher**

For the legacy version please use the [v9.x.x Branch](https://github.com/i18next/react-i18next/tree/v9.x.x)

```bash
$ v9.0.10 (legacy)
npm i react-i18next@legacy
```

### Documentation

The documentation is published on [react.i18next.com](https://react.i18next.com) and PR changes can be supplied [here](https://github.com/i18next/react-i18next-gitbook).

The general i18next documentation is published on [www.i18next.com](https://www.i18next.com) and PR changes can be supplied [here](https://github.com/i18next/i18next-gitbook).

### What will my code look like?

**Before:** Your react code would have looked something like:

```html
...
<div>Just simple content</div>
<div>
  Hello <strong title="this is your name">{name}</strong>, you have {count} unread message(s). <Link to="/msgs">Go to messages</Link>.
</div>
...
```

**After:** With the trans component just change it to:

```html
...
<div>{t('simpleContent')}</div>
<Trans i18nKey="userMessagesUnread" count={count}>
  Hello <strong title={t('nameTitle')}>{{name}}</strong>, you have {{count}} unread message. <Link to="/msgs">Go to messages</Link>.
</Trans>
...
```

### 📖 What others say

- [How to properly internationalize a React application using i18next](https://locize.com/blog/react-i18next/) by Adriano Raiano
- [I18n with React and i18next](https://alligator.io/react/i18n-with-react-and-i18next) via Alligator.io by Danny Hurlburt
- [Ultimate Localization of React (Mobx) App with i18next](https://itnext.io/ultimate-localization-of-react-mobx-app-with-i18next-efab77712149) via itnext.io by Viktor Shevchenko
- [Internationalization for react done right Using the i18next i18n ecosystem](https://reactjsexample.com/internationalization-for-react-done-right-using-the-i18next-i18n-ecosystem/) via reactjsexample.com
- [How to translate React application with react-i18next](https://codetain.com/blog/how-to-translate-react-application-with-react-i18next/) via codetain.co by Norbert Suski
- [Building i18n with Gatsby](https://www.gatsbyjs.org/blog/2017-10-17-building-i18n-with-gatsby/) via gatsbyjs.org by Samuel Goudie
- [Get your react.js application translated with style](https://medium.com/@jamuhl/get-your-react-js-application-translated-with-style-4ad090aefc2c) by Jan Mühlemann
- [Translate your expo.io / react-native mobile application](https://medium.com/@jamuhl/translate-your-expo-io-react-native-mobile-application-aa220b2362d2) by Jan Mühlemann
- You're welcome to share your story...

### Why i18next?

- **Simplicity:** no need to change your webpack configuration or add additional babel transpilers, just use create-react-app and go.
- **Production ready** we know there are more needs for production than just doing i18n on the clientside, so we offer wider support on [serverside](https://www.i18next.com/overview/supported-frameworks) too (nodejs, php, ruby, .net, ...). **Learn once - translate everywhere**.
- **Beyond i18n** comes with [Locize](https://locize.com) bridging the gap between development and translations - covering the whole translation process. Now with a **Free plan** for your side projects!

![ecosystem](https://raw.githubusercontent.com/i18next/i18next/master/assets/i18next-ecosystem.jpg)

### Localization workflow

Want to learn more about how seamless your internationalization and translation process can be?

[![video](example/locize/video_sample.png)](https://youtu.be/osScyaGMVqo)

[watch the video](https://youtu.be/osScyaGMVqo)

### Installation

Source can be loaded via [npm](https://www.npmjs.com/package/react-i18next) or [downloaded](https://github.com/i18next/react-i18next/blob/master/react-i18next.min.js) from this repo.

```
# npm package
$ npm install react-i18next
```

- If you don't use a module loader it will be added to `window.reactI18next`

### Do you like to read a more complete step by step tutorial?

[Here](https://locize.com/blog/react-i18next/) you'll find a simple tutorial on how to best use react-i18next.
Some basics of i18next and some cool possibilities on how to optimize your localization workflow.

### Examples

- [Example react](https://github.com/i18next/react-i18next/tree/master/example/react)
- [React examples with typescript](https://github.com/i18next/react-i18next/tree/master/example/react-typescript)
- [Example locize.com](https://github.com/i18next/react-i18next/tree/master/example/locize)

#### v9 samples

- [Example react](https://github.com/i18next/react-i18next/tree/v9.x.x/example/react)
- [Example preact](https://github.com/i18next/react-i18next/tree/v9.x.x/example/preact)
- [Example react-native](https://github.com/i18next/react-i18next/tree/v9.x.x/example/reactnative-expo)
- [Example expo.io](https://github.com/i18next/react-i18next/tree/v9.x.x/example/reactnative-expo)
- [Example next.js](https://github.com/i18next/react-i18next/tree/v9.x.x/example/nextjs)
- [Example razzle](https://github.com/i18next/react-i18next/tree/v9.x.x/example/razzle-ssr)
- [Example hashbase / beaker browser](https://github.com/i18next/react-i18next/tree/v9.x.x/example/dat)
- [Example storybook](https://github.com/i18next/react-i18next/tree/v9.x.x/example/storybook)
- [Example locize.com](https://github.com/i18next/react-i18next/tree/v9.x.x/example/locize)
- [Example test with jest](https://github.com/i18next/react-i18next/tree/v9.x.x/example/test-jest)

### Requirements

- react >= **16.8.0**
- react-dom >= **16.8.0**
- react-native >= **0.59.0**
- i18next >= **10.0.0** (typescript users: >=17.0.9)

#### v9

- react >= **0.14.0** (in case of < v16 or preact you will need to define parent in [Trans component](https://react.i18next.com/legacy-v9/trans-component#trans-props) or globally in [i18next.react options](https://react.i18next.com/legacy-v9/trans-component#additional-options-on-i-18-next-init))
- i18next >= **2.0.0**

## Core Contributors

Thanks goes to these wonderful people ([emoji key](https://github.com/kentcdodds/all-contributors#emoji-key)):

<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
  <tr>
    <td align="center"><a href="http://twitter.com/jamuhl"><img src="https://avatars3.githubusercontent.com/u/977772?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jan Mühlemann</b></sub></a><br /><a href="https://github.com/i18next/react-i18next/commits?author=jamuhl" title="Code">💻</a> <a href="#example-jamuhl" title="Examples">💡</a> <a href="https://github.com/i18next/react-i18next/pulls?q=is%3Apr+reviewed-by%3Ajamuhl+" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/i18next/react-i18next/commits?author=jamuhl" title="Documentation">📖</a> <a href="#question-jamuhl" title="Answering Questions">💬</a></td>
    <td align="center"><a href="http://twitter.com/#!/adrirai"><img src="https://avatars0.githubusercontent.com/u/1086194?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Adriano Raiano</b></sub></a><br /><a href="https://github.com/i18next/react-i18next/commits?author=adrai" title="Code">💻</a> <a href="#example-adrai" title="Examples">💡</a> <a href="https://github.com/i18next/react-i18next/pulls?q=is%3Apr+reviewed-by%3Aadrai+" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/i18next/react-i18next/commits?author=adrai" title="Documentation">📖</a> <a href="#question-adrai" title="Answering Questions">💬</a></td>
    <td align="center"><a href="https://github.com/pedrodurek"><img src="https://avatars1.githubusercontent.com/u/12190482?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Pedro Durek</b></sub></a><br /><a href="https://github.com/i18next/react-i18next/commits?author=pedrodurek" title="Code">💻</a> <a href="#example-pedrodurek" title="Examples">💡</a> <a href="https://github.com/i18next/react-i18next/pulls?q=is%3Apr+reviewed-by%3Apedrodurek+" title="Reviewed Pull Requests">👀</a> <a href="#question-pedrodurek" title="Answering Questions">💬</a></td>
    <td align="center"><a href="https://tigerabrodi.dev/"><img src="https://avatars1.githubusercontent.com/u/49603590?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Tiger Abrodi</b></sub></a><br /><a href="https://github.com/i18next/react-i18next/commits?author=tigerabrodi" title="Code">💻</a> <a href="https://github.com/i18next/react-i18next/pulls?q=is%3Apr+reviewed-by%3Atigerabrodi" title="Reviewed Pull Requests">👀</a></td>
  </tr>
</table>

<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->

<!-- ALL-CONTRIBUTORS-LIST:END -->

This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind are welcome!

---

<h3 align="center">Gold Sponsors</h3>

<p align="center">
  <a href="https://locize.com/" target="_blank">
    <img src="https://raw.githubusercontent.com/i18next/i18next/master/assets/locize_sponsor_240.gif" width="240px">
  </a>
</p>

---

**localization as a service - [Locize](https://www.locize.com)**

Needing a translation management? Want to edit your translations with an InContext Editor? Use the original provided to you by the maintainers of i18next!

**Now with a [Free plan](https://www.locize.com/pricing) for small projects!** Perfect for hobbyists or getting started.

![Locize](https://www.locize.com/img/ads/github_locize.png)

By using [Locize](http://www.locize.com/?utm_source=react_i18next_readme&utm_medium=github) you directly support the future of i18next and react-i18next.

---


================================================
FILE: TransWithoutContext.d.mts
================================================
export * from './TransWithoutContext.js';


================================================
FILE: TransWithoutContext.d.ts
================================================
import type {
  i18n,
  ReactOptions,
  ApplyTarget,
  ConstrainTarget,
  GetSource,
  ParseKeys,
  Namespace,
  SelectorFn,
  TypeOptions,
  TOptions,
  TFunction,
} from 'i18next';
import * as React from 'react';

type _DefaultNamespace = TypeOptions['defaultNS'];
type _EnableSelector = TypeOptions['enableSelector'];

type TransChild = React.ReactNode | Record<string, unknown>;
type $NoInfer<T> = [T][T extends T ? 0 : never];

export type TransProps<
  Key extends ParseKeys<Ns, TOpt, KPrefix>,
  Ns extends Namespace = _DefaultNamespace,
  KPrefix = undefined,
  TContext extends string | undefined = undefined,
  TOpt extends TOptions & { context?: TContext } = { context: TContext },
  E = React.HTMLProps<HTMLDivElement>,
> = E & {
  children?: TransChild | readonly TransChild[];
  components?: readonly React.ReactElement[] | { readonly [tagName: string]: React.ReactElement };
  count?: number;
  context?: TContext;
  defaults?: string;
  i18n?: i18n;
  i18nKey?: Key | Key[];
  ns?: Ns;
  parent?: string | React.ComponentType<any> | null; // used in React.createElement if not null
  tOptions?: TOpt;
  values?: {};
  shouldUnescape?: boolean;
  t?: TFunction<Ns, KPrefix>;
};

export interface TransLegacy {
  <
    Key extends ParseKeys<Ns, TOpt, KPrefix>,
    Ns extends Namespace = _DefaultNamespace,
    KPrefix = undefined,
    TContext extends string | undefined = undefined,
    TOpt extends TOptions & { context?: TContext } = { context: TContext },
    E = React.HTMLProps<HTMLDivElement>,
  >(
    props: TransProps<Key, Ns, KPrefix, TContext, TOpt, E>,
  ): React.ReactElement;
}

export interface TransSelectorProps<
  Key,
  Ns extends Namespace = _DefaultNamespace,
  KPrefix = undefined,
  TContext extends string | undefined = undefined,
  TOpt extends TOptions & { context?: TContext } = { context: TContext },
> {
  children?: TransChild | readonly TransChild[];
  components?: readonly React.ReactElement[] | { readonly [tagName: string]: React.ReactElement };
  count?: number;
  context?: TContext;
  defaults?: string | Key;
  i18n?: i18n;
  i18nKey?: Key | readonly Key[];
  ns?: Ns;
  parent?: string | React.ComponentType<any> | null; // used in React.createElement if not null
  tOptions?: TOpt;
  values?: {};
  shouldUnescape?: boolean;
  t?: TFunction<Ns, KPrefix>;
}

export interface TransSelector {
  <
    Target extends ConstrainTarget<TOpt>,
    Key extends SelectorFn<GetSource<$NoInfer<Ns>, KPrefix>, ApplyTarget<Target, TOpt>, TOpt>,
    const Ns extends Namespace = _DefaultNamespace,
    KPrefix = undefined,
    TContext extends string | undefined = undefined,
    TOpt extends TOptions & { context?: TContext } = { context: TContext },
    E = React.HTMLProps<HTMLDivElement>,
  >(
    props: TransSelectorProps<Key, Ns, KPrefix, TContext, TOpt> & E,
  ): React.ReactElement;
}

export const Trans: _EnableSelector extends true | 'optimize' ? TransSelector : TransLegacy;

export function nodesToString(
  children: React.ReactNode,
  i18nOptions?: ReactOptions,
  i18n?: i18n,
  i18nKey?: string,
): string;

export type ErrorCode =
  | 'NO_I18NEXT_INSTANCE'
  | 'NO_LANGUAGES'
  | 'DEPRECATED_OPTION'
  | 'TRANS_NULL_VALUE'
  | 'TRANS_INVALID_OBJ'
  | 'TRANS_INVALID_VAR'
  | 'TRANS_INVALID_COMPONENTS';

export type ErrorMeta = {
  code: ErrorCode;
  i18nKey?: string;
  [x: string]: any;
};

/**
 * Use to type the logger arguments
 * @example
 * ```
 * import type { ErrorArgs } from 'react-i18next';
 *
 * const logger = {
 *   // ....
 *   warn: function (...args: ErrorArgs) {
 *      if (args[1]?.code === 'TRANS_INVALID_OBJ') {
 *        const [msg, { i18nKey, ...rest }] = args;
 *        return log(i18nKey, msg, rest);
 *      }
 *      log(...args);
 *   }
 * }
 * i18n.use(logger).use(i18nReactPlugin).init({...});
 * ```
 */
export type ErrorArgs = readonly [string, ErrorMeta | undefined, ...any[]];


================================================
FILE: example/ReactNativeLocizeProject/.bundle/config
================================================
BUNDLE_PATH: "vendor/bundle"
BUNDLE_FORCE_RUBY_PLATFORM: 1


================================================
FILE: example/ReactNativeLocizeProject/.eslintrc.js
================================================
module.exports = {
  root: true,
  extends: '@react-native',
};


================================================
FILE: example/ReactNativeLocizeProject/.gitignore
================================================
# OSX
#
.DS_Store

# Xcode
#
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
**/.xcode.env.local

# Android/IntelliJ
#
build/
.idea
.gradle
local.properties
*.iml
*.hprof
.cxx/
*.keystore
!debug.keystore
.kotlin/

# node.js
#
node_modules/
npm-debug.log
yarn-error.log

# fastlane
#
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
# screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/

**/fastlane/report.xml
**/fastlane/Preview.html
**/fastlane/screenshots
**/fastlane/test_output

# Bundle artifact
*.jsbundle

# Ruby / CocoaPods
**/Pods/
/vendor/bundle/

# Temporary files created by Metro to check the health of the file watcher
.metro-health-check*

# testing
/coverage

# Yarn
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions


================================================
FILE: example/ReactNativeLocizeProject/.prettierrc.js
================================================
module.exports = {
  arrowParens: 'avoid',
  bracketSameLine: true,
  bracketSpacing: false,
  singleQuote: true,
  trailingComma: 'all',
};


================================================
FILE: example/ReactNativeLocizeProject/.watchmanconfig
================================================
{}


================================================
FILE: example/ReactNativeLocizeProject/App.tsx
================================================
import {Suspense, Component} from 'react';
import {Text, Button, View} from 'react-native';
import {useTranslation, withTranslation, Trans} from 'react-i18next';
import type {TFunction} from 'i18next';

// use hoc for class based components
class LegacyWelcomeClass extends Component<{t: TFunction}> {
  render() {
    const {t} = this.props;
    return <Text>{t('title')}</Text>;
  }
}
const Welcome = withTranslation()(LegacyWelcomeClass);

// Component using the Trans component
function MyComponent() {
  return (
    <Text>
      <Trans i18nKey="description.part1">
        To get started, edit <Text>src/App.js</Text> and save to reload.
      </Trans>
    </Text>
  );
}

function AppInner() {
  const {t, i18n} = useTranslation();

  const changeLanguage = (lng: string) => {
    i18n.changeLanguage(lng);
  };

  return (
    <View style={{flex: 1, justifyContent: 'center', alignItems: 'center'}}>
      <Welcome />

      <Button
        onPress={() => changeLanguage('en')}
        title="en"
        disabled={i18n.resolvedLanguage === 'en'}
      />
      <Button
        onPress={() => changeLanguage('de')}
        title="de"
        disabled={i18n.resolvedLanguage === 'de'}
      />

      <MyComponent />
      <Text>{t('description.part2')}</Text>
    </View>
  );
}

export default function App() {
  return (
    <Suspense fallback={<Text>loading...</Text>}>
      <AppInner />
    </Suspense>
  );
}


================================================
FILE: example/ReactNativeLocizeProject/Gemfile
================================================
source 'https://rubygems.org'

# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version
ruby ">= 2.6.10"

# Exclude problematic versions of cocoapods and activesupport that causes build failures.
gem 'cocoapods', '>= 1.13', '!= 1.15.0', '!= 1.15.1'
gem 'activesupport', '>= 6.1.7.5', '!= 7.1.0'
gem 'xcodeproj', '< 1.26.0'
gem 'concurrent-ruby', '< 1.3.4'

# Ruby 3.4.0 has removed some libraries from the standard library.
gem 'bigdecimal'
gem 'logger'
gem 'benchmark'
gem 'mutex_m'


================================================
FILE: example/ReactNativeLocizeProject/README.md
================================================
This is a new [**React Native**](https://reactnative.dev) project, bootstrapped using [`@react-native-community/cli`](https://github.com/react-native-community/cli).

# Getting Started

> **Note**: Make sure you have completed the [Set Up Your Environment](https://reactnative.dev/docs/set-up-your-environment) guide before proceeding.

## Step 1: Start Metro

First, you will need to run **Metro**, the JavaScript build tool for React Native.

To start the Metro dev server, run the following command from the root of your React Native project:

```sh
# Using npm
npm start

# OR using Yarn
yarn start
```

## Step 2: Build and run your app

With Metro running, open a new terminal window/pane from the root of your React Native project, and use one of the following commands to build and run your Android or iOS app:

### Android

```sh
# Using npm
npm run android

# OR using Yarn
yarn android
```

### iOS

For iOS, remember to install CocoaPods dependencies (this only needs to be run on first clone or after updating native deps).

The first time you create a new project, run the Ruby bundler to install CocoaPods itself:

```sh
bundle install
```

Then, and every time you update your native dependencies, run:

```sh
bundle exec pod install
```

For more information, please visit [CocoaPods Getting Started guide](https://guides.cocoapods.org/using/getting-started.html).

```sh
# Using npm
npm run ios

# OR using Yarn
yarn ios
```

If everything is set up correctly, you should see your new app running in the Android Emulator, iOS Simulator, or your connected device.

This is one way to run your app — you can also build it directly from Android Studio or Xcode.

## Step 3: Modify your app

Now that you have successfully run the app, let's make changes!

Open `App.tsx` in your text editor of choice and make some changes. When you save, your app will automatically update and reflect these changes — this is powered by [Fast Refresh](https://reactnative.dev/docs/fast-refresh).

When you want to forcefully reload, for example to reset the state of your app, you can perform a full reload:

- **Android**: Press the <kbd>R</kbd> key twice or select **"Reload"** from the **Dev Menu**, accessed via <kbd>Ctrl</kbd> + <kbd>M</kbd> (Windows/Linux) or <kbd>Cmd ⌘</kbd> + <kbd>M</kbd> (macOS).
- **iOS**: Press <kbd>R</kbd> in iOS Simulator.

## Congratulations! :tada:

You've successfully run and modified your React Native App. :partying_face:

### Now what?

- If you want to add this new React Native code to an existing application, check out the [Integration guide](https://reactnative.dev/docs/integration-with-existing-apps).
- If you're curious to learn more about React Native, check out the [docs](https://reactnative.dev/docs/getting-started).

# Troubleshooting

If you're having issues getting the above steps to work, see the [Troubleshooting](https://reactnative.dev/docs/troubleshooting) page.

# Learn More

To learn more about React Native, take a look at the following resources:

- [React Native Website](https://reactnative.dev) - learn more about React Native.
- [Getting Started](https://reactnative.dev/docs/environment-setup) - an **overview** of React Native and how setup your environment.
- [Learn the Basics](https://reactnative.dev/docs/getting-started) - a **guided tour** of the React Native **basics**.
- [Blog](https://reactnative.dev/blog) - read the latest official React Native **Blog** posts.
- [`@facebook/react-native`](https://github.com/facebook/react-native) - the Open Source; GitHub **repository** for React Native.


================================================
FILE: example/ReactNativeLocizeProject/__tests__/App.test.tsx
================================================
/**
 * @format
 */

import React from 'react';
import ReactTestRenderer from 'react-test-renderer';
import App from '../App';

test('renders correctly', async () => {
  await ReactTestRenderer.act(() => {
    ReactTestRenderer.create(<App />);
  });
});


================================================
FILE: example/ReactNativeLocizeProject/android/app/build.gradle
================================================
apply plugin: "com.android.application"
apply plugin: "org.jetbrains.kotlin.android"
apply plugin: "com.facebook.react"

/**
 * This is the configuration block to customize your React Native Android app.
 * By default you don't need to apply any configuration, just uncomment the lines you need.
 */
react {
    /* Folders */
    //   The root of your project, i.e. where "package.json" lives. Default is '../..'
    // root = file("../../")
    //   The folder where the react-native NPM package is. Default is ../../node_modules/react-native
    // reactNativeDir = file("../../node_modules/react-native")
    //   The folder where the react-native Codegen package is. Default is ../../node_modules/@react-native/codegen
    // codegenDir = file("../../node_modules/@react-native/codegen")
    //   The cli.js file which is the React Native CLI entrypoint. Default is ../../node_modules/react-native/cli.js
    // cliFile = file("../../node_modules/react-native/cli.js")

    /* Variants */
    //   The list of variants to that are debuggable. For those we're going to
    //   skip the bundling of the JS bundle and the assets. By default is just 'debug'.
    //   If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants.
    // debuggableVariants = ["liteDebug", "prodDebug"]

    /* Bundling */
    //   A list containing the node command and its flags. Default is just 'node'.
    // nodeExecutableAndArgs = ["node"]
    //
    //   The command to run when bundling. By default is 'bundle'
    // bundleCommand = "ram-bundle"
    //
    //   The path to the CLI configuration file. Default is empty.
    // bundleConfig = file(../rn-cli.config.js)
    //
    //   The name of the generated asset file containing your JS bundle
    // bundleAssetName = "MyApplication.android.bundle"
    //
    //   The entry file for bundle generation. Default is 'index.android.js' or 'index.js'
    // entryFile = file("../js/MyApplication.android.js")
    //
    //   A list of extra flags to pass to the 'bundle' commands.
    //   See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle
    // extraPackagerArgs = []

    /* Hermes Commands */
    //   The hermes compiler command to run. By default it is 'hermesc'
    // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc"
    //
    //   The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map"
    // hermesFlags = ["-O", "-output-source-map"]

    /* Autolinking */
    autolinkLibrariesWithApp()
}

/**
 * Set this to true to Run Proguard on Release builds to minify the Java bytecode.
 */
def enableProguardInReleaseBuilds = false

/**
 * The preferred build flavor of JavaScriptCore (JSC)
 *
 * For example, to use the international variant, you can use:
 * `def jscFlavor = io.github.react-native-community:jsc-android-intl:2026004.+`
 *
 * The international variant includes ICU i18n library and necessary data
 * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
 * give correct results when using with locales other than en-US. Note that
 * this variant is about 6MiB larger per architecture than default.
 */
def jscFlavor = 'io.github.react-native-community:jsc-android:2026004.+'

android {
    ndkVersion rootProject.ext.ndkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion
    compileSdk rootProject.ext.compileSdkVersion

    namespace "com.reactnativelocizeproject"
    defaultConfig {
        applicationId "com.reactnativelocizeproject"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode 1
        versionName "1.0"
    }
    signingConfigs {
        debug {
            storeFile file('debug.keystore')
            storePassword 'android'
            keyAlias 'androiddebugkey'
            keyPassword 'android'
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.debug
        }
        release {
            // Caution! In production, you need to generate your own keystore file.
            // see https://reactnative.dev/docs/signed-apk-android.
            signingConfig signingConfigs.debug
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
        }
    }
}

dependencies {
    // The version of react-native is set by the React Native Gradle Plugin
    implementation("com.facebook.react:react-android")

    if (hermesEnabled.toBoolean()) {
        implementation("com.facebook.react:hermes-android")
    } else {
        implementation jscFlavor
    }
}


================================================
FILE: example/ReactNativeLocizeProject/android/app/proguard-rules.pro
================================================
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# Add any project specific keep options here:


================================================
FILE: example/ReactNativeLocizeProject/android/app/src/debug/AndroidManifest.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <application
        android:usesCleartextTraffic="true"
        tools:targetApi="28"
        tools:ignore="GoogleAppIndexingWarning"/>
</manifest>


================================================
FILE: example/ReactNativeLocizeProject/android/app/src/main/AndroidManifest.xml
================================================
<manifest xmlns:android="http://schemas.android.com/apk/res/android">

    <uses-permission android:name="android.permission.INTERNET" />

    <application
      android:name=".MainApplication"
      android:label="@string/app_name"
      android:icon="@mipmap/ic_launcher"
      android:roundIcon="@mipmap/ic_launcher_round"
      android:allowBackup="false"
      android:theme="@style/AppTheme"
      android:supportsRtl="true">
      <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode"
        android:launchMode="singleTask"
        android:windowSoftInputMode="adjustResize"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
      </activity>
    </application>
</manifest>


================================================
FILE: example/ReactNativeLocizeProject/android/app/src/main/java/com/reactnativelocizeproject/MainActivity.kt
================================================
package com.reactnativelocizeproject

import com.facebook.react.ReactActivity
import com.facebook.react.ReactActivityDelegate
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled
import com.facebook.react.defaults.DefaultReactActivityDelegate

class MainActivity : ReactActivity() {

  /**
   * Returns the name of the main component registered from JavaScript. This is used to schedule
   * rendering of the component.
   */
  override fun getMainComponentName(): String = "ReactNativeLocizeProject"

  /**
   * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate]
   * which allows you to enable New Architecture with a single boolean flags [fabricEnabled]
   */
  override fun createReactActivityDelegate(): ReactActivityDelegate =
      DefaultReactActivityDelegate(this, mainComponentName, fabricEnabled)
}


================================================
FILE: example/ReactNativeLocizeProject/android/app/src/main/java/com/reactnativelocizeproject/MainApplication.kt
================================================
package com.reactnativelocizeproject

import android.app.Application
import com.facebook.react.PackageList
import com.facebook.react.ReactApplication
import com.facebook.react.ReactHost
import com.facebook.react.ReactNativeHost
import com.facebook.react.ReactPackage
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load
import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost
import com.facebook.react.defaults.DefaultReactNativeHost
import com.facebook.react.soloader.OpenSourceMergedSoMapping
import com.facebook.soloader.SoLoader

class MainApplication : Application(), ReactApplication {

  override val reactNativeHost: ReactNativeHost =
      object : DefaultReactNativeHost(this) {
        override fun getPackages(): List<ReactPackage> =
            PackageList(this).packages.apply {
              // Packages that cannot be autolinked yet can be added manually here, for example:
              // add(MyReactNativePackage())
            }

        override fun getJSMainModuleName(): String = "index"

        override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG

        override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
        override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED
      }

  override val reactHost: ReactHost
    get() = getDefaultReactHost(applicationContext, reactNativeHost)

  override fun onCreate() {
    super.onCreate()
    SoLoader.init(this, OpenSourceMergedSoMapping)
    if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
      // If you opted-in for the New Architecture, we load the native entry point for this app.
      load()
    }
  }
}


================================================
FILE: example/ReactNativeLocizeProject/android/app/src/main/res/drawable/rn_edit_text_material.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2014 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->
<inset xmlns:android="http://schemas.android.com/apk/res/android"
       android:insetLeft="@dimen/abc_edit_text_inset_horizontal_material"
       android:insetRight="@dimen/abc_edit_text_inset_horizontal_material"
       android:insetTop="@dimen/abc_edit_text_inset_top_material"
       android:insetBottom="@dimen/abc_edit_text_inset_bottom_material"
       >

    <selector>
        <!--
          This file is a copy of abc_edit_text_material (https://bit.ly/3k8fX7I).
          The item below with state_pressed="false" and state_focused="false" causes a NullPointerException.
          NullPointerException:tempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)'

          <item android:state_pressed="false" android:state_focused="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>

          For more info, see https://bit.ly/3CdLStv (react-native/pull/29452) and https://bit.ly/3nxOMoR.
        -->
        <item android:state_enabled="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
        <item android:drawable="@drawable/abc_textfield_activated_mtrl_alpha"/>
    </selector>

</inset>


================================================
FILE: example/ReactNativeLocizeProject/android/app/src/main/res/values/strings.xml
================================================
<resources>
    <string name="app_name">ReactNativeLocizeProject</string>
</resources>


================================================
FILE: example/ReactNativeLocizeProject/android/app/src/main/res/values/styles.xml
================================================
<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="android:editTextBackground">@drawable/rn_edit_text_material</item>
    </style>

</resources>


================================================
FILE: example/ReactNativeLocizeProject/android/build.gradle
================================================
buildscript {
    ext {
        buildToolsVersion = "35.0.0"
        minSdkVersion = 24
        compileSdkVersion = 35
        targetSdkVersion = 35
        ndkVersion = "27.1.12297006"
        kotlinVersion = "2.0.21"
    }
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath("com.android.tools.build:gradle")
        classpath("com.facebook.react:react-native-gradle-plugin")
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin")
    }
}

apply plugin: "com.facebook.react.rootproject"


================================================
FILE: example/ReactNativeLocizeProject/android/gradle/wrapper/gradle-wrapper.properties
================================================
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists


================================================
FILE: example/ReactNativeLocizeProject/android/gradle.properties
================================================
# Project-wide Gradle settings.

# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.

# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m
org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true

# AndroidX package structure to make it clearer which packages are bundled with the
# Android operating system, and which are packaged with your app's APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true

# Use this property to specify which architecture you want to build.
# You can also override it from the CLI using
# ./gradlew <task> -PreactNativeArchitectures=x86_64
reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64

# Use this property to enable support to the new architecture.
# This will allow you to use TurboModules and the Fabric render in
# your application. You should enable this flag either if you want
# to write custom TurboModules/Fabric components OR use libraries that
# are providing them.
newArchEnabled=true

# Use this property to enable or disable the Hermes JS engine.
# If set to false, you will be using JSC instead.
hermesEnabled=true


================================================
FILE: example/ReactNativeLocizeProject/android/gradlew
================================================
#!/bin/sh

#
# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#

##############################################################################
#
#   Gradle start up script for POSIX generated by Gradle.
#
#   Important for running:
#
#   (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
#       noncompliant, but you have some other compliant shell such as ksh or
#       bash, then to run this script, type that shell name before the whole
#       command line, like:
#
#           ksh Gradle
#
#       Busybox and similar reduced shells will NOT work, because this script
#       requires all of these POSIX shell features:
#         * functions;
#         * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
#           «${var#prefix}», «${var%suffix}», and «$( cmd )»;
#         * compound commands having a testable exit status, especially «case»;
#         * various built-in commands including «command», «set», and «ulimit».
#
#   Important for patching:
#
#   (2) This script targets any POSIX shell, so it avoids extensions provided
#       by Bash, Ksh, etc; in particular arrays are avoided.
#
#       The "traditional" practice of packing multiple parameters into a
#       space-separated string is a well documented source of bugs and security
#       problems, so this is (mostly) avoided, by progressively accumulating
#       options in "$@", and eventually passing that to Java.
#
#       Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
#       and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
#       see the in-line comments for details.
#
#       There are tweaks for specific operating systems such as AIX, CygWin,
#       Darwin, MinGW, and NonStop.
#
#   (3) This script is generated from the Groovy template
#       https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
#       within the Gradle project.
#
#       You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################

# Attempt to set APP_HOME

# Resolve links: $0 may be a link
app_path=$0

# Need this for daisy-chained symlinks.
while
    APP_HOME=${app_path%"${app_path##*/}"}  # leaves a trailing /; empty if no leading path
    [ -h "$app_path" ]
do
    ls=$( ls -ld "$app_path" )
    link=${ls#*' -> '}
    case $link in             #(
      /*)   app_path=$link ;; #(
      *)    app_path=$APP_HOME$link ;;
    esac
done

# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit

# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum

warn () {
    echo "$*"
} >&2

die () {
    echo
    echo "$*"
    echo
    exit 1
} >&2

# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "$( uname )" in                #(
  CYGWIN* )         cygwin=true  ;; #(
  Darwin* )         darwin=true  ;; #(
  MSYS* | MINGW* )  msys=true    ;; #(
  NONSTOP* )        nonstop=true ;;
esac

CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar


# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
        # IBM's JDK on AIX uses strange locations for the executables
        JAVACMD=$JAVA_HOME/jre/sh/java
    else
        JAVACMD=$JAVA_HOME/bin/java
    fi
    if [ ! -x "$JAVACMD" ] ; then
        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
    fi
else
    JAVACMD=java
    if ! command -v java >/dev/null 2>&1
    then
        die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
    fi
fi

# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
    case $MAX_FD in #(
      max*)
        # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
        # shellcheck disable=SC2039,SC3045
        MAX_FD=$( ulimit -H -n ) ||
            warn "Could not query maximum file descriptor limit"
    esac
    case $MAX_FD in  #(
      '' | soft) :;; #(
      *)
        # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
        # shellcheck disable=SC2039,SC3045
        ulimit -n "$MAX_FD" ||
            warn "Could not set maximum file descriptor limit to $MAX_FD"
    esac
fi

# Collect all arguments for the java command, stacking in reverse order:
#   * args from the command line
#   * the main class name
#   * -classpath
#   * -D...appname settings
#   * --module-path (only if needed)
#   * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.

# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
    APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
    CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )

    JAVACMD=$( cygpath --unix "$JAVACMD" )

    # Now convert the arguments - kludge to limit ourselves to /bin/sh
    for arg do
        if
            case $arg in                                #(
              -*)   false ;;                            # don't mess with options #(
              /?*)  t=${arg#/} t=/${t%%/*}              # looks like a POSIX filepath
                    [ -e "$t" ] ;;                      #(
              *)    false ;;
            esac
        then
            arg=$( cygpath --path --ignore --mixed "$arg" )
        fi
        # Roll the args list around exactly as many times as the number of
        # args, so each arg winds up back in the position where it started, but
        # possibly modified.
        #
        # NB: a `for` loop captures its iteration list before it begins, so
        # changing the positional parameters here affects neither the number of
        # iterations, nor the values presented in `arg`.
        shift                   # remove old arg
        set -- "$@" "$arg"      # push replacement arg
    done
fi


# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'

# Collect all arguments for the java command:
#   * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
#     and any embedded shellness will be escaped.
#   * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
#     treated as '${Hostname}' itself on the command line.

set -- \
        "-Dorg.gradle.appname=$APP_BASE_NAME" \
        -classpath "$CLASSPATH" \
        org.gradle.wrapper.GradleWrapperMain \
        "$@"

# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
    die "xargs is not available"
fi

# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
#   readarray ARGS < <( xargs -n1 <<<"$var" ) &&
#   set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#

eval "set -- $(
        printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
        xargs -n1 |
        sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
        tr '\n' ' '
    )" '"$@"'

exec "$JAVACMD" "$@"


================================================
FILE: example/ReactNativeLocizeProject/android/gradlew.bat
================================================
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem      https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem

@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem  Gradle startup script for Windows
@rem
@rem ##########################################################################

@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal

set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%

@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi

@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"

@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome

set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute

echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2

goto fail

:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe

if exist "%JAVA_EXE%" goto execute

echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2

goto fail

:execute
@rem Setup the command line

set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar


@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*

:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd

:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%

:mainEnd
if "%OS%"=="Windows_NT" endlocal

:omega


================================================
FILE: example/ReactNativeLocizeProject/android/settings.gradle
================================================
pluginManagement { includeBuild("../node_modules/@react-native/gradle-plugin") }
plugins { id("com.facebook.react.settings") }
extensions.configure(com.facebook.react.ReactSettingsExtension){ ex -> ex.autolinkLibrariesFromCommand() }
rootProject.name = 'ReactNativeLocizeProject'
include ':app'
includeBuild('../node_modules/@react-native/gradle-plugin')


================================================
FILE: example/ReactNativeLocizeProject/app.json
================================================
{
  "name": "ReactNativeLocizeProject",
  "displayName": "ReactNativeLocizeProject"
}


================================================
FILE: example/ReactNativeLocizeProject/babel.config.js
================================================
module.exports = {
  presets: ['module:@react-native/babel-preset'],
};


================================================
FILE: example/ReactNativeLocizeProject/i18n.js
================================================
import 'intl-pluralrules';
import i18n from 'i18next';
import {initReactI18next} from 'react-i18next';
import RNLanguageDetector from '@os-team/i18next-react-native-language-detector';
import ChainedBackend from 'i18next-chained-backend';
import LocizeBackend from 'i18next-locize-backend';
import LocalStorageBackend from 'i18next-localstorage-backend';

i18n
  .use(ChainedBackend)
  .use(RNLanguageDetector)
  .use(initReactI18next)
  .init({
    debug: true,
    fallbackLng: 'en',
    supportedLngs: ['en', 'de'],
    backend: {
      backends: [LocalStorageBackend, LocizeBackend],
      backendOptions: [
        {
          expirationTime: 7 * 24 * 60 * 60 * 1000, // 7 days
        },
        {
          projectId: 'ce0cf818-32e5-44a5-b7f0-4ea9e840d962',
        },
      ],
    },
  });

export default i18n;


================================================
FILE: example/ReactNativeLocizeProject/index.js
================================================
/**
 * @format
 */

import {AppRegistry} from 'react-native';
import App from './App';
import {name as appName} from './app.json';

// import i18n (needs to be bundled ;))
import './i18n';

AppRegistry.registerComponent(appName, () => App);


================================================
FILE: example/ReactNativeLocizeProject/ios/.xcode.env
================================================
# This `.xcode.env` file is versioned and is used to source the environment
# used when running script phases inside Xcode.
# To customize your local environment, you can create an `.xcode.env.local`
# file that is not versioned.

# NODE_BINARY variable contains the PATH to the node executable.
#
# Customize the NODE_BINARY variable here.
# For example, to use nvm with brew, add the following line
# . "$(brew --prefix nvm)/nvm.sh" --no-use
export NODE_BINARY=$(command -v node)


================================================
FILE: example/ReactNativeLocizeProject/ios/Podfile
================================================
# Resolve react_native_pods.rb with node to allow for hoisting
require Pod::Executable.execute_command('node', ['-p',
  'require.resolve(
    "react-native/scripts/react_native_pods.rb",
    {paths: [process.argv[1]]},
  )', __dir__]).strip

platform :ios, min_ios_version_supported
prepare_react_native_project!

linkage = ENV['USE_FRAMEWORKS']
if linkage != nil
  Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green
  use_frameworks! :linkage => linkage.to_sym
end

target 'ReactNativeLocizeProject' do
  config = use_native_modules!

  use_react_native!(
    :path => config[:reactNativePath],
    # An absolute path to your application root.
    :app_path => "#{Pod::Config.instance.installation_root}/.."
  )

  post_install do |installer|
    # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202
    react_native_post_install(
      installer,
      config[:reactNativePath],
      :mac_catalyst_enabled => false,
      # :ccache_enabled => true
    )
  end
end


================================================
FILE: example/ReactNativeLocizeProject/ios/ReactNativeLocizeProject/AppDelegate.swift
================================================
import UIKit
import React
import React_RCTAppDelegate
import ReactAppDependencyProvider

@main
class AppDelegate: UIResponder, UIApplicationDelegate {
  var window: UIWindow?

  var reactNativeDelegate: ReactNativeDelegate?
  var reactNativeFactory: RCTReactNativeFactory?

  func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
  ) -> Bool {
    let delegate = ReactNativeDelegate()
    let factory = RCTReactNativeFactory(delegate: delegate)
    delegate.dependencyProvider = RCTAppDependencyProvider()

    reactNativeDelegate = delegate
    reactNativeFactory = factory

    window = UIWindow(frame: UIScreen.main.bounds)

    factory.startReactNative(
      withModuleName: "ReactNativeLocizeProject",
      in: window,
      launchOptions: launchOptions
    )

    return true
  }
}

class ReactNativeDelegate: RCTDefaultReactNativeFactoryDelegate {
  override func sourceURL(for bridge: RCTBridge) -> URL? {
    self.bundleURL()
  }

  override func bundleURL() -> URL? {
#if DEBUG
    RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: "index")
#else
    Bundle.main.url(forResource: "main", withExtension: "jsbundle")
#endif
  }
}


================================================
FILE: example/ReactNativeLocizeProject/ios/ReactNativeLocizeProject/Images.xcassets/AppIcon.appiconset/Contents.json
================================================
{
  "images": [
    {
      "idiom": "iphone",
      "scale": "2x",
      "size": "20x20"
    },
    {
      "idiom": "iphone",
      "scale": "3x",
      "size": "20x20"
    },
    {
      "idiom": "iphone",
      "scale": "2x",
      "size": "29x29"
    },
    {
      "idiom": "iphone",
      "scale": "3x",
      "size": "29x29"
    },
    {
      "idiom": "iphone",
      "scale": "2x",
      "size": "40x40"
    },
    {
      "idiom": "iphone",
      "scale": "3x",
      "size": "40x40"
    },
    {
      "idiom": "iphone",
      "scale": "2x",
      "size": "60x60"
    },
    {
      "idiom": "iphone",
      "scale": "3x",
      "size": "60x60"
    },
    {
      "idiom": "ios-marketing",
      "scale": "1x",
      "size": "1024x1024"
    }
  ],
  "info": {
    "author": "xcode",
    "version": 1
  }
}


================================================
FILE: example/ReactNativeLocizeProject/ios/ReactNativeLocizeProject/Images.xcassets/Contents.json
================================================
{
  "info": {
    "version": 1,
    "author": "xcode"
  }
}


================================================
FILE: example/ReactNativeLocizeProject/ios/ReactNativeLocizeProject/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleDisplayName</key>
	<string>ReactNativeLocizeProject</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>APPL</string>
	<key>CFBundleShortVersionString</key>
	<string>$(MARKETING_VERSION)</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>$(CURRENT_PROJECT_VERSION)</string>
	<key>LSRequiresIPhoneOS</key>
	<true/>
	<key>NSAppTransportSecurity</key>
	<dict>
	  <!-- Do not change NSAllowsArbitraryLoads to true, or you will risk app rejection! -->
		<key>NSAllowsArbitraryLoads</key>
		<false/>
		<key>NSAllowsLocalNetworking</key>
		<true/>
	</dict>
	<key>NSLocationWhenInUseUsageDescription</key>
	<string></string>
	<key>UILaunchStoryboardName</key>
	<string>LaunchScreen</string>
	<key>UIRequiredDeviceCapabilities</key>
	<array>
		<string>arm64</string>
	</array>
	<key>UISupportedInterfaceOrientations</key>
	<array>
		<string>UIInterfaceOrientationPortrait</string>
		<string>UIInterfaceOrientationLandscapeLeft</string>
		<string>UIInterfaceOrientationLandscapeRight</string>
	</array>
	<key>UIViewControllerBasedStatusBarAppearance</key>
	<false/>
</dict>
</plist>


================================================
FILE: example/ReactNativeLocizeProject/ios/ReactNativeLocizeProject/LaunchScreen.storyboard
================================================
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15702" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
    <device id="retina4_7" orientation="portrait" appearance="light"/>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15704"/>
        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <scenes>
        <!--View Controller-->
        <scene sceneID="EHf-IW-A2E">
            <objects>
                <viewController id="01J-lp-oVM" sceneMemberID="viewController">
                    <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                        <subviews>
                            <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ReactNativeLocizeProject" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="GJd-Yh-RWb">
                                <rect key="frame" x="0.0" y="202" width="375" height="43"/>
                                <fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
                                <nil key="highlightedColor"/>
                            </label>
                            <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Powered by React Native" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="MN2-I3-ftu">
                                <rect key="frame" x="0.0" y="626" width="375" height="21"/>
                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                <nil key="highlightedColor"/>
                            </label>
                        </subviews>
                        <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
                        <constraints>
                            <constraint firstItem="Bcu-3y-fUS" firstAttribute="bottom" secondItem="MN2-I3-ftu" secondAttribute="bottom" constant="20" id="OZV-Vh-mqD"/>
                            <constraint firstItem="Bcu-3y-fUS" firstAttribute="centerX" secondItem="GJd-Yh-RWb" secondAttribute="centerX" id="Q3B-4B-g5h"/>
                            <constraint firstItem="MN2-I3-ftu" firstAttribute="centerX" secondItem="Bcu-3y-fUS" secondAttribute="centerX" id="akx-eg-2ui"/>
                            <constraint firstItem="MN2-I3-ftu" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" id="i1E-0Y-4RG"/>
                            <constraint firstItem="GJd-Yh-RWb" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="bottom" multiplier="1/3" constant="1" id="moa-c2-u7t"/>
                            <constraint firstItem="GJd-Yh-RWb" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" symbolic="YES" id="x7j-FC-K8j"/>
                        </constraints>
                        <viewLayoutGuide key="safeArea" id="Bcu-3y-fUS"/>
                    </view>
                </viewController>
                <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="52.173913043478265" y="375"/>
        </scene>
    </scenes>
</document>


================================================
FILE: example/ReactNativeLocizeProject/ios/ReactNativeLocizeProject/PrivacyInfo.xcprivacy
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>NSPrivacyAccessedAPITypes</key>
	<array>
		<dict>
			<key>NSPrivacyAccessedAPIType</key>
			<string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
			<key>NSPrivacyAccessedAPITypeReasons</key>
			<array>
				<string>C617.1</string>
			</array>
		</dict>
		<dict>
			<key>NSPrivacyAccessedAPIType</key>
			<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
			<key>NSPrivacyAccessedAPITypeReasons</key>
			<array>
				<string>CA92.1</string>
			</array>
		</dict>
		<dict>
			<key>NSPrivacyAccessedAPIType</key>
			<string>NSPrivacyAccessedAPICategorySystemBootTime</string>
			<key>NSPrivacyAccessedAPITypeReasons</key>
			<array>
				<string>35F9.1</string>
			</array>
		</dict>
	</array>
	<key>NSPrivacyCollectedDataTypes</key>
	<array/>
	<key>NSPrivacyTracking</key>
	<false/>
</dict>
</plist>


================================================
FILE: example/ReactNativeLocizeProject/ios/ReactNativeLocizeProject.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 54;
	objects = {

/* Begin PBXBuildFile section */
		0AB566CA96D05C5E95B08959 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */; };
		0C80B921A6F3F58F76C31292 /* libPods-ReactNativeLocizeProject.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-ReactNativeLocizeProject.a */; };
		13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
		761780ED2CA45674006654EE /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 761780EC2CA45674006654EE /* AppDelegate.swift */; };
		81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
		13B07F961A680F5B00A75B9A /* ReactNativeLocizeProject.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ReactNativeLocizeProject.app; sourceTree = BUILT_PRODUCTS_DIR; };
		13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = ReactNativeLocizeProject/Images.xcassets; sourceTree = "<group>"; };
		13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = ReactNativeLocizeProject/Info.plist; sourceTree = "<group>"; };
		13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = PrivacyInfo.xcprivacy; path = ReactNativeLocizeProject/PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
		3B4392A12AC88292D35C810B /* Pods-ReactNativeLocizeProject.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeLocizeProject.debug.xcconfig"; path = "Target Support Files/Pods-ReactNativeLocizeProject/Pods-ReactNativeLocizeProject.debug.xcconfig"; sourceTree = "<group>"; };
		5709B34CF0A7D63546082F79 /* Pods-ReactNativeLocizeProject.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeLocizeProject.release.xcconfig"; path = "Target Support Files/Pods-ReactNativeLocizeProject/Pods-ReactNativeLocizeProject.release.xcconfig"; sourceTree = "<group>"; };
		5DCACB8F33CDC322A6C60F78 /* libPods-ReactNativeLocizeProject.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ReactNativeLocizeProject.a"; sourceTree = BUILT_PRODUCTS_DIR; };
		761780EC2CA45674006654EE /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = ReactNativeLocizeProject/AppDelegate.swift; sourceTree = "<group>"; };
		81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = ReactNativeLocizeProject/LaunchScreen.storyboard; sourceTree = "<group>"; };
		ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		13B07F8C1A680F5B00A75B9A /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				0C80B921A6F3F58F76C31292 /* libPods-ReactNativeLocizeProject.a in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		13B07FAE1A68108700A75B9A /* ReactNativeLocizeProject */ = {
			isa = PBXGroup;
			children = (
				13B07FB51A68108700A75B9A /* Images.xcassets */,
				761780EC2CA45674006654EE /* AppDelegate.swift */,
				13B07FB61A68108700A75B9A /* Info.plist */,
				81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */,
				13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */,
			);
			name = ReactNativeLocizeProject;
			sourceTree = "<group>";
		};
		2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
			isa = PBXGroup;
			children = (
				ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
				5DCACB8F33CDC322A6C60F78 /* libPods-ReactNativeLocizeProject.a */,
			);
			name = Frameworks;
			sourceTree = "<group>";
		};
		832341AE1AAA6A7D00B99B32 /* Libraries */ = {
			isa = PBXGroup;
			children = (
			);
			name = Libraries;
			sourceTree = "<group>";
		};
		83CBB9F61A601CBA00E9B192 = {
			isa = PBXGroup;
			children = (
				13B07FAE1A68108700A75B9A /* ReactNativeLocizeProject */,
				832341AE1AAA6A7D00B99B32 /* Libraries */,
				83CBBA001A601CBA00E9B192 /* Products */,
				2D16E6871FA4F8E400B85C8A /* Frameworks */,
				BBD78D7AC51CEA395F1C20DB /* Pods */,
			);
			indentWidth = 2;
			sourceTree = "<group>";
			tabWidth = 2;
			usesTabs = 0;
		};
		83CBBA001A601CBA00E9B192 /* Products */ = {
			isa = PBXGroup;
			children = (
				13B07F961A680F5B00A75B9A /* ReactNativeLocizeProject.app */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		BBD78D7AC51CEA395F1C20DB /* Pods */ = {
			isa = PBXGroup;
			children = (
				3B4392A12AC88292D35C810B /* Pods-ReactNativeLocizeProject.debug.xcconfig */,
				5709B34CF0A7D63546082F79 /* Pods-ReactNativeLocizeProject.release.xcconfig */,
			);
			path = Pods;
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
		13B07F861A680F5B00A75B9A /* ReactNativeLocizeProject */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "ReactNativeLocizeProject" */;
			buildPhases = (
				C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */,
				13B07F871A680F5B00A75B9A /* Sources */,
				13B07F8C1A680F5B00A75B9A /* Frameworks */,
				13B07F8E1A680F5B00A75B9A /* Resources */,
				00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
				00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */,
				E235C05ADACE081382539298 /* [CP] Copy Pods Resources */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = ReactNativeLocizeProject;
			productName = ReactNativeLocizeProject;
			productReference = 13B07F961A680F5B00A75B9A /* ReactNativeLocizeProject.app */;
			productType = "com.apple.product-type.application";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		83CBB9F71A601CBA00E9B192 /* Project object */ = {
			isa = PBXProject;
			attributes = {
				LastUpgradeCheck = 1210;
				TargetAttributes = {
					13B07F861A680F5B00A75B9A = {
						LastSwiftMigration = 1120;
					};
				};
			};
			buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "ReactNativeLocizeProject" */;
			compatibilityVersion = "Xcode 12.0";
			developmentRegion = en;
			hasScannedForEncodings = 0;
			knownRegions = (
				en,
				Base,
			);
			mainGroup = 83CBB9F61A601CBA00E9B192;
			productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
			projectDirPath = "";
			projectRoot = "";
			targets = (
				13B07F861A680F5B00A75B9A /* ReactNativeLocizeProject */,
			);
		};
/* End PBXProject section */

/* Begin PBXResourcesBuildPhase section */
		13B07F8E1A680F5B00A75B9A /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */,
				13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
				0AB566CA96D05C5E95B08959 /* PrivacyInfo.xcprivacy in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXResourcesBuildPhase section */

/* Begin PBXShellScriptBuildPhase section */
		00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = {
			isa = PBXShellScriptBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			inputPaths = (
				"$(SRCROOT)/.xcode.env.local",
				"$(SRCROOT)/.xcode.env",
			);
			name = "Bundle React Native code and images";
			outputPaths = (
			);
			runOnlyForDeploymentPostprocessing = 0;
			shellPath = /bin/sh;
			shellScript = "set -e\n\nWITH_ENVIRONMENT=\"$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"$REACT_NATIVE_PATH/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n";
		};
		00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = {
			isa = PBXShellScriptBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			inputFileListPaths = (
				"${PODS_ROOT}/Target Support Files/Pods-ReactNativeLocizeProject/Pods-ReactNativeLocizeProject-frameworks-${CONFIGURATION}-input-files.xcfilelist",
			);
			name = "[CP] Embed Pods Frameworks";
			outputFileListPaths = (
				"${PODS_ROOT}/Target Support Files/Pods-ReactNativeLocizeProject/Pods-ReactNativeLocizeProject-frameworks-${CONFIGURATION}-output-files.xcfilelist",
			);
			runOnlyForDeploymentPostprocessing = 0;
			shellPath = /bin/sh;
			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeLocizeProject/Pods-ReactNativeLocizeProject-frameworks.sh\"\n";
			showEnvVarsInLog = 0;
		};
		C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */ = {
			isa = PBXShellScriptBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			inputFileListPaths = (
			);
			inputPaths = (
				"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
				"${PODS_ROOT}/Manifest.lock",
			);
			name = "[CP] Check Pods Manifest.lock";
			outputFileListPaths = (
			);
			outputPaths = (
				"$(DERIVED_FILE_DIR)/Pods-ReactNativeLocizeProject-checkManifestLockResult.txt",
			);
			runOnlyForDeploymentPostprocessing = 0;
			shellPath = /bin/sh;
			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
			showEnvVarsInLog = 0;
		};
		E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = {
			isa = PBXShellScriptBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			inputFileListPaths = (
				"${PODS_ROOT}/Target Support Files/Pods-ReactNativeLocizeProject/Pods-ReactNativeLocizeProject-resources-${CONFIGURATION}-input-files.xcfilelist",
			);
			name = "[CP] Copy Pods Resources";
			outputFileListPaths = (
				"${PODS_ROOT}/Target Support Files/Pods-ReactNativeLocizeProject/Pods-ReactNativeLocizeProject-resources-${CONFIGURATION}-output-files.xcfilelist",
			);
			runOnlyForDeploymentPostprocessing = 0;
			shellPath = /bin/sh;
			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeLocizeProject/Pods-ReactNativeLocizeProject-resources.sh\"\n";
			showEnvVarsInLog = 0;
		};
/* End PBXShellScriptBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
		13B07F871A680F5B00A75B9A /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				761780ED2CA45674006654EE /* AppDelegate.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin XCBuildConfiguration section */
		13B07F941A680F5B00A75B9A /* Debug */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-ReactNativeLocizeProject.debug.xcconfig */;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				CLANG_ENABLE_MODULES = YES;
				CURRENT_PROJECT_VERSION = 1;
				ENABLE_BITCODE = NO;
				INFOPLIST_FILE = ReactNativeLocizeProject/Info.plist;
				IPHONEOS_DEPLOYMENT_TARGET = 15.1;
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
				);
				MARKETING_VERSION = 1.0;
				OTHER_LDFLAGS = (
					"$(inherited)",
					"-ObjC",
					"-lc++",
				);
				PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
				PRODUCT_NAME = ReactNativeLocizeProject;
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
				SWIFT_VERSION = 5.0;
				VERSIONING_SYSTEM = "apple-generic";
			};
			name = Debug;
		};
		13B07F951A680F5B00A75B9A /* Release */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-ReactNativeLocizeProject.release.xcconfig */;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				CLANG_ENABLE_MODULES = YES;
				CURRENT_PROJECT_VERSION = 1;
				INFOPLIST_FILE = ReactNativeLocizeProject/Info.plist;
				IPHONEOS_DEPLOYMENT_TARGET = 15.1;
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
				);
				MARKETING_VERSION = 1.0;
				OTHER_LDFLAGS = (
					"$(inherited)",
					"-ObjC",
					"-lc++",
				);
				PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
				PRODUCT_NAME = ReactNativeLocizeProject;
				SWIFT_VERSION = 5.0;
				VERSIONING_SYSTEM = "apple-generic";
			};
			name = Release;
		};
		83CBBA201A601CBA00E9B192 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
				CLANG_CXX_LANGUAGE_STANDARD = "c++20";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
				COPY_PHASE_STRIP = NO;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				ENABLE_TESTABILITY = YES;
				"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				IPHONEOS_DEPLOYMENT_TARGET = 15.1;
				LD_RUNPATH_SEARCH_PATHS = (
					/usr/lib/swift,
					"$(inherited)",
				);
				LIBRARY_SEARCH_PATHS = (
					"\"$(SDKROOT)/usr/lib/swift\"",
					"\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
					"\"$(inherited)\"",
				);
				MTL_ENABLE_DEBUG_INFO = YES;
				ONLY_ACTIVE_ARCH = YES;
				OTHER_CPLUSPLUSFLAGS = (
					"$(OTHER_CFLAGS)",
					"-DFOLLY_NO_CONFIG",
					"-DFOLLY_MOBILE=1",
					"-DFOLLY_USE_LIBCPP=1",
					"-DFOLLY_CFG_NO_COROUTINES=1",
					"-DFOLLY_HAVE_CLOCK_GETTIME=1",
				);
				OTHER_LDFLAGS = (
					"$(inherited)",
					" ",
				);
				REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
				SDKROOT = iphoneos;
				SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) DEBUG";
				USE_HERMES = true;
			};
			name = Debug;
		};
		83CBBA211A601CBA00E9B192 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
				CLANG_CXX_LANGUAGE_STANDARD = "c++20";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
				COPY_PHASE_STRIP = YES;
				ENABLE_NS_ASSERTIONS = NO;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				IPHONEOS_DEPLOYMENT_TARGET = 15.1;
				LD_RUNPATH_SEARCH_PATHS = (
					/usr/lib/swift,
					"$(inherited)",
				);
				LIBRARY_SEARCH_PATHS = (
					"\"$(SDKROOT)/usr/lib/swift\"",
					"\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
					"\"$(inherited)\"",
				);
				MTL_ENABLE_DEBUG_INFO = NO;
				OTHER_CPLUSPLUSFLAGS = (
					"$(OTHER_CFLAGS)",
					"-DFOLLY_NO_CONFIG",
					"-DFOLLY_MOBILE=1",
					"-DFOLLY_USE_LIBCPP=1",
					"-DFOLLY_CFG_NO_COROUTINES=1",
					"-DFOLLY_HAVE_CLOCK_GETTIME=1",
				);
				OTHER_LDFLAGS = (
					"$(inherited)",
					" ",
				);
				REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
				SDKROOT = iphoneos;
				USE_HERMES = true;
				VALIDATE_PRODUCT = YES;
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "ReactNativeLocizeProject" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				13B07F941A680F5B00A75B9A /* Debug */,
				13B07F951A680F5B00A75B9A /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "ReactNativeLocizeProject" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				83CBBA201A601CBA00E9B192 /* Debug */,
				83CBBA211A601CBA00E9B192 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */
	};
	rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;
}


================================================
FILE: example/ReactNativeLocizeProject/ios/ReactNativeLocizeProject.xcodeproj/xcshareddata/xcschemes/ReactNativeLocizeProject.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
   LastUpgradeVersion = "1210"
   version = "1.3">
   <BuildAction
      parallelizeBuildables = "YES"
      buildImplicitDependencies = "YES">
      <BuildActionEntries>
         <BuildActionEntry
            buildForTesting = "YES"
            buildForRunning = "YES"
            buildForProfiling = "YES"
            buildForArchiving = "YES"
            buildForAnalyzing = "YES">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
               BuildableName = "ReactNativeLocizeProject.app"
               BlueprintName = "ReactNativeLocizeProject"
               ReferencedContainer = "container:ReactNativeLocizeProject.xcodeproj">
            </BuildableReference>
         </BuildActionEntry>
      </BuildActionEntries>
   </BuildAction>
   <TestAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      shouldUseLaunchSchemeArgsEnv = "YES">
      <Testables>
         <TestableReference
            skipped = "NO">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "00E356ED1AD99517003FC87E"
               BuildableName = "ReactNativeLocizeProjectTests.xctest"
               BlueprintName = "ReactNativeLocizeProjectTests"
               ReferencedContainer = "container:ReactNativeLocizeProject.xcodeproj">
            </BuildableReference>
         </TestableReference>
      </Testables>
   </TestAction>
   <LaunchAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      launchStyle = "0"
      useCustomWorkingDirectory = "NO"
      ignoresPersistentStateOnLaunch = "NO"
      debugDocumentVersioning = "YES"
      debugServiceExtension = "internal"
      allowLocationSimulation = "YES">
      <BuildableProductRunnable
         runnableDebuggingMode = "0">
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
            BuildableName = "ReactNativeLocizeProject.app"
            BlueprintName = "ReactNativeLocizeProject"
            ReferencedContainer = "container:ReactNativeLocizeProject.xcodeproj">
         </BuildableReference>
      </BuildableProductRunnable>
   </LaunchAction>
   <ProfileAction
      buildConfiguration = "Release"
      shouldUseLaunchSchemeArgsEnv = "YES"
      savedToolIdentifier = ""
      useCustomWorkingDirectory = "NO"
      debugDocumentVersioning = "YES">
      <BuildableProductRunnable
         runnableDebuggingMode = "0">
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
            BuildableName = "ReactNativeLocizeProject.app"
            BlueprintName = "ReactNativeLocizeProject"
            ReferencedContainer = "container:ReactNativeLocizeProject.xcodeproj">
         </BuildableReference>
      </BuildableProductRunnable>
   </ProfileAction>
   <AnalyzeAction
      buildConfiguration = "Debug">
   </AnalyzeAction>
   <ArchiveAction
      buildConfiguration = "Release"
      revealArchiveInOrganizer = "YES">
   </ArchiveAction>
</Scheme>


================================================
FILE: example/ReactNativeLocizeProject/ios/ReactNativeLocizeProject.xcworkspace/contents.xcworkspacedata
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
   version = "1.0">
   <FileRef
      location = "group:ReactNativeLocizeProject.xcodeproj">
   </FileRef>
   <FileRef
      location = "group:Pods/Pods.xcodeproj">
   </FileRef>
</Workspace>


================================================
FILE: example/ReactNativeLocizeProject/jest.config.js
================================================
module.exports = {
  preset: 'react-native',
};


================================================
FILE: example/ReactNativeLocizeProject/metro.config.js
================================================
const {getDefaultConfig, mergeConfig} = require('@react-native/metro-config');

/**
 * Metro configuration
 * https://reactnative.dev/docs/metro
 *
 * @type {import('@react-native/metro-config').MetroConfig}
 */
const config = {};

module.exports = mergeConfig(getDefaultConfig(__dirname), config);


================================================
FILE: example/ReactNativeLocizeProject/package.json
================================================
{
  "name": "ReactNativeLocizeProject",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "android": "react-native run-android",
    "ios": "react-native run-ios",
    "lint": "eslint .",
    "start": "react-native start",
    "test": "jest"
  },
  "dependencies": {
    "@os-team/i18next-react-native-language-detector": "1.1.6",
    "i18next": "25.1.1",
    "i18next-chained-backend": "4.6.2",
    "i18next-localstorage-backend": "4.2.0",
    "i18next-locize-backend": "7.0.4",
    "intl-pluralrules": "2.0.1",
    "react": "19.0.0",
    "react-i18next": "15.5.1",
    "react-native": "0.79.2",
    "react-native-localize": "3.4.1"
  },
  "devDependencies": {
    "@babel/core": "^7.25.2",
    "@babel/preset-env": "^7.25.3",
    "@babel/runtime": "^7.25.0",
    "@react-native-community/cli": "18.0.0",
    "@react-native-community/cli-platform-android": "18.0.0",
    "@react-native-community/cli-platform-ios": "18.0.0",
    "@react-native/babel-preset": "0.79.2",
    "@react-native/eslint-config": "0.79.2",
    "@react-native/metro-config": "0.79.2",
    "@react-native/typescript-config": "0.79.2",
    "@types/jest": "^29.5.13",
    "@types/react": "^19.0.0",
    "@types/react-test-renderer": "^19.0.0",
    "eslint": "^8.19.0",
    "jest": "^29.6.3",
    "prettier": "2.8.8",
    "react-test-renderer": "19.0.0",
    "typescript": "5.0.4"
  },
  "engines": {
    "node": ">=18"
  }
}


================================================
FILE: example/ReactNativeLocizeProject/tsconfig.json
================================================
{
  "extends": "@react-native/typescript-config/tsconfig.json"
}


================================================
FILE: example/ReactNativeProject/.bundle/config
================================================
BUNDLE_PATH: "vendor/bundle"
BUNDLE_FORCE_RUBY_PLATFORM: 1


================================================
FILE: example/ReactNativeProject/.eslintrc.js
================================================
module.exports = {
  root: true,
  extends: '@react-native',
};


================================================
FILE: example/ReactNativeProject/.gitignore
================================================
# OSX
#
.DS_Store

# Xcode
#
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
**/.xcode.env.local

# Android/IntelliJ
#
build/
.idea
.gradle
local.properties
*.iml
*.hprof
.cxx/
*.keystore
!debug.keystore
.kotlin/

# node.js
#
node_modules/
npm-debug.log
yarn-error.log

# fastlane
#
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
# screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/

**/fastlane/report.xml
**/fastlane/Preview.html
**/fastlane/screenshots
**/fastlane/test_output

# Bundle artifact
*.jsbundle

# Ruby / CocoaPods
**/Pods/
/vendor/bundle/

# Temporary files created by Metro to check the health of the file watcher
.metro-health-check*

# testing
/coverage

# Yarn
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions


================================================
FILE: example/ReactNativeProject/.prettierrc.js
================================================
module.exports = {
  arrowParens: 'avoid',
  bracketSameLine: true,
  bracketSpacing: false,
  singleQuote: true,
  trailingComma: 'all',
};


================================================
FILE: example/ReactNativeProject/.watchmanconfig
================================================
{}


================================================
FILE: example/ReactNativeProject/App.tsx
================================================
import {Suspense, Component} from 'react';
import {Text, Button, View} from 'react-native';
import {useTranslation, withTranslation, Trans} from 'react-i18next';
import type {TFunction} from 'i18next';

// use hoc for class based components
class LegacyWelcomeClass extends Component<{t: TFunction}> {
  render() {
    const {t} = this.props;
    return <Text>{t('title')}</Text>;
  }
}
const Welcome = withTranslation()(LegacyWelcomeClass);

// Component using the Trans component
function MyComponent() {
  return (
    <Text>
      <Trans i18nKey="description.part1">
        To get started, edit <Text>src/App.js</Text> and save to reload.
      </Trans>
    </Text>
  );
}

function AppInner() {
  const {t, i18n} = useTranslation();

  const changeLanguage = (lng: string) => {
    i18n.changeLanguage(lng);
  };

  return (
    <View style={{flex: 1, justifyContent: 'center', alignItems: 'center'}}>
      <Welcome />

      <Button
        onPress={() => changeLanguage('en')}
        title="en"
        disabled={i18n.resolvedLanguage === 'en'}
      />
      <Button
        onPress={() => changeLanguage('de')}
        title="de"
        disabled={i18n.resolvedLanguage === 'de'}
      />

      <MyComponent />
      <Text>{t('description.part2')}</Text>
    </View>
  );
}

export default function App() {
  return (
    <Suspense fallback={<Text>loading...</Text>}>
      <AppInner />
    </Suspense>
  );
}


================================================
FILE: example/ReactNativeProject/Gemfile
================================================
source 'https://rubygems.org'

# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version
ruby ">= 2.6.10"

# Exclude problematic versions of cocoapods and activesupport that causes build failures.
gem 'cocoapods', '>= 1.13', '!= 1.15.0', '!= 1.15.1'
gem 'activesupport', '>= 6.1.7.5', '!= 7.1.0'
gem 'xcodeproj', '< 1.26.0'
gem 'concurrent-ruby', '< 1.3.4'

# Ruby 3.4.0 has removed some libraries from the standard library.
gem 'bigdecimal'
gem 'logger'
gem 'benchmark'
gem 'mutex_m'


================================================
FILE: example/ReactNativeProject/README.md
================================================
This is a new [**React Native**](https://reactnative.dev) project, bootstrapped using [`@react-native-community/cli`](https://github.com/react-native-community/cli).

# Getting Started

> **Note**: Make sure you have completed the [Set Up Your Environment](https://reactnative.dev/docs/set-up-your-environment) guide before proceeding.

## Step 1: Start Metro

First, you will need to run **Metro**, the JavaScript build tool for React Native.

To start the Metro dev server, run the following command from the root of your React Native project:

```sh
# Using npm
npm start

# OR using Yarn
yarn start
```

## Step 2: Build and run your app

With Metro running, open a new terminal window/pane from the root of your React Native project, and use one of the following commands to build and run your Android or iOS app:

### Android

```sh
# Using npm
npm run android

# OR using Yarn
yarn android
```

### iOS

For iOS, remember to install CocoaPods dependencies (this only needs to be run on first clone or after updating native deps).

The first time you create a new project, run the Ruby bundler to install CocoaPods itself:

```sh
bundle install
```

Then, and every time you update your native dependencies, run:

```sh
bundle exec pod install
```

For more information, please visit [CocoaPods Getting Started guide](https://guides.cocoapods.org/using/getting-started.html).

```sh
# Using npm
npm run ios

# OR using Yarn
yarn ios
```

If everything is set up correctly, you should see your new app running in the Android Emulator, iOS Simulator, or your connected device.

This is one way to run your app — you can also build it directly from Android Studio or Xcode.

## Step 3: Modify your app

Now that you have successfully run the app, let's make changes!

Open `App.tsx` in your text editor of choice and make some changes. When you save, your app will automatically update and reflect these changes — this is powered by [Fast Refresh](https://reactnative.dev/docs/fast-refresh).

When you want to forcefully reload, for example to reset the state of your app, you can perform a full reload:

- **Android**: Press the <kbd>R</kbd> key twice or select **"Reload"** from the **Dev Menu**, accessed via <kbd>Ctrl</kbd> + <kbd>M</kbd> (Windows/Linux) or <kbd>Cmd ⌘</kbd> + <kbd>M</kbd> (macOS).
- **iOS**: Press <kbd>R</kbd> in iOS Simulator.

## Congratulations! :tada:

You've successfully run and modified your React Native App. :partying_face:

### Now what?

- If you want to add this new React Native code to an existing application, check out the [Integration guide](https://reactnative.dev/docs/integration-with-existing-apps).
- If you're curious to learn more about React Native, check out the [docs](https://reactnative.dev/docs/getting-started).

# Troubleshooting

If you're having issues getting the above steps to work, see the [Troubleshooting](https://reactnative.dev/docs/troubleshooting) page.

# Learn More

To learn more about React Native, take a look at the following resources:

- [React Native Website](https://reactnative.dev) - learn more about React Native.
- [Getting Started](https://reactnative.dev/docs/environment-setup) - an **overview** of React Native and how setup your environment.
- [Learn the Basics](https://reactnative.dev/docs/getting-started) - a **guided tour** of the React Native **basics**.
- [Blog](https://reactnative.dev/blog) - read the latest official React Native **Blog** posts.
- [`@facebook/react-native`](https://github.com/facebook/react-native) - the Open Source; GitHub **repository** for React Native.


================================================
FILE: example/ReactNativeProject/__tests__/App.test.tsx
================================================
/**
 * @format
 */

import React from 'react';
import ReactTestRenderer from 'react-test-renderer';
import App from '../App';

test('renders correctly', async () => {
  await ReactTestRenderer.act(() => {
    ReactTestRenderer.create(<App />);
  });
});


================================================
FILE: example/ReactNativeProject/android/app/build.gradle
================================================
apply plugin: "com.android.application"
apply plugin: "org.jetbrains.kotlin.android"
apply plugin: "com.facebook.react"

/**
 * This is the configuration block to customize your React Native Android app.
 * By default you don't need to apply any configuration, just uncomment the lines you need.
 */
react {
    /* Folders */
    //   The root of your project, i.e. where "package.json" lives. Default is '../..'
    // root = file("../../")
    //   The folder where the react-native NPM package is. Default is ../../node_modules/react-native
    // reactNativeDir = file("../../node_modules/react-native")
    //   The folder where the react-native Codegen package is. Default is ../../node_modules/@react-native/codegen
    // codegenDir = file("../../node_modules/@react-native/codegen")
    //   The cli.js file which is the React Native CLI entrypoint. Default is ../../node_modules/react-native/cli.js
    // cliFile = file("../../node_modules/react-native/cli.js")

    /* Variants */
    //   The list of variants to that are debuggable. For those we're going to
    //   skip the bundling of the JS bundle and the assets. By default is just 'debug'.
    //   If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants.
    // debuggableVariants = ["liteDebug", "prodDebug"]

    /* Bundling */
    //   A list containing the node command and its flags. Default is just 'node'.
    // nodeExecutableAndArgs = ["node"]
    //
    //   The command to run when bundling. By default is 'bundle'
    // bundleCommand = "ram-bundle"
    //
    //   The path to the CLI configuration file. Default is empty.
    // bundleConfig = file(../rn-cli.config.js)
    //
    //   The name of the generated asset file containing your JS bundle
    // bundleAssetName = "MyApplication.android.bundle"
    //
    //   The entry file for bundle generation. Default is 'index.android.js' or 'index.js'
    // entryFile = file("../js/MyApplication.android.js")
    //
    //   A list of extra flags to pass to the 'bundle' commands.
    //   See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle
    // extraPackagerArgs = []

    /* Hermes Commands */
    //   The hermes compiler command to run. By default it is 'hermesc'
    // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc"
    //
    //   The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map"
    // hermesFlags = ["-O", "-output-source-map"]

    /* Autolinking */
    autolinkLibrariesWithApp()
}

/**
 * Set this to true to Run Proguard on Release builds to minify the Java bytecode.
 */
def enableProguardInReleaseBuilds = false

/**
 * The preferred build flavor of JavaScriptCore (JSC)
 *
 * For example, to use the international variant, you can use:
 * `def jscFlavor = io.github.react-native-community:jsc-android-intl:2026004.+`
 *
 * The international variant includes ICU i18n library and necessary data
 * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
 * give correct results when using with locales other than en-US. Note that
 * this variant is about 6MiB larger per architecture than default.
 */
def jscFlavor = 'io.github.react-native-community:jsc-android:2026004.+'

android {
    ndkVersion rootProject.ext.ndkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion
    compileSdk rootProject.ext.compileSdkVersion

    namespace "com.reactnativeproject"
    defaultConfig {
        applicationId "com.reactnativeproject"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode 1
        versionName "1.0"
    }
    signingConfigs {
        debug {
            storeFile file('debug.keystore')
            storePassword 'android'
            keyAlias 'androiddebugkey'
            keyPassword 'android'
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.debug
        }
        release {
            // Caution! In production, you need to generate your own keystore file.
            // see https://reactnative.dev/docs/signed-apk-android.
            signingConfig signingConfigs.debug
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
        }
    }
}

dependencies {
    // The version of react-native is set by the React Native Gradle Plugin
    implementation("com.facebook.react:react-android")

    if (hermesEnabled.toBoolean()) {
        implementation("com.facebook.react:hermes-android")
    } else {
        implementation jscFlavor
    }
}


================================================
FILE: example/ReactNativeProject/android/app/proguard-rules.pro
================================================
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# Add any project specific keep options here:


================================================
FILE: example/ReactNativeProject/android/app/src/debug/AndroidManifest.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <application
        android:usesCleartextTraffic="true"
        tools:targetApi="28"
        tools:ignore="GoogleAppIndexingWarning"/>
</manifest>


================================================
FILE: example/ReactNativeProject/android/app/src/main/AndroidManifest.xml
================================================
<manifest xmlns:android="http://schemas.android.com/apk/res/android">

    <uses-permission android:name="android.permission.INTERNET" />

    <application
      android:name=".MainApplication"
      android:label="@string/app_name"
      android:icon="@mipmap/ic_launcher"
      android:roundIcon="@mipmap/ic_launcher_round"
      android:allowBackup="false"
      android:theme="@style/AppTheme"
      android:supportsRtl="true">
      <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode"
        android:launchMode="singleTask"
        android:windowSoftInputMode="adjustResize"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
      </activity>
    </application>
</manifest>


================================================
FILE: example/ReactNativeProject/android/app/src/main/java/com/reactnativeproject/MainActivity.kt
================================================
package com.reactnativeproject

import com.facebook.react.ReactActivity
import com.facebook.react.ReactActivityDelegate
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled
import com.facebook.react.defaults.DefaultReactActivityDelegate

class MainActivity : ReactActivity() {

  /**
   * Returns the name of the main component registered from JavaScript. This is used to schedule
   * rendering of the component.
   */
  override fun getMainComponentName(): String = "ReactNativeProject"

  /**
   * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate]
   * which allows you to enable New Architecture with a single boolean flags [fabricEnabled]
   */
  override fun createReactActivityDelegate(): ReactActivityDelegate =
      DefaultReactActivityDelegate(this, mainComponentName, fabricEnabled)
}


================================================
FILE: example/ReactNativeProject/android/app/src/main/java/com/reactnativeproject/MainApplication.kt
================================================
package com.reactnativeproject

import android.app.Application
import com.facebook.react.PackageList
import com.facebook.react.ReactApplication
import com.facebook.react.ReactHost
import com.facebook.react.ReactNativeHost
import com.facebook.react.ReactPackage
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load
import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost
import com.facebook.react.defaults.DefaultReactNativeHost
import com.facebook.react.soloader.OpenSourceMergedSoMapping
import com.facebook.soloader.SoLoader

class MainApplication : Application(), ReactApplication {

  override val reactNativeHost: ReactNativeHost =
      object : DefaultReactNativeHost(this) {
        override fun getPackages(): List<ReactPackage> =
            PackageList(this).packages.apply {
              // Packages that cannot be autolinked yet can be added manually here, for example:
              // add(MyReactNativePackage())
            }

        override fun getJSMainModuleName(): String = "index"

        override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG

        override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
        override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED
      }

  override val reactHost: ReactHost
    get() = getDefaultReactHost(applicationContext, reactNativeHost)

  override fun onCreate() {
    super.onCreate()
    SoLoader.init(this, OpenSourceMergedSoMapping)
    if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
      // If you opted-in for the New Architecture, we load the native entry point for this app.
      load()
    }
  }
}


================================================
FILE: example/ReactNativeProject/android/app/src/main/res/drawable/rn_edit_text_material.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2014 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->
<inset xmlns:android="http://schemas.android.com/apk/res/android"
       android:insetLeft="@dimen/abc_edit_text_inset_horizontal_material"
       android:insetRight="@dimen/abc_edit_text_inset_horizontal_material"
       android:insetTop="@dimen/abc_edit_text_inset_top_material"
       android:insetBottom="@dimen/abc_edit_text_inset_bottom_material"
       >

    <selector>
        <!--
          This file is a copy of abc_edit_text_material (https://bit.ly/3k8fX7I).
          The item below with state_pressed="false" and state_focused="false" causes a NullPointerException.
          NullPointerException:tempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)'

          <item android:state_pressed="false" android:state_focused="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>

          For more info, see https://bit.ly/3CdLStv (react-native/pull/29452) and https://bit.ly/3nxOMoR.
        -->
        <item android:state_enabled="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
        <item android:drawable="@drawable/abc_textfield_activated_mtrl_alpha"/>
    </selector>

</inset>


================================================
FILE: example/ReactNativeProject/android/app/src/main/res/values/strings.xml
================================================
<resources>
    <string name="app_name">ReactNativeProject</string>
</resources>


================================================
FILE: example/ReactNativeProject/android/app/src/main/res/values/styles.xml
================================================
<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="android:editTextBackground">@drawable/rn_edit_text_material</item>
    </style>

</resources>


================================================
FILE: example/ReactNativeProject/android/build.gradle
================================================
buildscript {
    ext {
        buildToolsVersion = "35.0.0"
        minSdkVersion = 24
        compileSdkVersion = 35
        targetSdkVersion = 35
        ndkVersion = "27.1.12297006"
        kotlinVersion = "2.0.21"
    }
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath("com.android.tools.build:gradle")
        classpath("com.facebook.react:react-native-gradle-plugin")
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin")
    }
}

apply plugin: "com.facebook.react.rootproject"


================================================
FILE: example/ReactNativeProject/android/gradle/wrapper/gradle-wrapper.properties
================================================
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists


================================================
FILE: example/ReactNativeProject/android/gradle.properties
================================================
# Project-wide Gradle settings.

# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.

# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m
org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true

# AndroidX package structure to make it clearer which packages are bundled with the
# Android operating system, and which are packaged with your app's APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true

# Use this property to specify which architecture you want to build.
# You can also override it from the CLI using
# ./gradlew <task> -PreactNativeArchitectures=x86_64
reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64

# Use this property to enable support to the new architecture.
# This will allow you to use TurboModules and the Fabric render in
# your application. You should enable this flag either if you want
# to write custom TurboModules/Fabric components OR use libraries that
# are providing them.
newArchEnabled=true

# Use this property to enable or disable the Hermes JS engine.
# If set to false, you will be using JSC instead.
hermesEnabled=true


================================================
FILE: example/ReactNativeProject/android/gradlew
================================================
#!/bin/sh

#
# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#

##############################################################################
#
#   Gradle start up script for POSIX generated by Gradle.
#
#   Important for running:
#
#   (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
#       noncompliant, but you have some other compliant shell such as ksh or
#       bash, then to run this script, type that shell name before the whole
#       command line, like:
#
#           ksh Gradle
#
#       Busybox and similar reduced shells will NOT work, because this script
#       requires all of these POSIX shell features:
#         * functions;
#         * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
#           «${var#prefix}», «${var%suffix}», and «$( cmd )»;
#         * compound commands having a testable exit status, especially «case»;
#         * various built-in commands including «command», «set», and «ulimit».
#
#   Important for patching:
#
#   (2) This script targets any POSIX shell, so it avoids extensions provided
#       by Bash, Ksh, etc; in particular arrays are avoided.
#
#       The "traditional" practice of packing multiple parameters into a
#       space-separated string is a well documented source of bugs and security
#       problems, so this is (mostly) avoided, by progressively accumulating
#       options in "$@", and eventually passing that to Java.
#
#       Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
#       and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
#       see the in-line comments for details.
#
#       There are tweaks for specific operating systems such as AIX, CygWin,
#       Darwin, MinGW, and NonStop.
#
#   (3) This script is generated from the Groovy template
#       https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
#       within the Gradle project.
#
#       You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################

# Attempt to set APP_HOME

# Resolve links: $0 may be a link
app_path=$0

# Need this for daisy-chained symlinks.
while
    APP_HOME=${app_path%"${app_path##*/}"}  # leaves a trailing /; empty if no leading path
    [ -h "$app_path" ]
do
    ls=$( ls -ld "$app_path" )
    link=${ls#*' -> '}
    case $link in             #(
      /*)   app_path=$link ;; #(
      *)    app_path=$APP_HOME$link ;;
    esac
done

# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit

# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum

warn () {
    echo "$*"
} >&2

die () {
    echo
    echo "$*"
    echo
    exit 1
} >&2

# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "$( uname )" in                #(
  CYGWIN* )         cygwin=true  ;; #(
  Darwin* )         darwin=true  ;; #(
  MSYS* | MINGW* )  msys=true    ;; #(
  NONSTOP* )        nonstop=true ;;
esac

CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar


# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
        # IBM's JDK on AIX uses strange locations for the executables
        JAVACMD=$JAVA_HOME/jre/sh/java
    else
        JAVACMD=$JAVA_HOME/bin/java
    fi
    if [ ! -x "$JAVACMD" ] ; then
        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
    fi
else
    JAVACMD=java
    if ! command -v java >/dev/null 2>&1
    then
        die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
    fi
fi

# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
    case $MAX_FD in #(
      max*)
        # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
        # shellcheck disable=SC2039,SC3045
        MAX_FD=$( ulimit -H -n ) ||
            warn "Could not query maximum file descriptor limit"
    esac
    case $MAX_FD in  #(
      '' | soft) :;; #(
      *)
        # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
        # shellcheck disable=SC2039,SC3045
        ulimit -n "$MAX_FD" ||
            warn "Could not set maximum file descriptor limit to $MAX_FD"
    esac
fi

# Collect all arguments for the java command, stacking in reverse order:
#   * args from the command line
#   * the main class name
#   * -classpath
#   * -D...appname settings
#   * --module-path (only if needed)
#   * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.

# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
    APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
    CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )

    JAVACMD=$( cygpath --unix "$JAVACMD" )

    # Now convert the arguments - kludge to limit ourselves to /bin/sh
    for arg do
        if
            case $arg in                                #(
              -*)   false ;;                            # don't mess with options #(
              /?*)  t=${arg#/} t=/${t%%/*}              # looks like a POSIX filepath
                    [ -e "$t" ] ;;                      #(
              *)    false ;;
            esac
        then
            arg=$( cygpath --path --ignore --mixed "$arg" )
        fi
        # Roll the args list around exactly as many times as the number of
        # args, so each arg winds up back in the position where it started, but
        # possibly modified.
        #
        # NB: a `for` loop captures its iteration list before it begins, so
        # changing the positional parameters here affects neither the number of
        # iterations, nor the values presented in `arg`.
        shift                   # remove old arg
        set -- "$@" "$arg"      # push replacement arg
    done
fi


# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'

# Collect all arguments for the java command:
#   * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
#     and any embedded shellness will be escaped.
#   * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
#     treated as '${Hostname}' itself on the command line.

set -- \
        "-Dorg.gradle.appname=$APP_BASE_NAME" \
        -classpath "$CLASSPATH" \
        org.gradle.wrapper.GradleWrapperMain \
        "$@"

# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
    die "xargs is not available"
fi

# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
#   readarray ARGS < <( xargs -n1 <<<"$var" ) &&
#   set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#

eval "set -- $(
        printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
        xargs -n1 |
        sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
        tr '\n' ' '
    )" '"$@"'

exec "$JAVACMD" "$@"


================================================
FILE: example/ReactNativeProject/android/gradlew.bat
================================================
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem      https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem

@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem  Gradle startup script for Windows
@rem
@rem ##########################################################################

@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal

set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%

@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi

@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"

@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome

set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute

echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2

goto fail

:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe

if exist "%JAVA_EXE%" goto execute

echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2

goto fail

:execute
@rem Setup the command line

set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar


@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*

:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd

:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%

:mainEnd
if "%OS%"=="Windows_NT" endlocal

:omega


================================================
FILE: example/ReactNativeProject/android/settings.gradle
================================================
pluginManagement { includeBuild("../node_modules/@react-native/gradle-plugin") }
plugins { id("com.facebook.react.settings") }
extensions.configure(com.facebook.react.ReactSettingsExtension){ ex -> ex.autolinkLibrariesFromCommand() }
rootProject.name = 'ReactNativeProject'
include ':app'
includeBuild('../node_modules/@react-native/gradle-plugin')


================================================
FILE: example/ReactNativeProject/app.json
================================================
{
  "name": "ReactNativeProject",
  "displayName": "ReactNativeProject"
}


================================================
FILE: example/ReactNativeProject/babel.config.js
================================================
module.exports = {
  presets: ['module:@react-native/babel-preset'],
};


================================================
FILE: example/ReactNativeProject/i18n.js
================================================
import 'intl-pluralrules';
import i18n from 'i18next';
import {initReactI18next} from 'react-i18next';
import RNLanguageDetector from '@os-team/i18next-react-native-language-detector';

import enTranslation from './locales/en/translation.json';
import deTranslation from './locales/de/translation.json';

i18n
  .use(RNLanguageDetector)
  .use(initReactI18next)
  .init({
    debug: true,
    fallbackLng: 'en',
    supportedLngs: ['en', 'de'],
    resources: {
      en: {
        translation: enTranslation,
      },
      de: {
        translation: deTranslation,
      },
    },
  });


================================================
FILE: example/ReactNativeProject/index.js
================================================
/**
 * @format
 */

import {AppRegistry} from 'react-native';
import App from './App';
import {name as appName} from './app.json';

// import i18n (needs to be bundled ;))
import './i18n';

AppRegistry.registerComponent(appName, () => App);


================================================
FILE: example/ReactNativeProject/ios/.xcode.env
================================================
# This `.xcode.env` file is versioned and is used to source the environment
# used when running script phases inside Xcode.
# To customize your local environment, you can create an `.xcode.env.local`
# file that is not versioned.

# NODE_BINARY variable contains the PATH to the node executable.
#
# Customize the NODE_BINARY variable here.
# For example, to use nvm with brew, add the following line
# . "$(brew --prefix nvm)/nvm.sh" --no-use
export NODE_BINARY=$(command -v node)


================================================
FILE: example/ReactNativeProject/ios/Podfile
================================================
# Resolve react_native_pods.rb with node to allow for hoisting
require Pod::Executable.execute_command('node', ['-p',
  'require.resolve(
    "react-native/scripts/react_native_pods.rb",
    {paths: [process.argv[1]]},
  )', __dir__]).strip

platform :ios, min_ios_version_supported
prepare_react_native_project!

linkage = ENV['USE_FRAMEWORKS']
if linkage != nil
  Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green
  use_frameworks! :linkage => linkage.to_sym
end

target 'ReactNativeProject' do
  config = use_native_modules!

  use_react_native!(
    :path => config[:reactNativePath],
    # An absolute path to your application root.
    :app_path => "#{Pod::Config.instance.installation_root}/.."
  )

  post_install do |installer|
    # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202
    react_native_post_install(
      installer,
      config[:reactNativePath],
      :mac_catalyst_enabled => false,
      # :ccache_enabled => true
    )
  end
end


================================================
FILE: example/ReactNativeProject/ios/ReactNativeProject/AppDelegate.swift
================================================
import UIKit
import React
import React_RCTAppDelegate
import ReactAppDependencyProvider

@main
class AppDelegate: UIResponder, UIApplicationDelegate {
  var window: UIWindow?

  var reactNativeDelegate: ReactNativeDelegate?
  var reactNativeFactory: RCTReactNativeFactory?

  func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
  ) -> Bool {
    let delegate = ReactNativeDelegate()
    let factory = RCTReactNativeFactory(delegate: delegate)
    delegate.dependencyProvider = RCTAppDependencyProvider()

    reactNativeDelegate = delegate
    reactNativeFactory = factory

    window = UIWindow(frame: UIScreen.main.bounds)

    factory.startReactNative(
      withModuleName: "ReactNativeProject",
      in: window,
      launchOptions: launchOptions
    )

    return true
  }
}

class ReactNativeDelegate: RCTDefaultReactNativeFactoryDelegate {
  override func sourceURL(for bridge: RCTBridge) -> URL? {
    self.bundleURL()
  }

  override func bundleURL() -> URL? {
#if DEBUG
    RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: "index")
#else
    Bundle.main.url(forResource: "main", withExtensio
Download .txt
gitextract_okq1t3_6/

├── .all-contributorsrc
├── .babelrc
├── .codeclimate.yml
├── .coveralls.yml
├── .editorconfig
├── .eslintignore
├── .eslintrc.json
├── .github/
│   ├── stale.yml
│   └── workflows/
│       └── CI.yml
├── .gitignore
├── .husky/
│   └── pre-commit
├── .npmignore
├── .prettierignore
├── .prettierrc.json
├── CHANGELOG.md
├── LICENSE
├── README.md
├── TransWithoutContext.d.mts
├── TransWithoutContext.d.ts
├── example/
│   ├── ReactNativeLocizeProject/
│   │   ├── .bundle/
│   │   │   └── config
│   │   ├── .eslintrc.js
│   │   ├── .gitignore
│   │   ├── .prettierrc.js
│   │   ├── .watchmanconfig
│   │   ├── App.tsx
│   │   ├── Gemfile
│   │   ├── README.md
│   │   ├── __tests__/
│   │   │   └── App.test.tsx
│   │   ├── android/
│   │   │   ├── app/
│   │   │   │   ├── build.gradle
│   │   │   │   ├── debug.keystore
│   │   │   │   ├── proguard-rules.pro
│   │   │   │   └── src/
│   │   │   │       ├── debug/
│   │   │   │       │   └── AndroidManifest.xml
│   │   │   │       └── main/
│   │   │   │           ├── AndroidManifest.xml
│   │   │   │           ├── java/
│   │   │   │           │   └── com/
│   │   │   │           │       └── reactnativelocizeproject/
│   │   │   │           │           ├── MainActivity.kt
│   │   │   │           │           └── MainApplication.kt
│   │   │   │           └── res/
│   │   │   │               ├── drawable/
│   │   │   │               │   └── rn_edit_text_material.xml
│   │   │   │               └── values/
│   │   │   │                   ├── strings.xml
│   │   │   │                   └── styles.xml
│   │   │   ├── build.gradle
│   │   │   ├── gradle/
│   │   │   │   └── wrapper/
│   │   │   │       ├── gradle-wrapper.jar
│   │   │   │       └── gradle-wrapper.properties
│   │   │   ├── gradle.properties
│   │   │   ├── gradlew
│   │   │   ├── gradlew.bat
│   │   │   └── settings.gradle
│   │   ├── app.json
│   │   ├── babel.config.js
│   │   ├── i18n.js
│   │   ├── index.js
│   │   ├── ios/
│   │   │   ├── .xcode.env
│   │   │   ├── Podfile
│   │   │   ├── ReactNativeLocizeProject/
│   │   │   │   ├── AppDelegate.swift
│   │   │   │   ├── Images.xcassets/
│   │   │   │   │   ├── AppIcon.appiconset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Info.plist
│   │   │   │   ├── LaunchScreen.storyboard
│   │   │   │   └── PrivacyInfo.xcprivacy
│   │   │   ├── ReactNativeLocizeProject.xcodeproj/
│   │   │   │   ├── project.pbxproj
│   │   │   │   └── xcshareddata/
│   │   │   │       └── xcschemes/
│   │   │   │           └── ReactNativeLocizeProject.xcscheme
│   │   │   └── ReactNativeLocizeProject.xcworkspace/
│   │   │       └── contents.xcworkspacedata
│   │   ├── jest.config.js
│   │   ├── metro.config.js
│   │   ├── package.json
│   │   └── tsconfig.json
│   ├── ReactNativeProject/
│   │   ├── .bundle/
│   │   │   └── config
│   │   ├── .eslintrc.js
│   │   ├── .gitignore
│   │   ├── .prettierrc.js
│   │   ├── .watchmanconfig
│   │   ├── App.tsx
│   │   ├── Gemfile
│   │   ├── README.md
│   │   ├── __tests__/
│   │   │   └── App.test.tsx
│   │   ├── android/
│   │   │   ├── app/
│   │   │   │   ├── build.gradle
│   │   │   │   ├── debug.keystore
│   │   │   │   ├── proguard-rules.pro
│   │   │   │   └── src/
│   │   │   │       ├── debug/
│   │   │   │       │   └── AndroidManifest.xml
│   │   │   │       └── main/
│   │   │   │           ├── AndroidManifest.xml
│   │   │   │           ├── java/
│   │   │   │           │   └── com/
│   │   │   │           │       └── reactnativeproject/
│   │   │   │           │           ├── MainActivity.kt
│   │   │   │           │           └── MainApplication.kt
│   │   │   │           └── res/
│   │   │   │               ├── drawable/
│   │   │   │               │   └── rn_edit_text_material.xml
│   │   │   │               └── values/
│   │   │   │                   ├── strings.xml
│   │   │   │                   └── styles.xml
│   │   │   ├── build.gradle
│   │   │   ├── gradle/
│   │   │   │   └── wrapper/
│   │   │   │       ├── gradle-wrapper.jar
│   │   │   │       └── gradle-wrapper.properties
│   │   │   ├── gradle.properties
│   │   │   ├── gradlew
│   │   │   ├── gradlew.bat
│   │   │   └── settings.gradle
│   │   ├── app.json
│   │   ├── babel.config.js
│   │   ├── i18n.js
│   │   ├── index.js
│   │   ├── ios/
│   │   │   ├── .xcode.env
│   │   │   ├── Podfile
│   │   │   ├── ReactNativeProject/
│   │   │   │   ├── AppDelegate.swift
│   │   │   │   ├── Images.xcassets/
│   │   │   │   │   ├── AppIcon.appiconset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Info.plist
│   │   │   │   ├── LaunchScreen.storyboard
│   │   │   │   └── PrivacyInfo.xcprivacy
│   │   │   ├── ReactNativeProject.xcodeproj/
│   │   │   │   ├── project.pbxproj
│   │   │   │   └── xcshareddata/
│   │   │   │       └── xcschemes/
│   │   │   │           └── ReactNativeProject.xcscheme
│   │   │   └── ReactNativeProject.xcworkspace/
│   │   │       └── contents.xcworkspacedata
│   │   ├── jest.config.js
│   │   ├── locales/
│   │   │   ├── de/
│   │   │   │   └── translation.json
│   │   │   └── en/
│   │   │       └── translation.json
│   │   ├── metro.config.js
│   │   ├── package.json
│   │   └── tsconfig.json
│   ├── devserver-save-missing/
│   │   ├── .gitignore
│   │   ├── README.md
│   │   ├── config-overrides.js
│   │   ├── package.json
│   │   ├── public/
│   │   │   ├── index.html
│   │   │   ├── locales/
│   │   │   │   ├── de/
│   │   │   │   │   └── translation.json
│   │   │   │   └── en/
│   │   │   │       └── translation.json
│   │   │   └── manifest.json
│   │   ├── src/
│   │   │   ├── App.css
│   │   │   ├── App.js
│   │   │   ├── i18n.js
│   │   │   ├── index.css
│   │   │   └── index.js
│   │   └── webpack.config.js
│   ├── locize/
│   │   ├── .eslintrc.js
│   │   ├── .gitignore
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── public/
│   │   │   ├── index.html
│   │   │   └── manifest.json
│   │   └── src/
│   │       ├── App.css
│   │       ├── App.js
│   │       ├── i18n.js
│   │       ├── index.css
│   │       └── index.js
│   ├── razzle-ssr/
│   │   ├── .gitignore
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── public/
│   │   │   └── robots.txt
│   │   └── src/
│   │       ├── App.css
│   │       ├── App.js
│   │       ├── Home.css
│   │       ├── Home.js
│   │       ├── client.js
│   │       ├── i18n.js
│   │       ├── index.js
│   │       ├── locales/
│   │       │   ├── de/
│   │       │   │   └── translations.json
│   │       │   └── en/
│   │       │       └── translations.json
│   │       └── server.js
│   ├── react/
│   │   ├── .gitignore
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── public/
│   │   │   ├── index.html
│   │   │   ├── locales/
│   │   │   │   ├── de/
│   │   │   │   │   └── translation.json
│   │   │   │   └── en/
│   │   │   │       └── translation.json
│   │   │   └── manifest.json
│   │   └── src/
│   │       ├── App.css
│   │       ├── App.js
│   │       ├── i18n.js
│   │       ├── index.css
│   │       └── index.js
│   ├── react-component-lib/
│   │   ├── .gitignore
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── public/
│   │   │   ├── index.html
│   │   │   ├── locales/
│   │   │   │   ├── de/
│   │   │   │   │   └── translation.json
│   │   │   │   └── en/
│   │   │   │       └── translation.json
│   │   │   └── manifest.json
│   │   └── src/
│   │       ├── App.css
│   │       ├── App.js
│   │       ├── i18n.js
│   │       ├── index.css
│   │       ├── index.js
│   │       └── other-lib/
│   │           ├── component.js
│   │           └── i18n.js
│   ├── react-fluent/
│   │   ├── .gitignore
│   │   ├── package.json
│   │   ├── public/
│   │   │   ├── index.html
│   │   │   ├── locales/
│   │   │   │   ├── de/
│   │   │   │   │   └── translations.ftl
│   │   │   │   └── en/
│   │   │   │       └── translations.ftl
│   │   │   └── manifest.json
│   │   └── src/
│   │       ├── App.css
│   │       ├── App.js
│   │       ├── i18n.js
│   │       ├── index.css
│   │       └── index.js
│   ├── react-icu/
│   │   ├── .gitignore
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── public/
│   │   │   ├── index.html
│   │   │   ├── locales/
│   │   │   │   ├── de/
│   │   │   │   │   └── translations.json
│   │   │   │   ├── en/
│   │   │   │   │   └── translations.json
│   │   │   │   └── ru/
│   │   │   │       └── translations.json
│   │   │   ├── manifest.json
│   │   │   └── robots.txt
│   │   └── src/
│   │       ├── App.css
│   │       ├── App.js
│   │       ├── App.test.js
│   │       ├── ComponentUsingMacro.js
│   │       ├── ComponentUsingMacroInterpolated.js
│   │       ├── i18n.js
│   │       ├── index.css
│   │       ├── index.js
│   │       ├── serviceWorker.js
│   │       └── setupTests.js
│   ├── react-localstorage/
│   │   ├── .gitignore
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── public/
│   │   │   ├── index.html
│   │   │   ├── locales/
│   │   │   │   ├── de/
│   │   │   │   │   └── translation.json
│   │   │   │   └── en/
│   │   │   │       └── translation.json
│   │   │   └── manifest.json
│   │   └── src/
│   │       ├── App.css
│   │       ├── App.js
│   │       ├── i18n.js
│   │       ├── index.css
│   │       └── index.js
│   ├── react-typescript/
│   │   ├── simple/
│   │   │   ├── .gitignore
│   │   │   ├── README.md
│   │   │   ├── package.json
│   │   │   ├── public/
│   │   │   │   ├── index.html
│   │   │   │   ├── manifest.json
│   │   │   │   └── robots.txt
│   │   │   ├── src/
│   │   │   │   ├── @types/
│   │   │   │   │   ├── i18next.d.ts
│   │   │   │   │   ├── react-app-env.d.ts
│   │   │   │   │   └── resources.ts
│   │   │   │   ├── App.tsx
│   │   │   │   ├── i18n/
│   │   │   │   │   ├── config.ts
│   │   │   │   │   └── en/
│   │   │   │   │       └── translation.json
│   │   │   │   ├── index.css
│   │   │   │   └── index.tsx
│   │   │   └── tsconfig.json
│   │   └── simple-multi-namespaces/
│   │       ├── .gitignore
│   │       ├── README.md
│   │       ├── package.json
│   │       ├── public/
│   │       │   ├── index.html
│   │       │   ├── manifest.json
│   │       │   └── robots.txt
│   │       ├── src/
│   │       │   ├── @types/
│   │       │   │   ├── i18next.d.ts
│   │       │   │   ├── react-app-env.d.ts
│   │       │   │   └── resources.ts
│   │       │   ├── App.tsx
│   │       │   ├── components/
│   │       │   │   ├── Comp1.tsx
│   │       │   │   ├── Comp2.tsx
│   │       │   │   └── Comp3.tsx
│   │       │   ├── i18n/
│   │       │   │   ├── config.ts
│   │       │   │   └── en/
│   │       │   │       ├── ns1.json
│   │       │   │       └── ns2.json
│   │       │   ├── index.css
│   │       │   └── index.tsx
│   │       └── tsconfig.json
│   ├── react_native_windows/
│   │   ├── .buckconfig
│   │   ├── .eslintrc.js
│   │   ├── .flowconfig
│   │   ├── .gitattributes
│   │   ├── .gitignore
│   │   ├── .prettierrc.json
│   │   ├── .watchmanconfig
│   │   ├── App.js
│   │   ├── __tests__/
│   │   │   └── App-test.js
│   │   ├── android/
│   │   │   ├── app/
│   │   │   │   ├── BUCK
│   │   │   │   ├── build.gradle
│   │   │   │   ├── build_defs.bzl
│   │   │   │   ├── debug.keystore
│   │   │   │   ├── proguard-rules.pro
│   │   │   │   └── src/
│   │   │   │       ├── debug/
│   │   │   │       │   ├── AndroidManifest.xml
│   │   │   │       │   └── java/
│   │   │   │       │       └── com/
│   │   │   │       │           └── react_native_windows/
│   │   │   │       │               └── ReactNativeFlipper.java
│   │   │   │       └── main/
│   │   │   │           ├── AndroidManifest.xml
│   │   │   │           ├── java/
│   │   │   │           │   └── com/
│   │   │   │           │       └── react_native_windows/
│   │   │   │           │           ├── MainActivity.java
│   │   │   │           │           └── MainApplication.java
│   │   │   │           └── res/
│   │   │   │               └── values/
│   │   │   │                   ├── strings.xml
│   │   │   │                   └── styles.xml
│   │   │   ├── build.gradle
│   │   │   ├── gradle/
│   │   │   │   └── wrapper/
│   │   │   │       ├── gradle-wrapper.jar
│   │   │   │       └── gradle-wrapper.properties
│   │   │   ├── gradle.properties
│   │   │   ├── gradlew
│   │   │   ├── gradlew.bat
│   │   │   └── settings.gradle
│   │   ├── app.json
│   │   ├── babel.config.js
│   │   ├── index.js
│   │   ├── ios/
│   │   │   ├── Podfile
│   │   │   ├── react_native_windows/
│   │   │   │   ├── AppDelegate.h
│   │   │   │   ├── AppDelegate.m
│   │   │   │   ├── Images.xcassets/
│   │   │   │   │   ├── AppIcon.appiconset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Info.plist
│   │   │   │   ├── LaunchScreen.storyboard
│   │   │   │   └── main.m
│   │   │   ├── react_native_windows-tvOS/
│   │   │   │   └── Info.plist
│   │   │   ├── react_native_windows-tvOSTests/
│   │   │   │   └── Info.plist
│   │   │   ├── react_native_windows.xcodeproj/
│   │   │   │   ├── project.pbxproj
│   │   │   │   └── xcshareddata/
│   │   │   │       └── xcschemes/
│   │   │   │           ├── react_native_windows-tvOS.xcscheme
│   │   │   │           └── react_native_windows.xcscheme
│   │   │   └── react_native_windowsTests/
│   │   │       ├── Info.plist
│   │   │       └── react_native_windowsTests.m
│   │   ├── macos/
│   │   │   ├── .gitignore
│   │   │   ├── Podfile
│   │   │   ├── react_native_windows-iOS/
│   │   │   │   ├── AppDelegate.h
│   │   │   │   ├── AppDelegate.m
│   │   │   │   ├── Base.lproj/
│   │   │   │   │   └── LaunchScreen.xib
│   │   │   │   ├── Images.xcassets/
│   │   │   │   │   ├── AppIcon.appiconset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Info.plist
│   │   │   │   └── main.m
│   │   │   ├── react_native_windows-macOS/
│   │   │   │   ├── AppDelegate.h
│   │   │   │   ├── AppDelegate.m
│   │   │   │   ├── Assets.xcassets/
│   │   │   │   │   ├── AppIcon.appiconset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Base.lproj/
│   │   │   │   │   └── Main.storyboard
│   │   │   │   ├── Info.plist
│   │   │   │   ├── ViewController.h
│   │   │   │   ├── ViewController.m
│   │   │   │   ├── main.m
│   │   │   │   └── react_native_windows.entitlements
│   │   │   ├── react_native_windows.xcodeproj/
│   │   │   │   ├── project.pbxproj
│   │   │   │   └── xcshareddata/
│   │   │   │       └── xcschemes/
│   │   │   │           ├── react_native_windows-iOS.xcscheme
│   │   │   │           └── react_native_windows-macOS.xcscheme
│   │   │   └── react_native_windows.xcworkspace/
│   │   │       └── contents.xcworkspacedata
│   │   ├── metro.config.js
│   │   ├── metro.config.macos.js
│   │   ├── package.json
│   │   ├── react-native.config.js
│   │   └── windows/
│   │       ├── .gitignore
│   │       ├── react_native_windows/
│   │       │   ├── .gitignore
│   │       │   ├── App.cpp
│   │       │   ├── App.h
│   │       │   ├── App.idl
│   │       │   ├── App.xaml
│   │       │   ├── AutolinkedNativeModules.g.cpp
│   │       │   ├── AutolinkedNativeModules.g.h
│   │       │   ├── AutolinkedNativeModules.g.targets
│   │       │   ├── MainPage.cpp
│   │       │   ├── MainPage.h
│   │       │   ├── MainPage.idl
│   │       │   ├── MainPage.xaml
│   │       │   ├── Package.appxmanifest
│   │       │   ├── PropertySheet.props
│   │       │   ├── ReactPackageProvider.cpp
│   │       │   ├── ReactPackageProvider.h
│   │       │   ├── packages.config
│   │       │   ├── pch.cpp
│   │       │   ├── pch.h
│   │       │   ├── react_native_windows.vcxproj
│   │       │   ├── react_native_windows.vcxproj.filters
│   │       │   └── react_native_windows_TemporaryKey.pfx
│   │       └── react_native_windows.sln
│   ├── storybook/
│   │   ├── .gitignore
│   │   ├── .storybook/
│   │   │   ├── main.js
│   │   │   └── preview.js
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── public/
│   │   │   ├── index.html
│   │   │   ├── locales/
│   │   │   │   ├── ar/
│   │   │   │   │   └── translation.json
│   │   │   │   ├── de/
│   │   │   │   │   └── translation.json
│   │   │   │   └── en/
│   │   │   │       └── translation.json
│   │   │   └── manifest.json
│   │   └── src/
│   │       ├── App.css
│   │       ├── App.js
│   │       ├── i18n.js
│   │       ├── index.css
│   │       ├── index.js
│   │       └── stories/
│   │           ├── app.stories.js
│   │           └── components.stories.js
│   └── test-jest/
│       ├── .gitignore
│       ├── README.md
│       ├── package.json
│       ├── public/
│       │   ├── index.html
│       │   ├── locales/
│       │   │   ├── de/
│       │   │   │   └── translations.json
│       │   │   └── en/
│       │   │       └── translations.json
│       │   └── manifest.json
│       └── src/
│           ├── App.css
│           ├── App.js
│           ├── App.test.js
│           ├── Trans.js
│           ├── Trans.test.js
│           ├── Translation.js
│           ├── Translation.test.js
│           ├── UseTranslation.js
│           ├── UseTranslation.test.js
│           ├── UseTranslationWithInterpolation.js
│           ├── UseTranslationWithInterpolation.test.js
│           ├── WithTranslation.js
│           ├── WithTranslation.test.js
│           ├── __mocks__/
│           │   └── react-i18next.js
│           ├── i18n.js
│           ├── index.css
│           ├── index.js
│           └── setupTests.js
├── helpers.d.ts
├── icu.macro.d.mts
├── icu.macro.d.ts
├── icu.macro.js
├── index.d.mts
├── index.d.ts
├── initReactI18next.d.mts
├── initReactI18next.d.ts
├── lint-staged.config.mjs
├── package.json
├── react-i18next.js
├── rollup.config.mjs
├── src/
│   ├── I18nextProvider.js
│   ├── IcuTrans.js
│   ├── IcuTransUtils/
│   │   ├── TranslationParserError.js
│   │   ├── htmlEntityDecoder.js
│   │   ├── index.js
│   │   ├── renderTranslation.js
│   │   └── tokenizer.js
│   ├── IcuTransWithoutContext.js
│   ├── Trans.js
│   ├── TransWithoutContext.js
│   ├── Translation.js
│   ├── context.js
│   ├── defaults.js
│   ├── i18nInstance.js
│   ├── index.js
│   ├── initReactI18next.js
│   ├── unescape.js
│   ├── useSSR.js
│   ├── useTranslation.js
│   ├── utils.js
│   ├── withSSR.js
│   └── withTranslation.js
├── test/
│   ├── I18nextProvider.spec.jsx
│   ├── IcuTrans/
│   │   ├── IcuTrans.spec.jsx
│   │   ├── IcuTransWithoutContext.spec.jsx
│   │   └── utils/
│   │       ├── htmlEntityDecoder.spec.js
│   │       ├── renderTranslation.spec.js
│   │       └── tokenizer.spec.js
│   ├── Translation.spec.jsx
│   ├── __snapshots__/
│   │   └── icu.macro.spec.js.snap
│   ├── backendLngAwareMock.js
│   ├── backendMock.js
│   ├── hasLoadedNamespaceMock.js
│   ├── i18n.js
│   ├── i18nNoLng.js
│   ├── icu.macro.spec.js
│   ├── initReactI18next.spec.js
│   ├── setup.js
│   ├── trans.nodeToString.spec.jsx
│   ├── trans.render.dynamic.spec.jsx
│   ├── trans.render.icu.spec.jsx
│   ├── trans.render.noLng.spec.jsx
│   ├── trans.render.object.spec.jsx
│   ├── trans.render.spec.jsx
│   ├── typescript/
│   │   ├── custom-types/
│   │   │   ├── IcuTrans.test.tsx
│   │   │   ├── Trans.test.tsx
│   │   │   ├── TransWithoutContext.test.tsx
│   │   │   ├── Translation.test.ts
│   │   │   ├── i18next.d.ts
│   │   │   ├── tsconfig.json
│   │   │   └── useTranslation.test.ts
│   │   ├── issue-1899/
│   │   │   ├── check-types.sh
│   │   │   ├── i18next.d.ts
│   │   │   ├── import-check.ts
│   │   │   └── tsconfig.json
│   │   ├── misc/
│   │   │   ├── I18nextProvider.test.tsx
│   │   │   ├── IcuTrans.test.tsx
│   │   │   ├── IcuTransWithoutContext.test.tsx
│   │   │   ├── Trans.test.tsx
│   │   │   ├── TransWithoutContext.test.tsx
│   │   │   ├── Translation.test.tsx
│   │   │   ├── context.test.tsx
│   │   │   ├── tsconfig.json
│   │   │   ├── tsconfig.nonEsModuleInterop.json
│   │   │   ├── useSSR.test.tsx
│   │   │   ├── useTranslation.test.ts
│   │   │   ├── withSSR.test.tsx
│   │   │   └── withTranslation.test.tsx
│   │   ├── selector-custom-types/
│   │   │   ├── IcuTrans.test.tsx
│   │   │   ├── IcuTransWithoutContext.test.tsx
│   │   │   ├── Trans.test.tsx
│   │   │   ├── TransWithoutContext.test.tsx
│   │   │   ├── Translation.test.tsx
│   │   │   ├── i18next.d.ts
│   │   │   ├── tsconfig.json
│   │   │   └── useTranslation.test.ts
│   │   └── selector-optimize/
│   │       ├── IcuTrans.test.tsx
│   │       ├── IcuTransWithoutContext.test.tsx
│   │       ├── Trans.test.tsx
│   │       ├── TransWithoutContext.test.tsx
│   │       ├── Translation.test.tsx
│   │       ├── i18next.d.ts
│   │       ├── tsconfig.json
│   │       └── useTranslation.test.ts
│   ├── unescape.spec.js
│   ├── useSSR.spec.js
│   ├── useTranslation.advanced.spec.js
│   ├── useTranslation.bindI18nStore.spec.jsx
│   ├── useTranslation.loading.spec.js
│   ├── useTranslation.loadingLng.spec.js
│   ├── useTranslation.ready.spec.jsx
│   ├── useTranslation.spec.jsx
│   ├── useTranslation.usedNamespaces.spec.js
│   ├── utils.spec.js
│   ├── withSSR.spec.jsx
│   ├── withTranslation.keyPrefix.spec.jsx
│   └── withTranslation.spec.jsx
├── tsconfig.json
├── vitest.config.mts
└── vitest.workspace.typescript.mts
Download .txt
SYMBOL INDEX (427 symbols across 84 files)

FILE: TransWithoutContext.d.ts
  type _DefaultNamespace (line 16) | type _DefaultNamespace = TypeOptions['defaultNS'];
  type _EnableSelector (line 17) | type _EnableSelector = TypeOptions['enableSelector'];
  type TransChild (line 19) | type TransChild = React.ReactNode | Record<string, unknown>;
  type $NoInfer (line 20) | type $NoInfer<T> = [T][T extends T ? 0 : never];
  type TransProps (line 22) | type TransProps<
  type TransLegacy (line 45) | interface TransLegacy {
  type TransSelectorProps (line 58) | interface TransSelectorProps<
  type TransSelector (line 80) | interface TransSelector {
  type ErrorCode (line 103) | type ErrorCode =
  type ErrorMeta (line 112) | type ErrorMeta = {
  type ErrorArgs (line 137) | type ErrorArgs = readonly [string, ErrorMeta | undefined, ...any[]];

FILE: example/ReactNativeLocizeProject/App.tsx
  class LegacyWelcomeClass (line 7) | class LegacyWelcomeClass extends Component<{t: TFunction}> {
    method render (line 8) | render() {
  function MyComponent (line 16) | function MyComponent() {
  function AppInner (line 26) | function AppInner() {
  function App (line 54) | function App() {

FILE: example/ReactNativeProject/App.tsx
  class LegacyWelcomeClass (line 7) | class LegacyWelcomeClass extends Component<{t: TFunction}> {
    method render (line 8) | render() {
  function MyComponent (line 16) | function MyComponent() {
  function AppInner (line 26) | function AppInner() {
  function App (line 54) | function App() {

FILE: example/devserver-save-missing/src/App.js
  class LegacyWelcomeClass (line 7) | class LegacyWelcomeClass extends Component {
    method render (line 8) | render() {
  function MyComponent (line 16) | function MyComponent() {
  function Page (line 25) | function Page() {
  function App (line 62) | function App() {

FILE: example/locize/src/App.js
  class LegacyWelcomeClass (line 7) | class LegacyWelcomeClass extends Component {
    method render (line 8) | render() {
  function MyComponent (line 16) | function MyComponent() {
  function Page (line 25) | function Page() {
  function App (line 63) | function App() {

FILE: example/razzle-ssr/src/App.js
  function App (line 6) | function App() {

FILE: example/razzle-ssr/src/Home.js
  function Home (line 6) | function Home() {

FILE: example/react-component-lib/src/App.js
  class LegacyWelcomeClass (line 8) | class LegacyWelcomeClass extends Component {
    method render (line 9) | render() {
  function MyComponent (line 17) | function MyComponent() {
  function Page (line 26) | function Page() {
  function App (line 64) | function App() {

FILE: example/react-component-lib/src/other-lib/component.js
  function Comp (line 6) | function Comp() {
  function MyCompFromOtherLib (line 12) | function MyCompFromOtherLib() {

FILE: example/react-fluent/src/App.js
  function Page (line 7) | function Page() {
  function App (line 45) | function App() {

FILE: example/react-icu/src/App.js
  class Page (line 9) | class Page extends Component {
    method render (line 10) | render() {
  function App (line 50) | function App() {

FILE: example/react-icu/src/ComponentUsingMacro.js
  function ComponentUsingMacro (line 13) | function ComponentUsingMacro() {

FILE: example/react-icu/src/ComponentUsingMacroInterpolated.js
  function ComponentUsingMacro (line 8) | function ComponentUsingMacro() {

FILE: example/react-icu/src/serviceWorker.js
  function register (line 21) | function register(config) {
  function registerValidSW (line 55) | function registerValidSW(swUrl, config) {
  function checkValidServiceWorker (line 99) | function checkValidServiceWorker(swUrl, config) {
  function unregister (line 127) | function unregister() {

FILE: example/react-localstorage/src/App.js
  class LegacyWelcomeClass (line 7) | class LegacyWelcomeClass extends Component {
    method render (line 8) | render() {
  function MyComponent (line 16) | function MyComponent() {
  function Page (line 25) | function Page() {
  function App (line 61) | function App() {

FILE: example/react-typescript/simple-multi-namespaces/src/@types/i18next.d.ts
  type CustomTypeOptions (line 5) | interface CustomTypeOptions {

FILE: example/react-typescript/simple-multi-namespaces/src/App.tsx
  function App (line 6) | function App() {

FILE: example/react-typescript/simple-multi-namespaces/src/components/Comp1.tsx
  function Comp1 (line 3) | function Comp1() {

FILE: example/react-typescript/simple-multi-namespaces/src/components/Comp2.tsx
  function Comp2 (line 3) | function Comp2() {

FILE: example/react-typescript/simple-multi-namespaces/src/components/Comp3.tsx
  function Comp2 (line 3) | function Comp2() {

FILE: example/react-typescript/simple/src/@types/i18next.d.ts
  type CustomTypeOptions (line 4) | interface CustomTypeOptions {

FILE: example/react-typescript/simple/src/App.tsx
  function App (line 4) | function App() {

FILE: example/react/src/App.js
  class LegacyWelcomeClass (line 7) | class LegacyWelcomeClass extends Component {
    method render (line 8) | render() {
  function MyComponent (line 16) | function MyComponent() {
  function Page (line 25) | function Page() {
  function App (line 61) | function App() {

FILE: example/react_native_windows/App.js
  function Content (line 56) | function Content() {

FILE: example/react_native_windows/android/app/src/debug/java/com/react_native_windows/ReactNativeFlipper.java
  class ReactNativeFlipper (line 27) | public class ReactNativeFlipper {
    method initializeFlipper (line 28) | public static void initializeFlipper(Context context, ReactInstanceMan...

FILE: example/react_native_windows/android/app/src/main/java/com/react_native_windows/MainActivity.java
  class MainActivity (line 5) | public class MainActivity extends ReactActivity {
    method getMainComponentName (line 11) | @Override

FILE: example/react_native_windows/android/app/src/main/java/com/react_native_windows/MainApplication.java
  class MainApplication (line 14) | public class MainApplication extends Application implements ReactApplica...
    method getUseDeveloperSupport (line 18) | @Override
    method getPackages (line 23) | @Override
    method getJSMainModuleName (line 32) | @Override
    method getReactNativeHost (line 38) | @Override
    method onCreate (line 43) | @Override
    method initializeFlipper (line 57) | private static void initializeFlipper(

FILE: example/react_native_windows/windows/react_native_windows/App.h
  function namespace (line 7) | namespace winrt::react_native_windows::implementation

FILE: example/react_native_windows/windows/react_native_windows/AutolinkedNativeModules.g.cpp
  type winrt::Microsoft::ReactNative (line 6) | namespace winrt::Microsoft::ReactNative
    function RegisterAutolinkedNativeModulePackages (line 9) | void RegisterAutolinkedNativeModulePackages(winrt::Windows::Foundation...

FILE: example/react_native_windows/windows/react_native_windows/AutolinkedNativeModules.g.h
  function namespace (line 5) | namespace winrt::Microsoft::ReactNative

FILE: example/react_native_windows/windows/react_native_windows/MainPage.cpp
  type winrt::react_native_windows::implementation (line 14) | namespace winrt::react_native_windows::implementation

FILE: example/react_native_windows/windows/react_native_windows/MainPage.h
  function namespace (line 6) | namespace winrt::react_native_windows::implementation
  function namespace (line 14) | namespace winrt::react_native_windows::factory_implementation

FILE: example/react_native_windows/windows/react_native_windows/ReactPackageProvider.cpp
  type winrt::react_native_windows::implementation (line 8) | namespace winrt::react_native_windows::implementation

FILE: example/react_native_windows/windows/react_native_windows/ReactPackageProvider.h
  function namespace (line 6) | namespace winrt::react_native_windows::implementation

FILE: example/storybook/src/App.js
  class LegacyWelcomeClass (line 7) | class LegacyWelcomeClass extends Component {
    method render (line 8) | render() {
  function MyComponent (line 16) | function MyComponent() {
  function Page (line 25) | function Page() {
  function App (line 58) | function App() {

FILE: example/storybook/src/stories/components.stories.js
  class ClassComponent (line 4) | class ClassComponent extends Component {
    method render (line 5) | render() {
  function ComponentUsingHook (line 13) | function ComponentUsingHook() {
  function ComponentUsingTrans (line 18) | function ComponentUsingTrans() {

FILE: example/test-jest/src/App.js
  class AppPage (line 8) | class AppPage extends Component {
    method render (line 9) | render() {
  function App (line 38) | function App() {

FILE: example/test-jest/src/Trans.js
  function CustomComponent (line 4) | function CustomComponent() {

FILE: example/test-jest/src/Translation.js
  function CustomComponent (line 4) | function CustomComponent() {

FILE: example/test-jest/src/UseTranslation.js
  function CustomComponent (line 4) | function CustomComponent() {

FILE: example/test-jest/src/UseTranslationWithInterpolation.js
  function CustomComponent (line 4) | function CustomComponent() {

FILE: example/test-jest/src/WithTranslation.js
  function CustomComponent (line 4) | function CustomComponent({ t }) {

FILE: helpers.d.ts
  type $Tuple (line 2) | type $Tuple<T> = readonly [T?, ...T[]];
  type $Subtract (line 3) | type $Subtract<T extends K, K> = Omit<T, keyof K>;

FILE: icu.macro.d.ts
  type _DefaultNamespace (line 7) | type _DefaultNamespace = TypeOptions['defaultNS'];
  type PluralSubProps (line 9) | interface PluralSubProps<
  type PluralProps (line 27) | type PluralProps<
  type SelectSubProps (line 43) | interface SelectSubProps {
  type NoChildren (line 47) | interface NoChildren {
  type SelectRequiredProps (line 51) | interface SelectRequiredProps<
  type SelectProps (line 63) | type SelectProps<
  type ValidInterpolations (line 86) | type ValidInterpolations = ReactElement | string;

FILE: icu.macro.js
  function ICUMacro (line 7) | function ICUMacro({ references, state, babel }) {
  function pluralAsJSX (line 111) | function pluralAsJSX(parentPath, { attributes }, babel) {
  function selectAsJSX (line 173) | function selectAsJSX(parentPath, { attributes }, babel) {
  function transAsJSX (line 225) | function transAsJSX(parentPath, { attributes, children }, babel) {
  function buildTransElement (line 259) | function buildTransElement(
  function jsxElementToDeclaration (line 316) | function jsxElementToDeclaration(jsxElement, t) {
  function cloneExistingAttributes (line 406) | function cloneExistingAttributes(attributes) {
  function findAttribute (line 425) | function findAttribute(name, attributes) {
  function attributeExistsAlready (line 432) | function attributeExistsAlready(name, attributes) {
  function processTrans (line 436) | function processTrans(children, babel, componentStartIndex = 0) {
  function trimIndent (line 448) | function trimIndent(text) {
  function mergeCommaExpressions (line 458) | function mergeCommaExpressions(ele) {
  function mergeTaggedTemplateExpressions (line 475) | function mergeTaggedTemplateExpressions(ele, componentFoundIndex, t, bab...
  function mergeChildren (line 488) | function mergeChildren(children, babel, componentStartIndex = 0) {
  function getValues (line 537) | function getValues(children, babel) {
  function getComponents (line 591) | function getComponents(children, babel) {
  function addImports (line 631) | function addImports(state, existingImport, allImportsToAdd, t) {
  function addNeededImports (line 656) | function addNeededImports(state, babel, references) {
  function getTextAndInterpolatedVariables (line 833) | function getTextAndInterpolatedVariables(type, primaryNode, index, babel) {

FILE: index.d.ts
  type IcuTransContentDeclaration (line 38) | interface IcuTransContentDeclaration {
  type IcuTransWithoutContextProps (line 49) | type IcuTransWithoutContextProps<
  type IcuTransProps (line 75) | type IcuTransProps<
  type IcuTransComponent (line 97) | interface IcuTransComponent {
  type IcuTransWithoutContextComponent (line 124) | interface IcuTransWithoutContextComponent {
  type ReportNamespaces (line 151) | interface ReportNamespaces {
  type CustomInstanceExtensions (line 160) | interface CustomInstanceExtensions {
  type ObjectOrNever (line 165) | type ObjectOrNever = TypeOptions['allowObjectInHTMLChildren'] extends true
  type ReactI18NextChildren (line 169) | type ReactI18NextChildren = React.ReactNode | ObjectOrNever;
  type IntrinsicAttributes (line 173) | interface IntrinsicAttributes {
  type HTMLAttributes (line 178) | interface HTMLAttributes<T> {
  type _DefaultNamespace (line 186) | type _DefaultNamespace = TypeOptions['defaultNS'];
  type _EnableSelector (line 191) | type _EnableSelector = TypeOptions extends { enableSelector: infer U } ?...
  type UseTranslationOptions (line 193) | type UseTranslationOptions<KPrefix> = {
  type UseTranslationResponse (line 203) | type UseTranslationResponse<Ns extends Namespace, KPrefix> = [
  type FallbackNs (line 216) | type FallbackNs<Ns> = Ns extends undefined
  type UseTranslationLegacy (line 226) | interface UseTranslationLegacy {
  type UseTranslationSelector (line 236) | interface UseTranslationSelector {
  type WithTranslation (line 259) | interface WithTranslation<
  type WithTranslationProps (line 268) | interface WithTranslationProps {
  type I18nextProviderProps (line 292) | interface I18nextProviderProps {
  type TranslationProps (line 301) | interface TranslationProps<

FILE: react-i18next.js
  class RegExpCache (line 128) | class RegExpCache {
    method constructor (line 129) | constructor(capacity) {
    method getRegExp (line 134) | getRegExp(pattern) {
  method log (line 200) | log(args) {
  method warn (line 203) | warn(args) {
  method error (line 206) | error(args) {
  method output (line 209) | output(type, args) {
  class Logger (line 213) | class Logger {
    method constructor (line 214) | constructor(concreteLogger, options = {}) {
    method init (line 217) | init(concreteLogger, options = {}) {
    method log (line 223) | log(...args) {
    method warn (line 226) | warn(...args) {
    method error (line 229) | error(...args) {
    method deprecate (line 232) | deprecate(...args) {
    method forward (line 235) | forward(args, lvl, prefix, debugOnly) {
    method create (line 240) | create(moduleName) {
    method clone (line 248) | clone(options) {
  class EventEmitter (line 255) | class EventEmitter {
    method constructor (line 256) | constructor() {
    method on (line 259) | on(events, listener) {
    method off (line 267) | off(event, listener) {
    method emit (line 275) | emit(event, ...args) {
  class ResourceStore (line 294) | class ResourceStore extends EventEmitter {
    method constructor (line 295) | constructor(data, options = {
    method addNamespaces (line 309) | addNamespaces(ns) {
    method removeNamespaces (line 314) | removeNamespaces(ns) {
    method getResource (line 320) | getResource(lng, ns, key, options = {}) {
    method addResource (line 347) | addResource(lng, ns, key, value, options = {
    method addResources (line 362) | addResources(lng, ns, resources, options = {
    method addResourceBundle (line 372) | addResourceBundle(lng, ns, resources, deep, overwrite, options = {
    method removeResourceBundle (line 397) | removeResourceBundle(lng, ns) {
    method hasResourceBundle (line 404) | hasResourceBundle(lng, ns) {
    method getResourceBundle (line 407) | getResourceBundle(lng, ns) {
    method getDataByLanguage (line 411) | getDataByLanguage(lng) {
    method hasLanguageSomeTranslations (line 414) | hasLanguageSomeTranslations(lng) {
    method toJSON (line 419) | toJSON() {
  method addPostProcessor (line 425) | addPostProcessor(module) {
  method handle (line 428) | handle(processors, value, key, options, translator) {
  function createProxy (line 436) | function createProxy() {
  function keysFromSelector (line 449) | function keysFromSelector(selector, opts) {
  class Translator (line 457) | class Translator extends EventEmitter {
    method constructor (line 458) | constructor(services, options = {}) {
    method changeLanguage (line 467) | changeLanguage(lng) {
    method exists (line 470) | exists(key, o = {
    method extractFromKey (line 485) | extractFromKey(key, opt) {
    method translate (line 509) | translate(keys, o, lastKey) {
    method extendTranslation (line 707) | extendTranslation(res, key, opt, resolved, lastKey) {
    method resolve (line 765) | resolve(keys, opt = {}) {
    method isValidLookup (line 842) | isValidLookup(res) {
    method getResource (line 845) | getResource(code, ns, key, options = {}) {
    method getUsedParamsDetails (line 849) | getUsedParamsDetails(options = {}) {
    method hasDefaultValue (line 872) | static hasDefaultValue(options) {
  class LanguageUtil (line 882) | class LanguageUtil {
    method constructor (line 883) | constructor(options) {
    method getScriptPartFromCode (line 888) | getScriptPartFromCode(code) {
    method getLanguagePartFromCode (line 897) | getLanguagePartFromCode(code) {
    method formatLanguageCode (line 903) | formatLanguageCode(code) {
    method isSupportedCode (line 920) | isSupportedCode(code) {
    method getBestMatchFromCodes (line 926) | getBestMatchFromCodes(codes) {
    method getFallbackCodes (line 952) | getFallbackCodes(fallbacks, code) {
    method toResolveHierarchy (line 965) | toResolveHierarchy(code, fallbackCode) {
  class PluralResolver (line 1003) | class PluralResolver {
    method constructor (line 1004) | constructor(languageUtils, options = {}) {
    method addRule (line 1010) | addRule(lng, obj) {
    method clearCache (line 1013) | clearCache() {
    method getRule (line 1016) | getRule(code, options = {}) {
    method needsPlural (line 1043) | needsPlural(code, options = {}) {
    method getPluralFormsOfKey (line 1048) | getPluralFormsOfKey(code, key, options = {}) {
    method getSuffixes (line 1051) | getSuffixes(code, options = {}) {
    method getSuffix (line 1057) | getSuffix(code, count, options = {}) {
  class Interpolator (line 1075) | class Interpolator {
    method constructor (line 1076) | constructor(options = {}) {
    method init (line 1082) | init(options = {}) {
    method reset (line 1120) | reset() {
    method resetRegExp (line 1123) | resetRegExp() {
    method interpolate (line 1135) | interpolate(str, data, lng, options) {
    method nest (line 1205) | nest(str, fc, options = {}) {
  class Formatter (line 1317) | class Formatter {
    method constructor (line 1318) | constructor(options = {}) {
    method init (line 1323) | init(services, options = {
    method add (line 1362) | add(name, fc) {
    method addCached (line 1365) | addCached(name, fc) {
    method format (line 1368) | format(value, format, lng, options = {}) {
  class Connector (line 1407) | class Connector extends EventEmitter {
    method constructor (line 1408) | constructor(backend, store, services, options = {}) {
    method queueLoad (line 1425) | queueLoad(languages, namespaces, options, callback) {
    method loaded (line 1464) | loaded(name, err, data) {
    method read (line 1502) | read(lng, ns, fcName, tried = 0, wait = this.retryTimeout, callback) {
    method prepareLoading (line 1546) | prepareLoading(languages, namespaces, options = {}, callback) {
    method load (line 1562) | load(languages, namespaces, callback) {
    method reload (line 1565) | reload(languages, namespaces, callback) {
    method loadOne (line 1570) | loadOne(name, prefix = '') {
    method saveMissing (line 1580) | saveMissing(languages, namespace, key, fallbackValue, isUpdate, option...
  class I18n (line 1696) | class I18n extends EventEmitter {
    method constructor (line 1697) | constructor(options = {}, callback) {
    method init (line 1716) | init(options = {}, callback) {
    method loadResources (line 1849) | loadResources(language, callback = noop) {
    method reloadResources (line 1880) | reloadResources(lngs, ns, callback) {
    method use (line 1899) | use(module) {
    method setResolvedLanguage (line 1925) | setResolvedLanguage(l) {
    method changeLanguage (line 1941) | changeLanguage(lng, callback) {
    method getFixedT (line 1994) | getFixedT(lng, ns, keyPrefix) {
    method t (line 2036) | t(...args) {
    method exists (line 2039) | exists(...args) {
    method setDefaultNamespace (line 2042) | setDefaultNamespace(ns) {
    method hasLoadedNamespace (line 2045) | hasLoadedNamespace(ns, options = {}) {
    method loadNamespaces (line 2071) | loadNamespaces(ns, callback) {
    method loadLanguages (line 2087) | loadLanguages(lngs, callback) {
    method dir (line 2103) | dir(lng) {
    method createInstance (line 2118) | static createInstance(options = {}, callback) {
    method cloneInstance (line 2123) | cloneInstance(options = {}, callback = noop) {
    method toJSON (line 2175) | toJSON() {
  function getDefaultExportFromCjs (line 2201) | function getDefaultExportFromCjs (x) {
  function n (line 2225) | function n(n) {
  function a (line 2251) | function a(e, t) {
  function Componentized (line 2710) | function Componentized() {
  function Trans$1 (line 2745) | function Trans$1({
  method init (line 2843) | init(instance) {
  class ReportNamespaces (line 2850) | class ReportNamespaces {
    method constructor (line 2851) | constructor() {
    method addUsedNamespaces (line 2854) | addUsedNamespaces(namespaces) {
    method getUsedNamespaces (line 2859) | getUsedNamespaces() {
  function Trans (line 2891) | function Trans({
  class TranslationParserError (line 2931) | class TranslationParserError extends Error {
    method constructor (line 2932) | constructor(message, position, translationString) {
  function IcuTransWithoutContext (line 3310) | function IcuTransWithoutContext({
  function IcuTrans (line 3356) | function IcuTrans({
  function is (line 3398) | function is(x, y) {
  function useSyncExternalStore$2 (line 3401) | function useSyncExternalStore$2(subscribe, getSnapshot) {
  function checkIfSnapshotChanged (line 3436) | function checkIfSnapshotChanged(inst) {
  function useSyncExternalStore$1 (line 3446) | function useSyncExternalStore$1(subscribe, getSnapshot) {
  function I18nextWithTranslation (line 3624) | function I18nextWithTranslation({
  function I18nextProvider (line 3665) | function I18nextProvider({
  function I18nextWithSSR (line 3714) | function I18nextWithSSR({

FILE: src/I18nextProvider.js
  function I18nextProvider (line 4) | function I18nextProvider({ i18n, defaultNS, children }) {

FILE: src/IcuTrans.js
  function IcuTrans (line 78) | function IcuTrans({

FILE: src/IcuTransUtils/TranslationParserError.js
  class TranslationParserError (line 4) | class TranslationParserError extends Error {
    method constructor (line 10) | constructor(message, position, translationString) {

FILE: src/IcuTransWithoutContext.js
  function IcuTransWithoutContext (line 84) | function IcuTransWithoutContext({

FILE: src/Trans.js
  function Trans (line 7) | function Trans({

FILE: src/TransWithoutContext.js
  function Componentized (line 450) | function Componentized() {
  function Trans (line 507) | function Trans({

FILE: src/context.js
  class ReportNamespaces (line 10) | class ReportNamespaces {
    method constructor (line 11) | constructor() {
    method addUsedNamespaces (line 15) | addUsedNamespaces(namespaces) {
    method getUsedNamespaces (line 21) | getUsedNamespaces() {

FILE: src/initReactI18next.js
  method init (line 7) | init(instance) {

FILE: src/withSSR.js
  function I18nextWithSSR (line 8) | function I18nextWithSSR({ initialI18nStore, initialLanguage, ...rest }) {

FILE: src/withTranslation.js
  function I18nextWithTranslation (line 7) | function I18nextWithTranslation({ forwardedRef, ...rest }) {

FILE: test/I18nextProvider.spec.jsx
  function TestComponent (line 37) | function TestComponent() {

FILE: test/IcuTrans/IcuTrans.spec.jsx
  function CustomButton (line 137) | function CustomButton({ children, color }) {
  function Icon (line 162) | function Icon({ name }) {
  function Icon (line 587) | function Icon({ name }) {

FILE: test/IcuTrans/utils/renderTranslation.spec.js
  function CustomButton (line 367) | function CustomButton({ label }) {

FILE: test/Translation.spec.jsx
  function TestComponent (line 14) | function TestComponent() {

FILE: test/backendLngAwareMock.js
  class BackendLngAwareMock (line 1) | class BackendLngAwareMock {
    method constructor (line 2) | constructor(services, options = {}) {
    method init (line 8) | init(services, options) {
    method read (line 13) | read(language, namespace, callback) {
    method flush (line 17) | flush(what) {

FILE: test/backendMock.js
  class BackendMock (line 1) | class BackendMock {
    method constructor (line 2) | constructor(services, options = {}) {
    method init (line 8) | init(services, options) {
    method read (line 13) | read(language, namespace, callback) {
    method flush (line 17) | flush() {

FILE: test/i18n.js
  method format (line 79) | format(value, format) {

FILE: test/trans.render.dynamic.spec.jsx
  function TestComponent (line 20) | function TestComponent() {
  function TestComponent (line 54) | function TestComponent() {
  function TestComponent (line 85) | function TestComponent() {
  function TestComponent (line 107) | function TestComponent() {

FILE: test/trans.render.icu.spec.jsx
  function TestComponent (line 12) | function TestComponent() {
  function TestComponent (line 36) | function TestComponent() {
  function TestComponent (line 66) | function TestComponent() {
  function TestComponent (line 83) | function TestComponent() {
  function TestComponent (line 109) | function TestComponent() {

FILE: test/trans.render.object.spec.jsx
  function TestComponent (line 12) | function TestComponent() {
  function TestComponent (line 39) | function TestComponent() {
  function TestComponent (line 66) | function TestComponent() {
  function TestComponent (line 93) | function TestComponent() {
  function TestComponent (line 120) | function TestComponent() {
  function TestComponent (line 147) | function TestComponent() {
  function TestComponent (line 179) | function TestComponent() {
  function Button (line 211) | function Button() {
  function TestComponent (line 214) | function TestComponent() {
  function Button (line 233) | function Button() {
  function TestComponent (line 236) | function TestComponent() {
  function Button (line 255) | function Button() {
  function TestComponent (line 258) | function TestComponent() {
  function TestComponent (line 277) | function TestComponent() {
  function Button (line 305) | function Button({ children }) {
  function TestComponent (line 308) | function TestComponent() {
  function TestComponent (line 327) | function TestComponent() {
  function TestComponent (line 351) | function TestComponent() {
  function TestComponent (line 373) | function TestComponent() {
  function TestComponent (line 397) | function TestComponent() {
  function TestComponent (line 421) | function TestComponent() {

FILE: test/trans.render.spec.jsx
  function Link (line 9) | function Link({ to, children }) {
  function TestComponent (line 18) | function TestComponent({ parent }) {
  function TestComponent (line 58) | function TestComponent({ parent }) {
  function TestComponent (line 83) | function TestComponent({ parent }) {
  function TestComponent (line 108) | function TestComponent({ parent }) {
  function TestComponent (line 133) | function TestComponent({ parent }) {
  function TestComponent2 (line 141) | function TestComponent2({ parent }) {
  function TestComponent3 (line 145) | function TestComponent3({ parent }) {
  function TestComponent (line 196) | function TestComponent() {
  function TestComponent (line 212) | function TestComponent() {
  function TestComponent (line 228) | function TestComponent() {
  function TestComponent (line 249) | function TestComponent() {
  function TestComponent (line 270) | function TestComponent() {
  function TestComponent (line 295) | function TestComponent() {
  function TestComponent (line 321) | function TestComponent() {
  function TestComponent (line 355) | function TestComponent() {
  function TestComponent (line 389) | function TestComponent() {
  function TestComponent (line 423) | function TestComponent() {
  function TestComponent (line 448) | function TestComponent() {
  function TestComponent (line 480) | function TestComponent({ t, cb }) {
  function TestComponent (line 523) | function TestComponent() {
  function TestComponent (line 533) | function TestComponent() {
  function TestComponent (line 547) | function TestComponent() {
  function TestComponent (line 566) | function TestComponent() {
  function TestComponent (line 580) | function TestComponent() {
  function TestComponent (line 594) | function TestComponent() {
  function TestComponent (line 620) | function TestComponent() {
  function TestComponent (line 634) | function TestComponent() {
  function TestComponent (line 660) | function TestComponent() {
  function TestComponent (line 686) | function TestComponent() {
  function Component (line 710) | function Component({ children }) {
  function TestComponent (line 796) | function TestComponent() {
  function TestComponent (line 830) | function TestComponent() {
  function TestComponent (line 861) | function TestComponent({ value }) {
  function TestComponent (line 884) | function TestComponent() {
  function TestComponent (line 918) | function TestComponent() {
  function TestComponent (line 941) | function TestComponent() {
  function TestComponent (line 955) | function TestComponent({ parent }) {
  function TestComponent (line 981) | function TestComponent({ parent }) {
  function TestComponent (line 1006) | function TestComponent({ parent }) {
  function TestComponent (line 1052) | function TestComponent({ parent }) {
  function TestComponent (line 1076) | function TestComponent({ parent }) {
  function TestComponent (line 1101) | function TestComponent({ parent }) {
  function TestComponent (line 1116) | function TestComponent({ parent }) {
  function TestComponent (line 1131) | function TestComponent({ parent }) {
  function TestComponent (line 1146) | function TestComponent() {
  function TestComponent (line 1165) | function TestComponent() {
  function TestComponent (line 1180) | function TestComponent() {
  function TestComponent (line 1201) | function TestComponent({ parent }) {
  function TestComponent (line 1216) | function TestComponent({ parent }) {
  function TestComponent (line 1262) | function TestComponent({ cb }) {
  function Item (line 1294) | function Item({ title }) {
  function TestComponent (line 1298) | function TestComponent({ name, escapeValue }) {
  function Item (line 1388) | function Item({ title }) {

FILE: test/typescript/custom-types/i18next.d.ts
  type CustomTypeOptions (line 4) | interface CustomTypeOptions {

FILE: test/typescript/issue-1899/i18next.d.ts
  type CustomTypeOptions (line 11) | interface CustomTypeOptions {

FILE: test/typescript/issue-1899/import-check.ts
  type _Check (line 11) | type _Check = typeof IcuTrans;

FILE: test/typescript/misc/Trans.test.tsx
  function MyComponent (line 41) | function MyComponent() {

FILE: test/typescript/misc/Translation.test.tsx
  type CmpProps (line 17) | type CmpProps = React.ComponentProps<typeof Translation>;

FILE: test/typescript/misc/withSSR.test.tsx
  class ClassComponent (line 8) | class ClassComponent extends React.Component {
  class ClassComponentWithProps (line 22) | class ClassComponentWithProps extends React.Component<{ foo: number }> {

FILE: test/typescript/misc/withTranslation.test.tsx
  type MyComponentProps (line 15) | interface MyComponentProps extends WithTranslation {
  type KeyPrefixComponentProps (line 82) | interface KeyPrefixComponentProps extends WithTranslation<'translation',...

FILE: test/typescript/selector-custom-types/i18next.d.ts
  type CustomTypeOptions (line 4) | interface CustomTypeOptions {

FILE: test/typescript/selector-optimize/i18next.d.ts
  type CustomTypeOptions (line 4) | interface CustomTypeOptions {

FILE: test/useTranslation.advanced.spec.js
  method hasLoadedNamespace (line 32) | hasLoadedNamespace(ns, options) {

FILE: test/useTranslation.bindI18nStore.spec.jsx
  function TranslateAKey (line 15) | function TranslateAKey() {

FILE: test/useTranslation.ready.spec.jsx
  function TestComponentNotReady (line 37) | function TestComponentNotReady({ i18n }) {

FILE: test/useTranslation.spec.jsx
  function TestComponent (line 283) | function TestComponent() {

FILE: test/withSSR.spec.jsx
  function TestComponent (line 44) | function TestComponent() {

FILE: test/withTranslation.keyPrefix.spec.jsx
  class TestComponentKeyPrefix (line 14) | class TestComponentKeyPrefix extends React.Component {
    method render (line 15) | render() {

FILE: test/withTranslation.spec.jsx
  class TestComponent (line 14) | class TestComponent extends React.Component {
    method render (line 15) | render() {
Condensed preview — 503 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,624K chars).
[
  {
    "path": ".all-contributorsrc",
    "chars": 1244,
    "preview": "{\n  \"projectName\": \"react-i18next\",\n  \"projectOwner\": \"i18next\",\n  \"repoType\": \"github\",\n  \"repoHost\": \"https://github.c"
  },
  {
    "path": ".babelrc",
    "chars": 604,
    "preview": "{\n  \"env\": {\n    \"development\": {\n      \"presets\": [\n        [\n          \"@babel/env\",\n          {\n            \"targets\""
  },
  {
    "path": ".codeclimate.yml",
    "chars": 620,
    "preview": "engines:\n  duplication:\n    enabled: true\n    config:\n      languages:\n        - ruby\n        - javascript:\n            "
  },
  {
    "path": ".coveralls.yml",
    "chars": 46,
    "preview": "repo_token: a7NPPsDW6jNJ3x23jBgWuO6KxV3Eq0mF2\n"
  },
  {
    "path": ".editorconfig",
    "chars": 198,
    "preview": "# EditorConfig is awesome: http://EditorConfig.org\nroot = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\nindent_size = 2\nind"
  },
  {
    "path": ".eslintignore",
    "chars": 83,
    "preview": "**/dist/\n**/node_modules/\nexample/**/*\n**/react-i18next.js\n**/react-i18next.min.js\n"
  },
  {
    "path": ".eslintrc.json",
    "chars": 2423,
    "preview": "{\n  \"extends\": [\"airbnb\", \"prettier\"],\n  \"parser\": \"@babel/eslint-parser\",\n  \"parserOptions\": {\n    \"ecmaVersion\": 8,\n  "
  },
  {
    "path": ".github/stale.yml",
    "chars": 805,
    "preview": "# Number of days of inactivity before an issue becomes stale\ndaysUntilStale: 7\n# Number of days of inactivity before a s"
  },
  {
    "path": ".github/workflows/CI.yml",
    "chars": 2370,
    "preview": "name: CI\n\non:\n  push:\n    branches:\n      - master\n  pull_request:\n    # types: [opened, synchronize, reopened, ready_fo"
  },
  {
    "path": ".gitignore",
    "chars": 410,
    "preview": "# Ignore specific files\n.settings.xml\n.monitor\n.DS_Store\n*.orig\nnpm-debug.log\nnpm-debug.log.*\n*.dat\n.idea\n.vscode\n.eslin"
  },
  {
    "path": ".husky/pre-commit",
    "chars": 21,
    "preview": "npm exec lint-staged\n"
  },
  {
    "path": ".npmignore",
    "chars": 282,
    "preview": "test/\ncoverage/\nexample/\nbin/\n.babelrc\n.editorconfig\n.eslintignore\n.eslintrc\n.gitignore\nbower.json\n.github\n.circleci\n.vs"
  },
  {
    "path": ".prettierignore",
    "chars": 65,
    "preview": "**/dist/\n**/react-i18next.js\n**/react-i18next.min.js\n**/example/\n"
  },
  {
    "path": ".prettierrc.json",
    "chars": 204,
    "preview": "{\n  \"$schema\": \"https://json.schemastore.org/prettierrc.json\",\n  \"bracketSpacing\": true,\n  \"bracketSameLine\": false,\n  \""
  },
  {
    "path": "CHANGELOG.md",
    "chars": 53971,
    "preview": "### 16.5.8\n\n- A selector function cannot be resolved without an i18n instance... returning empty string is safer than le"
  },
  {
    "path": "LICENSE",
    "chars": 1083,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2015-present i18next\n\nPermission is hereby granted, free of charge, to any person o"
  },
  {
    "path": "README.md",
    "chars": 10647,
    "preview": "# react-i18next [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/inte"
  },
  {
    "path": "TransWithoutContext.d.mts",
    "chars": 42,
    "preview": "export * from './TransWithoutContext.js';\n"
  },
  {
    "path": "TransWithoutContext.d.ts",
    "chars": 3876,
    "preview": "import type {\n  i18n,\n  ReactOptions,\n  ApplyTarget,\n  ConstrainTarget,\n  GetSource,\n  ParseKeys,\n  Namespace,\n  Selecto"
  },
  {
    "path": "example/ReactNativeLocizeProject/.bundle/config",
    "chars": 59,
    "preview": "BUNDLE_PATH: \"vendor/bundle\"\nBUNDLE_FORCE_RUBY_PLATFORM: 1\n"
  },
  {
    "path": "example/ReactNativeLocizeProject/.eslintrc.js",
    "chars": 64,
    "preview": "module.exports = {\n  root: true,\n  extends: '@react-native',\n};\n"
  },
  {
    "path": "example/ReactNativeLocizeProject/.gitignore",
    "chars": 1085,
    "preview": "# OSX\n#\n.DS_Store\n\n# Xcode\n#\nbuild/\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.p"
  },
  {
    "path": "example/ReactNativeLocizeProject/.prettierrc.js",
    "chars": 141,
    "preview": "module.exports = {\n  arrowParens: 'avoid',\n  bracketSameLine: true,\n  bracketSpacing: false,\n  singleQuote: true,\n  trai"
  },
  {
    "path": "example/ReactNativeLocizeProject/.watchmanconfig",
    "chars": 3,
    "preview": "{}\n"
  },
  {
    "path": "example/ReactNativeLocizeProject/App.tsx",
    "chars": 1423,
    "preview": "import {Suspense, Component} from 'react';\nimport {Text, Button, View} from 'react-native';\nimport {useTranslation, with"
  },
  {
    "path": "example/ReactNativeLocizeProject/Gemfile",
    "chars": 510,
    "preview": "source 'https://rubygems.org'\n\n# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version\nruby \""
  },
  {
    "path": "example/ReactNativeLocizeProject/README.md",
    "chars": 3575,
    "preview": "This is a new [**React Native**](https://reactnative.dev) project, bootstrapped using [`@react-native-community/cli`](ht"
  },
  {
    "path": "example/ReactNativeLocizeProject/__tests__/App.test.tsx",
    "chars": 254,
    "preview": "/**\n * @format\n */\n\nimport React from 'react';\nimport ReactTestRenderer from 'react-test-renderer';\nimport App from '../"
  },
  {
    "path": "example/ReactNativeLocizeProject/android/app/build.gradle",
    "chars": 4685,
    "preview": "apply plugin: \"com.android.application\"\napply plugin: \"org.jetbrains.kotlin.android\"\napply plugin: \"com.facebook.react\"\n"
  },
  {
    "path": "example/ReactNativeLocizeProject/android/app/proguard-rules.pro",
    "chars": 435,
    "preview": "# Add project specific ProGuard rules here.\n# By default, the flags in this file are appended to flags specified\n# in /u"
  },
  {
    "path": "example/ReactNativeLocizeProject/android/app/src/debug/AndroidManifest.xml",
    "chars": 313,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:to"
  },
  {
    "path": "example/ReactNativeLocizeProject/android/app/src/main/AndroidManifest.xml",
    "chars": 1004,
    "preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n    <uses-permission android:name=\"android.permis"
  },
  {
    "path": "example/ReactNativeLocizeProject/android/app/src/main/java/com/reactnativelocizeproject/MainActivity.kt",
    "chars": 879,
    "preview": "package com.reactnativelocizeproject\n\nimport com.facebook.react.ReactActivity\nimport com.facebook.react.ReactActivityDel"
  },
  {
    "path": "example/ReactNativeLocizeProject/android/app/src/main/java/com/reactnativelocizeproject/MainApplication.kt",
    "chars": 1678,
    "preview": "package com.reactnativelocizeproject\n\nimport android.app.Application\nimport com.facebook.react.PackageList\nimport com.fa"
  },
  {
    "path": "example/ReactNativeLocizeProject/android/app/src/main/res/drawable/rn_edit_text_material.xml",
    "chars": 1917,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Copyright (C) 2014 The Android Open Source Project\n\n     Licensed under the "
  },
  {
    "path": "example/ReactNativeLocizeProject/android/app/src/main/res/values/strings.xml",
    "chars": 87,
    "preview": "<resources>\n    <string name=\"app_name\">ReactNativeLocizeProject</string>\n</resources>\n"
  },
  {
    "path": "example/ReactNativeLocizeProject/android/app/src/main/res/values/styles.xml",
    "chars": 282,
    "preview": "<resources>\n\n    <!-- Base application theme. -->\n    <style name=\"AppTheme\" parent=\"Theme.AppCompat.DayNight.NoActionBa"
  },
  {
    "path": "example/ReactNativeLocizeProject/android/build.gradle",
    "chars": 547,
    "preview": "buildscript {\n    ext {\n        buildToolsVersion = \"35.0.0\"\n        minSdkVersion = 24\n        compileSdkVersion = 35\n "
  },
  {
    "path": "example/ReactNativeLocizeProject/android/gradle/wrapper/gradle-wrapper.properties",
    "chars": 251,
    "preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
  },
  {
    "path": "example/ReactNativeLocizeProject/android/gradle.properties",
    "chars": 1736,
    "preview": "# Project-wide Gradle settings.\n\n# IDE (e.g. Android Studio) users:\n# Gradle settings configured through the IDE *will o"
  },
  {
    "path": "example/ReactNativeLocizeProject/android/gradlew",
    "chars": 8729,
    "preview": "#!/bin/sh\n\n#\n# Copyright © 2015-2021 the original authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"Lice"
  },
  {
    "path": "example/ReactNativeLocizeProject/android/gradlew.bat",
    "chars": 2966,
    "preview": "@rem\r\n@rem Copyright 2015 the original author or authors.\r\n@rem\r\n@rem Licensed under the Apache License, Version 2.0 (th"
  },
  {
    "path": "example/ReactNativeLocizeProject/android/settings.gradle",
    "chars": 355,
    "preview": "pluginManagement { includeBuild(\"../node_modules/@react-native/gradle-plugin\") }\nplugins { id(\"com.facebook.react.settin"
  },
  {
    "path": "example/ReactNativeLocizeProject/app.json",
    "chars": 86,
    "preview": "{\n  \"name\": \"ReactNativeLocizeProject\",\n  \"displayName\": \"ReactNativeLocizeProject\"\n}\n"
  },
  {
    "path": "example/ReactNativeLocizeProject/babel.config.js",
    "chars": 72,
    "preview": "module.exports = {\n  presets: ['module:@react-native/babel-preset'],\n};\n"
  },
  {
    "path": "example/ReactNativeLocizeProject/i18n.js",
    "chars": 820,
    "preview": "import 'intl-pluralrules';\nimport i18n from 'i18next';\nimport {initReactI18next} from 'react-i18next';\nimport RNLanguage"
  },
  {
    "path": "example/ReactNativeLocizeProject/index.js",
    "chars": 241,
    "preview": "/**\n * @format\n */\n\nimport {AppRegistry} from 'react-native';\nimport App from './App';\nimport {name as appName} from './"
  },
  {
    "path": "example/ReactNativeLocizeProject/ios/.xcode.env",
    "chars": 482,
    "preview": "# This `.xcode.env` file is versioned and is used to source the environment\n# used when running script phases inside Xco"
  },
  {
    "path": "example/ReactNativeLocizeProject/ios/Podfile",
    "chars": 1052,
    "preview": "# Resolve react_native_pods.rb with node to allow for hoisting\nrequire Pod::Executable.execute_command('node', ['-p',\n  "
  },
  {
    "path": "example/ReactNativeLocizeProject/ios/ReactNativeLocizeProject/AppDelegate.swift",
    "chars": 1247,
    "preview": "import UIKit\nimport React\nimport React_RCTAppDelegate\nimport ReactAppDependencyProvider\n\n@main\nclass AppDelegate: UIResp"
  },
  {
    "path": "example/ReactNativeLocizeProject/ios/ReactNativeLocizeProject/Images.xcassets/AppIcon.appiconset/Contents.json",
    "chars": 818,
    "preview": "{\n  \"images\": [\n    {\n      \"idiom\": \"iphone\",\n      \"scale\": \"2x\",\n      \"size\": \"20x20\"\n    },\n    {\n      \"idiom\": \"i"
  },
  {
    "path": "example/ReactNativeLocizeProject/ios/ReactNativeLocizeProject/Images.xcassets/Contents.json",
    "chars": 60,
    "preview": "{\n  \"info\": {\n    \"version\": 1,\n    \"author\": \"xcode\"\n  }\n}\n"
  },
  {
    "path": "example/ReactNativeLocizeProject/ios/ReactNativeLocizeProject/Info.plist",
    "chars": 1632,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "example/ReactNativeLocizeProject/ios/ReactNativeLocizeProject/LaunchScreen.storyboard",
    "chars": 4248,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3"
  },
  {
    "path": "example/ReactNativeLocizeProject/ios/ReactNativeLocizeProject/PrivacyInfo.xcprivacy",
    "chars": 986,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "example/ReactNativeLocizeProject/ios/ReactNativeLocizeProject.xcodeproj/project.pbxproj",
    "chars": 19501,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 54;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "example/ReactNativeLocizeProject/ios/ReactNativeLocizeProject.xcodeproj/xcshareddata/xcschemes/ReactNativeLocizeProject.xcscheme",
    "chars": 3474,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1210\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "example/ReactNativeLocizeProject/ios/ReactNativeLocizeProject.xcworkspace/contents.xcworkspacedata",
    "chars": 242,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"group:ReactNativeLoc"
  },
  {
    "path": "example/ReactNativeLocizeProject/jest.config.js",
    "chars": 48,
    "preview": "module.exports = {\n  preset: 'react-native',\n};\n"
  },
  {
    "path": "example/ReactNativeLocizeProject/metro.config.js",
    "chars": 299,
    "preview": "const {getDefaultConfig, mergeConfig} = require('@react-native/metro-config');\n\n/**\n * Metro configuration\n * https://re"
  },
  {
    "path": "example/ReactNativeLocizeProject/package.json",
    "chars": 1406,
    "preview": "{\n  \"name\": \"ReactNativeLocizeProject\",\n  \"version\": \"0.0.1\",\n  \"private\": true,\n  \"scripts\": {\n    \"android\": \"react-na"
  },
  {
    "path": "example/ReactNativeLocizeProject/tsconfig.json",
    "chars": 65,
    "preview": "{\n  \"extends\": \"@react-native/typescript-config/tsconfig.json\"\n}\n"
  },
  {
    "path": "example/ReactNativeProject/.bundle/config",
    "chars": 59,
    "preview": "BUNDLE_PATH: \"vendor/bundle\"\nBUNDLE_FORCE_RUBY_PLATFORM: 1\n"
  },
  {
    "path": "example/ReactNativeProject/.eslintrc.js",
    "chars": 64,
    "preview": "module.exports = {\n  root: true,\n  extends: '@react-native',\n};\n"
  },
  {
    "path": "example/ReactNativeProject/.gitignore",
    "chars": 1085,
    "preview": "# OSX\n#\n.DS_Store\n\n# Xcode\n#\nbuild/\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.p"
  },
  {
    "path": "example/ReactNativeProject/.prettierrc.js",
    "chars": 141,
    "preview": "module.exports = {\n  arrowParens: 'avoid',\n  bracketSameLine: true,\n  bracketSpacing: false,\n  singleQuote: true,\n  trai"
  },
  {
    "path": "example/ReactNativeProject/.watchmanconfig",
    "chars": 3,
    "preview": "{}\n"
  },
  {
    "path": "example/ReactNativeProject/App.tsx",
    "chars": 1423,
    "preview": "import {Suspense, Component} from 'react';\nimport {Text, Button, View} from 'react-native';\nimport {useTranslation, with"
  },
  {
    "path": "example/ReactNativeProject/Gemfile",
    "chars": 510,
    "preview": "source 'https://rubygems.org'\n\n# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version\nruby \""
  },
  {
    "path": "example/ReactNativeProject/README.md",
    "chars": 3575,
    "preview": "This is a new [**React Native**](https://reactnative.dev) project, bootstrapped using [`@react-native-community/cli`](ht"
  },
  {
    "path": "example/ReactNativeProject/__tests__/App.test.tsx",
    "chars": 254,
    "preview": "/**\n * @format\n */\n\nimport React from 'react';\nimport ReactTestRenderer from 'react-test-renderer';\nimport App from '../"
  },
  {
    "path": "example/ReactNativeProject/android/app/build.gradle",
    "chars": 4673,
    "preview": "apply plugin: \"com.android.application\"\napply plugin: \"org.jetbrains.kotlin.android\"\napply plugin: \"com.facebook.react\"\n"
  },
  {
    "path": "example/ReactNativeProject/android/app/proguard-rules.pro",
    "chars": 435,
    "preview": "# Add project specific ProGuard rules here.\n# By default, the flags in this file are appended to flags specified\n# in /u"
  },
  {
    "path": "example/ReactNativeProject/android/app/src/debug/AndroidManifest.xml",
    "chars": 313,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:to"
  },
  {
    "path": "example/ReactNativeProject/android/app/src/main/AndroidManifest.xml",
    "chars": 1004,
    "preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n    <uses-permission android:name=\"android.permis"
  },
  {
    "path": "example/ReactNativeProject/android/app/src/main/java/com/reactnativeproject/MainActivity.kt",
    "chars": 867,
    "preview": "package com.reactnativeproject\n\nimport com.facebook.react.ReactActivity\nimport com.facebook.react.ReactActivityDelegate\n"
  },
  {
    "path": "example/ReactNativeProject/android/app/src/main/java/com/reactnativeproject/MainApplication.kt",
    "chars": 1672,
    "preview": "package com.reactnativeproject\n\nimport android.app.Application\nimport com.facebook.react.PackageList\nimport com.facebook"
  },
  {
    "path": "example/ReactNativeProject/android/app/src/main/res/drawable/rn_edit_text_material.xml",
    "chars": 1917,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Copyright (C) 2014 The Android Open Source Project\n\n     Licensed under the "
  },
  {
    "path": "example/ReactNativeProject/android/app/src/main/res/values/strings.xml",
    "chars": 81,
    "preview": "<resources>\n    <string name=\"app_name\">ReactNativeProject</string>\n</resources>\n"
  },
  {
    "path": "example/ReactNativeProject/android/app/src/main/res/values/styles.xml",
    "chars": 282,
    "preview": "<resources>\n\n    <!-- Base application theme. -->\n    <style name=\"AppTheme\" parent=\"Theme.AppCompat.DayNight.NoActionBa"
  },
  {
    "path": "example/ReactNativeProject/android/build.gradle",
    "chars": 547,
    "preview": "buildscript {\n    ext {\n        buildToolsVersion = \"35.0.0\"\n        minSdkVersion = 24\n        compileSdkVersion = 35\n "
  },
  {
    "path": "example/ReactNativeProject/android/gradle/wrapper/gradle-wrapper.properties",
    "chars": 251,
    "preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
  },
  {
    "path": "example/ReactNativeProject/android/gradle.properties",
    "chars": 1736,
    "preview": "# Project-wide Gradle settings.\n\n# IDE (e.g. Android Studio) users:\n# Gradle settings configured through the IDE *will o"
  },
  {
    "path": "example/ReactNativeProject/android/gradlew",
    "chars": 8729,
    "preview": "#!/bin/sh\n\n#\n# Copyright © 2015-2021 the original authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"Lice"
  },
  {
    "path": "example/ReactNativeProject/android/gradlew.bat",
    "chars": 2966,
    "preview": "@rem\r\n@rem Copyright 2015 the original author or authors.\r\n@rem\r\n@rem Licensed under the Apache License, Version 2.0 (th"
  },
  {
    "path": "example/ReactNativeProject/android/settings.gradle",
    "chars": 349,
    "preview": "pluginManagement { includeBuild(\"../node_modules/@react-native/gradle-plugin\") }\nplugins { id(\"com.facebook.react.settin"
  },
  {
    "path": "example/ReactNativeProject/app.json",
    "chars": 74,
    "preview": "{\n  \"name\": \"ReactNativeProject\",\n  \"displayName\": \"ReactNativeProject\"\n}\n"
  },
  {
    "path": "example/ReactNativeProject/babel.config.js",
    "chars": 72,
    "preview": "module.exports = {\n  presets: ['module:@react-native/babel-preset'],\n};\n"
  },
  {
    "path": "example/ReactNativeProject/i18n.js",
    "chars": 589,
    "preview": "import 'intl-pluralrules';\nimport i18n from 'i18next';\nimport {initReactI18next} from 'react-i18next';\nimport RNLanguage"
  },
  {
    "path": "example/ReactNativeProject/index.js",
    "chars": 241,
    "preview": "/**\n * @format\n */\n\nimport {AppRegistry} from 'react-native';\nimport App from './App';\nimport {name as appName} from './"
  },
  {
    "path": "example/ReactNativeProject/ios/.xcode.env",
    "chars": 482,
    "preview": "# This `.xcode.env` file is versioned and is used to source the environment\n# used when running script phases inside Xco"
  },
  {
    "path": "example/ReactNativeProject/ios/Podfile",
    "chars": 1046,
    "preview": "# Resolve react_native_pods.rb with node to allow for hoisting\nrequire Pod::Executable.execute_command('node', ['-p',\n  "
  },
  {
    "path": "example/ReactNativeProject/ios/ReactNativeProject/AppDelegate.swift",
    "chars": 1241,
    "preview": "import UIKit\nimport React\nimport React_RCTAppDelegate\nimport ReactAppDependencyProvider\n\n@main\nclass AppDelegate: UIResp"
  },
  {
    "path": "example/ReactNativeProject/ios/ReactNativeProject/Images.xcassets/AppIcon.appiconset/Contents.json",
    "chars": 818,
    "preview": "{\n  \"images\": [\n    {\n      \"idiom\": \"iphone\",\n      \"scale\": \"2x\",\n      \"size\": \"20x20\"\n    },\n    {\n      \"idiom\": \"i"
  },
  {
    "path": "example/ReactNativeProject/ios/ReactNativeProject/Images.xcassets/Contents.json",
    "chars": 60,
    "preview": "{\n  \"info\": {\n    \"version\": 1,\n    \"author\": \"xcode\"\n  }\n}\n"
  },
  {
    "path": "example/ReactNativeProject/ios/ReactNativeProject/Info.plist",
    "chars": 1626,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "example/ReactNativeProject/ios/ReactNativeProject/LaunchScreen.storyboard",
    "chars": 4242,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3"
  },
  {
    "path": "example/ReactNativeProject/ios/ReactNativeProject/PrivacyInfo.xcprivacy",
    "chars": 986,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "example/ReactNativeProject/ios/ReactNativeProject.xcodeproj/project.pbxproj",
    "chars": 19171,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 54;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "example/ReactNativeProject/ios/ReactNativeProject.xcodeproj/xcshareddata/xcschemes/ReactNativeProject.xcscheme",
    "chars": 3402,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1210\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "example/ReactNativeProject/ios/ReactNativeProject.xcworkspace/contents.xcworkspacedata",
    "chars": 236,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"group:ReactNativePro"
  },
  {
    "path": "example/ReactNativeProject/jest.config.js",
    "chars": 48,
    "preview": "module.exports = {\n  preset: 'react-native',\n};\n"
  },
  {
    "path": "example/ReactNativeProject/locales/de/translation.json",
    "chars": 304,
    "preview": "{\n  \"description\": {\n    \"part1\": \"Um loszulegen, ändere <1>src/App(DE).js</1> speichern und neu laden.\",\n    \"part2\": \""
  },
  {
    "path": "example/ReactNativeProject/locales/en/translation.json",
    "chars": 277,
    "preview": "{\n  \"description\": {\n    \"part1\": \"To get started, edit <1>src/App.js</1> and save to reload.\",\n    \"part2\": \"Switch lan"
  },
  {
    "path": "example/ReactNativeProject/metro.config.js",
    "chars": 299,
    "preview": "const {getDefaultConfig, mergeConfig} = require('@react-native/metro-config');\n\n/**\n * Metro configuration\n * https://re"
  },
  {
    "path": "example/ReactNativeProject/package.json",
    "chars": 1276,
    "preview": "{\n  \"name\": \"ReactNativeProject\",\n  \"version\": \"0.0.1\",\n  \"private\": true,\n  \"scripts\": {\n    \"android\": \"react-native r"
  },
  {
    "path": "example/ReactNativeProject/tsconfig.json",
    "chars": 65,
    "preview": "{\n  \"extends\": \"@react-native/typescript-config/tsconfig.json\"\n}\n"
  },
  {
    "path": "example/devserver-save-missing/.gitignore",
    "chars": 285,
    "preview": "# See https://help.github.com/ignore-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n\n# testing\n/cov"
  },
  {
    "path": "example/devserver-save-missing/README.md",
    "chars": 58,
    "preview": "example using web-dev-server to save missing translations\n"
  },
  {
    "path": "example/devserver-save-missing/config-overrides.js",
    "chars": 1052,
    "preview": "const i18next = require('i18next');\nconst Backend = require('i18next-fs-backend');\nconst i18nextMiddleware = require('i1"
  },
  {
    "path": "example/devserver-save-missing/package.json",
    "chars": 997,
    "preview": "{\n  \"name\": \"react_usinghooks\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"dependencies\": {\n    \"body-parser\": \"^1.20.2"
  },
  {
    "path": "example/devserver-save-missing/public/index.html",
    "chars": 1588,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-w"
  },
  {
    "path": "example/devserver-save-missing/public/locales/de/translation.json",
    "chars": 264,
    "preview": "{\n  \"title\": \"Willkommen zu react und react-i18next\",\n  \"description\": {\n    \"part1\": \"Um loszulegen, ändere <1>src/App("
  },
  {
    "path": "example/devserver-save-missing/public/locales/en/translation.json",
    "chars": 232,
    "preview": "{\n  \"title\": \"Welcome to react using react-i18next\",\n  \"description\": {\n    \"part1\": \"To get started, edit <1>src/App.js"
  },
  {
    "path": "example/devserver-save-missing/public/manifest.json",
    "chars": 298,
    "preview": "{\n  \"short_name\": \"React App\",\n  \"name\": \"Create React App Sample\",\n  \"icons\": [\n    {\n      \"src\": \"favicon.ico\",\n     "
  },
  {
    "path": "example/devserver-save-missing/src/App.css",
    "chars": 353,
    "preview": ".App {\n  text-align: center;\n}\n\n.App-logo {\n  animation: App-logo-spin infinite 20s linear;\n  height: 80px;\n}\n\n.App-head"
  },
  {
    "path": "example/devserver-save-missing/src/App.js",
    "chars": 1708,
    "preview": "import React, { Component, Suspense } from 'react';\nimport { useTranslation, withTranslation, Trans } from 'react-i18nex"
  },
  {
    "path": "example/devserver-save-missing/src/i18n.js",
    "chars": 919,
    "preview": "import i18n from 'i18next';\nimport Backend from 'i18next-http-backend';\nimport LanguageDetector from 'i18next-browser-la"
  },
  {
    "path": "example/devserver-save-missing/src/index.css",
    "chars": 63,
    "preview": "body {\n  margin: 0;\n  padding: 0;\n  font-family: sans-serif;\n}\n"
  },
  {
    "path": "example/devserver-save-missing/src/index.js",
    "chars": 310,
    "preview": "import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport './index.css';\nimport App from './App';"
  },
  {
    "path": "example/devserver-save-missing/webpack.config.js",
    "chars": 1206,
    "preview": "module.exports = {\n  // ...\n  devServer: {\n    setupMiddlewares: (middlewares, devServer) => {\n      if (!devServer) {\n "
  },
  {
    "path": "example/locize/.eslintrc.js",
    "chars": 36,
    "preview": "module.exports = {\n  root: true,\n};\n"
  },
  {
    "path": "example/locize/.gitignore",
    "chars": 297,
    "preview": "# See https://help.github.com/ignore-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n\n# testing\n/cov"
  },
  {
    "path": "example/locize/README.md",
    "chars": 1460,
    "preview": "**A step by step tutorial can also be found [here](https://github.com/locize/react-tutorial).**\n\nThis project was bootst"
  },
  {
    "path": "example/locize/package.json",
    "chars": 802,
    "preview": "{\n  \"name\": \"locize\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"dependencies\": {\n    \"i18next\": \"^23.12.3\",\n    \"i18ne"
  },
  {
    "path": "example/locize/public/index.html",
    "chars": 1588,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-w"
  },
  {
    "path": "example/locize/public/manifest.json",
    "chars": 298,
    "preview": "{\n  \"short_name\": \"React App\",\n  \"name\": \"Create React App Sample\",\n  \"icons\": [\n    {\n      \"src\": \"favicon.ico\",\n     "
  },
  {
    "path": "example/locize/src/App.css",
    "chars": 353,
    "preview": ".App {\n  text-align: center;\n}\n\n.App-logo {\n  animation: App-logo-spin infinite 20s linear;\n  height: 80px;\n}\n\n.App-head"
  },
  {
    "path": "example/locize/src/App.js",
    "chars": 1678,
    "preview": "import React, { Component, Suspense } from 'react';\nimport { useTranslation, withTranslation, Trans } from 'react-i18nex"
  },
  {
    "path": "example/locize/src/i18n.js",
    "chars": 2143,
    "preview": "import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport LanguageDetector from 'i18next-brow"
  },
  {
    "path": "example/locize/src/index.css",
    "chars": 63,
    "preview": "body {\n  margin: 0;\n  padding: 0;\n  font-family: sans-serif;\n}\n"
  },
  {
    "path": "example/locize/src/index.js",
    "chars": 260,
    "preview": "import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport './index.css';\nimport App from './App';"
  },
  {
    "path": "example/razzle-ssr/.gitignore",
    "chars": 153,
    "preview": "logs\n*.log\nnpm-debug.log*\n.DS_Store\n\ncoverage\nnode_modules\nbuild\ncache\n.env.local\n.env.development.local\n.env.test.local"
  },
  {
    "path": "example/razzle-ssr/README.md",
    "chars": 940,
    "preview": "# Getting started\n\nBuild with [razzle](https://github.com/jaredpalmer/razzle) using its react ssr.\n\n```bash\n# npm start\n"
  },
  {
    "path": "example/razzle-ssr/package.json",
    "chars": 919,
    "preview": "{\n  \"name\": \"my-razzle-app\",\n  \"version\": \"0.1.0\",\n  \"license\": \"MIT\",\n  \"scripts\": {\n    \"start\": \"razzle start\",\n    \""
  },
  {
    "path": "example/razzle-ssr/public/robots.txt",
    "chars": 15,
    "preview": "User-agent: *\n\n"
  },
  {
    "path": "example/razzle-ssr/src/App.css",
    "chars": 63,
    "preview": "body {\n  margin: 0;\n  padding: 0;\n  font-family: sans-serif;\n}\n"
  },
  {
    "path": "example/razzle-ssr/src/App.js",
    "chars": 256,
    "preview": "import React from 'react';\nimport { Route, Switch } from 'react-router-dom';\nimport Home from './Home';\nimport './App.cs"
  },
  {
    "path": "example/razzle-ssr/src/Home.css",
    "chars": 488,
    "preview": ".Home {\n  text-align: center;\n}\n\n.Home-logo {\n  animation: Home-logo-spin infinite 20s linear;\n  height: 80px;\n}\n\n.Home-"
  },
  {
    "path": "example/razzle-ssr/src/Home.js",
    "chars": 976,
    "preview": "import React from 'react';\nimport { Trans, useTranslation } from 'react-i18next';\nimport logo from './react.svg';\nimport"
  },
  {
    "path": "example/razzle-ssr/src/client.js",
    "chars": 549,
    "preview": "import { BrowserRouter } from 'react-router-dom';\nimport React, { Suspense } from 'react';\nimport { hydrate } from 'reac"
  },
  {
    "path": "example/razzle-ssr/src/i18n.js",
    "chars": 1070,
    "preview": "import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport Backend from 'i18next-http-backend'"
  },
  {
    "path": "example/razzle-ssr/src/index.js",
    "chars": 485,
    "preview": "import express from 'express';\nimport app from './server';\n\nif (module.hot) {\n  module.hot.accept('./server', function ("
  },
  {
    "path": "example/razzle-ssr/src/locales/de/translations.json",
    "chars": 201,
    "preview": "{\n  \"message\": {\n    \"welcome\": \"Willkommen zu Razzle mit i18n\"\n  },\n  \"guideline\": \"Um zu beginnen, ändere <1>src/App.j"
  },
  {
    "path": "example/razzle-ssr/src/locales/en/translations.json",
    "chars": 167,
    "preview": "{\n  \"message\": {\n    \"welcome\": \"Welcome to Razzle with i18n\"\n  },\n  \"guideline\": \"To get started, edit <1>src/App.js</1"
  },
  {
    "path": "example/razzle-ssr/src/server.js",
    "chars": 3486,
    "preview": "/* eslint-disable import/no-dynamic-require */\nimport React from 'react';\nimport { StaticRouter, matchPath } from 'react"
  },
  {
    "path": "example/react/.gitignore",
    "chars": 285,
    "preview": "# See https://help.github.com/ignore-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n\n# testing\n/cov"
  },
  {
    "path": "example/react/README.md",
    "chars": 111181,
    "preview": "# [Ready to take i18next to the next level?](http://locize.com/?utm_source=react_i18next_readme&utm_medium=github)\n\nNeed"
  },
  {
    "path": "example/react/package.json",
    "chars": 890,
    "preview": "{\n  \"name\": \"react_usinghooks\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"dependencies\": {\n    \"i18next\": \"^24.2.0\",\n "
  },
  {
    "path": "example/react/public/index.html",
    "chars": 1588,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-w"
  },
  {
    "path": "example/react/public/locales/de/translation.json",
    "chars": 264,
    "preview": "{\n  \"title\": \"Willkommen zu react und react-i18next\",\n  \"description\": {\n    \"part1\": \"Um loszulegen, ändere <1>src/App("
  },
  {
    "path": "example/react/public/locales/en/translation.json",
    "chars": 232,
    "preview": "{\n  \"title\": \"Welcome to react using react-i18next\",\n  \"description\": {\n    \"part1\": \"To get started, edit <1>src/App.js"
  },
  {
    "path": "example/react/public/manifest.json",
    "chars": 298,
    "preview": "{\n  \"short_name\": \"React App\",\n  \"name\": \"Create React App Sample\",\n  \"icons\": [\n    {\n      \"src\": \"favicon.ico\",\n     "
  },
  {
    "path": "example/react/src/App.css",
    "chars": 353,
    "preview": ".App {\n  text-align: center;\n}\n\n.App-logo {\n  animation: App-logo-spin infinite 20s linear;\n  height: 80px;\n}\n\n.App-head"
  },
  {
    "path": "example/react/src/App.js",
    "chars": 1637,
    "preview": "import React, { Component, Suspense } from 'react';\nimport { useTranslation, withTranslation, Trans } from 'react-i18nex"
  },
  {
    "path": "example/react/src/i18n.js",
    "chars": 707,
    "preview": "import i18n from 'i18next';\nimport Backend from 'i18next-http-backend';\nimport LanguageDetector from 'i18next-browser-la"
  },
  {
    "path": "example/react/src/index.css",
    "chars": 63,
    "preview": "body {\n  margin: 0;\n  padding: 0;\n  font-family: sans-serif;\n}\n"
  },
  {
    "path": "example/react/src/index.js",
    "chars": 310,
    "preview": "import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport './index.css';\nimport App from './App';"
  },
  {
    "path": "example/react-component-lib/.gitignore",
    "chars": 285,
    "preview": "# See https://help.github.com/ignore-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n\n# testing\n/cov"
  },
  {
    "path": "example/react-component-lib/README.md",
    "chars": 111181,
    "preview": "# [Ready to take i18next to the next level?](http://locize.com/?utm_source=react_i18next_readme&utm_medium=github)\n\nNeed"
  },
  {
    "path": "example/react-component-lib/package.json",
    "chars": 843,
    "preview": "{\n  \"name\": \"react_usinghooks\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"dependencies\": {\n    \"i18next\": \"^23.12.3\",\n"
  },
  {
    "path": "example/react-component-lib/public/index.html",
    "chars": 1588,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-w"
  },
  {
    "path": "example/react-component-lib/public/locales/de/translation.json",
    "chars": 264,
    "preview": "{\n  \"title\": \"Willkommen zu react und react-i18next\",\n  \"description\": {\n    \"part1\": \"Um loszulegen, ändere <1>src/App("
  },
  {
    "path": "example/react-component-lib/public/locales/en/translation.json",
    "chars": 232,
    "preview": "{\n  \"title\": \"Welcome to react using react-i18next\",\n  \"description\": {\n    \"part1\": \"To get started, edit <1>src/App.js"
  },
  {
    "path": "example/react-component-lib/public/manifest.json",
    "chars": 298,
    "preview": "{\n  \"short_name\": \"React App\",\n  \"name\": \"Create React App Sample\",\n  \"icons\": [\n    {\n      \"src\": \"favicon.ico\",\n     "
  },
  {
    "path": "example/react-component-lib/src/App.css",
    "chars": 353,
    "preview": ".App {\n  text-align: center;\n}\n\n.App-logo {\n  animation: App-logo-spin infinite 20s linear;\n  height: 80px;\n}\n\n.App-head"
  },
  {
    "path": "example/react-component-lib/src/App.js",
    "chars": 1717,
    "preview": "import React, { Component, Suspense } from 'react';\nimport { useTranslation, withTranslation, Trans } from 'react-i18nex"
  },
  {
    "path": "example/react-component-lib/src/i18n.js",
    "chars": 952,
    "preview": "import i18n from 'i18next';\nimport Backend from 'i18next-http-backend';\nimport LanguageDetector from 'i18next-browser-la"
  },
  {
    "path": "example/react-component-lib/src/index.css",
    "chars": 63,
    "preview": "body {\n  margin: 0;\n  padding: 0;\n  font-family: sans-serif;\n}\n"
  },
  {
    "path": "example/react-component-lib/src/index.js",
    "chars": 310,
    "preview": "import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport './index.css';\nimport App from './App';"
  },
  {
    "path": "example/react-component-lib/src/other-lib/component.js",
    "chars": 345,
    "preview": "import { I18nextProvider, useTranslation } from 'react-i18next';\nimport i18next from './i18n';\n\nexport const i18n = i18n"
  },
  {
    "path": "example/react-component-lib/src/other-lib/i18n.js",
    "chars": 466,
    "preview": "import { createInstance } from 'i18next';\n\nconst i18n = createInstance({\n  fallbackLng: 'en',\n  debug: true,\n\n  interpol"
  },
  {
    "path": "example/react-fluent/.gitignore",
    "chars": 285,
    "preview": "# See https://help.github.com/ignore-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n\n# testing\n/cov"
  },
  {
    "path": "example/react-fluent/package.json",
    "chars": 945,
    "preview": "{\n  \"name\": \"react_fluent_withhoc\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"dependencies\": {\n    \"i18next\": \"^23.12."
  },
  {
    "path": "example/react-fluent/public/index.html",
    "chars": 1588,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-w"
  },
  {
    "path": "example/react-fluent/public/locales/de/translations.ftl",
    "chars": 398,
    "preview": "title = Willkommen zu react und react-i18next mit fluent\n\ndescription_1 = Um loszulegen, ändere <1>src/App(DE).js</1> sp"
  },
  {
    "path": "example/react-fluent/public/locales/en/translations.ftl",
    "chars": 364,
    "preview": "title = Welcome to react using react-i18next with fluent\n\ndescription_1 = To get started, edit <1>src/App.js</1> and sav"
  },
  {
    "path": "example/react-fluent/public/manifest.json",
    "chars": 298,
    "preview": "{\n  \"short_name\": \"React App\",\n  \"name\": \"Create React App Sample\",\n  \"icons\": [\n    {\n      \"src\": \"favicon.ico\",\n     "
  },
  {
    "path": "example/react-fluent/src/App.css",
    "chars": 353,
    "preview": ".App {\n  text-align: center;\n}\n\n.App-logo {\n  animation: App-logo-spin infinite 20s linear;\n  height: 80px;\n}\n\n.App-head"
  },
  {
    "path": "example/react-fluent/src/App.js",
    "chars": 1424,
    "preview": "import React, { Suspense } from 'react';\nimport { useTranslation, Trans } from 'react-i18next';\nimport logo from './logo"
  },
  {
    "path": "example/react-fluent/src/i18n.js",
    "chars": 1621,
    "preview": "import i18n from 'i18next';\nimport Backend from 'i18next-fluent-backend';\nimport LanguageDetector from 'i18next-browser-"
  },
  {
    "path": "example/react-fluent/src/index.css",
    "chars": 63,
    "preview": "body {\n  margin: 0;\n  padding: 0;\n  font-family: sans-serif;\n}\n"
  },
  {
    "path": "example/react-fluent/src/index.js",
    "chars": 310,
    "preview": "import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport './index.css';\nimport App from './App';"
  },
  {
    "path": "example/react-icu/.gitignore",
    "chars": 310,
    "preview": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pn"
  },
  {
    "path": "example/react-icu/README.md",
    "chars": 2870,
    "preview": "This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\n\n## Available Scrip"
  },
  {
    "path": "example/react-icu/package.json",
    "chars": 1024,
    "preview": "{\n  \"name\": \"react_icu\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"dependencies\": {\n    \"@testing-library/jest-dom\": \""
  },
  {
    "path": "example/react-icu/public/index.html",
    "chars": 1705,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <link rel=\"icon\" href=\"%PUBLIC_URL%/favicon.i"
  },
  {
    "path": "example/react-icu/public/locales/de/translations.json",
    "chars": 2179,
    "preview": "{\n  \"title\": \"Willkommen zu react und react-i18next\",\n  \"description.part1\": \"Um loszulegen, ändere <1>src/App.js</1> sp"
  },
  {
    "path": "example/react-icu/public/locales/en/translations.json",
    "chars": 2036,
    "preview": "{\n  \"title\": \"Welcome to react using react-i18next\",\n  \"description.part1\": \"To get started, edit <1>src/App.js</1> and "
  },
  {
    "path": "example/react-icu/public/locales/ru/translations.json",
    "chars": 2302,
    "preview": "{\n  \"title\": \"Добро пожаловать в React и react-i18next\",\n  \"description.part1\": \"Что би начать, отредактируйте <1>src/Ap"
  },
  {
    "path": "example/react-icu/public/manifest.json",
    "chars": 492,
    "preview": "{\n  \"short_name\": \"React App\",\n  \"name\": \"Create React App Sample\",\n  \"icons\": [\n    {\n      \"src\": \"favicon.ico\",\n     "
  },
  {
    "path": "example/react-icu/public/robots.txt",
    "chars": 67,
    "preview": "# https://www.robotstxt.org/robotstxt.html\nUser-agent: *\nDisallow:\n"
  },
  {
    "path": "example/react-icu/src/App.css",
    "chars": 564,
    "preview": ".App {\n  text-align: center;\n}\n\n.App-logo {\n  height: 40vmin;\n  pointer-events: none;\n}\n\n@media (prefers-reduced-motion:"
  },
  {
    "path": "example/react-icu/src/App.js",
    "chars": 1738,
    "preview": "import React, { Component, Suspense } from 'react';\nimport { withTranslation, Trans } from 'react-i18next';\nimport logo "
  },
  {
    "path": "example/react-icu/src/App.test.js",
    "chars": 248,
    "preview": "import React from 'react';\nimport { render } from '@testing-library/react';\nimport App from './App';\n\nimport './i18n';\n\n"
  },
  {
    "path": "example/react-icu/src/ComponentUsingMacro.js",
    "chars": 2725,
    "preview": "import React from 'react';\nimport { withTranslation } from 'react-i18next';\n\n// importing the macro components from reac"
  },
  {
    "path": "example/react-icu/src/ComponentUsingMacroInterpolated.js",
    "chars": 2564,
    "preview": "import React from 'react';\nimport { withTranslation } from 'react-i18next';\n\n// importing the macro components from reac"
  },
  {
    "path": "example/react-icu/src/i18n.js",
    "chars": 673,
    "preview": "import i18n from 'i18next';\nimport Backend from 'i18next-http-backend';\nimport LanguageDetector from 'i18next-browser-la"
  },
  {
    "path": "example/react-icu/src/index.css",
    "chars": 362,
    "preview": "body {\n  margin: 0;\n  font-family:\n    -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Can"
  },
  {
    "path": "example/react-icu/src/index.js",
    "chars": 554,
    "preview": "import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport './index.css';\nimport App from './App';"
  }
]

// ... and 303 more files (download for full content)

About this extraction

This page contains the full source code of the i18next/react-i18next GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 503 files (1.4 MB), approximately 405.2k tokens, and a symbol index with 427 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!