coze-studio/frontend/packages/arch/resources/studio-i18n-resource
tecvan 6995cec404
chore: format all frontend files (#430)
2025-07-31 23:15:48 +08:00
..
config feat: manually mirror opencoze's code from bytedance 2025-07-20 17:36:12 +08:00
src chore: format all frontend files (#430) 2025-07-31 23:15:48 +08:00
README.md feat: manually mirror opencoze's code from bytedance 2025-07-20 17:36:12 +08:00
eslint.config.js feat: manually mirror opencoze's code from bytedance 2025-07-20 17:36:12 +08:00
package.json feat: manually mirror opencoze's code from bytedance 2025-07-20 17:36:12 +08:00
tsconfig.build.json feat: manually mirror opencoze's code from bytedance 2025-07-20 17:36:12 +08:00
tsconfig.json feat: manually mirror opencoze's code from bytedance 2025-07-20 17:36:12 +08:00
tsconfig.misc.json feat: manually mirror opencoze's code from bytedance 2025-07-20 17:36:12 +08:00
vitest.config.ts chore: format all frontend files (#430) 2025-07-31 23:15:48 +08:00

README.md

@coze-studio/studio-i18n-resource-adapter

Comprehensive internationalization (i18n) resource adapter for Coze Studio applications

This package provides a centralized internationalization resource adapter containing localized strings and type definitions for Coze Studio applications. It supports multiple languages and provides type-safe access to translation keys with parameter interpolation.

Features

  • 🌍 Multi-language Support: Currently supports English (en) and Simplified Chinese (zh-CN)
  • 🔒 Type Safety: Comprehensive TypeScript definitions for all translation keys and parameters
  • 📦 Auto-generated: Resources are automatically generated using the dl-i18n command
  • React Integration: Built-in support for React components with ReactNode parameter types
  • 🎯 Parameter Interpolation: Support for dynamic content insertion with type-safe parameters
  • 📝 Extensive Coverage: Over 13,000+ translation strings covering the entire Coze Studio ecosystem

Get Started

Installation

This package is part of the Coze Studio monorepo and should be installed via Rush:

# Add to your package.json dependencies
{
  "dependencies": {
    "@coze-studio/studio-i18n-resource-adapter": "workspace:*"
  }
}

# Install dependencies
rush update

Basic Usage

import { 
  localeEn, 
  localeZhCN, 
  defaultConfig,
  type I18nKeysHasOptionsType,
  type I18nKeysNoOptionsType 
} from '@coze-studio/studio-i18n-resource-adapter';

// Use individual locale data
console.log(localeEn.AddSuccessToast); // Access English translation
console.log(localeZhCN.AddSuccessToast); // Access Chinese translation

// Use default configuration object
const currentLocale = 'en';
const translations = defaultConfig[currentLocale].i18n;

With i18n Libraries

import { defaultConfig } from '@coze-studio/studio-i18n-resource-adapter';
import i18n from 'i18next';

// Initialize with react-i18next
i18n.init({
  resources: defaultConfig,
  lng: 'en',
  fallbackLng: 'en',
  defaultNS: 'i18n',
  interpolation: {
    escapeValue: false
  }
});

API Reference

Exports

localeEn

English locale data object containing all translation strings.

import { localeEn } from '@coze-studio/studio-i18n-resource-adapter';

// Simple string access
const message = localeEn.account_login_success;

localeZhCN

Simplified Chinese locale data object containing all translation strings.

import { localeZhCN } from '@coze-studio/studio-i18n-resource-adapter';

// Simple string access
const message = localeZhCN.account_login_success;

defaultConfig

Pre-configured object structure ready for use with i18n libraries.

import { defaultConfig } from '@coze-studio/studio-i18n-resource-adapter';

// Structure: { [locale]: { i18n: translations } }
const config = defaultConfig;
// config.en.i18n contains English translations
// config['zh-CN'].i18n contains Chinese translations

Type Definitions

I18nKeysHasOptionsType

Union type of all translation keys that require parameters for interpolation.

import { type I18nKeysHasOptionsType } from '@coze-studio/studio-i18n-resource-adapter';

// Example keys that require parameters:
// - 'AddSuccessToast' (requires: { name: ReactNode })
// - 'Coze_token_body' (requires: { num: number })
// - 'account_merge_oauth_success2' (requires: { phone_number: string })

I18nKeysNoOptionsType

Union type of all translation keys that don't require parameters.

import { type I18nKeysNoOptionsType } from '@coze-studio/studio-i18n-resource-adapter';

// Example keys without parameters:
// - 'account_login_success'
// - 'bot_create_success'
// - 'workflow_save_success'

I18nOptionsMap

Interface mapping each parameterized translation key to its required parameters.

import { type I18nOptionsMap } from '@coze-studio/studio-i18n-resource-adapter';

// Type-safe parameter access
type AddSuccessParams = I18nOptionsMap['AddSuccessToast']; // { name: ReactNode }
type TokenBodyParams = I18nOptionsMap['Coze_token_body']; // { num: ReactNode }

LocaleData

Type definition for the structure of locale data objects.

import { type LocaleData } from '@coze-studio/studio-i18n-resource-adapter';

// Use for typing custom locale objects
const customLocale: LocaleData = {
  // ... your translation keys
};

Parameter Interpolation Examples

import { localeEn, type I18nOptionsMap } from '@coze-studio/studio-i18n-resource-adapter';

// With react-i18next
import { useTranslation } from 'react-i18next';

function MyComponent() {
  const { t } = useTranslation();
  
  // Type-safe parameter usage
  const successMessage = t('AddSuccessToast', { 
    name: 'My Bot' 
  } satisfies I18nOptionsMap['AddSuccessToast']);
  
  const tokenMessage = t('Coze_token_body', { 
    num: 100 
  } satisfies I18nOptionsMap['Coze_token_body']);
  
  return <div>{successMessage}</div>;
}

Development

Regenerating Resources

The locale files and type definitions are auto-generated. To update them:

# Run the i18n download command
pnpm dl-i18n

This will:

  • Download the latest translations from the source
  • Generate updated en.json and zh-CN.json files
  • Regenerate the locale-data.d.ts type definitions
  • Update the main index.ts export file

Adding New Languages

To add support for additional languages:

  1. Add the new locale JSON file to src/locales/
  2. Import and export it in src/index.ts
  3. Update the defaultConfig object to include the new locale
  4. Regenerate types using pnpm dl-i18n

Project Structure

src/
├── index.ts              # Main exports and default configuration
├── locale-data.d.ts      # Auto-generated TypeScript definitions
└── locales/
    ├── en.json          # English translations (~13K+ strings)
    └── zh-CN.json       # Chinese translations (~14K+ strings)

Dependencies

Runtime Dependencies

  • No runtime dependencies (pure data package)

Peer Dependencies

  • react ~18.2.0 - Required for ReactNode type support
  • react-dom ~18.2.0 - React DOM integration

Development Dependencies

  • @coze-arch/eslint-config - Linting configuration
  • @coze-arch/ts-config - TypeScript configuration
  • @coze-arch/vitest-config - Testing configuration
  • @types/node ^18 - Node.js type definitions

License

This package is part of the Coze Studio monorepo and follows the same licensing terms as the main project.


Note: This package is automatically generated and maintained. Direct modifications to locale files or type definitions will be overwritten during the next dl-i18n command execution.