igniteui-angular-sovn
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
140 lines (134 loc) • 5.38 kB
text/typescript
import {
DatePickerResourceStringsEN,
IDatePickerResourceStrings,
} from "./date-picker-resources";
import {
DateRangePickerResourceStringsEN,
IDateRangePickerResourceStrings,
} from "./date-range-picker-resources";
import { IGridResourceStrings, GridResourceStringsEN } from "./grid-resources";
import {
ITimePickerResourceStrings,
TimePickerResourceStringsEN,
} from "./time-picker-resources";
import {
IPaginatorResourceStrings,
PaginatorResourceStringsEN,
} from "./paginator-resources";
import { cloneValue } from "../utils";
import {
ICarouselResourceStrings,
CarouselResourceStringsEN,
} from "./carousel-resources";
import { IChipResourceStrings, ChipResourceStringsEN } from "./chip-resources";
import { IListResourceStrings, ListResourceStringsEN } from "./list-resources";
import {
CalendarResourceStringsEN,
ICalendarResourceStrings,
} from "./calendar-resources";
import {
IInputResourceStrings,
InputResourceStringsEN,
} from "./input-resources";
import { ITreeResourceStrings, TreeResourceStringsEN } from "./tree-resources";
import {
IActionStripResourceStrings,
ActionStripResourceStringsEN,
} from "./action-strip-resources";
import {
IQueryBuilderResourceStrings,
QueryBuilderResourceStringsEN,
} from "./query-builder-resources";
import {
ComboResourceStringsEN,
IComboResourceStrings,
} from "./combo-resources";
import {
BannerResourceStringsEN,
IBannerResourceStrings,
} from "./banner-resources";
export interface IResourceStrings
extends IGridResourceStrings,
ITimePickerResourceStrings,
ICalendarResourceStrings,
ICarouselResourceStrings,
IChipResourceStrings,
IComboResourceStrings,
IInputResourceStrings,
IDatePickerResourceStrings,
IDateRangePickerResourceStrings,
IListResourceStrings,
IPaginatorResourceStrings,
ITreeResourceStrings,
IActionStripResourceStrings,
IQueryBuilderResourceStrings,
IBannerResourceStrings {}
/**
* @hidden
* IF YOU EDIT THIS OBJECT, DO NOT FORGET TO UPDATE
* projects/igniteui-angular-sovn-i18n as well (create the appropriately named files,
* containing the new/updated component string keys and EN strings for values + create a separate issue + pending-localization label)
*
* TODO Add automation tests:
* 1) each of the folders/languages under \projects\igniteui-angular-sovn-i18n\src\ contain resources.ts file with matching components count.
* \projects\igniteui-angular-sovn-i18n\src\BG\resources.ts contains IgxResourceStringsBG.count matching this.CurrentResourceStrings.count
* 2) \igniteui-angular-sovn\projects\igniteui-angular-sovn\src\public_api.ts --> Check if the new interface is added
* to IInputResourceStrings (just a proxy as it is later on imported in the angular-i18n package)
*/
export const CurrentResourceStrings = {
GridResStrings: cloneValue(GridResourceStringsEN),
PaginatorResStrings: cloneValue(PaginatorResourceStringsEN),
TimePickerResStrings: cloneValue(TimePickerResourceStringsEN),
CalendarResStrings: cloneValue(CalendarResourceStringsEN),
ChipResStrings: cloneValue(ChipResourceStringsEN),
ComboResStrings: cloneValue(ComboResourceStringsEN),
DatePickerResourceStrings: cloneValue(DatePickerResourceStringsEN),
DateRangePickerResStrings: cloneValue(DateRangePickerResourceStringsEN),
CarouselResStrings: cloneValue(CarouselResourceStringsEN),
ListResStrings: cloneValue(ListResourceStringsEN),
InputResStrings: cloneValue(InputResourceStringsEN),
TreeResStrings: cloneValue(TreeResourceStringsEN),
ActionStripResourceStrings: cloneValue(ActionStripResourceStringsEN),
QueryBuilderResStrings: cloneValue(QueryBuilderResourceStringsEN),
BannerResourceStrings: cloneValue(BannerResourceStringsEN),
};
const updateResourceStrings = (
currentStrings: IResourceStrings,
newStrings: IResourceStrings
) => {
for (const key of Object.keys(newStrings)) {
if (key in currentStrings) {
currentStrings[key] = newStrings[key];
}
}
};
/**
* Changes the resource strings for all components in the application
* ```
* @param resourceStrings to be applied
*/
export const changei18n = (resourceStrings: IResourceStrings) => {
for (const key of Object.keys(CurrentResourceStrings)) {
updateResourceStrings(CurrentResourceStrings[key], resourceStrings);
}
};
/**
* Returns current resource strings for all components
*/
export const getCurrentResourceStrings = (): IResourceStrings => ({
...CurrentResourceStrings.CalendarResStrings,
...CurrentResourceStrings.CarouselResStrings,
...CurrentResourceStrings.ChipResStrings,
...CurrentResourceStrings.ComboResStrings,
...CurrentResourceStrings.DatePickerResourceStrings,
...CurrentResourceStrings.DateRangePickerResStrings,
...CurrentResourceStrings.GridResStrings,
...CurrentResourceStrings.InputResStrings,
...CurrentResourceStrings.ListResStrings,
...CurrentResourceStrings.PaginatorResStrings,
...CurrentResourceStrings.TimePickerResStrings,
...CurrentResourceStrings.TreeResStrings,
...CurrentResourceStrings.ActionStripResourceStrings,
...CurrentResourceStrings.QueryBuilderResStrings,
...CurrentResourceStrings.BannerResourceStrings,
});