aboutsummaryrefslogtreecommitdiff
path: root/app/components
diff options
context:
space:
mode:
authorBen Beltran <ben@nsovocal.com>2020-06-20 16:20:31 +0200
committerBen Beltran <ben@nsovocal.com>2020-06-20 16:20:31 +0200
commit862a5f9cdbbda522c608ea63c1e296e81f44de10 (patch)
tree126b943ec581a556dd4ff71d9403da47bb40299e /app/components
parent7372fe18d4fb901d3ebb86e7a73443d4dc3afb70 (diff)
Add internationalization support
Diffstat (limited to 'app/components')
-rw-r--r--app/components/error_block/error_block.svelte4
-rw-r--r--app/components/footer/footer.svelte47
-rw-r--r--app/components/forum_list/forum_list.svelte2
-rw-r--r--app/components/language_selector/language_selector.svelte28
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>
+