| name | i18n |
| description | Guides internationalization (i18n) implementation using i18next with TypeScript. Triggered when handling localization, translation files, or multilingual support. |
i18n Internationalization Guide
This skill provides mandatory specifications for implementing internationalization using i18next in this project.
1. Architecture Overview
The project adopts a modular i18n structure:
- i18next: Core internationalization library.
- TypeScript: Provides complete type safety protection for translation keys.
- Modular Structure: Translation copy is organized by functionality/module.
- Dual-end Support: Simultaneously supports app (renderer process) and desktop (main process).
2. Translation File Structure
2.1 Basic Translation Module
export default {
notice: 'Notice',
edit: 'Edit',
add: 'Add',
save: 'Save',
remove: 'Remove',
remove_confirm:
'Confirm removal? Deleting this item will also delete the corresponding local file. Please proceed with caution!'
}
2.2 Namespace Module
export default {
module: {
chat: 'Chat',
research: 'Research',
agent: 'Agent'
},
workspace: {
title: 'Workspace',
name_placeholder: 'A unique name'
}
}
2.3 Regional Language Entry Point
import ai from './ai'
import app from './app'
import global from './global'
export default {
translation: {
...global,
app,
ai
}
} as const
3. Steps for Adding New Translations
3.1 Adding New Module Translation
import newFeature from './newFeature'
export default {
title: 'New Feature',
description: 'This is a new feature description'
}
export default {
title: '新功能',
description: '这是新功能描述'
}
export default {
translation: {
newFeature
}
} as const
4. Constraints and Best Practices
4.1 Naming Conventions
- Keys: Translation keys must use
snake_case.
- Structure: Organize key names hierarchically by functionality or component.
- Consistency: Must maintain completely consistent key name structure across all language files.
4.2 Code Style Requirements
- No Comments: Do not add any comments to translation files.
- Default Export: Always use
export default to export translation objects.
- Type Safety: In regional language index exports, always use
as const.
- Flat Structure: Keep translation objects as flat as possible (nesting should not exceed 3 levels).
4.3 Dynamic Content and Interpolation
export default {
welcome_message: 'Welcome, ${name}!',
item_count: 'You have ${count} items'
}
const { t } = useTranslation()
t('welcome_message', { name: 'John' })
4.4 Quality Guidelines
- Translation Completeness: In all supported language files, all keys must have corresponding translations.
- Context: When words are ambiguous, accurate translations must be provided based on context.
- Avoid Hardcoding: In React components, never hardcode visible Chinese or English characters; they must be extracted to locale files.