Can't return arrays in tr() anymore?
blarsern opened this issue · 7 comments
I'm submitting a bug report
- Library Version:
3.1.4
Please tell us about your environment:
-
Operating System:
Windows 10 -
Node Version:
14.15.4 -
NPM Version:
6.14.11 -
JSPM OR Webpack AND Version
Webpack 4.4.1 -
Browser:
Chrome -
Language:
Typescript 3.2.2
Current behavior:
dist/aurelia-i18n.d.ts changed 27th of mars 2019:
Changed from:
tr(key: string | string[], options?: i18next.TranslationOptions): any;
To:
tr(key: string | string[], options?: i18next.TOptions): string;
But in 18n.ts it's still any:
public tr(key: string | string[], options?: i18next.TOptions) {
let fullOptions = this.globalVars;
if (options !== undefined) {
fullOptions = Object.assign(Object.assign({}, this.globalVars), options);
}
return this.i18next.t(key, fullOptions);
}
So after upgrade from beta 5 this doesn't compile anymore:
let dayNames: Array = this.i18n.tr('weekdays', { returnObjects: true });
Expected/desired behavior:
Returning arrays should work ?
Ouch, yep that was a mistake I forgot about the returnObject parameter. So it really should be unknown
or any
right?
Probably not used a lot ;)
Not sure what's best of unknown or any..
ok so the proper result seems to be TResult
which can be string | object | Array<string | object> | undefined
.
Please give the fixed version in the PR a try. Clone the tr-result branch, run npm run build
and then install in your project via npm install ../path/to/your/local/clone/root
.
If all is good we can merge and create another patch release.
Well tested it.
Now this simple code fails:
return { name: this.i18n.tr('enums.myEnum.ngh') };
TS2322: Type 'TrResult' is not assignable to type 'string'.
Type 'object' is not assignable to type 'string'.
To fix this, i have to add toString:
return { name: this.i18n.tr('enums.myEnum.ngh').toString() };
var a:string = this.i18n.tr('enums.myEnum.ngh'); //Not working
var a:string = this.i18n.tr('enums.myEnum.ngh').toString(); //Working
So basically this will require a lot of toString() everywhere.
Too much work to get it to compile, so didn't test arrays :)
Thx for the Test and the Testcase, I'll fix that when at the PC.