Drupal.t没有出现在翻译中

时间:2011-07-12 12:31:58

标签: javascript jquery drupal drupal-6 translation

我正在尝试在Drupal网站上使用JavaScript进行翻译。我正在使用js函数Drupal.t()。一切似乎都有效; Drupal被加载,函数被调用,占位符被替换,但翻译不会发生。单词保留为英文,单词不会添加到翻译数据库中。有谁知道为什么会这样,以及如何解决它?

4 个答案:

答案 0 :(得分:2)

我知道你的帖子相当陈旧,但我的回答可能有助于其他人。

我注意到Drupal.locale.strings没有填充JavaScript调用。

所以我通常只是创建一部分PHP代码,在服务器端执行此操作。您可以在PHP代码中的任何位置执行此操作。但最好的方法是在您编码的模块中执行此操作。然后使用 Potx 模块将其导出更容易,这样您就可以将字符串放在一些*.po文件中,以便以后使用模块。

如果您赶时间,可以使用 PHP输入格式在虚拟节点的主体中进行操作(只需执行“预览”):

<?php

print t('Example : %variable', array('%variable' => 'test'));

?>

完成此操作后,您应该能够找到您的字符串并在管理页面中进行翻译。

要重新生成JavaScript文件,您必须清除所有缓存(使用Devel或访问模块页面)。

答案 1 :(得分:1)

不确定javascript部分,但我已经使用了很多功能。如果您希望字符串显示在翻译表中,您必须先用两种不同的语言加载相应的页面,然后才能翻译它们。希望有所帮助。

答案 2 :(得分:0)

Drupal.t()功能非常小,所以我打赌我们可以在这里剖析它。

function (str, args) {
  // Fetch the localized version of the string.
  if (Drupal.locale.strings && Drupal.locale.strings[str]) {
    str = Drupal.locale.strings[str];
  }

  if (args) {
    // Transform arguments before inserting them
    for (var key in args) {
      switch (key.charAt(0)) {
        // Escaped only
        case '@':
          args[key] = Drupal.checkPlain(args[key]);
        break;
        // Pass-through
        case '!':
          break;
        // Escaped and placeholder
        case '%':
        default:
          args[key] = Drupal.theme('placeholder', args[key]);
          break;
      }
      str = str.replace(key, args[key]);
    }
  }
  return str;
}

因此,您可以看到它检查Drupal.locale.strings以查找当前语言环境的可翻译字符串。你能在Drupal网站上弹出一个控制台并输入Drupal.locale并查看它吐出的内容吗?

在Drupal中,要添加新语言,必须先启用Locale模块。你做到了吗?

接下来,您必须通过admin / build / translate上的翻译界面导入您的语言。你做到了吗?

在这里,您可以看到我导入了法语和德语:http://grimhappy.com/i/ce75ca.png

答案 3 :(得分:0)

¿你在压缩js吗?查看您网站的效果部分。

清除缓存现在应该使用正确的翻译重新生成js。