Drupal7:为什么t()不起作用?

时间:2018-06-10 14:09:02

标签: drupal drupal-7 translation

我负责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; ...而不是翻译?为什么?

谢谢你:)

1 个答案:

答案 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

相关问题