22 changed files with 161 additions and 217 deletions
@ -0,0 +1,42 @@ |
|||||
|
import React from 'react'; |
||||
|
|
||||
|
import Translations_EN from '../translations/en'; |
||||
|
import Translations_JP from '../translations/jp'; |
||||
|
import Translations_PT from '../translations/pt'; |
||||
|
import type { |
||||
|
languageTemplate, |
||||
|
TranslationsContextData, |
||||
|
} from '../translations/TranslationsContext'; |
||||
|
import { LanguageEnum } from '../translations/TranslationsContext'; |
||||
|
|
||||
|
export const useTranslationsContextValue = (): TranslationsContextData => { |
||||
|
const [currentLanguage, setcurrentLanguage] = React.useState<LanguageEnum>( |
||||
|
LanguageEnum.ENGLISH, |
||||
|
); |
||||
|
const [translation, setTranslation] = |
||||
|
React.useState<languageTemplate>(Translations_EN); |
||||
|
|
||||
|
const setLanguage = React.useCallback( |
||||
|
(language: LanguageEnum) => { |
||||
|
setcurrentLanguage(language); |
||||
|
switch (language) { |
||||
|
case LanguageEnum.ENGLISH: |
||||
|
setTranslation(Translations_EN); |
||||
|
break; |
||||
|
case LanguageEnum.JAPANESE: |
||||
|
setTranslation(Translations_JP); |
||||
|
break; |
||||
|
case LanguageEnum.PORTUGUESE: |
||||
|
setTranslation(Translations_PT); |
||||
|
break; |
||||
|
} |
||||
|
}, |
||||
|
[setcurrentLanguage, setTranslation], |
||||
|
); |
||||
|
|
||||
|
return { |
||||
|
language: currentLanguage, |
||||
|
setLanguage: setLanguage, |
||||
|
translations: translation, |
||||
|
}; |
||||
|
}; |
||||
@ -1,73 +0,0 @@ |
|||||
import React from 'react'; |
|
||||
|
|
||||
import Translations_EN from './en'; |
|
||||
import Translations_JP from './jp'; |
|
||||
import Translations_PT from './pt'; |
|
||||
|
|
||||
export interface languageTemplate { |
|
||||
no_messages_message: string; |
|
||||
ui_settings_title: string; |
|
||||
nodes_title: string; |
|
||||
color_scheme_title: string; |
|
||||
language_title: string; |
|
||||
device_settings_title: string; |
|
||||
device_channels_title: string; |
|
||||
device_region_title: string; |
|
||||
device_wifi_ssid: string; |
|
||||
device_wifi_psk: string; |
|
||||
save_changes_button: string; |
|
||||
no_nodes_message: string; |
|
||||
no_message_placeholder: string; |
|
||||
} |
|
||||
|
|
||||
export enum LanguageEnum { |
|
||||
ENGLISH, |
|
||||
JAPANESE, |
|
||||
PORTUGUESE, |
|
||||
} |
|
||||
|
|
||||
const Context = React.createContext<{ |
|
||||
language: LanguageEnum; |
|
||||
setLanguage: React.Dispatch<React.SetStateAction<LanguageEnum>>; |
|
||||
translations: languageTemplate; |
|
||||
}>({ |
|
||||
language: LanguageEnum.ENGLISH, |
|
||||
setLanguage: () => {}, |
|
||||
translations: Translations_EN, |
|
||||
}); |
|
||||
|
|
||||
export const TranslationContext = ({ |
|
||||
children, |
|
||||
}: { |
|
||||
children: React.ReactNode; |
|
||||
}): JSX.Element => { |
|
||||
const [language, setLanguage] = React.useState<LanguageEnum>( |
|
||||
LanguageEnum.ENGLISH, |
|
||||
); |
|
||||
const [translation, setTranslation] = |
|
||||
React.useState<languageTemplate>(Translations_EN); |
|
||||
React.useEffect(() => { |
|
||||
switch (language) { |
|
||||
case LanguageEnum.ENGLISH: |
|
||||
setTranslation(Translations_EN); |
|
||||
break; |
|
||||
case LanguageEnum.JAPANESE: |
|
||||
setTranslation(Translations_JP); |
|
||||
break; |
|
||||
case LanguageEnum.PORTUGUESE: |
|
||||
setTranslation(Translations_PT); |
|
||||
break; |
|
||||
} |
|
||||
}, [language]); |
|
||||
return ( |
|
||||
<Context.Provider |
|
||||
value={{ |
|
||||
language: language, |
|
||||
setLanguage: setLanguage, |
|
||||
translations: translation, |
|
||||
}} |
|
||||
> |
|
||||
{children} |
|
||||
</Context.Provider> |
|
||||
); |
|
||||
}; |
|
||||
@ -0,0 +1,41 @@ |
|||||
|
import React from 'react'; |
||||
|
|
||||
|
import Translations_EN from './en'; |
||||
|
|
||||
|
export interface languageTemplate { |
||||
|
no_messages_message: string; |
||||
|
ui_settings_title: string; |
||||
|
nodes_title: string; |
||||
|
color_scheme_title: string; |
||||
|
language_title: string; |
||||
|
device_settings_title: string; |
||||
|
device_channels_title: string; |
||||
|
device_region_title: string; |
||||
|
device_wifi_ssid: string; |
||||
|
device_wifi_psk: string; |
||||
|
save_changes_button: string; |
||||
|
no_nodes_message: string; |
||||
|
no_message_placeholder: string; |
||||
|
} |
||||
|
|
||||
|
export enum LanguageEnum { |
||||
|
ENGLISH, |
||||
|
JAPANESE, |
||||
|
PORTUGUESE, |
||||
|
} |
||||
|
|
||||
|
export interface TranslationsContextData { |
||||
|
language: LanguageEnum; |
||||
|
setLanguage: (postId: number) => void; |
||||
|
translations: languageTemplate; |
||||
|
} |
||||
|
|
||||
|
export const translationsContextDefaultValue: TranslationsContextData = { |
||||
|
language: LanguageEnum.ENGLISH, |
||||
|
setLanguage: () => null, |
||||
|
translations: Translations_EN, |
||||
|
}; |
||||
|
|
||||
|
export const TranslationsContext = React.createContext<TranslationsContextData>( |
||||
|
translationsContextDefaultValue, |
||||
|
); |
||||
Loading…
Reference in new issue