aboutsummaryrefslogtreecommitdiffstats
path: root/src/utils/helpers/server/i18n.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils/helpers/server/i18n.ts')
-rw-r--r--src/utils/helpers/server/i18n.ts31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/utils/helpers/server/i18n.ts b/src/utils/helpers/server/i18n.ts
new file mode 100644
index 0000000..dbbc4e5
--- /dev/null
+++ b/src/utils/helpers/server/i18n.ts
@@ -0,0 +1,31 @@
+import { readFile } from 'fs/promises';
+import path from 'path';
+import { settings } from '../../config';
+
+export type Messages = { [key: string]: string };
+
+export const defaultLocale = settings.locales.defaultLocale;
+
+/**
+ * Load the translation for the provided locale.
+ *
+ * @param currentLocale - The current locale.
+ * @returns {Promise<Messages>} The translated strings.
+ */
+export async function loadTranslation(
+ currentLocale: string | undefined
+): Promise<Messages> {
+ const locale: string = currentLocale ?? defaultLocale;
+
+ const languagePath = path.join(process.cwd(), `lang/${locale}.json`);
+
+ try {
+ const contents = await readFile(languagePath, 'utf8');
+ return JSON.parse(contents);
+ } catch (error) {
+ console.error(
+ 'Error: Could not load compiled language files. Please run `yarn run i18n:compile` first."'
+ );
+ throw error;
+ }
+}