-
Notifications
You must be signed in to change notification settings - Fork 17
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
Meta: Translation Project for IPFS GUIs #50
Comments
|
|
Reposting some notes on
If anyone has any prior experience with either of them, feedback with pros/cons would be appreciated! |
Of note, i just saw https://github.com/lingui/js-lingui which may be the best of both |
Also about |
Those are good data points. js-lingui is really lightweight and optimized + actively maintained. On the other hand, @hacdias noted there is a way to use i18next with ICU format, so if we happen to have a decision paralysis, we can always go with i18next-icu (uses yahoo/intl-messageformat). So far I don't have any strong opinion on this, my only ask is to use framework-agnostic format, so we are not bound to a specific framework and can switch in the future. So far I see two options:
As long we store translations in either of them, we will be future-proof. |
Update: I've managed to setup Transifex for IPFS Companion and new WebUI, for now it is a manual sync but web interface works and everyone can create Transifex account (or login with github one) and play with translating some strings. See links to PRs below for more info.
Let me know if there are any issues with registration / joining the project there. |
thanks to @lidel and the transifex service Today I Learned about the trade-offs around using logical keys in 1i8n systems Vs. using logical keys are useful to pinpoint the location in the app where a string appears... this works well with translation services, as it means we don't lose the connection between translated values when we change an english value... the key is stable, and remains even if the value changes. The translated values may now be out of date, but they are still connected to same logical location in the app. This has the downside of us having to generate pseudo-logical key names for things, and it means the same phrase could appear duplicated under many different keys, and need translating each time... which feels like it would slowly increase the workload over time but The translation service manages that by suggesting translations from other sections of your project where the english (or whatever the configured source language is) value matches this new one. So where you have different logical keys / namespaced keys, pointing to the same 'en' text, the translation service can automate the translation based on the values of existing keys. From previous locaization experience I wanted english lang keys to
Point 1. is defeated by the value of having a stable key when existing translations change, and you need a way to keep the connection between a phrase, its usage site, and the previous other translations of the phrase that used to go there so... hurrah for logical keys and translations services. |
Ok, I took CI as far as I could:
Next:
|
Got some valuable feedback from Chinese Translators at Transifex :
TL;DR we will use |
Rename Locale for Chinese (China) to zh-CN Received some useful hints from our friends at Transifex and I think this approach is the way to go forward. This PR applies revised naming convention from ipfs/ipfs-gui#50 (comment) and renames Chinese locale from `zh` to `zh-CN`, which is supported by `i18next` and match value from `Accept-Language` I smoke tested this PR and strings that are already translated rendered correctly. In the future we can add `pt-BR` and `en-GB` using the same convention :)
Add Transifex for Crowdsourcing Translations (This is a part of Translation Project for IPFS GUIs, see ipfs/ipfs-gui#50 for more details)
Not sure how I missed this before 🤦♂️ https://docs.transifex.com/projects/updating-content/#section-automatic-updates:
This means we can point it at a raw resource at GitHub and don't need CI for pushing new strings ✨ I've just enabled this for IPFS Companion using this URL: |
A day later I am able to confirm it indeed updates automatically. I've enabled it for other projects as well. |
@mikeal asked if there a thread somewhere on starting the translation community and.. I had no doc to point at :) I wrote a short overview in ProtoSchool/protoschool.github.io#39, but in the long term we should have a linkable resource with protocol for adding projects to Transifex and some cheat-sheet documenting our use of Question: where should we keep it?
Is it ok to create |
+1 for Option B :) |
I moved docs and reading material to a dedicated project. https://github.com/ipfs/i18n ✨Dear future reader: If you have trouble with i18n framework, translation site, locale format or want to add project to Transifex please fill an issue here. |
Current State
It's alive! https://github.com/ipfs/i18n
Dear future reader:
If you have trouble with i18n framework, translation site, locale format or want to add project to Transifex please fill an issue here.
(Original issue below)
Background
Click to expand
In the past it was a mixed bag: different services, missing locales, no common corpus/dictionary to support crowdsourcing efforts.
in progress: feat: i18n ipfs-webui#772done)right now under @lidel's private account, needs to be migrateddone: Add Transifex for Crowdsourcing Translations ipfs-companion#566
$LC_ALL
Milestones
Manual
this is very important:
Semi-Automated
Full Automation
master
) to crowdsourcing sitelocales
branch on daily basis to make sync as easy as merge tomaster
References
Transifex
.tx/config
fileClick to expand notes for CrowdIn (alternative to Transifex)
CrowdIn
crowdin.yaml
The text was updated successfully, but these errors were encountered: