Zum Inhalt springen

f:translate und f:uri.action link als argument übergeben

Erstellt am 5. Juli 2014 · 1 Antwort · letzte Antwort am 9. Juli 2014

Tags: Frage

Unbekannter Benutzer ·

Hallo,

ich versuche gerade über arguments von f:translate einen Link der durch f:uri.action erstellt wird zu übergeben.

Versucht hatte ich:

<f:translate id="form.login.no.account.yet" source="Login" arguments="{0:{f:uri.action(action:'register')},1:'_self'}" />

bzw. 

<f:translate id="form.login.no.account.yet" source="Login" arguments="{0:'{f:uri.action(action:'register')}',1:'_self'}" />

Die Zeile in meiner XLIFF Datei sieht wie folgt aus:

<trans-unit id="form.login.no.account.yet">
<source>Don't have an account yet <![CDATA[?&nbsp; <a href="{0}" target="{1}" id="register-btn">Create an account</a>]]></source>			
</trans-unit>

Wenn ich einfach nur einen String für {0:'...'} übergebe wird mir der auch ausgegeben, will ich aber den Link durch die f:uri.action dynamisch erstellt haben und den dann übergeben klappt das nicht.
Ich bekomme dann immer die Fehlermeldung:

The argument "arguments" was registered with type "array", but is of type "string"

Habe ich etwas übersehen? Geht das nicht?

Der Grund warum ich das so machen möchte ist einfach der, dass der Link im Text ist und ich es sehr unschön finden würde wenn ich in solchen Fällen den Link aufteilen müsste in mehrere Teile.

Dank euch!

afoeder · · Beste Antwort

Du musst die "inneren" Anführungszeichen escapen, also:

<f:translate [...] arguments="{0: '{f:uri.action(action: \'register\')}', 1: '_self'}" />

(beachte die \ vor 'register'). So müsste es gehen.