【问题标题】:What is the best practise when we need HTML inside a translation?当我们在翻译中需要 HTML 时,最佳实践是什么?
【发布时间】:2015-01-27 15:08:28
【问题描述】:

我正在使用 Yii2,我遇到的情况是我的页面中有一些标签,由两个 HTML 标签分隔,如下所示:

<ul>
    <li>
            <div class="text-small">Users</div>
            <span class="text-uppercase">Overview</span>
    </li>
    <li>
            <div class="text-small">Manage</div>
            <span class="text-uppercase">Users</span>
    </li>
</ul>

我可以将字符串分成两个变量,例如“tab_1_line_1”、“tab_1_line_2”、[...],但我猜它并没有真正遵循 i18n 标准。

但是我猜下面的例子也不是很好:

<ul>
    <li>
            <?php \Yii::('app', 'menu_users_overview'); ?>
    </li>
    <li>
            <?php \Yii::('app', 'menu_manage_users'); ?>
    </li>
</ul>

app.php:

<?php
    return [
        'menu_users_overview' => '<div class="text-small">Users</div><span class="text-uppercase">Overview</span>',
        'menu_manage_users' => '<div class="text-small">Manage</div><span class="text-uppercase">Users</span>',
    ];
?>

我应该如何处理这种情况?

【问题讨论】:

  • “我猜它并没有真正遵循 i18n 标准”你为什么这么说?这实际上是唯一合乎逻辑的解决方案,因为有时您会想要
    Product Category
    Overview

标签: php internationalization yii2


【解决方案1】:

您的翻译不应包含任何 html,否则当您支持 20 种语言并决定更改布局时,您必须去重写翻译周围的所有 html。

如果您对当前的布局一无所知,那么另一种解决方案是使用数组的翻译:

<?php
    return [
        'menu_users_overview' =>  ["Users", "Overview"],
        'menu_manage_users' => ["Manage", "Users"],
    ];
?>

然后在你的 HTML 中使用索引来获取正确的部分,这样你的翻译只是处理实际的单词而不是你的页面结构。

【讨论】:

  • 你知道这是否是 Yii 目前支持的解决方案吗?或者我应该为该函数编写一个包装器?如果您确实需要翻译翻译字符串,您会这样命名它们吗?
猜你喜欢
  • 1970-01-01
  • 2011-05-27
  • 1970-01-01
  • 2015-03-29
  • 1970-01-01
  • 2013-07-05
  • 2011-06-07
  • 1970-01-01
  • 2016-11-05
相关资源
最近更新 更多