Objective-Cの[NSLocale currentLocale]と似ています。反応したネイティブ(iOS)でデバイスのロケールを取得する最も良い方法は何ですか?
答えて
この情報を取得するには、自分自身で対応する必要がある場合があります。しかし、あなたのユースケースに応じて、このローカリゼーションコンポーネント(stefalda/ReactNativeLocalization)が役に立つかもしれません。
私はi18nパッケージ(react-native-i18n)を使用しています。 そして、それだけだ。
I18n = require('react-native-i18n')
locale = I18n.currentLocale()
あなたはこの機能を使用することができます両方のAndroidとiOSの下
import React, { NativeModules } from 'react-native'
...
function getLocale() {
if (React.Platform.OS === 'android') {
return NativeModules.RNI18n.getCurrentLocale(locale => locale.replace(/_/, '-'))
} else {
return NativeModules.RNI18n.locale.replace(/_/, '-')
}
}
作品。あなたがに組み込むすでに必要なものを見つけることが
'NativeModules'は' RNI18n'を持っていません(少なくともデフォルトでは)。私はあなたがlibを追加したと思います。 – antoine129
私はあなたがhttps://github.com/AlexanderZaytsev/react-native-i18n – antoine129
は外部ライブラリなしでネイティブリアクト:
import {NativeModules} from 'react-native'
locale = NativeModules.SettingsManager.settings.AppleLocale
はこれをテストするために、私はフランス/フランス語&にXcodeでのスキームエディタでアプリケーション言語やアプリケーション地域を変更私は変化に気づいた。これは、あなたが後になっているかもしれないかもしれませんが、NativeModules.SettingsManager.settings
オブジェクトは、何らかの使用の可能性があります。
import React, {NativeModules} from 'react-native';
if (NativeModules.I18nManager) {
const {localeIdentifier, isRTL} = NativeModules.I18nManager;
}
私はAndroidとiOSのため、この解決策を見つけた
{
AddingEmojiKeybordHandled: true
AppleITunesStoreItemKinds: Array[20]
AppleKeyboards: [
"[email protected]=US;sw=QWERTY",
"[email protected]=Emoji",
"[email protected]=US;sw=QWERTY"
]
AppleKeyboardsExpanded: 1
AppleLanguages: ["en-US"]
AppleLanguagesDidMigrate: "9.2"
AppleLocale: "fr_FR"
ApplePasscodeKeyboards: Array[3]
MSVLoggingMasterSwitchEnabledKey: false
NSInterfaceStyle: "macintosh"
NSLanguages: ["en-US", "en"]
RCTDevMenu: Object
}
をインストールしたと思います。Androidでは動作しません。 –
@DanielSteigerwaldこの方法での設定へのアクセスは、Androidではまだサポートされていません。 [Settings.android.js](https://github.com/facebook/react-native/blob/94666f16c7da37e649316d40ea23d7a8054a04f9/Libraries/Settings/Settings.android.js) –
Android用に「NativeModules.I18nManager.localeIdentifier」を使用してください –
(RN 0.35)、これはに役立つことがある:ここで
は、オブジェクトの設定で見つけるものの一例です誰かがiOSにロケールのプロパティは表示されません。今はrtlサポートのみを表示しています。
上記のどれも私のために働いたのではなく、thisコンポーネントです。
console.log("Device Locale", DeviceInfo.getDeviceLocale()); // e.g en-US
function getLocale() {
if (React.Platform.OS === 'android') {
return I18n.locale;
} else {
return NativeModules.SettingsManager.settings.AppleLocale.replace(/_/, '-');
}
}
あなたは万博上で開発する場合...あなたが使用することができます:Facebookの開発者が時間をかけて
console.log(await NativeModules.ExponentUtil.getCurrentLocaleAsync());
console.log(await NativeModules.ExponentUtil.getCurrentDeviceCountryAsync());
console.log(await NativeModules.ExponentUtil.getCurrentTimeZoneAsync());
NativeModulesソリューションcan be changed。
この理由のため私はa componentを準備しました。 (それは、今のAndroid上でのみ動作します)
使用例:
import SystemSettings from 'react-native-system-settings'
SystemSettings.get(
settings => console.log('settings: ', settings)
)
また約束-、その後は使用することができます:
SystemSettings.get().then(settings => console.log('settings: ', settings)).done()
またES7の非同期待つ方法を使用することができます!
class App extends React.Component {
componentWillMount() {
this._loadInitialState()
}
_loadInitialState = async() => {
try {
let settings = await SystemSettings.get()
// Now settings variable would be filled and can be used!
} catch (error) {}
};
}
サンプル結果:機能以下
{
densityDpi: 320,
fontScale: 1,
hardKeyboardHidden: "no",
keyboard: "qwerty",
keyboardHidden: "no",
localization: {
country: "US",
displayCountry: "United States",
displayLanguage: "English",
displayName: "English (United States)",
is24HourFormat: false,
language: "en",
locale: "en_US",
networkCountry: "US",
simCountry: "US",
timeZone: {
ID: "Europe/Amsterdam",
displayName: {
long: "Amsterdam Standard Time",
short: "GMT+01:00",
},
offset: 3600000
}
},
orientation: "portrait",
screenHeightDp: 615,
screenLayout: "normal",
screenWidthDp: 360,
smallestScreenWidthDp: 360,
uiModeType: "normal"
}
は、2文字の言語コードを返します。例:en
function getLanguageCode() {
let systemLanguage = 'en';
if (Platform.OS === 'android') {
systemLanguage = NativeModules.I18nManager.localeIdentifier;
} else {
systemLanguage = NativeModules.SettingsManager.settings.AppleLocale;
}
const languageCode = systemLanguage.substring(0, 2);
return languageCode;
}
個人的には、反応性ネイティブのi18nを使用することをお勧めします。反応FYI誰の新しいバージョンにhttps://github.com/AlexanderZaytsev/react-native-i18n
- 1. ネイティブの反応でタスクをスケジュールする最良の方法は何ですか?
- 2. 反応ネイティブでiosのオフラインバンドルを取得する方法
- 3. PHPでHashTableを取得する最も良い方法は何ですか?
- 4. NumPyで乱数を取得する最も良い方法は何ですか?
- 5. Cycle.jsアプリでビューポートサイズを取得する最も良い方法は何ですか?
- 6. オンラインで署名を取得する最も良い方法は何ですか?
- 7. pngからsvgを取得する最も良い方法は何ですか?
- 8. クライアントアプリケーションのメールを取得する最も良い方法は何ですか?
- 9. ユーザロケーションサーバ側を取得する最も良い方法は何ですか
- 10. JPA要約オブジェクトを取得する最も良い方法は何ですか?
- 11. iOSアプリでフォルダを実装する最も良い方法は何ですか?
- 12. 反応するネイティブ実行-IOSは私がネイティブIOSが反応している
- 13. 反応するネイティブ・ナビゲーションを反応させ、ネイティブ歩哨iosで
- 14. アプリからiOSファイルシステムにアクセスする最も良い方法は何ですか?
- 15. iOSにローカルデータを保存/ロードする最も良い方法は何ですか?
- 16. 反応ネイティブのスタイルをカスケードする最も簡単な方法
- 17. 今すぐ反応する最良のバージョンは何ですか?
- 18. Androidで不完全なプロセスでWebページを取得しています。最も反応の良い方法は何ですか?
- 19. 反応ネイティブで作成したアプリのナビゲーションエラーを取得する
- 20. 反応成分に試薬成分を使用する最も良い方法は何ですか?
- 21. 春のセキュリティでログに記録されたユーザーを取得する最も良い方法は何ですか?
- 22. コレクションをロックする最も良い方法は何ですか?
- 23. サードパーティのライブラリなしでJSoNから動的オブジェクトを取得する最も良い方法は何ですか?
- 24. 反応するネイティブ - カメラロールビデオのサムネイルURIを取得する方法
- 25. 反応ネイティブWebviewから選択オブジェクトを取得する方法
- 26. iOSでRootViewControllerを探す最良の方法は何ですか
- 27. サードパーティのplistからネストされた辞書を取得する最も良い方法は何ですか?
- 28. 文字列または文字配列のインデックスを取得する最も良い方法は何ですか?
- 29. URLの配列からコンテンツを取得する方法ネイティブで反応する
- 30. 反応ネイティブiOSネイティブモジュールのアクティブビューを取得する
エラー: あなたは...ドキュメント内でこのよう
リンクを使用することができます。 –