causefx 7 anni fa
parent
commit
e34b238477

+ 37 - 0
api/functions/static-globals.php

@@ -68,4 +68,41 @@ function favIcons()
 		}
 	}
 	return $favicon;
+}
+
+function languagePacks($encode = false)
+{
+	$files = array();
+	foreach (glob(dirname(__DIR__, 2) . DIRECTORY_SEPARATOR . 'js' . DIRECTORY_SEPARATOR . 'langpack' . DIRECTORY_SEPARATOR . "*.json") as $filename) {
+		if (strpos(basename($filename), '[') !== false) {
+			$explode = explode('[', basename($filename));
+			$files[] = array(
+				'filename' => basename($filename),
+				'code' => $explode[0],
+				'language' => matchBrackets(basename($filename))
+			);
+		}
+	}
+	usort($files, function ($a, $b) {
+		return $a['language'] <=> $b['language'];
+	});
+	return ($encode) ? json_encode($files) : $files;
+}
+
+function matchBrackets($text, $brackets = 's')
+{
+	switch ($brackets) {
+		case 's':
+		case 'square':
+			$pattern = '#\[(.*?)\]#';
+			break;
+		case 'c':
+		case 'curly':
+			$pattern = '#\((.*?)\)#';
+			break;
+		default:
+			return null;
+	}
+	preg_match($pattern, $text, $match);
+	return $match[1];
 }

+ 1 - 0
index.php

@@ -210,6 +210,7 @@
 <!-- /#wrapper -->
 <!-- jQuery -->
 <!--<script src="plugins/bower_components/jquery/dist/jquery.min.js"></script>-->
+<?php echo "<script>languageList = " . languagePacks(true) . ";\n</script>"; ?>
 <script src="js/jquery-2.2.4.min.js"></script>
 <script src="bootstrap/dist/js/bootstrap.min.js"></script>
 <script src="plugins/bower_components/sidebar-nav/dist/sidebar-nav.js"></script>

+ 6 - 41
js/functions.js

@@ -106,43 +106,9 @@ function isHidden() {
     return document[prop];
 }
 function loadLanguageList(){
-	var languages = languageList();
-	$.each(languages, function(i,v) {
-		lang.dynamic(i, 'js/langpack/'+i+'.json');
+	$.each(languageList, function(i,v) {
+		lang.dynamic(v.code, 'js/langpack/'+v.filename);
 	});
-	lang.dynamic('strings', 'js/langpack/strings.json');
-}
-function languageList(){
-	return {
-		'en':{
-			'lang':'English',
-			'image':'plugins/images/languages/en.png'
-		},
-		'nb':{
-			'lang':'Bokmål',
-			'image':'plugins/images/languages/nb.png'
-		},
-		'nl':{
-			'lang':'Dutch',
-			'image':'plugins/images/languages/nl.png'
-		},
-		'fr':{
-			'lang':'French',
-			'image':'plugins/images/languages/fr.png'
-		},
-		'de':{
-			'lang':'German',
-			'image':'plugins/images/languages/de.png'
-		},
-		'de-ch':{
-			'lang':'German (Switzerland)',
-			'image':'plugins/images/languages/de-ch.png'
-		},
-		'it':{
-			'lang':'Italian',
-			'image':'plugins/images/languages/it.png'
-		}
-	};
 }
 function sleep(ms) {
 	return new Promise(resolve => setTimeout(resolve, ms));
@@ -1574,14 +1540,13 @@ function settingsAPI(post, callbacks=null){
 }
 /* END ORGANIZR API FUNCTIONS */
 function buildLanguage(replace=false,newLang=null){
-	var languages = languageList();
 	var languageItems = '';
 	var currentLanguage = (getCookie('organizrLanguage')) ? getCookie('organizrLanguage') : window.lang.currentLang;
-	$.each(languages, function(i,v) {
-		var active = (i == currentLanguage) ? '' : '';
+	$.each(languageList, function(i,v) {
+		var active = (v.code == currentLanguage) ? '' : '';
 		languageItems += `
-			<a onclick="window.lang.change('`+i+`');buildLanguage(true,'`+v.lang+`')" href="javascript:void(0);" class="`+active+`">
-				<div class="mail-contnet"><h5>`+v.lang+`</h5><span class="mail-desc" lang="en">`+active+`</span></div>
+			<a onclick="window.lang.change('`+v.code+`');buildLanguage(true,'`+v.language+`')" href="javascript:void(0);" class="`+active+`">
+				<div class="mail-content"><h5 class="m-0">`+v.language+`</h5><span class="mail-desc" lang="en">`+active+`</span></div>
 			</a>
 		`;
 	});

+ 0 - 0
js/langpack/de-ch.json → js/langpack/de-ch[German (Switzerland)].json


+ 0 - 0
js/langpack/de.json → js/langpack/de[German].json


+ 0 - 0
js/langpack/en.json → js/langpack/en[English].json


+ 0 - 0
js/langpack/fr.json → js/langpack/fr[French].json


+ 0 - 0
js/langpack/it.json → js/langpack/it[Italian].json


+ 0 - 0
js/langpack/nb.json → js/langpack/nb[Bokmål].json


+ 0 - 0
js/langpack/nl.json → js/langpack/nl[Dutch].json