Skip to content

A lightweight and efficient React Native turbo module that provides easy access to the device's locale.

License

Notifications You must be signed in to change notification settings

wneel/react-native-get-device-locale

Repository files navigation

react-native-get-device-locale

react-native-get-device-locale is a lightweight and efficient React Native module that provides easy access to the device's locale. Designed to work seamlessly with React Native’s new architecture, it replaces the now unreliable APIs (NativeModules.SettingsManager.settings.AppleLocale and similar) following recent updates in React Native.


✨ Features

  • Retrieve the device’s locale in en_US, fr_FR format.
  • Compatible with React Native >= 0.68 and the new architecture (TurboModules).
  • Minimal setup with low resource usage.
Support
react-native version >=0.68
Android
iOS
New Architecture

📦 Installation

npm install react-native-get-device-locale

Additional Steps (iOS only)

After installation, run the following command in your project’s ios directory:

cd ios && pod install

📖 Usage Example

Here's how to use `react-native-get-device-locale to retrieve the device locale:

const deviceLocale = await getDeviceLocale("fr_FR"); // Optional default locale if fetching fails (en_US by default in case of error)

Minimal App demo:

import { useState, useEffect } from 'react';
import { View, Text } from 'react-native';
import { getDeviceLocale } from 'react-native-get-device-locale';

export default function App() {
	const [locale, setLocale] = useState<string | null>(null);

	useEffect(() => {
		(async () => {
			const deviceLocale = await getDeviceLocale();
			setLocale(deviceLocale);
		})();
	}, []);

	return (
		<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
			<Text>Device Locale: {locale}</Text>
		</View>
	);
}

💼 Use Cases

This package serves as a replacement for deprecated native locale-fetching methods like:

  • NativeModules.SettingsManager.settings.AppleLocale
  • NativeModules.SettingsManager.settings.AppleLanguages[0]
  • NativeModules.I18nManager.localeIdentifier

Which no longer work in React Native 0.76 and above. getDeviceLocale provides a reliable and modern way to access the device locale, compatible with the latest React Native architecture.


🔄 Roadmap and Future Features

Planned additions:

  • Alternate locale formats (e.g., en or en-US).
  • Getting all the device locales if multiple.

🛠️ Contributing

Contributions are welcome! We follow the conventional commits guidelines. To contribute:

  1. Fork the repo.
  2. Clone it and create a new branch.
  3. Follow the commit message conventions.
  4. Open a Pull Request!

💡 Tip: Make sure your commit messages are in English for consistency!


📞 Support

If you have questions or issues, feel free to open an issue on GitHub. I’ll stay active to respond to queries and provide support.

About

A lightweight and efficient React Native turbo module that provides easy access to the device's locale.

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published