"How do we handle the localization? Do we have a repo, do we use any service? Do I need to contact someone?"
"We have a json which we edit"
Did this ever happen to you? If it did, I may have the solution for you!
I've recently stumbled upon the classical "we kinda have localization but we kinda don't" issue and I've decided to make a micro-library so that -at least- we can collaborate on Google Sheets. Give it a look!
It's very simple to use (if you think it's not please give me a feedback and I'll do my best to make it more intuitive!) and it basically just requires your API keys or your service account in case you're working within a company.
Configuring the Google Sheets doc
Pretty straightforward:
first row:
- The first cell is 'locaKeys', which will just hold the translation keys
- The other cells contain the localization name (en-uk, de-de, etc...)
other rows:
- the first cell contains the key for the translation: univoque and i suggest no spaces and all uppercase, to make it easy to spot if there's somthing wrong with the translations.
- the other cells contain the value for the corresponding language
Use it freely via:
npm i -D loca-mapper
Top comments (2)
lovely idea, have you considered other cases like variables or trnslations based on a count?
@anastawfeek Yup!
Usually in that case what I do is to place a placeholder (e.g.:
{{n}}
) and replace via code! This would have to be duplicated in every language as it may of course lie in different points of the sentence, eg:"Oggi Γ¨ il {{0}} giorno senza incidenti!"
(4th word)"Today's the {{0}} day without accidents"
(3rd word)The reason for the number is that in cases like these you may want to mass replace a certain subject:
"My {{0}} is painted {{1}} because the color {{1}} is cool! Oh and my {{0}} is also cool!"
So what you may want is to have an helper function in which you pass your replacements,
.foreach
them and apply the translation via.replaceAll
!The reason I did not include such system in the library is that this aims to be just a document-to-ts (or js) transpiler, as for the execution I prefer to let the user use the i18n library they prefer!