angular - Angular 2+ 动态 UI 文本
问题描述
我正在开发一个不是多语言的应用程序,但客户要求能够通过管理界面更改标签、文本甚至通知。所以我想到了可以在应用程序加载时从服务器获取并绑定所有标签、文本和通知的资源文件。
不确定是否已经实施了某些事情,或者是否有更好的方法来实现这一点。我有 ng2-translate 但它不能通过管理屏幕达到改变文本的目的。
谢谢你。
解决方案
所有文本都可以使用模板绑定显示,例如{{ myLabel }}
. myLabel
反过来,可以根据对接受语言参数的服务器的请求进行分配,或者您可以拥有本地存储的值,如果选择了某种语言设置,则使用这些值。服务器选项更易于管理 IMO。
async setText(languageId: number) {
this.text = await this.http.get('yourUrl', {
params: { languageId: languageId.toString()} }).toPromise();
}
文本可以是您所有文本的对象,例如
"text": [
"notifications": ["warningNotification": "whatever", ...
]
您可以在整个模板中显示这些:
<div id="warningDiv">{{ text?.notifications?.warning }}</div>
并且始终遵循相同的模式,text
根据语言交付不同的 json 对象。
请注意作为安全运算符的问号,以避免在处理请求时出现空错误。
推荐阅读
- android-studio - 尝试从类获取计算结果到主活动 onclick 方法以设置文本字段时 onClick 方法执行错误
- javascript - 处理 Knex pg 数据库错误的正确方法是什么
- vue.js - $router.push 未在单元测试中触发
- xamarin - Xamarin Visual Studio 2019 无法识别小米9t pro
- keras - ImportError:无法从“keras.layers”导入名称“K”
- deprecated - 需要帮助在 PHP 7.2 中转换已弃用的函数 create_function()
- ms-access - 使用 Delphi 将 dbf 文件的记录插入 MS Access 数据库中的表中
- java - 如何在 DJL(Deep Java Library)中调用自定义 mxnet 运算符?
- kotlin - 以编程方式添加时 MaterialCardView 不显示
- python - 如何绕过元素树不匹配标签错误?