
On Thu, 08 Aug 2013 13:27:25 +0200 Ladislav Slezak <lslezak@suse.cz> wrote:
Dne 8.8.2013 11:59, Jiří Suchomel napsal(a):
V Thu, 08 Aug 2013 08:18:01 +0200 Ladislav Slezak <lslezak@suse.cz> napsáno: [...] Still not usable for data files of yast2-country: currently there are explicitly loaded via target.ycp each time when the language is changed so the new translation is available during run-time.
I guess we cannot force load the include file when we need to re-translate those files. Is there any ruby solution for that?
A possible solution could be to wrap the YAML in an ERB template, in ERB you can put any Ruby code:
foo.yml.erb: --- foo: <%= _("bar") %>
Then it could be read using
YAML.load(ERB.new(File.read("foo.yml.erb")).result)
(See e.g. http://urgetopunt.com/rails/2009/09/12/yaml-config-with-erb.html)
Ruby Gettext even supports ERB, so it should be easy to extract translatable strings from ERB files.
But the example is not complete, we would need to "escape" the translated string to make sure not to break the YAML format...
This looks like reasonable solution,because you need to re-evaluate file everytime again as it is not trivial to change language set during runtime.
Another possibility is to use a user data type feature in YAML, you can actually convert any object to YAML:
Object.new.to_yaml => "--- !ruby/object {}\n"
We could create e.g. TranslatableString class which would handle translations.
But in this case extracting the translatable texts from YAML would be complicated, we would likely need a new specific parser for that.
(BTW in both cases the YAML files became unportable, you cannot read them using e.g. perl-YAML library or something else. But that should not be a problem, YCP files were unreadable outside Yast anyway...)
the first solution looks better for me.
I already discussed that in the past with Josef, he told me that it should be somehow possible to use translations in YAML files. So let's see when he's back from vacation...
Well, RoR use different solution, that they have file.en.yaml with en string and file.cs.yaml with different language set and use their own I18n, so question is if we want to stay with gettext, but probably yes, to make live easier for translators. Josef -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org To contact the owner, e-mail: yast-devel+owner@opensuse.org