1use bevy::prelude::*;
2use egui_i18n::*;
3
4#[derive(Reflect, Clone, Copy, Debug, PartialEq, Eq, Default)]
7pub enum Language {
8 #[default]
9 EnCA,
10 JaJP,
11 ZhHans,
12}
13
14impl Language {
15 pub const ALL: &[Self] = &[Self::EnCA, Self::JaJP, Self::ZhHans];
16 pub fn name(self) -> &'static str {
18 match self {
19 Self::EnCA => "English (Canada)",
20 Self::JaJP => "Japanese",
21 Self::ZhHans => "中文(简体)",
22 }
23 }
24 pub fn identifier(self) -> &'static str {
26 match self {
27 Self::EnCA => "en-CA",
28 Self::JaJP => "ja-JP",
29 Self::ZhHans => "zh-Hans",
30 }
31 }
32 pub fn set(&mut self, identifier: &str) -> bool {
34 for lang in Self::ALL {
35 if identifier != lang.identifier() {
36 continue;
37 }
38 *self = *lang;
39 return true;
40 }
41 false
42 }
43}
44
45pub fn init() {
46 let default_identifier = Language::default().identifier();
47 load_translations_from_text(
49 default_identifier,
50 include_str!("../../paiagram-ui/assets/locales/en-CA.ftl"),
51 )
52 .unwrap();
53 load_translations_from_text(
54 "zh-Hans",
55 include_str!("../../paiagram-ui/assets/locales/zh-Hans.ftl"),
56 )
57 .unwrap();
58 set_language(default_identifier);
59 set_fallback(default_identifier);
60}