Jazykový překlad řetězců s HTML

před 8 měsíci

Milo
Nette Core | 1149
+
0
-

Jak řešíte překlady vět, které obsahují HTML? Například mám v šabloně:

Pro přístup k aplikaci <b>{$title}</b> se prosím přihlaste.

Řeším to vlastním filtrem, který vrací Utils\Html a jakýmisi modifikátory asi takhle…

{='Pro přístup k aplikaci %b se prosím přihlaste.'|htmlTranslate: $title}

ale říkám si, jestli není něco šikovnějšího.

Pro šablony, kde je HTML spousta už mám samostatné jazykové mutace šablony, ale pro takhle kraťoučké věty se mi to nechce udržovat.

před 8 měsíci

Polki
Backer | 169
+
-1
-

Používám Kdyby/Translation a tam pak mám něco jako:

texts.neon:

...
foo:
    bar: 'Mezisoučet <span class="item-price" data-price="%price%">%price%<span>Kč</span></span>'
...

a pak:

default.latte

...
{_texts.foo.bar, ['price' => $subtotal]|noescape}
...

před 8 měsíci

Felix
Nette Core | 948
+
0
-

Milo napsal(a):

Zkousim v posledni aplikovat markdown do prekladu. Nemusis tam davat HTML, ale presto je potreba na to myslet.

před 7 měsíci

Milo
Nette Core | 1149
+
0
-

Snoubí se tu tři věci. Překlad, zvýraznění části přeloženého textu a dosazení proměnné do textu. K vlastním placeholderům jsem došel po zkušenosti. Texty mi překládají externě a syntaxe je potřeba extra jednoduchá. Ikdyž mně je to jedno, pro překladatele je rozdíl mezi:

Pro přístup k aplikaci <b>%1</b> se prosím přihlaste.
Pro přístup k aplikaci **%1** se prosím přihlaste.
Pro přístup k aplikaci %b se prosím přihlaste.

Navíc jsem po delší době došel k tomu, že potřebuju jen 4 placeholdery:

  • %t – plain text
  • %b – tučně
  • %i – kurziva
  • %m – muted

V signatuře metody Nette\Localization\ITranslator::translate() dojde ke změně na (string $message, ...$args). Chvilku jsem zkoušel:

{_'Pro přístup k aplikaci %b se prosím přihlaste.', [html => true, $title]}

ale moc mi nesedí, že by tu expanzi modifikátorů měl dělat translátor. Nevím přesně proč. Tak jsem zkusil:

{='Pro přístup k aplikaci %b se prosím přihlaste.'|translate|hprint:$title}

Jenže tam se zase narazí, když se pro překlad používá pseudo text, aby překládané texty byly pohromadě pro všechny jazyky.

{_'oauth.welcome-message'}  {* <-- chybí tam hprint filtr, nebo ne? *}

Nic jiného mě zatím nenapadlo.