oxygengine_core/assets/protocols/
localization.rs

1use crate::assets::protocol::{AssetLoadResult, AssetProtocol};
2use serde::{Deserialize, Serialize};
3use std::{collections::HashMap, str::from_utf8};
4
5#[derive(Debug, Default, Clone, Serialize, Deserialize)]
6pub struct LocalizationAsset {
7    pub language: String,
8    pub dictionary: HashMap<String, String>,
9}
10
11pub struct LocalizationAssetProtocol;
12
13impl AssetProtocol for LocalizationAssetProtocol {
14    fn name(&self) -> &str {
15        "locals"
16    }
17
18    fn on_load(&mut self, data: Vec<u8>) -> AssetLoadResult {
19        let data = from_utf8(&data).unwrap();
20        match serde_json::from_str::<LocalizationAsset>(data) {
21            Ok(result) => AssetLoadResult::Data(Box::new(result)),
22            Err(error) => {
23                AssetLoadResult::Error(format!("Error loading localization asset: {:?}", error))
24            }
25        }
26    }
27}