Skip to content

Add Thai (th) language support and Noto Sans Thai font - #445

Merged
KnifeLemon merged 4 commits into
KnifeLemon:mainfrom
Sudo-Bannawat:add-thai-language
Oct 23, 2026
Merged

KnifeLemon merged 4 commits into
KnifeLemon:mainfrom
Sudo-Bannawat:add-thai-language

Conversation

@Sudo-Bannawat

Copy link
Copy Markdown
Contributor

Summary

This PR adds full Thai (th) language support to Filee, following docs/ADDING-A-LANGUAGE.md.

  • Translations: Added th.json with all 889 keys translated, matching English placeholders {0}, {1}.
  • Font: Added static Noto Sans Thai (Regular, Medium, Bold) to fetch-fonts.ps1 with verified SHA-256 checksums, and registered in SoftPalette.FontFamilies.
  • Language Registration: Added ("th", "ไทย") to AppLanguages.All and culture routing in LocalizationService.Resolve.
  • Documentation: Added README.th.md and linked Thai in all README.*.md files.
  • Tests:
    • LocalizationTests: Verified key and placeholder parity (64/64 passed).
    • RenderTests: Headless UI visual renders passed (238/238 passed).

Visual Screenshots

Home General
page-home-th page-general-th
Toolbar Triggers
page-toolbar-th page-triggers-th
Presets Theme
page-presets-th page-theme-th
Engines Watch Folders
page-engines-th page-watch-th
About
page-about-th

@KnifeLemon KnifeLemon added the translation UI translations and language support label Oct 22, 2026
@KnifeLemon KnifeLemon self-assigned this Oct 22, 2026

@KnifeLemon KnifeLemon left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you, @Sudo-Bannawat, this is a complete language. All 889 keys are there in en.json's order with the placeholders intact, and the Thai reads naturally. Labels that other strings quote, such as “ใช้โปรแกรมในเครื่อง…” and “แปลงไฟล์ด้วย Filee”, match everywhere. Noto Sans Thai comes in the right way: static Regular, Medium and Bold files pinned with SHA-256 in fetch-fonts.ps1, about 114 KB in all. The hashes match here, and the headless renders look right. The marks sit correctly, and lines break at the spaces between phrases, the donut slices included.

I merged current main into the branch and ran the tests. LocalizationTests and RenderTests pass with your Thai rows, Setup's tests pass, and dotnet format is clean.

We'll take care of a few small things when merging, so nothing is needed from you:

  • Resolve will match th and th-* only, as it does for French and Nepali. StartsWith("th") would also catch other language codes that begin with "th", such as Tharu (thl).
  • Thai will be added to the Setup /LANG list and get a SetupTextsTests row (Setup already offers it through AppLanguages).
  • Noto Sans Thai will be listed in THIRD-PARTY-NOTICES.md with the other Noto fonts.
  • Leelawadee UI will be added to the system font list, so Setup, which uses Windows' own fonts, draws Thai in Windows' Thai UI font.
  • README.th.md will get the parts README.md has gained since: the sponsor paragraph with the Fairy note, and the star-history chart.
  • We'll add Thai to filee.sh.
  • We'll add these steps to docs/ADDING-A-LANGUAGE.md so the next language has them.

The CI run is waiting for approval. We'll start it and merge once it's green. A read-through by another Thai speaker is always welcome later. Thanks again!

KnifeLemon and others added 2 commits October 23, 2026 11:46
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s, READMEs

- th.json: translate the 18 keys main added and the iCalendar line of engine.data.description
- LocalizationService.Resolve matches "th" and "th-*" only (not Tharu "thl"), with test rows
- Setup's /LANG list names th; SetupTextsTests gets a th-TH row
- THIRD-PARTY-NOTICES lists Noto Sans Thai with the other Noto fonts
- Font chains add Leelawadee UI (Windows, also for Setup) and Thonburi (macOS)
- README.th.md gains the sections README.md has (dmg, signing scope, sponsor note, star history);
  every README lists ไทย among the UI languages
- docs/ADDING-A-LANGUAGE.md lists these steps for the next language

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@KnifeLemon
KnifeLemon merged commit e06a9b7 into KnifeLemon:main Oct 23, 2026
9 checks passed
@KnifeLemon

Copy link
Copy Markdown
Owner

Merged, thank you @Sudo-Bannawat! Filee now speaks Thai. When bringing it up to main we translated the strings added in the meantime, made "auto" pick Thai for th and th-* only, added Leelawadee UI and Thonburi as system fallbacks, listed Noto Sans Thai in the notices and filled in the README sections. Thai is on filee.sh too. It'll be in the next release.

@KnifeLemon KnifeLemon mentioned this pull request Oct 23, 2026
5 tasks done
@Sudo-Bannawat
Sudo-Bannawat deleted the add-thai-language branch October 24, 2026 01:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

translation UI translations and language support

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants