React Native (Expo)
AI-перевод для React Native с помощью Lingo.dev CLI
Что такое Expo?
Expo — это фреймворк и платформа для создания приложений на React Native. Expo предоставляет инструменты и сервисы для разработки, деплоя и обновления iOS-, Android- и веб-приложений из одного JavaScript-кода.
Что такое Lingo.dev CLI?
Lingo.dev — это платформа для перевода на базе искусственного интеллекта. Lingo.dev CLI читает исходные файлы, отправляет переводимый контент в большие языковые модели и записывает переведённые файлы обратно в ваш проект.
О данном гайде
В этом гайде рассказывается, как настроить Lingo.dev CLI в проекте React Native с Expo. Вы узнаете, как создать проект на 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.10",
"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:
npx lingo.dev@latest login -
Запустите pipeline перевода:
npx lingo.dev@latest runCLI создаст файл
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.
-
Переключайтесь между доступными языками.