Internationalization I18n

作者 mindrally97184105b5da無授權條款269 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫5 週前更新

Implement internationalization (i18n) best practices for web and mobile applications to support multiple languages and locales.

AI 產生的概覽

為網頁與行動應用程式實作國際化與在地化的指引。

功能
提供為網頁與行動應用程式加入多語言、多地區支援的實作指引。內容涵蓋 React/Next.js 與 Nuxt.js 中使用 i18next 和 @nuxtjs/i18n 的模式、React Native/Expo 的裝置語言偵測、翻譯檔案組織與鍵名規範、以 Intl 處理日期、數字、貨幣與排序的在地化格式、使用 CSS 邏輯屬性的 RTL 版面、語言狀態保存,以及偽在地化等測試做法。產出的是程式碼模式與檢查清單,而非產生的檔案。
適用情境
適用於建置或審查需要支援多種語言、地區或書寫方向的應用程式。也適合整理翻譯檔案、處理在地化格式,或設定語言切換與回退機制。不用於人工翻譯文章或文件。
執行需求
不需要腳本或附帶資源,代理只需套用其中的指引。範例涉及 TypeScript、React/Next.js、Nuxt.js、React Native/Expo、i18next、react-i18next、@nuxtjs/i18n、expo-localization、i18n-js、Intl API、Zustand、React Query 與 Zod,但此技能不會安裝這些相依套件。

Internationalization (i18n)

You are an expert in internationalization for web and mobile applications. Apply these guidelines to ensure applications can be easily adapted for different languages, regions, and cultures.

Core Principles

  • Write concise, technical TypeScript code with accurate examples
  • Use functional and declarative programming patterns; avoid classes
  • Ensure all user-facing text is internationalized and supports localization
  • Use descriptive variable names with auxiliary verbs (isLoading, hasError)
  • Design for text expansion (some languages require 30-50% more space)

Web Application i18n

React/Next.js Applications

  • Use i18next and react-i18next for web applications
  • Implement namespace-based translation organization
  • Use interpolation for dynamic values in translations
  • Leverage pluralization features for count-based text
  • Implement context-based translations where needed

Implementation Pattern

typescript
// Use translation hooksconst { t } = useTranslation('common');
// Basic translation<h1>{t('welcome.title')}</h1>
// With interpolation<p>{t('greeting', { name: userName })}</p>
// With pluralization<span>{t('items', { count: itemCount })}</span>

Nuxt.js Applications

  • Use @nuxtjs/i18n module for Vue applications
  • Implement SEO best practices with localized routes
  • Use useI18n composable for translations
  • Leverage lazy loading for translation files

React Native/Expo Applications

Mobile i18n Setup

  • Use expo-localization for React Native apps
  • Use react-native-i18n or i18n-js for translations
  • Detect device locale automatically
  • Support fallback languages

Mobile-Specific Considerations

  • Support RTL (right-to-left) layouts
  • Ensure proper text scaling for accessibility
  • Handle device locale changes dynamically
  • Test on devices with different system languages

Translation File Organization

File Structure

locales/  en/    common.json    auth.json    errors.json  es/    common.json    auth.json    errors.json  fr/    common.json    auth.json    errors.json

Translation Keys Best Practices

  • Use descriptive, hierarchical keys (e.g., auth.login.button, errors.network.timeout)
  • Avoid embedding HTML in translations when possible
  • Keep translations context-aware and meaningful
  • Document translation context for translators

Locale-Aware Formatting

Date and Time

  • Use Intl.DateTimeFormat for date formatting
  • Respect user's locale preferences
  • Store dates in UTC, display in local timezone
  • Support multiple date format preferences

Numbers and Currency

  • Use Intl.NumberFormat for number formatting
  • Display currency in user's preferred format
  • Handle decimal and thousand separators by locale
  • Support right-to-left number display where needed

Sorting and Comparison

  • Use Intl.Collator for locale-aware string comparison
  • Implement locale-specific sorting rules
  • Handle diacritics and special characters correctly

RTL (Right-to-Left) Support

Layout Considerations

  • Use CSS logical properties (margin-inline-start, padding-inline-end)
  • Implement bidirectional text support
  • Mirror UI layouts for RTL languages
  • Test thoroughly with RTL languages (Arabic, Hebrew, etc.)

Implementation

css
/* Use logical properties */.element {  margin-inline-start: 1rem;  padding-inline-end: 0.5rem;}

Best Practices

Development Guidelines

  • Never hardcode user-facing strings
  • Extract all text to translation files
  • Use ICU message format for complex translations
  • Implement fallback mechanisms for missing translations
  • Support language switching without page reload

Content Considerations

  • Avoid text in images; use CSS/SVG text when possible
  • Design flexible layouts that accommodate text expansion
  • Use icons with text labels, not icons alone
  • Consider cultural differences in imagery and color

Testing Requirements

  • Test with pseudolocalization during development
  • Verify text doesn't overflow containers
  • Test with actual translations before release
  • Verify RTL layout with native speakers
  • Test currency and date formats across locales

State Management for i18n

Storing User Preferences

  • Use Zustand or React Context for language state
  • Persist language preference (localStorage, AsyncStorage)
  • Sync language preference with user account
  • Handle server-side rendering with correct locale

Data Fetching

  • Use TanStack React Query for caching translated content
  • Invalidate queries on language change when needed
  • Fetch locale-specific content from APIs
  • Handle translation loading states gracefully

Error Handling

  • Provide translated error messages
  • Implement fallback to default language for missing translations
  • Log missing translation keys in development
  • Handle RTL/LTR text direction in error displays
  • Use Zod for runtime validation with localized error messages

來源與署名

來源:mindrally/skills位於internationalization-i18n提交9718410

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架