diff options
| author | Ben Beltran <ben@nsovocal.com> | 2020-06-20 16:20:31 +0200 |
|---|---|---|
| committer | Ben Beltran <ben@nsovocal.com> | 2020-06-20 16:20:31 +0200 |
| commit | 862a5f9cdbbda522c608ea63c1e296e81f44de10 (patch) | |
| tree | 126b943ec581a556dd4ff71d9403da47bb40299e /app/components | |
| parent | 7372fe18d4fb901d3ebb86e7a73443d4dc3afb70 (diff) | |
Add internationalization support
Diffstat (limited to 'app/components')
| -rw-r--r-- | app/components/error_block/error_block.svelte | 4 | ||||
| -rw-r--r-- | app/components/footer/footer.svelte | 47 | ||||
| -rw-r--r-- | app/components/forum_list/forum_list.svelte | 2 | ||||
| -rw-r--r-- | app/components/language_selector/language_selector.svelte | 28 |
4 files changed, 78 insertions, 3 deletions
diff --git a/app/components/error_block/error_block.svelte b/app/components/error_block/error_block.svelte index d649fb4..e46afa1 100644 --- a/app/components/error_block/error_block.svelte +++ b/app/components/error_block/error_block.svelte @@ -1,11 +1,11 @@ <script> import { _ } from 'svelte-i18n'; - export let message = $_('error.generic.message'); + export let message; </script> <div> <h2>{$_('error.generic.title')}</h2> - <p>{message}</p> + <p>{message || $_('error.generic.message')}</p> </div> <style> diff --git a/app/components/footer/footer.svelte b/app/components/footer/footer.svelte new file mode 100644 index 0000000..2d45cef --- /dev/null +++ b/app/components/footer/footer.svelte @@ -0,0 +1,47 @@ +<script> + import { _ } from 'svelte-i18n'; + + import LanguageSelector from '../language_selector/language_selector.svelte'; + + const licenseUrl = 'https://gitlab.com/rbdr/forum/'; +</script> + +<footer title="Toolbar"> + <ul> + <li>{@html $_('footer.license', { values: { licenseUrl } })}</li> + <li>{$_('footer.choose_language')}: <LanguageSelector /></li> + </ul> +</footer> + +<style> + footer { + grid-column: col-start 1 / span 12; + border-top: 1px solid black; + } + + ul { + padding: 0; + } + + .action-key { + font-weight: bold; + text-decoration: underline; + } + + li { + display: inline; + margin: 5px; + } + + a { + text-decoration: none; + line-height: 3em; + display: inline-block; + } + + strong a { + color: blue; + text-decoration: underline; + } + +</style> diff --git a/app/components/forum_list/forum_list.svelte b/app/components/forum_list/forum_list.svelte index c218bac..5ce4dc1 100644 --- a/app/components/forum_list/forum_list.svelte +++ b/app/components/forum_list/forum_list.svelte @@ -13,7 +13,7 @@ <li> <a href="/f/{forum.id}"> <span aria-hidden="true" class="navigation-glyph {forum.glyph}">{forum.glyph}</span> - <span class="navigation-label">{forum.label}</span> + <span class="navigation-label">{$_(forum.label)}</span> </a> </li> {/each} diff --git a/app/components/language_selector/language_selector.svelte b/app/components/language_selector/language_selector.svelte new file mode 100644 index 0000000..67c0814 --- /dev/null +++ b/app/components/language_selector/language_selector.svelte @@ -0,0 +1,28 @@ +<script> + import { locale, locales } from 'svelte-i18n'; + import { getLangNameFromCode } from 'language-name-map'; + + $: namedLocales = $locales + .map((locale) => ({ + code: locale, + ...getLangNameFromCode(locale) + })) + .sort((a, b) => a.native - b.native); + + let selected = $locale; + + $: { + console.log(`the current locale is ${selected}`); + locale.set(selected); + } +</script> + +<select bind:value={selected}> + {#each namedLocales as namedLocale} + <option value="{ namedLocale.code }">{ namedLocale.native }</option> + {/each} +</select> + +<style> +</style> + |