在Ionic3应用中,我可以如何加载JSON的ngx-translate语言?当前在github上给出的方法提到了为资产文件夹中的每种语言保留JSON文件。这种方法的问题是,每次我必须添加新的语言支持时,我必须发布新版本的应用程序。有没有一种方法可以从Firebase加载JSON?ngx-translate:从ionic3的firebase中加载i18n json
3
A
回答
1
我能够创建一个新的可从Firebase获取的TranslateLoader。下面是代码:
import {AngularFireDatabase} from 'angularfire2/database';
import {TranslateLoader} from "@ngx-translate/core";
export class TranslateFirebaseLoader implements TranslateLoader {
constructor(public db : AngularFireDatabase) {}
/**
* Gets the translations from firebase
* @param lang
* @returns {any}
*/
public getTranslation(lang: string): any {
return this.db.list('/translations/'+lang)
.map(data => {
let fields={};
data.forEach(field =>{
fields[field.$key]=field.$value;
});
return fields;
});
}
}
1
OK,我设法使它工作是这样的:
app.module.ts
import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
// Should work with "AngularFireDatabase" too. But I want it to work offline
import { AngularFireOfflineDatabase } from 'angularfire2-offline/database';
import { TranslateFirebaseLoader } from './TranslateFirebaseLoader';
export function createTranslateLoader(db: AngularFireOfflineDatabase) {
return new TranslateFirebaseLoader(db, '/my/firebase/path');
}
@NgModule({
imports: [
// ...
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: (createTranslateLoader),
deps: [ AngularFireOfflineDatabase ]
}
}),
// ...
],
// ...
})
export class AppModule {}
TranslateFirebaseLoader.ts
const TranslateFirebaseLoader = (function() {
function TranslateFirebaseLoader(db, path) {
this.db = db;
this.path = path;
}
/**
* Gets the translations from the server
* @param langCode
* @returns {any}
*/
TranslateFirebaseLoader.prototype.getTranslation = function(langCode) {
return this.db.object(`${this.path}/${langCode}`);
};
return TranslateFirebaseLoader;
}());
export { TranslateFirebaseLoader };
显然,使其工作改变你使用的火力地堡的路径(没有它的语言代码)。例如,在这种情况下,如果语言代码“en”处于活动状态,应用程序将尝试从/my/firebase/path/en
中获取数据。
相关问题
- 1. Firebase + Ionic3错误:disallowed_useragent
- 2. Ionic3:JSON到数组
- 3. Firebase数据库JSON加载时间
- 4. 重新加载appcomponent.ts,同时注销ionic3
- 5. ionic3/angular4延迟加载不要工作
- 6. Ionic3 + Firebase数据库安全性+ PayPal
- 7. 从Firebase存储下载JSON文件
- 8. 从JSON中加载ExtJS TreeStore
- 9. 从Firebase加载大型json时,Android应用返回java.lang.OutOfMemoryError
- 10. 如何使用Ionic3从另一个类重新加载页面
- 11. 在gemified插件中加载I18n文件
- 12. 如何去做一个在ionic3和firebase中的itemsearch栏
- 13. [i18n]从类路径中加载资源包
- 14. 如何从ionic3到ionic2迁移,也从ionic2回ionic3
- 15. 在Firebase中加载批量数据
- 16. Firebase延迟加载
- 17. Firebase延迟加载
- 18. 从firebase和缓存加载图像swift3
- 19. 将数据从Firebase加载到ExpandableList
- 20. 从firebase加载图片很慢
- 21. i18n和JSON模式?
- 22. 无法从URL加载JSON
- 23. jqGrid - 从JSON加载值
- 24. 从sencha加载json数据
- 25. Annotator.js从json加载注释
- 26. xpages从文档加载json
- 27. 从Json fabric加载js
- 28. 从JSON加载失效。 Fabric.JS
- 29. JSON从工厂未加载
- 30. AngularJS从services.js文件中加载json
谢谢。你能否提供一段关于你如何使用这段代码的片段。我收到一个错误“无法读取属性”getTranslation“未定义”。非常感谢 – Maslow