translating strings in drupal with no english default in the code
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 en开发者_开发技巧glish 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.
AFAIK there is no need to write the translation string inside t()
in Enlisch, is is just the default and a convinience. If your default language is e.g. Polish, than you could write all the translation strings in polish and translate them via Drupals interface. The reason there is a proper english translation is that this is the default language and if no other languge is found, then the already given string is used.
It doesn't matter to Drupal if there is a single word or a complete sentence translated, so you can easily translate whole sentences and no need to worry about the grammer or whatsoever.
Personally, I would recommend keeping the Englisch translations from the t()
method since it's a good default setting and just add all your needed languages with Drupal
After sources investigation i think there is no way to do it clicking around.
The best solution i can see so far is replace all instances of "en" with "zu" ... did that in common.php and locale.php and actually works! LOL! will have to test it a bit as im not sure how badly does it hit performance. Should not be too bad its just as english was foreign language i guess. I can edit labels and export translated english texts.
Will test more, if you know better way to do it let me know.
精彩评论