

Also from Kynth Studios


Also from Kynth Studios


Also from Kynth Studios
1# Hiddify App — Claude project instructions23## Localization / translations (slang)45The app uses **slang** (v4.8.1) for i18n — a type-safe framework that turns the JSON translation files into Dart code, with tooling for analysis, applying translations, and structural key edits. Config is in `build.yaml` under `slang_build_runner`.67**Official docs: https://pub.dev/packages/slang** — read them whenever you need slang's syntax or features (plurals, context, linked translations, modifiers, interpolation). Learn the framework's rules yourself; they are not repeated here.89Project setup:10- Base locale: `en`. Sources: `assets/translations/<locale>.i18n.json`.11- Locales (11): `en` (base) + `ar`, `es`, `fa`, `fr`, `id`, `pt-BR`, `ru`, `tr`, `zh-CN`, `zh-TW`.12- Generated code (`lib/gen/translations*.g.dart`) and the analyze reports (`_missing_translations*.json`, `_unused_translations*.json`) are **git-ignored** — never committed, no cleanup needed.13- `fallback_strategy: base_locale` → a missing secondary string shows English at runtime.14- Namespaces are off → plain key paths, e.g. `t.profile.add.title`.1516### Essential commands1718- `dart run slang` — generate the Dart code from the JSON. Run after **any** JSON change so the app compiles.19- `dart run slang analyze [--split] [--full]` — compare every locale against `en`. Writes `_missing_translations*.json` (in `en`, missing elsewhere) and `_unused_translations*.json` (in a locale, not in `en`) into `assets/translations/`. `--split` = one file per locale; `--full` = also flag `en` keys unused in `lib/` source.20- `dart run slang apply [--locale=fa]` — write the **translated** `_missing_translations*.json` back into each locale file (keeps `en`'s key order).2122slang also has `edit add/delete/move/copy`, `clean`, `normalize`, `outdated`, and `stats` — use these (see docs) for structural edits instead of hand-editing every locale.2324### Translation principles (priority order)25261. **Material Design 3 (top priority):** sentence case, concise, no trailing period on short UI strings, action-oriented.272. **Context-based:** Hiddify is a **v2ray / VPN client**. Keep technical terms in **English** — VPN, proxy, DNS, TUN, WARP, Psiphon, VLESS, VMess, Trojan, Shadowsocks, Reality, XTLS, sing-box, inbound / outbound, TLS, ping, etc.283. **Preserve non-text exactly:** placeholders (`$name`, `${host}`), links, plural / context blocks, modifiers. Translate values only, never keys. Keep valid JSON.2930### During development — English only3132- Edit **only** `assets/translations/en.i18n.json` — text and JSON structure.33- Leave the other 10 locales untouched (fallback shows English). This saves tokens and time.34- For **important or long** strings, propose the English wording and **wait for my approval**.35- To rename / move / delete an existing key, run `dart run slang edit move|delete <path>` (token-free, keeps existing translations).36- Run `dart run slang` after editing so the app compiles.3738### Committing translation edits3940This applies to **any commit that contains translation edits** — not every commit. A code-only change is committed normally. Translation edits go in their own commit(s), never mixed with code, for a clean translation history:41421. **English / source — on its own, first.** Stage and commit **only** `assets/translations/en.i18n.json`. During development you edit only `en`, so at commit time it is normally the only changed translation file — that is why English comes first.432. **Other 10 locales — together, afterwards.** When you translate them: `dart run slang analyze --split` → translate the missing strings (principles above) → `dart run slang apply` → `dart run slang` → stage all the other `assets/translations/*.i18n.json` files and commit them in one commit.4445### Final check (after both commits)4647`dart run slang analyze --full` → both reports should hold no locale entries (only the `@@info` header): nothing missing, nothing extra. If something shows up, tell me and fix it in a follow-up.48
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| csells/dotprompt_dartCLAUDE.md · 5 | CLAUDE.md | testlint-formatarchtypes+4 | 100/100 | 14 days ago | |
| microsoft/playwrightCLAUDE.md · 95k | CLAUDE.md | buildtestlint-formatstyle+7 | 100/100 | 7 days ago | |
| nimbalyst/nimbalystpackages/android/CLAUDE.md · 1.5k | CLAUDE.md | setupbuildstylearch+2 | 100/100 | 14 days ago | |
| lollipopkit/flutter_server_boxCLAUDE.md · 8.5k | CLAUDE.md | buildteststylearch+2 | 98/100 | 14 days ago | |
| supabase/supabase.claude/CLAUDE.md · 108k | CLAUDE.md | testlint-formatstylearch+1 | 97/100 | 14 days ago | |
| imaNNeo/fl_chartCLAUDE.md · 7.6k | CLAUDE.md | teststylearchtesting-strategy+2 | 94/100 | 14 days ago | |
| we-promise/sureCLAUDE.md · 9.5k | CLAUDE.md | setuptestlint-formatstyle+11 | 93/100 | 13 days ago | |
| manaflow-ai/cmuxCLAUDE.md · 26k | CLAUDE.md | setupbuildteststyle+4 | 93/100 | today |
A badge carrying the measured quality of the strongest agent config file in this repository, out of 100. It reads from this index every time somebody loads your page, so it changes when the measurement changes and there is nothing to keep up to date. Free, no account, and the value is not something you or we can set by hand.
[](https://rulestack.kynth.studio/configs/hiddify-hiddify-app-claude)Would rather not hotlink us? Every badge is also served in shields.io’s endpoint schema, so shields renders the image and your readers never talk to our domain:
Published by Toolproof, the masthead over this index and eight others. The method behind the number is at toolproof.kynth.studio/methodology, and the whole thing is readable as JSON with no key at /api.