feat: 🎸 Fler språk (#400)
* feat: 🎸 Fler språk Lade till alla översättningar vi har fått hittills * fix: 🐛 scroll i språklistan och deepmerge av språk * style: 💄 linting
This commit is contained in:
parent
b3adf0574b
commit
0e8e90581b
|
@ -9,7 +9,7 @@ import {
|
|||
} from '@ui-kitten/components'
|
||||
import React, { useState } from 'react'
|
||||
import { StyleSheet, View } from 'react-native'
|
||||
import { TouchableOpacity } from 'react-native-gesture-handler'
|
||||
import { ScrollView, TouchableOpacity } from 'react-native-gesture-handler'
|
||||
import { useLanguage } from '../hooks/useLanguage'
|
||||
import { isRTL, LanguageService } from '../services/languageService'
|
||||
import { Layout as LayoutStyle, Sizing } from '../styles'
|
||||
|
@ -65,26 +65,29 @@ export const SetLanguage = () => {
|
|||
alignment="center"
|
||||
title={translate('language.changeLanguage')}
|
||||
/>
|
||||
|
||||
<View style={styles.content}>
|
||||
<Layout style={styles.container}>
|
||||
<View style={styles.languageList}>
|
||||
{activeLanguages.map((language) => (
|
||||
<TouchableOpacity
|
||||
key={language.langCode}
|
||||
style={styles.languageButton}
|
||||
onPress={() => setSelectedLanguage(language.langCode)}
|
||||
>
|
||||
<Text style={styles.check}>
|
||||
{isSelected(language.langCode) ? '✓' : ''}
|
||||
</Text>
|
||||
<Text>{language.languageName}</Text>
|
||||
<Text style={styles.languageButtonSubtitle}>
|
||||
{language.languageLocalName}
|
||||
</Text>
|
||||
</TouchableOpacity>
|
||||
))}
|
||||
</View>
|
||||
</Layout>
|
||||
<ScrollView>
|
||||
<Layout style={styles.container}>
|
||||
<View style={styles.languageList}>
|
||||
{activeLanguages.map((language) => (
|
||||
<TouchableOpacity
|
||||
key={language.langCode}
|
||||
style={styles.languageButton}
|
||||
onPress={() => setSelectedLanguage(language.langCode)}
|
||||
>
|
||||
<Text style={styles.check}>
|
||||
{isSelected(language.langCode) ? '✓' : ''}
|
||||
</Text>
|
||||
<Text>{language.languageName}</Text>
|
||||
<Text style={styles.languageButtonSubtitle}>
|
||||
{language.languageLocalName}
|
||||
</Text>
|
||||
</TouchableOpacity>
|
||||
))}
|
||||
</View>
|
||||
</Layout>
|
||||
</ScrollView>
|
||||
|
||||
<ButtonGroup style={styles.buttonGroup}>
|
||||
<Button
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
"@ui-kitten/components": "5.0.0",
|
||||
"@ui-kitten/eva-icons": "5.0.0",
|
||||
"buffer": "6.0.3",
|
||||
"deepmerge": "^4.2.2",
|
||||
"fast-fuzzy": "^1.10.8",
|
||||
"formik": "2.2.6",
|
||||
"hermes-engine": "0.7.2",
|
||||
|
|
|
@ -1,9 +1,19 @@
|
|||
import { I18nManager } from 'react-native'
|
||||
import i18n from 'i18n-js'
|
||||
import merge from 'deepmerge'
|
||||
import moment from 'moment'
|
||||
import 'moment/locale/ar'
|
||||
import 'moment/locale/de'
|
||||
import 'moment/locale/es'
|
||||
import 'moment/locale/fi'
|
||||
import 'moment/locale/fr'
|
||||
import 'moment/locale/it'
|
||||
import 'moment/locale/ja'
|
||||
import 'moment/locale/uz-latn'
|
||||
import 'moment/locale/nb'
|
||||
import 'moment/locale/nl'
|
||||
import 'moment/locale/pl'
|
||||
import 'moment/locale/ru'
|
||||
import 'moment/locale/sv'
|
||||
|
||||
const changeListeners: Record<string, any> = {}
|
||||
|
@ -47,7 +57,7 @@ export const LanguageService = {
|
|||
setLanguageCode: ({ langCode }: { langCode?: string }) => {
|
||||
if (langCode && allString[langCode]) {
|
||||
languageCode = langCode
|
||||
Strings = { ...allString.sv, ...allString[langCode] }
|
||||
Strings = merge(allString.sv, allString[langCode])
|
||||
} else {
|
||||
const dataKeys = Object.keys(allString)
|
||||
languageCode = dataKeys[0]
|
||||
|
|
|
@ -14,12 +14,68 @@ export const languages: Language[] = [
|
|||
languageLocalName: 'Svenska',
|
||||
active: true,
|
||||
},
|
||||
{
|
||||
langCode: 'ar',
|
||||
languageName: 'Arabic',
|
||||
languageLocalName: 'اَلْعَرَبِيَّةُ',
|
||||
active: true,
|
||||
},
|
||||
{
|
||||
langCode: 'nl',
|
||||
languageName: 'Dutch',
|
||||
languageLocalName: 'Nederlands',
|
||||
active: true,
|
||||
},
|
||||
{
|
||||
langCode: 'en',
|
||||
languageName: 'English',
|
||||
languageLocalName: 'English',
|
||||
active: true,
|
||||
},
|
||||
|
||||
{
|
||||
langCode: 'de',
|
||||
languageName: 'German',
|
||||
languageLocalName: 'Deutsch',
|
||||
active: true,
|
||||
},
|
||||
|
||||
{
|
||||
langCode: 'fi',
|
||||
languageName: 'Finnish',
|
||||
languageLocalName: 'Suomalainen',
|
||||
active: true,
|
||||
},
|
||||
{
|
||||
langCode: 'fr',
|
||||
languageName: 'French',
|
||||
languageLocalName: 'Française',
|
||||
active: true,
|
||||
},
|
||||
{
|
||||
langCode: 'it',
|
||||
languageName: 'Italian',
|
||||
languageLocalName: 'Italiana',
|
||||
active: true,
|
||||
},
|
||||
{
|
||||
langCode: 'ja',
|
||||
languageName: 'Japanese',
|
||||
languageLocalName: '日本語',
|
||||
active: false,
|
||||
},
|
||||
{
|
||||
langCode: 'la',
|
||||
languageName: 'Latin',
|
||||
languageLocalName: 'Latine',
|
||||
active: false,
|
||||
},
|
||||
{
|
||||
langCode: 'nb_NO',
|
||||
languageName: 'Norwegian Bokmål',
|
||||
languageLocalName: 'Norsk Bokmål',
|
||||
active: true,
|
||||
},
|
||||
{
|
||||
langCode: 'pl',
|
||||
languageName: 'Polish',
|
||||
|
@ -27,22 +83,22 @@ export const languages: Language[] = [
|
|||
active: true,
|
||||
},
|
||||
{
|
||||
langCode: 'de',
|
||||
languageName: 'German',
|
||||
languageLocalName: 'Deutsch',
|
||||
active: true,
|
||||
},
|
||||
{
|
||||
langCode: 'ar',
|
||||
languageName: 'Arabic',
|
||||
languageLocalName: 'اَلْعَرَبِيَّةُ',
|
||||
langCode: 'ru',
|
||||
languageName: 'Russian',
|
||||
languageLocalName: 'русский',
|
||||
active: false,
|
||||
},
|
||||
{
|
||||
langCode: 'so',
|
||||
languageName: 'Somali',
|
||||
languageLocalName: 'af-Soomaali',
|
||||
active: false,
|
||||
active: true,
|
||||
},
|
||||
{
|
||||
langCode: 'es',
|
||||
languageName: 'Spanish',
|
||||
languageLocalName: 'Español',
|
||||
active: true,
|
||||
},
|
||||
]
|
||||
|
||||
|
@ -50,7 +106,16 @@ export const translations = {
|
|||
ar: require('../translations/ar.json'),
|
||||
de: require('../translations/de.json'),
|
||||
en: require('../translations/en.json'),
|
||||
es: require('../translations/es.json'),
|
||||
fi: require('../translations/fi.json'),
|
||||
fr: require('../translations/fr.json'),
|
||||
it: require('../translations/it.json'),
|
||||
ja: require('../translations/ja.json'),
|
||||
la: require('../translations/la.json'),
|
||||
nb_NO: require('../translations/nb_NO.json'),
|
||||
nl: require('../translations/nl.json'),
|
||||
pl: require('../translations/pl.json'),
|
||||
ru: require('../translations/ru.json'),
|
||||
so: require('../translations/so.json'),
|
||||
sv: require('../translations/sv.json'),
|
||||
}
|
||||
|
|
|
@ -6186,9 +6186,9 @@ lru-cache@^6.0.0:
|
|||
yallist "^4.0.0"
|
||||
|
||||
luxon@^1.26.0:
|
||||
version "1.26.0"
|
||||
resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.26.0.tgz#d3692361fda51473948252061d0f8561df02b578"
|
||||
integrity sha512-+V5QIQ5f6CDXQpWNICELwjwuHdqeJM1UenlZWx5ujcRMc9venvluCjFb4t5NYLhb6IhkbMVOxzVuOqkgMxee2A==
|
||||
version "1.27.0"
|
||||
resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.27.0.tgz#ae10c69113d85dab8f15f5e8390d0cbeddf4f00f"
|
||||
integrity sha512-VKsFsPggTA0DvnxtJdiExAucKdAnwbCCNlMM5ENvHlxubqWd0xhZcdb4XgZ7QFNhaRhilXCFxHuoObP5BNA4PA==
|
||||
|
||||
make-dir@^2.0.0, make-dir@^2.1.0:
|
||||
version "2.1.0"
|
||||
|
|
Loading…
Reference in New Issue