Skip to content

Commit

Permalink
i18next breaking changes fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
Romanchuk committed Nov 28, 2023
1 parent 82b33a8 commit 53103f7
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 12 deletions.
13 changes: 7 additions & 6 deletions libs/angular-i18next/src/lib/I18NextService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ import { I18NextErrorHandlingStrategy } from './I18NextErrorHandlingStrategies';
import { I18NextEvents } from './I18NextEvents';
import { I18NextLoadResult } from './I18NextLoadResult';
import { ITranslationEvents } from './ITranslationEvents';
import { ITranslationService } from './ITranslationService';
import { ITranslationOptions, ITranslationService } from './ITranslationService';
import { $Dictionary } from 'i18next/typescript/helpers';


const i18nextGlobal: i18n.i18n = i18n.default;
Expand Down Expand Up @@ -55,16 +56,16 @@ export class I18NextService implements ITranslationService {
this.i18next = i18nextInstance ?? i18nextGlobal;
}

t(key: string | string[], options?: (i18n.TOptions & { defaultValue?: string | undefined; }) | undefined): i18n.DefaultTReturn<(i18n.TOptions & { defaultValue?: string | undefined; })>;
t(key: string | string[] | (string | TemplateStringsArray)[], defaultValue: string, options?: (i18n.TOptions & { defaultValue: string; }) | undefined): i18n.DefaultTReturn<(i18n.TOptions & { defaultValue: string; })>;
t(key: unknown, defaultValueOrOptions?: unknown, options?: unknown): i18n.DefaultTReturn<(i18n.TOptions & { defaultValue: string; })> {
t(key: string | string[], options?: ITranslationOptions | undefined): i18n.DefaultTReturn<ITranslationOptions>;
t(key: string | string[] | (string | TemplateStringsArray)[], defaultValue: string, options?: ITranslationOptions | undefined): i18n.DefaultTReturn<ITranslationOptions>;
t(key: unknown, defaultValueOrOptions?: unknown, options?: unknown): i18n.DefaultTReturn<ITranslationOptions> {
const hasDefault = !!defaultValueOrOptions && typeof defaultValueOrOptions === 'string';

this.i18next.t.bind(this.i18next);
if (hasDefault) {
return this.i18next.t(key as (string | string[]), defaultValueOrOptions as string, options as (i18n.TOptions & { defaultValue?: string | undefined; }));
return this.i18next.t(key as (string | string[]), defaultValueOrOptions as string, options as ITranslationOptions);
} else {
return this.i18next.t(key as (string | string[]), defaultValueOrOptions as (i18n.TOptions & { defaultValue?: string | undefined; }));
return this.i18next.t(key as (string | string[]), defaultValueOrOptions as ITranslationOptions);
}
}

Expand Down
11 changes: 7 additions & 4 deletions libs/angular-i18next/src/lib/ITranslationService.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
import * as i18n from 'i18next';
import { I18NextLoadResult } from './I18NextLoadResult';
import { ITranslationEvents } from './ITranslationEvents';
import { $Dictionary as I18Next$Dictionary } from 'i18next/typescript/helpers';

type Modify<T, R> = Omit<T, keyof R> & R;

export type ITranslationOptions = i18n.TOptions & I18Next$Dictionary & { defaultValue?: string; };

export type ITranslationService = Modify<Partial<i18n.i18n>, {

events: ITranslationEvents;
Expand All @@ -25,13 +28,13 @@ export type ITranslationService = Modify<Partial<i18n.i18n>, {

t(
key: string | string[],
options? :i18n.TOptions & { defaultValue?: string; }
): i18n.DefaultTReturn<(i18n.TOptions & { defaultValue: string; })>;
options?: ITranslationOptions,
): i18n.DefaultTReturn<ITranslationOptions>;
t(
key: string | string[],
defaultValue: string,
options?: i18n.TOptions & { defaultValue: string; }
): i18n.DefaultTReturn<(i18n.TOptions & { defaultValue: string; })>;
options?: ITranslationOptions
): i18n.DefaultTReturn<ITranslationOptions>;

format: i18n.FormatFunction;

Expand Down
3 changes: 2 additions & 1 deletion libs/angular-i18next/src/lib/models.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import * as i18n from 'i18next';
import { $Dictionary as I18Next$Dictionary } from 'i18next/typescript/helpers';

export type FormatPipeOptions = { format?: string; lng?: string; case?: string; [key: string]: any };
export type PrependPipeOptions = {
prependScope?: boolean;
prependNamespace?: boolean;
};
export type PipeOptions = i18n.TOptions & { defaultValue?: string; } &
export type PipeOptions = i18n.TOptionsBase & I18Next$Dictionary & { defaultValue?: string; } &
FormatPipeOptions &
PrependPipeOptions;
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 53103f7

Please sign in to comment.