如何在 Angular i18n 路由器模块中使用 LOCALE_ID

2024-05-04

我正在使用 Angular 的 i18n 设置构建一个小型 Angular 应用程序。除了 url 路径和 slugs 的翻译之外,一切都工作正常。我尝试了一种可能的解决方案,为每种语言提供一个路由模块(如此处所述),但这不起作用。

我以为我可以做类似下面的事情,但我不知道在哪里注入LOCALE_ID:

应用程序路由.module.ts

import { LOCALE_ID, NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { MainComponent } from './main/main.component';

const i18nRoutes = {
    de: {
        main: 'inhalte',
        // ...
    }, 
    fr: {
        main: 'contenu',
        // ...
    }
}

const currentLanguage = i18nRoutes[ LOCALE_ID ]; // <-- Apparently not working, since I have to inject LOCALE_ID. But where?

const routes: Routes = [
    {
        path: '',
        redirectTo: currentLanguage.main,
        pathMatch: 'full'
    },
    {
        path: currentLanguage.main + '/:key',
        component: MainComponent
    }
    // ...
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

更新以澄清

in angular.json,我为每种语言的构建过程设置了配置(取自here https://medium.com/@feloy/deploying-an-i18n-angular-app-with-angular-cli-fc788f17e358,2018 年的视图修改)

角度.json

{
    // ...
    "projects": {
        "my-app": {
            // ...
            "architect": {
                "build": {
                    // ...
                    "configurations": {
                        // ...
                        "de": {
                            "i18nFile": "src/i18n/de.xliff",
                            "outputPath": "dist/de",
                            "i18nFormat": "xlf",
                            "i18nLocale": "de",
                            "baseHref": "/de/"
                            // ...
                        },
                        "fr": {
                            "i18nFile": "src/i18n/fr.xliff",
                            "outputPath": "dist/fr",
                            "i18nFormat": "xlf",
                            "i18nLocale": "fr",                            
                            "baseHref": "/fr/",
                            // ...
                        }
                   }
              }
          }
     }
}

为了一次构建所有应用程序,我然后输入npm run buildall,它执行以下内容package.json:

包.json

{
    "name": "my-app",
    // ...
    "scripts": {
        // ...
        "buildall": "for lang in de fr;do ng build --configuration=$lang; done"
    }
}

它会在子目录中生成所有应用程序dist文件夹就好了。

那么,回到我原来的问题:所提供的由网友 灭虫者 提供的答案 https://stackoverflow.com/a/52333393/1107529不符合我的需要,因为

  • 我无法在引导时设置固定区域设置
  • 注射LOCALE_ID在构造函数中为时已晚,因为我需要中的值app-routing.module.ts

我希望我解释得足够多了。但也许我完全误解了一些事情。无论如何,提前感谢您的帮助。我仍在学习中,我必须承认一些概念对我来说仍然模糊。


将其添加到 app.module

providers: [{provide: LOCALE_ID, useValue: 'fr-FR'}]

然后在你想要的地方使用以下方法调用它

import {LOCALE_ID} from '@angular/core';

  constructor(@Inject(LOCALE_ID) locale: string){
    console.log('locale', locale);
  }

你也可以使用这个方法

platformBrowserDynamic([{provide: LOCALE_ID, useValue: 'en-EN'}]).bootstrapModule(AppModule, {providers: [{provide: LOCALE_ID, useValue: 'en-EN'}]});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Angular i18n 路由器模块中使用 LOCALE_ID 的相关文章

随机推荐

  • IE9 是否支持 CSS3 ::before 和 ::after 伪元素?

    On 这个 MS 兼容性表 http msdn microsoft com en us library cc351024 28v vs 85 29 aspx它说 IE9不支持伪元素 before and after 但当我尝试时 似乎确实
  • 将数据作为 RDD 保存回 Cassandra

    我试图从 Kafka 读取消息 处理数据 然后将数据添加到 cassandra 中 就像它是 RDD 一样 我的麻烦是将数据保存回 cassandra 中 from future import print function from pys
  • 使用基类活动将多个活动(选项卡)绑定到服务

    发帖后发现这些 http code google com p android issues detail id 2665 http code google com p android issues detail id 2665http co
  • Javascript时间转换正则表达式

    我有一种使用 Net 中的正则表达式来转换时间的方法 例如 1h 20m 格式为双倍 就这个 public static double GetTaskHours this string tmpHours Double taskHours 0
  • 在 Pygame 中缩放图像/矩形

    是否可以在 pygame txt 内部 缩放 矩形 有点像当你在桌面上缩放窗口时 我想知道你如何在 pygame 中做到这一点 您的光标将控制矩形的大小 我使用 skrx 方法并尝试对 2 个矩形执行此操作 if evnt type MOU
  • Facebook应用程序白名单流程

    有谁知道将 FB 应用程序列入白名单以启用某些功能的过程吗 我看到很少有人问同样的问题 但没有答案 FB 有处理白名单申请的联系人吗 没有申请白名单的公共流程 与大多数公司一样 Facebook 可能拥有少量私有 API 这些 API 仅供
  • pandas - 将字符串转换为字符串列表[重复]

    这个问题在这里已经有答案了 我有这个 file csv 文件可以用 pandas 读取 Title Tags T1 Tag1 Tag2 T1 Tag1 Tag2 Tag3 T2 Tag3 Tag1 using df pd read csv
  • Ruby:注释“frozen_string_literal: true”有什么作用?

    这是rspecbinstub 在我的项目目录中 usr bin env ruby begin load File expand path spring FILE rescue LoadError end frozen string lite
  • 如何在 Chrome 开发者工具的控制台中启用下划线?

    我正在使用 Angular2 和下划线 import as from underscore 我也想在 Chrome 控制台窗口中使用下划线库 即使我确实在代码中间中断 并尝试使用 但我得到了 未定义 错误 我可以在 Chrome 控制台窗口
  • Jquery .ajax method =“post”但$_POST为空

    ajax method post url save php data id 453 action test beforeSend function complete function success function html mydiv
  • 具有 UI 自动化和 .net 的数据网格内容

    我在使用 UI 自动化读取外部应用程序中的数据网格内容时遇到一些问题 并且可以使用一些指针 这是我到目前为止所拥有的 int id System Diagnostics Process GetProcessesByName Book 0 I
  • 使用Log4j在日志中输出Spark应用程序id

    我有一个用于 Spark 应用程序的自定义 Log4j 文件 我想输出 Spark 应用程序 ID 以及消息和日期等其他属性 因此 JSON 字符串结构如下所示 name time date level thread message app
  • React.js 关于监听组件窗口事件的最佳实践

    我根据几个 React js 组件在视口中的位置对它们进行动画处理 如果组件位于视口中 则将不透明度动画设置为 1 如果不在视口中 则将其不透明度动画设置为 0 我正在使用getBoundingClient s top and bottom
  • 查看所有定义的变量

    我目前正在 python shell 中进行计算 我想要的是 Matlab 风格的列表 您可以在其中看到已定义的所有变量 这样我就知道我使用了哪些名称 它们的值等 有办法吗 我该怎么做 您可以使用一些东西 dir 将为您提供范围内变量的列表
  • 带有 Hamcrest 匹配器的 TestNG 软断言

    我想在 TestNG 测试中使用 Hamcrest 匹配器 并专门使用软断言 我怎样才能做到这一点 我知道我可以在测试中使用 Hamcrest 的断言 例如 assertThat actual containsInAnyOrder expe
  • 检索访问令牌时出错:TypeError:无法读取未定义的属性“project_id”

    我是扣扣新手 首次登录后通过 扣登录 我能够登录 script google com 接下来 我创建了一个项目并通过以下方式推送文件 扣推 现在 我已使用以下方式注销 扣注销 这里需要帮助 现在 如果我正在尝试 clasp 登录 creds
  • 页脚中的 SSRS 页码

    我希望不包含报告前 10 页 即第 1 10 页 的页码 在页脚中 第 1 页应为 i 第 2 页应为 ii 第 3 页应为 iii 依此类推 以罗马数字表示 当到达第 11 页时 应重置页码 有谁知道我可以用什么表达来实现这一目标 因此
  • 控制消息监听容器停止一定时间后重新开始监听

    听众
  • 集成ZXing二维码扫描器,无需安装BarCode Scanner

    我正在尝试将 ZXing QR 码集成到我的 Android 应用程序中 而不安装条形码扫描仪应用程序 我已按照以下步骤操作 1 首先我下载了 ZXing zip文件并解压它 2 将ZXing项目作为android现有项目打开 然后转到an
  • 如何在 Angular i18n 路由器模块中使用 LOCALE_ID

    我正在使用 Angular 的 i18n 设置构建一个小型 Angular 应用程序 除了 url 路径和 slugs 的翻译之外 一切都工作正常 我尝试了一种可能的解决方案 为每种语言提供一个路由模块 如此处所述 但这不起作用 我以为我可