diff --git a/metager/app/MetaGer.php b/metager/app/MetaGer.php
index b15cf6af0018143bb2c2f95f3f84719b0dce1d4f..45cac0ae5bf148145042950eb14ef1a6159a142a 100644
--- a/metager/app/MetaGer.php
+++ b/metager/app/MetaGer.php
@@ -521,7 +521,7 @@ class MetaGer
         $this->removeAdsFromListIfAdfree($sumas);
 
         $current_regional_locale = LaravelLocalization::getCurrentLocaleRegional();
-        $current_locale = explode("_", $current_regional_locale)[0];
+        $current_language = Localization::getLanguage();
         foreach ($sumas as $sumaName => $suma) {
             # Check if this engine is disabled and can't be used
             $disabled = empty($suma->disabled) ? false : $suma->disabled;
@@ -539,7 +539,7 @@ class MetaGer
             }
             // Skip if engine does not support current locale or region (locale i.e. en is enough to get enabled)
             if (
-                !isset($suma->lang->languages[$current_locale]) &&
+                !\property_exists($suma->lang->languages, $current_language) &&
                 !\property_exists($suma->lang->regions, $current_regional_locale)
             ) {
                 continue;
diff --git a/metager/app/Models/Searchengine.php b/metager/app/Models/Searchengine.php
index 0c1d97a7ff7bfdd915e9c321c7501689c2aa8048..1cad357aee10a59aca62db3301e68d882a5feab0 100644
--- a/metager/app/Models/Searchengine.php
+++ b/metager/app/Models/Searchengine.php
@@ -2,8 +2,10 @@
 
 namespace App\Models;
 
+use App\Localization;
 use App\MetaGer;
 use Illuminate\Support\Facades\Redis;
+use LaravelLocalization;
 
 abstract class Searchengine
 {
@@ -228,16 +230,33 @@ abstract class Searchengine
         }
 
         $getString .= "?";
-        $parameter = [];
-        foreach ($this->engine->{"get-parameter"} as $key => $value) {
-            $parameter[] = $this->urlEncode($key) . "=" . $this->urlEncode($value);
+
+        $parameters = (array) clone $this->engine->{"get-parameter"};
+
+        # Apply current locale
+        if (!empty($this->engine->lang->parameter)) {
+            $current_locale = LaravelLocalization::getCurrentLocaleRegional();
+            if (\property_exists($this->engine->lang->regions, $current_locale)) {
+                $parameters[$this->engine->lang->parameter] = $this->engine->lang->regions->{$current_locale};
+            } elseif (\property_exists($this->engine->lang->languages, Localization::getLanguage())) {
+                $parameters[$this->engine->lang->parameter] = $this->engine->lang->languages->{Localization::getLanguage()};
+            }
         }
-        $getString .= implode("&", $parameter);
 
         # Append the Query String
-        $getString .= "&" . $this->engine->{"query-parameter"} . "=" . $this->urlEncode($query);
+        $parameters[$this->engine->{"query-parameter"}] = $query;
+
+        # Dynamic Parameters
+        $parameters = \array_merge($parameters, $this->getDynamicParams());
+
+        if (isset($this->inputEncoding)) {
+            $inputEncoding = $this->inputEncoding;
+            \array_walk($parameters, function (&$value, $key) use ($inputEncoding) {
+                $value = \mb_convert_encoding($value, $inputEncoding);
+            });
+        }
 
-        $getString .= $this->getDynamicParamsString();
+        $getString .= \http_build_query($parameters, "", "&", \PHP_QUERY_RFC3986);
 
         return $getString;
     }
@@ -252,18 +271,6 @@ abstract class Searchengine
         }
     }
 
-    private function getDynamicParamsString()
-    {
-        $paramString = "";
-
-        $params = $this->getDynamicParams();
-        foreach ($params as $key => $value) {
-            $paramString .= sprintf("&%s=%s", urlencode($key), urlencode($value));
-        }
-
-        return $paramString;
-    }
-
     protected function getDynamicParams()
     {
         return [];