React Nativeはゼロ単列4ダークモードとi 18 n国際化から
2765 ワード
RN :0.64
:Win10
前言
このシリーズのドキュメントはReact Native学習ノートで、主に学習中に発生した問題と注意点を記録します.このドキュメントに従って学習を開始したい人がいる場合は、各ステップを詳細にリストしないため、Androidとフロントエンドの開発基盤があるほうがいいです.このドキュメントは、著者の学習過程の重点難点だけを記録します.
1.ダークモード
OS 13のダークモードが発売された後、アップルはこの間、ダークモードに適応しなければならないと強制的に要求し、不適切なアプリケーションは棚から降りる問題に直面し、今は適応せざるを得なくなった.React Native 0.62バージョンでは、暗いモード、すなわちAppearanceモジュールをサポートするための新しいモジュールが追加されました.このモジュール開発者は、アプリケーションのテーマが濃い色なのか明るい色なのかを設定することができます.次の2つの方法があります.
// Appearance
import { Appearance } from 'react-native';
const colorScheme = Appearance.getColorScheme();
if (colorScheme === 'dark') {
// Use dark color scheme
}
// Hook
import React from 'react';
import { Text, StyleSheet, useColorScheme, View } from 'react-native';
const App = () => {
const colorScheme = useColorScheme();
return (
useColorScheme(): {colorScheme}
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: "center",
justifyContent: "center"
},
});
export default App;
2.i 18 n国際化
私たちが海外応用を開発する際、国際化は避けられない.この問題を解決するには、サードパーティ製ライブラリreact-native-i 18 nを使用して、nodeパッケージを以下の方法で導入する必要があります.
yarn:yarn add react-native-i18n;
npm:npm install react-native-i18n --save;
ここでは、国際化リソースファイルをlanguagesディレクトリの下に統合します.ディレクトリ構造は次のとおりです.
ios
android
src
languages
|__ en.js // English
|__ zh.js // Chinese
|__ index.js
...
index.jsファイルは次のとおりです.
/**
*
*/
import I18n from 'i18n-js';
import * as RNLocalize from 'react-native-localize';
import cn from './cn';
import en from './en';
const locales = RNLocalize.getLocales();
const systemLanguage = locales[0]?.languageCode; //
if (systemLanguage) {
I18n.locale = systemLanguage;
} else {
I18n.locale = 'en'; //
}
I18n.fallbacks = true;
I18n.translations = {
zh: cn,
en,
};
export default I18n;
cn.js:
export default {
privacy: ' ',
terms: ' ',
back: ' ',
};
en.js:
export default {
privacy: 'Privacy Policy',
terms: 'Terms of Service',
back: 'Back',
};
次の操作を行います.
/**
* Demo
*/
import React from 'react';
import {View, Text} from 'react-native';
import I18n from '../../languages/index';
const Demo = () => {
return (
{I18n.t('privacy')} // Privacy Policy
);
};
export default Demo;