[Vtigercrm-developers] A translation question (i18n)

Kristóf KOVÁCS kristof.kovacs at onlineprojects.hu
Mon Nov 24 07:34:00 PST 2008

Smarty is theoretically extensible, I'm thinking about using
Smarty.register_function(...), not hacking into the Smarty base, of course.

Maybe something more general like

{vtiger_translate $APP.ADD_NEW $APP.Contact}


'Contact' => 'Contact',
'ADD_NEW' => 'Add %s',

'Contact' => 'Kontakt',
'ADD_NEW' => '%s Hinzufügen',

What would you think?

(In the process, introducing new context based (not reused) keys is also a
must-have, just as you say.)


On Mon, Nov 24, 2008 at 4:25 PM, Prasad <prasad at vtiger.com> wrote:

> Hi Kristof,
> I would suggest not adding too much hack to any Smarty functions it will
> pose difficulty to upgrade the library later.
> Coming up with context based language keys is a way to go (as I can think
> of now).
> We need to clean up TPL files in the beginning and add required language
> translation key this will make sure other
> language translators put in proper values based on the context.
> Regards,
> Prasad
> vtiger Team
> On 11/24/08, Kristóf KOVÁCS <kristof.kovacs at onlineprojects.hu> wrote:
>> Hello Prasad,
>> thanks for your answer! Of course, I don't wish to force a language
>> cleanup on your team. :) I'm merely thinking about developing the
>> foundation, the infrastructure for such a change, and then, I hope,
>> individual translators of different languages would do the modifications in
>> both the TPL and the language files. I would certainly do our own part,
>> Hungarian translation requires different word order at several places.
>> But I want to discuss the concepts with you guys, since for such a change,
>> it requires consensus (I also would like to hear opinions from veteran
>> translators of the project). Also it would be very bad if our development
>> tree would diverge from yours, both in terms of maintenance (for us), and in
>> opportunity lost (for everybody).
>> Prasad, we all know and trust you as one of the best core developers, so
>> just one question: what do You say, just from the top of your head, would
>> there be any better solution for the problem, or should we go think forward
>> with the "added-Smarty-printf-function" solution? (Would you accept into the
>> codebase the patches we would be starting to send in of modified TPL files
>> and language files?)
>> Kristóf
>> On Mon, Nov 24, 2008 at 3:52 PM, Prasad <prasad at vtiger.com> wrote:
>>> Hi Kristof,
>>> This issues has been brought up earlier as well. To make the translation
>>> clean up all-over the product it could
>>> take more effort both in terms of development and validation. Currently
>>> we are focusing on getting in new features
>>> as we go along we can better plan for language cleanup's as well. This
>>> give us more focused work items.
>>> We would appreciate community help in identifying such language or
>>> translation issues.
>>> Regards,
>>> Prasad
>>> On 11/24/08, Kristóf KOVÁCS <kristof.kovacs at onlineprojects.hu> wrote:
>>>> Hello Tigers,
>>>> I was talking with Dávid of CafeOpen about vTiger translations, and
>>>> there is one issue which my team often faces with, and this is word order.
>>>> Let me illustrate it with an example (using German instead of Hungarian to
>>>> make it more clear, but the concept is the same).
>>>> For example, in ActivityEditView.tpl there is the following code:
>>>> <input title="{$APP.LBL_ADD_NEW} {$APP.Contact}" .....
>>>> And this shows a button called "Add Contact". It seems all well since
>>>> "$APP.LBL_ADD_NEW" is "Add" and "$APP.Contact" is "Contact".
>>>> But "Add Contact" in German is "Kontakt hinzufügen" (notice that the
>>>> words are in a different order). Now we have a problem since
>>>> "{$APP.LBL_ADD_NEW} {$APP.Contact}" can not be forced to display this, and
>>>> saying "hinzufügen Kontakt" does not sound quite right (it sounds very bad
>>>> indeed).
>>>> Translation quirks can circumvent some of such problems (one could write
>>>> "Neue Contact"), but often these strings are reused at other parts of the
>>>> code, and fixing it in one place often destroys grammar at other places.
>>>> One idea would be to use printf()-like format strings to correct such
>>>> issues, even if it may require an introduction of a now Smarty function. I'm
>>>> thinking along the lines of something like this:
>>>> {a_smarty_printf_function
>>>> Then, in english, the .lang file would read:
>>>> [...]
>>>> 'LBL_ADD_NEW' = 'Add',
>>>> 'Contact' => 'Contact',
>>>> 'ADD_NEW_SOMETHING_FORMATSTRING' => "'%s %s", // Very simple format
>>>> string, no surprise here
>>>> [...]
>>>> And in german, it would be:
>>>> [...]
>>>> 'LBL_ADD_NEW' = 'Hinzufügen',
>>>> 'Contact' => 'Kontakt',
>>>> 'ADD_NEW_SOMETHING_FORMATSTRING' => "'%2$s %1$s", // Notice how I used
>>>> "1$" and "2$" to access arguments in different order
>>>> [...]
>>>> I don't feel it elegant enough (but more elegant than the original), so
>>>> comments, suggestions, ideas, better solutions are very much welcome. Please
>>>> all brainstorm this ever the next coffee. :o)
>>>> Kristóf
>>>> _______________________________________________
>>>> Reach hundreds of potential candidates - http://jobs.vtiger.com
>>> _______________________________________________
>>> Reach hundreds of potential candidates - http://jobs.vtiger.com
>> _______________________________________________
>> Reach hundreds of potential candidates - http://jobs.vtiger.com
> _______________________________________________
> Reach hundreds of potential candidates - http://jobs.vtiger.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.vtigercrm.com/pipermail/vtigercrm-developers/attachments/20081124/df88a3b8/attachment-0003.html 

More information about the vtigercrm-developers mailing list