-
Notifications
You must be signed in to change notification settings - Fork 57
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add support for multiple languages #73
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Quick comments now, will review in deep later.
gettext supports supplying multiple languages using the colon character $ LC_ALL=pt_BR:pt_PT:en_US foo bar which are used as fallback: when a translation for the first one is not available, the second language is used. If no language contains a translation for the string `msgid` is returned. This patch adds this support into gotext. 1/ config struct - 'language' was renamed to 'languages' and is a slice of strings - 'storage' was renamed to 'locales' and is a slice of Locale pointers 2/ loadStorage() - all loaded languages are iterated over 3/ GetLanguages() - new function returns the languages from the config - GetLanguage() uses the first element of it, keeping the compatibility 4/ SetLanguage(), Configure() - the language string is split at colon and iterated over 5/ Get*() - languages are iterated and the first translation for given string is returned 6/ IsTranslated*() - new optional parameter (langs) has been added 7/ Locale.GetActualLanguage() - it checks the filesystem and determines what the actual language code is: for 'cs_CZ', just 'cs' may be returned, depending on the actual name of the .mo/.po file.
Specifying C disables all further localization.
Hi. I'm still alive and I can continue supporting this PR :). It would be great to get more notes once you have time for that. |
Sorry for the delay on this one @m-horky , it's merged now! |
Hey @m-horky , sorry for the turnaround. Could you create a new one addressing the issues? |
…4376) [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [github.com/leonelquinteros/gotext](https://togithub.com/leonelquinteros/gotext) | `v1.5.2` -> `v1.6.0` | [![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fleonelquinteros%2fgotext/v1.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fleonelquinteros%2fgotext/v1.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fleonelquinteros%2fgotext/v1.5.2/v1.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fleonelquinteros%2fgotext/v1.5.2/v1.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>leonelquinteros/gotext (github.com/leonelquinteros/gotext)</summary> ### [`v1.6.0`](https://togithub.com/leonelquinteros/gotext/releases/tag/v1.6.0) [Compare Source](https://togithub.com/leonelquinteros/gotext/compare/v1.5.2...v1.6.0) #### What's Changed - Allow locale to use a `fs.FS` by [@​kobergj](https://togithub.com/kobergj) in [https://github.com/leonelquinteros/gotext/pull/68](https://togithub.com/leonelquinteros/gotext/pull/68) - Runtime translation detection by [@​m-horky](https://togithub.com/m-horky) in [https://github.com/leonelquinteros/gotext/pull/69](https://togithub.com/leonelquinteros/gotext/pull/69) - feat: Add language getter for Locale by [@​taozhou-glean](https://togithub.com/taozhou-glean) in [https://github.com/leonelquinteros/gotext/pull/77](https://togithub.com/leonelquinteros/gotext/pull/77) - Allow setting global storage by [@​didrocks](https://togithub.com/didrocks) in [https://github.com/leonelquinteros/gotext/pull/80](https://togithub.com/leonelquinteros/gotext/pull/80) - Fix multiline export by [@​didrocks](https://togithub.com/didrocks) in [https://github.com/leonelquinteros/gotext/pull/82](https://togithub.com/leonelquinteros/gotext/pull/82) - Order locations in ascii order by [@​didrocks](https://togithub.com/didrocks) in [https://github.com/leonelquinteros/gotext/pull/83](https://togithub.com/leonelquinteros/gotext/pull/83) - Fix io/fs File leak by [@​diamondburned](https://togithub.com/diamondburned) in [https://github.com/leonelquinteros/gotext/pull/79](https://togithub.com/leonelquinteros/gotext/pull/79) - Add support for multiple languages by [@​m-horky](https://togithub.com/m-horky) in [https://github.com/leonelquinteros/gotext/pull/73](https://togithub.com/leonelquinteros/gotext/pull/73) - Revert "Add support for multiple languages" by [@​leonelquinteros](https://togithub.com/leonelquinteros) in [https://github.com/leonelquinteros/gotext/pull/84](https://togithub.com/leonelquinteros/gotext/pull/84) - Remove unused dependency by [@​der-lyse](https://togithub.com/der-lyse) in [https://github.com/leonelquinteros/gotext/pull/86](https://togithub.com/leonelquinteros/gotext/pull/86) - Fix typo in documentation by [@​der-lyse](https://togithub.com/der-lyse) in [https://github.com/leonelquinteros/gotext/pull/87](https://togithub.com/leonelquinteros/gotext/pull/87) - Add support for multiple languages by [@​m-horky](https://togithub.com/m-horky) in [https://github.com/leonelquinteros/gotext/pull/85](https://togithub.com/leonelquinteros/gotext/pull/85) #### New Contributors - [@​kobergj](https://togithub.com/kobergj) made their first contribution in [https://github.com/leonelquinteros/gotext/pull/68](https://togithub.com/leonelquinteros/gotext/pull/68) - [@​m-horky](https://togithub.com/m-horky) made their first contribution in [https://github.com/leonelquinteros/gotext/pull/69](https://togithub.com/leonelquinteros/gotext/pull/69) - [@​taozhou-glean](https://togithub.com/taozhou-glean) made their first contribution in [https://github.com/leonelquinteros/gotext/pull/77](https://togithub.com/leonelquinteros/gotext/pull/77) - [@​didrocks](https://togithub.com/didrocks) made their first contribution in [https://github.com/leonelquinteros/gotext/pull/80](https://togithub.com/leonelquinteros/gotext/pull/80) - [@​diamondburned](https://togithub.com/diamondburned) made their first contribution in [https://github.com/leonelquinteros/gotext/pull/79](https://togithub.com/leonelquinteros/gotext/pull/79) - [@​der-lyse](https://togithub.com/der-lyse) made their first contribution in [https://github.com/leonelquinteros/gotext/pull/86](https://togithub.com/leonelquinteros/gotext/pull/86) **Full Changelog**: leonelquinteros/gotext@v1.5.2...v1.6.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - "before 6am on Monday" in timezone Europe/Paris, Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/cozy/cozy-stack). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yOTMuMCIsInVwZGF0ZWRJblZlciI6IjM3LjI5My4wIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=-->
Is this a fix, improvement or something else?
This patch adds support for fallback translations.
pt_BR:pt:es
makes it possible to use Brazilian Portuguese, fallback to default Portuguese and to Spanish when the translation is not available.What does this change implement/fix?
config
struct, and internal implementation of functions that work with it.Get*()
functions to iterate over loaded languages, instead of using the only one.IsTranslated*()
functions to include new required argument of the language to be checked.Locale.GetActualLanguage()
, required by theIsTranslated*()
functions. This one may need a bit of polishing.true
if some translation exists?I have ...