【问题标题】:Extracting strings from JS file with gulp-angular-gettext does not work使用 gulp-angular-gettext 从 JS 文件中提取字符串不起作用
【发布时间】:2016-05-06 13:48:04
【问题描述】:

我使用 angular-gettext-tools 和 @gabegorelick 的 gulp-angular-gettext。 html文件一切正常,但我无法从js文件中提取字符串。我尝试了 gettextCatalog.getString 和 gettext 函数 - 一起和单独 - 没有任何效果。

我的提取代码(smth.js 文件)如下所示:

  $scope.openCreateOfferPopup = function($event, buttonState) {
    $event.preventDefault();
    loadTypes();
    logger('openCreateOfferPopup');
    if (buttonState) {
      var params;
      if (!$rootScope.dashboard.spots || $rootScope.dashboard.spots.length === 0) {
        params = {
          title: 'Spots needed',
          content: gettextCatalog.getString(gettext("Oops! You need to add your spot before creating an offer!"))+
          '<br/>'+gettextCatalog.getString(gettext("Please, click on Create new spot button")),
          buttons: [{
            text: gettextCatalog.getString(gettext("Create spot")),
            href: '',
            'class': '',
            ngClick: 'openCreateSpotPopup($event)',
            ngController: 'SpotsController'
          }, {
            text: gettextCatalog.getString(gettext("cancel")),
            href: '#',
            'class': 'b-close'
          }]
        };
        DialogService.makeDialog(params, $scope);
        return;
      }

我的 gulp 任务如下所示:

import gulp from 'gulp';
import gettext from 'gulp-angular-gettext';
//import debug  from 'gulp-debug';

gulp.task('pot', function () {
    return gulp.src(['src/app/**/*.html','src/app/**/*.js',
            '!src/app/pages/static/acceptable_policy.html','!src/app/pages/static/legal.html',
        '!src/app/pages/static/privacy_policy.html','!src/app/pages/static/refund_policy.html',
        '!src/app/pages/static/terms_of_service.html'])
    //.pipe(debug({title: 'files to translate:'}))
    .pipe(gettext.extract('template.pot', {
        // options to pass to angular-gettext-tools...
    }))
    .pipe(gulp.dest('po/'));
});

我很确定 js 文件已传递给 aangular-gettext-tools - 我使用 gulp-debug 来验证它。

没有错误消息。一切都从 html 中提取,但没有来自 JavaScript 的条目。

你能指出这个问题的根源吗?

我有 gulp-angular-gettext@2.1.0 使用 angular-gettext-tools@2.1.13 和 gulp 4.0.0-alpha.2

【问题讨论】:

    标签: javascript angularjs gulp


    【解决方案1】:

    好的,我找到了罪魁祸首。 Angular-gettext-tools 不适用于 javascript ES7。 我们有一段代码:

    async function loadTypes() {
      if ($rootScope.dashboard.types) return;
    
      const { categories } = await Api.offerTypes();
      $rootScope.dashboard.types = categories;
    }
    

    它在async function 默默地死去。可能是来自angular-gettext-tools 的旧版本的espree 包。

    我要求与 ES7 兼容并在此处打印一些调试信息(以了解由于某些错误而无法翻译文件): https://github.com/rubenv/angular-gettext-tools/issues/140

    现在我们将使用 babel 将我们的 javascript 降级为可处理版本并使用它进行提取。

    更新官方github上的这个问题:

    espree 不支持它,所以我们可能无能为力。什么时候 async/await 是标准化的,会加入 espree,我们应该 支持它,无需任何更改。在那之前,使用像 babel 在调用 angular-gettext 之前。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-15
      • 1970-01-01
      • 1970-01-01
      • 2014-10-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多