[codex] Add full locale catalog (#6070)

## Thinking Path

> - Paperclip orchestrates AI agents through a board-facing control
plane.
> - The UI is the operator surface where onboarding and company creation
flows need to remain understandable across languages.
> - The i18next foundation now supports locale resource loading and
validation, but only English was present on `master`.
> - The branch exists to populate that foundation with the supported
language catalog without changing routing, data contracts, or runtime
behavior.
> - This pull request adds locale JSON resources for the current
non-English language set.
> - The benefit is that future locale selection work has validated
message catalogs ready for the first translated onboarding strings.

## What Changed

- Added 39 localized message catalogs under `ui/src/i18n/locales/` for
the existing no-companies onboarding strings.
- Kept the PR rebased onto current `master` so it only contains the
all-languages layer on top of the already-merged i18next foundation.

## Verification

- `pnpm exec vitest run ui/src/i18n/locale-validation.test.ts`
- Checked `ROADMAP.md`; this is scoped locale catalog follow-up work and
does not duplicate a listed roadmap feature.
- No before/after screenshots included because this PR only adds
resource JSON files and does not change rendered layout or visible
default-English UI behavior.

## Risks

- Low risk: static JSON resource additions validated against the English
reference schema.
- Translation quality may need native-speaker review before enabling
visible locale switching broadly.

> For core feature work, check [`ROADMAP.md`](ROADMAP.md) first and
discuss it in `#dev` before opening the PR. Feature PRs that overlap
with planned core work may need to be redirected — check the roadmap
first. See `CONTRIBUTING.md`.

## Model Used

- OpenAI Codex CLI, GPT-5 family coding agent, tool-enabled repository
access, medium reasoning effort.

## Checklist

- [x] I have included a thinking path that traces from project context
to this change
- [x] I have specified the model used (with version and capability
details)
- [x] I have checked ROADMAP.md and confirmed this PR does not duplicate
planned core work
- [x] I have run tests locally and they pass
- [x] I have added or updated tests where applicable
- [x] If this change affects the UI, I have included before/after
screenshots
- [x] I have updated relevant documentation to reflect my changes
- [x] I have considered and documented any risks above
- [x] I will address all Greptile and reviewer comments before
requesting merge

---------

Co-authored-by: Paperclip <noreply@paperclip.ing>
This commit is contained in:
Dotta
2026-05-16 08:24:31 -05:00
committed by GitHub
parent 4c47eb46c3
commit 63821bfe4c
39 changed files with 351 additions and 0 deletions
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "أنشئ شركتك الأولى",
"description": "ابدأ بإنشاء شركة.",
"newCompany": "شركة جديدة"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "আপনার প্রথম কোম্পানি তৈরি করুন",
"description": "একটি কোম্পানি তৈরি করে শুরু করুন।",
"newCompany": "নতুন কোম্পানি"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "Vytvořte svou první společnost",
"description": "Začněte vytvořením společnosti.",
"newCompany": "Nová společnost"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "Opret din første virksomhed",
"description": "Kom i gang ved at oprette en virksomhed.",
"newCompany": "Ny virksomhed"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "Erstellen Sie Ihr erstes Unternehmen",
"description": "Beginnen Sie, indem Sie ein Unternehmen erstellen.",
"newCompany": "Neues Unternehmen"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "Δημιουργήστε την πρώτη σας εταιρεία",
"description": "Ξεκινήστε δημιουργώντας μια εταιρεία.",
"newCompany": "Νέα εταιρεία"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "Crea tu primera empresa",
"description": "Comienza creando una empresa.",
"newCompany": "Nueva empresa"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "اولین شرکت خود را ایجاد کنید",
"description": "با ایجاد یک شرکت شروع کنید.",
"newCompany": "شرکت جدید"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "Luo ensimmäinen yrityksesi",
"description": "Aloita luomalla yritys.",
"newCompany": "Uusi yritys"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "Gumawa ng iyong unang kumpanya",
"description": "Magsimula sa paggawa ng kumpanya.",
"newCompany": "Bagong Kumpanya"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "Créez votre première entreprise",
"description": "Commencez par créer une entreprise.",
"newCompany": "Nouvelle entreprise"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "צרו את החברה הראשונה שלכם",
"description": "התחילו ביצירת חברה.",
"newCompany": "חברה חדשה"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "अपनी पहली कंपनी बनाएं",
"description": "कंपनी बनाकर शुरुआत करें.",
"newCompany": "नई कंपनी"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "Hozza létre első vállalatát",
"description": "Kezdje egy vállalat létrehozásával.",
"newCompany": "Új vállalat"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "Buat perusahaan pertama Anda",
"description": "Mulai dengan membuat perusahaan.",
"newCompany": "Perusahaan Baru"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "Crea la tua prima azienda",
"description": "Inizia creando un'azienda.",
"newCompany": "Nuova azienda"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "最初の会社を作成",
"description": "会社を作成して始めましょう。",
"newCompany": "新しい会社"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "첫 회사를 만드세요",
"description": "회사를 만들어 시작하세요.",
"newCompany": "새 회사"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "तुमची पहिली कंपनी तयार करा",
"description": "कंपनी तयार करून सुरुवात करा.",
"newCompany": "नवीन कंपनी"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "Cipta syarikat pertama anda",
"description": "Mulakan dengan mencipta syarikat.",
"newCompany": "Syarikat Baharu"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "Opprett ditt første selskap",
"description": "Kom i gang ved å opprette et selskap.",
"newCompany": "Nytt selskap"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "Maak uw eerste bedrijf aan",
"description": "Begin door een bedrijf aan te maken.",
"newCompany": "Nieuw bedrijf"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "ਆਪਣੀ ਪਹਿਲੀ ਕੰਪਨੀ ਬਣਾਓ",
"description": "ਕੰਪਨੀ ਬਣਾਕੇ ਸ਼ੁਰੂ ਕਰੋ।",
"newCompany": "ਨਵੀਂ ਕੰਪਨੀ"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "Utwórz swoją pierwszą firmę",
"description": "Zacznij od utworzenia firmy.",
"newCompany": "Nowa firma"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "Crie sua primeira empresa",
"description": "Comece criando uma empresa.",
"newCompany": "Nova empresa"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "Crie a sua primeira empresa",
"description": "Comece por criar uma empresa.",
"newCompany": "Nova empresa"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "Creați prima companie",
"description": "Începeți prin crearea unei companii.",
"newCompany": "Companie nouă"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "Создайте свою первую компанию",
"description": "Начните с создания компании.",
"newCompany": "Новая компания"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "Skapa ditt första företag",
"description": "Kom igång genom att skapa ett företag.",
"newCompany": "Nytt företag"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "Unda kampuni yako ya kwanza",
"description": "Anza kwa kuunda kampuni.",
"newCompany": "Kampuni Mpya"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "உங்கள் முதல் நிறுவனத்தை உருவாக்குங்கள்",
"description": "ஒரு நிறுவனத்தை உருவாக்கி தொடங்குங்கள்.",
"newCompany": "புதிய நிறுவனம்"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "మీ మొదటి కంపెనీని సృష్టించండి",
"description": "కంపెనీని సృష్టించడం ద్వారా ప్రారంభించండి.",
"newCompany": "కొత్త కంపెనీ"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "สร้างบริษัทแรกของคุณ",
"description": "เริ่มต้นด้วยการสร้างบริษัท",
"newCompany": "บริษัทใหม่"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "İlk şirketinizi oluşturun",
"description": "Bir şirket oluşturarak başlayın.",
"newCompany": "Yeni Şirket"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "Створіть свою першу компанію",
"description": "Почніть зі створення компанії.",
"newCompany": "Нова компанія"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "اپنی پہلی کمپنی بنائیں",
"description": "کمپنی بنا کر شروع کریں۔",
"newCompany": "نئی کمپنی"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "Tạo công ty đầu tiên của bạn",
"description": "Bắt đầu bằng cách tạo một công ty.",
"newCompany": "Công ty mới"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "创建您的第一家公司",
"description": "通过创建公司开始。",
"newCompany": "新公司"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"app": {
"noCompanies": {
"title": "建立您的第一家公司",
"description": "從建立公司開始。",
"newCompany": "新公司"
}
}
}