我正在Angular 7中使用以下语言的i18n(国际化):en,es,fr,it,pl,pt和ru。
我需要获取项目中配置的所有语言,以设置带有其值的下拉列表。如何获得在JSON文件中设置的这些语言,以便在下拉列表中使用它们?
至少可以循环播放文件夹中的文件并恢复文件名吗?
答案 0 :(得分:1)
您无法访问i18n文件夹以获取角度文件列表。
您需要创建API才能读取它。这样我在项目中实施,我就为谁所关心。
[Route("api/webconfiguration/getlanguages")]
[AcceptVerbs("GET")]
public dynamic GetLanguages()
{
string path = ConfigurationManager.AppSettings["LanguageFolder"];
DirectoryInfo dir = new DirectoryInfo(path);
FileInfo[] files = dir.GetFiles("*.json");
if (files.Length > 0)
{
var languages = files.Select(file => Path.GetFileNameWithoutExtension(file.Name));
return languages.Select(c => new { code = c, name = new CultureInfo(c).DisplayName }).ToList();
}
return null;
}
在web.config中配置
<add key="LanguageFolder" value="C:\src\assets\i18n"/>
创建服务以获取语言列表并在组件中使用。
getLanguages() {
return this.httpClient.get<any>('/api/webconfiguration/getlanguages').pipe(
map(response => <any>response));
}
答案 1 :(得分:0)
到目前为止,我可以提供的服务就是这样。 直到我实现了您的期望,希望它能奏效。 这只是一个例子。
<ng-container *ngFor="let language of languageList">
<a href="/{{language.code}}/">
<button class="button">{{language.label}}</button>
</a>
</ng-container>
这是.TS
languageList = [
{ code: 'en', label: 'English' },
{ code: 'de', label: 'German' },
{ code: 'es', label: 'Espanol' }
];