代码之家  ›  专栏  ›  技术社区  ›  Ranjith Varatharajan

动态加载特定项目的翻译文件

  •  0
  • Ranjith Varatharajan  · 技术社区  · 5 年前

    脚本: ngx-translate 这个共享模块可以在两个或更多不同的项目中使用,每个项目都有自己的翻译文件。当这个转换器共享模块与项目连接时,它应该只加载特定于项目的 en.json

    所以共享模块的资产文件夹结构

    assets
    |--i18n
    |----project1
    |------en.json
    |----project2
    |------en.json
    

    我将传递项目是project1还是project2的查询应用程序模块.ts如下图所示

    @NgModule({
      declarations: [
        AppComponent
      ],
      imports: [
        SharedModule.forRoot('Project1'),
        BrowserModule
      ],
      providers: [],
      bootstrap: [AppComponent]
    })
    export class AppModule { }
    

    我在我的共享模块中也得到了这个值,下面是我的共享模块代码

    @NgModule({
        declarations: [ ],
        imports: [
            HttpClientModule,
            TranslateModule.forRoot({
                loader: {
                    provide: TranslateLoader,
                    useFactory: httpTranslateLoader,
                    deps: [HttpClient]
                }
            })
        ],
        providers: [],
        exports: [TranslateModule]
    })
    export class SharedModule {
        static forChild(project:string): ModuleWithProviders<any> {
            console.log(project); //this consoles the project but fails the build, I'm stuck here
            return {
                ngModule: SharedModule,
                providers: [ ]
            }
        }
    }
    
    export function httpTranslateLoader(http: HttpClient) {
        return new TranslateHttpLoader(http);
    }
    

    project 我只需要加载英语.json在“资源”的项目文件夹中。如有任何建议,我们将不胜感激。

    1 回复  |  直到 5 年前
        1
  •  1
  •   Francesco    5 年前

    你能把翻译文件的路径保存在环境文件的JSON对象中吗?

    如果是这样,每个项目都会有自己的路径指向正确的翻译文件。

    // environments/environment.ts
    export const globalEnv = {
      projectName: "my_projectId"
    };
    
    推荐文章