summaryrefslogtreecommitdiffstats
path: root/lib/classes
diff options
context:
space:
mode:
authormaike <maike@synzr.tw>2026-09-03 23:10:44 +0500
committermaike <maike@synzr.tw>2026-09-03 23:10:44 +0500
commit2434488e501418d0c75bcfd1f8281eb46ee45bbb (patch)
tree0e64a3125b9e50e1cbcc03045950eb3c285ac986 /lib/classes
parentb5dcc96742cc2cbf98e4c0f734e842418e4f4307 (diff)
downloadhamster-main.tar.gz
hamster-main.tar.bz2
hamster-main.zip
Basic localization implementationHEADmain
Diffstat (limited to 'lib/classes')
-rw-r--r--lib/classes/l10n.p34
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/classes/l10n.p b/lib/classes/l10n.p
new file mode 100644
index 0000000..4760159
--- /dev/null
+++ b/lib/classes/l10n.p
@@ -0,0 +1,34 @@
+@CLASS
+l10n
+
+##############################
+@create[language;fallback_language][localization_table]
+$self.language[$language]
+$self.fallback_language[$fallback_language]
+
+$localization_table[^table::load[../data/localization.csv;
+ $.separator[^;]
+]]
+$self.localization[^localization_table.hash[Key]]
+#end @create[]
+
+##############################
+@t[key]
+^if(^self.localization.contains[$key]){
+ $row[$self.localization.[$key]]
+
+ $value[$row.[$self.language]]
+ ^if(!def $value){
+ $value[$row.[$self.fallback_language]]
+ }
+
+ ^if(def $value){$result[$value]}{$result[$key]}
+}{
+ $result[$key]
+}
+#end @t[]
+
+##############################
+@html[key]
+$result[^taint[as-is][^self.t[$key]]]
+#end @html[]