Ionic framework 如何在爱奥尼亚将翻译文件(下载后)保存在本地?
我需要从远程服务器下载翻译文件,并将其保存在本地,以避免每次重新加载应用程序时下载此文件 文件已下载,但无法保存Ionic framework 如何在爱奥尼亚将翻译文件(下载后)保存在本地?,ionic-framework,storage,translation,Ionic Framework,Storage,Translation,我需要从远程服务器下载翻译文件,并将其保存在本地,以避免每次重新加载应用程序时下载此文件 文件已下载,但无法保存 import { Storage } from '@ionic/storage'; ... constructor( private http: HttpClient, private storage: Storage ) { } getTranslation(lang: string): Observable<an
import { Storage } from '@ionic/storage';
...
constructor(
private http: HttpClient,
private storage: Storage
) {
}
getTranslation(lang: string): Observable<any> {
return new Observable((observer) => {
this.http.post(SERVER_BASE_URL, null, {headers: this.contentHeader}).subscribe((res: Response) => {
console.log('get translation from server');
console.log(res);
this.storage.set("test", res).then(response => {
console.log("save translation");
}).catch(error => {
console.log("error");
console.log(error);
})
observer.next(res);
observer.complete();
},
error => {
console.log('get translation from local');
// failed to retrieve from api, switch to local
this.http.get('/assets/i18n/' + lang + '.json').subscribe((res: Response) => {
observer.next(res);
observer.complete();
});
});
});
}
从'@ionic/Storage'导入{Storage};
...
建造师(
私有http:HttpClient,
专用存储:存储
) {
}
getTranslation(lang:string):可观察{
返回新的可观察对象((观察者)=>{
this.http.post(SERVER\u BASE\u URL,null,{headers:this.contentHeader}).subscribe((res:Response)=>{
log('get translation from server');
控制台日志(res);
this.storage.set(“test”,res)。然后(response=>{
console.log(“保存翻译”);
}).catch(错误=>{
控制台日志(“错误”);
console.log(错误);
})
观察员:下一个(res);
observer.complete();
},
错误=>{
log('get translation from local');
//无法从api检索,请切换到本地
this.http.get('/assets/i18n/'+lang+'.json').subscribe((res:Response)=>{
观察员:下一个(res);
observer.complete();
});
});
});
}
我已尝试使用存储,但出现了错误
“无法读取未定义的属性“set”
我已经在我的应用程序的其他部分中使用了存储,并且它可以正常工作。所以我不明白为什么在翻译服务中它不起作用
谢谢您的帮助。如果您想存储对象或列表,那么
this.storage.set('test', JSON.stringify(this.res));
取回时
this.storage.get('test').then(value => {
let res = JSON.parse(value);
}).catch(err=>{
console.log(err)
})
如果要保存该文件,则
如果要存储对象或列表,则
this.storage.set('test', JSON.stringify(this.res));
取回时
this.storage.get('test').then(value => {
let res = JSON.parse(value);
}).catch(err=>{
console.log(err)
})
如果要保存该文件,则
我试图在本地保存该文件,但出现了相同的错误:无法读取未定义的属性“writeFile”
this.http.post(apiAddress, body, {headers: this.contentHeader}).subscribe((res: Response) => {
console.log('get translation from server');
console.log(res);
this.file.writeFile(
this.file.dataDirectory,
lang + '.json',
JSON.stringify(res),
{replace: true}).then(_ => {
console.log('Directory exists');
}).catch(err => {
console.log('Directory doesn\'t exist');
});
observer.next(res);
observer.complete();
},
error => {
console.log('get translation from local');
// failed to retrieve from api, switch to local
this.http.get('/assets/i18n/' + lang + '.json').subscribe((res: Response) => {
observer.next(res);
observer.complete();
});
});
我发现我错过了什么。在app.module.ts中,我需要添加“deps”以使用依赖项
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
// useFactory: (createTranslateLoader),
useClass: TranslationService,
deps: [HttpClient, File]
}
}),
谢谢你的帮助 我试图在本地保存该文件,但出现了相同的错误:无法读取未定义的属性“writeFile”
this.http.post(apiAddress, body, {headers: this.contentHeader}).subscribe((res: Response) => {
console.log('get translation from server');
console.log(res);
this.file.writeFile(
this.file.dataDirectory,
lang + '.json',
JSON.stringify(res),
{replace: true}).then(_ => {
console.log('Directory exists');
}).catch(err => {
console.log('Directory doesn\'t exist');
});
observer.next(res);
observer.complete();
},
error => {
console.log('get translation from local');
// failed to retrieve from api, switch to local
this.http.get('/assets/i18n/' + lang + '.json').subscribe((res: Response) => {
observer.next(res);
observer.complete();
});
});
我发现我错过了什么。在app.module.ts中,我需要添加“deps”以使用依赖项
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
// useFactory: (createTranslateLoader),
useClass: TranslationService,
deps: [HttpClient, File]
}
}),
谢谢你的帮助 感谢您的回复,但其他页面和服务上的存储工作仍在进行中。我已尝试使用文件,但出现相同错误:无法读取未定义的属性“writeFile”。我已经导入了:从'@ionic native/File/ngx'导入{File};感谢您的回复,但其他页面和服务上的存储工作仍在进行中。我已尝试使用文件,但出现相同错误:无法读取未定义的属性“writeFile”。我已经导入了:从'@ionic native/File/ngx'导入{File};