1.6.5 • Published 4 months ago

@yamato-daiwa/es-extensions-localization-russian v1.6.5

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

Русификация @yamato-daiwa/es-extensions

Установка

@yamato-daiwa/es-extensions-localization-russian имеет основной пакет (@yamato-daiwa/es-extensions) в качестве одноранговой зависимости (peer dependency), что означает необходимость его отдельной установки. Версии должны совпадать с точностью до минорной (число между двумя точками). Например, версия 1.5.0 пакета локализации @yamato-daiwa/es-extensions-localization-russian совместима с версиями @yamato-daiwa/es-extensions от 1.5.0 до любой, меньшей 1.6.0.

npm i @yamato-daiwa/es-extensions-localization-russian @yamato-daiwa/es-extensions -E

Подход

Локализация хотя и не содержит "тяжёлых" вычислений, но даёт дополнительный код, что критично для скриптов, которые будут выполняться в браузерной среде. Поэтому локализовать всё (даже то, что не использовано) - не рекомендуемый подход, когда речь идёт о подготовке скриптов к продакшену.

В связи в этим, на данный момент функциональности, полностью локализующей библиотеку не предлагается. См. "доступная функциональность" ниже о том, как и что из библиотеки @yamato-daiwa/es-extensions можно локализовать.

Локализованная функциональность основного пакета

Локализация класса RawObjectDataProcessor

Класс RawObjectDataProcessor можно локализовать как на время одного выполнения метода process, так и на всё время выполнения приложения. В любом случае понадобится объект локализации RawObjectDataProcessorLocalization__Russian.

Для локализации на время одного выполнения метода process необходимо передать RawObjectDataProcessorLocalization__Russian через свойство localization третьего параметра:

import { RawObjectDataProcessor } from "@yamato-daiwa/es-extensions";
import { RawObjectDataProcessorLocalization__Russian } from "@yamato-daiwa/es-extensions-localization-russian";

type User = {
  ID: string;
  familyName: string;
  givenName: string;
};


const processingResult: RawObjectDataProcessor.ProcessingResult<User> = RawObjectDataProcessor.process(
  rawData, 
  {
    nameForLogging: "User",
    subtype: RawObjectDataProcessor.ObjectSubtypes.fixedKeyAndValuePairsObject,
    properties: { /* */ }
  },
  { localization: RawObjectDataProcessorLocalization__Russian }
);

Для локализации на всё время выполнения приложения необходимо вызывать метод setDefaultLocalization:

import { RawObjectDataProcessor } from "@yamato-daiwa/es-extensions";
import { RawObjectDataProcessorLocalization__Russian } from "@yamato-daiwa/es-extensions-localization-russian";


RawObjectDataProcessor.setDefaultLocalization(RawObjectDataProcessorLocalization__Russian);

Локализация фасада Logger

Объект LoggerLocalization__Russian локализует только те строки, которые принадлежат непосредственно классу Logger (а таких немного), однако сообщения об ошибках должны быть локализованы отдельно (см. локализация классов ошибок для примера с готовыми классами ошибок этой той же библиотеки).

import { Logger } from "@yamato-daiwa/es-extensions";
import LoggerLocalization__Russian from "@yamato-daiwa/es-extensions-localization-russian";


Logger.setLocalization(LoggerLocalization__Russian);

Локализация классов ошибок

Объект, содержащий данные локализации конкретного класса ошибки, имеет имя согласно схеме

[ имя класса ошибки ]Lozalization__Russian

Например, для AlgorithmMismatchError это будет AlgorithmMismatchErrorLocalization__Russian. Имена всех доступных классов ошибок можно посмотреть в официальной документации.

Импортированный объект локализации следует присвоить открытому статическому полю localization соответствующего класса ошибки. Например, для AlgorithmMismatchError это будет:

import { AlgorithmMismatchError } from "@yamato-daiwa/es-extensions";
import { AlgorithmMismatchErrorLocalization__Russian } from "@yamato-daiwa/es-extensions-localization-russian";

AlgorithmMismatchError.localization = AlgorithmMismatchErrorLocalization__Russian;

Дополнительная функциональность

Константы и перечисления

Дата и время

Перечисление RussianDaysOfWeek

Перечисление, содержащее русские названия дней недели. Ключи перечисления совпадают с ключами DaysOfWeek.

console.log(RussianDaysOfWeek.sunday); // -> "ВОСКРЕСЕНЬЕ"
console.log(RussianDaysOfWeek.monday); // -> "ПОНЕДЕЛЬНИК"
console.log(RussianDaysOfWeek.tuesday); // -> "ВТОРНИК"
console.log(RussianDaysOfWeek.wednesday); // -> "СРЕДА"
console.log(RussianDaysOfWeek.thursday); // -> "ЧЕТВЕРГ"
console.log(RussianDaysOfWeek.friday); // -> "ПЯТНИЦА"
console.log(RussianDaysOfWeek.saturday); // -> "СУББОТА"
Перечисление RussianMonthsNames

Перечисление, содержащее русские названия месяцев. Ключи перечисления совпадают с ключами MonthsNames.

console.log(RussianMonthsNames.january); // -> "ЯНВАРЬ"
console.log(RussianMonthsNames.february); // -> "ФЕВРАЛЬ"
console.log(RussianMonthsNames.march); // -> "МАРТ"
console.log(RussianMonthsNames.april); // -> "АПРЕЛЬ"
console.log(RussianMonthsNames.may); // -> "МАЙ"
console.log(RussianMonthsNames.june); // -> "ИЮНЬ"
console.log(RussianMonthsNames.july); // -> "ИЮЛЬ"
console.log(RussianMonthsNames.august); // -> "АВГУСТ"
console.log(RussianMonthsNames.september); // -> "СЕНТЯБРЬ"
console.log(RussianMonthsNames.october); // -> "ОКТЯБРЬ"
console.log(RussianMonthsNames.november); // -> "НОЯБРЬ"
console.log(RussianMonthsNames.december); // -> "ДЕКАБРЬ"
1.6.5

4 months ago

1.6.4

10 months ago

1.6.3

10 months ago

1.6.2

11 months ago

1.6.1

1 year ago

1.6.0

1 year ago

1.6.0-alpha.0

2 years ago

1.5.3

2 years ago

1.5.2

2 years ago

1.5.1

2 years ago

1.5.0

2 years ago

0.0.0

2 years ago