| 1 | /** |
| 2 | * The words under the homepage whale. Every state reads without motion or |
| 3 | * colour: a mark and a word (codewhale-design DIRECTION.md, Craft). The |
| 4 | * performance is an illustration of a session's phases, not live telemetry. |
| 5 | * |
| 6 | * These are short status phrases shown in every routed locale, so they carry |
| 7 | * all eighteen languages here instead of the en/zh pair other content files |
| 8 | * use; a locale missing from a row falls back to English. |
| 9 | */ |
| 10 | type StateText = { en: string } & Partial<Record<string, string>>; |
| 11 | |
| 12 | export const WHALE_STATE_TEXT = { |
| 13 | rest: { |
| 14 | en: "Ready", zh: "就绪", ja: "準備完了", ko: "준비됨", vi: "Sẵn sàng", id: "Siap", |
| 15 | es: "Listo", "pt-BR": "Pronto", ru: "Готово к работе", uk: "Готово до роботи", fr: "Prêt", |
| 16 | de: "Bereit", hi: "तैयार", tr: "Hazır", it: "Pronto", pl: "Gotowy", ar: "جاهز", ca: "A punt", |
| 17 | }, |
| 18 | listen: { |
| 19 | en: "Reading your request", zh: "正在阅读你的请求", ja: "依頼を読んでいます", ko: "요청을 읽는 중", |
| 20 | vi: "Đang đọc yêu cầu", id: "Membaca permintaan Anda", es: "Leyendo tu solicitud", |
| 21 | "pt-BR": "Lendo seu pedido", ru: "Читает ваш запрос", uk: "Читає ваш запит", |
| 22 | fr: "Lecture de votre demande", de: "Liest deine Anfrage", hi: "आपका अनुरोध पढ़ रहा है", |
| 23 | tr: "İsteğini okuyor", it: "Legge la tua richiesta", pl: "Czyta Twoje polecenie", |
| 24 | ar: "يقرأ طلبك", ca: "Llegint la teva petició", |
| 25 | }, |
| 26 | think: { |
| 27 | en: "Planning", zh: "正在规划", ja: "計画中", ko: "계획하는 중", vi: "Đang lập kế hoạch", |
| 28 | id: "Merencanakan", es: "Planificando", "pt-BR": "Planejando", ru: "Планирует", uk: "Планує", |
| 29 | fr: "Planification", de: "Plant", hi: "योजना बना रहा है", tr: "Planlıyor", it: "Pianifica", |
| 30 | pl: "Planuje", ar: "يخطط", ca: "Planificant", |
| 31 | }, |
| 32 | read: { |
| 33 | en: "Reading files", zh: "正在读取文件", ja: "ファイルを読んでいます", ko: "파일을 읽는 중", |
| 34 | vi: "Đang đọc tệp", id: "Membaca berkas", es: "Leyendo archivos", "pt-BR": "Lendo arquivos", |
| 35 | ru: "Читает файлы", uk: "Читає файли", fr: "Lecture des fichiers", de: "Liest Dateien", |
| 36 | hi: "फ़ाइलें पढ़ रहा है", tr: "Dosyaları okuyor", it: "Legge i file", pl: "Czyta pliki", |
| 37 | ar: "يقرأ الملفات", ca: "Llegint fitxers", |
| 38 | }, |
| 39 | write: { |
| 40 | en: "Editing", zh: "正在编辑", ja: "編集中", ko: "편집하는 중", vi: "Đang chỉnh sửa", |
| 41 | id: "Mengedit", es: "Editando", "pt-BR": "Editando", ru: "Редактирует", uk: "Редагує", |
| 42 | fr: "Modification", de: "Bearbeitet", hi: "संपादित कर रहा है", tr: "Düzenliyor", |
| 43 | it: "Modifica", pl: "Edytuje", ar: "يعدّل", ca: "Editant", |
| 44 | }, |
| 45 | run: { |
| 46 | en: "Running tests", zh: "正在运行测试", ja: "テストを実行中", ko: "테스트 실행 중", |
| 47 | vi: "Đang chạy kiểm thử", id: "Menjalankan pengujian", es: "Ejecutando pruebas", |
| 48 | "pt-BR": "Executando testes", ru: "Запускает тесты", uk: "Запускає тести", |
| 49 | fr: "Exécution des tests", de: "Führt Tests aus", hi: "टेस्ट चला रहा है", |
| 50 | tr: "Testleri çalıştırıyor", it: "Esegue i test", pl: "Uruchamia testy", |
| 51 | ar: "يشغّل الاختبارات", ca: "Executant proves", |
| 52 | }, |
| 53 | done: { |
| 54 | en: "Done", zh: "已完成", ja: "完了", ko: "완료", vi: "Hoàn tất", id: "Selesai", es: "Listo", |
| 55 | "pt-BR": "Concluído", ru: "Готово", uk: "Готово", fr: "Terminé", de: "Fertig", hi: "पूरा हुआ", |
| 56 | tr: "Tamamlandı", it: "Fatto", pl: "Gotowe", ar: "تم", ca: "Fet", |
| 57 | }, |
| 58 | pod: { |
| 59 | en: "Working with three agents", zh: "正在与三个智能体协作", ja: "3 つのエージェントと作業中", |
| 60 | ko: "에이전트 세 개와 작업 중", vi: "Đang làm việc cùng ba tác tử", id: "Bekerja dengan tiga agen", |
| 61 | es: "Trabajando con tres agentes", "pt-BR": "Trabalhando com três agentes", |
| 62 | ru: "Работает с тремя агентами", uk: "Працює з трьома агентами", fr: "Travaille avec trois agents", |
| 63 | de: "Arbeitet mit drei Agenten", hi: "तीन एजेंटों के साथ काम कर रहा है", |
| 64 | tr: "Üç ajanla çalışıyor", it: "Lavora con tre agenti", pl: "Pracuje z trzema agentami", |
| 65 | ar: "يعمل مع ثلاثة وكلاء", ca: "Treballant amb tres agents", |
| 66 | }, |
| 67 | connect: { |
| 68 | en: "Connecting a provider", zh: "正在连接提供商", ja: "プロバイダーに接続中", |
| 69 | ko: "제공업체 연결 중", vi: "Đang kết nối nhà cung cấp", id: "Menghubungkan penyedia", |
| 70 | es: "Conectando un proveedor", "pt-BR": "Conectando um provedor", ru: "Подключает провайдера", |
| 71 | uk: "Підключає провайдера", fr: "Connexion d’un fournisseur", de: "Verbindet einen Anbieter", |
| 72 | hi: "प्रदाता से जोड़ रहा है", tr: "Sağlayıcıya bağlanıyor", it: "Collega un provider", |
| 73 | pl: "Łączy dostawcę", ar: "يتصل بمزوّد", ca: "Connectant un proveïdor", |
| 74 | }, |
| 75 | busy: { |
| 76 | en: "Working", zh: "正在工作", ja: "作業中", ko: "작업 중", vi: "Đang làm việc", id: "Bekerja", |
| 77 | es: "Trabajando", "pt-BR": "Trabalhando", ru: "Работает", uk: "Працює", fr: "Au travail", |
| 78 | de: "Arbeitet", hi: "काम कर रहा है", tr: "Çalışıyor", it: "Al lavoro", pl: "Pracuje", |
| 79 | ar: "يعمل", ca: "Treballant", |
| 80 | }, |
| 81 | } satisfies Record<string, StateText>; |
| 82 | |
| 83 | export type WhaleStateKey = keyof typeof WHALE_STATE_TEXT; |
| 84 | |
| 85 | export function whaleStateLabels(locale: string): Record<WhaleStateKey, string> { |
| 86 | return Object.fromEntries( |
| 87 | Object.entries(WHALE_STATE_TEXT).map(([key, text]) => [key, (text as StateText)[locale] ?? text.en]), |
| 88 | ) as Record<WhaleStateKey, string>; |
| 89 | } |
| 90 |