enableMultilingual(); CRM_Core_I18n_Schema::addLocale('fr_CA', 'en_US'); CRM_Core_I18n::singleton()->setLocale('fr_CA'); $locale = CRM_Core_I18n::getLocale(); $this->assertEquals($locale, 'fr_CA'); CRM_Core_I18n::singleton()->setLocale('en_US'); CRM_Core_I18n_Schema::makeSinglelingual('en_US'); Civi::$statics['CRM_Core_I18n']['singleton'] = []; } public function testUiLanguages() { $languages = [ 'en_US' => 'English (United States)', 'fr_CA' => 'French (Canada)', 'de_DE' => 'German', ]; $codes = array_keys($languages); Civi::settings()->set('uiLanguages', $codes); // Check we can retrieve the setting $result = Civi::settings()->get('uiLanguages'); $this->assertEquals($codes, $result); // Monolingual, codes $result = CRM_Core_I18n::uiLanguages(TRUE); $this->assertArrayValuesEqual($codes, $result); // Monolingual, codes and language labels $result = CRM_Core_I18n::uiLanguages(); $this->assertTreeEquals($languages, $result); $this->enableMultilingual(); // Add fr_CA in db CRM_Core_I18n_Schema::addLocale('fr_CA', 'en_US'); // Make fr_CA 'available' Civi::settings()->set('languageLimit', ['en_US' => 1, 'fr_CA' => 1]); // Multilingual, codes $result = CRM_Core_I18n::uiLanguages(TRUE); $this->assertArrayValuesEqual(['en_US', 'fr_CA'], $result); // Multilingual, codes and language labels $result = CRM_Core_I18n::uiLanguages(); $this->assertTreeEquals([ 'en_US' => 'English (United States)', 'fr_CA' => 'French (Canada)', ], $result); CRM_Core_I18n::singleton()->setLocale('en_US'); CRM_Core_I18n_Schema::makeSinglelingual('en_US'); Civi::$statics['CRM_Core_I18n']['singleton'] = []; } }