#cross-platform #mobile #gamedev #bevy


Crossplatform way to query device language setting

6 releases (breaking)

new 0.5.0 Jul 8, 2024
0.4.0 Jun 21, 2024
0.3.1 Jun 8, 2024
0.2.0 Jun 8, 2024
0.1.0 Jun 8, 2024

#633 in Game dev

Download history 297/week @ 2024-06-06 29/week @ 2024-06-13 160/week @ 2024-06-20 25/week @ 2024-06-27

511 downloads per month

MIT license

83 lines


crates.io docs.rs discord

Provides access device language cross-platform: iOS, Android, Web (Wasm), Windows & Linux. Useful to support app localization in the right language.

See also: bevy_ios_iap, bevy_ios_gamecenter, bevy_ios_notifications, bevy_ios_alerts, bevy_ios_review & bevy_ios_impact

See the crate in action in Zoolitaire:



  • macOS, iOS (using [NSLocale preferredLanguage] see docs)

  • Android (using Locale.getDefault().toLanguageTag see docs)

  • Wasm (uses web-sys and Navigator.language() see docs)

  • Windows (using GetUserDefaultLocaleName see docs)

  • Linux (using Env: LC_ALL, LC_MESSAGES or LANG)


Add dependency: bevy_device_lang = "0.4"

fn bevy_system() {
    let lang : Option<String> = bevy_device_lang::get_lang();


All code in this repository is dual-licensed under either:

at your option. This means you can select the license you prefer.

Your contributions

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.


~642K SLoC