Skip to content

Conversation

@occultsound
Copy link

@occultsound occultsound commented Dec 15, 2025

📋 Summary

This PR adds complete Traditional Chinese (Taiwan) locale support to Nginx Proxy Manager, including UI translations and help documentation.

🎯 Changes

New Files Added

  • Translation file: frontend/src/locale/src/tw.json (171 translation entries)
  • Help documentation (Traditional Chinese):
    • frontend/src/locale/src/HelpDoc/tw/AccessLists.md
    • frontend/src/locale/src/HelpDoc/tw/Certificates.md
    • frontend/src/locale/src/HelpDoc/tw/DeadHosts.md
    • frontend/src/locale/src/HelpDoc/tw/ProxyHosts.md
    • frontend/src/locale/src/HelpDoc/tw/RedirectionHosts.md
    • frontend/src/locale/src/HelpDoc/tw/Streams.md
    • frontend/src/locale/src/HelpDoc/tw/index.ts

Modified Files

  • frontend/check-locales.cjs - Added tw locale configuration
  • frontend/src/locale/IntlProvider.tsx - Registered Traditional Chinese locale
  • frontend/src/locale/src/HelpDoc/index.ts - Registered tw help documentation
  • frontend/src/locale/src/lang-list. json - Added locale display name

🌐 Locale Details

  • Locale Code: tw
  • Language Tag: zh-TW
  • Display Name: 繁體中文 (Traditional Chinese)
  • Flag Code: TW (Taiwan)
  • Translation Coverage: 100% (171/171 strings)

✨ Features

✅ Complete UI translation in Traditional Chinese
✅ All help documentation translated
✅ Proper flag icon mapping (Taiwan flag)
✅ Follows existing locale implementation pattern
✅ No breaking changes to existing code
✅ Maintains backward compatibility

💡 Additional Notes

This translation uses Traditional Chinese characters commonly used in Taiwan (台灣正體), which differs from Simplified Chinese (zh-CN). The translation maintains technical accuracy while using terminology familiar to Taiwanese users.

🙏 Acknowledgments

Thank you for considering this contribution! Traditional Chinese support will benefit many users in Taiwan, Hong Kong, and Macau regions.

@nginxproxymanagerci
Copy link

CI Error:

/bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
certbot-node: Pulling from nginxproxymanager/nginx-full
89a22a8ceec6: Pulling fs layer
5b63786a5ba6: Pulling fs layer
247bb3ac8589: Pulling fs layer
6de210124de3: Pulling fs layer
ed7cf54410cd: Pulling fs layer
dc38f870359d: Pulling fs layer
c9bd0d1160b9: Pulling fs layer
d6c744a0bc97: Pulling fs layer
ff8c4222fa3f: Pulling fs layer
30542bde1305: Pulling fs layer
85f03b01b692: Pulling fs layer
a1c94b0c9462: Pulling fs layer
98e88f8736aa: Pulling fs layer
de76c5419d81: Pulling fs layer
a5f004707a1e: Pulling fs layer
26229c3071fd: Pulling fs layer
0832c7840eea: Pulling fs layer
1c146f8229eb: Pulling fs layer
bbb071235e52: Pulling fs layer
cf7176411d1c: Pulling fs layer
74317feea9cb: Pulling fs layer
cbf1674b8db9: Pulling fs layer
5b63786a5ba6: Download complete
23c045d34ee3: Download complete
5b63786a5ba6: Pull complete
a1c94b0c9462: Download complete
247bb3ac8589: Download complete
d6c744a0bc97: Download complete
6de210124de3: Download complete
dc38f870359d: Download complete
c9bd0d1160b9: Download complete
30542bde1305: Download complete
247bb3ac8589: Pull complete
6de210124de3: Pull complete
98e88f8736aa: Download complete
89a22a8ceec6: Download complete
ed7cf54410cd: Download complete
d6c744a0bc97: Pull complete
dc38f870359d: Pull complete
ed7cf54410cd: Pull complete
26229c3071fd: Download complete
0832c7840eea: Download complete
de76c5419d81: Download complete
85f03b01b692: Download complete
74317feea9cb: Download complete
1c146f8229eb: Download complete
a5f004707a1e: Download complete
ff8c4222fa3f: Download complete
cf7176411d1c: Download complete
cbf1674b8db9: Download complete
98e88f8736aa: Pull complete
de76c5419d81: Pull complete
85f03b01b692: Pull complete
26229c3071fd: Pull complete
0832c7840eea: Pull complete
1c146f8229eb: Pull complete
a5f004707a1e: Pull complete
c9bd0d1160b9: Pull complete
cbf1674b8db9: Pull complete
ff8c4222fa3f: Pull complete
a1c94b0c9462: Pull complete
30542bde1305: Pull complete
bbb071235e52: Download complete
cf7176411d1c: Pull complete
bbb071235e52: Pull complete
89a22a8ceec6: Pull complete
74317feea9cb: Pull complete
Digest: sha256:d0b63960c7f2841f9c5cf3c72427ed130155c361f5c778cda400061f4ebce385
Status: Downloaded newer image for nginxproxymanager/nginx-full:certbot-node
docker.io/nginxproxymanager/nginx-full:certbot-node
�[1;34m❯ �[1;36mBuilding Frontend ...�[0m
yarn install v1.22.22
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
warning " > @uiw/react-textarea-code-editor@3.1.1" has unmet peer dependency "@babel/runtime@>=7.10.0".
[4/4] Building fresh packages...
Done in 29.50s.
yarn run v1.22.22
$ biome lint
Checked 216 files in 81ms. No fixes applied.
Done in 0.17s.
yarn run v1.22.22
$ formatjs compile-folder src/locale/src src/locale/lang
[@formatjs/cli] [WARN] Error validating message "undefined" with ID "language-name" in file "src/locale/src/tw.json"
TypeError: Cannot read properties of undefined (reading 'length')
    at Parser2.isEOF (/app/frontend/node_modules/@formatjs/cli/bin/formatjs:12607:49)
    at Parser2.parseMessage (/app/frontend/node_modules/@formatjs/cli/bin/formatjs:12076:24)
    at Parser2.parse (/app/frontend/node_modules/@formatjs/cli/bin/formatjs:12072:23)
    at parse6 (/app/frontend/node_modules/@formatjs/cli/bin/formatjs:12876:55)
    at compile7 (/app/frontend/node_modules/@formatjs/cli/bin/formatjs:18728:67)
    at async Promise.all (index 12)
    at async compileFolder (/app/frontend/node_modules/@formatjs/cli/bin/formatjs:18792:19)
    at async _Command.<anonymous> (/app/frontend/node_modules/@formatjs/cli/bin/formatjs:231568:5)
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
error Command failed with exit code 1.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant