From 0ad1af65697fd147270972599704eecda6e81a41 Mon Sep 17 00:00:00 2001 From: Robert Jaros Date: Wed, 22 Aug 2018 13:24:03 +0200 Subject: I18n support in Handlebars templates. --- src/main/kotlin/pl/treksoft/kvision/html/Tag.kt | 6 +++++- src/main/kotlin/pl/treksoft/kvision/html/Template.kt | 13 +++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) (limited to 'src/main/kotlin/pl/treksoft') diff --git a/src/main/kotlin/pl/treksoft/kvision/html/Tag.kt b/src/main/kotlin/pl/treksoft/kvision/html/Tag.kt index 3a15a4d0..ae26c5de 100644 --- a/src/main/kotlin/pl/treksoft/kvision/html/Tag.kt +++ b/src/main/kotlin/pl/treksoft/kvision/html/Tag.kt @@ -126,7 +126,11 @@ open class Tag( /** * Handlebars template. */ - override var template: (Any?) -> String by refreshOnUpdate() + override var template: ((Any?) -> String)? by refreshOnUpdate() + /** + * Handlebars templates for i18n. + */ + override var templates: Map String>? by refreshOnUpdate() init { @Suppress("LeakingThis") diff --git a/src/main/kotlin/pl/treksoft/kvision/html/Template.kt b/src/main/kotlin/pl/treksoft/kvision/html/Template.kt index a042fc3c..31155209 100644 --- a/src/main/kotlin/pl/treksoft/kvision/html/Template.kt +++ b/src/main/kotlin/pl/treksoft/kvision/html/Template.kt @@ -21,17 +21,26 @@ */ package pl.treksoft.kvision.html +import pl.treksoft.kvision.i18n.I18n + +/** + * Handlebars templates helper interface. + */ interface Template { var content: String? var rich: Boolean - var template: (Any?) -> String + var template: ((Any?) -> String)? + val templates: Map String>? + /** + * Handlebars template data object. + */ var templateData: Any? get() { return null } set(value) { if (!rich) rich = true - content = template(value) + content = template?.invoke(value) ?: templates?.get(I18n.language)?.invoke(value) } } -- cgit