반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- avds
- linux
- centos
- localserver
- ReactNative
- react
- Chrome
- Android
- 리눅스
- PYTHON
- build
- unittest
- 개발
- 센토스
- node
- TensorFlow
- 네트워크
- xcode
- MAC
- androidstudio
- qunit
- vsCode
- VirtualBox
- jest
- 맥
- webpack
- IOS
- picker
- MachineLearning
Archives
- Today
- Total
로메오의 블로그
[React Native] 다국어 처리 - react-intl 본문
반응형
react-intl 모듈 설치
$ npm install react-intl
lang 구성
$ mkdir /src/lang
$ touch /src/lang/lang.ko.ts
$ touch /src/lang/lang.en.ts
App.tsx
...
import {Platform, NativeModules} from 'react-native';
import {IntlProvider} from 'react-intl';
import enMessage from './src/lang/lang.en';
import koMessage from './src/lang/lang.ko';
const App = () => {
// 시스템 언어 가져오기
const getSystemLanguage = () => {
const deviceLanguage =
Platform.OS === 'ios'
? NativeModules.SettingsManager.settings.AppleLocale ||
NativeModules.SettingsManager.settings.AppleLanguages[0] // iOS 13
: NativeModules.I18nManager.localeIdentifier;
// 한국어 ko_KR
if (deviceLanguage.toLowerCase().indexOf('ko') >= 0) {
return 'ko';
}
// 영어 en_US
if (deviceLanguage.toLowerCase().indexOf('en') >= 0) {
return 'en';
}
return 'en';
};
let defaultLang = {};
const locale = getSystemLanguage();
if (locale === 'ko') {
defaultLang = koMessage;
}
if (locale === 'en') {
defaultLang = enMessage;
}
return (
<IntlProvider locale={locale} messages={defaultLang}>
...
</IntlProvider>
);
};
export default App;
lang.ko.ts
export default {
test: '한국어',
};
lang.en.ts
export default {
test: 'English',
};
사용하기
...
import {useIntl} from 'react-intl';
const TestComponent = (props: any) => {
const intl = useIntl();
console.log(intl.formatMessage({id: 'test', defaultMessage: '언어없음'}));
return (
<View>
<Text>
<FormattedMessage id="test" />
</Text>
</View>
);
};
export default TestComponent;
국가별 언어코드
언어 | 코드 |
아랍어 | ar-XA |
불가리아어 | bg |
크로아티아어 | hr |
체코어 | cs |
덴마크어 | da |
독일어 | de |
그리스어 | el |
영어 | en |
에스토니아어 | et |
스페인어 | es |
핀란드어 | fi |
프랑스어 | fr |
아일랜드어 | ga |
힌디어 | hi |
헝가리어 | hu |
히브리어 | he |
이탈리아어 | it |
일본어 | ja |
한국어 | ko |
라트비아어 | lv |
리투아니아어 | lt |
네덜란드어 | nl |
노르웨이어 | no |
폴란드어 | pl |
포르투갈어 | pt |
스웨덴어 | sv |
루마니아어 | ro |
러시아어 | ru |
세르비아어 | sr-CS |
슬로바키아어 | sk |
슬로베니아어 | sl |
태국어 | th |
터키어 | tr |
우크라이나어 | uk-UA |
중국어(간체) | zh-chs |
중국어(번체) | zh-cht |
반응형
'Frontend > React' 카테고리의 다른 글
[React Native] Android Backkey 종료 처리 (0) | 2022.12.18 |
---|---|
[React Native] 다국어 처리 - 언어별 앱이름 설정 (0) | 2022.12.18 |
[React Native] 프로모션 코드 발급하기 [Android 기준] (0) | 2022.12.13 |
[공지] 리딤 코드(프로모션코드) 받아가세요~ (0) | 2022.12.12 |
[React Native] Google Play 개발자 등록 (3) | 2022.12.09 |
Comments