首页 > 解决方案 > 是否可以动态添加 ag-grid 本地化?

问题描述

我正在使用框架的AgGridModuleAngular 包装器。ag-grid我的应用程序是一个 Angular AOT 应用程序,它使用ngx-translate库(它在页面加载时动态加载当前选择的语言的翻译数据文件)处理本地化。这意味着翻译只能异步使用。因此,我不能只在(推荐localeText的)中设置属性,因为在生成网格之前我没有文本。gridOptions

有谁知道如何处理这种情况?理想情况下,我只需将 RxJS 分配Observable给该localeText属性,该属性将在准备好时发送适当的文本对象,但这目前似乎不起作用。

标签: javascriptangulartypescriptag-gridag-grid-angular

解决方案


这可以通过提供您自己的localeTextFunc. 该函数从网格中获取键并使用网格外部的翻译函数(在我们的例子中为 ngx-translate)进行翻译。如果未找到匹配项,则应返回默认值(即网格的英文值,即网格默认语言)。

this.gridOptions = {
  localeTextFunc: (key: string, defaultValue: string) => {
    // look the value up. using the ngx translate service
    const data = this.translate.instant(key);
    return data === key ? defaultValue : data;
  }
};

TranslateService从 '@ngx-translate/core' 注入翻译以使用同步方法translate.instant()。但请确保在调用即时方法之前已加载翻译。


推荐阅读