标签在locallang.xlf中格式化(通过标签)

时间:2016-11-11 17:10:37

标签: typo3 xliff

每当某个语言标签的某个部分需要以某种方式突出显示时,这里的最佳做法是什么?

我通常会尽量避免使用语言标签中的html标签,方法是将标签拆分为零件并将其包装到Fluid中的相应标签中。

在最坏的情况下,标签用CDATA包裹:

<trans-unit id="my.label">
    <source><![CDATA[Here comes a <strong>bold text</strong> and then <em>italic</em> and now <span class="fancy">fancy styled</span> stop]]></source>
</trans-unit>

但这会混合内容和演示文稿,这可能会在CSS重构并重命名某些类时带来痛苦。

我想到的另一个解决方案是将所有可能包含html标签的文本从XLF移动到插件的FlexForm RTE字段或带有RTE字段的某些配置记录。但它看起来也很像黑客。

你如何解决这个问题?

3 个答案:

答案 0 :(得分:4)

对我来说,有一些可能的选择,具体取决于文字的类型。

1。)尽可能避免使用HTML

2。)如果此HTML包含在任何参数中,请移出HTML并将其用作<f:translate /> ViewHelper的参数。

3.)有时很难使用参数,因为翻译只是不同,然后我对不同的语言使用不同的部分/部分,并且不使用任何语言文件。

4.。)我使用CDATA方法。

答案 1 :(得分:1)

Georg Ringer的答案的补充(如果可能的话,其第1点肯定是要走的路):

5.使用XLIFF提供的功能。 XLIFF 1.2具有在可翻译内容中标记标签的元素 - 确切地说,它具有太多这样的元素。您的示例的一种可能表示是

<trans-unit id="my.label">
    <source>Here comes a <bpt id="1">&lt;strong&gt;</bpt>bold text<ept id="1">&lt;/strong&gt;</ept> and then <bpt id="2">&lt;em&gt;</bpt>italic<ept id="2">&lt;/em&gt;</ept> and now <bpt id="3">&lt;span class=&quot;fancy&quot;&gt;</bpt>fancy styled<ept id="3">&lt;span&gt;</ept> stop</source>
</trans-unit>

这在代码中看起来很混乱,但它的优势在于,XLIFF感知翻译编辑器会以易于使用的方式向翻译人员提供此功能,如下所示:

XLIFF segment screenshot

如果需要在目标语言中更改文本顺序,翻译人员将能够移动这些标记,并且如果它们在目标语言中没有意义,他们可以整体删除这些紫色标记:例如一些复杂的汉字看起来很粗壮。他们也无法删除部分标签。

答案 2 :(得分:1)

一种可能的解决方案可能是在翻译字符串中使用参数。这些参数可以用翻译的字符串填充,这些字符串包含在标签中(通过TS或流体)。这可能导致非常复杂的翻译处理,因为字符串被分解为多个字符串(可能部分松散上下文)。

另一个解决方案可能是使用标记(例如###B###用于<b>###_B###用于</b>)用于最后替换的标记(可以使用因不同设备而异)。这也很复杂,需要一个良好的配置,并发明类似进一步标记的东西。