Templates 如何在prestashop';什么是聪明的翻译?
我找不到解决办法。我要做的是翻译这个:Templates 如何在prestashop';什么是聪明的翻译?,templates,smarty,translation,prestashop,smarty3,Templates,Smarty,Translation,Prestashop,Smarty3,我找不到解决办法。我要做的是翻译这个: se stai inserendo un indirizzo per consegna all'interno dell'area <span class=orange>EXPO</span> se stai inserendo un indirizzo per consegna all'interno dell'地区博览会 为此: If your delivery address is in the <span clas
se stai inserendo un indirizzo per consegna all'interno dell'area <span class=orange>EXPO</span>
se stai inserendo un indirizzo per consegna all'interno dell'地区博览会
为此:
If your delivery address is in the <span class=orange>EXPO</span> area
如果您的送货地址在世博园区
如果我使用标签,如下所示:
{l s="se stai inserendo un indirizzo per consegna all'interno dell'area <span class=orange>EXPO</span>"}
{l s=“每届康塞尼亚国际戴尔地区博览会都将举办一次独立展览”}
他们不会被看见。那又怎样呢?试着将HTML排除在翻译字符串之外。您可以通过制作两个字符串来实现这一点:
{l s="se stai inserendo un indirizzo per consegna all'interno dell'area"} <span class="orange">{l s='EXPO'}</span>
{l s=”在所有的“国际戴尔”区域都有一个独立的国家”}{l s='EXPO'}
翻译功能将删除所有html标记,因此您必须使用类似的替代方法
{capture "string"}
{l s="se stai inserendo un indirizzo per consegna all'interno dell'area _h1_EXPO_h2_"}
{/capture}
{$smarty.capture.string|replace:'_h1_':'<span class="orange">'|replace:'_h2_':'</span>'}
{捕获“字符串”}
{l s=“在所有的国际戴尔地区都有一个独立的展览馆{U h1{U h2}”
{/capture}
{$smarty.capture.string | replace:''h1:''''replace:''h2:''replace:
\u h1
和\u h2
在翻译中,它们分别被
和
替换
smarty函数用于将译文转换为变量字符串
,而不是对其进行显示
所以你的英文翻译应该是这样的如果您的送货地址位于世博会区域
Prestashop为此提供了一个未记录的解决方案:
您可以在{l}
函数调用中添加标记
参数。此参数的值是字符串数组。要将此数组中的标记添加到字符串中,需要使用[i]x[/i]
(其中i
是数组中从1开始的标记索引,x
是您希望看到的由标记包围的文本)
例如,如果要在单个翻译行中呈现此字符串:
欢迎您Florian Lemaitre!
我可以使用以下代码:
{ls='[1]欢迎[/1][2]%s[/2]!'sprintf=[$name]标签=[','']}
在您的情况下,您可以使用:
{l s=“每个consegna all'interno dell'area[1]EXPO[/1]”标签=[''']}
您可以在文件
classes/Translate.php
中找到相关代码:
/**
*在转义所有内容之后和显示之前,对翻译执行操作
*/
公共静态函数后处理转换($string,$params)
{
//如果明确提供了标记,我们希望在转义翻译字符串之后使用它们。
如果(!empty($params['tags'])){
foreach($params['tags']作为$index=>$tag){
//使位置从1开始,使其行为类似于%1$d等sprintf位置参数
$position=$index+1;
//提取标记名
$match=array();
如果(preg_match('/^\s*No)在这种情况下我不能。我的例子很清楚:我需要在翻译中移动单词('EXPO'在'area'单词之前和之后),这就是原因。我会更深入地研究,我们甚至可以提出拉取请求,看看它是如何进行的(目标:PrestaShop 1.7)
{assign var="name" value="Bob"}
{l s='[1]Welcome[/1] [2] %s [/2]!' sprintf=[$name] tags=['<strong>', '<i class="name_class">']}
[1]Welcome[/1] [2] Bob [/2]!