summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--data/localization.csv7
-rw-r--r--htdocs/auto.p6
-rw-r--r--htdocs/index.html12
-rw-r--r--lib/classes/l10n.p34
4 files changed, 52 insertions, 7 deletions
diff --git a/data/localization.csv b/data/localization.csv
new file mode 100644
index 0000000..201b55c
--- /dev/null
+++ b/data/localization.csv
@@ -0,0 +1,7 @@
+Key;Description;en_US;ru;uk;be_BY;zh_TW
+index_me_caption;Caption of my photo on index page;My photo at ASC-1, Ostankino Technical Center, Moscow;Моя фотография у АСК-1, телецентр Останкино, Москва;;;
+index_article_hello_there;""Hello there!"" title on index page;Hello there!;Приветствую вас!;;;
+index_article_hello_there_paragraph_1;First paragraph on ""Hello there"" section on index page;My name is Mikhail, I'm learning at private vocational IT school and interested in technology and collect music on CD. Well, I guess I'm human - as much as that's possible. I love to stick my nose into things I shouldn't.;Меня зовут Михаил, я платно учусь в частном колледже на IT, интересуюсь технологиями и коллекционирую музыку на CD-пластинках. Ну, вроде бы я человек - насколько это возможно. Обожаю лезть, куда не надо.;Мене звати Михайло. Я навчаюся на платній основі в колишньому російському філіалі академії «Шаг» за спеціальністю «ІТ», цікавлюся технологіями та колекціоную музику на CD-дисках. Ну, здається, я людина - наскільки це взагалі можливо. Обожнюю лізти туди, куди не треба.;"
+";
+index_article_hello_there_paragraph_2;Second paragraph on ""Hello there"" section on index page;"I am a big fan of Japanese exclusive game series <a href="//breezewiki.com/dokodemo/wiki/Doko_Demo_Issyo_(series)">どこでもいっしょ</a> (Dokodemo Issho, Everywhere Together). I have my own original pokepisona - red cat in a beige T-shirt, which is how I introduce myself online. <a href="//x.com/layb0x">Laybox</a> drew the picture above.";"Я являюсь огромным фанатом серии игр <a href="https://breezewiki.com/dokodemo/wiki/Doko_Demo_Issyo_(Series)">«どこでもいっしょ»</a> (Докодемо Иссё, букв. «Вместе повсюду»). У меня есть собственный оригинальный покепи - красный кот в бежевой футболочке, которым я представляюсь в Интернете. Картинку выше нарисовал <a href="//laybox.t.me">Laybox</a>.";Я - великий фанат серії ігор <a href="https://breezewiki.com/dokodemo/wiki/Doko_Demo_Issyo">«どこでもいっしょ»</a> (Докодемо Іссе, букв. «Разом увсюди»). У мене є власний оригінальний покепі — червоний кіт у бежевій футболці, яким я представляюся в Інтернеті. Малюнок вище намалював <a href="//laybox.t.me">Laybox</a>.;;
+index_article_hello_there_paragraph_3;Third paragraph on ""Hello there"" section on index page;Yep, on the right is my photo.;Да, это моя фотография справа.;;;
diff --git a/htdocs/auto.p b/htdocs/auto.p
new file mode 100644
index 0000000..e6c15d3
--- /dev/null
+++ b/htdocs/auto.p
@@ -0,0 +1,6 @@
+@USE
+../lib/classes/l10n.p
+
+@auto[]
+$locale[^l10n::create[en_US;ru]]
+#end @main[]
diff --git a/htdocs/index.html b/htdocs/index.html
index ba13d03..0440b13 100644
--- a/htdocs/index.html
+++ b/htdocs/index.html
@@ -10,18 +10,16 @@ $photo_thumbnails[
$.[image/jpeg][/img/thumb/me.jpg]
]
^base[михаил «synzr»]{
- ^article[index][Приветствую вас!]{
+ ^article[index][^locale.t[index_article_hello_there]]{
^section[about-me]{
^figure[$photo_thumbnails;image/jpeg;
- $.caption[Моя фотография у останкинского телецентра в Москве]
+ $.caption[^locale.t[index_me_caption]]
$.height[160]
$.href[/img/photo/me.jpg]
]
- <p class="text">
- Меня зовут Михаил, я платно учусь в частном колледже на IT,
- интересуюсь технологиями и коллекционирую музыку на CD-пластинках.
- Ну, вроде бы я человек - насколько это возможно. Обожаю лезть, куда не надо.
- </p>
+ <p class="text">^locale.html[index_article_hello_there_paragraph_1]</p>
+ <p class="text">^locale.html[index_article_hello_there_paragraph_2]</p>
+ <p class="text">^locale.html[index_article_hello_there_paragraph_3]</p>
}
<hr class="divider">
}
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[]