首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角11 -找不到手动创建的区域设置文件

角11 -找不到手动创建的区域设置文件
EN

Stack Overflow用户
提问于 2021-06-04 22:06:14
回答 1查看 531关注 0票数 1

我有一个角11应用程序,我们支持14种语言,包括萨摩亚语和塔加洛语,分别有语言设置和tl。角没有这些区域设置文件。我已经创建并部分翻译了我自己的文件。但是,在构建过程中,我会收到以下错误消息:

代码语言:javascript
复制
Locale data for 'sm' cannot be found.  No locale data will be included for this locale.
Locale data for 'tl' cannot be found.  No locale data will be included for this locale.

angular.json文件包含:

代码语言:javascript
复制
...
      "i18n": {
        "sourceLocale": {
          "code": "en",
          "baseHref": "myApp/en/"
        },
        "locales": {
          "de": {
            "translation": "src/i18n/messages.de.xlf",
            "baseHref": "myApp/de/"
          },
          "sm": {
            "translation": "src/i18n/messages.sm.xlf",
            "baseHref": "myApp/sm/"
          },
          "tl": {
            "translation": "src/i18n/messages.tl.xlf",
            "baseHref": "myApp/tl/"
          },
...

为了将角度指向区域设置文件,我在app.module.ts文件的顶部添加了以下行。我的个性化区域设置文件位于我的应用程序中显示的路径(在app文件夹中)。

代码语言:javascript
复制
import { registerLocaleData } from '@angular/common';
import localeSm from './pb-locales/sm';
import localeTl from './pb-locales/tl';

registerLocaleData(localeSm, 'sm');
registerLocaleData(localeTl, 'tl');

我在网上找不到一个关于这个的参考资料。

UPDATE:我将使用Pilipino (菲律宾),也就是“fil”代替他加禄作为角度支持菲律宾。

sm.js文件是en.js文件的副本,但有一些更改。角质找不到它:

代码语言:javascript
复制
/**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
(function (factory) {
    if (typeof module === "object" && typeof module.exports === "object") {
        var v = factory(null, exports);
        if (v !== undefined) module.exports = v;
    }
    else if (typeof define === "function" && define.amd) {
        define("@angular/common/locales/sm", ["require", "exports"], factory);
    }
})(function (require, exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
// THIS CODE IS GENERATED - DO NOT MODIFY
// See angular/tools/gulp-tasks/cldr/extract.js
    var u = undefined;
    function plural(n) {
        var i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0;
        if (v === 0 && (i === 1 || i === 2 || i === 3) ||
            v === 0 && !(i % 10 === 4 || i % 10 === 6 || i % 10 === 9) ||
            !(v === 0) && !(f % 10 === 4 || f % 10 === 6 || f % 10 === 9))
            return 1;
  return 5;
}

exports.default = [
  'sm',
  [['a', 'p'], ['AM', 'PM'], u],
  [['AM', 'PM'], u, u],
  [
    ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
    ['Aso Sa', 'Aso Gafua', 'Aso Lua', 'Aso Lulu', 'Aso Tofi', 'Aso Faralie', 'Aso Tonaʻi'],
    ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']
  ],
  u,
  [
    ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
    [
      'Ianuari', 'Fepuari', 'Mati', 'Aperila', 'Me', 'Iuni', 'Iulai', 'Auguso', 'Setema',
      'Oketopa', 'Novema', 'Tesema'
    ]
  ],
  [
    ['E', 'P', 'M', 'A', 'M', 'Hun', 'Hul', 'Ago', 'Set', 'Okt', 'Nob', 'Dis'],
    ['Ene', 'Peb', 'Mar', 'Abr', 'May', 'Hun', 'Hul', 'Ago', 'Set', 'Okt', 'Nob', 'Dis'],
    [
      'Enero', 'Pebrero', 'Marso', 'Abril', 'Mayo', 'Hunyo', 'Hulyo', 'Agosto', 'Setyembre',
      'Oktubre', 'Nobyembre', 'Disyembre'
    ]
  ],
  [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']],
  0,
  [6, 0],
  ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'],
  ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'],
  ['{1}, {0}', u, '{1} \'at\' {0}', u],
  ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'],
  ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'],
  'USD',
  '$',
  'US Dollar',
  {},
  'ltr',
  plural
];
});

我已经添加了一个GitHub存储库,可以从它进行测试:https://github.com/DrewShirts/angular-samoan

若要再现问题,请运行脚本build prod

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-18 15:52:46

下面的工作,但是一个黑客。我仍然在寻找一个更好的解决方案,除非对角码执行拉请求。当然,这不是唯一的长期解决办法。

我创建了一个bash脚本,作为构建过程的一部分来运行,该脚本将sm.js文件从项目内部复制到节点_模块/@angular/ project /locales/全局

代码语言:javascript
复制
cp ./src/app/locales/sm.js ./node_modules/@angular/common/locales/global/

然后修改package.json:

代码语言:javascript
复制
"build": "./pre-build-hack.sh && ng build --configuration production --localize"

这不是一个优雅的解决方案,但有效。这也适用于我们的CI/CD平台。

感谢@Eliseo给我们指明了这个解决方案的方向。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67844479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档