我负责Drupal7上的旧网站,我知道的太少了。这个网站是一个双语网站英语/法语。 所以在模板中,我添加了一些字段,其中包含需要翻译的字符串:
<div class="offer_content">
<span class="title" style="text-transform:uppercase;font-size:18px;"><?php echo t('Our Firma').(': ');?></span>
<?php echo html_entity_decode(t($fields['field_presentation_societe']->content)); ?>
<span class="title" style="text-transform:uppercase;font-size:18px;"><?php echo t('Job presentation').(': ');?></span>
<?php echo html_entity_decode(t($fields['body']->content));?>
<span class="title" style="text-transform:uppercase;font-size:18px;"><?php echo t('Skills').(': ');?></span>
<?php echo html_entity_decode(t($fields['field_profil_recherche']->content)); ?>
然而,在法语中,这让我一直在展示&#34;我们的Firma&#34;和#34;技能&#34; ...而不是翻译?为什么?
谢谢你:)
答案 0 :(得分:1)
变量无法通过设计进行翻译。请参阅t
-docs:
翻译变量
您不应该使用
t()
来翻译变量,例如调用t($text);
,除非变量所持有的文本已通过t() 其他地方(例如,$ text是几个翻译的文字字符串之一) 数组)。永远不要打电话
尤为重要t($user_text);
,其中$ user_text是用户输入的一些文本 - 这样做可以 导致跨站点脚本和其他安全问题。但是,你 可以在字符串中使用变量替换,以放置变量文本 例如用户名或链接URL到翻译文本。变量 替换看起来像这样:
$text = t("@name's blog", array( '@name' => format_username($account), ));
基本上,您可以将@name等变量放入字符串中,然后将t()放入 将在翻译时替换他们的消毒价值。 (见 上面引用的本地化API页面和文档 format_string()有关如何在您的。中定义变量的详细信息 然后,翻译人员可以根据需要重新排列字符串 语言(例如,在西班牙语中,它可能是&#34;博客de @ name&#34;)。
所以你可以做的是使用Entity Translation来使这些字段可以翻译。然后,您就可以翻译您的内容,并根据匹配语言中添加到字段中的值来打印正确的翻译。
要使用i18n_string()
,请参阅https://drupal.stackexchange.com/a/184584