我有一个角11应用程序,我们支持14种语言,包括萨摩亚语和塔加洛语,分别有语言设置和tl。角没有这些区域设置文件。我已经创建并部分翻译了我自己的文件。但是,在构建过程中,我会收到以下错误消息:
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文件包含:
...
"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文件夹中)。
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文件的副本,但有一些更改。角质找不到它:
/**
* @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。
发布于 2021-06-18 15:52:46
下面的工作,但是一个黑客。我仍然在寻找一个更好的解决方案,除非对角码执行拉请求。当然,这不是唯一的长期解决办法。
我创建了一个bash脚本,作为构建过程的一部分来运行,该脚本将sm.js文件从项目内部复制到节点_模块/@angular/ project /locales/全局
cp ./src/app/locales/sm.js ./node_modules/@angular/common/locales/global/然后修改package.json:
"build": "./pre-build-hack.sh && ng build --configuration production --localize"这不是一个优雅的解决方案,但有效。这也适用于我们的CI/CD平台。
感谢@Eliseo给我们指明了这个解决方案的方向。
https://stackoverflow.com/questions/67844479
复制相似问题