From 0c0f11370c3d96c96475aea2dccb2ac1286fc7e9 Mon Sep 17 00:00:00 2001 From: Clement G Date: Sat, 22 Jul 2017 16:07:01 +0200 Subject: [PATCH] Initial version --- CHANGELOG.md | 50 ++++++++ LICENSE | 4 +- README.md | 85 ++++++++++++++ assets/readme_1.jpg | Bin 0 -> 15117 bytes blueprints.yaml | 68 +++++++++++ css/language-selector.css | 87 ++++++++++++++ flags/af.png | Bin 0 -> 381 bytes flags/ar.png | Bin 0 -> 274 bytes flags/be.png | Bin 0 -> 569 bytes flags/bg.png | Bin 0 -> 157 bytes flags/bo.png | Bin 0 -> 851 bytes flags/ca.png | Bin 0 -> 194 bytes flags/cs.png | Bin 0 -> 233 bytes flags/da.png | Bin 0 -> 180 bytes flags/de.png | Bin 0 -> 155 bytes flags/el.png | Bin 0 -> 243 bytes flags/en.png | Bin 0 -> 210 bytes flags/eo.png | Bin 0 -> 194 bytes flags/es.png | Bin 0 -> 287 bytes flags/et.png | Bin 0 -> 174 bytes flags/eu.png | Bin 0 -> 388 bytes flags/fa.png | Bin 0 -> 351 bytes flags/fi.png | Bin 0 -> 186 bytes flags/fil.png | Bin 0 -> 584 bytes flags/fo.png | Bin 0 -> 222 bytes flags/fr.png | Bin 0 -> 150 bytes flags/ga.png | Bin 0 -> 117 bytes flags/gl.png | Bin 0 -> 396 bytes flags/he.png | Bin 0 -> 165 bytes flags/hi.png | Bin 0 -> 171 bytes flags/hr.png | Bin 0 -> 304 bytes flags/hu.png | Bin 0 -> 119 bytes flags/id.png | Bin 0 -> 107 bytes flags/is.png | Bin 0 -> 157 bytes flags/it.png | Bin 0 -> 116 bytes flags/ja.png | Bin 0 -> 154 bytes flags/km.png | Bin 0 -> 273 bytes flags/ko.png | Bin 0 -> 567 bytes flags/lb.png | Bin 0 -> 119 bytes flags/lt.png | Bin 0 -> 147 bytes flags/lv.png | Bin 0 -> 144 bytes flags/mn.png | Bin 0 -> 238 bytes flags/ms.png | Bin 0 -> 884 bytes flags/nb.png | Bin 0 -> 128 bytes flags/nl.png | Bin 0 -> 121 bytes flags/nn.png | Bin 0 -> 128 bytes flags/pl.png | Bin 0 -> 113 bytes flags/pt-br.png | Bin 0 -> 313 bytes flags/pt-pt.png | Bin 0 -> 271 bytes flags/ro.png | Bin 0 -> 111 bytes flags/ru.png | Bin 0 -> 121 bytes flags/sco.png | Bin 0 -> 188 bytes flags/se.png | Bin 0 -> 219 bytes flags/sk.png | Bin 0 -> 259 bytes flags/sl.png | Bin 0 -> 197 bytes flags/so.png | Bin 0 -> 464 bytes flags/sq.png | Bin 0 -> 266 bytes flags/sr.png | Bin 0 -> 475 bytes flags/sv.png | Bin 0 -> 144 bytes flags/tg.png | Bin 0 -> 211 bytes flags/th.png | Bin 0 -> 132 bytes flags/tl.png | Bin 0 -> 347 bytes flags/tr.png | Bin 0 -> 198 bytes flags/uk.png | Bin 0 -> 108 bytes flags/vi.png | Bin 0 -> 223 bytes flags/zh-hans.png | Bin 0 -> 262 bytes flags/zh-hant.png | Bin 0 -> 174 bytes js/language-selector.js | 76 ++++++++++++ language-selector.php | 109 ++++++++++++++++++ language-selector.yaml | 5 + languages.yaml | 43 +++++++ .../language-selector.hreflang.html.twig | 9 ++ .../partials/language-selector.html.twig | 49 ++++++++ 73 files changed, 583 insertions(+), 2 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 README.md create mode 100644 assets/readme_1.jpg create mode 100644 blueprints.yaml create mode 100644 css/language-selector.css create mode 100644 flags/af.png create mode 100644 flags/ar.png create mode 100644 flags/be.png create mode 100644 flags/bg.png create mode 100644 flags/bo.png create mode 100644 flags/ca.png create mode 100644 flags/cs.png create mode 100644 flags/da.png create mode 100644 flags/de.png create mode 100644 flags/el.png create mode 100644 flags/en.png create mode 100644 flags/eo.png create mode 100644 flags/es.png create mode 100644 flags/et.png create mode 100644 flags/eu.png create mode 100644 flags/fa.png create mode 100644 flags/fi.png create mode 100644 flags/fil.png create mode 100644 flags/fo.png create mode 100644 flags/fr.png create mode 100644 flags/ga.png create mode 100644 flags/gl.png create mode 100644 flags/he.png create mode 100644 flags/hi.png create mode 100644 flags/hr.png create mode 100644 flags/hu.png create mode 100644 flags/id.png create mode 100644 flags/is.png create mode 100644 flags/it.png create mode 100644 flags/ja.png create mode 100644 flags/km.png create mode 100644 flags/ko.png create mode 100644 flags/lb.png create mode 100644 flags/lt.png create mode 100644 flags/lv.png create mode 100644 flags/mn.png create mode 100644 flags/ms.png create mode 100644 flags/nb.png create mode 100644 flags/nl.png create mode 100644 flags/nn.png create mode 100644 flags/pl.png create mode 100644 flags/pt-br.png create mode 100644 flags/pt-pt.png create mode 100644 flags/ro.png create mode 100644 flags/ru.png create mode 100644 flags/sco.png create mode 100644 flags/se.png create mode 100644 flags/sk.png create mode 100644 flags/sl.png create mode 100644 flags/so.png create mode 100644 flags/sq.png create mode 100644 flags/sr.png create mode 100644 flags/sv.png create mode 100644 flags/tg.png create mode 100644 flags/th.png create mode 100644 flags/tl.png create mode 100644 flags/tr.png create mode 100644 flags/uk.png create mode 100644 flags/vi.png create mode 100644 flags/zh-hans.png create mode 100644 flags/zh-hant.png create mode 100644 js/language-selector.js create mode 100644 language-selector.php create mode 100644 language-selector.yaml create mode 100644 languages.yaml create mode 100644 templates/partials/language-selector.hreflang.html.twig create mode 100644 templates/partials/language-selector.html.twig diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..1785d5f --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,50 @@ +# v1.4.0 +## 06/29/2017 + +1. [](#new) + * Added the `untranslated_pages_behavior` option to determine what to do with a language link when the current page doesn't exist in that language or it exists but it's not published +1. [](#bugfix) + * Fixed generated URLs when `append_url_extension` is set, via PR [#22](https://github.com/getgrav/grav-plugin-langswitcher/pull/22) + +# v1.3.0 +## 02/17/2017 + +1. [](#new) + * Added support for `hreflang` annotations via PR [#19](https://github.com/getgrav/grav-plugin-langswitcher/pull/19) + +# v1.2.1 +## 05/28/2016 + +1. [](#bugfix) + * Display all language names, even those with non supported locales + +# v1.2.0 +## 05/03/2016 + +1. [](#improved) + * Take URI parameters into account when switching languages + * Add `external` class to avoid problems on modular pages when `jquery.singlePageNav` is loaded + +# v1.1.0 +## 10/15/2015 + +1. [](#improved) + * Added active class to language links + +# v1.0.2 +## 07/13/2015 + +1. [](#improved) + * Improved homepage routing + +# v1.0.1 +## 07/08/2015 + +1. [](#improved) + * Updated blueprints with some typo fixes + +# v1.0.0 +## 07/08/2015 + +1. [](#new) + * ChangeLog started... diff --git a/LICENSE b/LICENSE index 8864d4a..b5be971 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ -MIT License +The MIT License (MIT) -Copyright (c) 2017 +Copyright (c) 2017 Clemdesign (http://www.clemdesign.fr) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md new file mode 100644 index 0000000..74d01fd --- /dev/null +++ b/README.md @@ -0,0 +1,85 @@ +# Grav Language Selector Plugin + +![Language Selector](assets/readme_1.jpg) + +`Language Selector` is a [Grav](http://github.com/getgrav/grav) plugin that provides native language selector with flags to switch between [Multiple Languages](http://learn.getgrav.org/content/multi-language). + +# Installation + +Installing the Language Selector plugin can be done only manually for this moment. GPM installation is not yet available + +## Manual Installation + +To install this plugin, just download the zip version of this repository and unzip it under `user/plugins`. Then, rename the folder to `language-selector`. You can find these files either on [GitHub](https://github.com/clemdesign/grav-plugin-language-selector). + +You should now have all the plugin files under + + /yoursite/user/plugins/language-selector + +Other way is to use `GIT`. In `user/plugins` folder, apply the following command: +``` +git clone https://github.com/clemdesign/grav-plugin-language-selector language-selector +``` + +This will clone this repository into the _language-selector_ folder. + +# Usage + +The `Language Selector` plugin doesn't require any configuration. You do however need to add the included Twig partials template into your own theme somewhere you want the available languages to be displayed. + +``` +{% include 'partials/language-selector.html.twig' %} +``` + +Something you might want to do is to override the look and feel of the langswitcher, and with Grav it is super easy. + +Copy the template file [language-selector.html.twig](templates/partials/language-selector.html.twig) into the `templates` folder of your custom theme: + +``` +/yoursite/user/themes/custom-theme/templates/partials/language-selector.html.twig +``` + +You can now edit the override and tweak it however you prefer. + +## Usage of the `hreflang` partial + +A second template is available for `hreflang` annotations in the header of the page. In order to emit language annotations for the available languages of a page you need to add the corrsponding Twig partial template into the `` section of your page, which can typically be found in `base.html.twig`: + +``` +{% include 'partials/language-selector.hreflang.html.twig' %} +``` + +This will generate something like: + +``` + + + +``` + +# Configuration + +## Plugin + +Simply copy the `user/plugins/language-selector/language-selector.yaml` into `user/config/plugins/language-selector.yaml` and make your modifications. + +``` +enabled: true +built_in_css: true +button_display: default +select_display: default +``` + +Options are pretty self explanatory. + +## Redirecting after switching language + +To have Grav redirect to the default page route after switching language, you must add the following configuration to `user/config/system.yaml` +``` +pages: + redirect_default_route: true +``` + +# Credits + +[Language Selector](https://github.com/clemdesign/grav-plugin-language-selector) is based on [Lang Switcher](https://github.com/getgrav/grav-plugin-langswitcher) plugin. diff --git a/assets/readme_1.jpg b/assets/readme_1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1a4438d554794a1574ae404c1eeb6a92f7bd624d GIT binary patch literal 15117 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 usb0hhZv`g`3N_.btn:first-child { + margin-left: 0; +} + +.language-selector .btn { + float: left; + position: relative; + display: inline-block; + margin-bottom: 0; + font-weight: 400; + text-align: center; + white-space: nowrap; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + user-select: none; + background-image: none; + border: 1px solid transparent; + /* size */ + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; + /* Aspect */ + color: #333; + background-color: #fff; + border-color: #ccc; +} + +.language-selector .dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + text-align: left; + list-style: none; + background-color: #fff; + background-clip: padding-box; + border-radius: 4px; + box-shadow: 0 6px 12px rgba(0,0,0,.175); +} + +.language-selector .dropdown-menu img { + width: 24px; + height: 12px; + max-width: inherit; +} + +.language-selector .dropdown-menu li { + line-height: 1rem; + font-color: #c0c0c0; + display: list-item; + text-align: -webkit-match-parent; +} + +.language-selector .dropdown-menu li:hover { + background-color: #eee; +} + +.language-selector .dropdown-menu>li>a { + display: block; + padding: 3px 15px; + clear: both; + font-weight: 400; + line-height: 1.42857143; + color: #333; + white-space: nowrap; +} diff --git a/flags/af.png b/flags/af.png new file mode 100644 index 0000000000000000000000000000000000000000..37d9b6587845546e59a4707b695e5b1beacce5a7 GIT binary patch literal 381 zcmV-@0fPRCP)*}2Uk8Cwa#wcbYa~!+f|HCX%=_~ku^6{Pj zU$(6I|JcolIu?B0DDuB&j`4r?x^S>1EOjyeTMn%M|MT&K|1Z+QD7QdHgz5j~8G`>W zu9E+++vW@Rjm_+a{||sc_F?wK|Bvjo$+rLq{xdT%{BKX<{{MBe=>LMLR{t5HmT)&E z{;%1y^8fyOR|#Ug7QnEn8q5D@ONIXLSgQ74vMC7e8)ERlT0qkv!WYSRUcda`)OF-P zzkKh19+@7znB-)7``)|%_C8Ap8cfgvY#D9g@=O24)h7~dI9>~oi;71t-~EqF*+`PX b*en15gl4V0vtfYr00000NkvXXu0mjf?&r;B4q#jWH72exCz{~sUnsyqFE zcS_#Ret%w>$1D~m4Log)#@FNii){z@Yy7M|O)99bFkgx(uxR_Y@Xh0m^eOlkrlX`NGB_ zPoS|T(C+1v`o}Z278D9duRiawm7&GaQ&_g)$ci*ZoykkL${qT^X~)g*W$)f9Bgst- QK*ut8y85}Sb4q9e04`-@{{R30 literal 0 HcmV?d00001 diff --git a/flags/be.png b/flags/be.png new file mode 100644 index 0000000000000000000000000000000000000000..d426c2ce17b468e22018ab82b23bc2a3f4f2964b GIT binary patch literal 569 zcmV-90>=G`P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv|NsC0|NjYC_uK#g010qNS#tmY09pV509pWWBe;D400EszL_t(I%VYRswOnl5 z(!b2dBrYWWd>zb~ap3b3E_cB>pNlwG2yFUX!nsah4?RhSKg)LLANlb&^kV(Z#lJ%0 zT}yR7FX!?VTsm+Ly1D<|>BzrjS1;XF{MDKIv-;5I63D(F?l z(qD&iS2U~r5Y)b6Tk?4gSDfHpU`Cj;N^i!Ll6hqoJ#{b$Ra``Z_XD3 zE>^(}pTBat3QYL?ozq8P7ClK=l*Km6Pu=^|v1V_F!AoYr4xtY(UJ6zU-FWd%uwLjM zJxOSy{_T)y-=ueot)ksmU+>xO_v&ADb9Zh~6Vh$nxkXK$o+K>WpTBhZ&h$I;j+;!1 zlbUk1RwqGn`V~2?8p)McRJ8i(Nx}-o4d?uC^50Q7*wnp7y6=jD4v$pNr9)b#Qu8kz z*K(&P$pEc7QVu1Y-+aqw+q-%`>8>l>+CQXvFCEb`r@w;$3A0L_G|??300000NkvXX Hu0mjfdw}}H literal 0 HcmV?d00001 diff --git a/flags/bg.png b/flags/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..503758a385178cf6c34f776f8fe133161e4ab7c4 GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^53;|t&x?dBOif}2 uKBs^ChuUN@o)n7-7XIb$3uImtV_>*{yZOFNf|DRnAA_f>pUXO@geCy%NGFv5 literal 0 HcmV?d00001 diff --git a/flags/bo.png b/flags/bo.png new file mode 100644 index 0000000000000000000000000000000000000000..627bc3f80c57a5173744028357c059db7edc75f1 GIT binary patch literal 851 zcmV-Z1FZasP)$_6oUii-vmk_;Mq? zrk5!zN!ix;g0vNW(_HI7)zaIv)X}Undp4RB%<@UI>~;$g{PA5$$2$am!Nc2bJo1U zTdJRg`jBRIgs*f5dCOwbG?UcFc*ktRjhm>l4mA)F{$ZMMg>*&mNW={5b@d6t8?mVD zs=@_P^P_HKK=-gqZ)MVMX0oe^^ev0ZdBwTZ>wIU{^QTmC&7?T4J6WgpMb%d;txHgu zP?6fau_9j(yf8KoMb%g`h4;6DAO@8fnPH1Btq!{NcG}cITGji4_gJe2Wj|P-;K^8= zHa$p-8j`y`6yY^>fbFV>UsCG{mbVc+`;4&oDfx+RF4-;2Nu^aW#Tp7V)FrqlO^&ON zNU9I$R(*VA z+%RHVS&~G@$TYMj34Z#XKt6mYd!M<5DazTql(IA2nY+%C^MZV_%;}@Qv&MWO!iMNk z@A9<_MqPqnLYizT{Dk~WXFrFs%R(u`!b*mmyUcuHp8V_ua+zB^{b!LvxybbL3?<(o zn|A5%9FZ|UgB3fq3c+tND*L)2yTmK21U@+@P1#?;3(9!Kv|LpIuj1l}Uv{4p%2Ty4 z47oS?oX)kwtBk25Q{ulVnR^BOf}JuoI|wUV#P`X5w_uN8;N?2#B@DK{%nf$d-r0p; d+W0?$e*t-S9rx<1rR4ws002ovPDHLkV1il`m*oHe literal 0 HcmV?d00001 diff --git a/flags/ca.png b/flags/ca.png new file mode 100644 index 0000000000000000000000000000000000000000..613c289ff9edfb0c47a06db1613a79d347e98ece GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^5i7Jhp6g7rmMhKr-SDi? j;d6+~=NgCZIXnzS#a#E#`dl~wG@QZH)z4*}Q$iB}QN2WD literal 0 HcmV?d00001 diff --git a/flags/cs.png b/flags/cs.png new file mode 100644 index 0000000000000000000000000000000000000000..0348b37ba1c0aa5447b39504b7bd3bb44f7293c3 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^5y25EI=X7 z0*}aI1_o|n5N2eUH3y`LCEd~2k%3`jKlh(RR*-g27srr_TgeFyOm?cD|Lw2(|I~hI z1EaV=$=cuRg)V)pKYUPo%Vvf);aTC6-bydhVMyG1!EaNI^A^@8zuHo`J-+frifLF+ z`!|18(%=8PIz$|OHnARDw()@+{B|44$rjF6*2UngG&cP)7g& literal 0 HcmV?d00001 diff --git a/flags/da.png b/flags/da.png new file mode 100644 index 0000000000000000000000000000000000000000..7cee94923f94d3d5acc5257d7ea1080d3b7a6627 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^5&U>cv7h@-A}f&Z?CIhdQgJIe!GT%4qUZnO$M3`Q z{{R2{@pFAn(Tf?40uoyj9_aq4{C~2(;M1%|LgTe~DWM4f-U~b# literal 0 HcmV?d00001 diff --git a/flags/de.png b/flags/de.png new file mode 100644 index 0000000000000000000000000000000000000000..93e02c33cb72e4fa5689bca467f13d6d4468c587 GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^5Qy6M1ew_ z1s;*b3=G`DAk4@xYYs>gOS+@4BLl<6e(pbstU!K~r;B4q#jWH72PURZvHu+{78ks( z7ijqCd6Z`dgO8)vy)+SS8>eZ1Tb_=m;g|CjuHu1S|+qvMWc zsrIEhKl+*1+$-qa=E(9`nA>BU!|@_En;jg90S1$0*q0>i5t|^wH-$xTsl;;D1uAYi jMJn1eFWq5^Vi9DJ_3`|wSgy|wbPa>2tDnm{r-UW|H7ZRj literal 0 HcmV?d00001 diff --git a/flags/en.png b/flags/en.png new file mode 100644 index 0000000000000000000000000000000000000000..84b934ab7fe2be9ca037571cedc41a340b757a57 GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^5AlQG*?aJ+h8Ca=IP=X z!f`$MgU!MN2R7WC)!1lwb+V%95$2+XH^K={iJMJlFnQ0vk;9v~o~bdZ*x+bF4@-ch z#wm#zRm)m(x3LK^32Zx%mThp9L9Jn0Qw2{#=7iz~8-}mj3{^R`q>F(zFnGH9xvXQL70(Y)*O%~mUKs7M+SzC{oH>NS%LgOPZ!6Kid)GE4ov?G8QNy@EJ=)E zNPBSediuc`YGP;hTmIjFF-qBhZR5(kgZ2s`aqD=FDVSZ=t@!@d?#Bh lh*X)Jb72MRVzCAWhQ8^Gvb>#`1b~J!c)I$ztaD0e0sxvHJIw$9 literal 0 HcmV?d00001 diff --git a/flags/es.png b/flags/es.png new file mode 100644 index 0000000000000000000000000000000000000000..27ac4622fb30147533ee79f2cef345ceff62646b GIT binary patch literal 287 zcmeAS@N?(olHy`uVBq!ia0vp^51P7+$JD&avW;TAn z-K#AfADAMfBiLv|Ndvoi|YQ^*81^(r_}8KXXR%7pDvQ}&)(KjNaL7`EB7|T z|MuH2{QQ3_W8wek!%P0npYiV7|I=Y0z^YuXR}KYshjzxunU j{bsT{+sj`##Kd56>Ptgw!p3tzmos>}`njxgN@xNANWp!< literal 0 HcmV?d00001 diff --git a/flags/et.png b/flags/et.png new file mode 100644 index 0000000000000000000000000000000000000000..bb29aba69374be6c9ba3a52693af63d0b1763a83 GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^5c>21sKV%o<N%V+853dw!%fWiB#>5-}2G^QZ0vje?d N;OXk;vd$@?2>>+tE2#hg literal 0 HcmV?d00001 diff --git a/flags/eu.png b/flags/eu.png new file mode 100644 index 0000000000000000000000000000000000000000..f2a1e5201860768d5cef2a0de1ea2361bbfda88d GIT binary patch literal 388 zcmV-~0ek+5P)7LCpT000SaNLh0L01FcU01FcV0GgZ_00004XF*Lt006O%3;baP0003KNklYIE1CbVhaGf!xW@HPH<-Cv_L9_)R+-!tu5X=H(u?jQP z_#kM(zv#&S|H{k$|8sNw|Ifwc|5rP!|DwgB|K%&>;TEV=tAP0@W8D7#ONjsfFCzT^ zzu1`n|5B0(TL3eJTuj&pfr0=3+1o)}mYnqeUq$)<_8sm28@DvV4T+o+3C0gwEC2ti ztoZ+T-rWCx=g<59FDQ_-I6z5$IN|`707!~tbOY*4FjLVsS?rb&v;d#$&@r}+*#h_wCIi*s4* z)ZMBs;Cg4o+Q5_ZqXz=Qa6W&d_y9%~8qw**h&E+|&He$@#|rPg;IXZA)BH z<7~gj?DM+&>>Wj-nLFDS-ExdtsknaIgh{W<#FmGqqzeg67UIg9{p^$S^ohZfrsdszr?2qpmjvrcL4WF`PgDb@NO+Y9-Zr^0UEwQ?cT64-L))aIhV}X}jA^$$*Jb votx>}M~kq753=XIt7n+@MKJDnJ%hRWfyMqWGYwt?ea_(N>gTe~DWM4fGun$< literal 0 HcmV?d00001 diff --git a/flags/fi.png b/flags/fi.png new file mode 100644 index 0000000000000000000000000000000000000000..0914433752889bf898f9350f4711b41f03f1624f GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^5gOS+@4BLl<6e(pbstU$h}r;B4q#jWIohNk}!4!@fY|CjWU zJ`izk`+s}Q21ePQD2EG87rH|KU)-4Y#AF9+%(k`vH?BO`YN*p7>0;_r&YdCW;%qO< c8_CUJ^5Nm@l;Rm%frc`8y85}Sb4q9e0Lbz<=Kufz literal 0 HcmV?d00001 diff --git a/flags/fil.png b/flags/fil.png new file mode 100644 index 0000000000000000000000000000000000000000..f220af2f4c3601dd4f5eb4c2a3cf04715066c9a6 GIT binary patch literal 584 zcmV-O0=NB%P)7q5Z+R~tG zVHrwh5@D##AJL*#M73hm1?_#+~(9C_`u77^ZlIXIfqw>MBf&vxp!a#>fh)(E}?5arpX>Ul*_PYF9HuRvRxW z8}k@e3|1aqWkhqi5naNJ_ox-sSZtmjS2~%jYiD%R4kowPF=eSQ$h0D0*;nF{4fSb$ z#z_1ja>K>+fu-Q_ZF_lR-M=aU#i+HR*fU+o=9_7QS+AeBO~+O6PR7gklngE{&|XTC z1H}B#2s%0#D^tN+cV{=OhY7`4Awl@bKqz?fv^KK2TE5;=D>J9q2r66~vDW|lRs02P WOGz7&n{_1s0000+Is(?y&grpZb!@9EtU;uiqZ}xA^hu zW8416zkc!mxLP|e{~Fe((Q^OXkL@eYKhW&4^Xnau(ux_&7b#{kGJNn@5+m<(N*ZV} NgQu&X%Q~loCIFy!Q@H>D literal 0 HcmV?d00001 diff --git a/flags/fr.png b/flags/fr.png new file mode 100644 index 0000000000000000000000000000000000000000..21ac90f16067ebaa02f257f3607eaf79ac0fe55c GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^5EaktaVt5&fsO0)|K!6v4v6cz pubIK9F0nP?N>d=Wo9=-uMuuDwxBF@Vn!Z2{44$rjF6*2UngDSRBQO8} literal 0 HcmV?d00001 diff --git a/flags/ga.png b/flags/ga.png new file mode 100644 index 0000000000000000000000000000000000000000..ab14e96cf5acab7f26a18fe15116bbbfd4c827ea GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^5=nv9&G>s literal 0 HcmV?d00001 diff --git a/flags/gl.png b/flags/gl.png new file mode 100644 index 0000000000000000000000000000000000000000..84a1802dd27b3ed8711bef6dc326726db2d7f3b3 GIT binary patch literal 396 zcmV;70dxL|P)mQ5v)M$n+DEn8OSjuhx7$#;+>Ei> z%(|b(#;%vu>X_E*o7d}{*XyC#?4sK2q}%PL+wIrQ!`0Hh;py_;^7!BK`QY>U;`90H z@b>WV=j8PI<@NgJ_4?@c`uX|y{r&y^|NsC0|51@>zyJUM32;bRa{vGf6951U69E94 zoEQKA0Ch=3K~xA^RmepG!Y}|u!Q%Rm0L9(io&5VBixq8{<#-!; literal 0 HcmV?d00001 diff --git a/flags/he.png b/flags/he.png new file mode 100644 index 0000000000000000000000000000000000000000..e32439c4f219bd7738423d9c4c349977992ced56 GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^f@#OxoH_H-tXUUk z&AK>${-p&AF8`ltym|BOEn9AF-FkcL);m9c{`vp^|E=jlqCj1o1s;*b3=G`DAk4@x zYmNj^P~FqTF@z&JS)-ki?a!Ls7H)sK$@#2@@+7XR`+yq4B@z*oRDy# zB)x&DX3d2Qe(M7iI1)U(y~Vtln^;uDoThnvX1M%Vz*f@jNiI+egQu&X%Q~loCIBt@ BGGPD! literal 0 HcmV?d00001 diff --git a/flags/it.png b/flags/it.png new file mode 100644 index 0000000000000000000000000000000000000000..7131202d21a04d6e4fb02a20684a035521fb8116 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^LO{&J#0+B9u<8RT&H$ef*K^wD43pgc|NpPQv(XhK zSl|&^%)r1c48n{Iv*t(u1qD4_978x{lR0{$jvhGRV93c3bWA|^(4!wmfszcKu6{1- HoD!MM=K+nNZ5u+np2jZP+&=H wn+a literal 0 HcmV?d00001 diff --git a/flags/km.png b/flags/km.png new file mode 100644 index 0000000000000000000000000000000000000000..af103289cba12d93517c161fccd8d76bfc530d9a GIT binary patch literal 273 zcmV+s0q*{ZP)WdKBPATl69aB?6rFfchFFflqYH##*oAS*C2FffG!yh;E700(qQO+^RU z1OXQwJIMM)>;M1&32;bRa{vGi!vFvd!vV){sAK>D00d`2O+f$vv5yPU3R z?Ck9L`TA#7ft(Xkeko)CHF^Lmczs`l|NHy)`1-aCd>|Nj2`{QUj>qoSkM*4Fy^`ohA(^78U#0DN`;005UsL_t(|+GAh<0UVC@6qTStZ0sDIAexnnn}-1_0051K4M5xgDAE7`002ovPDHLk FV1n}p1Qh@P literal 0 HcmV?d00001 diff --git a/flags/lb.png b/flags/lb.png new file mode 100644 index 0000000000000000000000000000000000000000..6e596bbafa141e48e827c5ba0a6b3f0791c2a2a2 GIT binary patch literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^B0$W;#0(_mlS(sy6lZ`>i0gZ8U53SX|NsBrKUaAh zNU*>ovY3H^TNs2H8D`Cq01AqDx;Tb#$R;N;FpBvUiSm8CdgCagnKoma?ZV|Zf$|KV Lu6{1-oD!M<_ShXW literal 0 HcmV?d00001 diff --git a/flags/lt.png b/flags/lt.png new file mode 100644 index 0000000000000000000000000000000000000000..a1bdc47d771badb0f220379f7f27d4a3f56e4610 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^!a&T!!3HE7F0?fPDb50q$YKTtZlDCWFeAgPITAoY zu@cva66d1S#FEVXJcW?V+*Aew3w=XVeFF>4@E_ZODwI84978mMlmF}v{$bBNmEkdm qVUObJ)GG#;7#=&8-VHqL!ORdcP0Dcpoo}*04@E_ZODil0j978lFCTBdE`p;kYj6s&f o%eKGEl@_c^Y&JjR)|SX{YRx5$Ri>YGfNB{$UHx3vIVCg!056^>>Hq)$ literal 0 HcmV?d00001 diff --git a/flags/mn.png b/flags/mn.png new file mode 100644 index 0000000000000000000000000000000000000000..355b43dae90e32b6c7d4f23f7817fd145dd99e7b GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^5 z{S=Y+(?vdS6a0EW=*uAiZrgoIK$BV0J>AlQG*?aJ+h8E=?djqeB5^r6p@B(IBf)_w zC&xl%hs8#3gU&9aq^Sv_Vo3+p4(c5^tb3r(waK|@es~k}>Xs!Ie4KWUGD1m75vnt8 i&S>OV&AyS1lVSCG&i7LOD_elZGI+ZBxvX004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv|NsC0|NjYC_uK#g010qNS#tmY09pV509pWWBe;D400P)aL_t(I%VS^=VqkFL zVGw3ubpFQx1g`lEpBa|hsB*q$6H_r|+0HDj^MJvcLEgz1EZfb%2vmQDK@doafka$p zGg~msx8D5rHt%h5!(Z!#^Mq4=nG16Z&nAy#fI0|dnG912<2n=0`9cwwIJ%r`m5c@Q zS)G{kwdXO#F)lDkWi4jz);48a%BXC9he3jY)%g%em$NJLGR9kh^S&*ZdULbaKeK}` z532wDvVYcrX!1w~uwVH=M!S`y@Ed*Qc{xWRY$C^QuzT z?I0m|2+eg*S5e}Bw`pmnAG;SrHA8^?Lx!&mD{Z9wRWum*86O8OQ(=DVpRA$4_lr@V z;iA=KaFiWkUdnhqF!S4_DJmN;{4+d|xqs>3cl$*4-6oG@06S$ph;+|p_|5RhCMDyg zWdP4SzXe(w`7PN*SW>k-8O0dBTd!b}W87`}o?$k_GTpbq~q-Vhsp7^vkZA8!{6Rn$7ZvWO`e|3^|xbI)2xSob7tI~`Q&f< zjA=7>{LPp#d**KPNCrwY(}HC9{nH`Uaq{3H8UEdT^X0AT;2{BlIbE^MXe6Bg0000< KMNUMnLSTYT)S!?6 literal 0 HcmV?d00001 diff --git a/flags/nb.png b/flags/nb.png new file mode 100644 index 0000000000000000000000000000000000000000..90335988cd1dc5d6722803108f3c65db3eb0cfa5 GIT binary patch literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~e!2~3qw63}aq&N#aB8wRqxP?KOkzv*x380{n zr;B5V#`)xm^=rA^|NsA=e&Gazk^*z2jHDrt6Yu{(#u#S30}O$VOiGc=C;g<@J~A-e XVwcWIdZcIs)Xm`O>gTe~DWM4f5O*K_ literal 0 HcmV?d00001 diff --git a/flags/nl.png b/flags/nl.png new file mode 100644 index 0000000000000000000000000000000000000000..ad752ce0679396d1ba2fc37dbdf1266e6508bb86 GIT binary patch literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^LO{&J#0+B9u<8RT&H$efS4Fq(but?N|Noz0vTzPa zu)rg-n1O*?7=#%aX3dcR3W|BUIEHXUCv&hiF|hd*i3;c(aC*eRkgO}bQEuL*|3DQC Mp00i_>zopr0G7uaGynhq literal 0 HcmV?d00001 diff --git a/flags/nn.png b/flags/nn.png new file mode 100644 index 0000000000000000000000000000000000000000..90335988cd1dc5d6722803108f3c65db3eb0cfa5 GIT binary patch literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~e!2~3qw63}aq&N#aB8wRqxP?KOkzv*x380{n zr;B5V#`)xm^=rA^|NsA=e&Gazk^*z2jHDrt6Yu{(#u#S30}O$VOiGc=C;g<@J~A-e XVwcWIdZcIs)Xm`O>gTe~DWM4f5O*K_ literal 0 HcmV?d00001 diff --git a/flags/pl.png b/flags/pl.png new file mode 100644 index 0000000000000000000000000000000000000000..1a0988b95be5455dab79a413cb64922e491b5446 GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^!a&T!$P6TR$%z~UQfvV}A+C2sZ2tfM|9*$*C7=jr zfk$L90|PfuDYq~q!>lY(@{Q!O4CKm;6)Vh@ z(oL1C%v8!v)ymCP>#Q{!ob`$#?L!mYW24;~f<0SRyXShEYfamUmd?xebWTTEz`WuEfAZrLE_v3$rYPLo^9cJ zyp`|SR{m>yI3Mn3`*E1TR-$(a&@n9Oo^I(tnyV)AZ7`5d_H=O!;kceG;KEh!#arVUMKu;burNt}NbPk+5uxOPgv)IIdi7|Px? zlD%pteZx-rbcCC4i^Aa~th~nZkFHV@~DR+)fKUk#CVSNxyKC)bVon2c^n~ zs-kYx@*l6ashuU>K2PLohx3g--t&F7OBWbkoyom;HSgs`;@20;-QLW;bjzhBTQ6SS zy5rh`L**}b&j31rCEe349Y}N4M7|9M(ypE^jv*Y^lM@;k+|(=*6dXIe0|HxET|MIF z#5M%;xq1Y7`MO5*@J4z#g@n$GpCuaU;W4d0+>P^U1z#SkTw2kcRwWjOwWpZ(&RyX2 Q4QL>Pr>mdKI;Vst0ORjsF#rGn literal 0 HcmV?d00001 diff --git a/flags/ro.png b/flags/ro.png new file mode 100644 index 0000000000000000000000000000000000000000..a5be3be42bf06eff0774dcaf08de0851477a10fa GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^LO{&J#0+B9u<8RT&H$efR|f6+bAoDrE{e(do?QzR zWJ&jQO9#?iHIZ+FfwZ8fi(?3fY;wYbC{d{c4u+fz){_KuVG-d%bA_0F5`Pe1M&E|1;&D0 i0=FjcIB#M~G-UX{P+pWxZD%&nFa}RoKbLh*2~7a*nL(WZ literal 0 HcmV?d00001 diff --git a/flags/se.png b/flags/se.png new file mode 100644 index 0000000000000000000000000000000000000000..0d73a7014186f8974511b986b3b8ff0cb703a2b1 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~e!3-p0EYEHRQXT<5A+8J-EBMXk@R-jRG@G5T z6{>mK{p6H{@6+7}+^`)@uYzWG=U5uCQUQ zusxe1_4FVdQ&MBb@0QccS=Kufz literal 0 HcmV?d00001 diff --git a/flags/sk.png b/flags/sk.png new file mode 100644 index 0000000000000000000000000000000000000000..5d303f7621da11381969f13ff2ec00440a70bf10 GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^LO{&J!3-oL&dBxwse}NZ5LX6^6--tu1x@F1SS?pD zo}y?z^N_Hvod2fNLK^1;)y|7)ofp?u58HZC!Q_&v#bq74=8&$m)D_q40_KG_)F#co z<`#a{JMKg)N-znnh*|Ns9}lN2`s?cyx(h%9Dc;1&j9 zMuu5)B!GgRo-U3d95Z`Qm^l@^8&G!g#B7Fu$Aa=-7_wjU^osmRYX=(2;OXk;vd$@? F2>{rzV$}cu literal 0 HcmV?d00001 diff --git a/flags/sl.png b/flags/sl.png new file mode 100644 index 0000000000000000000000000000000000000000..356442f4b1861616e6af4fcd9c489e92b2fc1d58 GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^5L)MLz$!LjHBjhBwwtZ(@6%#PvO$yYBJ)4Nq3>d9`NmtK+wSow)Ps|NsBm#{VjS zhHw^mL>4nJa0`PlBg3pYAZv^~T^vIs!jlCKF-m;!`mlN9=ftTGo<4YTa6$qTlNh68 rn3@U0w1g**(vE30@;;ch0O+V6PV5!^PqIybx*0rO{an^LB{Ts5-~LJ# literal 0 HcmV?d00001 diff --git a/flags/so.png b/flags/so.png new file mode 100644 index 0000000000000000000000000000000000000000..0a9eb3bb397d07e086ab33931b89fcb581b03285 GIT binary patch literal 464 zcmV;>0WbcEP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv|NsC0|NjYC_uK#g010qNS#tmY09pV509pWWBe;D400A^fL_t(I%VQ9_J^k@- z7y6J4Bxtw;Ca+Gv4kz!>&a&In9|Flk(>MHfhLR8wDqB`RUFo--pzIX2-x`Jo_D21Q zHrxjyAtDf2N-YDq`t0;$zn!H@mkRw}Di^sbyO~Gd|Ct9-3DrerFrJ-$ zZBO^w*S&3~&QvJjP2h%>>GDbIiFbz3~T_jmab zn-9wW{2^qw@uRzcmqTQ!kw9)vzyI4s*lxy}-(E_B>mL4oC;Vy_^DB1`prM#mC_ViEwBeFV4>9U0C50000=-CLR^8gI1`Hu6RRu}s|qu_ zDl@wpGrJWlw>2xb4J&s5JAW9vKsdWV8i#N?hj13BNH(WPKBq_xmv|GmL^HQU7q{d@ z9_dLu($jckX7S3*;gwy)E4PMEVH>~F0RiPRf@jTQ_+fd6IGr#r7$oU9um_Okn#BrG@ZfI)z4*} HQ$iB}JhVpn literal 0 HcmV?d00001 diff --git a/flags/sr.png b/flags/sr.png new file mode 100644 index 0000000000000000000000000000000000000000..bca54f1f73986970d7981f9fe4f5ccd91017536e GIT binary patch literal 475 zcmV<10VMv3P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipt^ z5*srYB$m4X00CP`L_t(2&yAD2E<{ljhQGDXnHglxR4xe#F$9UI1R-b?3Q=f0gGW$_ z(wle#Q6PjU6k7*k#4#*YQXhGpEoeuB#@q^AcS1LW5-{}8?9OJ7h9py*>f zk3>+$q&>=K=M?iLsL@Cck8dhFa*TnURr1#tq&kN2uXaiIj$wzUQERJL(jR%)+tP!j zS-n2F(1XP(eLX$V|3p+(V^Tzf!sRWY4M?UMsB3Gf%&R^vE<*L!m-vqa;2reg#298> RE*Ag*002ovPDHLkV1hck!l?iN literal 0 HcmV?d00001 diff --git a/flags/sv.png b/flags/sv.png new file mode 100644 index 0000000000000000000000000000000000000000..bb27ed13d49446fa940b23a0293b9978d1683f31 GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^!a&T!!VDyf{>|P9q(lRJLR=Z5XYwaaG%BvMtElj* zEz0eS|8r67`?m$ZfC^aBJ>AlQG*?aJ+h8EA=IP=X!f`!0AtAx1IH7@w$wyW7=@tc5 ng@6Q)=0=tjwMk4uXIL3RPYP^iNKokl>R|A6^>bP0l+XkKrywYi literal 0 HcmV?d00001 diff --git a/flags/tg.png b/flags/tg.png new file mode 100644 index 0000000000000000000000000000000000000000..9a377f4ff9184a850131fbd4120f48a3eb3d6f37 GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^5^2=7-$Y>fk$L90|U1(2s1Lwngg=Q*3-o?L}F@k!UDO3Ba9L)4;%X1+xZVVdvJW( zRP=!>Y2pK+M^D5a9a2&}bN-A{LyCws(+0(jHzj8jFkDh)uy195eB#W4e?Ws6JYD@< J);T3K0RXnLV3q&? literal 0 HcmV?d00001 diff --git a/flags/th.png b/flags/th.png new file mode 100644 index 0000000000000000000000000000000000000000..9e9abd29a78da33a8cf48c5d816c540a6cf5bf0d GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~e!3-p0EYEHRaRPioT=$>2|NsC0djb*+Dz%kg zEl&Yoe4y-*AOg%4{cwR7_2@yz8(Qvr1 Zl!1R4gNiFF`zxSI22WQ%mvv4FO#pFRBGv!^ literal 0 HcmV?d00001 diff --git a/flags/tl.png b/flags/tl.png new file mode 100644 index 0000000000000000000000000000000000000000..ffd461ddf8dd0acfd6ee1f91fe2b9da4ddaa244f GIT binary patch literal 347 zcmV-h0i^zkP)QX`2XjI?f*X)#s2@jDE|N7`!ztpA0V0kKi=;8 z-@4%Pe;&s*6j<=}9GV3i;1>LSv+e)$-l_jD$Qb-TC#Xg;Mhc>4ND#f93lF0An|J-c zqUS)C!KfCXMe?_cSO4GgjiJb3gat^+^!J;0{~s0C|34?JK^4Qn7JxF^-}guVznn7n t|3w88su>Ko;NzY{|F4;QQr%z}1_1LupzRsD>|Fo=002ovPDHLkV1g1auODLvQ+e%IuKw=}Dn3*;e(IU@sc*{X*$aLgIq~D@$)D#h{km}J*R>nJ??3$W z{KeW8=AVE@v7~#tr2}cMn#i}oK-$RD#W95AdUC=727^x=AB&6@aTIcIHZ~~Opvc`> uz{r_a$EaqaC}!uVR?@qMrAM8cfnm-a#&93A37der89ZJ6T-G@yGywq8v`I1m literal 0 HcmV?d00001 diff --git a/flags/uk.png b/flags/uk.png new file mode 100644 index 0000000000000000000000000000000000000000..485b5d0f28c2a69321ae0af82b60a24397a5e9b4 GIT binary patch literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^LO{&J$P6Sy@6`VXQfvV}A+A=XM}FQF+jQpaHlPSg zx~E$@kmjn1d>ag;1wCCHLpZJ{Cmdk>_usyOmzm+Xlt8J+!opubNd`|>KbLh*2~7Zn Cavj(J literal 0 HcmV?d00001 diff --git a/flags/vi.png b/flags/vi.png new file mode 100644 index 0000000000000000000000000000000000000000..2adcc208565582845942af8ef707e1d4e101b126 GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^LO{&J!3-oL&dBxwDUSf35Z7~pYUhO1E=a0gR#UyI zuYAKs`KFEXEqkR~E=spOlx}+}y=s+t)h7FHru6$+(jR6?e_1c_eW%2aL*hRUN&Gl0 z{`&XcUoEtVKaeORT{ORUS ziAPx#z)3_wR47wpxTh)b|E>lQs|ftRr^)~SzCQo|hjzSRHb{;TW&kO?qbTtIbt%XH zTM|HnR0aNjUd9SElpky`K?80{2>$>7iQ)gh`waj8|6=(6$b}c^8vg%(ZZiJABTs|@ zAmWJ+&;S3A82-Ph=lFk53+N)CEAFcEgV{tG@W2XatGdAd$8J3T?*PN%jd<2cX8-^I M07*qoM6N<$f@vCa+yDRo literal 0 HcmV?d00001 diff --git a/flags/zh-hant.png b/flags/zh-hant.png new file mode 100644 index 0000000000000000000000000000000000000000..9c75444a50d64268aa32ad2697c2c494c825510e GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~e!3HF=pW8M9DaPU;cPEB*=VV?2IT@ZVjv*Qo zlM@m$e)J#s8o=|o{13ZOg(35%V|(_zP3SS`$Y7TGw|a%oum2w&RvUzc&2!nsedtiw z-}?XmtRbP0l+XkK@iIXR literal 0 HcmV?d00001 diff --git a/js/language-selector.js b/js/language-selector.js new file mode 100644 index 0000000..a53ca0f --- /dev/null +++ b/js/language-selector.js @@ -0,0 +1,76 @@ +/*! + * Language Selector JS plugin + * Copyright 2017 Clement G., Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +var dropdownmenu={ + animspeed: 200, //reveal animation speed (in milliseconds) + showhidedelay: [150, 150], //delay before menu appears and disappears when mouse rolls over it, in milliseconds + + //***** NO NEED TO EDIT BEYOND HERE + builtdropdownids: [], //ids of dropdown already built (to prevent repeated building of same dropdown) + + showbox:function($, $dropdown, e){ + clearTimeout($dropdown.data('timers').hidetimer) + $dropdown.data('timers').showtimer=setTimeout(function(){$dropdown.show(dropdownmenu.animspeed)}, this.showhidedelay[0]) + }, + + hidebox:function($, $dropdown){ + clearTimeout($dropdown.data('timers').showtimer) + $dropdown.data('timers').hidetimer=setTimeout(function(){$dropdown.hide(100)}, this.showhidedelay[1]) //hide dropdown plus all of its sub ULs + }, + + + builddropdown:function($, $menu, $target){ + $menu.css({display:'none'}).addClass('jqdropdown') + $menu.bind('mouseenter', function(){ + clearTimeout($menu.data('timers').hidetimer) + }) + $menu.bind('mouseleave', function(){ //hide menu when mouse moves out of it + dropdownmenu.hidebox($, $menu) + }) + $menu.data('dimensions', {w:$menu.outerWidth(), h:$menu.outerHeight()}) //remember main menu's dimensions + $menu.data('timers', {}) + this.builtdropdownids.push($menu.get(0).id) //remember id of dropdown that was just built + }, + + + + init:function($, $target, $dropdown){ + if (this.builtdropdownids.length==0){ //only bind click event to document once + $(document).bind("click", function(e){ + if (e.button==0){ //hide all dropdown (and their sub ULs) when left mouse button is clicked + $('.jqdropdown').find('ul').andSelf().hide() + } + }) + } + if (jQuery.inArray($dropdown.get(0).id, this.builtdropdownids)==-1) //if this dropdown hasn't been built yet + this.builddropdown($, $dropdown, $target) + if ($target.parents().filter('ul.jqdropdown').length>0) //if $target matches an element within the dropdown markup, don't bind ondropdown to that element + return + $target.bind("mouseenter", function(e){ + dropdownmenu.showbox($, $dropdown, e) + }) + $target.bind("mouseleave", function(e){ + dropdownmenu.hidebox($, $dropdown) + }) + } +}; + +jQuery.fn.adddropdown=function(dropdownid){ + var $=jQuery + return this.each(function(){ //return jQuery obj + var $target=$(this) + if ($('#'+dropdownid).length==1) //check dropdown is defined + dropdownmenu.init($, $target, $('#'+dropdownid)) + }) +}; + +//By default, add dropdown to anchor links with attribute "data-dropdown" +jQuery(document).ready(function($){ + var $anchors=$('*[data-dropdown]') + $anchors.each(function(){ + $(this).adddropdown(this.getAttribute('data-dropdown')) + }) +}); diff --git a/language-selector.php b/language-selector.php new file mode 100644 index 0000000..26f50d4 --- /dev/null +++ b/language-selector.php @@ -0,0 +1,109 @@ + ['onPluginsInitialized', 0] + ]; + } + + /** + * Initialize configuration + */ + public function onPluginsInitialized() + { + if ($this->isAdmin()) { + $this->active = false; + return; + } + + $this->enable([ + 'onTwigInitialized' => ['onTwigInitialized', 0], + 'onTwigTemplatePaths' => ['onTwigTemplatePaths', 0], + 'onTwigSiteVariables' => ['onTwigSiteVariables', 0] + ]); + } + + /** Add the native_name function */ + public function onTwigInitialized() + { + $this->grav['twig']->twig()->addFunction( + new \Twig_SimpleFunction('native_name', function($key) { + return LanguageCodes::getNativeName($key); + }) + ); + } + + /** + * Add current directory to twig lookup paths. + */ + public function onTwigTemplatePaths() + { + $this->grav['twig']->twig_paths[] = __DIR__ . '/templates'; + } + + /** + * Set needed variables to display Language-Selector. + */ + public function onTwigSiteVariables() + { + $data = new \stdClass; + + // Manage Data content + $page = $this->grav['page']; + $data->page_route = $page->rawRoute(); + if ($page->home()) { + $data->page_route = '/'; + } + + $languages = $this->grav['language']->getLanguages(); + $data->languages = $languages; + + if ($this->config->get('plugins.language-selector.untranslated_pages_behavior') !== 'none') { + $translated_pages = []; + foreach ($languages as $language) { + $translated_pages[$language] = null; + $page_name_without_ext = substr($page->name(), 0, -(strlen($page->extension()))); + $translated_page_path = $page->path() . DS . $page_name_without_ext . '.' . $language . '.md'; + if (file_exists($translated_page_path)) { + $translated_page = new Page(); + $translated_page->init(new \SplFileInfo($translated_page_path), $language . '.md'); + $translated_pages[$language] = $translated_page; + } + } + $data->translated_pages = $translated_pages; + } + + $data->current = $this->grav['language']->getLanguage(); + + // Manage Twig Variables + $path_flags = $this->grav['locator']->findResource('plugin://language-selector/flags/', false) . "/"; + $path_flags = $this->grav['base_url'] ."/". ltrim($path_flags, '/'); + $this->grav['twig']->twig_vars['language_selector'] = $data; + $this->grav['twig']->twig_vars['language_display'] = array( + "select" => $this->config->get('plugins.language-selector.select_display'), + "button" => $this->config->get('plugins.language-selector.button_display'), + ); + $this->grav['twig']->twig_vars['path_flags'] = $path_flags; + + // Manage Assets + if ($this->config->get('plugins.language-selector.built_in_css')) { + $this->grav['assets']->add('plugin://language-selector/css/language-selector.css'); + } + $this->grav['assets']->add('plugin://language-selector/js/language-selector.js'); + } + + public function getNativeName($code) { + + } +} diff --git a/language-selector.yaml b/language-selector.yaml new file mode 100644 index 0000000..4a804cf --- /dev/null +++ b/language-selector.yaml @@ -0,0 +1,5 @@ +enabled: true +built_in_css: true +untranslated_pages_behavior: none +button_display: default +select_display: default diff --git a/languages.yaml b/languages.yaml new file mode 100644 index 0000000..3748ce7 --- /dev/null +++ b/languages.yaml @@ -0,0 +1,43 @@ +# English +en: + PLUGINS: + LANGUAGE_SELECTOR: + PLUGIN_STATUS: 'Plugin status' + BUILT_IN_CSS: 'Use built in CSS' + UNTRANSLATED_PAGES: + LABEL: 'Untranslated pages behavior' + HELP: 'Determine what to do with a language link when the current page doesn''t exist in that language or it exists but it''s not published.' + OPT_NONE: 'Show language (default)' + OPT_REDIR: 'Show language, link to home route' + OPT_HIDE: 'Hide language' + BUTTON_DISPLAY: + LABEL: 'Button Display' + HELP: 'Define how button of selected language will be displayed' + SELECT_DISPLAY: + LABEL: 'Selector Display' + HELP: 'Define how language selector will be displayed' + OPT_DEFAULT: 'Flag + Language name' + OPT_FLAG: 'Only the flag' + OPT_NAME: 'Only the language name' + +# French +fr: + PLUGINS: + LANGUAGE_SELECTOR: + PLUGIN_STATUS: 'Statut du plugin' + BUILT_IN_CSS: 'Utiliser CSS du plugin' + UNTRANSLATED_PAGES: + LABEL: 'Comportement des pages non-traduites' + HELP: 'Définit le comportement des liens lorsque la page n''existe pas dans la langue courante, ou bien existe mais non publié' + OPT_NONE: 'Affiche le langage (par défaut)' + OPT_REDIR: 'Affiche le langage, lié à l''URL de base' + OPT_HIDE: 'Cache le langage' + BUTTON_DISPLAY: + LABEL: 'Affichage du boutton' + HELP: 'Définit l''affichage du bouton de language sélectioné' + SELECT_DISPLAY: + LABEL: 'Affichage du sélecteur' + HELP: 'Définit l''affichage du sélecteur de language' + OPT_DEFAULT: 'Drapeau + Nom de la langue' + OPT_FLAG: 'Seulement le drapeau' + OPT_NAME: 'Seulement le nom de la langue' \ No newline at end of file diff --git a/templates/partials/language-selector.hreflang.html.twig b/templates/partials/language-selector.hreflang.html.twig new file mode 100644 index 0000000..6ffa3db --- /dev/null +++ b/templates/partials/language-selector.hreflang.html.twig @@ -0,0 +1,9 @@ +{% set langobj = grav['language'] %} +{% for key in language_selector.languages %} +{% if key == language_selector.current %} + {% set lang_url = page.url %} +{% else %} + {% set lang_url = base_url_simple ~ langobj.getLanguageURLPrefix(key) ~ language_selector.page_route ~ page.urlExtension ?: '/' %} +{% endif %} + +{% endfor %} \ No newline at end of file diff --git a/templates/partials/language-selector.html.twig b/templates/partials/language-selector.html.twig new file mode 100644 index 0000000..7e19f0e --- /dev/null +++ b/templates/partials/language-selector.html.twig @@ -0,0 +1,49 @@ +