paiagram/
i18n.rs

1use bevy::prelude::*;
2use egui_i18n::*;
3use serde::{Deserialize, Serialize};
4use strum_macros::EnumIter;
5
6/// Languages
7/// Sorted alphabetically
8#[derive(Reflect, Clone, Copy, Debug, EnumIter, PartialEq, Eq)]
9pub enum Language {
10    EnCA,
11    ZhHans,
12    JaJP,
13}
14
15impl Language {
16    pub fn name(self) -> &'static str {
17        match self {
18            Self::EnCA => "English (Canada)",
19            Self::ZhHans => "中文(简体)",
20            Self::JaJP => "Japanese",
21        }
22    }
23    pub fn identifier(self) -> &'static str {
24        match self {
25            Self::EnCA => "en-CA",
26            Self::ZhHans => "zh-Hans",
27            Self::JaJP => "ja-JP",
28        }
29    }
30}
31
32pub fn init(default_language: Option<&str>) {
33    load_translations_from_text("en-CA", include_str!("../assets/locales/en-CA.ftl")).unwrap();
34    load_translations_from_text("zh-Hans", include_str!("../assets/locales/zh-Hans.ftl")).unwrap();
35    set_language(default_language.unwrap_or("en-CA"));
36    set_fallback("en-CA");
37}