我有一个 Drupal 7 站点,需要输出一个用 PHP 编写的小型日历控件。它输出月份名称和带有天数的表格。表有一个带有工作日名称的标题:'Mon'、'Tue'。
我需要使用在 Drupal 中选择的当前站点语言来输出它。这样做的最佳方法是什么?
我有一个 Drupal 7 站点,需要输出一个用 PHP 编写的小型日历控件。它输出月份名称和带有天数的表格。表有一个带有工作日名称的标题:'Mon'、'Tue'。
我需要使用在 Drupal 中选择的当前站点语言来输出它。这样做的最佳方法是什么?
在 Drupal 中,用于翻译字符串的函数是t()。
当您启用非英语语言时,传递给的文字字符串将t()
替换为翻译文件中可用的翻译。如果工作日短名称没有翻译,则可以在 admin/config/regional/translate/translate 上添加翻译。
由于翻译系统是在 Drupal 中实现的,因此它仅在传递给的字符串t()
是文字字符串时才起作用。如果模块正在调用传递以下参数之一的函数,则字符串不可翻译。
t('This is a' . 'string that is not translatable')
)t($text_to_translate)
)t(get_string(STRING_ID_ERROR_MESSAGE))
)如果模块托管在 drupal.org 上,那么它可以使用http://localize.drupal.org提供的翻译服务。
默认情况下不添加月份名称(长格式)进行翻译。
这将是添加这些的优雅解决方案:
function monthname_install() {
$months = array(
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December',
);
$options['context'] = 'Long month name';
foreach($months as $m) {
t($m, array(), $options);
}
drupal_set_message(t('Month names have been made available for translation. The rest is up to the translation team :-)'));
}
Erlendoos,我尝试了您的解决方案,但对我不起作用。
我终于结束了使用 locale() 而不是 t(),如下所示:
function monthname_install() {
$months = array(
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December',
);
foreach($months as $m) {
locale( $m, 'Long month name' );
}
drupal_set_message(t('All long month names available for translation.'));
}
https://api.drupal.org/api/drupal/modules%21locale%21locale.module/function/locale/7
完成上述操作后,我已经有了要翻译的月份名称。
请注意,如果您启用了“存档”示例视图,并使用该视图放置块或页面,则视图使用的每个名称都可以用于翻译。但是在“新安装的”drupal 中,您必须在 .install 文件中运行上述内容才能翻译字符串。
希望这可以帮助像我一样遇到同样问题并且尝试上述解决方案但没有成功的人。