diff options
| author | Joe Carstairs <65492573+Sycamost@users.noreply.github.com> | 2023-08-05 21:16:45 +0100 |
|---|---|---|
| committer | Joe Carstairs <65492573+Sycamost@users.noreply.github.com> | 2023-08-05 21:18:16 +0100 |
| commit | 90254344d599bc977c0661f7c9681b7509a9076e (patch) | |
| tree | d5c521f154994a33e0d09db48971d1a967a6f543 /src/i18n | |
| parent | 97147d56d93c7949fdccf22abe569b1b9d7a22ab (diff) | |
Moves to root folder
Diffstat (limited to 'src/i18n')
| -rw-r--r-- | src/i18n/locales.ts | 16 | ||||
| -rw-r--r-- | src/i18n/translate.ts | 9 | ||||
| -rw-r--r-- | src/i18n/translations/pages/home.ts | 11 | ||||
| -rw-r--r-- | src/i18n/translations/site.ts | 15 |
4 files changed, 51 insertions, 0 deletions
diff --git a/src/i18n/locales.ts b/src/i18n/locales.ts new file mode 100644 index 0000000..4192e3f --- /dev/null +++ b/src/i18n/locales.ts @@ -0,0 +1,16 @@ +import type Locale from '../types/Locale'; + +// Use the magic of TypeScript to guarantee completeness +const localesHash: { [key in Locale]: 1 } = { + 'sco': 1, + 'en-GB': 1, +}; + +// Use the magic of TypeScript to guarantee that the +// default locale is a locale, but also have const +// string type +const defaultLocaleAsLocale: Locale = 'sco'; +const defaultLocale: 'sco' = defaultLocaleAsLocale; + +export { defaultLocale }; +export default Object.keys(localesHash) as Locale[];
\ No newline at end of file diff --git a/src/i18n/translate.ts b/src/i18n/translate.ts new file mode 100644 index 0000000..c0d5620 --- /dev/null +++ b/src/i18n/translate.ts @@ -0,0 +1,9 @@ +import type Locale from "../types/Locale"; +import type { TranslationsDictionary } from "../types/TranslationsDictionary"; +import { defaultLocale } from "./locales"; + +export default function(locale: Locale) { + return function<T extends string>(dict: TranslationsDictionary<T>, key: T) { + return dict[key][locale] ?? dict[key][defaultLocale]; + } +}
\ No newline at end of file diff --git a/src/i18n/translations/pages/home.ts b/src/i18n/translations/pages/home.ts new file mode 100644 index 0000000..1415024 --- /dev/null +++ b/src/i18n/translations/pages/home.ts @@ -0,0 +1,11 @@ +import type { TranslationsDictionary } from "../../../types/TranslationsDictionary"; + +const homeTranslations = { + 'title': { + 'sco': 'Hame', + 'en-GB': 'Home', + }, +}; + +type Keys = keyof typeof homeTranslations; +export default homeTranslations as TranslationsDictionary<Keys>;
\ No newline at end of file diff --git a/src/i18n/translations/site.ts b/src/i18n/translations/site.ts new file mode 100644 index 0000000..1172846 --- /dev/null +++ b/src/i18n/translations/site.ts @@ -0,0 +1,15 @@ +import type { TranslationsDictionary } from "../../types/TranslationsDictionary"; + +const siteTranslations = { + 'title': { + 'sco': 'Scots Leid Associe', + 'en-GB': 'Scots Language Society', + }, + 'description': { + 'sco': 'The wabsteid o the Scots Leid Associe', + 'en-GB': 'The website of the Scots Language Society', + } +}; + +type Keys = keyof typeof siteTranslations; +export default siteTranslations as TranslationsDictionary<Keys>;
\ No newline at end of file |
