english fallback when using other languages

This commit is contained in:
SpikeHD
2022-07-25 18:13:37 -07:00
parent a06a8af7df
commit afa40f437f

View File

@@ -21,14 +21,18 @@ export default class Tr extends React.Component<IProps, IState> {
} }
} }
componentDidMount() { async componentDidMount() {
const { text } = this.props const { text } = this.props
getConfigOption('language').then((language: string) => { let language = await getConfigOption('language')
// Get translation file // Get translation file
if (!language) language = 'en' if (!language) language = 'en'
invoke('get_lang', { lang: language }).then((response) => { const response = await invoke('get_lang', { lang: language })
const default_resp = await invoke('get_lang', { lang: 'en' })
const translation_obj = JSON.parse((response as string) || '{}') const translation_obj = JSON.parse((response as string) || '{}')
const default_obj = JSON.parse((default_resp as string) || '{}')
// Traversal // Traversal
if (text.includes('.')) { if (text.includes('.')) {
@@ -43,6 +47,19 @@ export default class Tr extends React.Component<IProps, IState> {
} }
} }
// If we could not find a translation, use the default one
if (!translation) {
translation = default_obj
for (let i = 0; i < keys.length; i++) {
if (!translation) {
translation = ''
} else {
translation = typeof translation !== 'string' ? translation[keys[i]] : (translation as string)
}
}
}
this.setState({ this.setState({
translated_text: translation as string, translated_text: translation as string,
}) })
@@ -51,8 +68,6 @@ export default class Tr extends React.Component<IProps, IState> {
translated_text: translation_obj[text] || '', translated_text: translation_obj[text] || '',
}) })
} }
})
})
} }
render() { render() {
@@ -82,6 +97,7 @@ export async function getLanguages() {
export async function translate(text: string) { export async function translate(text: string) {
const language = (await getConfigOption('language')) || 'en' const language = (await getConfigOption('language')) || 'en'
const translation_json = JSON.parse((await invoke('get_lang', { lang: language })) || '{}') const translation_json = JSON.parse((await invoke('get_lang', { lang: language })) || '{}')
const default_json = JSON.parse(await invoke('get_lang', { lang: 'en' }))
// Traversal // Traversal
if (text.includes('.')) { if (text.includes('.')) {
@@ -96,6 +112,19 @@ export async function translate(text: string) {
} }
} }
// If we could not find a translation, use the default one
if (!translation) {
translation = default_json
for (let i = 0; i < keys.length; i++) {
if (!translation) {
translation = ''
} else {
translation = typeof translation !== 'string' ? translation[keys[i]] : (translation as string)
}
}
}
return translation return translation
} else { } else {
return translation_json[text] || '' return translation_json[text] || ''