Browse Source

feat: add getLocaleDirection to localization utils

pull/4133/head
Arman Ozak 6 years ago
parent
commit
529bb08bf9
  1. 44
      npm/ng-packs/packages/core/src/lib/tests/localization-utils.spec.ts
  2. 9
      npm/ng-packs/packages/core/src/lib/utils/localization-utils.ts

44
npm/ng-packs/packages/core/src/lib/tests/localization-utils.spec.ts

@ -2,9 +2,53 @@ import {
createLocalizationPipeKeyGenerator, createLocalizationPipeKeyGenerator,
createLocalizer, createLocalizer,
createLocalizerWithFallback, createLocalizerWithFallback,
getLocaleDirection,
} from '../utils/localization-utils'; } from '../utils/localization-utils';
describe('Localization Utils', () => { describe('Localization Utils', () => {
describe('#getLocaleDirection', () => {
test.each`
locale | expected
${undefined} | ${'ltr'}
${null} | ${'ltr'}
${''} | ${'ltr'}
${'en'} | ${'ltr'}
${'en-US'} | ${'ltr'}
${'pt'} | ${'ltr'}
${'pt-PT'} | ${'ltr'}
${'ar'} | ${'rtl'}
${'ar-AE'} | ${'rtl'}
${'ar-QA'} | ${'rtl'}
${'ckb'} | ${'rtl'}
${'ckb-IR'} | ${'rtl'}
${'fa'} | ${'rtl'}
${'fa-AF'} | ${'rtl'}
${'he'} | ${'rtl'}
${'ks'} | ${'rtl'}
${'ksb'} | ${'ltr'}
${'ksf'} | ${'ltr'}
${'ksh'} | ${'ltr'}
${'lrc'} | ${'rtl'}
${'lrc-IQ'} | ${'rtl'}
${'mzn'} | ${'rtl'}
${'pa'} | ${'ltr'}
${'pa-Arab'} | ${'rtl'}
${'ps'} | ${'rtl'}
${'ps-PK'} | ${'rtl'}
${'sd'} | ${'rtl'}
${'ug'} | ${'rtl'}
${'ur'} | ${'rtl'}
${'ur-IN'} | ${'rtl'}
${'uz'} | ${'ltr'}
${'uz-Arab'} | ${'rtl'}
${'yi'} | ${'rtl'}
${'zh'} | ${'ltr'}
${'zh-Hans'} | ${'ltr'}
`('should return $expected when $locale is given as parameter', ({ locale, expected }) => {
expect(getLocaleDirection(locale)).toBe(expected);
});
});
describe('#createLocalizer', () => { describe('#createLocalizer', () => {
const localize = createLocalizer({ const localize = createLocalizer({
values: { foo: { bar: 'baz' }, x: { y: 'z' } }, values: { foo: { bar: 'baz' }, x: { y: 'z' } },

9
npm/ng-packs/packages/core/src/lib/utils/localization-utils.ts

@ -1,5 +1,14 @@
import { ApplicationConfiguration } from '../models/application-configuration'; import { ApplicationConfiguration } from '../models/application-configuration';
// This will not be necessary when only Angukar 9.1+ is supported
export function getLocaleDirection(locale: string): 'ltr' | 'rtl' {
return /^(ar(-[A-Z]{2})?|ckb(-IR)?|fa(-AF)?|he|ks|lrc(-IQ)?|mzn|pa-Arab|ps(-PK)?|sd|ug|ur(-IN)?|uz-Arab|yi)$/.test(
locale,
)
? 'rtl'
: 'ltr';
}
export function createLocalizer(localization: ApplicationConfiguration.Localization) { export function createLocalizer(localization: ApplicationConfiguration.Localization) {
return (resourceName: string, key: string, defaultValue: string) => { return (resourceName: string, key: string, defaultValue: string) => {
if (resourceName === '_') return key; if (resourceName === '_') return key;

Loading…
Cancel
Save