React Native (Expo)
Lingo.dev CLIによるReact NativeのAI翻訳
Expoとは?
ExpoはReact Nativeアプリケーションを作成するためのフレームワークおよびプラットフォームです。同じJavaScriptコードベースからiOS、Android、Webアプリを構築、デプロイ、反復するためのツールとサービスを提供します。
Lingo.dev CLIとは?
Lingo.devはAI駆動の翻訳プラットフォームです。Lingo.dev CLIはソースファイルを読み取り、翻訳可能なコンテンツを大規模言語モデルに送信し、翻訳されたファイルをプロジェクトに書き戻します。
このガイドについて
このガイドでは、Expoを使用したReact NativeプロジェクトでのLingo.dev CLIのセットアップ方法を説明します。Expoでプロジェクトを構築し、翻訳パイプラインを設定して結果を確認する方法を学びます。
ステップ1. Expoプロジェクトのセットアップ
-
新しいExpoアプリを作成します:
npx create-expo-app@latest my-app
-
プロジェクトディレクトリに移動します:
cd my-app
-
ローカライゼーション依存関係をインストールします:
npx expo install expo-localization npx expo install i18n-js
ステップ2. ソースコンテンツの作成
-
ローカライズ可能なコンテンツを保存するディレクトリを作成します:
mkdir -p app/i18n
-
ローカライズ可能なコンテンツを含むファイルを作成します(例:
app/i18n/en.json
):{ "home": { "title": "Welcome", "subtitle": "This text is translated by Lingo.dev" }, "cta": "Get started" }
ステップ3. CLIの設定
プロジェクトのルートにi18n.json
ファイルを作成します:
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": 1.8,
"locale": {
"source": "en",
"targets": ["es"]
},
"buckets": {
"json": {
"include": ["app/i18n/[locale].json"]
}
}
}
このファイルは以下を定義します:
- Lingo.dev CLIが翻訳すべきファイル
- 翻訳する言語間
この場合、設定は英語からスペイン語へのJSONファイルの翻訳を行います。
重要な点として:
[locale]
は実行時に置き換えられるプレースホルダーです。これにより、コンテンツが一つの場所(例:app/i18n/en.json
)から読み取られ、別の場所(例:app/i18n/es.json
)に書き込まれることを保証します。- Lingo.dev CLIはJSON、MDXなど様々なファイル形式をサポートしています。
詳細については、i18n.json設定を参照してください。
ステップ 4. コンテンツを翻訳する
-
Lingo.devアカウントにサインアップしてください。
-
CLIを通じてLingo.devにログインします:
npx lingo.dev@latest login
-
翻訳パイプラインを実行します:
npx lingo.dev@latest run
CLIは翻訳されたコンテンツを保存するための
app/i18n/es.json
ファイルと、翻訳済みの内容を追跡するためのi18n.lock
ファイル(不要な再翻訳を防ぐため)を作成します。
ステップ 5. 翻訳を使用する
-
tsconfig.json
ファイルで、JSONインポートを有効にします:{ "extends": "expo/tsconfig.base", "compilerOptions": { "resolveJsonModule": true } }
-
特定のロケールに対して翻訳されたコンテンツを読み込む関数を作成します:
// app/lib/i18n.ts import { getLocales } from "expo-localization"; import { I18n } from "i18n-js"; import en from "../i18n/en.json"; import es from "../i18n/es.json"; const i18n = new I18n({ en, es }); i18n.defaultLocale = "en"; i18n.enableFallback = true; i18n.locale = getLocales()[0]?.languageCode ?? "en"; export default i18n;
-
関数を使用して翻訳されたコンテンツを表示します:
// App.tsx import { useState } from "react"; import { View, Text, Pressable } from "react-native"; import i18n from "./app/lib/i18n"; export default function App() { const [locale, setLocale] = useState(i18n.locale); const toggleLocale = () => { const next = locale === "en" ? "es" : "en"; i18n.locale = next; setLocale(next); }; return ( <View> <Text>{i18n.t("home.title")}</Text> <Text>{i18n.t("home.subtitle")}</Text> <Pressable onPress={toggleLocale}> <Text> {locale === "en" ? "Switch to Español" : "Cambiar a English"} </Text> </Pressable> </View> ); }
-
開発サーバーを起動します:
npx expo start
-
http://localhost:8081 にアクセスします。
-
利用可能な言語を切り替えます。