@@ -41,6 +41,20 @@ class GTranslator{
4141 * @var int
4242 */
4343 const SELECT = 3 ;
44+
45+ /**
46+ * Hold type bootstrap 4 attribute
47+ *
48+ * @var int
49+ */
50+ const BOOTSTRAP_4 = 4 ;
51+
52+ /**
53+ * Hold type bootstrap 5 attribute
54+ *
55+ * @var int
56+ */
57+ const BOOTSTRAP_5 = 5 ;
4458
4559 /**
4660 * Hold google translator element id name
@@ -83,6 +97,20 @@ class GTranslator{
8397 * @var string
8498 */
8599 private $ iconType ;
100+
101+ /**
102+ * Hold ui design provider type
103+ *
104+ * @var int
105+ */
106+ private $ provider
107+
108+ /**
109+ * Hold bootstrap design provider version
110+ *
111+ * @var string
112+ */
113+ private $ bootstrapVersion;
86114
87115 /**
88116 * Hold list of languages to build
@@ -196,13 +224,23 @@ public function setLinkClass($cls){
196224 /**
197225 * Sets design style default or bootstrap
198226 * @param int $prv
227+ * @param int $ver bootstrap version [4/5]
199228 * @return GTranslator $this
200229 */
201- public function setProvider ($ prv ){
230+ public function setProvider ($ prv, $ ver = self :: BOOTSTRAP_5 ){
202231 $ this ->provider = $ prv ;
232+ $ this ->bootstrapVersion = $ ver ;
203233 return $ this ;
204234 }
205235
236+ /**
237+ * Gets bootstrap attrbute name
238+ * @return String
239+ */
240+ public function getBootstrapAttr (){
241+ return ($ this ->bootstrapVersion == self ::BOOTSTRAP_5 ? "bs- " : "" );
242+ }
243+
206244 /**
207245 * Builds language selector links
208246 * @param boolean $li if link should be child of list item
@@ -268,7 +306,7 @@ private function selectorBootstrap(){
268306 $ this ->setLinkClass ("dropdown-item " );
269307 $ html = '<div class="language-selector"> ' ;
270308 $ html .= '<div class="dropdown notranslate"> ' ;
271- $ html .= '<button class="btn btn-outline-gold dropdown-toggle" type="button" id="php-g-translator" data-bs- toggle="dropdown" aria-expanded="false"> ' ;
309+ $ html .= '<button class="btn btn-outline-gold dropdown-toggle" type="button" id="php-g-translator" data- ' . $ this -> getBootstrapAttr () . ' toggle="dropdown" aria-expanded="false"> ' ;
272310 $ html .= '<img alt=" ' . $ this ->siteLang . '" src=" ' . $ this ->iconPath . $ this ->siteLang . $ this ->iconType . '"> ' . $ this ->languages [$ this ->siteLang ];
273311 $ html .= '</button> ' ;
274312 $ html .= ' <ul id="php-gt-languages" class="dropdown-menu" aria-labelledby="php-g-translator"> ' ;
@@ -339,7 +377,7 @@ function(a){a.preventDefault();GTranslator.toggle();GTranslator.toggleClass()};b
339377 * @return string|html|css $styleSheet
340378 */
341379 private function addCss (){
342- $ styleSheet = " <style> body{top:0 !important} # {$ this ->element }{display:none!important} #goog-gt-tt{display:none !important} .goog-te-banner-frame{display:none !important} .goog-te-menu-value:hover{text-decoration:none !important} .goog-text-highlight{background-color:transparent !important;box-shadow:none !important} #php-g-translator img{height:16px;width:16px} " ;
380+ $ styleSheet = " <style> body{top:0 !important} .skiptranslate, # {$ this ->element }, #goog-gt-tt{display:none !important} .goog-te-banner-frame{display:none !important} .goog-te-menu-value:hover{text-decoration:none !important} .goog-text-highlight{background-color:transparent !important;box-shadow:none !important} #php-g-translator img{height:16px;width:16px} " ;
343381 if ($ this ->provider == self ::DEFAULT ){
344382 $ styleSheet .= ".g-translator-custom{position: relative} .g-translator-custom .toggle-translator{font-family:Arial;font-size:10pt;text-align:left;cursor:pointer;overflow:hidden;width: {$ this ->selectWidth };line-height:17px;position: absolute;right: 0;list-style-type: none;padding-left: 0px} .g-translator-custom a{text-decoration:none;display:block;font-size:10pt;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box} .g-translator-custom a img{vertical-align:middle;display:inline;border:0;padding:0;margin:0;opacity:0.8} .g-translator-custom a:hover img{opacity:1} .g-translator-custom .toggle-languages{background-color:#FFFFFF; position:relative; z-index:9999; cursor: pointer} .g-translator-custom .toggle-languages a{border:1px solid #CCCCCC;color:#666666;padding:3px 5px} .g-translator-custom .toggle-cert{background-image: url( \"data:image/svg+xml,%3Csvg class='caret-down' width='12' height='8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 1.5l-5 5-5-5' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' stroke='%23000'%3E%3C/path%3E%3C/svg%3E \");background-repeat: no-repeat;background-position: center;padding:3px 5px;width: 12px;position: absolute;right: 0px;top: 0px;bottom: 0px;height: 22px} .g-translator-custom .toggle-languages .open .toggle-cert{-moz-transform: scaleY(-1);-o-transform: scaleY(-1);-webkit-transform: scaleY(-1);transform: scaleY(-1)} .g-translator-custom .language-options{position:relative;border:1px solid #CCCCCC;background-color:#EEEEEE;display:none;width:auto;max-height:300px;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;overflow-y:auto;overflow-x:hidden;z-index: 100;list-style-type: none;padding-left: 0px} .g-translator-custom .language-options li{list-style-type: none} .g-translator-custom .language-options a{background:#eee;color:#000;padding:5px 8px} .g-translator-custom .language-options a:hover{background:#FFC} .g-translator-custom .language-options::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 3px rgba(0,0,0,0.3);border-radius:5px;background-color:#F5F5F5} .g-translator-custom .language-options::-webkit-scrollbar{width:5px} .g-translator-custom .language-options::-webkit-scrollbar-thumb{border-radius:5px;-webkit-box-shadow: inset 0 0 3px rgba(0,0,0,.3);background-color:#888} .g-translator-custom #php-g-translator img{margin-right:2px} " ;
345383 }
0 commit comments