poke_data/models/
localized_names.rs1use crate::models::language::LanguageId;
2use crate::types::language::Language;
3use serde::{Deserialize, Serialize};
4use std::collections::HashMap;
5
6#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct LocalizedStrings(HashMap<LanguageId, String>);
8
9impl LocalizedStrings {
10 pub fn new(localizations: HashMap<LanguageId, String>) -> Self {
11 Self(localizations)
12 }
13
14 pub fn localizations(&self) -> &HashMap<LanguageId, String> {
15 &self.0
16 }
17
18 pub fn get_by_language(&self, language: Language) -> &str {
19 let language_id = language as LanguageId;
20 if let Some(target) = self.0.get(&language_id) {
21 return target;
22 }
23
24 let default_language_id = Language::default() as LanguageId;
25 if let Some(default) = self.0.get(&default_language_id) {
26 return default;
27 }
28
29 "NO TRANSLATIONS"
30 }
31}