不使用ng-translate,可以使用配置文件和语言json文件来进行翻译。你可以将该json文件放置在服务器位置,并轻松从angular访问。
在config.json
中,你可以定义语言类型。
{
"LANGUAGE": "fr.json"
}
在
en/fr.json
文件中。
{
"TITLE": "Bonjour Angular avec translate !",
"SELECT": "Changer la langue"
}
这里有示例代码
App.component
export class AppComponent {
name = LAN_CONFIG['TITLE'];
}
或者
您可以使用config.js文件
将以下代码段添加到index.html头部:
<script>
var xhrObj = new XMLHttpRequest();
var url = '/assets/config/config.js';
xhrObj.open('GET', url, false);
xhrObj.send('');
var se = document.createElement('script');
se.type = "text/javascript";
se.text = xhrObj.responseText;
document.getElementsByTagName('head')[0].appendChild(se);
</script>
config.js文件
window.config= {};
window.config['LANGUAGE'] = 'er.js';
您可以通过访问该变量来访问值,使用以下代码:
@Injectable()
export class LanguageService {
appConfig:AppConfigService;
lanTypePath ='../../assets/i18n/'+ window['config'].LANGUAGE;
constructor(private http: HttpClient)
{
console.log(APP_CONFIG['LANGUAGE']);
}
public load()
{
return new Promise((resolve, reject) => {
this.http.get(this.lanTypePath).catch((error: any): any => {
reject(true);
return Observable.throw('Server error');
}).subscribe((envResponse :any) => {
let t = new LanConfig();
LAN_CONFIG = Object.assign(t, envResponse);
resolve(true);
});
});
}
}
我认为对于你的情况,这种方法比以前更好。
Github演示
希望这能有所帮助..!