首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在ASP样板(ASPNetZero)中添加语言

无法在ASP样板(ASPNetZero)中添加语言
EN

Stack Overflow用户
提问于 2019-02-08 13:02:52
回答 1查看 666关注 0票数 4

我试图在ASPNetZero框架中添加ASPNetZero语言,但它的说法是找不到模块./ms.js.

以下是我迄今所采取的步骤:

  1. 为马来语添加了一个XML文件
  2. 在DefaultLanguageCreator类中添加了一种新语言
  3. 从菜单栏中选择我的语言。

有关详细错误,请参阅下面:

代码语言:javascript
复制
core.js:14597 ERROR Error: Uncaught (in promise): Error: Cannot find module './ms.js'
Error: Cannot find module './ms.js'
    at .*\.js$ namespace object:179
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:388)
    at Object.onInvoke (core.js:16156)
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:387)
    at Zone.push../node_modules/zone.js/dist/zone.js.Zone.run (zone.js:138)
    at zone.js:872
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:421)
    at Object.onInvokeTask (core.js:16147)
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:420)
    at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (zone.js:188)
    at resolvePromise (zone.js:814)
    at resolvePromise (zone.js:771)
    at zone.js:873
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:421)
    at Object.onInvokeTask (core.js:16147)
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:420)
    at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (zone.js:188)
    at drainMicroTaskQueue (zone.js:595)
defaultErrorLogger @ core.js:14597
push../node_modules/@angular/core/fesm5/core.js.ErrorHandler.handleError @ core.js:14645
next @ core.js:16628
schedulerFn @ core.js:12609
push../node_modules/rxjs/_esm5/internal/Subscriber.js.SafeSubscriber.__tryOrUnsub @ Subscriber.js:196
push../node_modules/rxjs/_esm5/internal/Subscriber.js.SafeSubscriber.next @ Subscriber.js:134
push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber._next @ Subscriber.js:77
push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber.next @ Subscriber.js:54
push../node_modules/rxjs/_esm5/internal/Subject.js.Subject.next @ Subject.js:47
push../node_modules/@angular/core/fesm5/core.js.EventEmitter.emit @ core.js:12593
(anonymous) @ core.js:16178
push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke @ zone.js:388
push../node_modules/zone.js/dist/zone.js.Zone.run @ zone.js:138
push../node_modules/@angular/core/fesm5/core.js.NgZone.runOutsideAngular @ core.js:16115
onHandleError @ core.js:16178
push../node_modules/zone.js/dist/zone.js.ZoneDelegate.handleError @ zone.js:392
push../node_modules/zone.js/dist/zone.js.Zone.runGuarded @ zone.js:154
_loop_1 @ zone.js:677
api.microtaskDrainDone @ zone.js:686
drainMicroTaskQueue @ zone.js:602
Promise.then (async)
scheduleMicroTask @ zone.js:578
push../node_modules/zone.js/dist/zone.js.ZoneDelegate.scheduleTask @ zone.js:410
onScheduleTask @ zone.js:297
push../node_modules/zone.js/dist/zone.js.ZoneDelegate.scheduleTask @ zone.js:401
push../node_modules/zone.js/dist/zone.js.Zone.scheduleTask @ zone.js:232
push../node_modules/zone.js/dist/zone.js.Zone.scheduleMicroTask @ zone.js:252
scheduleResolveOrReject @ zone.js:862
resolvePromise @ zone.js:808
(anonymous) @ zone.js:724
webpackJsonpCallback @ bootstrap:25
(anonymous) @ 892.js:1
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-15 18:20:40

ngx-bootstrap,中的ASPNETZero日期选择器中,因此在这个库中他们使用moment.js,您的三个步骤是正确的,但是您忽略了下面解释的一些步骤:

  1. 为马来语(...\aspnet-core\src\YOURCOMPANY.Core\Localization\YOURCOMPANY\YOURCOMPANY.ms.xml)添加XML文件
  2. 在DefaultLanguageCreator类中添加了一种新语言

首先,在您的角度项目中编辑这个文件...\angular\src\assets\appconfig.json,并添加localMapping合适的转换(就目前而言),不要忘记将此配置设置为appconfig.production.json。

代码语言:javascript
复制
        "localeMappings": {
            "angular": [
              {
                "from": "ms",
                "to": "en"
              }
            ],
            "moment": [
              {
                "from": "ms",
                "to": "en"
              },
              ...
            ],...
  • 然后转到这个位置:(...\angular\src\assets\ngx-bootstrap\ngx-bootstrap-locale-mapping.service.ts),映射您的文化,如下所示:
代码语言:javascript
复制
const cultureMap = {
            'zh-Hans': 'zh-cn',
            'es-MX': 'es',
            'vi': 'en-gb',
            'ms': 'ms'
            // Add more here
        };

设置模块映射:

代码语言:javascript
复制
getModuleName(locale: string): string {
        const moduleNameMap = {
            'zh-Hans': 'zhCn',
            'es-MX': 'es',
            'pt-BR': 'ptBr',
            'vi': 'enGb',
            'ms': 'ms'

            // Add more here
        };

您可以将您的文化映射为'ms':'en',如果您这样做,您将得到格鲁吉亚式的SPA日期选择器,但如果您想更改您的日期选择器的时刻,则必须添加i18n覆盖,以实现以下操作:

将这个文件夹js文件添加到(...\angular\src\assets\ngx-bootstrap\custom-i18n\ms.js)中,您可以在网络上找到您的moment.js文化,或者简单地编辑其他语言以获得合适的时刻。

最后,转到这个文件:(...\angular\src\assets\ngx-bootstrap\ngx-bootstrap-datepicker-config.service.ts)并修改这个函数,如下所示:

代码语言:javascript
复制
static registerNgxBootstrapDatePickerLocales(): Promise<boolean> {
        if (abp.localization.currentLanguage.name === 'en') {
            return Promise.resolve(true);
        }

        let supportedLocale = new NgxBootstrapLocaleMappingService().map(abp.localization.currentLanguage.name).toLowerCase();
        let moduleLocaleName = new NgxBootstrapLocaleMappingService().getModuleName(abp.localization.currentLanguage.name);

        if (abp.localization.currentLanguage.name === 'ms') {
            return new Promise<boolean>((resolve, reject) => {
                import(`assets/ngx-bootstrap/custom-i18n/ms.js`)
                    .then(module => {
                        defineLocale(abp.localization.currentLanguage.name.toLowerCase(), module[`msLocale`]);
                        resolve(true);
                    }, reject);
            });
        }

        return new Promise<boolean>((resolve, reject) => {
            import(`ngx-bootstrap/chronos/esm5/i18n/${supportedLocale}.js`)
                .then(module => {
                    defineLocale(abp.localization.currentLanguage.name.toLowerCase(), module[`${moduleLocaleName}Locale`]);
                    resolve(true);
                }, reject);
        });
    }

如您所见,在承诺ms.js文件导入函数中,我们将您的ms.js模块名称为msLocale,这是一个在ms.js文件中声明的导出变量。

如果您无法在以下链接中找到您的即时区域性js文件:moment.js地区

只需自己写,这是一个正式的教程:moment.js定制

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

https://stackoverflow.com/questions/54593037

复制
相关文章

相似问题

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