Files
Timo a0c16df664 feat(i18n): add Ukrainian & Chinese, fix zh/uk translation quality
Add two new languages (uk, zh / zh_CN) across the extension and website:
register them in SUPPORTED_LANGUAGES, the Chrome _locales map, the website
build/lang-init/app routing, hreflang/og/schema tags and language selectors.

Fix systematic machine-translation word-sense errors in the new zh/uk
locales (e.g. zh "Status"=地位→状态, "Leave Room"=留出空间→离开房间,
"Play"=玩→播放, "Seek"=寻找→跳转, audio Attack/Release/Knee; uk "Play"=Грати
→Відтворити, "Clear"=ЯСНО→Очистити, "Open"=ВІДЧИНЕНО→Відкрити, peers
"Однолітки"→"Учасники"), translate remaining English leftovers (Room ID,
Custom) and normalise terminology. All 15 locales pass test-locales.cjs.

Note: popup.html and website/template.html also carry the language-selector
additions here; their Ko-Fi→Support label text is part of the branding change.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 16:26:20 +02:00

5.6 KiB

KoalaSync Translation & Localization Guide

Welcome to the KoalaSync translation guide. We rely on the open-source community to make KoalaSync accessible to users worldwide.

KoalaSync is split into two independent translation areas. You can translate either one, or both:

  1. The Browser Extension (extension/locales/): The core product that users interact with daily.
  2. The Website (website/locales/): The landing page and invitation bridge.

Supported Languages Dashboard

We divide supported languages into two tiers: Core Languages (fully hand-crafted and audited by native speakers) and Extended Languages (auto-generated using translation models to expand initial coverage).

Tip

Help Us Improve! We welcome community contributions to audit Auto-Generated translations and elevate them to 100% Manually Verified status.

Language Code Language Name Verification Status Rationale / Context
en English 100% Manually Verified Global default language (verified by developer)
de German 100% Manually Verified Developer's native language
fr French Auto-Generated Needs manual native review and polishing
es Spanish 100% Manually Verified Manual native review by Alenia Studios
pt-BR Portuguese (Brazil) 100% Manually Verified Manual native review by Alenia Studios
ru Russian Auto-Generated Needs manual native review and polishing
it Italian 100% Manually Verified Manual native review by Alenia Studios
pl Polish Auto-Generated Needs manual native review and polishing
tr Turkish Auto-Generated Needs manual native review and polishing
nl Dutch Auto-Generated Needs manual native review and polishing
ja Japanese Auto-Generated Needs manual native review and polishing
ko Korean Auto-Generated Needs manual native review and polishing
pt European Portuguese 100% Manually Verified Manual native review by Alenia Studios
zh Chinese (Simplified) Auto-Generated Needs manual native review and polishing
uk Ukrainian Auto-Generated Needs manual native review and polishing

Warning

Autogeneration Quality Rule Any newly contributed languages must be marked as Auto-Generated in this table until fully reviewed and signed off by a native speaker in a pull request.


How to Translate KoalaSync

Here is the exact step-by-step process for contributing translations.

Step 1: Fork and Clone the Repository

If you are an external contributor, start with the standard open-source workflow:

  1. Click the "Fork" button on GitHub to create your own copy of the repository.
  2. Clone your fork locally: git clone https://github.com/YOUR-USERNAME/KoalaSync.git
  3. Create a branch: git checkout -b translation/my-language

Step 2: Translate the Extension

The browser extension handles real-time syncing, settings, and popups.

  1. Navigate to extension/locales/.
  2. Edit an existing [lang].json or copy en.json to create a new one (for example, it.json).
  3. Translate all string values. Do not change the JSON keys.

Step 3: Translate the Website

The website hosts the landing page and invitation bridge.

  1. Navigate to website/locales/.
  2. Edit an existing [lang].json or copy en.json to create a new one.
  3. Translate all string values. Do not change the JSON keys.
  4. If creating a brand new language, configure the metadata at the top of your JSON file:
{
  "LANG_CODE": "it",
  "HTML_CLASS": "lang-it",
  "CANONICAL_PATH": "it/",
  "LANG_TOGGLE_URL": "../",
  "LANG_TOGGLE_TEXT": "EN"
}
  1. If creating a brand new language, register it in website/build.cjs by adding it to the languages array.

Step 4: Verify Locally

Ensure your JSON files are valid and all keys match the English baseline. Open your terminal in the KoalaSync root folder and run:

# Tests the extension locales for missing keys or syntax errors
node scripts/test-locales.cjs

# Tests the website locales for missing keys or syntax errors
node scripts/test-website-locales.mjs

# Builds the website with your new translations
node website/build.cjs

If you receive any errors about missing keys or placeholder strings, fix them before submitting.

Step 5: Commit and Pull Request

  1. Open this TRANSLATION.md file and add or update your language in the Supported Languages Dashboard above. Mark it as 100% Manually Verified only if it has been reviewed by a native speaker.
  2. Commit your changes: git commit -m "Update Italian translations"
  3. Push to your fork: git push origin translation/my-language
  4. Open a pull request on the main KoalaSync repository on GitHub.

Our legal pages have strict constraints to protect user privacy and avoid regulatory liabilities.

Important

Do Not Translate Legal Documents The legal notice (website/impressum.html) and privacy policy (website/datenschutz.html) MUST remain exclusively in English and German.

Rationale: Legal compliance under the European Union General Data Protection Regulation (GDPR) and the German Digital Services Act (DDG). Offering automated translations of legally binding notices introduces compliance risks due to potential mistranslations of liability limits.

Technical fallback: Our system automatically falls back to English for legal pages if a user visits them in an unsupported language, so you do not need to translate them.