我正在开发一个 Angular 应用程序,我正在寻找类似于 Android 开发中可用的 Android Resource 的东西。
下面是Android中获取字符串的方法:
String mystring = getResources().getString(R.string.mystring);
我想在 Angular 中也有同样的东西。
例如,如果我有几个 HTML 模板,其中有关于提供的错误电子邮件的相同消息……
<div class="alert alert-danger">
<strong>Error!</strong>Invalid e-mail
</div>
我想要以下内容:
<div class="alert alert-danger">
<strong>Error!</strong>{{myStrings.INVALID_EMAIL}}
</div>
…或类似的东西…
<div class="alert alert-danger">
<strong>Error!</strong>{{'INVALID_EMAIL' | stringGenerator}}
</div>
你知道我可以安装的方法或插件吗?
原文由 smartmouse 发布,翻译遵循 CC BY-SA 4.0 许可协议
将配置、翻译和资源与应用程序的逻辑分开是非常有用的。配置在其他上下文中也非常有帮助,例如,获取
api_url
对任何 rest 调用都有用。您可以使用 @angular/cli 设置这样的东西。具有以下应用程序结构:
在哪里:
例如
en.json
:例如
it.json
:env.json
这是一个说明当前开发模式的 json:例如
env.json
:例如
development.json
:assets/resources :包含我们想要涵盖的每种语言的 jsons 资源文件。例如,它可能包含应用程序模型的 jsons 初始化。例如,如果您想要填充模型数组以传递给
*ngFor
基于环境和/或语言的个性化模型,这将很有用。这种初始化应该在每个想要通过AppConfig.getResourceByKey
访问精确资源的组件内部完成,稍后将显示。app.config.ts :配置服务,根据开发模式加载资源。我将在下面展示一个片段。
基本配置:
为了在应用程序启动时加载基本配置文件,我们需要做一些事情。
应用程序模块.ts :
应用程序配置文件:
如上所述,此服务根据开发模式加载配置文件,在本例中为浏览器语言。如果您想自定义您的应用程序,基于语言加载资源会非常有用。例如,您的意大利发行版会有不同的路线、不同的行为或简单的不同文本。
Every Resources, Configuration and Enviroment entry is available trough
AppConfig
service’s methods such asgetEnvByKey
,getEntryByKey
andgetResourceByKey
.翻译.config.module.ts
该模块设置使用 ngx-translate 构建的翻译。根据浏览器语言设置翻译。
好的,现在呢?我怎样才能使用这样的配置?
导入到
app.module.ts
的任何模块/组件或导入到另一个正在导入的自定义模块的任何模块/组件translation.config.module
现在可以根据浏览器语言自动翻译任何内插条目。例如,使用以下片段将根据解释的行为生成 Welcome 或 Benvenuto :如果我想获得一个资源来初始化某个将传递给
*ngFor
的数组怎么办?在任何组件中,只需在构造函数中执行此操作:
当然你也可以结合资源和配置。