Skip to content

Instantly share code, notes, and snippets.

@jonasgroendahl
Last active February 23, 2021 22:21
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jonasgroendahl/b17bc8ce585c013fe0866af1f533454d to your computer and use it in GitHub Desktop.
Save jonasgroendahl/b17bc8ce585c013fe0866af1f533454d to your computer and use it in GitHub Desktop.
LanguageProvider
import React, {useState, useEffect, useContext} from 'react';
import en from '../lang/en.json';
import zh from '../lang/zh.json';
import * as RNLocalize from 'react-native-localize';
import App from '../App';
type LanguageContextType = {
hello: string;
};
const LanguageContext = React.createContext<LanguageContextType>(
{} as LanguageContextType,
);
const languageObj = {
en: en,
'zh-Hans-US': zh,
};
export const LanguageContextProvider: React.FC = ({children}) => {
const [selectedLanguage, setSelectedLanguage] = useState('en');
useEffect(() => {
const currentLanguage = RNLocalize.findBestAvailableLanguage(
Object.keys(languageObj),
);
setSelectedLanguage(currentLanguage?.languageTag || 'en');
}, []);
const value = {
...languageObj[selectedLanguage as 'en' | 'zh-Hans-US'],
};
return (
<LanguageContext.Provider value={value}>
<App />
</LanguageContext.Provider>
);
};
export const useTranslation = () => useContext(LanguageContext);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment