# ui_translate.ludic — translation: translate="no" keeps an element's text (and everything inside it) # as written, translate="yes" inside it translates again; a title of several lines is translated whole # when the translator knows it whole, else line by line, and not inside translate="no". import "ludic.ui" program UiTranslate { numbers float state UiTranslateState { said: []string = new []string now: float = 0.0 } const PAGE: string = "

Hello

Hello

Hello

Hello

a

b

c

" function tr(s: string) -> string { if s == "Hello" { return "Merhaba" } if s == "Save\\nQuit" { return "Kaydet ve cik" } if s == "Line one" { return "Satir bir" } if s == "Line two" { return "Satir iki" } return s } function rec_text(ui_translate_st: mut UiTranslateState, x: float, y: float, s: string, size: float, c: int, a: float) -> void { push(ui_translate_st.said, s) } function clock(ui_translate_st: UiTranslateState) -> float { return ui_translate_st.now } function tip(ui_st: mut UiState, ui_translate_st: mut UiTranslateState, root: UiNode, k: int) -> string { let n = root.children[k] let i = new UiInput i.x = n.x + 1.0 i.y = n.y + 1.0 ui_input(ui_st, i) ui_show(ui_st, "t", null, 0.0, 0.0, 400.0, 400.0) ui_translate_st.now = ui_translate_st.now + 1.0 ui_translate_st.said = new []string ui_input(ui_st, i) ui_show(ui_st, "t", null, 0.0, 0.0, 400.0, 400.0) return `{ui_translate_st.said[len(ui_translate_st.said) - 2]}/{ui_translate_st.said[len(ui_translate_st.said) - 1]}` } entry (ui_st: mut UiState, ui_translate_st: mut UiTranslateState) { let b = new UiBackend b.text = fn rec_text ui_backend(ui_st, b) ui_translator(ui_st, fn tr) ui_clock(ui_st, fn clock) ui_load_text(ui_st, PAGE, "t.xml") let root: UiNode = ui_nodes(ui_st, "t", null) ui_place(ui_st, root, 0.0, 0.0, 400.0, 400.0) let texts = `{root.children[0].text} {root.children[1].text} {root.children[2].children[0].text} {root.children[2].children[1].text}` print(`{texts} | {tip(ui_st, ui_translate_st, root, 3)} | {tip(ui_st, ui_translate_st, root, 4)} | {tip(ui_st, ui_translate_st, root, 5)}`) } }