From: Robin Appelman Date: Mon, 20 Jun 2011 12:33:02 +0000 (+0200) Subject: add settings option for language X-Git-Tag: v3.0~267^2~496 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=76b12c4ae0ea9941b030f0a13786d0ac3fc32f76;p=nextcloud-server.git add settings option for language --- diff --git a/lib/l10n.php b/lib/l10n.php index f760d78c72b..729310825dd 100644 --- a/lib/l10n.php +++ b/lib/l10n.php @@ -198,19 +198,7 @@ class OC_L10N{ $available = $app; } else{ - $dir = self::findI18nDir( $app ); - if( file_exists($dir)){ - $dh = opendir($dir); - while(( $file = readdir( $dh )) !== false ){ - if( substr( $file, -4, 4 ) == '.php' ){ - $i = substr( $file, 0, -4 ); - if( $i != '' ){ - $available[] = $i; - } - } - } - closedir($dh); - } + $available=self::findAvailableLanguages( $app ); } if( isset($_SESSION['user_id']) && $_SESSION['user_id'] && OC_PREFERENCES::getValue( $_SESSION['user_id'], 'core', 'lang' )){ $lang = OC_PREFERENCES::getValue( $_SESSION['user_id'], 'core', 'lang' ); @@ -255,4 +243,27 @@ class OC_L10N{ } return $i18ndir; } + + /** + * @brief find all available languages for an app + * @param $app App that needs to be translated + * @returns array an array of available languages + */ + public static function findAvailableLanguages( $app=null ){ + $available=array('en');//english is always available + $dir = self::findI18nDir( $app ); + if( file_exists($dir)){ + $dh = opendir($dir); + while(( $file = readdir( $dh )) !== false ){ + if( substr( $file, -4, 4 ) == '.php' and strlen($file)==6 ){ + $i = substr( $file, 0, -4 ); + if( $i != '' ){ + $available[] = $i; + } + } + } + closedir($dh); + } + return $available; + } } \ No newline at end of file diff --git a/settings/ajax/setlanguage.php b/settings/ajax/setlanguage.php new file mode 100644 index 00000000000..672836afe0f --- /dev/null +++ b/settings/ajax/setlanguage.php @@ -0,0 +1,24 @@ + "error", "data" => array( "message" => "Authentication error" ))); + exit(); +} + +// Get data +if( isset( $_POST['lang'] ) ){ + $lang=$_POST['lang']; + OC_PREFERENCES::setValue( $_SESSION['user_id'], 'core', 'lang', $lang ); + echo json_encode( array( "status" => "success", "data" => array( "message" => "Language changed" ))); +}else{ + echo json_encode( array( "status" => "error", "data" => array( "message" => "Invalid request" ))); +} + +?> diff --git a/settings/index.php b/settings/index.php index 1a442eca811..e2a73a5d9f3 100644 --- a/settings/index.php +++ b/settings/index.php @@ -18,11 +18,18 @@ $free=OC_FILESYSTEM::free_space(); $total=$free+$used; $relative=round(($used/$total)*100); +$lang=OC_PREFERENCES::getValue( $_SESSION['user_id'], 'core', 'lang', 'en' ); +$languages=OC_L10N::findAvailableLanguages(); +//put the current language in the front +unset($languages[array_search($lang,$languages)]); +array_unshift($languages,$lang); + // Return template $tmpl = new OC_TEMPLATE( "settings", "index", "admin"); $tmpl->assign('usage',OC_HELPER::humanFileSize($used)); $tmpl->assign('total_space',OC_HELPER::humanFileSize($total)); $tmpl->assign('usage_relative',$relative); +$tmpl->assign('languages',$languages); $tmpl->printPage(); ?> diff --git a/settings/js/main.js b/settings/js/main.js index e05fc68743c..010225bcb27 100644 --- a/settings/js/main.js +++ b/settings/js/main.js @@ -18,4 +18,18 @@ $(document).ready(function(){ }); return false; }); + + $("#languageinput").change( function(){ + // Serialize the data + var post = $( "#languageinput" ).serialize(); + // Ajax foo + $.post( 'ajax/setlanguage.php', post, function(data){ + if( data.status == "success" ){ + } + else{ + $('#passworderror').html( data.data.message ); + } + }); + return false; + }); } ); diff --git a/settings/templates/index.php b/settings/templates/index.php index 2d5e9d9140f..f8ef9faf1d7 100644 --- a/settings/templates/index.php +++ b/settings/templates/index.php @@ -8,23 +8,35 @@
- Change Password -
You're password got changed
-
-

- - -

-

- - -

-

- - -

- + Change Password +
You're password got changed
+
+

+ + +

+

+ + +

+

+ + +

+ +
+
+ +
+
+ Language + +