2016-11-11 64 views
0

每當某種語言標籤的某個部分需要以某種方式突出顯示時,這裏被認爲是最佳實踐?locallang.xlf中的標籤格式化(通過標籤)

我通常會盡量避免在語言標籤中使用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

對於我來說,有一些可能的選擇,取決於文本的種類。

1)避免HTML儘可能

2)如果這個HTML圍繞任何參數包裹,移動HTML出來,並用它作爲參數爲<f:translate />視圖助手。

3.)有時很難使用參數,因爲翻譯只是不同的,然後對不同的語言使用不同的partials/sections,並且不使用任何語言文件。

4.)我使用CDATA方法。

+1

我喜歡複雜情況下的方法#3。感謝您的輸入) –

+0

也許要標記爲解決方案然後;) –

1

的除了喬治·林格答案(其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

如果需要在目標語言中更改文本順序,翻譯人員可以移動這些標籤,如果目標語言中沒有意義,他們可以刪除整個紫色標籤:例如某些複雜的漢字看起來很粗糙。他們將無法刪除部分標籤。

+0

謝謝你的提示。順便說一句,我試圖做一點不同:使XLIFF內部的蓋子,像解釋[在它的文檔](http://docs.oasis-open.org/xliff/v1.2/xliff-profile-html/ xliff-profile-html-1.2-cd02.html#Structure_MappingElements),但沒有成功。但不是爲什麼:是不是SimpleXML,它不會做翻譯或TYPO3 xliff解析器缺少這樣的支持? –

+0

我同意你的觀點:如果內置這樣的功能會很好。不幸的是,翻譯往往是開發者最後想到的。 – Jenszcz

1

一個可能的解決方案可能是在翻譯字符串中使用參數。這些參數可以用包裝在標籤中的翻譯後的字符串填充(通過TS或流體)。這可能會導致非常複雜的翻譯處理,因爲字符串被分解爲多個字符串(可能會部分鬆散上下文)。

另一種解決方案可以是用於其在端部代替(和可能爲不同的設備而異)的代碼中使用的標記物(如###B###<b>###_B###</b>)。這也很複雜,需要一個良好的配置,並創造出更多的標記。