【问题标题】:Drupal.t doesn't show up among translationsDrupal.t 未出现在翻译中
【发布时间】:2011-07-12 12:31:58
【问题描述】:

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

【问题讨论】:

    标签: javascript jquery drupal drupal-6 translation


    【解决方案1】:

    我知道你的帖子已经很老了,但我的回答可能对其他人有所帮助。

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

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

    如果你赶时间,你可以简单地在一个虚拟节点的主体中使用 PHP 输入格式

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        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

        【讨论】:

          【解决方案4】:

          ¿你在压缩 js 吗?检查您网站的性能部分。

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

          【讨论】:

            猜你喜欢
            • 2021-12-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-11-19
            • 1970-01-01
            • 2014-02-02
            • 1970-01-01
            相关资源
            最近更新 更多