Drupal 上下文多语言翻译

PHP in Drupal 7 and 8:

$short_may = t('May');
$long_may = t('May', array(), array('context' => 'Long month name'));

JavaScript in Drupal 7 versions < 7.10:

shortMay = Drupal.t('May');
longMay = .... not possible in JS ....

JavaScript in Drupal 7 versions > 7.9 and Drupal 8:

shortMay = Drupal.t('May');
longMay = Drupal.t('May', {}, {context: "Long month name"});

Translation in Twig templates

使用t(或trans)过滤器可以进行简单的文本翻译,而对于更复杂的场景,例如具有占位符和奇异值的字符串,支持整个{%trans%}块(由Twig i18n扩展定义) /复数组合。

文本
{{ 'Hello Earth.'|trans }}
{{ 'Hello Earth.'|t }}
单数/复数
{% set count = 1 %}
{% trans %}
 Hello star.
{% plural count %}
 Hello {{ count }} stars.
{% endtrans %}
转义字符
{% set string = '&"<>' %}
{% trans %}
 Escaped:
{{ string }}
{% endtrans %}
{% trans %}
 Placeholder:
{{ string|placeholder }}
{% endtrans %}

注释中的翻译

Drupal7
<?php
function file_entity_info() {
 return array(
   'file' => array(
     'label' => t('File'),
     // ...
   ),
 );
}
?>

drupal8
<?php
/**
* Defines the file entity class.
*
* @ContentEntityType(
*   id = "file",
*   label = @Translation("File"),
*   ....
*/

class File {
}
?>