Sure, I don't mind.
The problem with this is that different languages will have different sentence order, so if we want it to be easily translatable, we can't really split sentences with a +, like we've been doing so far.
For example, given the following sentence (npc/jobs/2-2/alchemist.txt:565)
Code:
mes "How much do"; mes "12 Red Potions,"; mes "1 Butterfly Wing"; mes "and 5 Fly Wings cost"; mes "after a 24 % discount?";
If we change it to:
Code:
mes "How much do"; mes "12 " + getitemname(Red_Potion) + ","; mes "1 " + getitemname(Wing_Of_Butterfly); mes "and 5 "+ getitemname(Wing_Of_Fly) + " cost"; mes "after a 24 % discount?";
then it would generate the strings:
Code:
"How much do";"12 "",""1 ""and 5 "" cost""after a 24 % discount?"
Translating them individually to another language (for example, Italian), would get you this:
Code:
"Quanto";"12 "",""1 ""e 5 "" costano""con uno sconto del 24 %?"
which produces the (broken) sentence:
Code:
mes "Quanto"; mes "12 " + getitemname(Red_Potion) + ","; mes "1 " + getitemname(Wing_Of_Butterfly); mes "e 5 "+ getitemname(Wing_Of_Fly) + " costano"; mes "con uno sconto del 24 %?";
while the correct sentence should look like:
Code:
mes "Quanto vengono a costare"; mes "12 " + getitemname(Red_Potion) + ","; mes "1 " + getitemname(Wing_Of_Butterfly); mes "e 5 "+ getitemname(Wing_Of_Fly); mes "con uno sconto del 24 %?";
This would be easily translatable if the sentence was written in this form:
Code:
mes sprintf(_("How much do 12 %s, 1 %s and 5 %s cost after a 24%% discount?"), getitemname(Red_Potion), getitemname(Wing_Of_Butterfly), getitemname(Wing_Of_Fly));
because it'd produce just one translatable sentence:
Code:
"How much do 12 %s, 1 %s and 5 %s cost after a 24%% discount?"
which could be easily translated to:
Code:
"Quanto vengono a costare 12 %s, 1 %s e 5 %s con uno sconto del 24%%?"
Edit: even better would be to implement positional tokens (%1, %2, %3, etc) instead of "dumb" %s. In some cases it might be necessary to reorder the translated elements in a way that can't be achieved with a simple %s. But as a beginning, a simple sprintf would be enough.