このページとあなたの好きなAIアシスタントを使ってドキュメントを要約します
バージョン履歴
- "Solid の useIntlayer API の使用法を直接プロパティアクセスに更新"v8.9.02026/5/4
- "initコマンドを追加"v7.5.92025/12/30
- "履歴初期化"v5.5.102025/6/29
このページのコンテンツはAIを使用して翻訳されました。
英語の元のコンテンツの最新バージョンを見るIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
ExpoとReact Nativeアプリを翻訳する | 国際化(i18n)
GitHub の アプリケーションテンプレート を参照してください。
代替手段ではなく Interlayer を使用する理由
「react-native-localize」や「i18next」などの主要なソリューションと比較して、Intlayer は次のような統合された最適化を備えたソリューションです。
React Native を完全にカバー
Intlayer は、コンポーネント レベルのコンテンツ スコープ、TypeScript サポート、およびモバイル アプリの国際化 (i18n) のスケーリングに必要なすべての機能を提供することにより、React Native および Expo と完全に連携するように最適化されています。
保守性
アプリケーションのコンテンツのスコープを設定すると、大規模なアプリケーションの メンテナンスが容易になります。コンテンツ コードベース全体を確認するという精神的な負担を負うことなく、単一の機能フォルダーを複製または削除できます。さらに、Intlayer は完全に型指定されており、コンテンツの正確性を保証します。
AI エージェント
コンテンツを同じ場所に配置すると、大規模言語モデル (LLM) によって 必要なコンテキストが削減されます。 Intlayer には、翻訳の欠落をテストする CLI、LSP、MCP などのツール スイートも付属しています。および エージェント スキル により、AI エージェントの開発者エクスペリエンス (DX) がさらにスムーズになります。
オートメーション
AI プロバイダーの費用で、選択した LLM を使用して CI/CD パイプラインで自動化を変換します。 Intlayer は、コンテンツ抽出を自動化する コンパイラー と、バックグラウンドでの翻訳を支援する Web プラットフォーム も提供します。
パフォーマンス
大量の JSON ファイルをコンポーネントに接続すると、パフォーマンスと反応性の問題が発生する可能性があります。 Intlayer は、ビルド時のコンテンツの読み込みを最適化します。
非開発によるスケーリング
Intlayer は単なる i18n ソリューションではなく、自己ホスト型 ビジュアル エディター と 完全な CMS を提供します。 リアルタイムで多言語コンテンツを管理できるようになり、翻訳者、コピーライター、その他のチーム メンバーとのコラボレーションがシームレスになります。コンテンツはローカルおよび/またはリモートに保存できます。
バンドルサイズ
大量の JSON ファイルをページにロードするのではなく、必要なコンテンツのみをロードします。 Intlayer は、バンドルとビューのサイズを最大 50% 削減するのに役立ちます。
依存関係をインストールする
GitHub の アプリケーション テンプレート を参照してください。
React Native プロジェクトから、次のパッケージをインストールします。
bashコードをコピーコードをクリップボードにコピー
npm install intlayer 反応-intlayernpm install --save-dev 反応ネイティブ-intlayernpx 内部層初期化「」```bash packageManager="pnpm"pnpm add intlayer 反応-intlayerpnpm add --save-dev 反応ネイティブ-intlayerpnpm 内部層初期化「」```bash packageManager="yarn"糸 中間層を追加 反応内部層糸追加 --save-dev 反応ネイティブ-内部層糸の中間層の初期化「」```bash packageManager="bun"bun add intlayer 反応-intlayerバン追加 --dev 反応ネイティブ-intlayerbun x 内部層の初期化「」### パッケージ- **中間層** 構成、辞書コンテンツ、タイプ生成、および CLI コマンド用のコア i18n ツールキット。- **反応内部層** React Native でロケールの取得と切り替えに使用するコンテキスト プロバイダーと React フックを提供する React 統合。- **反応ネイティブ内部層** Intlayer を React Native バンドラーと統合するための Metro プラグインを提供する React Native 統合。---依存パッケージのインストール
React Native プロジェクトから、以下のパッケージをインストールしてください:
bashコードをコピーコードをクリップボードにコピー
bash packageManager="npm"npm install intlayer react-intlayernpm install --save-dev react-native-intlayer`
パッケージ
intlayer
設定、辞書コンテンツ、型生成、CLIコマンドのためのコアi18nツールキット。react-intlayer
React Nativeでロケールの取得や切り替えに使用するコンテキストプロバイダーとReactフックを提供するReact統合。react-native-intlayer
IntlayerをReact Nativeバンドラーと統合するためのMetroプラグインを提供するReact Native統合。
Intlayer設定ファイルの作成
プロジェクトのルート(または任意の便利な場所)にIntlayer設定ファイルを作成します。以下のような内容になるかもしれません:
intlayer.config.tsコードをコピーコードをクリップボードにコピー
/** * Locales型が利用できない場合は、tsconfig.jsonのmoduleResolutionを"bundler"に設定してみてください */ import { Locales, type IntlayerConfig } from "intlayer"; const config: IntlayerConfig = { internationalization: { locales: [ Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH, // ... 必要な他のロケールを追加してください ], defaultLocale: Locales.ENGLISH, }, }; export default config;この設定ファイル内で、以下のことができます:
- サポートするロケールのリストを設定する。
- デフォルトのロケールを設定する。
- 後で、より高度なオプション(例:ログ、カスタムコンテンツディレクトリなど)を追加することも可能です。
- 詳細はIntlayerの設定ドキュメントを参照してください。
Metroプラグインを追加する
MetroはReact Native用のバンドラーです。
react-native initコマンドで作成されたReact Nativeプロジェクトのデフォルトバンドラーです。IntlayerをMetroで使用するには、metro.config.jsファイルにプラグインを追加する必要があります。metro.config.jsコードをコピーコードをクリップボードにコピー
const { getDefaultConfig } = require("expo/metro-config");const { configMetroIntlayer } = require("react-native-intlayer/metro");module.exports = (async () => { const defaultConfig = getDefaultConfig(__dirname); return await configMetroIntlayer(defaultConfig);})();Intlayerプロバイダーを追加する
アプリケーション全体でユーザーの言語を同期させるには、ルートコンポーネントを
react-intlayer-nativeのIntlayerProviderコンポーネントでラップする必要があります。react-intlayerの代わりにreact-native-intlayerのプロバイダーを使用してください。react-native-intlayerのエクスポートには Web API のポリフィルが含まれています。app/_layout.tsxコードをコピーコードをクリップボードにコピー
import { Stack } from "expo-router"; import { getLocales } from "expo-localization"; import { IntlayerProvider } from "react-native-intlayer"; import { type FC } from "react"; const getDeviceLocale = () => getLocales()[0]?.languageTag; const RootLayout: FC = () => { return ( <IntlayerProvider defaultLocale={getDeviceLocale()}> <Stack> tsx fileName="app/_layout.tsx" codeFormat="typescript" import { Stack } from "expo-router"; import { getLocales } from "expo-localization"; import { IntlayerProvider } from "react-native-intlayer"; import { type FC } from "react"; const getDeviceLocale = () => getLocales()[0]?.languageTag; const RootLayout: FC = () => { return ( <IntlayerProvider defaultLocale={getDeviceLocale()}> <Stack> <Stack.Screen name="(tabs)" options={{ headerShown: false }} /> </Stack> </IntlayerProvider> ); }; export default RootLayout;コンテンツを宣言する
コンテンツを宣言する
プロジェクト内の任意の場所(一般的には
src/内)にコンテンツ宣言ファイルを作成します。Intlayer がサポートする任意の拡張子形式を使用できます:.content.json.content.ts.content.tsx.content.js.content.jsx.content.mjs.content.mjx.content.cjs.content.cjx- その他
例(React Native 用の TSX ノードを含む TypeScript):
src/app.content.tsxコードをコピーコードをクリップボードにコピー
import { t, type Dictionary } from "intlayer"; import type { ReactNode } from "react"; /** * "app" ドメインのコンテンツ辞書 */ import { t, type Dictionary } from "intlayer"; const homeScreenContent = { key: "home-screen", content: { title: t({ en: "Welcome!", fr: "Bienvenue!", es: "¡Bienvenido!", }), }, } satisfies Dictionary; export default homeScreenContent;コンテンツ宣言の詳細については、Intlayerのコンテンツドキュメントを参照してください。
コンポーネントでIntlayerを使用する
子コンポーネントで
useIntlayerフックを使用して、ローカライズされたコンテンツを取得します。例
app/(tabs)/index.tsxコードをコピーコードをクリップボードにコピー
import { Image, StyleSheet, Platform } from "react-native"; import { useIntlayer } from "intlayer"; import { HelloWave } from "@/components/HelloWave"; import ParallaxScrollView from "@/components/ParallaxScrollView"; import { ThemedText } from "@/components/ThemedText"; import { ThemedView } from "@/components/ThemedView"; import { type FC } from "react"; const HomeScreen = (): FC => { const { title, steps } = useIntlayer("home-screen"); return ( <ParallaxScrollView headerBackgroundColor={{ light: "#A1CEDC", dark: "#1D3D47" }} headerImage={ <Image source={require("@/assets/images/partial-react-logo.png")} style={styles.reactLogo} /> } > <ThemedView style={styles.titleContainer}> <ThemedText type="title">{title}</ThemedText> <HelloWave /> </ThemedView> </ParallaxScrollView> ); }; const styles = StyleSheet.create({ titleContainer: { flexDirection: "row", alignItems: "center", gap: 8, }, }); export default HomeScreen;content.someKeyを文字列ベースのプロパティ(例:ボタンのtitleやTextコンポーネントのchildren)で使用する場合は、実際の文字列を取得するためにcontent.someKey.valueを呼び出してください。アプリケーションが既に存在する場合は、Intlayer コンパイラ と 抽出コマンド を組み合わせて、1 秒で何千ものコンポーネントを変換できます。
アプリのロケールを変更する
コンポーネント内からロケールを切り替えるには、
useLocaleフックのsetLocaleメソッドを使用できます。src/components/LocaleSwitcher.tsxコードをコピーコードをクリップボードにコピー
import { type FC } from "react"; import { View, Text, TouchableOpacity, StyleSheet } from "react-native"; import { getLocaleName } from "intlayer"; import { useLocale } from "react-intlayer"; export const LocaleSwitcher: FC = () => { const { setLocale, availableLocales } = useLocale(); return ( <View style={styles.container}> {availableLocales.map((locale) => ( <TouchableOpacity key={locale} style={styles.button} onPress={() => setLocale(locale)} > <Text style={styles.text}>{getLocaleName(locale)}</Text> </TouchableOpacity> ))} </View> ); }; const styles = StyleSheet.create({ container: { flexDirection: "row", justifyContent: "center", alignItems: "center", gap: 8, }, button: { paddingVertical: 6, paddingHorizontal: 12, borderRadius: 6, backgroundColor: "#ddd", }, text: { fontSize: 14, fontWeight: "500", color: "#333", }, });これにより、Intlayerのコンテンツを使用しているすべてのコンポーネントが再レンダリングされ、新しいロケールの翻訳が表示されます。
詳細は
useLocaleのドキュメントをご覧ください。
TypeScriptの設定(TypeScriptを使用している場合)
Intlayerは、補完機能を向上させ、翻訳エラーを検出するために、隠しフォルダ(デフォルトは .intlayer)に型定義を生成します:
コードをクリップボードにコピー
// tsconfig.json{ // ... 既存のTS設定 "include": [ "src", // ソースコード ".intlayer/types/**/*.ts", // <-- 自動生成された型定義を含める // ... 既に含めているその他のファイル ],}これにより、以下の機能が利用可能になります:
- 辞書キーのオートコンプリート。
- 存在しないキーにアクセスしたり型が不一致の場合に警告する型チェック。
Git設定
Intlayerによって自動生成されたファイルをコミットしないように、.gitignoreに以下を追加してください:
コードをクリップボードにコピー
# Intlayerによって生成されたファイルを無視.intlayerVS Code拡張機能
Intlayerの開発体験を向上させるために、公式のIntlayer VS Code拡張機能をインストールできます。
この拡張機能は以下を提供します:
- 翻訳キーのオートコンプリート。
- 翻訳が欠落している場合のリアルタイムエラー検出。
- 翻訳内容のインラインプレビュー。
- 翻訳の作成や更新を簡単に行うためのクイックアクション。
拡張機能の使い方の詳細については、Intlayer VS Code拡張機能のドキュメントを参照してください。
さらに進む
- ビジュアルエディター:翻訳を視覚的に管理するために、Intlayerビジュアルエディターを使用してください。
- CMS統合: 辞書コンテンツを外部化し、CMSから取得することも可能です。
- CLIコマンド: 翻訳の抽出や欠落キーの確認などのタスクには、Intlayer CLIを活用してください。
Intlayerを通じて、完全なi18n機能を備えたReact Nativeアプリの開発をお楽しみください!