oxygengine_core/assets/protocols/
localization.rs1use 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}