From 581bf7c300d9cdeed111364c6b4cad08497bd232 Mon Sep 17 00:00:00 2001 From: Sandro Roth <16229645+rothsandro@users.noreply.github.com> Date: Sat, 23 Nov 2024 17:46:09 +0100 Subject: [PATCH 1/5] feat: add translations --- .app/.eleventy.js | 4 +++- .app/app-translations.js | 16 +++++++++++++ .app/i18n/en.js | 8 +++++++ .app/lib/modules/search/search.macro.njk | 24 ++++++++++--------- .app/lib/modules/translation/index.js | 13 ++++++++++ .../modules/translation/translate.filter.js | 17 +++++++++++++ .../modules/translation/ui-lang.shortcode.js | 5 ++++ app.mjs | 10 ++++++++ 8 files changed, 85 insertions(+), 12 deletions(-) create mode 100644 .app/app-translations.js create mode 100644 .app/i18n/en.js create mode 100644 .app/lib/modules/translation/index.js create mode 100644 .app/lib/modules/translation/translate.filter.js create mode 100644 .app/lib/modules/translation/ui-lang.shortcode.js diff --git a/.app/.eleventy.js b/.app/.eleventy.js index 3a8d4dd..7744843 100644 --- a/.app/.eleventy.js +++ b/.app/.eleventy.js @@ -8,11 +8,12 @@ import { tagsModule } from "./lib/modules/tags/index.js"; import { tocModule } from "./lib/modules/toc/index.js"; import { wikilinksModule } from "./lib/modules/wikilinks/index.js"; import { assetsModule } from "./lib/modules/assets/index.js"; +import { translationModule } from "./lib/modules/translation/index.js"; import { core } from "./lib/core/index.js"; export const config = core.configObj; -export default function (eleventyConfig) { +export default async function (eleventyConfig) { sharedModule.setup(eleventyConfig); customPropsModule.setup(eleventyConfig); dynamicContentModule.setup(eleventyConfig); @@ -23,6 +24,7 @@ export default function (eleventyConfig) { tocModule.setup(eleventyConfig); wikilinksModule.setup(eleventyConfig); assetsModule.setup(eleventyConfig); + await translationModule.setup(eleventyConfig); core.setup(eleventyConfig); } diff --git a/.app/app-translations.js b/.app/app-translations.js new file mode 100644 index 0000000..8d2960c --- /dev/null +++ b/.app/app-translations.js @@ -0,0 +1,16 @@ +// @ts-check +import en from "./i18n/en.js"; + +/** + * @typedef {typeof en} BaseTranslations; + * @typedef {{ [TKey in keyof BaseTranslations]: BaseTranslations[TKey] | (string & {})}} Translations + * @typedef {{ lang: string; translations: Partial}} TranslationConfig + */ + +/** + * @param {TranslationConfig} config + * @returns {TranslationConfig} The config + */ +export function defineTranslations(config) { + return config; +} diff --git a/.app/i18n/en.js b/.app/i18n/en.js new file mode 100644 index 0000000..6a3f8c9 --- /dev/null +++ b/.app/i18n/en.js @@ -0,0 +1,8 @@ +export default /** @type {const} */ ({ + "search.noscript": "Please enable JavaScript to use the search.", + "search.shortcutInfo": 'Press "/" to activate search', + "search.input.placeholder": "Search...", + "search.popover.placeholder": "Search by title, content and #tags", + "search.popover.searching": "Searching...", + "search.popover.noResults": "Nothing found, try a different search term.", +}); diff --git a/.app/lib/modules/search/search.macro.njk b/.app/lib/modules/search/search.macro.njk index 8525cb0..35b9cf6 100644 --- a/.app/lib/modules/search/search.macro.njk +++ b/.app/lib/modules/search/search.macro.njk @@ -3,8 +3,8 @@ {% set id = uniqueId() %} {% if mode === 'inline' %} -