angular-gettext没有工作,显示没有错误

时间:2018-03-01 16:50:24

标签: angular gruntjs angular-gettext grunt-angular-gettext

我三天前为一家当地公司开了一个新的Angular项目,他们今天告诉我他们希望他们的网络应用程序是法语和英语。

所以我找到了angular-gettext模块,这似乎是一个很好的解决方案。

我跟着他们official tutorial(使用Grunt),尽管遇到了一些困难,我找到了没有错误的方法......但它仍然不适合我!

我在index.html文件中添加了一些带有translate指令的文本,以便测试我的配置。实际上,此文件不包含除<app-root></app-root>应答之外的任何内容。

因此,让我的Gruntfile.js及其两项任务开始:

module.exports = function(grunt) {

  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),

    nggettext_extract: {
      pot: {
        files: {
          'po/template.pot': ['src/*.html'] // the index.html file is here
        }
      },
    },

    nggettext_compile: {
      all: {
        options: {
          module: 'myApp'
        },
        files: {
          'src/js/translations.js': ['po/*.po']
        }
      },
    },
  });

  grunt.loadNpmTasks('grunt-angular-gettext');

  // Default task(s).
  grunt.registerTask('extract', ['nggettext_extract']);
  grunt.registerTask('extract', ['nggettext_compile']);
  grunt.registerTask('default', []);
};

我在myApp文件中使用以下代码声明了app.js模块:

var app = angular.module("myApp", [gettext]);

app.run(function (gettextCatalog) {
  gettextCatalog.setCurrentLanguage('fr');
});

因此,当我运行grunt nggettext_extractgrunt nggettext_compile命令时,一切正常,我的po folder包含我的template.pot文件,js folder包含我的translations.js {1}}文件。我使用poedit software进行了翻译,结果是我的fr.po文件。

这是我生成的translations.js文件:

angular.module('myApp').run(['gettextCatalog', function (gettextCatalog) {
  /* jshint -W100 */
  gettextCatalog.setStrings('fr', {"Welcome ladies and gentleman":"Messieurs et Mesdames bienvenues","Welcome to the test zone":"Bienvenue dans la zone de test"});
  /* jshint +W100 */
}]);

本教程希望我在<script>文件中添加index.html,但使用angular-cli我将其添加到angular-cli.json文件中:

"scripts": [
    "../node_modules/chart.js/dist/Chart.js",
    "../node_modules/hammerjs/hammer.min.js",
    "../node_modules/angular-gettext/dist/angular-gettext.min.js",
    "./js/translations.js",
    "./app.js"
  ],

所以对我来说,我做了一切,我的句子应该用法语而不是英语,但它不起作用......如果你能帮助我,那就太好了!

1 个答案:

答案 0 :(得分:0)

Angular-gettext适用于AngularJS(即1.x),不适用于Angular(即2+)。 NG和angular-cli具有令人敬畏的内置i18n支持,请参阅:https://angular.io/guide/i18n