1k-i18n

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Internationalization (i18n)

国际化(i18n)

Guidelines for internationalization and translation management in OneKey.
OneKey中的国际化与翻译管理指南。

Critical Restrictions

重要限制

ABSOLUTELY FORBIDDEN (auto-generated files):
typescript
// ❌ NEVER modify these files - they are AUTO-GENERATED
// @onekeyhq/shared/src/locale/enum/translations.ts
// @onekeyhq/shared/src/locale/json/*.json

// ❌ NEVER hardcode text strings
<Text>Confirm</Text>

// ✅ CORRECT - Always use translation keys
import { ETranslations } from '@onekeyhq/shared/src/locale';
intl.formatMessage({ id: ETranslations.global__confirm })
Consequences of violation:
  • Translation system corruption
  • Loss of translation work
  • Build failures in i18n pipeline
  • Breaking localization for international users
绝对禁止(自动生成文件):
typescript
// ❌ 绝不要修改这些文件——它们是自动生成的
// @onekeyhq/shared/src/locale/enum/translations.ts
// @onekeyhq/shared/src/locale/json/*.json

// ❌ 绝不要硬编码文本字符串
<Text>Confirm</Text>

// ✅ 正确做法——始终使用翻译键
import { ETranslations } from '@onekeyhq/shared/src/locale';
intl.formatMessage({ id: ETranslations.global__confirm })
违规后果:
  • 翻译系统损坏
  • 翻译工作成果丢失
  • i18n流水线构建失败
  • 国际用户的本地化功能失效

Quick Reference

快速参考

Using Translations in Components

在组件中使用翻译

typescript
import { useIntl } from 'react-intl';
import { ETranslations } from '@onekeyhq/shared/src/locale';

function MyComponent() {
  const intl = useIntl();

  return (
    <SizableText>
      {intl.formatMessage({ id: ETranslations.global__confirm })}
    </SizableText>
  );
}
typescript
import { useIntl } from 'react-intl';
import { ETranslations } from '@onekeyhq/shared/src/locale';

function MyComponent() {
  const intl = useIntl();

  return (
    <SizableText>
      {intl.formatMessage({ id: ETranslations.global__confirm })}
    </SizableText>
  );
}

Using formatMessage Outside Components

在组件外部使用formatMessage

typescript
import { appLocale } from '@onekeyhq/shared/src/locale/appLocale';
import { ETranslations } from '@onekeyhq/shared/src/locale';

const message = appLocale.intl.formatMessage({
  id: ETranslations.global__cancel,
});
typescript
import { appLocale } from '@onekeyhq/shared/src/locale/appLocale';
import { ETranslations } from '@onekeyhq/shared/src/locale';

const message = appLocale.intl.formatMessage({
  id: ETranslations.global__cancel,
});

Translation Workflow

翻译工作流

  1. Design provides translation key like
    prime::restore_purchases
  2. Run sync command:
    yarn fetch:locale
  3. Convert key format:
    prime::restore_purchases
    ETranslations.prime_restore_purchases
  4. Use in code:
    tsx
    {intl.formatMessage({ id: ETranslations.prime_restore_purchases })}
  1. 设计团队提供翻译键,例如
    prime::restore_purchases
  2. 运行同步命令
    yarn fetch:locale
  3. 转换键格式
    prime::restore_purchases
    ETranslations.prime_restore_purchases
  4. 在代码中使用
    tsx
    {intl.formatMessage({ id: ETranslations.prime_restore_purchases })}

Translation Key Naming Pattern

翻译键命名规则

namespace__action_description

Examples:
- global__confirm
- global__cancel
- swap__select_token
- wallet__create_wallet
- settings__dark_mode
命名空间__操作_描述

示例:
- global__confirm
- global__cancel
- swap__select_token
- wallet__create_wallet
- settings__dark_mode

Detailed Guide

详细指南

For comprehensive i18n guidelines and examples, see i18n.md.
Topics covered:
  • Translation management restrictions
  • Using translations in components
  • Translation key naming conventions
  • Locale handling and fallbacks
  • Code examples
  • Workflow summary
如需全面的i18n指南和示例,请查看 i18n.md
涵盖主题:
  • 翻译管理限制
  • 在组件中使用翻译
  • 翻译键命名规范
  • 区域设置处理与回退
  • 代码示例
  • 工作流总结

Key Files

关键文件

PurposeFile Path
Translation enum (auto-generated)
packages/shared/src/locale/enum/translations.ts
Locale JSON (auto-generated)
packages/shared/src/locale/json/
App locale
packages/shared/src/locale/appLocale.ts
Default locale
packages/shared/src/locale/getDefaultLocale.ts
用途文件路径
翻译枚举(自动生成)
packages/shared/src/locale/enum/translations.ts
区域设置JSON(自动生成)
packages/shared/src/locale/json/
应用区域设置
packages/shared/src/locale/appLocale.ts
默认区域设置
packages/shared/src/locale/getDefaultLocale.ts

Related Skills

相关技能

  • /1k-date-formatting
    - Date formatting with locale support
  • /1k-coding-patterns
    - General coding patterns
  • /1k-date-formatting
    - 支持区域设置的日期格式化
  • /1k-coding-patterns
    - 通用编码模式