Kaynağa Gözat

Merge pull request #1911 from causefx/v2-develop

V2 develop
causefx 3 yıl önce
ebeveyn
işleme
c789cb3551

+ 8 - 1
api/classes/organizr.class.php

@@ -67,7 +67,7 @@ class Organizr
 
 	// ===================================
 	// Organizr Version
-	public $version = '2.1.2400';
+	public $version = '2.1.2420';
 	// ===================================
 	// Quick php Version check
 	public $minimumPHP = '7.4';
@@ -3680,6 +3680,7 @@ class Organizr
 		$authSuccess = false;
 		$authProxy = false;
 		$addEmailToAuthProxy = true;
+		$bypassTFA = false;
 		// Check Login attempts and kill if over limit
 		if ($loginAttempts > $this->config['loginAttempts'] || isset($_COOKIE['lockout'])) {
 			$this->coookieSeconds('set', 'lockout', $this->config['loginLockout'], $this->config['loginLockout']);
@@ -3702,6 +3703,7 @@ class Organizr
 				$addEmailToAuthProxy = ($authProxy && $emailHeader) ? ['email' => $emailHeader] : true;
 				if ($authProxy) {
 					$this->logger->info('User has been verified using Auth Proxy');
+					$bypassTFA = true;
 				} else {
 					$this->logger->warning('User has failed verification using Auth Proxy');
 				}
@@ -3807,6 +3809,11 @@ class Organizr
 							}
 						}
 					}
+					if ($bypassTFA) {
+						$tfaProceed = false;
+						$this->setLoggerChannel('Authentication', $username);
+						$this->logger->info('Bypassing 2FA');
+					}
 					if ($tfaProceed) {
 						$this->setLoggerChannel('Authentication', $username);
 						$this->logger->debug('Starting 2FA verification');

+ 38 - 37
api/functions/auth-functions.php

@@ -472,46 +472,47 @@ trait AuthFunctions
 		// https://github.com/MediaBrowser/Emby/issues/3553
 		//return plugin_auth_emby_local($username, $password);
 		try {
-			// Get A User
-			$connectUserName = '';
-			$url = $this->qualifyURL($this->config['embyURL']) . '/Users?api_key=' . $this->config['embyToken'];
-			$response = Requests::get($url);
+			$this->setLoggerChannel('Emby')->info('Attempting to Login with Emby Connect for user: ' . $username);
+			$connectURL = 'https://connect.emby.media/service/user/authenticate';
+			$headers = array(
+				'Accept' => 'application/json',
+				'X-Application' => 'Organizr/2.0'
+			);
+			$data = array(
+				'nameOrEmail' => $username,
+				'rawpw' => $password,
+			);
+			$response = Requests::post($connectURL, $headers, $data);
 			if ($response->success) {
 				$json = json_decode($response->body, true);
-				if (is_array($json)) {
-					foreach ($json as $key => $value) { // Scan for this user
-						if (isset($value['ConnectUserName']) && isset($value['ConnectLinkType'])) { // Qualify as connect account
-							if (strtolower($value['ConnectUserName']) == strtolower($username) || strtolower($value['Name']) == strtolower($username)) {
-								$connectUserName = $value['ConnectUserName'];
-								$this->setLoggerChannel('Emby')->info('Found User');
-								break;
-							}
-						}
-					}
-					if ($connectUserName) {
-						$this->setLoggerChannel('Emby')->info('Attempting to Login with Emby ID: ' . $connectUserName);
-						$connectURL = 'https://connect.emby.media/service/user/authenticate';
-						$headers = array(
-							'Accept' => 'application/json',
-							'X-Application' => 'Organizr/2.0'
-						);
-						$data = array(
-							'nameOrEmail' => $username,
-							'rawpw' => $password,
-						);
-						$response = Requests::post($connectURL, $headers, $data);
-						if ($response->success) {
-							$json = json_decode($response->body, true);
-							if (is_array($json) && isset($json['AccessToken']) && isset($json['User']) && $json['User']['Name'] == $connectUserName) {
-								return array(
-									'email' => $json['User']['Email'],
-									//'image' => $json['User']['ImageUrl'],
-								);
-							} else {
-								$this->setLoggerChannel('Emby')->warning('Bad Response');
+				if (is_array($json) && isset($json['AccessToken']) && isset($json['User'])) {
+					$connectUser = $json['User'];
+				} else {
+					$this->setLoggerChannel('Emby')->warning('Bad Response');
+					return false;
+				}
+			} else {
+				$this->setLoggerChannel('Emby')->warning('401 From Emby Connect');
+				return false;
+			}
+			// Get A User
+			if ($connectUser) {
+				$url = $this->qualifyURL($this->config['embyURL']) . '/Users?api_key=' . $this->config['embyToken'];
+				$response = Requests::get($url);
+				if ($response->success) {
+					$json = json_decode($response->body, true);
+					if (is_array($json)) {
+						foreach ($json as $key => $value) { // Scan for this user
+							if (isset($value['ConnectUserName']) && isset($value['ConnectLinkType'])) { // Qualify as connect account
+								if (strtolower($value['ConnectUserName']) == strtolower($connectUser['Name']) || strtolower($value['ConnectUserName']) == strtolower($connectUser['Email'])) {
+									$this->setLoggerChannel('Emby')->info('Found User');
+									return array(
+										'email' => $connectUser['Email'],
+										'username' => $connectUser['Name']
+										//'image' => $json['User']['ImageUrl'],
+									);
+								}
 							}
-						} else {
-							$this->setLoggerChannel('Emby')->warning('401 From Emby Connect');
 						}
 					}
 				}

+ 3 - 5
api/functions/backup-functions.php

@@ -75,9 +75,9 @@ trait BackupFunctions
 			default:
 		}
 		$this->setLoggerChannel('Backup')->notice('Backing up Organizr');
-		$zipname = $directory . 'backup[' . date('Y-m-d_H-i') . ' - ' . $this->random_ascii_string(2) . '][' . $this->version . '].zip';
+		$zipName = $directory . 'backup[' . date('Y-m-d_H-i') . ' - ' . $this->random_ascii_string(2) . '][' . $this->version . '].zip';
 		$zip = new ZipArchive;
-		$zip->open($zipname, ZipArchive::CREATE);
+		$zip->open($zipName, ZipArchive::CREATE);
 		if ($this->config['driver'] == 'sqlite3') {
 			$zip->addFile($this->config['dbLocation'] . $this->config['dbName'], basename($this->config['dbLocation'] . $this->config['dbName']));
 		}
@@ -87,7 +87,7 @@ trait BackupFunctions
 		foreach ($files as $name => $file) {
 			// Skip directories (they would be added automatically)
 			if (!$file->isDir()) {
-				if (stripos($name, 'data' . DIRECTORY_SEPARATOR . 'cache') == false) {
+				if (!stripos($name, 'data' . DIRECTORY_SEPARATOR . 'cache') && !stripos($name, 'backups')) {
 					// Get real and relative path for current file
 					$filePath = $file->getRealPath();
 					$relativePath = substr($filePath, strlen($rootPath));
@@ -96,8 +96,6 @@ trait BackupFunctions
 				}
 			}
 		}
-
-
 		$zip->close();
 		$this->setLoggerChannel('Backup')->notice('Backup process finished');
 		$this->setAPIResponse('success', 'Backup has been created', 200);

+ 3 - 2
api/functions/update-functions.php

@@ -129,14 +129,15 @@ trait UpdateFunctions
 		ini_set('max_execution_time', 0);
 		set_time_limit(0);
 		$logFile = $this->root . DIRECTORY_SEPARATOR . 'scripts' . DIRECTORY_SEPARATOR . 'log.txt';
-		$script = $this->root . DIRECTORY_SEPARATOR . 'scripts' . DIRECTORY_SEPARATOR . 'linux-update.sh ' . $branch . ' > ' . $logFile . ' 2>&1';
+		$script = $this->root . DIRECTORY_SEPARATOR . 'scripts' . DIRECTORY_SEPARATOR . 'linux-update.sh';
+		$scriptExec = $script . ' ' . $branch . ' > ' . $logFile . ' 2>&1';
 		$checkScript = $this->testScriptFilePermissions($script);
 		if (!$checkScript) {
 			$this->setResponse(500, 'Update script permissions error');
 			$this->removeUpdateStatusFile();
 			return false;
 		}
-		$update = shell_exec($script);
+		$update = shell_exec($scriptExec);
 		$this->removeUpdateStatusFile();
 		if ($update) {
 			$this->setAPIResponse('success', $update, 200);

+ 107 - 101
api/homepage/ical.php

@@ -105,7 +105,7 @@ trait ICalHomepageItem
 					}
 				}
 			}
-		} catch (\Recurr\Exception\InvalidRRule | \Recurr\Exception\InvalidWeekday | Exception $e) {
+		} catch (\Recurr\Exception\InvalidRRule|\Recurr\Exception\InvalidWeekday|Exception $e) {
 			return $extraDates;
 		}
 		return $extraDates;
@@ -173,7 +173,7 @@ trait ICalHomepageItem
 		$icalString = $this->file_get_contents_curl($file);
 		$icsDates = array();
 		/* Explode the ICs Data to get datas as array according to string ‘BEGIN:’ */
-		$icsData = explode("BEGIN:", $icalString);
+		$icsData = explode('BEGIN:', $icalString);
 		/* Iterating the icsData value to make all the start end dates as sub array */
 		foreach ($icsData as $key => $value) {
 			$icsDatesMeta [$key] = explode("\n", $value);
@@ -192,9 +192,9 @@ trait ICalHomepageItem
 	public function getICSDates($key, $subKey, $subValue, $icsDates)
 	{
 		if ($key != 0 && $subKey == 0) {
-			$icsDates [$key] ["BEGIN"] = $subValue;
+			$icsDates [$key] ['BEGIN'] = $subValue;
 		} else {
-			$subValueArr = explode(":", $subValue, 2);
+			$subValueArr = explode(':', $subValue, 2);
 			if (isset ($subValueArr [1])) {
 				$icsDates [$key] [$subValueArr [0]] = $subValueArr [1];
 			}
@@ -202,6 +202,106 @@ trait ICalHomepageItem
 		return $icsDates;
 	}
 
+	public function retrieveCalenderByURL($url)
+	{
+		$events = [];
+		$icsEvents = $this->getIcsEventsAsArray($url);
+		if (isset($icsEvents) && !empty($icsEvents)) {
+			$timeZone = isset($icsEvents [1] ['X-WR-TIMEZONE']) ? trim($icsEvents[1]['X-WR-TIMEZONE']) : date_default_timezone_get();
+			$originalTimeZone = isset($icsEvents [1] ['X-WR-TIMEZONE']) ? str_replace('"', '', trim($icsEvents[1]['X-WR-TIMEZONE'])) : false;
+			unset($icsEvents [1]);
+			foreach ($icsEvents as $icsEvent) {
+				$startKeys = $this->array_filter_key($icsEvent, function ($key) {
+					return strpos($key, 'DTSTART') === 0;
+				});
+				$endKeys = $this->array_filter_key($icsEvent, function ($key) {
+					return strpos($key, 'DTEND') === 0;
+				});
+				if (!empty($startKeys) && !empty($endKeys) && isset($icsEvent['SUMMARY'])) {
+					/* Getting start date and time */
+					$dates = [];
+					$repeat = $icsEvent ['RRULE'] ?? false;
+					if (!$originalTimeZone) {
+						$tzKey = array_keys($startKeys);
+						if (strpos($tzKey[0], 'TZID=') !== false) {
+							$originalTimeZone = explode('TZID=', (string)$tzKey[0]);
+							$originalTimeZone = (count($originalTimeZone) >= 2) ? str_replace('"', '', $originalTimeZone[1]) : false;
+							$originalTimeZone = stripos($originalTimeZone, ';') !== false ? explode(';', $originalTimeZone)[0] : $originalTimeZone;
+						}
+					}
+					$start = reset($startKeys);
+					$end = reset($endKeys);
+					$oldestDay = new DateTime ($this->currentTime);
+					$oldestDay->modify('-' . $this->config['calendarStart'] . ' days');
+					$newestDay = new DateTime ($this->currentTime);
+					$newestDay->modify('+' . $this->config['calendarEnd'] . ' days');
+
+					if ($repeat) {
+						$dates = $this->getCalendarExtraDates($start, $icsEvent['RRULE'], $originalTimeZone);
+					} else {
+						$dates[] = [
+							'start' => new DateTime ($start),
+							'end' => new DateTime ($end)
+						];
+						if ($oldestDay > new DateTime ($end)) {
+							continue;
+						}
+					}
+					foreach ($dates as $eventDate) {
+						/* Converting to datetime and apply the timezone to get proper date time */
+						$startDt = $eventDate['start'];
+						/* Getting end date with time */
+						$endDt = $eventDate['end'];
+						$calendarStartDiff = date_diff($startDt, $newestDay);
+						$calendarEndDiff = date_diff($startDt, $oldestDay);
+						if ($originalTimeZone && $originalTimeZone !== 'UTC' && (strpos($start, 'Z') == false)) {
+							$originalTimeZone = $this->calendarStandardizeTimezone($originalTimeZone);
+							$dateTimeOriginalTZ = new DateTimeZone($originalTimeZone);
+							$dateTimeOriginal = new DateTime('now', $dateTimeOriginalTZ);
+							$dateTimeUTCTZ = new DateTimeZone(date_default_timezone_get());
+							$dateTimeUTC = new DateTime('now', $dateTimeUTCTZ);
+							$dateTimeOriginalOffset = $dateTimeOriginal->getOffset() / 3600;
+							$dateTimeUTCOffset = $dateTimeUTC->getOffset() / 3600;
+							$diff = $dateTimeUTCOffset - $dateTimeOriginalOffset;
+							if ((int)$diff >= 0) {
+								$startDt->modify('+ ' . $diff . ' hour');
+								$endDt->modify('+ ' . $diff . ' hour');
+							}
+						}
+						$startDt->setTimeZone(new DateTimezone ($timeZone));
+						$endDt->setTimeZone(new DateTimezone ($timeZone));
+						$startDate = $startDt->format(DateTime::ATOM);
+						$endDate = $endDt->format(DateTime::ATOM);
+						$dates = isset($icsEvent['RRULE']) ? $dates : null;
+						if (new DateTime() < $endDt) {
+							$extraClass = 'text-info';
+						} else {
+							$extraClass = 'text-success';
+						}
+						/* Getting the name of event */
+						$eventName = $icsEvent['SUMMARY'];
+						if (!$this->calendarDaysCheck($calendarStartDiff->format('%R') . $calendarStartDiff->days, $calendarEndDiff->format('%R') . $calendarEndDiff->days)) {
+							break;
+						}
+						if ($startDt->format('H') == 0 && $startDt->format('i') == 0) {
+							$startDate = $startDt->format('Y-m-d');
+						}
+						$events[] = array(
+							'title' => $eventName,
+							'imagetype' => 'calendar-o text-warning text-custom-calendar ' . $extraClass,
+							'imagetypeFilter' => 'ical',
+							'className' => 'bg-calendar calendar-item bg-custom-calendar',
+							'start' => (strlen(trim($start)) == 8) ? $eventDate['start']->format('Y-m-d') : $startDate,
+							'end' => (strlen(trim($end)) == 8) ? $eventDate['end']->format('Y-m-d') : $endDate,
+							'bgColor' => str_replace('text', 'bg', $extraClass),
+						);
+					}
+				}
+			}
+		}
+		return $events;
+	}
+
 	public function getICalendar()
 	{
 		if (!$this->config['homepageCalendarEnabled']) {
@@ -216,106 +316,12 @@ trait ICalHomepageItem
 			$this->setAPIResponse('error', 'iCal URL is not defined', 422);
 			return false;
 		}
-		$calendarItems = array();
-		$calendars = array();
+		$iCalEvents = [];
 		$calendarURLList = explode(',', $this->config['calendariCal']);
-		$icalEvents = array();
 		foreach ($calendarURLList as $key => $value) {
-			$dates = [];
-			$icsEvents = $this->getIcsEventsAsArray($value);
-			if (isset($icsEvents) && !empty($icsEvents)) {
-				$timeZone = isset($icsEvents [1] ['X-WR-TIMEZONE']) ? trim($icsEvents[1]['X-WR-TIMEZONE']) : date_default_timezone_get();
-				$originalTimeZone = isset($icsEvents [1] ['X-WR-TIMEZONE']) ? str_replace('"', '', trim($icsEvents[1]['X-WR-TIMEZONE'])) : false;
-				unset($icsEvents [1]);
-				foreach ($icsEvents as $icsEvent) {
-					$startKeys = $this->array_filter_key($icsEvent, function ($key) {
-						return strpos($key, 'DTSTART') === 0;
-					});
-					$endKeys = $this->array_filter_key($icsEvent, function ($key) {
-						return strpos($key, 'DTEND') === 0;
-					});
-					if (!empty($startKeys) && !empty($endKeys) && isset($icsEvent['SUMMARY'])) {
-						/* Getting start date and time */
-						$repeat = $icsEvent ['RRULE'] ?? false;
-						if (!$originalTimeZone) {
-							$tzKey = array_keys($startKeys);
-							if (strpos($tzKey[0], 'TZID=') !== false) {
-								$originalTimeZone = explode('TZID=', (string)$tzKey[0]);
-								$originalTimeZone = (count($originalTimeZone) >= 2) ? str_replace('"', '', $originalTimeZone[1]) : false;
-								$originalTimeZone = stripos($originalTimeZone, ';') !== false ? explode(';', $originalTimeZone)[0] : $originalTimeZone;
-							}
-						}
-						$start = reset($startKeys);
-						$end = reset($endKeys);
-						$oldestDay = new DateTime ($this->currentTime);
-						$oldestDay->modify('-' . $this->config['calendarStart'] . ' days');
-						$newestDay = new DateTime ($this->currentTime);
-						$newestDay->modify('+' . $this->config['calendarEnd'] . ' days');
-						if ($repeat) {
-							$dates = $this->getCalendarExtraDates($start, $icsEvent['RRULE'], $originalTimeZone);
-						} else {
-							$dates[] = [
-								'start' => new DateTime ($start),
-								'end' => new DateTime ($end)
-							];
-							if ($oldestDay > new DateTime ($end)) {
-								continue;
-							}
-						}
-						foreach ($dates as $eventDate) {
-							/* Converting to datetime and apply the timezone to get proper date time */
-							$startDt = $eventDate['start'];
-							/* Getting end date with time */
-							$endDt = $eventDate['end'];
-							$calendarStartDiff = date_diff($startDt, $newestDay);
-							$calendarEndDiff = date_diff($startDt, $oldestDay);
-							if ($originalTimeZone && $originalTimeZone !== 'UTC' && (strpos($start, 'Z') == false)) {
-								$originalTimeZone = $this->calendarStandardizeTimezone($originalTimeZone);
-								$dateTimeOriginalTZ = new DateTimeZone($originalTimeZone);
-								$dateTimeOriginal = new DateTime('now', $dateTimeOriginalTZ);
-								$dateTimeUTCTZ = new DateTimeZone(date_default_timezone_get());
-								$dateTimeUTC = new DateTime('now', $dateTimeUTCTZ);
-								$dateTimeOriginalOffset = $dateTimeOriginal->getOffset() / 3600;
-								$dateTimeUTCOffset = $dateTimeUTC->getOffset() / 3600;
-								$diff = $dateTimeUTCOffset - $dateTimeOriginalOffset;
-								if ((int)$diff >= 0) {
-									$startDt->modify('+ ' . $diff . ' hour');
-									$endDt->modify('+ ' . $diff . ' hour');
-								}
-							}
-							$startDt->setTimeZone(new DateTimezone ($timeZone));
-							$endDt->setTimeZone(new DateTimezone ($timeZone));
-							$startDate = $startDt->format(DateTime::ATOM);
-							$endDate = $endDt->format(DateTime::ATOM);
-							$dates = isset($icsEvent['RRULE']) ? $dates : null;
-							if (new DateTime() < $endDt) {
-								$extraClass = 'text-info';
-							} else {
-								$extraClass = 'text-success';
-							}
-							/* Getting the name of event */
-							$eventName = $icsEvent['SUMMARY'];
-							if (!$this->calendarDaysCheck($calendarStartDiff->format('%R') . $calendarStartDiff->days, $calendarEndDiff->format('%R') . $calendarEndDiff->days)) {
-								break;
-							}
-							if ($startDt->format('H') == 0 && $startDt->format('i') == 0) {
-								$startDate = $startDt->format('Y-m-d');
-							}
-							$icalEvents[] = array(
-								'title' => $eventName,
-								'imagetype' => 'calendar-o text-warning text-custom-calendar ' . $extraClass,
-								'imagetypeFilter' => 'ical',
-								'className' => 'bg-calendar calendar-item bg-custom-calendar',
-								'start' => $startDate,
-								'end' => $endDate,
-								'bgColor' => str_replace('text', 'bg', $extraClass),
-							);
-						}
-					}
-				}
-			}
+			$iCalEvents = array_merge($iCalEvents, $this->retrieveCalenderByURL($value));
 		}
-		$calendarSources = $icalEvents;
+		$calendarSources = $iCalEvents;
 		$this->setAPIResponse('success', null, 200, $calendarSources);
 		return $calendarSources;
 	}

+ 859 - 0
js/langpack/ar-sa[Arabic (Saudi Arabia)].json

@@ -0,0 +1,859 @@
+{
+    "token": {
+        "Navigation": "Navigation",
+        "Date": "التاريخ",
+        "Type": "النوع",
+        "IP Address": "عنوان IP",
+        "Username": "اسم المستخدم",
+        "Message": "الرسائل",
+        "My Profile": "الملف الشخصي",
+        "Account Settings": "إعدادات الحساب",
+        "Login/Register": "تسجيل الدخول أو التسجيل",
+        "Logout": "تسجيل الخروج",
+        "Inbox": "البريد الوارد",
+        "Go Back": "العودة للخلف",
+        "Reset": "إعادة ضبط",
+        "Email": "البريد الإلكتروني",
+        "Enter your Email and instructions will be sent to you!": "ضع ايميلك لتصلك التعليمات!",
+        "Register": "التسجيل",
+        "Registration Password": "كلمة المرور للتسجيل",
+        "Recover Password": "استعادة كلمة المرور",
+        "Password": "كلمة المرور",
+        "Sign Up": "إنشاء حساب",
+        "Don't have an account?": "ليس لديك حساب؟",
+        "Forgot pwd?": "نسيت كلمة المرور؟",
+        "Remember Me": "تذكرني",
+        "Login": "تسجيل الدخول",
+        "Installed": "مثبت",
+        "Install Update": "تثبيت التحديثات",
+        "Organizr Versions": "اصدار Organizer",
+        "About": "حول",
+        "Organizr Logs": "سجلات Organizr",
+        "Main Settings": "الاعدادات الرئيسية",
+        "Updates": "التحديثات",
+        "Logs": "السجلات",
+        "Main": "الرئيسة",
+        "Plugins": "الملحقات",
+        "Manage Users": "إدارة المستخدمين",
+        "Customize Organizr": "تخصيص Organizr",
+        "Edit Categories": "تعديل مجلد النوافذ",
+        "Edit Tabs": "تعديل النوافذ",
+        "Tabs": "النوافذ",
+        "System Settings": "اعدادات النظام",
+        "User Management": "إدارة الحسابات",
+        "Customize": "التخصيص",
+        "Tab Editor": "تحرير النافذة",
+        "Settings": "الإعدادات",
+        "Organizr Settings": "اعدادات Organizr",
+        "Categories": "مجلد النوافذ",
+        "Login Logs": "سجلات تسجيل الدخول",
+        "Login Log": "سجل تسجيل الدخول",
+        "Organizr Log": "سجل Organizr",
+        "FIXED": "ثابت",
+        "NEW": "جديد",
+        "NOTE": "ملاحظة",
+        "Update Available": "يوجد تحديث",
+        "is available, goto": "متوفر",
+        "Update Tab": "تحديث النافذة",
+        "Database Name:": "اسم قاعدة البيانات:",
+        "Database Name": "اسم قاعدة البيانات",
+        "Database Location:": "موقع قاعدة البيانات",
+        "Database Location": "موقع قاعدة البيانات",
+        "Hover to show": "مرر للظهور",
+        "API Key:": "مفتاح واجهة الوصول:",
+        "API Key": "مفتاح واجهة الوصول",
+        "Registration Password:": "كلمة المرور للتسجيل:",
+        "Hash Key:": "مفتاح الهاش:",
+        "Hash Key": "مفتاح الهاش",
+        "Password:": "كلمة المرور:",
+        "Attention": "انتباه",
+        "The Hash Key will be used to decrypt all passwords etc... on the server.": "مفتاح الهاش سيستخدم لتشفير جميع كلمات المرور على السيرفر....",
+        "The API Key will be used for all calls to organizr for the UI. [Auto-Generated]": "مفتاح واجهة الوصول سيستخدم لجميع الاتصالات لـOrganizr لواجة المستخدم.[انشاء تلقائي]",
+        "Notice": "ملاحظة",
+        "Business": "اعمال",
+        "Personal": "شخصي",
+        "Choose License": "اختر الرخصة",
+        "Install Type": "نوع التثبيت",
+        "Verify": "التحقق",
+        "Database": "قاعدة البيانات",
+        "Security": "الحماية",
+        "Admin Info": "معلومات المسؤول",
+        "Parent Directory:": "المجلد الرئيسي:",
+        "Admin Creation": "انشاء مشرف",
+        "The Database will contain sensitive information.  Please place in directory outside of root Web Directory.": "The Database will contain sensitive information.  Please place in directory outside of root Web Directory.",
+        "MANAGE": "MANAGE",
+        "CATEGORY": "CATEGORY",
+        "ADDED": "ADDED",
+        "NAME & EMAIL": "NAME & EMAIL",
+        "MANAGE USERS": "MANAGE USERS",
+        "Add User": "Add User",
+        "Manage Groups": "Manage Groups",
+        "Choose Language": "Choose Language",
+        "Welcome": "Welcome",
+        "License": "License",
+        "Webserver Version": "Webserver Version",
+        "PHP Version": "PHP Version",
+        "Organizr Branch": "Organizr Branch",
+        "Organizr Version": "Organizr Version",
+        "Information": "Information",
+        "Below you will find all the links for everything that has to do with Organizr": "Below you will find all the links for everything that has to do with Organizr",
+        "Loading...": "Loading...",
+        "Donate": "Donate",
+        "Edit Group": "Edit Group",
+        "For icons, use the following format:": "For icons, use the following format:",
+        "For images, use the following format:": "For images, use the following format:",
+        "You may use an image or icon in this field": "You may use an image or icon in this field",
+        "Image Legend": "Image Legend",
+        "Category Image": "Category Image",
+        "Category Name": "Category Name",
+        "Edit Category": "Edit Category",
+        "Add Category": "Add Category",
+        "Add New Category": "Add New Category",
+        "DELETE": "DELETE",
+        "EDIT": "EDIT",
+        "DEFAULT": "DEFAULT",
+        "TABS": "TABS",
+        "NAME": "NAME",
+        "Category Editor": "Category Editor",
+        "Tab Image": "Tab Image",
+        "Tab URL": "Tab URL",
+        "Tab Name": "Tab Name",
+        "Edit Tab": "Edit Tab",
+        "Add Tab": "Add Tab",
+        "Add New Tab": "Add New Tab",
+        "SPLASH": "SPLASH",
+        "ACTIVE": "ACTIVE",
+        "TYPE": "TYPE",
+        "GROUP": "GROUP",
+        "Delete": "Delete",
+        "No": "No",
+        "Yes": "Yes",
+        "Deleted Category": "Deleted Category",
+        "Add New User": "Add New User",
+        "EMAIL": "EMAIL",
+        "Deleted User": "Deleted User",
+        "Category Order Saved": "Category Order Saved",
+        "Group Image": "Group Image",
+        "Group Name": "Group Name",
+        "Add Group": "Add Group",
+        "Add New Group": "Add New Group",
+        "USERS": "USERS",
+        "GROUP NAME": "GROUP NAME",
+        "MANAGE GROUPS": "MANAGE GROUPS",
+        "Changed Language To": "Changed Language To",
+        "Groups": "Groups",
+        "Users": "Users",
+        "Appearance": "Appearance",
+        "Customize Appearance": "Customize Appearance",
+        "Request Me!": "Request Me!",
+        "Would you like to Request it?": "Would you like to Request it?",
+        "No Results for:": "No Results for:",
+        "Nothing in queue": "Nothing in queue",
+        "Nothing in history": "Nothing in history",
+        "Nothing in hitsory": "Nothing in hitsory",
+        "Load More": "Load More",
+        "Request": "Request",
+        "No Results": "No Results",
+        "Airs Today TV": "Airs Today TV",
+        "Popular TV": "Popular TV",
+        "Top TV": "Top TV",
+        "Upcoming Movies": "Upcoming Movies",
+        "Popular Movies": "Popular Movies",
+        "Top Movies": "Top Movies",
+        "In Theatres": "In Theatres",
+        "Suggestions": "Suggestions",
+        "TV": "TV",
+        "Movie": "Movie",
+        "Denied": "Denied",
+        "Unapproved": "Unapproved",
+        "Approved": "Approved",
+        "Unavailable": "Unavailable",
+        "Available": "Available",
+        "Recently Added": "Recently Added",
+        "Active": "Active",
+        "Requested By:": "Requested By:",
+        "Request Options": "Request Options",
+        "Deny": "Deny",
+        "OK": "OK",
+        "Seconds": "Seconds",
+        "Verify Password": "Verify Password",
+        "Account Information": "Account Information",
+        "Inactive Plugins": "Inactive Plugins",
+        "Active Plugins": "Active Plugins",
+        "Inactive": "Inactive",
+        "Everything Active": "Everything Active",
+        "Nothing Active": "Nothing Active",
+        "Choose Plex Machine": "Choose Plex Machine",
+        "Test Speed to Server": "Test Speed to Server",
+        "Test Server Speed": "Test Server Speed",
+        "Subject": "Subject",
+        "To:": "To:",
+        "Email Users": "Email Users",
+        "E-Mail Center": "E-Mail Center",
+        "You have been invited. Please goto ": "You have been invited. Please goto ",
+        "Use Invite Code": "Use Invite Code",
+        "VALID": "VALID",
+        "IP ADDRESS": "IP ADDRESS",
+        "USED BY": "USED BY",
+        "DATE USED": "DATE USED",
+        "DATE SENT": "DATE SENT",
+        "INVITE CODE": "INVITE CODE",
+        "USERNAME": "USERNAME",
+        "Manage Invites": "Manage Invites",
+        "No Invites": "No Invites",
+        "Create/Send Invite": "Create/Send Invite",
+        "Name or Username": "Name or Username",
+        "New Invite": "New Invite",
+        "Hover to show ": "Hover to show ",
+        "Parent Directory: ": "Parent Directory: ",
+        "The Database will contain sensitive information. Please place in directory outside of root Web Directory.": "The Database will contain sensitive information. Please place in directory outside of root Web Directory.",
+        "I Want to Help": "I Want to Help",
+        "Head on over to POEditor and help us translate Organizr into your language": "Head on over to POEditor and help us translate Organizr into your language",
+        "Want to help translate?": "Want to help translate?",
+        "Single Sign-On": "Single Sign-On",
+        "Coming Soon...": "Coming Soon...",
+        "Homepage Order": "Homepage Order",
+        "Homepage Items": "Homepage Items",
+        "Image Manager": "Image Manager",
+        "Edit User": "Edit User",
+        "Password Again": "Password Again",
+        "Template": "Template",
+        "Plex Machine": "Plex Machine",
+        "Get Plex Machine": "Get Plex Machine",
+        "Grab It": "Grab It",
+        "Plex Password": "Plex Password",
+        "Plex Username": "Plex Username",
+        "Enter Plex Details": "Enter Plex Details",
+        "Get Plex Token": "Get Plex Token",
+        "Upload Image": "Upload Image",
+        "View Images": "View Images",
+        "Reload": "Reload",
+        "Unlock": "Unlock",
+        "Browser Information": "Browser Information",
+        "Web Folder": "Web Folder",
+        "Dependencies Missing": "Dependencies Missing",
+        "Organizr Dependency Check": "Organizr Dependency Check",
+        "Please make sure both Token and Machine are filled in": "Please make sure both Token and Machine are filled in",
+        "Loading Requests...": "Loading Requests...",
+        "Loading Recent...": "Loading Recent...",
+        "Loading Now Playing...": "Loading Now Playing...",
+        "Loading Playlists...": "Loading Playlists...",
+        "Loading Download Queue...": "Loading Download Queue...",
+        "Organizr Mod Picks": "Organizr Mod Picks",
+        "Requests": "Requests",
+        "Become Sponsor": "Become Sponsor",
+        "Splash Page": "Splash Page",
+        "Lock Screen": "Lock Screen",
+        "If you signed in with a Emby Acct... Please use the following link to change your password there:": "If you signed in with a Emby Acct... Please use the following link to change your password there:",
+        "Password Notice": "Password Notice",
+        "If you signed in with a Plex Acct... Please use the following link to change your password there:": "If you signed in with a Plex Acct... Please use the following link to change your password there:",
+        "Active Tokens": "Active Tokens",
+        "Deactivate": "Deactivate",
+        "Activate": "Activate",
+        "Current": "Current",
+        "Save": "Save",
+        "STATUS": "STATUS",
+        "PLUGIN": "PLUGIN",
+        "Plugin Marketplace": "Plugin Marketplace",
+        "Marketplace": "Marketplace",
+        "Chat": "Chat",
+        "Current Directory: ": "Current Directory: ",
+        "Suggested Directory: ": "Suggested Directory: ",
+        "The Registration Password will lockout the registration field with this password. {User-Generated]": "The Registration Password will lockout the registration field with this password. {User-Generated]",
+        "The Hash Key will be used to decrypt all passwords etc... on the server. {User-Generated]": "The Hash Key will be used to decrypt all passwords etc... on the server. {User-Generated]",
+        "If using Plex or Emby - It is suggested that you use the username and email of the Admin account.": "If using Plex or Emby - It is suggested that you use the username and email of the Admin account.",
+        "Business has Media items hidden [Plex, Emby etc...]": "Business has Media items hidden [Plex, Emby etc...]",
+        "Personal has everything unlocked - no restrictions": "Personal has everything unlocked - no restrictions",
+        "Continue To Website": "Continue To Website",
+        "Patreon": "Patreon",
+        "Cryptos": "Cryptos",
+        "Square Cash": "Square Cash",
+        "PayPal": "PayPal",
+        "Beerpay.io": "Beerpay.io",
+        "Sponsors": "Sponsors",
+        "THEME": "THEME",
+        "Theme Marketplace": "Theme Marketplace",
+        "Test Tab": "Test Tab",
+        "Select or type Icon": "Select or type Icon",
+        "Choose Icon": "Choose Icon",
+        "Choose Image": "Choose Image",
+        "Ping URL": "Ping URL",
+        "Please set tab as [New Window] on next screen": "Please set tab as [New Window] on next screen",
+        "Tab can be set as iFrame": "Tab can be set as iFrame",
+        "Premier": "Premier",
+        "Missing": "Missing",
+        "Unaired": "Unaired",
+        "Downloaded": "Downloaded",
+        "All": "All",
+        "Choose Media Status": "Choose Media Status",
+        "Music": "Music",
+        "Choose Media Type": "Choose Media Type",
+        "PHP Version Check": "PHP Version Check",
+        "Don\\'t have an account?": "Don\\'t have an account?",
+        "The value of #987654 is just a placeholder, you can change to any value you like.": "The value of #987654 is just a placeholder, you can change to any value you like.",
+        "This is not the same as database authentication - i.e. Plex Authentication | Emby Authentication | FTP Authentication": "This is not the same as database authentication - i.e. Plex Authentication | Emby Authentication | FTP Authentication",
+        "Status: [ ": "Status: [ ",
+        "This module requires XMLRPC": "This module requires XMLRPC",
+        "Misc Options": "Misc Options",
+        "Search My Media": "Search My Media",
+        "Import Plex Users": "Import Plex Users",
+        "Import": "Import",
+        "INSTALL": "INSTALL",
+        "INFO": "INFO",
+        "Day": "Day",
+        "Week": "Week",
+        "Month": "Month",
+        "List": "List",
+        "Streams": "Streams",
+        "javascript:void(0)": "javascript:void(0)",
+        "Request Show or Movie": "Request Show or Movie",
+        "Mark as Unavailable": "Mark as Unavailable",
+        "Mark as Available": "Mark as Available",
+        "Approve": "Approve",
+        "Start": "Start",
+        "Everyone Refresh Seconds": "Everyone Refresh Seconds",
+        "Admin Refresh Seconds": "Admin Refresh Seconds",
+        "Minimum Authentication for Time Display": "Minimum Authentication for Time Display",
+        "Show Ping Time": "Show Ping Time",
+        "Offline Sound": "Offline Sound",
+        "Online Sound": "Online Sound",
+        "Minimum Authentication for Message and Sound": "Minimum Authentication for Message and Sound",
+        "Minimum Authentication": "Minimum Authentication",
+        "Nginx Auth Debug": "Nginx Auth Debug",
+        "Hide Registration": "Hide Registration",
+        "Lockout Groups To": "Lockout Groups To",
+        "Lockout Groups From": "Lockout Groups From",
+        "Inactivity Lock": "Inactivity Lock",
+        "Inactivity Timer [Minutes]": "Inactivity Timer [Minutes]",
+        "Emby Token": "Emby Token",
+        "http(s)://hostname:port": "http(s)://hostname:port",
+        "Emby URL": "Emby URL",
+        "cn=%s,dc=sub,dc=domain,dc=com": "cn=%s,dc=sub,dc=domain,dc=com",
+        "Host Base DN": "Host Base DN",
+        "http{s) | ftp(s) | ldap(s)://hostname:port": "http{s) | ftp(s) | ldap(s)://hostname:port",
+        "Host Address": "Host Address",
+        "Enable Plex oAuth": "Enable Plex oAuth",
+        "Retrieve": "Retrieve",
+        "Use Get Plex Machine Button": "Use Get Plex Machine Button",
+        "Use Get Token Button": "Use Get Token Button",
+        "Plex Token": "Plex Token",
+        "Authentication Backend": "Authentication Backend",
+        "Authentication Type": "Authentication Type",
+        "Generate": "Generate",
+        "Generate New API Key": "Generate New API Key",
+        "Organizr API": "Organizr API",
+        "Force Install Branch": "Force Install Branch",
+        "Branch": "Branch",
+        "SSO": "SSO",
+        "Enable": "Enable",
+        "Tautulli URL": "Tautulli URL",
+        "Ombi URL": "Ombi URL",
+        "Plex Note": "Plex Note",
+        "Admin username for Plex": "Admin username for Plex",
+        "Admin Username": "Admin Username",
+        "Click Main on the sub-menu above.": "Click Main on the sub-menu above.",
+        "Important Information": "Important Information",
+        "PING": "PING",
+        "Custom HTML/JavaScript": "Custom HTML/JavaScript",
+        "CustomHTML-2": "CustomHTML-2",
+        "CustomHTML-1": "CustomHTML-1",
+        "Refresh Seconds": "Refresh Seconds",
+        "Limit to User": "Limit to User",
+        "Minimum Group to Request": "Minimum Group to Request",
+        "Token": "Token",
+        "URL": "URL",
+        "Ombi": "Ombi",
+        "Items Per Day": "Items Per Day",
+        "Time Format": "Time Format",
+        "Default View": "Default View",
+        "Start Day": "Start Day",
+        "SickRage": "SickRage",
+        "CouchPotato": "CouchPotato",
+        "Test Connection": "Test Connection",
+        "Please Save before Testing": "Please Save before Testing",
+        "# of Days After": "# of Days After",
+        "# of Days Before": "# of Days Before",
+        "Radarr": "Radarr",
+        "Lidarr": "Lidarr",
+        "Show Unmonitored": "Show Unmonitored",
+        "Sonarr": "Sonarr",
+        "Hide Completed": "Hide Completed",
+        "Hide Seeding": "Hide Seeding",
+        "Deluge": "Deluge",
+        "Order": "Order",
+        "Status: [": "Status: [",
+        "]": "]",
+        "rTorrent": "rTorrent",
+        "Reverse Sorting": "Reverse Sorting",
+        "qBittorrent": "qBittorrent",
+        "Transmission": "Transmission",
+        "NZBGet": "NZBGet",
+        "SabNZBD": "SabNZBD",
+        "Image Cache Size": "Image Cache Size",
+        "Emby Tab WAN URL": "Emby Tab WAN URL",
+        "Only use if you have Emby in a reverse proxy": "Only use if you have Emby in a reverse proxy",
+        "Emby Tab Name": "Emby Tab Name",
+        "Item Limit": "Item Limit",
+        "Minimum Authorization": "Minimum Authorization",
+        "User Information": "User Information",
+        "Emby": "Emby",
+        "Plex Tab WAN URL": "Plex Tab WAN URL",
+        "Only use if you have Plex in a reverse proxy": "Only use if you have Plex in a reverse proxy",
+        "Plex Tab Name": "Plex Tab Name",
+        "Media Server": "Media Server",
+        "Plex": "Plex",
+        "separate by comma's": "separate by comma's",
+        "iCal URL's": "iCal URL's",
+        "Enable iCal": "Enable iCal",
+        "Calendar": "Calendar",
+        "Theme Javascript": "Theme Javascript",
+        "Custom Javascript": "Custom Javascript",
+        "Theme CSS [Can replace colors from above]": "Theme CSS [Can replace colors from above]",
+        "Custom CSS [Can replace colors from above]": "Custom CSS [Can replace colors from above]",
+        "Copy code and paste inside left box": "Copy code and paste inside left box",
+        "Download and unzip file and place in": "Download and unzip file and place in",
+        "Click [Generate your Favicons and HTML code]": "Click [Generate your Favicons and HTML code]",
+        "Enter this path": "Enter this path",
+        "At bottom of page on [Favicon Generator Options] under [Path] choose [I cannot or I do not want to place favicon files at the root of my web site.]": "At bottom of page on [Favicon Generator Options] under [Path] choose [I cannot or I do not want to place favicon files at the root of my web site.]",
+        "Edit settings to your liking": "Edit settings to your liking",
+        "Choose your image to use": "Choose your image to use",
+        "Click [Select your Favicon picture]": "Click [Select your Favicon picture]",
+        "Instructions": "Instructions",
+        "Fav Icon Code": "Fav Icon Code",
+        "Test Message": "Test Message",
+        "Position": "Position",
+        "Style": "Style",
+        "Theme": "Theme",
+        "Button Text Color": "Button Text Color",
+        "Button Color": "Button Color",
+        "Accent Text Color": "Accent Text Color",
+        "Accent Color": "Accent Color",
+        "Side Bar Text Color": "Side Bar Text Color",
+        "Side Bar Color": "Side Bar Color",
+        "Nav Bar Text Color": "Nav Bar Text Color",
+        "Nav Bar Color": "Nav Bar Color",
+        "Unsorted Tab Placement": "Unsorted Tab Placement",
+        "Alternate Homepage Titles": "Alternate Homepage Titles",
+        "Minimal Login Screen": "Minimal Login Screen",
+        "Login Wallpaper": "Login Wallpaper",
+        "Use Logo instead of Title": "Use Logo instead of Title",
+        "Title": "Title",
+        "Logo": "Logo",
+        "Import Users": "Import Users",
+        "Drop files here to upload": "Drop files here to upload",
+        "SpeedTest Settings": "SpeedTest Settings",
+        "PHP Mailer Settings": "PHP Mailer Settings",
+        "Invites Settings": "Invites Settings",
+        "Chat Settings": "Chat Settings",
+        "Delete ": "Delete ",
+        "App Cluster": "App Cluster",
+        "App ID": "App ID",
+        "API Secret": "API Secret",
+        "Auth Key": "Auth Key",
+        "Use Pusher SSL": "Use Pusher SSL",
+        "Message Sound": "Message Sound",
+        "# of Previous Messages": "# of Previous Messages",
+        "Note": "Note",
+        "Libraries": "Libraries",
+        "Body": "Body",
+        "Name": "Name",
+        "Template #4": "Template #4",
+        "Template #3": "Template #3",
+        "Template #2": "Template #2",
+        "Reminder Template": "Reminder Template",
+        "Invite User": "Invite User",
+        "Reset Password": "Reset Password",
+        "New Registration": "New Registration",
+        "Edit Template": "Edit Template",
+        "Send Welcome E-Mail": "Send Welcome E-Mail",
+        "Full URL": "Full URL",
+        "WAN Logo URL": "WAN Logo URL",
+        "https://domain.com/": "https://domain.com/",
+        "Domain Link Override": "Domain Link Override",
+        "Send": "Send",
+        "Send Test": "Send Test",
+        "i.e. same as username": "i.e. same as username",
+        "Sender Email": "Sender Email",
+        "Sender Name": "Sender Name",
+        "Verify Certificate": "Verify Certificate",
+        "Authentication": "Authentication",
+        "SMTP Port": "SMTP Port",
+        "SMTP Host": "SMTP Host",
+        "Results For cmd:": "Result For cmd:",
+        "Organizr Information:": "Organizr Information:",
+        "DB Schema": "DB Schema",
+        "Misc SSO": "Misc SSO",
+        "Tautulli SSO": "Tautulli SSO",
+        "Plex SSO": "Plex SSO",
+        "Ombi SSO": "Ombi SSO",
+        "Commands": "Commands",
+        "Input Command": "Input Command",
+        "Organizr Debug Area": "Organizr Debug Area",
+        "Google Ads": "Google Ads",
+        "DB Folder": "DB Folder",
+        "API Folder": "API Folder",
+        "Root Folder": "Root Folder",
+        "Organizr Paths": "Organizr Paths",
+        "Organizr News": "Organizr News",
+        "Close Error": "Close Error",
+        "An Error Occured": "An Error Occurred",
+        "Debug Area": "Debug Area",
+        "Tab Local URL": "Tab Local URL",
+        "PRELOAD": "PRELOAD",
+        "Use Ombi Alias Names": "Use Ombi Alias Names",
+        "TV Show Default Request": "TV Show Default Request",
+        "Add to Combined Downloader": "Add to Combined Downloader",
+        "http(s)://hostname:port/xmlrpc": "http(s)://hostname:port/xmlrpc",
+        "rTorrent API URL Override": "rTorrent API URL Override",
+        "Enable Notify Sounds": "Enable Notify Sounds",
+        "Remember Me Length": "Remember Me Length",
+        "Minimum Authentication for Debug Area": "Minimum Authentication for Debug Area",
+        "Account DN": "Account DN",
+        "Bind Username": "Bind Username",
+        "Account suffix - start with comma - ,ou=people,dc=domain,dc=tld": "Account suffix - start with comma - ,ou=people,dc=domain,dc=tld",
+        "Account Suffix": "Account Suffix",
+        "Account prefix - i.e. Controller\\ from Controller\\Username for AD - uid= for OpenLDAP": "Account prefix - i.e. Controller\\ from Controller\\Username for AD - uid= for OpenLDAP",
+        "Account Prefix": "Account Prefix",
+        "LDAP Backend Type": "LDAP Backend Type",
+        "Strict Plex Friends": "Strict Plex Friends",
+        "Unifi": "Unifi",
+        "Pi-hole": "Pi-hole",
+        "Check For Updates": "Check For Updates",
+        "I will try and import new strings every Friday": "I will try and import new strings every Friday",
+        "Custom definitions": "Custom definitions",
+        "Show on small screens": "Show on small screens",
+        "Show on medium screens": "Show on medium screens",
+        "Show on large screens": "Show on large screens",
+        "Size": "Size",
+        "Colour": "Colour",
+        "Chart": "Chart",
+        "Data": "Data",
+        "Info": "Info",
+        "Netdata": "Netdata",
+        "Toggle Title": "Toggle Title",
+        "Speedtest": "Speedtest",
+        "Unit of Measurement": "Unit of Measurement",
+        "Enable Pollen": "Enable Pollen",
+        "Enable Air Quality": "Enable Air Quality",
+        "Enable Weather": "Enable Weather",
+        "Need Help With Coordinates?": "Need Help With Coordinates?",
+        "Longitude": "Longitude",
+        "Latitude": "Latitude",
+        "Weather-Air": "Weather-Air",
+        "Compact view": "Compact view",
+        "http://domain.com/monitorr/": "http://domain.com/monitorr/",
+        "Monitorr": "Monitorr",
+        "Top Platforms": "Top Platforms",
+        "Top Users": "Top Users",
+        "http://<ip>:<port>": "http://<ip>:<port>",
+        "Tautulli": "Tautulli",
+        "Combine stat cards": "Combine stat cards",
+        "http(s)://hostname:port/admin/": "http(s)://hostname:port/admin/",
+        "Youtube API Key": "Youtube API Key",
+        "Misc": "Misc",
+        "Multiple tags using CSV - tag1,tag2": "Multiple tags using CSV - tag1,tag2",
+        "Tags": "Tags",
+        "HealthChecks API URL": "HealthChecks API URL",
+        "HealthChecks": "HealthChecks",
+        "Get Unifi Site": "Get Unifi Site",
+        "Grab Unifi Site": "Grab Unifi Site",
+        "Site Name": "Site Name",
+        "Unifi API URL": "Unifi API URL",
+        "Show Denied": "Show Denied",
+        "Show Unapproved": "Show Unapproved",
+        "Show Approved": "Show Approved",
+        "Show Unavailable": "Show Unavailable",
+        "Show Available": "Show Available",
+        "Disable Certificate Check": "Disable Certificate Check",
+        "Organizr appends the url with": "Organizr appends the url with",
+        "unless the URL ends in": "unless the URL ends in",
+        "ATTENTION": "ATTENTION",
+        "API Version": "API Version",
+        "JDownloader": "JDownloader",
+        "http(s)://hostname:port - make sure if Jelly fin to end url with /jellyfin": "http(s)://hostname:port - make sure if Jelly fin to end url with /jellyfin",
+        "Emby-Jellyfin": "Emby-Jellyfin",
+        "Tab Auto Action Minutes": "Tab Auto Action Minutes",
+        "Tab Auto Action": "Tab Auto Action",
+        "To revert back to default, save with no value defined in the relevant field.": "To revert back to default, save with no value defined in the relevant field.",
+        "e.g. UA-XXXXXXXXX-X": "e.g. UA-XXXXXXXXX-X",
+        "Google Analytics Tracking ID": "Google Analytics Tracking ID",
+        "Show Debug Errors": "Show Debug Errors",
+        "Use Logo instead of Title on Login Page": "Use Logo instead of Title on Login Page",
+        "Login Logo": "Login Logo",
+        "Meta Description": "Meta Description",
+        "HealthChecks Settings": "HealthChecks Settings",
+        "AdamSmith": "AdamSmith",
+        "Emby User to be used as template for new users": "Emby User to be used as template for new users",
+        "localhost:8086": "localhost:8086",
+        "Emby server adress": "Emby server adress",
+        "enter key from emby": "enter key from emby",
+        "Emby API key": "Emby API key",
+        "Music Labels (comma separated)": "Music Labels (comma separated)",
+        "Movies Labels (comma separated)": "Movies Labels (comma separated)",
+        "TV Labels (comma separated)": "TV Labels (comma separated)",
+        "Template #1": "Template #1",
+        "Enable Debug Output on Email Test": "Enable Debug Output on Email Test",
+        "i.e. 10.0.0.0/24 or 10.0.0.20": "i.e. 10.0.0.0/24 or 10.0.0.20",
+        "Auth Proxy Whitelist": "Auth Proxy Whitelist",
+        "i.e. X-Forwarded-User": "i.e. X-Forwarded-User",
+        "Auth Proxy Header Name": "Auth Proxy Header Name",
+        "Auth Proxy": "Auth Proxy",
+        "Enable Local Address Forward": "Enable Local Address Forward",
+        "http://home.local": "http://home.local",
+        "Local Address": "Local Address",
+        "only domain and tld - i.e. domain.com": "only domain and tld - i.e. domain.com",
+        "WAN Domain": "WAN Domain",
+        "i.e. 123.123.123.123": "i.e. 123.123.123.123",
+        "Override Local IP To": "Override Local IP To",
+        "Override Local IP From": "Override Local IP From",
+        "Disable Image Dropdown": "Disable Image Dropdown",
+        "Disable Icon Dropdown": "Disable Icon Dropdown",
+        "Enable Traefik Auth Redirect": "Enable Traefik Auth Redirect",
+        "iFrame Sandbox": "iFrame Sandbox",
+        "Login Lockout Seconds": "Login Lockout Seconds",
+        "Max Login Attempts": "Max Login Attempts",
+        "Test Login": "Test Login",
+        "Ignore External 2FA on Local Subnet": "Ignore External 2FA on Local Subnet",
+        "Large modal": "Large modal",
+        "An Error Occurred": "An Error Occurred",
+        "Type your message": "Type your message",
+        "Bookmark Tabs": "Bookmark Tabs",
+        "Bookmark Categories": "Bookmark Categories",
+        "Open Collective": "Open Collective",
+        "Github Sponsor": "Github Sponsor",
+        "Backers": "Backers",
+        "Tab Folder": "Tab Folder",
+        "Cache Folder": "Cache Folder",
+        "Backup": "Backup",
+        "Import Emby Users": "Import Emby Users",
+        "Import Jellyfin Users": "Import Jellyfin Users",
+        "More": "More",
+        "Less": "Less",
+        "OpenCollective Sponsor": "OpenCollective Sponsor",
+        "Patreon Sponsor": "Patreon Sponsor",
+        "New Organizr API v2": "New Organizr API v2",
+        "Develop Branch Users - Please switch to Master for mean time": "Develop Branch Users - Please switch to Master for mean time",
+        "API V2 TESTING almost complete": "API V2 TESTING almost complete",
+        "Important Messages - Each message can now be ignored using ignore button": "Important Messages - Each message can now be ignored using ignore button",
+        "Minimum PHP Version change": "Minimum PHP Version change",
+        "You": "You",
+        "Drop Certificate file here to upload": "Drop Certificate file here to upload",
+        "Custom Certificate Loaded": "Custom Certificate Loaded",
+        "By default, Organizr uses certificates from https://curl.se/docs/caextract.html": "By default, Organizr uses certificates from https://curl.se/docs/caextract.html",
+        "If you would like to use your own certificate, please upload it below.  You will then need to enable each homepage item to use it.": "If you would like to use your own certificate, please upload it below.  You will then need to enable each homepage item to use it.",
+        "i.e. X-Forwarded-Email": "i.e. X-Forwarded-Email",
+        "Auth Proxy Header Name for Email": "Auth Proxy Header Name for Email",
+        "Custom Recover Password Text": "Custom Recover Password Text",
+        "Disable Recover Password": "Disable Recover Password",
+        "Blacklisted Error Message": "Blacklisted Error Message",
+        "Blacklisted IP's": "Blacklisted IP's",
+        "http(s)://domain": "http(s)://domain",
+        "Traefik Domain for Return Override": "Traefik Domain for Return Override",
+        "Jellyfin Token": "Jellyfin Token",
+        "Jellyfin URL": "Jellyfin URL",
+        "Enable LDAP TLS": "Enable LDAP TLS",
+        "Enable LDAP SSL": "Enable LDAP SSL",
+        "Bind Password": "Bind Password",
+        "http(s) | ftp(s) | ldap(s)://hostname:port": "http(s) | ftp(s) | ldap(s)://hostname:port",
+        "Plex Admin Username": "Plex Admin Username",
+        "Default Settings Tab": "Default Settings Tab",
+        "Certificate": "Certificate",
+        "Ping": "Ping",
+        "API": "API",
+        "Github": "Github",
+        "Settings Page": "Settings Page",
+        "http(s)://domain.com": "http(s)://domain.com",
+        "Jellyfin SSO URL": "Jellyfin SSO URL",
+        "Jellyfin API URL": "Jellyfin API URL",
+        "Ombi Fallback Password": "Ombi Fallback Password",
+        "Ombi Fallback User": "Ombi Fallback User",
+        "Petio Fallback Password": "Petio Fallback Password",
+        "Petio Fallback User": "Petio Fallback User",
+        "Petio URL": "Petio URL",
+        "Overseerr Fallback Password": "Overseerr Fallback Password",
+        "Overseerr Fallback User": "Overseerr Fallback User",
+        "Overseerr URL": "Overseerr URL",
+        "Multiple URL's": "Multiple URL's",
+        "Using multiple SSO application will cause your Cookie Header item to increase.  If you haven't increased it by now, please follow this guide": "Using multiple SSO application will cause your Cookie Header item to increase.  If you haven't increased it by now, please follow this guide",
+        "Please Read First": "Please Read First",
+        "Jellyfin": "Jellyfin",
+        "Petio": "Petio",
+        "Overseerr": "Overseerr",
+        "FYI": "FYI",
+        "https://app.plex.tv/auth#?resetPassword": "https://app.plex.tv/auth#?resetPassword",
+        "Change Password on Plex Website": "Change Password on Plex Website",
+        "Action": "Action",
+        "IP": "IP",
+        "Browser": "Browser",
+        "Expires": "Expires",
+        "Created": "Created",
+        "Version": "Version",
+        "Files": "Files",
+        "Backup Organizr": "Backup Organizr",
+        "Create Backup": "Create Backup",
+        "Select or type Image": "Select or type Image",
+        "Choose": "Choose",
+        "Choose Blackberry Theme Icon": "Choose Blackberry Theme Icon",
+        "Save Tab Order": "Save Tab Order",
+        "Drag Homepage Items to Order Them": "Drag Homepage Items to Order Them",
+        "Preview": "Preview",
+        "Text Color": "Text Color",
+        "Background Color": "Background Color",
+        "Bookmark Tab Editor": "Bookmark Tab Editor",
+        "Add New Bookmark Category": "Add New Bookmark Category",
+        "Bookmark Category Editor": "Bookmark Category Editor",
+        "Auto-Expand Nav Bar": "Auto-Expand Nav Bar",
+        "Auto-Collapse Categories": "Auto-Collapse Categories",
+        "Expand All Categories": "Expand All Categories",
+        "Show Organizr Sign out & in Button on Sidebar": "Show Organizr Sign out & in Button on Sidebar",
+        "Show Organizr Docs Link": "Show Organizr Docs Link",
+        "Show Organizr Support Link": "Show Organizr Support Link",
+        "Show Organizr Feature Request Link": "Show Organizr Feature Request Link",
+        "Show GitHub Repo Link": "Show GitHub Repo Link",
+        "Theme CSS": "Theme CSS",
+        "Custom CSS": "Custom CSS",
+        "FavIcon": "FavIcon",
+        "Notifications": "Notifications",
+        "Colors & Themes": "Colors & Themes",
+        "Options": "Options",
+        "Login Page": "Login Page",
+        "Top Bar": "Top Bar",
+        "Bookmark Settings": "Bookmark Settings",
+        "HnL Settings": "HnL Settings",
+        "Not Installed": "Not Installed",
+        "Money not an option?  No problem.  Show some love to this Google Ad below:": "Money not an option?  No problem.  Show some love to this Google Ad below:",
+        "Please click the button to continue.": "Please click the button to continue.",
+        "Need specialized support or just want to support Organizr?  If so head to Open Collective...": "Need specialized support or just want to support Organizr?  If so head to Open Collective...",
+        "Need specialized support or just want to support Organizr?  If so head to Patreon...": "Need specialized support or just want to support Organizr?  If so head to Patreon...",
+        "Want to donate a small amount of Crypto?.": "Want to donate a small amount of Crypto?.",
+        "Please use the QR Code or Wallet ID.": "Please use the QR Code or Wallet ID.",
+        "If you use the Square Cash App, you can donate with that if you like.": "If you use the Square Cash App, you can donate with that if you like.",
+        "I have chosen to go with PayPal Pools so everyone can see how much people have donated.": "I have chosen to go with PayPal Pools so everyone can see how much people have donated.",
+        "Want to show support on Github?  Sponsor me :)": "Want to show support on Github?  Sponsor me :)",
+        "If messages get stuck sending, please turn this option off.": "If messages get stuck sending, please turn this option off.",
+        "Save and reload!": "Save and reload!",
+        "Copy and paste the 4 values into Organizr": "Copy and paste the 4 values into Organizr",
+        "Click the overview tab on top left": "Click the overview tab on top left",
+        "Frontend (JQuery) - Backend (PHP)": "Frontend (JQuery) - Backend (PHP)",
+        "Create an App called whatever you like and choose a cluster (Close to you)": "Create an App called whatever you like and choose a cluster (Close to you)",
+        "Signup for Pusher [FREE]": "Signup for Pusher [FREE]",
+        "Connection": "Connection",
+        "Enabled": "Enabled",
+        "Internal URL": "Internal URL",
+        "External URL": "External URL",
+        "UUID": "UUID",
+        "Service Name": "Service Name",
+        "Make sure to save before using the import button on Services tab": "Make sure to save before using the import button on Services tab",
+        "Do not use a Read-Only Token as that will not give a correct UUID for sending the results to HealthChecks.io": "Do not use a Read-Only Token as that will not give a correct UUID for sending the results to HealthChecks.io",
+        "Please use a Full Access Token": "Please use a Full Access Token",
+        "URL for HealthChecks API": "URL for HealthChecks API",
+        "403 Error as Success": "403 Error as Success",
+        "401 Error as Success": "401 Error as Success",
+        "HealthChecks Ping URL": "HealthChecks Ping URL",
+        "URL for HealthChecks Ping": "URL for HealthChecks Ping",
+        "As often as you like - i.e. every 1 minute": "As often as you like - i.e. every 1 minute",
+        "Frequency": "Frequency",
+        "CRON Job URL": "CRON Job URL",
+        "Once this plugin is setup, you will need to setup a CRON job": "Once this plugin is setup, you will need to setup a CRON job",
+        "Services": "Services",
+        "Import Services": "Import Services",
+        "Add New Service": "Add New Service",
+        "After enabling for the first time, please reload the page - Menu is located under User menu on top right": "After enabling for the first time, please reload the page - Menu is located under User menu on top right",
+        "Emby Settings": "Emby Settings",
+        "Plex Settings": "Plex Settings",
+        "Backend": "Backend",
+        "Templates": "Templates",
+        "Test & Options": "Test & Options",
+        "Sender Information": "Sender Information",
+        "Host": "Host",
+        "Open your custom Bookmark page via menu.": "Open your custom Bookmark page via menu.",
+        "Create Bookmark tabs in the new area in": "Create Bookmark tabs in the new area in",
+        "Create Bookmark categories in the new area in": "Create Bookmark categories in the new area in",
+        "Add tab that points to": "Add tab that points to",
+        "and set it's type to": "and set it's type to",
+        "Checking for bookmark default category...": "Checking for bookmark default category...",
+        "Checking for Bookmark tab...": "Checking for Bookmark tab...",
+        "Automatic Setup Tasks": "Automatic Setup Tasks",
+        "Located at": "Located at",
+        "Custom Certificate Status": "Custom Certificate Status",
+        "Will play a sound if the server goes down and will play sound if comes back up.": "Will play a sound if the server goes down and will play sound if comes back up.",
+        "Please choose a unique value for added security": "Please choose a unique value for added security",
+        "IPv4 only at the moment - This must be set to work, will accept subnet or IP address": "IPv4 only at the moment - This must be set to work, will accept subnet or IP address",
+        "Enable option to set Auth Proxy Header Login": "Enable option to set Auth Proxy Header Login",
+        "Text or HTML for recovery password section": "Text or HTML for recovery password section",
+        "Disables recover password area": "Disables recover password area",
+        "Enables the local address forward if on local address and accessed from WAN Domain": "Enables the local address forward if on local address and accessed from WAN Domain",
+        "Full local address of organizr install - i.e. http://home.local or http://192.168.0.100": "Full local address of organizr install - i.e. http://home.local or http://192.168.0.100",
+        "Enter domain if you wish to be forwarded to a local address - Local Address filled out on next item": "Enter domain if you wish to be forwarded to a local address - Local Address filled out on next item",
+        "IPv4 only at the moment - This will set your login as local if your IP falls within the From and To": "IPv4 only at the moment - This will set your login as local if your IP falls within the From and To",
+        "Default status of Remember Me button on login screen": "Default status of Remember Me button on login screen",
+        "Number of days cookies and tokens will be valid for": "Number of days cookies and tokens will be valid for",
+        "Enable this to hide the Registration button on the login screen": "Enable this to hide the Registration button on the login screen",
+        "Sets the password for the Registration form on the login screen": "Sets the password for the Registration form on the login screen",
+        "WARNING! This will block anyone with these IP's": "WARNING! This will block anyone with these IP's",
+        "WARNING! This can potentially mess up your iFrames": "WARNING! This can potentially mess up your iFrames",
+        "Please use a FQDN on this URL Override": "Please use a FQDN on this URL Override",
+        "This will enable the webserver to forward errors so traefik will accept them": "This will enable the webserver to forward errors so traefik will accept them",
+        "Please make sure to use local IP address and port - You also may use local dns name too.": "Please make sure to use local IP address and port - You also may use local dns name too.",
+        "Remember! Please save before using the test button!": "Remember! Please save before using the test button!",
+        "This will enable the use of TLS for LDAP connections": "This will enable the use of TLS for LDAP connections",
+        "This will enable the use of SSL for LDAP connections": "This will enable the use of SSL for LDAP connections",
+        "Enabling this will bypass external 2FA security if user is on local Subnet": "Enabling this will bypass external 2FA security if user is on local Subnet",
+        "Enabling this will only allow Friends that have shares to the Machine ID entered above to login, Having this disabled will allow all Friends on your Friends list to login": "Enabling this will only allow Friends that have shares to the Machine ID entered above to login, Having this disabled will allow all Friends on your Friends list to login",
+        "Since you are using the official Docker image, you can just restart your Docker container to update Organizr": "Since you are using the official Docker image, you can just restart your Docker container to update Organizr",
+        "Since you are using the Official Docker image, Change the image to change the branch": "Since you are using the Official Docker image, Change the image to change the branch",
+        "Choose which Settings Tab to be default when opening settings page": "Choose which Settings Tab to be default when opening settings page",
+        "Please make sure to use the same (sub)domain to access Jellyfin as Organizr's": "Please make sure to use the same (sub)domain to access Jellyfin as Organizr's",
+        "Please make sure to use the local address to the API": "Please make sure to use the local address to the API",
+        "DO NOT SET THIS TO YOUR ADMIN ACCOUNT. We recommend you create a local account as a \"catch all\" for when Organizr is unable to perform SSO.  Organizr will request a User Token based off of this user credentials": "DO NOT SET THIS TO YOUR ADMIN ACCOUNT. We recommend you create a local account as a \"catch all\" for when Organizr is unable to perform SSO.  Organizr will request a User Token based off of this user credentials",
+        "Purge Log": "Purge Log",
+        "Avatar": "Avatar",
+        "Date Registered": "Date Registered",
+        "Group": "Group",
+        "Locked": "Locked",
+        "Copy to Clipboard": "Copy to Clipboard",
+        "Choose action:": "Choose action:",
+        "You may enter multiple URL's using the CSV format.  i.e. link#1,link#2,link#3": "You may enter multiple URL's using the CSV format.  i.e. link#1,link#2,link#3",
+        "Used to set the description for SEO meta tags": "Used to set the description for SEO meta tags",
+        "Also sets the title of your site": "Also sets the title of your site",
+        "Up to date": "Up to date",
+        "Loading Pihole...": "Loading Pihole...",
+        "Loading Unifi...": "Loading Unifi...",
+        "Loading Weather...": "Loading Weather...",
+        "Loading Tautulli...": "Loading Tautulli...",
+        "Loading Health Checks...": "Loading Health Checks...",
+        "Health Checks": "Health Checks",
+        "UniFi": "UniFi",
+        "Connection Error to rTorrent": "Connection Error to rTorrent",
+        "Request a Show or Movie": "Request a Show or Movie",
+        "Set": "Set",
+        "Set WAL Mode": "Set WAL Mode",
+        "Set DELETE Mode (Default)": "Set DELETE Mode (Default)",
+        "Journal Mode Status": "Journal Mode Status",
+        "This feature is experimental - You may face unexpected database is locked errors in logs": "This feature is experimental - You may face unexpected database is locked errors in logs",
+        "Warning": "Warning",
+        "Tab Help": "Tab Help",
+        "Toggle this tab to loaded in the background on page load": "Toggle this tab to loaded in the background on page load",
+        "Preload": "Preload",
+        "Enable Organizr to ping the status of the local URL of this tab": "Enable Organizr to ping the status of the local URL of this tab",
+        "Toggle this to add the tab to the Splash Page on page load": "Toggle this to add the tab to the Splash Page on page load",
+        "Splash": "Splash",
+        "Either mark a tab as active or inactive": "Either mark a tab as active or inactive",
+        "You can choose one tab to be the first opened tab on page load": "You can choose one tab to be the first opened tab on page load",
+        "Default": "Default",
+        "Internal is for Organizr pages": "Internal is for Organizr pages",
+        "iFrame is for all others": "iFrame is for all others",
+        "New Window is for items to open in a new window": "New Window is for items to open in a new window",
+        "The lowest Group that will have access to this tab": "The lowest Group that will have access to this tab",
+        "Each Tab is assigned a Category, the default is unsorted.  You may create new categories on the Category settings tab": "Each Tab is assigned a Category, the default is unsorted.  You may create new categories on the Category settings tab",
+        "Category": "Category",
+        "The text that will be displayed for that certain tab": "The text that will be displayed for that certain tab",
+        "Please Save before Testing. Note that using a blank password might not work correctly.": "Please Save before Testing. Note that using a blank password might not work correctly.",
+        "Use Custom Certificate": "Use Custom Certificate",
+        "Note that using a blank password might not work correctly.": "Note that using a blank password might not work correctly.",
+        "Database Password": "Database Password",
+        "Database Username": "Database Username",
+        "Database Host": "Database Host",
+        ".": "."
+    }
+}

+ 165 - 31
js/langpack/de-ch[German (Switzerland)].json

@@ -54,7 +54,7 @@
         "NOTE": "NOTIZ",
         "Update Available": "Update verfüegbar",
         "is available, goto": "esch verfüegbar, go zu",
-        "Update Tab": "Tab update",
+        "Update Tab": "Tab aktualisiere",
         "Database Name:": "Datebankname:",
         "Database Name": "Datebankname",
         "Database Location:": "Datebankverzeichnis:",
@@ -80,7 +80,7 @@
         "Admin Info": "Admininfo",
         "Parent Directory:": "Oberverzeichnis",
         "Admin Creation": "Admin erstelle",
-        "The Database will contain sensitive information.  Please place in directory outside of root Web Directory.": "D'Datebank wird sensibli Date enthalte. Bitte platzier sie osserhalb vom Webroot Ordner.",
+        "The Database will contain sensitive information.  Please place in directory outside of root Web Directory.": "D'Datebank werd sensibli Date enthalte. Bitte platzier sie osserhalb vom Webroot Ordner.",
         "MANAGE": "VERWALTE",
         "CATEGORY": "KATEGORIE",
         "ADDED": "HINZUEGFÜEGT",
@@ -240,14 +240,14 @@
         "Loading Playlists...": "Playlists lade...",
         "Loading Download Queue...": "Download-Warteschlange lade...",
         "Organizr Mod Picks": "Organizr Mod Picks",
-        "Requests": "Requests",
-        "Become Sponsor": "Become Sponsor",
-        "Splash Page": "Splash Page",
-        "Lock Screen": "Lock Screen",
-        "If you signed in with a Emby Acct... Please use the following link to change your password there:": "If you signed in with a Emby Acct... Please use the following link to change your password there:",
-        "Password Notice": "Password Notice",
-        "If you signed in with a Plex Acct... Please use the following link to change your password there:": "If you signed in with a Plex Acct... Please use the following link to change your password there:",
-        "Active Tokens": "Aktive Token",
+        "Requests": "Afroge",
+        "Become Sponsor": "Sponsor wärde",
+        "Splash Page": "Splash-Site",
+        "Lock Screen": "Sperrbüudschirm",
+        "If you signed in with a Emby Acct... Please use the following link to change your password there:": "Wenn di mit einem Emby-Konto agemäldet hesch... Bitte verwänd de folgendi Link, um dort dis Passwort z ändere:",
+        "Password Notice": "Passworthiwis",
+        "If you signed in with a Plex Acct... Please use the following link to change your password there:": "Wenn di mit einem Plex-Konto agemäldet hesch... Bitte verwänd de folgendi Link, um dort dis Passwort z ändere:",
+        "Active Tokens": "Aktivi Token",
         "Deactivate": "Deaktiviere",
         "Activate": "Aktiviere",
         "Current": "Aktuell",
@@ -260,17 +260,17 @@
         "Current Directory: ": "Aktuells Verzeichnis: ",
         "Suggested Directory: ": "Vorgschlagnigs Verzeichnis: ",
         "The Registration Password will lockout the registration field with this password. {User-Generated]": "The Registration Password will lockout the registration field with this password. {User-Generated]",
-        "The Hash Key will be used to decrypt all passwords etc... on the server. {User-Generated]": "The Hash Key will be used to decrypt all passwords etc... on the server. {User-Generated]",
-        "If using Plex or Emby - It is suggested that you use the username and email of the Admin account.": "If using Plex or Emby - It is suggested that you use the username and email of the Admin account.",
+        "The Hash Key will be used to decrypt all passwords etc... on the server. {User-Generated]": "D Häsh-Schlüssu wird verwändet, um alli Passwörter usw. uf em Server z entschlüssle. {User-Generated]",
+        "If using Plex or Emby - It is suggested that you use the username and email of the Admin account.": "Bir Verwändig vo Plex oder Emby - Es wird empfohle, dr Benutzername und d E-Mail-Adrässe vom Adminkonti z verwände.",
         "Business has Media items hidden [Plex, Emby etc...]": "Business has Media items hidden [Plex, Emby etc...]",
         "Personal has everything unlocked - no restrictions": "Personal has everything unlocked - no restrictions",
-        "Continue To Website": "Continue To Website",
+        "Continue To Website": "Witer zur Website",
         "Patreon": "Patreon",
-        "Cryptos": "Cryptos",
+        "Cryptos": "Kryptos",
         "Square Cash": "Square Cash",
         "PayPal": "PayPal",
         "Beerpay.io": "Beerpay.io",
-        "Sponsors": "Sponsors",
+        "Sponsors": "Sponsore",
         "THEME": "THEMA",
         "Theme Marketplace": "Theme Märtplatz",
         "Test Tab": "Test Tab",
@@ -279,9 +279,9 @@
         "Choose Image": "Bild uswähle",
         "Ping URL": "Ping URL",
         "Please set tab as [New Window] on next screen": "Please set tab as [New Window] on next screen",
-        "Tab can be set as iFrame": "Tab can be set as iFrame",
+        "Tab can be set as iFrame": "Dr Tab cha as iFrame igstellt wärde",
         "Premier": "Premier",
-        "Missing": "Fehlend",
+        "Missing": "Fählend",
         "Unaired": "Nonig usgstrahlt",
         "Downloaded": "Abeglade",
         "All": "Alli",
@@ -294,24 +294,24 @@
         "This is not the same as database authentication - i.e. Plex Authentication | Emby Authentication | FTP Authentication": "This is not the same as database authentication - i.e. Plex Authentication | Emby Authentication | FTP Authentication",
         "Status: [ ": "Status: [ ",
         "This module requires XMLRPC": "This module requires XMLRPC",
-        "Misc Options": "Misc Options",
-        "Search My Media": "Search My Media",
-        "Import Plex Users": "Import Plex Users",
-        "Import": "Import",
-        "INSTALL": "INSTALL",
+        "Misc Options": "Verschiedeni Optione",
+        "Search My Media": "Mini Medien dürsueche",
+        "Import Plex Users": "Plex-Benutzer importiere",
+        "Import": "Importiere",
+        "INSTALL": "INSTALLIERE",
         "INFO": "INFO",
-        "Day": "Day",
+        "Day": "Tag",
         "Week": "Week",
         "Month": "Month",
         "List": "List",
         "Streams": "Streams",
         "javascript:void(0)": "javascript:void(0)",
         "Request Show or Movie": "Request Show or Movie",
-        "Mark as Unavailable": "Mark as Unavailable",
+        "Mark as Unavailable": "As nid verfüegbar markiere",
         "Mark as Available": "Als verfüegbar markiere",
-        "Approve": "Approve",
+        "Approve": "Gnämige",
         "Start": "Start",
-        "Everyone Refresh Seconds": "Everyone Refresh Seconds",
+        "Everyone Refresh Seconds": "All Sekunde aktualisiere",
         "Admin Refresh Seconds": "Admin Refresh Seconds",
         "Minimum Authentication for Time Display": "Minimum Authentication for Time Display",
         "Show Ping Time": "Show Ping Time",
@@ -410,7 +410,7 @@
         "Custom Javascript": "Custom Javascript",
         "Theme CSS [Can replace colors from above]": "Theme CSS [Can replace colors from above]",
         "Custom CSS [Can replace colors from above]": "Custom CSS [Can replace colors from above]",
-        "Copy code and paste inside left box": "Copy code and paste inside left box",
+        "Copy code and paste inside left box": "Kopier de Code und füeg en is linge Fäld",
         "Download and unzip file and place in": "Download and unzip file and place in",
         "Click [Generate your Favicons and HTML code]": "Click [Generate your Favicons and HTML code]",
         "Enter this path": "Enter this path",
@@ -428,8 +428,8 @@
         "Button Color": "Button Color",
         "Accent Text Color": "Accent Text Color",
         "Accent Color": "Accent Color",
-        "Side Bar Text Color": "Side Bar Text Color",
-        "Side Bar Color": "Side Bar Color",
+        "Side Bar Text Color": "Textfarb vor Sitelischte",
+        "Side Bar Color": "Farb vor Sitelischte",
         "Nav Bar Text Color": "Nav Bar Text Color",
         "Nav Bar Color": "Nav Bar Color",
         "Unsorted Tab Placement": "Unsorted Tab Placement",
@@ -705,7 +705,7 @@
         "Auto-Expand Nav Bar": "Auto-Expand Nav Bar",
         "Auto-Collapse Categories": "Auto-Collapse Categories",
         "Expand All Categories": "Expand All Categories",
-        "Show Organizr Sign out & in Button on Sidebar": "Show Organizr Sign out & in Button on Sidebar",
+        "Show Organizr Sign out & in Button on Sidebar": "Organizr-Abmälde- und -Amäldeschautflächi ir Sitelischte azeige",
         "Show Organizr Docs Link": "Show Organizr Docs Link",
         "Show Organizr Support Link": "Show Organizr Support Link",
         "Show Organizr Feature Request Link": "Show Organizr Feature Request Link",
@@ -720,6 +720,140 @@
         "Top Bar": "Top Bar",
         "Bookmark Settings": "Bookmark Settings",
         "HnL Settings": "HnL Settings",
-        "Not Installed": "Not Installed"
+        "Not Installed": "Not Installed",
+        "Money not an option?  No problem.  Show some love to this Google Ad below:": "Money not an option?  No problem.  Show some love to this Google Ad below:",
+        "Please click the button to continue.": "Please click the button to continue.",
+        "Need specialized support or just want to support Organizr?  If so head to Open Collective...": "Need specialized support or just want to support Organizr?  If so head to Open Collective...",
+        "Need specialized support or just want to support Organizr?  If so head to Patreon...": "Need specialized support or just want to support Organizr?  If so head to Patreon...",
+        "Want to donate a small amount of Crypto?.": "Want to donate a small amount of Crypto?.",
+        "Please use the QR Code or Wallet ID.": "Please use the QR Code or Wallet ID.",
+        "If you use the Square Cash App, you can donate with that if you like.": "If you use the Square Cash App, you can donate with that if you like.",
+        "I have chosen to go with PayPal Pools so everyone can see how much people have donated.": "I have chosen to go with PayPal Pools so everyone can see how much people have donated.",
+        "Want to show support on Github?  Sponsor me :)": "Want to show support on Github?  Sponsor me :)",
+        "If messages get stuck sending, please turn this option off.": "If messages get stuck sending, please turn this option off.",
+        "Save and reload!": "Save and reload!",
+        "Copy and paste the 4 values into Organizr": "Copy and paste the 4 values into Organizr",
+        "Click the overview tab on top left": "Click the overview tab on top left",
+        "Frontend (JQuery) - Backend (PHP)": "Frontend (JQuery) - Backend (PHP)",
+        "Create an App called whatever you like and choose a cluster (Close to you)": "Create an App called whatever you like and choose a cluster (Close to you)",
+        "Signup for Pusher [FREE]": "Signup for Pusher [FREE]",
+        "Connection": "Connection",
+        "Enabled": "Enabled",
+        "Internal URL": "Internal URL",
+        "External URL": "External URL",
+        "UUID": "UUID",
+        "Service Name": "Service Name",
+        "Make sure to save before using the import button on Services tab": "Make sure to save before using the import button on Services tab",
+        "Do not use a Read-Only Token as that will not give a correct UUID for sending the results to HealthChecks.io": "Do not use a Read-Only Token as that will not give a correct UUID for sending the results to HealthChecks.io",
+        "Please use a Full Access Token": "Please use a Full Access Token",
+        "URL for HealthChecks API": "URL for HealthChecks API",
+        "403 Error as Success": "403 Error as Success",
+        "401 Error as Success": "401 Error as Success",
+        "HealthChecks Ping URL": "HealthChecks Ping URL",
+        "URL for HealthChecks Ping": "URL for HealthChecks Ping",
+        "As often as you like - i.e. every 1 minute": "As often as you like - i.e. every 1 minute",
+        "Frequency": "Frequency",
+        "CRON Job URL": "CRON Job URL",
+        "Once this plugin is setup, you will need to setup a CRON job": "Once this plugin is setup, you will need to setup a CRON job",
+        "Services": "Services",
+        "Import Services": "Import Services",
+        "Add New Service": "Add New Service",
+        "After enabling for the first time, please reload the page - Menu is located under User menu on top right": "After enabling for the first time, please reload the page - Menu is located under User menu on top right",
+        "Emby Settings": "Emby Settings",
+        "Plex Settings": "Plex Settings",
+        "Backend": "Backend",
+        "Templates": "Templates",
+        "Test & Options": "Test & Options",
+        "Sender Information": "Sender Information",
+        "Host": "Host",
+        "Open your custom Bookmark page via menu.": "Open your custom Bookmark page via menu.",
+        "Create Bookmark tabs in the new area in": "Create Bookmark tabs in the new area in",
+        "Create Bookmark categories in the new area in": "Create Bookmark categories in the new area in",
+        "Add tab that points to": "Add tab that points to",
+        "and set it's type to": "and set it's type to",
+        "Checking for bookmark default category...": "Checking for bookmark default category...",
+        "Checking for Bookmark tab...": "Checking for Bookmark tab...",
+        "Automatic Setup Tasks": "Automatic Setup Tasks",
+        "Located at": "Located at",
+        "Custom Certificate Status": "Custom Certificate Status",
+        "Will play a sound if the server goes down and will play sound if comes back up.": "Will play a sound if the server goes down and will play sound if comes back up.",
+        "Please choose a unique value for added security": "Please choose a unique value for added security",
+        "IPv4 only at the moment - This must be set to work, will accept subnet or IP address": "IPv4 only at the moment - This must be set to work, will accept subnet or IP address",
+        "Enable option to set Auth Proxy Header Login": "Enable option to set Auth Proxy Header Login",
+        "Text or HTML for recovery password section": "Text or HTML for recovery password section",
+        "Disables recover password area": "Disables recover password area",
+        "Enables the local address forward if on local address and accessed from WAN Domain": "Enables the local address forward if on local address and accessed from WAN Domain",
+        "Full local address of organizr install - i.e. http://home.local or http://192.168.0.100": "Full local address of organizr install - i.e. http://home.local or http://192.168.0.100",
+        "Enter domain if you wish to be forwarded to a local address - Local Address filled out on next item": "Enter domain if you wish to be forwarded to a local address - Local Address filled out on next item",
+        "IPv4 only at the moment - This will set your login as local if your IP falls within the From and To": "IPv4 only at the moment - This will set your login as local if your IP falls within the From and To",
+        "Default status of Remember Me button on login screen": "Default status of Remember Me button on login screen",
+        "Number of days cookies and tokens will be valid for": "Number of days cookies and tokens will be valid for",
+        "Enable this to hide the Registration button on the login screen": "Enable this to hide the Registration button on the login screen",
+        "Sets the password for the Registration form on the login screen": "Sets the password for the Registration form on the login screen",
+        "WARNING! This will block anyone with these IP's": "WARNING! This will block anyone with these IP's",
+        "WARNING! This can potentially mess up your iFrames": "WARNING! This can potentially mess up your iFrames",
+        "Please use a FQDN on this URL Override": "Please use a FQDN on this URL Override",
+        "This will enable the webserver to forward errors so traefik will accept them": "This will enable the webserver to forward errors so traefik will accept them",
+        "Please make sure to use local IP address and port - You also may use local dns name too.": "Please make sure to use local IP address and port - You also may use local dns name too.",
+        "Remember! Please save before using the test button!": "Remember! Please save before using the test button!",
+        "This will enable the use of TLS for LDAP connections": "This will enable the use of TLS for LDAP connections",
+        "This will enable the use of SSL for LDAP connections": "This will enable the use of SSL for LDAP connections",
+        "Enabling this will bypass external 2FA security if user is on local Subnet": "Enabling this will bypass external 2FA security if user is on local Subnet",
+        "Enabling this will only allow Friends that have shares to the Machine ID entered above to login, Having this disabled will allow all Friends on your Friends list to login": "Enabling this will only allow Friends that have shares to the Machine ID entered above to login, Having this disabled will allow all Friends on your Friends list to login",
+        "Since you are using the official Docker image, you can just restart your Docker container to update Organizr": "Since you are using the official Docker image, you can just restart your Docker container to update Organizr",
+        "Since you are using the Official Docker image, Change the image to change the branch": "Since you are using the Official Docker image, Change the image to change the branch",
+        "Choose which Settings Tab to be default when opening settings page": "Choose which Settings Tab to be default when opening settings page",
+        "Please make sure to use the same (sub)domain to access Jellyfin as Organizr's": "Please make sure to use the same (sub)domain to access Jellyfin as Organizr's",
+        "Please make sure to use the local address to the API": "Please make sure to use the local address to the API",
+        "DO NOT SET THIS TO YOUR ADMIN ACCOUNT. We recommend you create a local account as a \"catch all\" for when Organizr is unable to perform SSO.  Organizr will request a User Token based off of this user credentials": "DO NOT SET THIS TO YOUR ADMIN ACCOUNT. We recommend you create a local account as a \"catch all\" for when Organizr is unable to perform SSO.  Organizr will request a User Token based off of this user credentials",
+        "Purge Log": "Purge Log",
+        "Avatar": "Avatar",
+        "Date Registered": "Date Registered",
+        "Group": "Group",
+        "Locked": "Locked",
+        "Copy to Clipboard": "Copy to Clipboard",
+        "Choose action:": "Choose action:",
+        "You may enter multiple URL's using the CSV format.  i.e. link#1,link#2,link#3": "You may enter multiple URL's using the CSV format.  i.e. link#1,link#2,link#3",
+        "Used to set the description for SEO meta tags": "Used to set the description for SEO meta tags",
+        "Also sets the title of your site": "Also sets the title of your site",
+        "Up to date": "Up to date",
+        "Loading Pihole...": "Loading Pihole...",
+        "Loading Unifi...": "Loading Unifi...",
+        "Loading Weather...": "Loading Weather...",
+        "Loading Tautulli...": "Loading Tautulli...",
+        "Loading Health Checks...": "Loading Health Checks...",
+        "Health Checks": "Health Checks",
+        "UniFi": "UniFi",
+        "Connection Error to rTorrent": "Connection Error to rTorrent",
+        "Request a Show or Movie": "Request a Show or Movie",
+        "Set": "Set",
+        "Set WAL Mode": "Set WAL Mode",
+        "Set DELETE Mode (Default)": "Set DELETE Mode (Default)",
+        "Journal Mode Status": "Journal Mode Status",
+        "This feature is experimental - You may face unexpected database is locked errors in logs": "This feature is experimental - You may face unexpected database is locked errors in logs",
+        "Warning": "Warning",
+        "Tab Help": "Tab Help",
+        "Toggle this tab to loaded in the background on page load": "Toggle this tab to loaded in the background on page load",
+        "Preload": "Preload",
+        "Enable Organizr to ping the status of the local URL of this tab": "Enable Organizr to ping the status of the local URL of this tab",
+        "Toggle this to add the tab to the Splash Page on page load": "Toggle this to add the tab to the Splash Page on page load",
+        "Splash": "Splash",
+        "Either mark a tab as active or inactive": "Either mark a tab as active or inactive",
+        "You can choose one tab to be the first opened tab on page load": "You can choose one tab to be the first opened tab on page load",
+        "Default": "Default",
+        "Internal is for Organizr pages": "Internal is for Organizr pages",
+        "iFrame is for all others": "iFrame is for all others",
+        "New Window is for items to open in a new window": "New Window is for items to open in a new window",
+        "The lowest Group that will have access to this tab": "The lowest Group that will have access to this tab",
+        "Each Tab is assigned a Category, the default is unsorted.  You may create new categories on the Category settings tab": "Each Tab is assigned a Category, the default is unsorted.  You may create new categories on the Category settings tab",
+        "Category": "Category",
+        "The text that will be displayed for that certain tab": "The text that will be displayed for that certain tab",
+        "Please Save before Testing. Note that using a blank password might not work correctly.": "Please Save before Testing. Note that using a blank password might not work correctly.",
+        "Use Custom Certificate": "Use Custom Certificate",
+        "Note that using a blank password might not work correctly.": "Note that using a blank password might not work correctly.",
+        "Database Password": "Database Password",
+        "Database Username": "Database Username",
+        "Database Host": "Database Host",
+        ".": "."
     }
 }

+ 197 - 197
js/langpack/ro[Romanian].json

@@ -7,231 +7,231 @@
         "Username": "Nume Utilizator",
         "Message": "Mesaj",
         "My Profile": "Profilul Meu",
-        "Account Settings": "Setari Cont",
-        "Login/Register": "Login/Inregistrare",
-        "Logout": "Logout",
+        "Account Settings": "Setări Cont",
+        "Login/Register": "Logare/Inregistrare",
+        "Logout": "Delogare",
         "Inbox": "Inbox",
-        "Go Back": "Intoarce-te",
-        "Reset": "Reseteaza",
+        "Go Back": "Întoarce-te",
+        "Reset": "Resetează",
         "Email": "Email",
-        "Enter your Email and instructions will be sent to you!": "Introduceti emailul si instructiunile vor fi trimise!",
-        "Register": "Inregistrare",
-        "Registration Password": "Parola Intregistrare",
-        "Recover Password": "Parola Recuperare",
+        "Enter your Email and instructions will be sent to you!": "Introduceți email-ul unde doriți să vă fie trimise instrucțiunile.",
+        "Register": "Înregistrare",
+        "Registration Password": "Parola de Înregistrare",
+        "Recover Password": "Recuperează Parola",
         "Password": "Parola",
-        "Sign Up": "Inregistrare",
+        "Sign Up": "Înregistrare",
         "Don't have an account?": "Nu ai cont?",
         "Forgot pwd?": "Ai uitat parola?",
-        "Remember Me": "Amintește-ți de mine",
-        "Login": "Login",
+        "Remember Me": "Ține-mă minte",
+        "Login": "Logare",
         "Installed": "Instalat",
-        "Install Update": "Actualizare",
+        "Install Update": "Actualizează",
         "Organizr Versions": "Versiuni Organizr",
         "About": "Despre",
         "Organizr Logs": "Jurnal Organizr",
-        "Main Settings": "Setari Principale",
+        "Main Settings": "Setări Principale",
         "Updates": "Actualizări",
         "Logs": "Jurnal",
-        "Main": "Main",
-        "Plugins": "Plugins",
+        "Main": "Principal",
+        "Plugins": "Adaosuri",
         "Manage Users": "Administrare Utilizatori",
-        "Customize Organizr": "Customize Organizr",
+        "Customize Organizr": "Personalizează Organizr",
         "Edit Categories": "Editare Categorii",
-        "Edit Tabs": "Editare Tab-uri",
-        "Tabs": "Tab-uri",
-        "System Settings": "Setari de Sistem",
+        "Edit Tabs": "Editare Ferestre",
+        "Tabs": "Ferestre",
+        "System Settings": "Setări de Sistem",
         "User Management": "Administrare Utilizatori",
         "Customize": "Personalizare",
-        "Tab Editor": "Editor de Tab-uri",
-        "Settings": "Setari",
-        "Organizr Settings": "Setari Organizr",
+        "Tab Editor": "Editor de Ferestre",
+        "Settings": "Setări",
+        "Organizr Settings": "Setări Organizr",
         "Categories": "Categorii",
-        "Login Logs": "Jurnal Autentificari",
-        "Login Log": "Login Log",
-        "Organizr Log": "Organizr Log",
-        "FIXED": "FIXED",
-        "NEW": "NEW",
-        "NOTE": "NOTE",
-        "Update Available": "Update Available",
-        "is available, goto": "is available, goto",
-        "Update Tab": "Update Tab",
-        "Database Name:": "Database Name:",
-        "Database Name": "Database Name",
-        "Database Location:": "Database Location:",
-        "Database Location": "Database Location",
-        "Hover to show": "Hover to show",
-        "API Key:": "API Key:",
-        "API Key": "API Key",
-        "Registration Password:": "Registration Password:",
-        "Hash Key:": "Hash Key:",
-        "Hash Key": "Hash Key",
-        "Password:": "Parola",
-        "Attention": "Atentie",
-        "The Hash Key will be used to decrypt all passwords etc... on the server.": "The Hash Key will be used to decrypt all passwords etc... on the server.",
-        "The API Key will be used for all calls to organizr for the UI. [Auto-Generated]": "The API Key will be used for all calls to organizr for the UI. [Auto-Generated]",
+        "Login Logs": "Istoric Autentificări",
+        "Login Log": "Istoric Autentificări",
+        "Organizr Log": "Istoric Organizr",
+        "FIXED": "FIXAT",
+        "NEW": "NOU",
+        "NOTE": "NOTĂ",
+        "Update Available": "Actualizare Disponibilă",
+        "is available, goto": "este disponibil, mergi la",
+        "Update Tab": "Actualizează Fereastra",
+        "Database Name:": "Numele bazei de date:",
+        "Database Name": "Numele bazei de date",
+        "Database Location:": "Locația bazei de date:",
+        "Database Location": "Locația bazei de date",
+        "Hover to show": "Ține mouse-ul deasupra pentru a arăta",
+        "API Key:": "Cheie API:",
+        "API Key": "Cheie API",
+        "Registration Password:": "Parola de Înregistrare:",
+        "Hash Key:": "Cheia Hash:",
+        "Hash Key": "Cheia Hash",
+        "Password:": "Parola:",
+        "Attention": "Atenție",
+        "The Hash Key will be used to decrypt all passwords etc... on the server.": "Cheia Hash va fi folosită pentru a decripta toate parolele etc... pe acest server.",
+        "The API Key will be used for all calls to organizr for the UI. [Auto-Generated]": "Cheia API va fi folosită pentru toate apelurile către organizr pentru interfața de utilizator. [Generată Automat]",
         "Notice": "Notificare",
         "Business": "Afacere",
         "Personal": "Personal",
-        "Choose License": "Alege Licenta",
-        "Install Type": "Install Type",
-        "Verify": "Verifica",
-        "Database": "Baza de date",
+        "Choose License": "Alege Licența",
+        "Install Type": "Tipul instalării",
+        "Verify": "Verifică",
+        "Database": "Bază de date",
         "Security": "Securitate",
-        "Admin Info": "Admin Info",
-        "Parent Directory:": "Parent Directory:",
-        "Admin Creation": "Admin Creation",
-        "The Database will contain sensitive information.  Please place in directory outside of root Web Directory.": "The Database will contain sensitive information.  Please place in directory outside of root Web Directory.",
-        "MANAGE": "Administrare",
-        "CATEGORY": "Categorie",
-        "ADDED": "Adaugat",
-        "NAME & EMAIL": "NAME & EMAIL",
-        "MANAGE USERS": "MANAGE USERS",
-        "Add User": "Add User",
-        "Manage Groups": "Manage Groups",
-        "Choose Language": "Choose Language",
-        "Welcome": "Welcome",
-        "License": "License",
-        "Webserver Version": "Webserver Version",
-        "PHP Version": "PHP Version",
-        "Organizr Branch": "Organizr Branch",
-        "Organizr Version": "Organizr Version",
-        "Information": "Information",
-        "Below you will find all the links for everything that has to do with Organizr": "Below you will find all the links for everything that has to do with Organizr",
-        "Loading...": "Incarcare...",
-        "Donate": "Doneaza",
+        "Admin Info": "Informații Administrator",
+        "Parent Directory:": "Directorul Mamă:",
+        "Admin Creation": "Crearea Administratorului",
+        "The Database will contain sensitive information.  Please place in directory outside of root Web Directory.": "Această bază de date va conține informații importante. Vă rugam puneți acest fișier înafara fișierului web principal (root directory). ",
+        "MANAGE": "ADMINISTRARE",
+        "CATEGORY": "CATEGORIE",
+        "ADDED": "ADĂUGAT",
+        "NAME & EMAIL": "NUME & EMAIL",
+        "MANAGE USERS": "ADMINISTRARE UTILIZATORI",
+        "Add User": "Adaugă Utilizator",
+        "Manage Groups": "Administrează Grupurile",
+        "Choose Language": "Alege Limba",
+        "Welcome": "Bine ai venit",
+        "License": "Licen",
+        "Webserver Version": "Versiunea Webserver-ului",
+        "PHP Version": "Versiune PHP",
+        "Organizr Branch": "Ramura Organizr",
+        "Organizr Version": "Versiunea Organizr",
+        "Information": "Informații",
+        "Below you will find all the links for everything that has to do with Organizr": "Mai jos puteți găsi toate link-urile relevante pentru Organizr",
+        "Loading...": "Încărcare...",
+        "Donate": "Donează",
         "Edit Group": "Editare Grup",
-        "For icons, use the following format:": "Pentru pictograme, folositi urmatorul format",
-        "For images, use the following format:": "Pentru imagini, folositi urmatorul format",
-        "You may use an image or icon in this field": "Puteti folosi o imagine sau o pictograma in acest camp",
+        "For icons, use the following format:": "Pentru pictograme, folosiți următorul format:",
+        "For images, use the following format:": "Pentru imagini, folosiți următorul format:",
+        "You may use an image or icon in this field": "Puteți folosi o imagine sau o pictogramă in acest câmp",
         "Image Legend": "Legenda Imagine",
-        "Category Image": "Category Image",
-        "Category Name": "Category Name",
-        "Edit Category": "Editeaza Categoria",
-        "Add Category": "Adauga Categorie",
-        "Add New Category": "Adauga o noua Categorie",
-        "DELETE": "Sterge",
-        "EDIT": "Editeaza",
-        "DEFAULT": "Implicit",
-        "TABS": "TABS",
-        "NAME": "Nume",
-        "Category Editor": "Category Editor",
-        "Tab Image": "Tab Image",
-        "Tab URL": "Tab URL",
-        "Tab Name": "Tab Name",
-        "Edit Tab": "Edit Tab",
-        "Add Tab": "Add Tab",
-        "Add New Tab": "Add New Tab",
+        "Category Image": "Pictograma Categoriei",
+        "Category Name": "Numele categoriei",
+        "Edit Category": "Editează Categoria",
+        "Add Category": "Adaugă Categoria",
+        "Add New Category": "Adaugă o nouă Categorie",
+        "DELETE": "ȘTERGE",
+        "EDIT": "EDITEAZĂ",
+        "DEFAULT": "IMPLICIT",
+        "TABS": "FERESTRE",
+        "NAME": "NUME",
+        "Category Editor": "Editor de Categorii",
+        "Tab Image": "Pictograma Ferestrei",
+        "Tab URL": "URL-ul Ferestrei",
+        "Tab Name": "Numele Ferestrei",
+        "Edit Tab": "Editează Fereastra",
+        "Add Tab": "Adaugă Fereastra",
+        "Add New Tab": "Adaugă o nouă Fereastră",
         "SPLASH": "SPLASH",
-        "ACTIVE": "ACTIVE",
-        "TYPE": "TYPE",
-        "GROUP": "GROUP",
-        "Delete": "Delete",
-        "No": "No",
-        "Yes": "Yes",
-        "Deleted Category": "Deleted Category",
-        "Add New User": "Add New User",
+        "ACTIVE": "ACTIV",
+        "TYPE": "TIP",
+        "GROUP": "GRUP",
+        "Delete": "Șterge",
+        "No": "Nu",
+        "Yes": "Da",
+        "Deleted Category": "Categorie Ștearsă",
+        "Add New User": "Adaugă un nou Utilizator",
         "EMAIL": "EMAIL",
-        "Deleted User": "Deleted User",
-        "Category Order Saved": "Category Order Saved",
-        "Group Image": "Group Image",
-        "Group Name": "Group Name",
-        "Add Group": "Add Group",
-        "Add New Group": "Add New Group",
-        "USERS": "USERS",
-        "GROUP NAME": "GROUP NAME",
-        "MANAGE GROUPS": "MANAGE GROUPS",
-        "Changed Language To": "Changed Language To",
-        "Groups": "Groups",
-        "Users": "Users",
-        "Appearance": "Appearance",
-        "Customize Appearance": "Customize Appearance",
-        "Request Me!": "Request Me!",
-        "Would you like to Request it?": "Would you like to Request it?",
-        "No Results for:": "No Results for:",
-        "Nothing in queue": "Nothing in queue",
-        "Nothing in history": "Nothing in history",
-        "Nothing in hitsory": "Nothing in hitsory",
-        "Load More": "Load More",
-        "Request": "Request",
-        "No Results": "No Results",
-        "Airs Today TV": "Airs Today TV",
-        "Popular TV": "Popular TV",
-        "Top TV": "Top TV",
-        "Upcoming Movies": "Upcoming Movies",
-        "Popular Movies": "Popular Movies",
-        "Top Movies": "Top Movies",
-        "In Theatres": "In Theatres",
-        "Suggestions": "Suggestions",
+        "Deleted User": "Utilizator Șters",
+        "Category Order Saved": "Ordinea Categoriilor Salvată",
+        "Group Image": "Pictograma Grupului",
+        "Group Name": "Numele Grupului",
+        "Add Group": "Adaugă Grupul",
+        "Add New Group": "Adaugă un nou Grup",
+        "USERS": "UTILIZATORI",
+        "GROUP NAME": "NUMELE GRUPULUI",
+        "MANAGE GROUPS": "ADMINISTREAZĂ GRUPURILE",
+        "Changed Language To": "Limbă schimbată în",
+        "Groups": "Grupuri",
+        "Users": "Utilizatori",
+        "Appearance": "Înfățișare",
+        "Customize Appearance": "Personalizează Înfățișarea",
+        "Request Me!": "Cere-mă!",
+        "Would you like to Request it?": "Ai dori să ceri asta?",
+        "No Results for:": "Niciun rezultat pentru:",
+        "Nothing in queue": "Nimic în așteptare",
+        "Nothing in history": "Nimic în istoric",
+        "Nothing in hitsory": "Nimic în istoric",
+        "Load More": "Încarcă mai Mult",
+        "Request": "Cere",
+        "No Results": "Niciun rezultat",
+        "Airs Today TV": "Se Difuzează azi la TV",
+        "Popular TV": "Popular la TV",
+        "Top TV": "În top la TV",
+        "Upcoming Movies": "Filme următoare",
+        "Popular Movies": "Filme populare",
+        "Top Movies": "Filme de top",
+        "In Theatres": "La cinema",
+        "Suggestions": "Sugestii",
         "TV": "TV",
-        "Movie": "Movie",
-        "Denied": "Denied",
-        "Unapproved": "Unapproved",
-        "Approved": "Approved",
-        "Unavailable": "Unavailable",
-        "Available": "Available",
-        "Recently Added": "Recently Added",
-        "Active": "Active",
-        "Requested By:": "Requested By:",
-        "Request Options": "Request Options",
-        "Deny": "Deny",
+        "Movie": "Film",
+        "Denied": "Respins",
+        "Unapproved": "Dezaprobat",
+        "Approved": "Aprobat",
+        "Unavailable": "Indisponibil",
+        "Available": "Disponibil",
+        "Recently Added": "Adăugat recent",
+        "Active": "Activ",
+        "Requested By:": "Cerut de:",
+        "Request Options": "Opțiuni cerere",
+        "Deny": "Respinge",
         "OK": "OK",
-        "Seconds": "Seconds",
-        "Verify Password": "Verify Password",
-        "Account Information": "Account Information",
-        "Inactive Plugins": "Inactive Plugins",
-        "Active Plugins": "Active Plugins",
-        "Inactive": "Inactive",
-        "Everything Active": "Everything Active",
-        "Nothing Active": "Nothing Active",
-        "Choose Plex Machine": "Choose Plex Machine",
-        "Test Speed to Server": "Test Speed to Server",
-        "Test Server Speed": "Test Server Speed",
-        "Subject": "Subject",
-        "To:": "To:",
-        "Email Users": "Email Users",
-        "E-Mail Center": "E-Mail Center",
-        "You have been invited. Please goto ": "You have been invited. Please goto ",
-        "Use Invite Code": "Use Invite Code",
+        "Seconds": "Secunde",
+        "Verify Password": "Verifică Parola",
+        "Account Information": "Informații cont",
+        "Inactive Plugins": "Adaosuri inactive",
+        "Active Plugins": "Adaosuri Active",
+        "Inactive": "Inactiv",
+        "Everything Active": "Totul este Activ",
+        "Nothing Active": "Nimic nu este Activ",
+        "Choose Plex Machine": "Selectează serverul Plex",
+        "Test Speed to Server": "Testează viteza până la server",
+        "Test Server Speed": "Testează viteza server-ului",
+        "Subject": "Subiect",
+        "To:": "La:",
+        "Email Users": "Utilizatori Email",
+        "E-Mail Center": "Centru E-mail",
+        "You have been invited. Please goto ": "Ai fost invitat. Te rog du-te la",
+        "Use Invite Code": "Folosește codul de invitație",
         "VALID": "VALID",
-        "IP ADDRESS": "IP ADDRESS",
-        "USED BY": "USED BY",
-        "DATE USED": "DATE USED",
-        "DATE SENT": "DATE SENT",
-        "INVITE CODE": "INVITE CODE",
-        "USERNAME": "USERNAME",
-        "Manage Invites": "Manage Invites",
-        "No Invites": "No Invites",
-        "Create/Send Invite": "Create/Send Invite",
-        "Name or Username": "Name or Username",
-        "New Invite": "New Invite",
-        "Hover to show ": "Hover to show ",
-        "Parent Directory: ": "Parent Directory: ",
-        "The Database will contain sensitive information. Please place in directory outside of root Web Directory.": "The Database will contain sensitive information. Please place in directory outside of root Web Directory.",
-        "I Want to Help": "I Want to Help",
-        "Head on over to POEditor and help us translate Organizr into your language": "Head on over to POEditor and help us translate Organizr into your language",
-        "Want to help translate?": "Want to help translate?",
+        "IP ADDRESS": "ADRESĂ IP",
+        "USED BY": "FOLOSIT DE",
+        "DATE USED": "DATĂ UTILIZAT",
+        "DATE SENT": "DATĂ TRIMIS",
+        "INVITE CODE": "COD DE INVITAȚIE",
+        "USERNAME": "NUME DE UTILIZATOR",
+        "Manage Invites": "Administrează invitațiile",
+        "No Invites": "Nicio invitatie",
+        "Create/Send Invite": "Creează/Trimite Invitația",
+        "Name or Username": "Nume sau Nume de Utilizator",
+        "New Invite": "Invitație nouă",
+        "Hover to show ": "Ține mouse-ul deasupra pentru a arăta",
+        "Parent Directory: ": "Director mamă:",
+        "The Database will contain sensitive information. Please place in directory outside of root Web Directory.": "Această bază de date va conține date importante. Vă rugăm puneți acest fișier înafara fișierului web principal (root directory).",
+        "I Want to Help": "Vreau să ajut",
+        "Head on over to POEditor and help us translate Organizr into your language": "Intră pe POEditor și ajută-ne să traducem Organizr în limba ta",
+        "Want to help translate?": "Vrei să ajuți cu traducerile?",
         "Single Sign-On": "Single Sign-On",
-        "Coming Soon...": "Coming Soon...",
-        "Homepage Order": "Homepage Order",
-        "Homepage Items": "Homepage Items",
-        "Image Manager": "Image Manager",
-        "Edit User": "Edit User",
-        "Password Again": "Password Again",
-        "Template": "Template",
-        "Plex Machine": "Plex Machine",
-        "Get Plex Machine": "Get Plex Machine",
-        "Grab It": "Grab It",
-        "Plex Password": "Plex Password",
-        "Plex Username": "Plex Username",
-        "Enter Plex Details": "Enter Plex Details",
-        "Get Plex Token": "Get Plex Token",
-        "Upload Image": "Upload Image",
-        "View Images": "View Images",
-        "Reload": "Reload",
-        "Unlock": "Unlock",
-        "Browser Information": "Browser Information",
-        "Web Folder": "Web Folder",
-        "Dependencies Missing": "Dependencies Missing",
+        "Coming Soon...": "În curand...",
+        "Homepage Order": "Ordinea paginii acasă",
+        "Homepage Items": "Itemi de pe pagina acasă",
+        "Image Manager": "Manager de imagini",
+        "Edit User": "Editează utilizator",
+        "Password Again": "Parola din nou",
+        "Template": "Șablon",
+        "Plex Machine": "Server Plex",
+        "Get Plex Machine": "Obține Server Plex",
+        "Grab It": "Obține",
+        "Plex Password": "Parolă Plex",
+        "Plex Username": "Nume de Utilizator Plex",
+        "Enter Plex Details": "Introdu detaliile Plex",
+        "Get Plex Token": "Obține Token-ul Plex",
+        "Upload Image": "Încarcă Imagine",
+        "View Images": "Vizualizează imaginile",
+        "Reload": "Reîncarcă",
+        "Unlock": "Deblochează",
+        "Browser Information": "Informații browser",
+        "Web Folder": "Dosar web",
+        "Dependencies Missing": "Dependențe lipsă (dependencies)",
         "Organizr Dependency Check": "Organizr Dependency Check",
         "Please make sure both Token and Machine are filled in": "Please make sure both Token and Machine are filled in",
         "Loading Requests...": "Loading Requests...",

+ 7 - 0
js/version.json

@@ -614,5 +614,12 @@
     "new": "added piholeToken to config items",
     "fixed": "fixed issue if pihole could not connect|Fixed issue with tabs not loading in settings|fix issue with Tab names after F5 reload (#1885)|Fix Latest Pi-Hole breaks stats if password enabled (#1896)|fix toggle header for adguard",
     "notes": "Implement JDownloader Homepage Basic Auth #1830|Update adguard.php|updated pihole hp item to reflect auth change to new pihole version|updated pihole test connection to reflect auth changes"
+  },
+  "2.1.2420": {
+    "date": "2023-01-25 20:04",
+    "title": "Weekly Update",
+    "new": "added arabic to lang|added username to emby connect user creation",
+    "fixed": "fixed ICal Not really Working (#1909)|fixed issue if backup folder was inside data folder (#1891)",
+    "notes": "bypass 2fa if auth proxy active (#1910)|Updated the following languages: [Romanian]|update emby connect auth to reflect email|update linux script to check script location only (#1899)|workaround for non-time entries on ical"
   }
 }