silverstripe / silverstripe-framework

Silverstripe Framework, the MVC framework that powers Silverstripe CMS
https://www.silverstripe.org
BSD 3-Clause "New" or "Revised" License
721 stars 821 forks source link

Template translate does not work as expected #1354

Closed g4b0 closed 7 years ago

g4b0 commented 11 years ago

What stated in documentation http://doc.silverstripe.org/framework/en/3.1/topics/i18n#usage-in-template-files doesn't work.

not working...

UndefinedOffset commented 11 years ago

I wonder if its the case that language files in themes are not read, try moving it to mysite/lang/en.yml see if that works. Likely the manifest does not look in themes for language files.

g4b0 commented 11 years ago

You're right! I moved YAML content into mysite YAML files and everything is ok, now. So it's a bug!

sake /dev/tasks/i18nTextCollectorTask 

generates the english YAML file into themes/mySimple, but SS will never read it and it's translated counterpart.

UndefinedOffset commented 11 years ago

Ya i18nTextCollectorTask should be putting it into your site project for themes and not in the theme

g4b0 commented 11 years ago

Maybe is better that theme folder is readed during translation, so it will be possible to translate templates.

UndefinedOffset commented 11 years ago

Main problem with that is that themes aren't interpreted like modules, which is what i18n uses to look up the available translations. If I'm correct i18n uses getModules() from the manifest see https://github.com/silverstripe/sapphire/blob/3.0/i18n/i18n.php#L1695 for example.

g4b0 commented 11 years ago

You're right, but themes have to be translated in some way, so I think that's a quite big SS issue. If you release a theme you can't publish it translate into 2 or more languages, and everyone installing it have to translate it manually.

wernerkrauss commented 10 years ago

bump. any progress on this issue?

wernerkrauss commented 10 years ago

Seems like this issue is solved in at least 3.1.6.

/dev/tasks/i18nTextCollectorTask?module=themes/mytheme collects stuff /themes/mytheme/lang is noticed and translation files are added / used

sminnee commented 10 years ago

@wernerkrauss are you happy for us to close the issue, then?

g4b0 commented 9 years ago

As @wernerkrauss stated this issue seems solved in 3.1.6

g4b0 commented 9 years ago

It seems that the problem is still around in 3.1.8

daddymana commented 9 years ago

I confirm that this error persists on 3.1.8 version

chillu commented 9 years ago

I've just tried this out in the 3.1 branch, works for me. Check i18n::include_by_locale(), it does a scandir($themesBase) - which has been there for a while (2011). One bug which might be related: i18n::get_existing_translations() doesn't run the same checks on /themes, so in cases where the locale ONLY exists in /themes this might be an issue. Since your example uses it, that's not applicable here though.

krv commented 8 years ago

I can confirm this bug. My /themes/mytheme/lang/nl.yml file was not recognized. When I added the same content to my mysite/lang/nl.yml file everything worked fine.

I created the translation in a template file (Includes/Navigation.ss)

<li><%t Navigation.BELGIUM "Belgium" %></li>

My nl.yml file looks as follows

nl: Navigation: BELGIUM: België

I am running the latest silverstripe version.

dhensby commented 8 years ago

@tractorcow thoughts on this? You recently did work on this stuff

tractorcow commented 7 years ago

Yep, there's a bug in theme language files. I've updated the string detection code considerably, but it looks like localisation in the themes folder isn't working.

You might be better to move your strings to mysite/lang for the time being until it's fixed.

chillu commented 7 years ago

I'm not sure if that's still an issue in 3.x, but it was definitely a regression in 4.x - which I've fixed with https://github.com/silverstripe/silverstripe-framework/pull/6628