Hi there i was wondering is there a way to write your code so that default language strings would not have to be hardcoded?
My app should not require code change to fix a typo in the label. It should also not affect other languages if i change english label.
As i see it now my strings have to be in english in the t(‘button label for example’) call.
Then this ‘button label for example’ text is key for other languages. Problems:
1. changing it requires code change
2. changing it requires to update key string in all languages
3. some languages can have different grammar and one english word could map to many versions so the text ‘book’ is not enoguh and can not be a label as it could be 2 different words in other language depending on the context (like to order or a book to read are).
Is there a way to have meaningful lables like mymodule_btn_buy_now and then each language would use this as key? So english labels would be decoupled from code and sit in translation file? Can that be done in some way in drupal?
Thanks!
A common workaround for this problem is to add a new custom language, call it English as well and use that instead of the default one. If you configure translation to fall back to the untranslated string if no translation is available, you don’t need to provide a full translation set for the custom English version – just add translations for the strings you want to change.
With this, you practically turn the hardcoded default English set into ‘language agnostic’ identifiers, for which all other languages, including the custom English, provide translated versions.