diff options
| -rw-r--r-- | data/localization.csv | 7 | ||||
| -rw-r--r-- | htdocs/auto.p | 6 | ||||
| -rw-r--r-- | htdocs/index.html | 12 | ||||
| -rw-r--r-- | lib/classes/l10n.p | 34 |
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[] |
