poke_data/models/
localized_names.rs

1use 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}