diff --git a/.gitignore b/.gitignore
index 5288b0f95786eaee3f7f4d24a7be82af92632779..ce2c62fe06a253c2c0b6c95525cd7a1dbd8ba4e7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,4 +22,6 @@ npm-debug.log
composer.lock
package-lock.json
-local.log
\ No newline at end of file
+local.log
+
+browserstack.err
diff --git a/app/Http/Controllers/MetaGerSearch.php b/app/Http/Controllers/MetaGerSearch.php
index 22289cad828c7a27ab621c1c9282239cdd9944cf..025be641dc3dff49d37d850274e470679da031fd 100644
--- a/app/Http/Controllers/MetaGerSearch.php
+++ b/app/Http/Controllers/MetaGerSearch.php
@@ -76,10 +76,21 @@ class MetaGerSearch extends Controller
return response($responseContent);
}
+ $quicktips = $metager->createQuicktips();
+ if (!empty($timings)) {
+ $timings["createQuicktips"] = microtime(true) - $time;
+ }
+
# Suche für alle zu verwendenden Suchmaschinen als Job erstellen,
# auf Ergebnisse warten und die Ergebnisse laden
$metager->createSearchEngines($request, $timings);
+ # Versuchen die Ergebnisse der Quicktips zu laden
+ $quicktipResults = $quicktips->loadResults();
+ if (!empty($timings)) {
+ $timings["loadResults"] = microtime(true) - $time;
+ }
+
$metager->startSearch($timings);
$metager->waitForMainResults();
@@ -128,7 +139,7 @@ class MetaGerSearch extends Controller
}
# Die Ausgabe erstellen:
- $resultpage = $metager->createView();
+ $resultpage = $metager->createView($quicktipResults);
if ($spamEntry !== null) {
try {
Cache::put('spam.' . $metager->getFokus() . "." . md5($spamEntry), $resultpage->render(), 604800);
diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php
index 9d1f2f4848436283a28b58c572a0c9da3368ef83..0d0d52f7540da82bf734e811bf07c26db89bcb58 100644
--- a/app/Http/Controllers/SettingsController.php
+++ b/app/Http/Controllers/SettingsController.php
@@ -56,11 +56,22 @@ class SettingsController extends Controller
$cookies = Cookie::get();
$settingActive = false;
foreach ($cookies as $key => $value) {
- if (\starts_with($key, [$fokus . "_engine_", $fokus . "_setting_"])) {
+ if (\starts_with($key, [$fokus . "_engine_", $fokus . "_setting_"]) || strpos($key, $fokus . '_blpage') === 0) {
$settingActive = true;
}
}
+ # Reading cookies for black list entries
+ $blacklist = [];
+ foreach($cookies as $key => $value){
+ if(stripos($key, 'blpage') !== false && stripos($key, $fokus) !== false){
+ $blacklist[$key] = $value;
+ }
+ }
+
+ # Generating link with set cookies
+ $cookieLink = LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), route('loadSettings', $cookies));
+
return view('settings.index')
->with('title', trans('titles.settings', ['fokus' => $fokusName]))
->with('fokus', $request->input('fokus', ''))
@@ -69,7 +80,9 @@ class SettingsController extends Controller
->with('sumas', $sumas)
->with('filter', $filters)
->with('settingActive', $settingActive)
- ->with('url', $url);
+ ->with('url', $url)
+ ->with('blacklist', $blacklist)
+ ->with('cookieLink', $cookieLink);
}
private function getSumas($fokus)
@@ -232,6 +245,7 @@ class SettingsController extends Controller
Cookie::queue($key, "", 0, $cookiePath, null, false, false);
}
}
+ $this->clearBlacklist($request);
return redirect(LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), route('settings', ["fokus" => $fokus, "url" => $url])));
}
@@ -268,4 +282,116 @@ class SettingsController extends Controller
}
return redirect($request->input('url', 'https://metager.de'));
}
+
+ public function newBlacklist(Request $request)
+ {
+ $fokus = $request->input('fokus', '');
+ $url = $request->input('url', '');
+
+ $regexProtocol = '#^([a-z]{0,5}://)?(www.)?#';
+ $blacklist = preg_filter($regexProtocol, '', $request->input('blacklist'));
+
+ if(stripos($blacklist, '/') !== false){
+ $blacklist = substr($blacklist, 0, stripos($blacklist, '/'));
+ }
+
+ $regexUrl = '#^(\*\.)?[a-z0-9]+(\.[a-z0-9]+)?(\.[a-z0-9]{2,})$#';
+ if(preg_match($regexUrl, $blacklist) === 1){
+
+ $path = \Request::path();
+ $cookiePath = "/" . substr($path, 0, strpos($path, "meta/") + 5);
+ $cookies = Cookie::get();
+ $cookieCounter = 0;
+ $noduplicate = true;
+
+ ksort($cookies);
+
+ if(!empty($cookies)){
+ foreach ($cookies as $key => $value) {
+ if(stripos($key, $fokus . '_blpage') === 0){
+ if($value === $blacklist){
+ $noduplicate = false;
+ break;
+ }
+ if((int)(substr($key,strlen($fokus . '_blpage'))) === $cookieCounter){
+ $cookieCounter++;
+ }
+ }
+ }
+ }
+ if($noduplicate && !empty($blacklist) > 0 && strlen($blacklist) <= 255){
+ $cookieName= $fokus.'_blpage'.$cookieCounter;
+ Cookie::queue($cookieName, $blacklist, 0, $cookiePath, null, false, false);
+ }
+ }
+ return redirect(LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), route('settings', ["fokus" => $fokus, "url" => $url])));
+ }
+
+ public function deleteBlacklist(Request $request)
+ {
+ $fokus = $request->input('fokus', '');
+ $url = $request->input('url', '');
+ $path = \Request::path();
+ $cookieKey = $request->input('cookieKey');
+ $cookiePath = "/" . substr($path, 0, strpos($path, "meta/") + 5);
+
+ Cookie::queue($cookieKey, "", 0, $cookiePath, null, false, false);
+
+ return redirect(LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), route('settings', ["fokus" => $fokus, "url" => $url])));
+ }
+
+ public function clearBlacklist(Request $request)
+ {
+ //function to clear the whole black list
+ $fokus = $request->input('fokus', '');
+ $url = $request->input('url', '');
+ $path = \Request::path();
+ $empty = $request->input('empty');
+ $cookiePath = "/" . substr($path, 0, strpos($path, "meta/") + 5);
+ $cookies = Cookie::get();
+
+ foreach($cookies as $key => $value){
+ if(stripos($key, $fokus . '_blpage') === 0) {
+ Cookie::queue($key, "", 0, $cookiePath, null, false, false);
+ }
+ }
+
+ return redirect(LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), route('settings', ["fokus" => $fokus, "url" => $url])));
+ }
+
+ public function loadSettings(Request $request)
+ {
+
+ $path = \Request::path();
+ $cookiePath = "/" . substr($path, 0, strpos($path, "meta/") + 5);
+
+ $sumaFile = MetaGer::getLanguageFile();
+ $sumaFile = json_decode(file_get_contents($sumaFile), true);
+
+ $foki = array_keys($sumaFile['foki']);
+ $regexUrl = '#^(\*\.)?[a-z0-9]+(\.[a-z0-9]+)?(\.[a-z0-9]{2,})$#';
+
+
+ $cookies = $request->all();
+ foreach($cookies as $key => $value){
+ $blpage = false;
+ foreach($foki as $fokus){
+ if(strpos($key, $fokus . '_blpage') === 0 && preg_match($regexUrl, $value) === 1){
+ Cookie::queue($key, $value, 0, $cookiePath, null, false, false);
+ $blpage = true;
+ }
+ }
+ if($blpage){
+ continue;
+ }
+ foreach($sumaFile['filter']['parameter-filter'] as $suma => $filter){
+ if($key === $suma && $value === $filter){
+ Cookie::queue($key, $value, 0, $cookiePath, null, false, false);
+ }
+
+ }
+ }
+
+ return redirect(LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), url('/')));
+ }
}
diff --git a/app/MetaGer.php b/app/MetaGer.php
index 19185c87bedafac79f120855a31c9dc2da5514c0..5834d96dfaa63a70e56ccb76c8f80b00a1fee560 100644
--- a/app/MetaGer.php
+++ b/app/MetaGer.php
@@ -5,6 +5,7 @@ namespace App;
use App;
use Cache;
use Carbon;
+use Cookie;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Redis;
use Jenssegers\Agent\Agent;
@@ -134,7 +135,7 @@ class MetaGer
}
# Erstellt aus den gesammelten Ergebnissen den View
- public function createView()
+ public function createView($quicktipResults = [])
{
# Hiermit werden die evtl. ausgewählten SuMas extrahiert, damit die Input-Boxen richtig gesetzt werden können
$focusPages = [];
@@ -174,7 +175,7 @@ class MetaGer
->with('apiAuthorized', $this->apiAuthorized)
->with('metager', $this)
->with('browser', (new Agent())->browser())
- ->with('quicktips', action('MetaGerSearch@quicktips', ["search" => $this->eingabe]))
+ ->with('quicktips', $quicktipResults)
->with('focus', $this->fokus)
->with('resultcount', count($this->results));
}
@@ -247,7 +248,7 @@ class MetaGer
->with('apiAuthorized', $this->apiAuthorized)
->with('metager', $this)
->with('browser', (new Agent())->browser())
- ->with('quicktips', action('MetaGerSearch@quicktips', ["search" => $this->eingabe, "quotes" => $this->sprueche]))
+ ->with('quicktips', $quicktipResults)
->with('resultcount', count($this->results))
->with('focus', $this->fokus);
break;
@@ -1212,6 +1213,15 @@ class MetaGer
}
}
+ public function createQuicktips()
+ {
+ # Die quicktips werden als job erstellt und zur Abarbeitung freigegeben
+ $quicktips = new \App\Models\Quicktips\Quicktips($this->q, LaravelLocalization::getCurrentLocale(), $this->getTime());
+ return $quicktips;
+ }
+
+
+
private function anonymizeIp($ip)
{
if (str_contains($ip, ":")) {
@@ -1354,6 +1364,13 @@ class MetaGer
$this->hostBlacklist[] = $blacklistString;
}
}
+ foreach (Cookie::get() as $key => $value) {
+ if ((stripos($key, $this->fokus.'_blpage') === 0) && (stripos($value, '*.') === false)) {
+ $this->hostBlacklist[] = $value;
+ }
+ }
+
+ $this->hostBlacklist = array_unique($this->hostBlacklist);
// print the host blacklist as a user warning
if (sizeof($this->hostBlacklist) > 0) {
@@ -1389,6 +1406,14 @@ class MetaGer
$this->domainBlacklist[] = substr($blacklistString, strpos($blacklistString, "*.") + 2);
}
}
+ foreach (Cookie::get() as $key => $value) {
+ if (stripos($key, $this->fokus.'_blpage') === 0 && stripos($value, '*.') === 0) {
+ $this->domainBlacklist[] = str_replace("*.", "", $value);
+ }
+ }
+
+ $this->domainBlacklist = array_unique($this->domainBlacklist);
+
// print the domain blacklist as a user warning
if (sizeof($this->domainBlacklist) > 0) {
$domainString = "";
@@ -1732,9 +1757,14 @@ class MetaGer
$cookies = \Cookie::get();
$count = 0;
+ $sumaFile = MetaGer::getLanguageFile();
+ $sumaFile = json_decode(file_get_contents($sumaFile), true);
+ $foki = array_keys($sumaFile['foki']);
+
foreach ($cookies as $key => $value) {
- if (starts_with($key, [$this->getFokus() . "_setting_", $this->getFokus() . "_engine_"])) {
+ if (starts_with($key, [$this->getFokus() . "_setting_", $this->getFokus() . "_engine_", $this->getFokus() . "_blpage"])) {
$count++;
+ continue;
}
}
return $count;
diff --git a/app/Models/Quicktips/Quicktips.php b/app/Models/Quicktips/Quicktips.php
index 1210568fe193be1f0f8295598e6249d8627d0fba..152268e7b318ead545871ed2735cb4ec7788a183 100644
--- a/app/Models/Quicktips/Quicktips.php
+++ b/app/Models/Quicktips/Quicktips.php
@@ -3,53 +3,57 @@
namespace App\Models\Quicktips;
use Cache;
-use LaravelLocalization;
+use Illuminate\Foundation\Bus\DispatchesJobs;
+use Illuminate\Support\Facades\Redis;
use Log;
class Quicktips
{
+ use DispatchesJobs;
private $quicktipUrl = "/1.1/quicktips.xml";
- private $results = [];
const QUICKTIP_NAME = "quicktips";
- const CACHE_DURATION = 60 * 60;
+ const CACHE_DURATION = 60;
private $hash;
+ private $startTime;
- public function __construct($search, $quotes)
+ public function __construct($search, $locale, $max_time)
{
- $locale = LaravelLocalization::getCurrentLocale();
if (env("APP_ENV") === "production") {
$this->quicktipUrl = "https://quicktips.metager.de" . $this->quicktipUrl;
} else {
$this->quicktipUrl = "https://dev.quicktips.metager.de" . $this->quicktipUrl;
}
- $this->startSearch($search, $quotes, $locale);
+ $this->startTime = microtime(true);
+ $this->startSearch($search, $locale, $max_time);
}
- public function startSearch($search, $quotes, $locale)
+ public function startSearch($search, $locale, $max_time)
{
- $url = $this->quicktipUrl . "?search=" . $this->normalize_search($search) . "&locale=" . $locale . ""es=" . $quotes;
+ $url = $this->quicktipUrl . "?search=" . $this->normalize_search($search) . "&locale=" . $locale;
$this->hash = md5($url);
- $results = null;
+ if (!Cache::has($this->hash)) {
+ if (!Redis::exists($this->hash)) {
- try {
- if (!Cache::has($this->hash)) {
- $results = file_get_contents($url);
- Cache::put($this->hash, $results, Quicktips::CACHE_DURATION);
- } else {
- $results = Cache::get($this->hash);
- }
- } catch (\Exception $e) {
- Log::error($e->getMessage());
- }
+ // Queue this search
+ $mission = [
+ "resulthash" => $this->hash,
+ "url" => $url,
+ "useragent" => "",
+ "username" => null,
+ "password" => null,
+ "headers" => [],
+ "cacheDuration" => self::CACHE_DURATION,
+ "name" => "Quicktips",
+ ];
- if ($results === null) {
- $results = file_get_contents($url);
- }
+ $mission = json_encode($mission);
- $this->results = $this->loadResults($results);
+ Redis::rpush(\App\MetaGer::FETCHQUEUE_KEY, $mission);
+ }
+ }
}
/**
@@ -58,8 +62,9 @@ class Quicktips
* 2. Parse the results
* Returns an empty array if no results are found
*/
- public function loadResults($resultsRaw)
+ public function loadResults()
{
+ $resultsRaw = $this->retrieveResults($this->hash);
if ($resultsRaw) {
$results = $this->parseResults($resultsRaw);
return $results;
@@ -73,7 +78,24 @@ class Quicktips
$body = null;
if (Cache::has($this->hash)) {
- $body = Cache::get($this->hash);
+ return Cache::get($this->hash, false);
+ }
+
+ do {
+ $body = Redis::rpoplpush($this->hash, $this->hash);
+ if ($body === false || $body === null) {
+ usleep(50 * 1000);
+ } else {
+ break;
+ }
+ } while (microtime(true) - $this->startTime < 0.5);
+
+ if ($body === false) {
+ return false;
+ }
+
+ if ($body === "no-result") {
+ return false;
}
if ($body !== null) {
@@ -176,9 +198,4 @@ class Quicktips
{
return urlencode($search);
}
-
- public function getResults()
- {
- return $this->results;
- }
}
diff --git a/resources/lang/de/hilfe.php b/resources/lang/de/hilfe.php
index d7091d395166667733879fe21c56f0bbfd0a5675..4830f0e614255c6ef5c5871da6df1df18e6720ab 100644
--- a/resources/lang/de/hilfe.php
+++ b/resources/lang/de/hilfe.php
@@ -5,17 +5,19 @@ return [
"title" => 'MetaGer - Hilfe',
"title.2" => 'Benutzung der Suchmaschine',
+ "startpage.title" => 'Die Startseite',
+ "startpage.info" => 'Die Sartseite beinhaltet das Suchfeld, oben rechts einen Button zum Aufrufen des Menus und unter dem Suchfeld einen Link, mit dem Sie MetaGer zu Ihrem Browser hinzufügen können. Im unteren Bereich finden Sie Informationen zu MetaGer und dem Trägerverein SUMA-EV.',
"searchfield.title" => 'Das Suchfeld',
"searchfield.info" => 'Das Suchfeld besteht aus mehreren Teilen:',
- "searchfield.memberkey" => 'Dem Schlüsselsymbol (nur für Vereinsmitglieder): Hier können die Mitglieder des SUMA-EV Ihren Schlüssel eingeben, um die werbefreie Suche nutzen zu können. Sie wollen das auch? Werden Sie Mitglied: Beitrittsantrag',
- "searchfield.slot" => 'Dem Suchfeld: Geben Sie hier Ihren Suchbegriff ein.',
- "searchfield.search" => 'Der Lupe: Starten Sie die Suche.',
+ "searchfield.memberkey" => 'dem Schlüsselsymbol (nur für Vereinsmitglieder): Hier können die Mitglieder des SUMA-EV Ihren Schlüssel eingeben, um die werbefreie Suche nutzen zu können. Sie wollen das auch? Werden Sie Mitglied: Beitrittsantrag',
+ "searchfield.slot" => 'dem Suchfeld: Geben Sie hier Ihren Suchbegriff ein.',
+ "searchfield.search" => 'der Lupe: Starten Sie hier die Suche mit einem Klick oder drücken Sie "Enter".',
"resultpage.title" => 'Die Ergebnisseite',
- "resultpage.foci" => 'Unter dem Suchfeld sehen Sie nun 6 verschiedene Suchfoki (Web, Bilder…...), denen intern auch spezifische Suchmaschinen zugeordnet sind.',
+ "resultpage.foci" => 'Unter dem Suchfeld sehen Sie nun 6 verschiedene Suchfoki (drei im englischsprachigen Bereich) (Web, Bilder…...), denen intern auch spezifische Suchmaschinen zugeordnet sind.',
"resultpage.choice" => 'Darunter sehen Sie zwei Punkte: gegebenenfalls „Filter“ sowie „Einstellungen“',
"resultpage.filter" => 'Filter: Sie haben hier die Möglichkeit, Filtermöglichkeiten ein- und auszublenden und Filter anzuwenden. In jedem Suchfokus haben Sie hier andere Auswahlmöglichkeiten.',
- "resultpage.settings" => 'Einstellungen: Hier können Sie dauerhafte Sucheinstellungen für Ihre MetaGer-Suche im aktuellen Fokus vornehmen. Sie können auch Suchmaschinen, die dem Fokus zugeordnet sind, an- und abwählen. Ihre Einstellungen werden mithilfe eines nicht personenbeziehbaren Klartextcookies gespeichert. Unter dem Punkt „Hinweis“ finden Sie einen Link, der Ihnen Ihre gesamten Einstellungen zeigt. Hier können Sie diese auch wieder mit einem Klick löschen.',
+ "resultpage.settings" => 'Einstellungen: Hier können Sie dauerhafte Sucheinstellungen für Ihre MetaGer-Suche im aktuellen Fokus vornehmen. Sie können auch Suchmaschinen, die dem Fokus zugeordnet sind, an- und abwählen. Ihre Einstellungen werden mithilfe eines nicht personenbeziehbaren Klartextcookies gespeichert. Unter dem Punkt „Hinweis“ finden Sie einen Link, der Ihnen Ihre gesamten Einstellungen zeigt. Hier können Sie diese auch wieder mit einem Klick löschen. Hier finden Sie auch einen Link, den Sie kopieren und als Bookmark speichern können. Wenn Sie das Bookmark später aufrufen, sind Ihre Einstellungen wieder parat. Außerdem haben Sie hier die Möglichkeit, sich eine persönliche Blacklist zusammenzustellen; Sie können damit also nicht nur Suchmaschinen, sonden auch spezielle Domains ausfiltern und sich damit eigene Suchsettings produzieren. Zu guter Letzt können Sie hier die Anzeige der Zitate an- und ausschalten. Sie erreichen die Einstellungsseite auch direkt über das Menu.',
"stopworte.title" => 'Stoppworte',
"stopworte.1" => "Wenn Sie unter den MetaGer-Suchergebnissen solche ausschließen wollen, in denen bestimmte Worte (Ausschlussworte / Stoppworte) vorkommen, dann erreichen Sie das, indem Sie diese Worte mit einem Minus versehen.",
@@ -39,14 +41,14 @@ return [
"result.title" => 'Ergebnisse',
"result.info.1" => 'Alle Ergebnisse werden in folgender Form ausgegeben:
',
- "result.info.open" => '"ÖFFNEN": Klicken Sie auf die Überschrift, den darunter stehenden Link (die URL) oder auch auf den Button "ÖFFNEN", um das Ergebnis zu öffnen. Ihre Browsereinstellungen bestimmen, ob dafür ein neuer TAB verwendet wird.',
- "result.info.newtab" => '"IN NEUEM TAB ÖFFNEN" öffnet das Ergebnis auf jeden Fall in einem neuen TAB.',
+ "result.info.open" => '"ÖFFNEN": Klicken Sie auf die Überschrift, den darunter stehenden Link (die URL) oder auch auf den Button "ÖFFNEN", um das Ergebnis im selben TAB zu öffnen.',
+ "result.info.newtab" => '"IN NEUEM TAB ÖFFNEN" öffnet das Ergebnis in einem neuen TAB.',
"result.info.anonym" => '"ANONYM ÖFFNEN" bewirkt, dass das Ergebnis unter dem Schutz unseres Proxys geöffnet wird. Einige Infos dazu finden Sie weiter unten auf dieser Seite.',
"result.info.more" => 'MEHR: Wenn Sie hier klicken, dann erhalten Sie neue Optionen; das Aussehen des Ergebnisses ändert sich:
',
"result.info.2" => 'Die neuen Optionen sind:',
"result.info.saveresult" => '"Ergebnis speichern" (Nur Desktopversion): Dieses Ergebnis wird in einem Sammeltab gespeichert. Der TAB erscheint rechts und bleibt über beliebig viele Suchen aktiv. (siehe Suche in der Suche)',
"result.info.domainnewsearch" => '"Auf dieser Domain neu suchen": Auf der Domain des Ergebnisses wird "genauer nachgesehen".',
- "result.info.hideresult" => '"ausblenden": Hiermit blenden Sie Ergebnisse dieser Domain aus. Sie können diesen Schalter auch direkt hinter Ihr Suchwort schreiben und auch verketten; ebenso ist ein "*" als Wildcard erlaubt. Sie können das zum Beispiel nutzen, indem Sie sich ein Suchergebnis mit den von Ihnen gewünschten Einschränkungen zusammenstellen. Dieses "speichern" Sie als Bookmark. Wenn Sie dieses Bookmark aufrufen, dann haben Sie sogleich Ihre Einstellungen verfügbar und müssen nur noch vorne Ihren Suchbegriff ändern.',
+ "result.info.hideresult" => '"ausblenden": Hiermit blenden Sie Ergebnisse dieser Domain aus. Sie können diesen Schalter auch direkt hinter Ihr Suchwort schreiben und auch verketten; ebenso ist ein "*" als Wildcard erlaubt. Siehe auch "Einstellungen" für eine dauerhafte Lösung.',
'urls.title' => 'URLs ausschließen',
'urls.explanation' => 'Sie können Suchergebnisse ausschließen, deren Ergebnislinks bestimmte Worte enthalten, indem Sie in ihrer Suche "-url:" verwenden.',
'urls.example.1' => 'Beispiel: Sie möchten keine Ergebnisse, bei denen im Ergebnislink das Wort "Hund" auftaucht:',
diff --git a/resources/lang/de/plugin-page.php b/resources/lang/de/plugin-page.php
index 5e2d5cc3f2566f06c472fc211a53230a3634bfeb..235f4dfc51354d7fcac95ba831838e5cf897a285 100644
--- a/resources/lang/de/plugin-page.php
+++ b/resources/lang/de/plugin-page.php
@@ -4,16 +4,16 @@ return [
'open-modal' => 'MetaGer-Plugin hinzufügen',
'open-modal.title' => 'MetaGer zu Ihrem Browser hinzufügen',
'head.0' => 'Firefox installieren und MetaGer hinzufügen',
- 'head.1' => 'MetaGer zum Firefox hinzufügen',
- 'head.2' => 'MetaGer zum Chrome hinzufügen',
- 'head.3' => 'MetaGer zum Opera hinzufügen',
- 'head.4' => 'MetaGer zum Internet Explorer hinzufügen',
- 'head.5' => 'MetaGer zum Microsoft Edge hinzufügen',
- 'head.6' => 'MetaGer zum Safari hinzufügen',
- 'head.7' => 'MetaGer zum Vivaldi hinzufügen',
- 'head.8' => 'MetaGer zum Firefox Klar hinzufügen',
- 'head.9' => 'MetaGer zum UCBrowser hinzufügen',
- 'head.10' => 'Metager zum Samsung hinzufügen',
+ 'head.1' => 'MetaGer zu Firefox hinzufügen',
+ 'head.2' => 'MetaGer zu Chrome hinzufügen',
+ 'head.3' => 'MetaGer zu Opera hinzufügen',
+ 'head.4' => 'MetaGer zu Internet Explorer hinzufügen',
+ 'head.5' => 'MetaGer zu Microsoft Edge hinzufügen',
+ 'head.6' => 'MetaGer zu Safari hinzufügen',
+ 'head.7' => 'MetaGer zu Vivaldi hinzufügen',
+ 'head.8' => 'MetaGer zu Firefox Klar hinzufügen',
+ 'head.9' => 'MetaGer zu UCBrowser hinzufügen',
+ 'head.10' => 'Metager zu Samsung Internet hinzufügen',
'browser-download' => 'Firefox herunterladen',
'firefox-plugin' => 'MetaGer als Standardsuchmaschine mit Add-on einrichten',
diff --git a/resources/lang/de/settings.php b/resources/lang/de/settings.php
index 773ad441c6474e9195f5c961ef6df87548015433..e0ba814efba9ab44714bd6bcac8de27b962771a7 100644
--- a/resources/lang/de/settings.php
+++ b/resources/lang/de/settings.php
@@ -1,33 +1,42 @@
"Sucheinstellungen",
- "text.1" => "Hier können Sie dauerhafte Sucheinstellungen für Ihre MetaGer-Suche im Fokus :fokusName vornehmen. Sollten diese nicht dauerhaft gespeichert bleiben, überprüfen Sie bitte in Ihren Browsereinstellungen, ob dieser beim Beenden gespeicherte Cookies löscht.",
+ 'header.1' => 'Sucheinstellungen',
+ 'text.1' => 'Hier können Sie dauerhafte Sucheinstellungen für Ihre MetaGer-Suche im Fokus :fokusName vornehmen. Sollten diese nicht dauerhaft gespeichert bleiben, überprüfen Sie bitte in Ihren Browsereinstellungen, ob dieser beim Beenden gespeicherte Cookies löscht.',
- "hint.header" => "Hinweis",
- "hint.text" => "Um Ihre Sucheinstellungen zu speichern, verwenden wir nicht-personenbeziehbare Cookies. Diese werden im Klartext in Ihrem Browser gespeichert. Sie können sich eine Übersicht aller von Ihnen vorgenommenen Einstellungen und Cookies anzeigen lassen.",
+ 'hint.header' => 'Hinweis',
+ 'hint.text' => 'Um Ihre Sucheinstellungen zu speichern, verwenden wir nicht-personenbeziehbare Cookies. Diese werden im Klartext in Ihrem Browser gespeichert. Sie können sich eine Übersicht aller von Ihnen vorgenommenen Einstellungen und Cookies anzeigen lassen.',
+ 'hint.loadSettings' => 'Hier finden Sie einen Link, den Sie als Startseite bzw. Lesezeichen einrichten können um Ihre aktuell gesetzen Einstellungen mitzunehmen. Der Link erstellt beim Aufrufen Cookies mit dem entsprechenden Einstellungen.',
- "header.2" => "Verwendete Suchmaschinen",
- "text.2" => "Nachfolgend sehen Sie alle für diesen Fokus verfügbaren Suchmaschinen. Mit einem Klick auf den Namen können Sie Ein-/Ausgeschaltet werden. Eingeschaltete Suchmaschinen sind in grün dargestellt. Ausgeschaltete in rot oder grau.",
- "disabledByFilter" => "Durch Suchfilter deaktiviert:",
+ 'header.2' => 'Verwendete Suchmaschinen',
+ 'text.2' => 'Nachfolgend sehen Sie alle für diesen Fokus verfügbaren Suchmaschinen. Mit einem Klick auf den Namen können Sie Ein-/Ausgeschaltet werden. Eingeschaltete Suchmaschinen sind in grün dargestellt. Ausgeschaltete in rot oder grau.',
+ 'disabledByFilter' => 'Durch Suchfilter deaktiviert:',
- "header.3" => "Suchfilter",
- "text.3" => "An dieser Stelle können Sie Suchfilter dauerhaft setzen. Mit der Auswahl eines Suchfilters stehen nur noch Suchmaschinen zur Verfügung, welche diesen Filter unterstützen. Umgekehrt werden auch nur Suchfilter angezeigt, welche von der aktuellen Suchmaschinenauswahl unterstützt werden.",
+ 'header.3' => 'Suchfilter',
+ 'text.3' => 'An dieser Stelle können Sie Suchfilter dauerhaft setzen. Mit der Auswahl eines Suchfilters stehen nur noch Suchmaschinen zur Verfügung, welche diesen Filter unterstützen. Umgekehrt werden auch nur Suchfilter angezeigt, welche von der aktuellen Suchmaschinenauswahl unterstützt werden.',
- "save" => "Speichern",
- "reset" => "Alle Einstellungen löschen",
- "back" => "Zurück zur letzten Seite",
+ 'header.4' => 'Blacklist',
+ 'text.4' => 'Hier können Sie Domains eintragen, welche aus Ihrer Suche ausgeschlossen werden sollen. Wenn Sie alle Subdomains einschließen wollen, starten Sie mit "*.".',
+ 'address' => 'Adresseingabe',
- // Translations from the settings overview
- 'noSettings' => "Aktuell sind keine Einstellungen gesetzt!",
- 'allSettings.header' => "Auf :root gesetzte Einstellungen",
- 'allSettings.text' => "Hier finden Sie eine Übersicht aller von Ihnen gesetzten Einstellungen und Cookies. Sie können einzelne Einträge löschen, oder alle entfernen. Bedenken Sie, dass die zugehörigen Einstellungen dann nicht mehr verwendet werden.",
-
- 'meaning' => "Bedeutung",
- 'actions' => "Aktionen",
+ 'save' => 'Speichern',
+ 'reset' => 'Alle Einstellungen löschen',
+ 'back' => 'Zurück zur letzten Seite',
+ 'add' => 'Hinzufügen',
+ 'clear' => 'Blacklist leeren',
+ 'copy' => 'Kopieren',
- 'engineDisabled' => "Die Suchmaschine :engine wird im Fokus :focus nicht abgefragt.",
- 'inFocus' => "im Fokus",
- 'key' => "Ihr Schlüssel für die werbefreie Suche",
- 'removeCookie' => "Diesen Cookie entfernen",
+ // Translations from the settings overview
+ 'noSettings' => 'Aktuell sind keine Einstellungen gesetzt!',
+ 'allSettings.header' => 'Auf :root gesetzte Einstellungen',
+ 'allSettings.text' => 'Hier finden Sie eine Übersicht aller von Ihnen gesetzten Einstellungen und Cookies. Sie können einzelne Einträge löschen, oder alle entfernen. Bedenken Sie, dass die zugehörigen Einstellungen dann nicht mehr verwendet werden.',
+
+ 'meaning' => 'Bedeutung',
+ 'actions' => 'Aktionen',
+
+ 'engineDisabled' => 'Die Suchmaschine :engine wird im Fokus :focus nicht abgefragt.',
+ 'inFocus' => 'im Fokus',
+ 'key' => 'Ihr Schlüssel für die werbefreie Suche',
+ 'blentry' => 'Blacklisteintrag',
+ 'removeCookie' => 'Diesen Cookie entfernen',
];
diff --git a/resources/lang/de/tor.php b/resources/lang/de/tor.php
index 80503cd3dfe8f92d188909f1e1243d7ee640006b..95fc79d121230f39737a3836dd4927f8b1048209 100644
--- a/resources/lang/de/tor.php
+++ b/resources/lang/de/tor.php
@@ -3,4 +3,5 @@
return [
'description' => 'Nachfolgend finden Sie den Link zum Hidden-Service von MetaGer. Achtung: Dieser Link ist ausschließlich über das Tor-Netzwerk erreichbar. Ihr Browser produziert eine Fehlermeldung, wenn er nicht mit diesem verbunden ist.',
'torbutton' => 'Hidden-Service öffnen',
+ 'torurl' => 'http://metagerv65pwclop2rsfzg4jwowpavpwd6grhhlvdgsswvo6ii4akgyd.onion/',
];
diff --git a/resources/lang/en/hilfe.php b/resources/lang/en/hilfe.php
index 9fbdbf728ca4a2bc162194641525660d22d1993c..193ecaaac2004bc3d5db204fd1e0649670dbb573 100644
--- a/resources/lang/en/hilfe.php
+++ b/resources/lang/en/hilfe.php
@@ -5,6 +5,9 @@ return [
"title.2" => 'Use of the search engine',
+ "startpage.title" => 'The start page',
+ "startpage.info" => 'The start page contains the search field and a menu button in the upper right corner. There is a link below the search field which let you add MetaGer to your web browser. At last, at the bottom of the page there is some information about MetaGer and its supporting association, the SUMA-EV.',
+
"searchfield.title" => 'The search field',
"searchfield.info" => 'The search field contains:',
"searchfield.memberkey" => 'The key symbol (only SUMA-EV members): Members can enter a private key to use the "free-of-advertising" metager search. If you want this too, just become a member: Membership form',
@@ -12,10 +15,13 @@ return [
"searchfield.search" => 'The magnifier: Start your search.',
"resultpage.title" => 'The result page',
- "resultpage.foci" => 'There are six different search focuses below the search field (Web, Pictures...). We assigned specific search engines to these focuses.',
+ "resultpage.foci" => 'There are three (six for the german branch) different search focuses below the search field (Web, Pictures and Shopping). We assigned specific search engines to these focuses.',
"resultpage.choice" => 'Below these you have two links:',
"resultpage.filter" => 'Filter: Toggle filters on / off and apply settings here. Each focus has its own assortment.',
- "resultpage.settings" => 'Settings: Apply here your permanent settings for the current focus. You can select / unselect search engines here, too. Your settings are stored as non-personally identifiable cookies. Click "Overview" to see your settings. If settings have been stored you find a deletion button at the end of the page.',
+ "resultpage.settings" => 'Settings: Apply here your permanent settings for the current focus. You can select / unselect search engines here, too. Your settings are stored as non-personally identifiable cookies. Click "Overview" to see your settings. If settings have been stored you find a deletion button at the end of the page. The section "hints" offers a link to the cookie list and also a box with a link which is useful to copy and save as a bookmark. Using the bookmark you will have all settings working immediately. Further the section "Black List" let you exclude your entries from being used for searching. At last you may hide / unhide the citations here. There is also a menu entry to access the settings page.',
+
+
+
"stopworte.title" => "Exclude single words",
"stopworte.1" => "If you want to exclude words within the search result, you have to put a \"-\" in front of that word",
@@ -39,14 +45,14 @@ return [
"result.title" => 'Results',
"result.info.1" => 'All results will look like this:
',
- "result.info.open" => '"OPEN": Click the headline, the link below (URL) or the "OPEN" button to open the result. This will be in the same or a new TAB due to your browser settings.',
- "result.info.newtab" => '"OPEN IN NEW TAB" will open the result in a new TAB in any case.',
+ "result.info.open" => '"OPEN": Click the headline, the link below (URL) or the "OPEN" button to open the result in the same TAB.',
+ "result.info.newtab" => '"OPEN IN NEW TAB" will open the result in a new TAB.',
"result.info.anonym" => '"OPEN ANONYMOUSLY": the page will be opened under the proxy protection. There is some information about the proxy further down here.',
"result.info.more" => '"MORE": you will get more options, the result changes its appearance to:
',
"result.info.2" => 'The new options are:',
"result.info.saveresult" => '"Save result in TAB" (Only desktop): The result will be stored in a new TAB. It´ s used for collecting results out of several searches. This TAB appears on the right side of your screen. (info: Search in search)',
"result.info.domainnewsearch" => '"Start a new search on this domain": search only on this domain.',
- "result.info.hideresult" => '"Hide": hide results from this domain. You can use this filter directly after your search words (e.g. my search words -site:*.wikipedia.org), filters can be concatenated and the wildcard "*" is allowed. Do one search with a filter and store it as a bookmark. Next time -using the bookmark- you have your settings active immediately.',
+ "result.info.hideresult" => '"Hide": hide results from this domain. You can use this filter directly after your search words (e.g. my search words -site:*.wikipedia.org), filters can be concatenated and the wildcard "*" is allowed. See also "Settings"',
"urls.title" => "Exclude URLs",
"urls.explanation" => "Use \"-url:\" to exclude search results containing specified words.",
@@ -69,7 +75,7 @@ return [
"plugin.title" => "Browser-Plugin",
"plugin.1" => "There is a MetaGer Plugin for most of the common web browsers. The plugin provides easy search from the web browsers search field. Find out more: MetaGer Plugin.",
- "suchwortassoziator.title" => "Finding connotations to searchwords",
+ "suchwortassoziator.title" => "MetaGer-Web-Associator",
"suchwortassoziator.1" => 'Ask the MetaGer-Web-Assoziator (Tools / Associator) to find connotations in a subject area. The service doesn't append upon any language because it uses webdocuments as a source. Therefore, you find any connotations to your used language and vice-versa.',
"suchwortassoziator.2" => "Example: you want to know more about \"tick bites\" and its dangers but you forgot the technical terms around this issue. The \"Assoziator\" presents \"Borreliose\" and \"fsme\" among others.",
"suchwortassoziator.3" => "Please let us know if something unsuitable appears. Please use our contact form.",
diff --git a/resources/lang/en/plugin-page.php b/resources/lang/en/plugin-page.php
index 3d34d49efe7f1fa37c5d7120213c3aad4e7edc18..c70c0a794829a62b277018922508a6cb7be062c1 100644
--- a/resources/lang/en/plugin-page.php
+++ b/resources/lang/en/plugin-page.php
@@ -3,6 +3,7 @@
return [
'open-modal' => 'Install MetaGer-Plugin',
'open-modal.title' => 'Add the MetaGer-Plugin to your browser',
+ 'head.0' => 'Install Firefox and add MetaGer',
"head.1" => "Add MetaGer to your Firefox",
"head.2" => "Add MetaGer to your Chrome",
"head.3" => "Add MetaGer to your Opera",
@@ -11,6 +12,8 @@ return [
"head.6" => "Add MetaGer to your Safari",
"head.7" => "Add Metager to your Vivaldi",
"head.8" => "Add MetaGer to your Firefox Focus",
+ 'head.9' => 'Add MetaGer to your UCBrowser',
+ 'head.10' => 'Add MetaGer to your Samsung Internet',
'browser-download' => 'Download Firefox',
'firefox-plugin' => 'Set MetaGer as default search engine with add-on',
@@ -21,7 +24,7 @@ return [
'desktop-unable' => 'The browser you use does not offer to add MetaGer as (default) search engine, but you can download Firefox here, an open-source browser which provides the feature.',
'mobile-unable' => 'The browser you use does not offer to add MetaGer as (default) search engine, but you can download Firefox here, an open-source browser which provides the feature.',
- 'desktop-unlisted' => 'We are not aware if the browser you use offers to add MetaGer as (default) search engine, but you can download Firefox here, an open-source browser which provides the feature.',
- 'mobile-unlisted' => 'We are not aware if the browser you use offers to add MetaGer as (default) search engine, but you can download Firefox here, an open-source browser which provides the feature.',
+ 'desktop-notlisted' => 'We are not aware if the browser you use offers to add MetaGer as (default) search engine, but you can download Firefox here, an open-source browser which provides the feature.',
+ 'mobile-notlisted' => 'We are not aware if the browser you use offers to add MetaGer as (default) search engine, but you can download Firefox here, an open-source browser which provides the feature.',
];
diff --git a/resources/lang/en/settings.php b/resources/lang/en/settings.php
index af7c83a1200c3351bd66c73e61131d2c9f163bad..f1968e6af73debed4fd1ae0e8eb7b1765e4a3a2d 100644
--- a/resources/lang/en/settings.php
+++ b/resources/lang/en/settings.php
@@ -6,6 +6,7 @@ return [
"hint.header" => "Note",
"hint.text" => "To save your search settings, we use non-personally identifiable cookies. These are saved in clear text in your browser. You can see an overview of all the settings and cookies you have made.",
+ 'hint.loadSettings' => 'Here is a link you can use as startpage or bookmark to keep your current settings. The URL sets your settings as cookies.',
"header.2" => "Used Search Engines",
"text.2" => "Below are all the search engines available for this focus. With a click on the name they can be switched on / off. Used search engines are shown in green. Not used ones in red or gray.",
@@ -14,9 +15,16 @@ return [
"header.3" => "Search Filters",
"text.3" => "At this point you can set search filters permanently. With the selection of a search filter, only search engines are available that support this filter. Conversely, only search filters are displayed which are supported by the current search engine selection.",
+ 'header.4' => 'Black list',
+ 'text.4' => 'Here you can add domains to exclude when searching. If you want to exclude all subdomains start with "*.".',
+ 'address' => 'Address',
+
"save" => "Save",
"reset" => "Delete all settings",
"back" => "Back to the last page",
+ 'add' => 'Add',
+ 'clear' => 'Clear black list',
+ 'copy' => 'Copy',
// Translations from the settings overview
'noSettings' => "Currently no settings are set!",
@@ -29,5 +37,6 @@ return [
'engineDisabled' => "The search engine :engine will not be queried in focus :focus.",
'inFocus' => "in focus",
'key' => "Your key to the ad-free search",
+ 'blentry' => 'Black list entry',
'removeCookie' => "Remove this cookie",
];
diff --git a/resources/lang/en/tor.php b/resources/lang/en/tor.php
index fa32eac9675a5eeb80f586813c9a25f18a51684f..f568a62a0b682aa2b9eba039a42ad309d8205a36 100644
--- a/resources/lang/en/tor.php
+++ b/resources/lang/en/tor.php
@@ -3,4 +3,5 @@
return [
'description' => "Below you will find the link to MetaGer's hidden service. Attention: This link can only be reached via the Tor network. Your browser produces an error message if it is not connected to it.",
"torbutton" => "Open TOR-hidden service",
+ 'torurl' => 'http://metagerv65pwclop2rsfzg4jwowpavpwd6grhhlvdgsswvo6ii4akgyd.onion/en/',
];
diff --git a/resources/lang/es/app.php b/resources/lang/es/app.php
new file mode 100644
index 0000000000000000000000000000000000000000..0c5f4101f444d7432596715af367417fb88bc770
--- /dev/null
+++ b/resources/lang/es/app.php
@@ -0,0 +1,24 @@
+ "Aplicaciones MetaGer",
+ "disclaimer.1" => "Actualmente solo podemos proporcionar nuestras aplicaciones para dispositivos Android. Desafortunadamente, Apple nos lo pone demasiado difícil. Rogamos su comprensión.",
+ "head.2" => "Aplicación MetaGer",
+ "metager.1" => "Con esta aplicación, obtiene toda la potencia de nuestro motor de búsqueda en su smartphone.\r\nBusque en Internet con solo deslizar un dedo mientras que mantiene su privacidad.",
+ "metager.2" => "Puede instalar la aplicación para nuestra búsqueda a través de Google Playstore o instalarla manualmente desde nuestro servidor en su smartphone, protegida de datos.",
+ "metager.playstore" => "Google Playstore",
+ "metager.manuell" => "Instalación manual",
+ "head.3" => "Aplicación Maps MetaGer",
+ "maps.playstore" => "Google Playstore",
+ "maps.1" => "Esta aplicación ofrece una integración nativa de MetaGer Maps(con tecnología de Openstreetmap) en su dispositivo móvil Android.",
+ "maps.2" => "De este modo el servicio de mapas y navegación también funciona de manera óptima y rápida en su smartphone. La aplicación aumenta el rendimiento en comparación con el uso en el navegador móvil y ofrece algunas otras ventajas. ¡Intentalo!",
+ "maps.3" => "Después del primer inicio, la aplicación solicita los siguientes permisos:",
+ "maps.list.1" => "Acceso a datos de posición => Si el GPS está activado en su teléfono móvil, podemos mejorar sus resultados de búsqueda. Además habilita la función de navegación paso a paso.Por supuesto, estos datos no se almacenan en ningún lugar y ciertamente no se transmiten a terceros.",
+ "maps.list.2" => "Acceso a fotos, medios y archivos en el dispositivo => Esta autorización es necesaria para que esta aplicación pueda actualizarse sola. Si hay una nueva versión de la aplicación disponible, puede guardarla en su directorio de descarga y luego instalarla automáticamente desde allí. Si no desea otorgar este permiso, deberá reinstalar manualmente la aplicación cada vez que haya una actualización disponible.",
+ "head.4" => "Instalación",
+ "installation.1" => "Si desea instalar nuestra aplicación directamente desde Google Playstore, no necesita considerar nada más. Simplemente haga clic en el enlace \"Google Playstore\" para ser redirigido al App Store y haga clic en \"Instalar\".",
+ "installation.2" => "Si desea instalar nuestra aplicación manualmente (sin App Store), proceda de la siguiente manera:",
+ "list.1" => "Abra el menú de configuración para permitir la instalación: Configuración => Sistema => Seguridad. Marque la casilla junto a \"Fuentes desconocidas\".",
+ "list.2" => "Seleccione el enlace \"Instalación manual\" en esta página para descargar el archivo de instalación en su dispositivo móvil.",
+ "list.3" => "Abra el archivo descargado en su dispositivo móvil. Esto iniciará el proceso de instalación."
+];
diff --git a/resources/lang/es/plugin-page.php b/resources/lang/es/plugin-page.php
index 7ed5dd103b0461ab728d64a85749df553bb2434b..ad1e386e4490d9824fd12ea9b28d231ab10d5564 100644
--- a/resources/lang/es/plugin-page.php
+++ b/resources/lang/es/plugin-page.php
@@ -8,48 +8,8 @@ return [
"head.4" => "Añadir MetaGer a Internet Explorer",
"head.5" => "Añadir MetaGer a Microsoft Edge",
"head.6" => "Añadir MetaGer a Safari",
- "firefox.1" => 'En su navegador, haga clic en "" en la esquina superior derecha de la barra de direcciones para abrir el menú de acción de la página y luego haga clic en "Agregar motor de búsqueda" ( ver foto)',
- "firefox.2" => 'Abre la configuración de Firefox. Para esto, ingrese "about:preferences#search" en la barra de direcciones. En la sección "Motor de búsqueda predeterminado", seleccione MetaGer (ver imagen).',
- "firefox.3" => "Instalar MetaGer como página de inico en el :browser",
- "firefox.4" => "Hacer click arriba a la derecha en los tres barras horizontales en su navegador (Menú) y abre \"Preferencias\"",
- "firefox.5" => "Introducir en el campo \"Pagina de inicio\" \"https:\\/\\/metager.de\"",
- "chrome.1" => "Haga click en su Chrome arriba a la derecha y en el subsecuente menú en \"Preferencias\", para abrir las preferencias de su Chrome.",
- "chrome.2" => "In la área de la búsqueda hacer click en administrar motores de búsqueda ...",
- "chrome.3" => "En la lista que se ve ahora, busca la entrada \"MetaGer\". Cloquease con el ratón sobre la entrada \"Establecer como predeterminado\"",
- "chrome.4" => "Definir MetaGer como pagina de inicio en el :browser ",
- "chrome.5" => "Hacer click arriba a la derecha en su navegador en y abre \"Configuración\"",
- "chrome.6" => "En la sección \"Al abrir el navegador ... \" seleccionar \"Abrir una página especifica\" y haga click en \"Establecer páginas\" ",
- "chrome.7" => "Introduzca \"https:\\/\\/metager.de\" como URL en el campo \"Añadir una nueva página\" ",
- "chrome.8" => "Nota: Todos los sitios web visibles aquí se abren ahora cuando inicia el navegador. Usted puede borrarlos, poniéndose con el ratón encima y hacer click en la \"x\" al lado derecha.",
- "opera.1" => "Haga click a para abrir MetaGer en una nueva pestaña.",
- "opera.2" => "En la nueva pestaña haga click en la barra de la búsqueda con el botón derecha del ratón.",
- "opera.3" => "Elige en el menú de contexto \"editar buscadores\" ",
- "opera.4" => "En la ventana popup hacer click en \"Añadir buscador\"",
- "opera.5" => "(Desafortunadamente ya no es posible en Opera poner buscadores nuevos como estandard, pero aquípuede instalar un navegador de código abierto que soporta esto.)",
- "opera.6" => "Hacer MetaGer la página de inicio en :browser",
- "opera.7" => "Hacer click en el menú del navegador en \"Editar\"->\"Configuración\"",
- "opera.8" => "En la sección \"Inicio\" seleccione \"Abrir una página especifica\" y después \"Definir página\"",
- "opera.9" => "En el campo \"Introducir URL\" ponga \"https://metager.de\" y confirma con introducir",
- "opera.10" => "Haga click en \"Confirmar\"",
- "IE.1" => "Haga click en , para añadir MetaGer como búscador",
- "IE.4" => "Haga click en su navegador arriba derecha en Extras",
- "IE.5" => "Escoge el punto del menú \"Administrar extensiones\"",
- "IE.6" => "Busca Tipos de Extensiones y haga click en \"Máquinas de búsqueda\" y después al lado derecho click en \"MetaGer\"",
- "IE.7" => "Escoge el botón \"Definir como predeterminado\"",
- "IE.8" => "Definir MetaGer como página de inicio en :browser ",
- "IE.9" => "Haga click arriba derecha en y abre \"Opciones de internet\"",
- "IE.10" => "Si quiere definir MetaGer como única página de inicio, marca todo el texto en el campo del texto y reemplázalo por \"https://metager.de\"",
- "IE.11" => "Haga click en \"Aceptar\"",
- "edge.1" => "Haga click en su navegador arriba derecha en Extras (",
- "edge.2" => ") y selecciona \"Configuración\"",
- "edge.3" => "Haga scroll hacia abajo y haga click en \"Mostrar configuración avanzada\"",
- "edge.4" => "Haga scroll de nuevo hacia abajo llegando al \"Buscar en la barra de direcciones con\" y haga click en \"Cambiar\"",
- "edge.5" => "Selecciona \"MetaGer: Sicher suchen & finden...\" y clickea en \"Definir com predeterminado\"",
- "edge.6" => "Hacer MetaGer la página de inicio en :browser",
- "edge.7" => "Haga click arriba derecha en el navegador en y abre \"Configuraciones\"",
- "edge.8" => "Selecciona en la sección \"Abrir con\" el ítem \"Página específica\"",
- "edge.9" => "En el menú de cascada selecciona \"Definido por el usuario\"",
- "edge.10" => "En la área abajo ponga \"https://metager.de\" en el campo \"Introducir URL\" y haga click en el símbolo \"+\"",
- "edge.11" => "Borra todas las entradas, que no quiere abrir al inicio (p.ej. about:start), haciendo click en el pequeño \"x\" a la derecha.",
- "safari.1" => "No pueden añadir otras motores de busqueda alternativas en Safari. \"OpenSearch for Safari\" y \"Glims\" soy terminado.",
+ "head.7" => "Añadir MetaGer a Vivaldi",
+ "head.8" => "Añadir MetaGer a Firefox Klar",
+ "head.9" => "Añadir MetaGer a UCBrowser",
+ "head.10" => "Añadir MetaGer a Samsung Internet",
];
diff --git a/resources/lang/es/results.php b/resources/lang/es/results.php
index 19b9de885ef3fdfe83e4878c863afcbac5f44072..3a8aac86f2f197c4a12e2c0e1823e634eb9b7c9a 100644
--- a/resources/lang/es/results.php
+++ b/resources/lang/es/results.php
@@ -1,9 +1,13 @@
"(con desviar)",
- "weiter" => "Continuar",
- "zurueck" => "Atrás",
- "filter" => "Resultados filtraban: [:filter]. Desactivar filtro.",
- "filter.default" => "Recibís el interfaz del usuario en :langName, pero resultados en TODOS idiomas. Usan adjustar para seleccionar una idioma para los resultados.",
+ "redirect" => "(con desviar)",
+ "weiter" => "Continuar",
+ "zurueck" => "Atrás",
+ "backtotop" => "Volver al principio de la página",
+ "filter" => "Los resultados de la búsqueda se filtraron: [:filter]. desactiva filtro.",
+ "filter.default" => "Obtiene la interfaz de usuario en : langName , pero los resultados en TODOS los idiomas. Para obtener resultados solo en alemán, puede ajustar \"Seleccionar idioma\" en .\r\n",
+ "produktanzeigen" => "Anuncios de productos:",
+ "query.alteration" => "Contiene resultados para :alteration ",
+ "query.alteration.original" => "En su lugar, busque :original "
];
diff --git a/resources/lang/es/tor.php b/resources/lang/es/tor.php
index 6223da8f87d279c5d68955470260373eb66ecc32..6a677951af0c1375f01864d4667b518d60a66c5c 100644
--- a/resources/lang/es/tor.php
+++ b/resources/lang/es/tor.php
@@ -3,4 +3,5 @@
return [
'description' => 'A continuación, encontrará el enlace al servicio oculto de MetaGer. Atención: Solo se puede acceder a este enlace a través de la red Tor. Su navegador genera un mensaje de error si no está conectado a él.',
"torbutton" => "Usar Tor",
+ 'torurl' => 'http://metagerv65pwclop2rsfzg4jwowpavpwd6grhhlvdgsswvo6ii4akgyd.onion/es/',
];
diff --git a/resources/lang/fr/plugin-page.php b/resources/lang/fr/plugin-page.php
index 5db072d7d2ac3d8ecc1998cb3fff1231b8760fa2..3a756324c5963ddd082f11cdc7743ee07b9cc9f0 100644
--- a/resources/lang/fr/plugin-page.php
+++ b/resources/lang/fr/plugin-page.php
@@ -7,7 +7,8 @@ return [
"head.4" => "Ajouter MetaGer à Internet Explorer",
"head.5" => "Ajouter MetaGer à Microsoft Edge",
"head.6" => "Ajouter MetaGer à Vivaldi",
- "opera.10" => "Cliquer sur \"ok\"",
- "IE.11" => "Cliquer sur \"ok\"",
- "vivaldi.7" => "Cliquer sur \"ajouter\"",
+ "head.7" => "Ajouter MetaGer à Vivaldi",
+ "head.8" => "Ajouter MetaGer à Firefox Klar",
+ "head.9" => "Ajouter MetaGer à UCBrowser",
+ "head.10" => "Ajouter MetaGer à Samsung Internet",
];
diff --git a/resources/less/metager/pages/resultpage.less b/resources/less/metager/pages/resultpage.less
index a2a703ea1965582827ae6a5a7ecdf2f0dc31a7ca..a7b8077d7c9338de645c5531361d6c94c52380fb 100644
--- a/resources/less/metager/pages/resultpage.less
+++ b/resources/less/metager/pages/resultpage.less
@@ -1,5 +1,6 @@
@import "./resultpage/result-page.less";
@import "./resultpage/result.less";
+@import "./resultpage/quicktips.less";
@import "./resultpage/product.less";
@import "./resultpage/result-saver.less";
@import "./resultpage/keyboard-nav.less";
\ No newline at end of file
diff --git a/resources/less/metager/pages/resultpage/quicktips.less b/resources/less/metager/pages/resultpage/quicktips.less
index f7f3eb879083fa2a4d5f19dcd3a29e7936e60c2d..1627559d9565e280897db335b0fd4c8e5ac7325b 100644
--- a/resources/less/metager/pages/resultpage/quicktips.less
+++ b/resources/less/metager/pages/resultpage/quicktips.less
@@ -1,7 +1,7 @@
/* Quicktips */
-@import "../../variables.less";
-@import "../../general/cards.less";
-@import "../../general/general.less";
+// @import "../../variables.less";
+// @import "../../general/cards.less";
+// @import "../../general/general.less";
@quicktip-font-large: @result-font-large;
@quicktip-font-medium: @result-font-medium;
@quicktip-font-small: @result-font-small;
diff --git a/resources/less/metager/pages/settings.less b/resources/less/metager/pages/settings.less
index 2d61c26fc0d9f0f7342fafc00827d15aa9d32add..8c5bc3d7e4c6be3389568cf8b5670f9105ef7252 100644
--- a/resources/less/metager/pages/settings.less
+++ b/resources/less/metager/pages/settings.less
@@ -48,4 +48,49 @@
#no-settings {
text-align: center;
}
+
+ #newentry{
+ #create{
+ display:flex;
+ align-items:left;
+ margin-bottom:10px;
+ #blacklist{
+ flex-grow:1;
+ width:100%;
+ }
+ button{
+ width:200px;
+ }
+ }
+ }
+ #deleteentry{
+ table{
+ border:1px solid lightgray;
+ flex-grow:1;
+ width:100%;
+ }
+ tr:nth-child(odd){
+ background-color:rgb(240, 240, 240);
+ }
+ tr:nth-child(even){
+ background-color:rgb(255, 215, 200);
+ }
+ td{
+ padding:10px 0px;
+ }
+ td:first-child{
+ padding-left:5px;
+ }
+ td:last-child{
+ width:20px;
+ }
+ }
+ #cookieLink{
+ display:flex;
+ align-items:left;
+ #loadSettings{
+ flex-grow:1;
+ width:100%;
+ }
+ }
}
\ No newline at end of file
diff --git a/resources/views/hilfe.blade.php b/resources/views/hilfe.blade.php
index 3cfe835b45524b3cb9bdbb13434a329f9c4481ed..2878b3ee9f5d70fc56dd6fb634f3e78a0b456e20 100644
--- a/resources/views/hilfe.blade.php
+++ b/resources/views/hilfe.blade.php
@@ -6,8 +6,10 @@