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