If i figure out how to fix it, im in home. My problem now is to save result from async function. If i do console.log after that function, then i will recive translated value, but few moments later when i checking out how my verbs looks like after packing into object, i will recive non-translated value. Somebody know why?
private translate(file: any) {
const keys = Object.keys(file)
const values = Object.values(file) // [!] - English Value at start, it's ok
values.forEach( async (value, index) => {
if( typeof(value) === 'object') {
value = this.translate(value)
} else {
const translateResult = await this.GetTranslatedByResstring(keys[index], 1045).toPromise()
value = translateResult.getPhrase()
console.log(value) // [!] <- Polish Value, it's ok
}
})
const zipObj = xs => ys => xs.reduce( (obj, x, i) => ({ ...obj, [x]: ys[i] }), {})
const obj = zipObj (keys) (values)
console.log(obj) // [!] <- English Value, it's not ok, i need Polish value inside
return obj
}
#Update 1
A place from where calling translate:
public async getTranslatedJson(
sourceFile: File,
originLanguage: Language,
destinatonLanguage: Language
): Promise<string> {
const file = await this.getFile(sourceFile)
const parsedFile = JSON.parse(file)
const translatedFile = this.translate(parsedFile)
return null
}
#Update 2
My getFile func:
private getFile(
sourceFile: File
): Promise<string> {
return new Promise((resolve) => {
const file = sourceFile[0]
const fileReader = new FileReader();
fileReader.onloadend = (e) => {
const testResult = fileReader.result.toString();
resolve(testResult);
}
fileReader.readAsText(file, "UTF-8");
});
}