diff --git a/.obsidian/core-plugins.json b/.obsidian/core-plugins.json new file mode 100644 index 000000000..e69de29bb diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f68a80cd4..59299b7b6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -64,4 +64,24 @@ When submitting a pull request, please follow these guidelines: - Run `cargo test` for Rust code - Test the application manually before submitting +## Contributing Translations + +We welcome translation contributions! opcode supports multiple languages and we'd love your help making it accessible to more users. + +### How to Contribute Translations + +1. **Read the Translation Guide**: See [docs/TRANSLATION_GUIDE.md](docs/TRANSLATION_GUIDE.md) for detailed instructions +2. **Add or Improve Translations**: Edit files in `src/locales/[language-code]/` +3. **Test Your Changes**: Run the app and verify translations appear correctly +4. **Submit a Pull Request**: Use the prefix `i18n:` in your PR title (e.g., `i18n: Add French translation`) + +### Translation Guidelines + +- **Preserve Technical Terms**: Keep terms like "Agent", "MCP Server", "Token", etc. in English +- **Be Consistent**: Use the same translation for the same term throughout +- **Professional Tone**: Maintain a professional, technical style +- **Test Thoroughly**: Check all modules and ensure UI layout isn't broken + +For more details, see our [Translation Contribution Guide](docs/TRANSLATION_GUIDE.md). + Please adhere to the coding conventions, maintain clear documentation, and provide thorough testing for your contributions. diff --git a/README.md b/README.md index cb9ca51f5..97f754abe 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,11 @@
Create custom agents, manage interactive Claude Code sessions, run secure background agents, and more.
- + ++ English | 简体中文 +
+
@@ -46,17 +50,19 @@ Think of opcode as your command center for Claude Code - bridging the gap betwee
- [✨ Features](#-features)
- [🗂️ Project & Session Management](#️-project--session-management)
- [🤖 CC Agents](#-cc-agents)
-
+
- [📊 Usage Analytics Dashboard](#-usage-analytics-dashboard)
- [🔌 MCP Server Management](#-mcp-server-management)
- [⏰ Timeline & Checkpoints](#-timeline--checkpoints)
- [📝 CLAUDE.md Management](#-claudemd-management)
+ - [🌐 Internationalization](#-internationalization)
- [📖 Usage](#-usage)
- [Getting Started](#getting-started)
- [Managing Projects](#managing-projects)
- [Creating Agents](#creating-agents)
- [Tracking Usage](#tracking-usage)
- [Working with MCP Servers](#working-with-mcp-servers)
+ - [Changing Language](#changing-language)
- [🚀 Installation](#-installation)
- [🔨 Build from Source](#-build-from-source)
- [🛠️ Development](#️-development)
@@ -106,6 +112,12 @@ Think of opcode as your command center for Claude Code - bridging the gap betwee
- **Project Scanner**: Find all CLAUDE.md files in your projects
- **Syntax Highlighting**: Full markdown support with syntax highlighting
+### 🌐 **Internationalization**
+- **Multi-language Support**: Full support for English and Simplified Chinese
+- **Easy Language Switching**: Change language from Settings with one click
+- **Technical Terms Preserved**: Technical terminology (Agent, MCP Server, Token, etc.) kept in English for consistency
+- **Extensible**: Easy to add more languages with the i18next framework
+
## 📖 Usage
### Getting Started
@@ -155,6 +167,16 @@ Menu → MCP Manager → Add Server → Configure
- Import from Claude Desktop configuration
- Test connections before using
+### Changing Language
+
+```
+Menu → Settings → General → Language
+```
+
+- Switch between English and Simplified Chinese
+- Changes apply immediately
+- Language preference is saved automatically
+
## 🚀 Installation
### Prerequisites
diff --git a/README.zh-CN.md b/README.zh-CN.md
new file mode 100644
index 000000000..1ff329a47
--- /dev/null
+++ b/README.zh-CN.md
@@ -0,0 +1,222 @@
+# opcode
+
+
+ 强大的 Claude Code GUI 应用和工具包 +
++ 创建自定义 Agents、管理交互式 Claude Code Sessions、运行安全的后台 Agents 等 +
+ ++ English | 简体中文 +
+- {isRunning ? 'Running' : messages.length > 0 ? 'Complete' : 'Ready'} • {model === 'opus' ? 'Claude 4 Opus' : 'Claude 4 Sonnet'} + {isRunning ? t('status.running') : messages.length > 0 ? t('status.complete') : t('status.ready')} • {model === 'opus' ? t('models.opus.name') : t('models.sonnet.name')}
- Working in: {projectPath.split('/').pop() || projectPath} + {t('execution.working_in')} {projectPath.split('/').pop() || projectPath}
)} @@ -745,9 +747,9 @@ export const AgentExecution: React.FC- Enter a task to run the agent + {t('messages.enter_task')}