| 123456789101112131415161718192021222324252627282930313233343536373839 |
- import {VueI18n} from "vue-i18n";
- import {EnumChoice, EnumChoices} from "~/types/interfaces";
- import {CountryCode, parsePhoneNumber} from "libphonenumber-js";
- import ArrayUtils from "~/services/utils/arrayUtils";
- export default class I18nUtils {
- private i18n!: VueI18n
- public constructor(i18n: VueI18n) {
- this.i18n = i18n
- }
- /**
- * Return the given enum with its labels translated
- *
- * If sort is true, the enum is also sorted by its newly translated labels
- *
- * @param enum_
- * @param sort
- */
- public translateEnum(enum_: EnumChoices, sort: boolean = true): EnumChoices {
- enum_ = enum_.map(
- (item: EnumChoice) => {
- return {value: item.value, label: this.i18n.t(item.label) as string}
- }
- )
- if (sort) {
- enum_ = ArrayUtils.sortObjectsByProp(enum_, 'label') as EnumChoices
- }
- return enum_
- }
- public formatPhoneNumber (number: string, defaultCountry?: CountryCode): string {
- const parsed = parsePhoneNumber(number, defaultCountry)
- return parsed ? parsed.formatNational() : ''
- }
- }
|