From e963881cac5555b554e12ba72d852f7830a31c77 Mon Sep 17 00:00:00 2001 From: Aghyad Date: Sun, 2 Aug 2026 17:59:40 +0400 Subject: [PATCH] Update README for 17 languages and the two-step locale checklist MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The supported-languages table listed 9; it now lists all 17 and is verified against the LOCALES registry. The 'adding a language' checklist said to register an import in language-provider.tsx, which no longer exists — message files are loaded by path now, so it is two steps. --- README.md | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 59f8b0ec..1d5a817c 100644 --- a/README.md +++ b/README.md @@ -252,7 +252,7 @@ Two caveats worth stating plainly, since "everything is local" is the headline c ## 🌍 Supported Languages -BrowseryTools is fully localized. The entire UI — homepage, all tools, and navigation — is available in: +BrowseryTools is fully localized in **17 languages**, two of them right-to-left. The entire UI — homepage, all tools, and navigation — is available in: | Language | Code | Direction | | --- | --- | --- | @@ -265,16 +265,25 @@ BrowseryTools is fully localized. The entire UI — homepage, all tools, and nav | Русский (Russian) | `ru` | LTR | | Bahasa Indonesia (Indonesian) | `id` | LTR | | 简体中文 (Simplified Chinese) | `zh-CN` | LTR | +| Türkçe (Turkish) | `tr` | LTR | +| हिन्दी (Hindi) | `hi` | LTR | +| Tiếng Việt (Vietnamese) | `vi` | LTR | +| 日本語 (Japanese) | `ja` | LTR | +| فارسی (Persian) | `fa` | RTL | +| 한국어 (Korean) | `ko` | LTR | +| Polski (Polish) | `pl` | LTR | +| Italiano (Italian) | `it` | LTR | Language is detected from the browser on first visit and can be changed anytime via the in-app language switcher (preference is remembered). -**Adding a new language** is intentionally simple — all locale wiring derives from one registry: +Each language has its own indexable URLs — English stays at `/tools/`, every other locale sits under `//tools/` — with reciprocal `hreflang` alternates. Only the active locale's messages are sent to the browser, so adding a language does not grow anyone else's download. + +**Adding a new language** is two steps — all locale wiring derives from one registry: 1. Add an entry to `LOCALES` in [`src/lib/locales.ts`](src/lib/locales.ts). 2. Add a `messages/.json` file (a full translation of `messages/en.json`). -3. Register its import in the messages map in [`src/providers/language-provider.tsx`](src/providers/language-provider.tsx). -The switcher, ``, hreflang tags, and OpenGraph locales all update automatically. +The switcher, ``, hreflang tags, sitemap entries, OpenGraph locales, and message loading all derive from that registry. A test fails if a registered locale has no on-page prose, so a language cannot ship half-wired. ## 📋 Prerequisites