Kurallar
Kod adlandırma, i18n çeviri sözlüğü ve Çince üslup rehberi için tek gerçek kaynak.
Bu sayfa, kod adlandırma, i18n çeviri sözlüğü ve Çince üslup rehberi için tek gerçek kaynaktır. Eskiden packages/views/locales/glossary.md'de veya dağınık yorumlarda yaşayan her şey artık burada yaşıyor.
Multica kodu yazıyorsanız, bir çeviriyi değiştiriyorsanız veya Çince ürün metni yazıyorsanız, referans alacağınız sayfa budur.
1. Kod adlandırma
Rotalar
Çalışma alanı öncesi rotalar (kullanıcı bir çalışma alanına girmeden önce var olan rotalar) ya tek bir kelime ya da /{isim}/{fiil} kalıbını kullanMALIDIR.
- ✅
/login,/inbox,/workspaces/new - ❌
/new-workspace,/create-team,/accept-invite
Kökte tire ile ayrılmış kelime grupları, kullanıcının seçtiği çalışma alanı kısa adlarıyla çakışır ve sonsuz rezerve-kısa-ad denetimlerini zorunlu kılar. İsmi (workspaces) rezerve etmek, tüm /workspaces/* alt ağacını otomatik olarak korur.
Çalışma alanı kapsamlı rotalar
Her zaman /{slug}/{bölüm} altında yaşar — /{slug}/issues, /{slug}/agents, /{slug}/settings. Çalışma alanı yönlendirme mantığını asla çoğaltmayın; paylaşımlı koddan useNavigation().push() kullanın, asla framework'e özel bağlantı API'leri kullanmayın.
Paketler ve modüller
Monorepo katı paket sınırlarını uygular:
| Paket | Bağımlı olabilir | Bağımlı olmaMALIDIR |
|---|---|---|
packages/core | uygulamaya özel hiçbir şey | react-dom, localStorage, process.env, next/*, UI kütüphaneleri |
packages/ui | hiçbir şey | @multica/core, iş mantığı |
packages/views | core/, ui/ | next/*, react-router-dom, store'lar |
apps/web/platform/ | next/* | diğer uygulamalar |
apps/desktop/.../platform/ | react-router-dom, electron | diğer uygulamalar |
Mantık her iki uygulamada da görünüyorsa, paylaşımlı bir pakete çıkarılMALIDIR. "Küçük" çoğaltma için istisna yoktur.
Dosyalar ve bileşenler
- Dosyalar:
kebab-case.tsx/kebab-case.ts(örn.agent-row-actions.tsx) - Bileşenler:
PascalCase(örn.AgentRowActions) - Hook'lar:
useCamelCase(örn.useWorkspaceId) - Testler:
<dosya>.test.ts(x)olarak yan yana - Store'lar (Zustand):
<özellik>-store.ts,use<Ozellik>Storeolarak dışa aktarılır
Veritabanı (Go + sqlc)
- Tablolar:
snake_casetekil (user,workspace,agent_runtime) - Sütunlar:
snake_case(workspace_id,created_at,last_seen_at) - Yabancı anahtarlar:
<tablo>_id - Boolean'lar:
is_<durum>veya<durum>_at(durum değişiklikleri için zaman damgası biçimi tercih edilir) - Migration dosyaları:
NNN_descriptive_name.up.sql+.down.sql— her zaman iki yönü de sağlayın
Go
- Standart
gofmt+go vet. İstisna yok. - İşleyici dosyaları alanı yansıtır:
agent.go,auth.go,runtime.go - Testler:
<dosya>_test.goyan yana - İşleyicilerde UUID ayrıştırma için, kök
CLAUDE.md'deki kuralı izleyin — sınır girdisi içinparseUUIDOrBadRequest, güvenilen round-trip'ler içinparseUUID(panikleyen), hatayı kontrol etmeden asla doğrudanutil.ParseUUIDkullanmayın.
TypeScript
- Tel üzerindeki API yanıtları
snake_case'dir; api istemcisi sınırdacamelCase'e dönüştürür. TS kodunun içinde, her zaman camelCase. - Tipler:
PascalCase(Issue,AgentRuntime); aslaIPrefix, asla_tsoneki. - Enum'lar: dize literal birleşimlerini tercih edin;
enum'u çalışma zamanında yinelenebilir durumlar için saklayın. - TanStack Query anahtarları:
<özellik>/queries.ts'de fabrika fonksiyonları, örn.issueKeys.detail(id).
İş anahtarları
Her işin MUL-123 gibi insan tarafından okunabilir bir anahtarı vardır: çalışma alanı issue_prefixi (büyük harf ve rakam, tipik olarak 3 karakter, en fazla 10) + sıra numarası. Çalışma alanı yöneticileri Ayarlar → Genel'de ön eki değiştirebilir; değiştirmek mevcut her işi yeniden numaralandırır, bu yüzden eski ön eki gömen dış referanslar (PR başlıkları, dal adları, dokümanlardaki ve sohbetteki bağlantılar) çözümlenmeyi durdurur.
Koddaki yorumlar
Yalnızca İngilizce. Repo bunu hem Go hem TypeScript için zorunlu kılar. Kodda bir Çince yorum bulursanız, bu bir hatadır — değiştirin.
Commit mesajları
Geleneksel biçim: feat(scope), fix(scope), refactor(scope), docs, test(scope), chore(scope). Niyete göre gruplandırılmış atomik commit'ler.
2. i18n çeviri sözlüğü
Bu, her çeviri PR'ı için zorunlu sözlüktür. Eskiden packages/views/locales/glossary.md'de yaşıyordu; o dosya kaldırıldı ve bu sayfa onun yerini aldı.
Temel ayrım: günlük kelime ve Multica'ya özgü terim
Multica'nın ürün isimleri iki kategoriye ayrılır:
- Günlük kelime — kullanıcının onun için sesli söyleyeceği kelime. Bir veritabanı varlığı olsun ya da olmasın tamamen çevrilir:
issue→ 任务,workspace→ 工作区,project→ 项目. - Multica'ya özgü terim — hiçbir yerel kelimenin karşılamadığı bir kavram (
skill) veya kullanıcının yazması ya da eşleştirmesi gerekebilecek şema düzeyinde bir tanımlayıcı (todo,in_progress,task_id). Bir tip adı gibi okunması için küçük harf İngilizce olarak render edilir.
apps/docs/content/docs/*.zh.mdx altındaki Çince sayfalar, bu sayfadaki diğer her şey için fiili üslup standardıdır. *.zh.mdx, *.ja.mdx ve *.ko.mdx metinleri artık aşağıdaki tabloyu da izliyor.
issue, ürünün görevidir — çevirin
issue, bir kullanıcının açtığı ve bir agent'ın üzerinde çalıştığı şeyin İngilizce ürün adıdır. Diğer her locale'de bu, "görev" için kullanılan günlük kelimedir:
| Varlık | en | zh-Hans | ja | ko |
|---|---|---|---|---|
takip edilen iş birimi (issue) | Issue | 任务 | タスク | 태스크 |
bir agent çalıştırma kaydı (API / DB'de task) | Run | 运行 | 実行 | 실행 |
Her iki kavram da kullanıcıya görünürdür ve aynı şey değildir — bir issue birçok run taşıyabilir. Hiçbir locale'de ikisini aynı kelimeyle yazmayın. Task, artık bir agent çalıştırması için kullanıcıya görünen bir ürün ismi değildir; yalnızca yerleşik dahili tanımlayıcı olarak kalır.
Değişmeyenler:
- API / DB alanları her yerde
issue/task/skillolarak kalır:issue_status,task_id,skill_uuid. Geliştirici metni ürün nesnesini Run olarak adlandırır ve tanımlayıcı önemli olduğunda "Run (API'detask_id)" şeklinde açıklığa kavuşturabilir. - Kod referansları ve gerçek komutlar İngilizce kalır:
multica issue ...,/issueSlack ve Lark eğik çizgi komutu. skillÇince metinde küçük harf İngilizce kalır — yerleşmiş bir Çince terimi olmayan Multica'ya özgü bir kavram; başlıklarSkillsolarak büyük harfle yazılabilir.- "Problem" anlamındaki
issue(runtime sağlığı) varlığın kendisi değil, düz bir isimdir: bir makine kartında{{count}} issues,{{count}} 个异常/問題 {{count}} 件/문제 {{count}}개olur, asla varlık kelimesi olmaz.
Neden issue çevrilirken skill çevrilmiyor: kullanıcılar tüm gün issue açar ve okur, "issue"nun ise Çince, Japonca veya Korece'de geliştirici jargonu dışında bir anlamı yoktur. Günlük görev kelimesi, insanların bunun için zaten söylediği kelimedir. skill ise hiçbir yerel kelimenin anlamı taşımadığı Multica'ya özgü bir kavramdır.
Diğer ürün isimleri de aynı "yerleşik bir yerel kelimesi olanı çevir" testini izler:
project→ "项目": yerleşmiş ana akım Çince kelime. Feishu / Tower / Teambition / PingCode / GitHub Projects — her Çince ürün onu çevirir. Hiçbir ürün Çince bağlamdaprojecti korumaz.autopilot→ "自动化": Çince'de, "autopilot" Tesla'nın "自动驾驶"siyle ilişkilendirilir ve özelliğin yaptığıyla eşleşmez (bir zamanlamaya göre agent çalıştırmaları başlatmak). Notion ve Feishu ikisi de "自动化" kullanır; bu endüstri konsensüsüdür.
Çevirme — markalar ve kısaltmalar
| Kategori | Terimler |
|---|---|
| Markalar | Multica, GitHub, Slack, Google, Anthropic, OpenAI, Claude, Codex, Cursor, Linear, Jira |
| Kısaltmalar | API, CLI, URL, SDK, OAuth, JWT, SSO, WebSocket, HTTP, JSON, YAML, SQL |
Tamamen çevir — kavramlar
| İngilizce | Çince |
|---|---|
| Workspace | 工作区 |
| Agent | 智能体 |
| Project | 项目 |
| Autopilot | 自动化 |
| Daemon | 守护进程 |
| Runtime | 运行时 |
| Inbox | 收件箱 |
| Comment | 评论 |
| Reply | 回复 |
| Notifications | 通知 |
| Member | 成员 |
| Label | 标签 |
| Settings | 设置 |
| Onboarding | 上手引导 |
Tamamen çevir — genel arayüz kelimeleri
| İngilizce | Çince |
|---|---|
| Invite / Invitation | 邀请 |
| Search | 搜索 |
| 邮箱 (etiket) / 邮件 (eylem) | |
| Password | 密码 |
| Sign in / Log in | 登录 |
| Sign up | 注册 |
| Sign out / Log out | 退出登录 |
| Save / Cancel / Delete | 保存 / 取消 / 删除 |
| Confirm / Continue / Back | 确认 / 继续 / 返回 |
| Edit / New / Create / Add | 编辑 / 新建 / 创建 / 添加 |
| Remove / Send / Open / Close | 移除 / 发送 / 打开 / 关闭 |
| Preview / Download / Upload | 预览 / 下载 / 上传 |
| Done / Loading... | 完成 / 加载中... |
| Profile / Account / Appearance | 个人资料 / 账号 / 外观 |
| Theme / Language | 主题 / 语言 |
| Light / Dark / System | 浅色 / 深色 / 跟随系统 |
| Active / Archived | 活跃 (veya 启用) / 已归档 |
| Status / Priority | 状态 / 优先级 |
| Assignee / Reporter | 负责人 / 报告人 |
| Description / Title | 描述 / 标题 |
| Date / Time | 日期 / 时间 |
| Today / Yesterday / Tomorrow | 今天 / 昨天 / 明天 |
| Empty / Failed / Success | 空 / 失败 / 成功 |
| Error / Warning | 错误 / 警告 |
Roller ve durum enum'ları (küçük harf İngilizce, çevrilmez)
Bunlar şema düzeyinde tanımlayıcılardır; Çince bağlamda bile küçük harf İngilizce olarak render edilir.
- Roller:
owner/admin/member - İş durumu:
backlog/todo/in_progress/in_review/done/blocked/cancelled
Arayüzde, İngilizce olarak gösterin (isteğe bağlı code-style sarmalı):
- "你需要 owner 权限"
- "已切换到 in_progress"
Kelime birleştirme kuralları
Bir İngilizce kelime (varlık / marka / kısaltma) ile çevreleyen Çince arasına her zaman tek bir boşluk koyun:
- "Create new issue" → "新建任务"(
任务Çince olduğu için boşluk yok) - "Assign to agent" → "分配给智能体"
- "Configure runtime" → "配置运行时"
- "Stop daemon" → "停止守护进程"
Çoğullar ve sayımlar
i18next _one / _other kullanır; Çince'de gramer sayısı yoktur, yalnızca _otherı doldurun.
// en/issues.json
{
"issue_count_one": "{{count}} issue",
"issue_count_other": "{{count}} issues"
}
// zh-Hans/issues.json
{
"issue_count_other": "{{count}} 个任务"
}Yaygın sayım biçimleri:
{{count}} issues→{{count}} 个任务{{count}} agents→{{count}} 个智能体{{count}} workspaces→{{count}} 个工作区{{count}} comments→{{count}} 条评论{{count}} members→{{count}} 位成员{{count}} skills→{{count}} 个 skill
Enterpolasyon
{{var}} kullanın. Çince çeviriler doğal cümle akışı için yeniden sıralanabilir.
// en
{ "welcome_message": "Welcome back, {{name}}!" }
// zh-Hans
{ "welcome_message": "欢迎回来,{{name}}!" }Çeviri anahtarı adlandırma
Üç düzeyli iç içe geçme: feature.component.action.
{
"feature_or_component": {
"subcomponent_or_section": {
"action_or_label": "..."
}
}
}Örnekler:
issues.toolbar.batch_update_successissues.detail.comment_form.placeholderinbox.empty.titlesettings.preferences.language.title
Yalnızca web / yalnızca masaüstü metni
- Paylaşımlı metin: ad alanı JSON'ının üst düzeyi
- Yalnızca web:
webbölümü - Yalnızca masaüstü:
desktopbölümü
Kanonik örnek için auth.json'a bakın (web bölümü prefer_desktop / desktop_handoff.* içerir).
3. Çince ses ve üslup
Noktalama
- Çince'de tam genişlikte noktalama:
,。:;!? - Tırnaklar: İngilizce kaynakla eşleşmek için düz çift tırnak
"...".「」veya kıvrık tırnak kullanmayın. - Üç nokta: tek karakter
…değil üç nokta.... İngilizce kaynakla eşleştirin. - Karışık Çince-İngilizce: İngilizce kelimenin her iki tarafında tek bir boşluk (Kelime birleştirme kurallarına bakın).
Üslup ilkeleri
- Kısa ve doğrudan. Çeviri kokusundan kaçının: "对于 X 来说"、"作为 X"、"我们的".
- Hata mesajları: nazik ama net. "无法保存修改", "保存修改失败了!"den daha iyidir.
- Düğmeler: önce fiil, 2-4 karakter. "取消"、"保存修改"、"立即同步".
- Araç ipuçları: tam kısa cümle. "复制链接到剪贴板".
- Yer tutucular: örnek tarzı. "输入任务标题...".
Şüphede kaldığınızda nereye bakmalı
Sözlük bir terimi kapsamıyorsa, şunlara bakın:
apps/docs/content/docs/*.zh.mdx— fiili Çince üslup standardı, 20'den fazla sayfada tutarlı çeviripackages/views/locales/zh-Hans/auth.jsonveeditor.json— JSON yapısı + seçici API kalıplarıpackages/views/auth/login-page.tsx— bileşen düzeyinde seçici API çağrı sitesipackages/views/settings/components/preferences-tab.tsx— dil seçici referansı
Bu sayfayı güncelleme
Burada bir kuralı değiştirirseniz, ayrıca:
- İlgili locale JSON'larında / CLAUDE.md'de / dokümanlar sayfasında uygulayın
- İnceleyicilerin sonraki taramayı aramasını bilmesi için PR açıklamasında değişikliği not edin
Bu sayfa sözleşmedir; başka hiçbir şey onu geçersiz kılmaz.
Proje mimarisi
Multica'nın istemcilerinin, Go servisinin, çalıştırma daemon'ının ve paylaşımlı ön yüz paketlerinin birlikte nasıl çalıştığını öğrenin.
Topluluk tarafından sürdürülen alanlar
Multica'nın hangi bölümlerinin topluluk katkıcıları tarafından sürdürüldüğü, bunun destek için ne anlama geldiği ve bu alanlardaki bir sorunu nasıl bildireceğiniz.