...and sorry for the much-more-than-usual typo count :)<div><br></div><div>K.<br><br><div class="gmail_quote">On Mon, Nov 24, 2008 at 3:36 PM, Kristóf KOVÁCS <span dir="ltr">&lt;<a href="mailto:kristof.kovacs@onlineprojects.hu">kristof.kovacs@onlineprojects.hu</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Hello Tigers,<div><br></div><div>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).</div>


<div><br></div><div>For example, in&nbsp;ActivityEditView.tpl there is the following code:</div><div><br></div><div><div>&lt;input title=&quot;{$APP.LBL_ADD_NEW} {$APP.Contact}&quot; .....</div><div><br></div><div>And this shows a button called &quot;Add Contact&quot;.&nbsp;It seems all well since &quot;$APP.LBL_ADD_NEW&quot; is &quot;Add&quot; and &quot;$APP.Contact&quot; is &quot;Contact&quot;.&nbsp;</div>


<div><br></div><div>But &quot;Add Contact&quot; in German is &quot;Kontakt hinzufügen&quot; (notice that the words are in a different order). Now we have a problem since &quot;{$APP.LBL_ADD_NEW} {$APP.Contact}&quot; can not be forced to display this, and saying &quot;hinzufügen Kontakt&quot; does not sound quite right (it sounds very bad indeed).</div>


<div><br></div><div>Translation quirks can circumvent some of such problems (one could write &quot;Neue Contact&quot;), but often these strings are reused at other parts of the code, and fixing it in one place often destroys grammar at other places.</div>


<div><br></div><div>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&#39;m thinking along the lines of something like this:</div>


<div><br></div><div><div>{a_smarty_printf_function $APP.ADD_NEW_SOMETHING_FORMATSTRING,&nbsp;$APP.LBL_ADD_NEW, $APP.Contact}</div><div><br></div><div>Then, in english, the .lang file would read:</div><div>[...]</div><div>&#39;LBL_ADD_NEW&#39; = &#39;Add&#39;,</div>


<div>&#39;Contact&#39; =&gt; &#39;Contact&#39;,</div><div>&#39;ADD_NEW_SOMETHING_FORMATSTRING&#39; =&gt;&nbsp;&quot;&#39;%s %s&quot;, // Very simple format string, no surprise here</div><div>[...]</div><div><br></div><div>And in german, it would be:</div>

<div><div>[...]</div>
<div>&#39;LBL_ADD_NEW&#39; = &#39;Hinzufügen&#39;,</div><div>&#39;Contact&#39; =&gt; &#39;Kontakt&#39;,</div><div>&#39;ADD_NEW_SOMETHING_FORMATSTRING&#39; =&gt;&nbsp;&quot;&#39;%2$s %1$s&quot;, // Notice how I used &quot;1$&quot; and &quot;2$&quot; to access arguments in different order</div>

<div>[...]</div><div><br></div><div>I don&#39;t feel it elegant enough (but more elegant than the original), so comments, suggestions, ideas, better solutions are very much welcome.&nbsp;Please all brainstorm this ever the next coffee. :o)&nbsp;</div>

<div><br></div><font color="#888888"><div>Kristóf</div>
</font></div></div></div>
</blockquote></div><br></div>