Skip to content

Commit

Permalink
✨ [feat]: Refactor messages model to dynamically import translations
Browse files Browse the repository at this point in the history
  • Loading branch information
brunotot committed Sep 15, 2023
1 parent 1d4196a commit 01bc051
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 25 deletions.
4 changes: 2 additions & 2 deletions packages/core/src/messages/message.factory.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { getLocale } from "./model/locale";
import localizedMessages from "./model/messages";
import localeMessages from "./model/messages";

function sprintf(str: string, ...args: any[]) {
return str.replace(/{(\d+)}/g, function (match, number) {
Expand All @@ -10,7 +10,7 @@ function sprintf(str: string, ...args: any[]) {
// Central method for getting translation handlers.
const t = (key: string, ...args: any[]) => {
const locale = getLocale();
const service = localizedMessages[locale];
const service = localeMessages[locale];
return sprintf(service[key], ...args);
};

Expand Down
8 changes: 5 additions & 3 deletions packages/core/src/messages/message.types.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
export type Locale = "hr" | "en" | "de" | "es" | "fr" | "it" | "nl";
export const Locales = ["hr", "en", "de", "es", "fr", "it", "nl"] as const;

export type LocaleDefault = "en";
export type Locale = (typeof Locales)[number];

export type LocalizedMessages = Record<Locale, Messages>;
export const LocaleDefault: Locale = "en";

export type LocaleMessages = Record<Locale, Messages>;

export type Messages = Record<string, string>;
4 changes: 2 additions & 2 deletions packages/core/src/messages/model/locale.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Locale } from "../message.types";
import { Locale, LocaleDefault } from "../message.types";

let locale: Locale = "en";
let locale: Locale = LocaleDefault;

function getLocale(): Locale {
return locale;
Expand Down
29 changes: 11 additions & 18 deletions packages/core/src/messages/model/messages.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,13 @@
import { LocalizedMessages } from "../message.types";
import * as MessageFormatDe from "../translations/de.json";
import * as MessageFormatEn from "../translations/en.json";
import * as MessageFormatEs from "../translations/es.json";
import * as MessageFormatFr from "../translations/fr.json";
import * as MessageFormatHr from "../translations/hr.json";
import * as MessageFormatIt from "../translations/it.json";
import * as MessageFormatNl from "../translations/nl.json";
import { LocaleMessages, Locales } from "../message.types";

const localizedMessages: LocalizedMessages = {
en: MessageFormatEn,
hr: MessageFormatHr,
de: MessageFormatDe,
es: MessageFormatEs,
fr: MessageFormatFr,
it: MessageFormatIt,
nl: MessageFormatNl,
};
function buildLocaleMessages(): LocaleMessages {
return Locales.reduce(
(result, locale) => ({
...result,
[locale]: require(`../translations/${locale}.json`),
}),
{}
) as LocaleMessages;
}

export default localizedMessages;
export default buildLocaleMessages();

0 comments on commit 01bc051

Please sign in to comment.