我在@gabegorelick的gulp-angular-gettext中使用angular-gettext-tools。 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;
      }

我的任务是这样的:

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中没有任何条目。

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

我有使用[email protected]和gulp 4.0.0-alpha.2的[email protected]

最佳答案

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

async function loadTypes() {
  if ($rootScope.dashboard.types) return;

  const { categories } = await Api.offerTypes();
  $rootScope.dashboard.types = categories;
}

它无声地死在async function上。可能是由于espreeangular-gettext-tools软件包的旧版本引起的。

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

现在,我们将使用babel将javascript降级为可处理的版本,并将其用于提取。

从官方github更新到这个问题:

关于javascript - 使用gulp-angular-gettext从JS文件中提取字符串不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37074070/

10-12 23:34