wgui: basic i18n support, refactoring: use LayoutState, translation framework (LLM-based generator)
This commit is contained in:
@@ -5,7 +5,8 @@
|
||||
width="1000" height="500" min_width="1000" min_height="500"
|
||||
gap="4" flex_direction="column"
|
||||
overflow_y="scroll">
|
||||
<label text="aaa" color="#FFFFFF" />
|
||||
<label text="Raw text" color="#FFFFFF" />
|
||||
<label translation="TESTBED.HELLO_WORLD" color="#FFFFFF" />
|
||||
|
||||
<button text="Red button" width="128" height="32" color="#FF0000" />
|
||||
<button text="Aqua button" width="128" height="32" color="#00FFFF" />
|
||||
|
||||
9
uidev/assets/lang/de.json
Normal file
9
uidev/assets/lang/de.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"BAR": {
|
||||
"OPACITY": "Undurchsichtigkeit",
|
||||
"ADDITIVE": "Additiv"
|
||||
},
|
||||
"TESTBED": {
|
||||
"HELLO_WORLD": "Hallo, Welt! Dies ist ein übersetzter I18n-Text."
|
||||
}
|
||||
}
|
||||
9
uidev/assets/lang/en.json
Normal file
9
uidev/assets/lang/en.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"BAR": {
|
||||
"OPACITY": "Opacity",
|
||||
"ADDITIVE": "Additive"
|
||||
},
|
||||
"TESTBED": {
|
||||
"HELLO_WORLD": "Hello, world! This is a translated I18n text."
|
||||
}
|
||||
}
|
||||
9
uidev/assets/lang/es.json
Normal file
9
uidev/assets/lang/es.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"BAR": {
|
||||
"OPACITY": "Opacidad",
|
||||
"ADDITIVE": "Aditivo"
|
||||
},
|
||||
"TESTBED": {
|
||||
"HELLO_WORLD": "¡Hola, mundo! Este es un texto traducido de I18n."
|
||||
}
|
||||
}
|
||||
9
uidev/assets/lang/ja.json
Normal file
9
uidev/assets/lang/ja.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"BAR": {
|
||||
"OPACITY": "不透明度",
|
||||
"ADDITIVE": "加法"
|
||||
},
|
||||
"TESTBED": {
|
||||
"HELLO_WORLD": "こんにちは、世界!これは翻訳されたI18nテキストです。"
|
||||
}
|
||||
}
|
||||
9
uidev/assets/lang/pl.json
Normal file
9
uidev/assets/lang/pl.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"BAR": {
|
||||
"OPACITY": "Przezroczystość",
|
||||
"ADDITIVE": "Addytywny"
|
||||
},
|
||||
"TESTBED": {
|
||||
"HELLO_WORLD": "Witaj, świecie! To przetłumaczony tekst I18n."
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
use crate::{assets, testbed::Testbed};
|
||||
use glam::Vec2;
|
||||
use wgui::{event::EventListenerCollection, layout::Layout, parser::ParserState};
|
||||
use wgui::{
|
||||
event::EventListenerCollection, globals::WguiGlobals, layout::Layout, parser::ParserState,
|
||||
};
|
||||
|
||||
pub struct TestbedAny {
|
||||
pub layout: Layout,
|
||||
@@ -15,8 +17,10 @@ impl TestbedAny {
|
||||
listeners: &mut EventListenerCollection<(), ()>,
|
||||
) -> anyhow::Result<Self> {
|
||||
let path = format!("gui/{name}.xml");
|
||||
let (layout, state) =
|
||||
wgui::parser::new_layout_from_assets(Box::new(assets::Asset {}), listeners, &path)?;
|
||||
|
||||
let globals = WguiGlobals::new(Box::new(assets::Asset {}))?;
|
||||
|
||||
let (layout, state) = wgui::parser::new_layout_from_assets(globals, listeners, &path)?;
|
||||
Ok(Self { layout, state })
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
use crate::{assets, testbed::Testbed};
|
||||
use glam::Vec2;
|
||||
use wgui::{event::EventListenerCollection, layout::Layout, parser::ParserState};
|
||||
use wgui::{
|
||||
event::EventListenerCollection, globals::WguiGlobals, layout::Layout, parser::ParserState,
|
||||
};
|
||||
|
||||
pub struct TestbedGeneric {
|
||||
pub layout: Layout,
|
||||
@@ -13,8 +15,9 @@ impl TestbedGeneric {
|
||||
pub fn new(listeners: &mut EventListenerCollection<(), ()>) -> anyhow::Result<Self> {
|
||||
const XML_PATH: &str = "gui/testbed.xml";
|
||||
|
||||
let (layout, state) =
|
||||
wgui::parser::new_layout_from_assets(Box::new(assets::Asset {}), listeners, XML_PATH)?;
|
||||
let globals = WguiGlobals::new(Box::new(assets::Asset {}))?;
|
||||
|
||||
let (layout, state) = wgui::parser::new_layout_from_assets(globals, listeners, XML_PATH)?;
|
||||
|
||||
Ok(Self { layout, state })
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user