summaryrefslogtreecommitdiff
path: root/app/i18n/i18n.ts
diff options
context:
space:
mode:
Diffstat (limited to 'app/i18n/i18n.ts')
-rw-r--r--app/i18n/i18n.ts22
1 files changed, 22 insertions, 0 deletions
diff --git a/app/i18n/i18n.ts b/app/i18n/i18n.ts
new file mode 100644
index 0000000..a563bbb
--- /dev/null
+++ b/app/i18n/i18n.ts
@@ -0,0 +1,22 @@
+import * as Localization from "expo-localization"
+import i18n from "i18n-js"
+import en from "./en.json"
+import ja from "./ja.json"
+
+i18n.fallbacks = true
+i18n.translations = { en, ja }
+
+i18n.locale = Localization.locale || "en"
+
+/**
+ * Builds up valid keypaths for translations.
+ * Update to your default locale of choice if not English.
+ */
+type DefaultLocale = typeof en
+export type TxKeyPath = RecursiveKeyOf<DefaultLocale>
+
+type RecursiveKeyOf<TObj extends Record<string, any>> = {
+ [TKey in keyof TObj & string]: TObj[TKey] extends Record<string, any>
+ ? `${TKey}` | `${TKey}.${RecursiveKeyOf<TObj[TKey]>}`
+ : `${TKey}`
+}[keyof TObj & string]