diff --git a/application/config/internal.php b/application/config/internal.php index e63970104b6..f69c66de9f1 100644 --- a/application/config/internal.php +++ b/application/config/internal.php @@ -20,6 +20,7 @@ 'theme' => 'default', 'runtimePath' => __DIR__ . '/../runtime', 'name' => 'LimeSurvey', + 'localeClass' => 'LSYii_Locale', 'defaultController' => 'surveys', 'aliases' => array( 'vendor' => __DIR__ . '/../vendor', diff --git a/application/controllers/admin/questiongroups.php b/application/controllers/admin/questiongroups.php index b5d858196e5..4128f324eae 100644 --- a/application/controllers/admin/questiongroups.php +++ b/application/controllers/admin/questiongroups.php @@ -36,7 +36,7 @@ class questiongroups extends Survey_Common_Action function import() { $action = $_POST['action']; - $surveyid = $_POST['sid']; + $iSurveyID = (int)$_POST['sid']; if ($action == 'importgroup') { @@ -66,11 +66,11 @@ function import() // IF WE GOT THIS FAR, THEN THE FILE HAS BEEN UPLOADED SUCCESFULLY if (strtolower($sExtension) == 'lsg') - $aImportResults = XMLImportGroup($sFullFilepath, $surveyid); + $aImportResults = XMLImportGroup($sFullFilepath, $iSurveyID); else $this->getController()->error('Unknown file extension'); LimeExpressionManager::SetDirtyFlag(); // so refreshes syntax highlighting - fixLanguageConsistency($surveyid); + fixLanguageConsistency($iSurveyID); if (isset($aImportResults['fatalerror'])) { @@ -81,7 +81,7 @@ function import() unlink($sFullFilepath); $aData['display'] = $importgroup; - $aData['surveyid'] = $surveyid; + $aData['surveyid'] = $iSurveyID; $aData['aImportResults'] = $aImportResults; $aData['sExtension'] = $sExtension; //$aData['display']['menu_bars']['surveysummary'] = 'importgroup'; diff --git a/application/core/LSYii_Locale.php b/application/core/LSYii_Locale.php new file mode 100644 index 00000000000..0be6626a5da --- /dev/null +++ b/application/core/LSYii_Locale.php @@ -0,0 +1,38 @@ +db->createCommand($query)->queryScalar(); + $iGroupOrder = Yii::app()->db->createCommand()->select('MAX(group_order)')->from('{{groups}}')->where('sid=:sid',array(':sid'=>$iNewSID))->queryScalar(); if ($iGroupOrder === false) { $iNewGroupOrder=0; diff --git a/application/helpers/surveytranslator_helper.php b/application/helpers/surveytranslator_helper.php index 60155b50b9d..f744c161a76 100644 --- a/application/helpers/surveytranslator_helper.php +++ b/application/helpers/surveytranslator_helper.php @@ -134,6 +134,7 @@ function getLanguageData($bOrderByNative=false,$sLanguageCode='en') { $supportedLanguages['ca-valencia']['rtl'] = false; $supportedLanguages['ca-valencia']['dateformat'] = 1; $supportedLanguages['ca-valencia']['radixpoint'] = 1; + $supportedLanguages['ca-valencia']['cldr'] = 'ca'; // Catalan $supportedLanguages['ca']['description'] = gT('Catalan'); @@ -190,6 +191,7 @@ function getLanguageData($bOrderByNative=false,$sLanguageCode='en') { $supportedLanguages['cs-informal']['rtl'] = false; $supportedLanguages['cs-informal']['dateformat'] = 4; $supportedLanguages['cs-informal']['radixpoint'] = 1; + $supportedLanguages['cs-informal']['cldr'] = 'cs'; // Danish @@ -205,6 +207,7 @@ function getLanguageData($bOrderByNative=false,$sLanguageCode='en') { $supportedLanguages['prs']['rtl'] = true; $supportedLanguages['prs']['dateformat'] = 6; $supportedLanguages['prs']['radixpoint'] = 0; + $supportedLanguages['prs']['cldr'] = 'fa_af'; // Dutch $supportedLanguages['nl']['description'] = gT('Dutch'); @@ -219,6 +222,7 @@ function getLanguageData($bOrderByNative=false,$sLanguageCode='en') { $supportedLanguages['nl-informal']['rtl'] = false; $supportedLanguages['nl-informal']['dateformat'] = 2; $supportedLanguages['nl-informal']['radixpoint'] = 1; + $supportedLanguages['nl-informal']['cldr'] = 'nl'; // English $supportedLanguages['en']['description'] = gT('English'); @@ -283,6 +287,7 @@ function getLanguageData($bOrderByNative=false,$sLanguageCode='en') { $supportedLanguages['de-informal']['rtl'] = false; $supportedLanguages['de-informal']['dateformat'] = 1; $supportedLanguages['de-informal']['radixpoint'] = 1; + $supportedLanguages['de-informal']['cldr'] = 'de'; // Gujarati $supportedLanguages['gu']['description'] = gT('Gujarati'); @@ -354,6 +359,7 @@ function getLanguageData($bOrderByNative=false,$sLanguageCode='en') { $supportedLanguages['it-informal']['rtl'] = false; $supportedLanguages['it-informal']['dateformat'] = 5; $supportedLanguages['it-informal']['radixpoint'] = 1; + $supportedLanguages['it-informal']['cldr'] = 'it'; // Japanese $supportedLanguages['ja']['description'] = gT('Japanese'); @@ -389,6 +395,7 @@ function getLanguageData($bOrderByNative=false,$sLanguageCode='en') { $supportedLanguages['ckb']['rtl'] = true; $supportedLanguages['ckb']['dateformat'] = 1; $supportedLanguages['ckb']['radixpoint'] = 1; + $supportedLanguages['ckb']['cldr'] = 'ku'; // Kyrgyz $supportedLanguages['ky']['description'] = gT('Kyrgyz'); @@ -487,13 +494,15 @@ function getLanguageData($bOrderByNative=false,$sLanguageCode='en') { $supportedLanguages['pap-AW']['rtl'] = false; $supportedLanguages['pap-AW']['dateformat'] = 2; $supportedLanguages['pap-AW']['radixpoint'] = 1; + $supportedLanguages['pap-AW']['cldr'] = 'en'; // Fix me - Yii does not provice Papiamento support, yet - // Papiamento (Curaçao and Bonaire) + // Papiamento (Curaçao and Bonaire) $supportedLanguages['pap-CW']['description'] = gT('Papiamento (Curaçao and Bonaire)'); $supportedLanguages['pap-CW']['nativedescription'] = 'Papiamentu'; $supportedLanguages['pap-CW']['rtl'] = false; $supportedLanguages['pap-CW']['dateformat'] = 2; $supportedLanguages['pap-CW']['radixpoint'] = 1; + $supportedLanguages['pap-CW']['cldr'] = 'en'; // Fix me - Yii does not provice Papiamento support, yet // Polish $supportedLanguages['pl']['description'] = gT('Polish'); @@ -508,6 +517,7 @@ function getLanguageData($bOrderByNative=false,$sLanguageCode='en') { $supportedLanguages['pl-informal']['rtl'] = false; $supportedLanguages['pl-informal']['dateformat'] = 1; $supportedLanguages['pl-informal']['radixpoint'] = 1; + $supportedLanguages['pl-informal']['cldr'] = 'pl'; // Portuguese $supportedLanguages['pt']['description'] = gT('Portuguese'); @@ -599,6 +609,7 @@ function getLanguageData($bOrderByNative=false,$sLanguageCode='en') { $supportedLanguages['es-AR-informal']['rtl'] = false; $supportedLanguages['es-AR-informal']['dateformat'] = 5; $supportedLanguages['es-AR-informal']['radixpoint'] = 0; + $supportedLanguages['es-AR-informal']['cldr'] = 'es-AR'; // Spanish (Chile) $supportedLanguages['es-CL']['description'] = gT('Spanish (Chile)'); @@ -940,6 +951,18 @@ function getLanguageDetails($codetosearch) } } + /** + * This functions translates LimeSurvey specific locale code to match a Yii locale + * + * @param mixed $sLocale LimeSurvey locale code + */ + function translateLStoYiiLocale($sLocale) + { + // Strip informal string + $sLocale=str_replace('-informal','',$sLocale); + return $sLocale; + } + function getLanguageDataRestricted($bOrderByNative=false,$sLanguageCode='en') { $aLanguageData = getLanguageData($bOrderByNative, $sLanguageCode); $result = [];