> > >>It is no problem that the "of" in "king of hearts" is not translated. >>you can just omit it, as in >> >>msgid "Move %s of %s to stack" >>msgstr "Flyt %2$s %1$s til bunken" >> >>which also makes use of the parameter positioning reordering of printf. >> >> > >Of course, it would not work that well for German. You could >concatenate "%2$s%1$s" but that would require translating "king" as >"könig". Unfortunately, as a noun, the proper translation would be >"König"; lower-casing only happens for the compound word. >
Completely agree here. Of course, you could do "%2$s-%1$s", i.e. Herz-König, which will definitely be understood, though it doesn't change that the correct translation would be Herzkönig. But, that wasn't necessarily the point anyway, since you don't necessarily have "Move %s of %s to stack" as a msgid. Instead, you might have the following: #: 1 msgid "Move %s to stack" msgstr "" #: 2 msgid "%s of %s" msgstr "" #: 3 msgid "King" msgstr "" #: 4 msgid "Hearts" msgstr "" Where 3 and 4 are substituted into 2, before 2 is substituted into 1. How do you get rid of the 'of' here? You can only translate "%s of %s" to "%2$s-%1$s", iff you are certain there isn't any "x of y" where 'x' not in (Two, Three, ...., King, Aces) and 'y' not in (Diamonds, Hearts, Spades, Clubs). As such, you do require context, as following: #: 2 msgid "[playing card]%s of %s" msgstr "" Now, while this might still appear easier for the engineer from a development perspective, the engineer, most and for all, *must know* that this context is required in the first place. Since whether someone is the Queen of Hearts or whether we have the playing card Queen of Hearts, it's still 'Queen of Hearts' and '%s of %s' is still '%s of %s'. In a translation, on the other hand, that might be completely different (e.g. for German it would be 'Königin der Herzen' and '[playing card]Herzkönigin'). So, do we expect the engineer to know whether a context is required in the translation or not, or do we simply expect the engineer to just add a context for everything now? An alternative might be that we do require a context for every part of a composed string. Then, the engineer would simply have to think of a way to describe what exactly s/he means, so that the translator will later on know what exactly the engineer referred to, i.e. that the translator knows in which whole the part is substituted into. Question now is, is it really easier for an engineer to consider such context issues, or to simply use the printf-method to simply generate all complete msgids and let the translator handle the rest? If you have everything in one string, then you don't need to worry about whether translators know that you can reorder %s, %s with %2$s, %1$s either. And another considerable advantage of having everything in one string is following: #: 1 msgid "Move King of Hearts to stack" msgstr "Lege den Herzkönig auf den Stapel" #: 2 msgid "Move Queen of Hearts to stack" msgstr "Lege die Herzdame auf den Stapel" While it might be alright in english to say "Move %s of %s to stack", it really sounds wrong in some other languages not to say "Move the %s of %s to stack". And I don't see how that could be covered with any kind of composed string, since whether it's 'die' or 'der' entirely depends on the noun, i.e. on 'Königin' or 'König'. IMO, considering *all* issues and trying to create a system that is really good for most of the languages, rather than going the easy way that works for all languages, I personally believe to be a waste of ressources. And, in addition, I believe that the overall quality of the translations would suffer, since the whole is more than the sum of its parts, and this goes for texts in particular. And no, I am not talking about card games. Cheers, Bernd -- Dr. Bernd R. Groh Email: [EMAIL PROTECTED] I18n/L10n Engineering Phone: +61 7 3872 4847 Red Hat Asia-Pacific Fax : +61 7 3257 4800 "Everything we know is an illusion, nothing we know is real, nothing real we can know, illusion is what we call reality." Disclaimer: http://apac.redhat.com/disclaimer -- Linux-UTF8: i18n of Linux on all levels Archive: http://mail.nl.linux.org/linux-utf8/