26         $this->defaultPath = dirname(dirname(dirname(dirname(__DIR__)))) . 
"/languages/";
 
   43         static $CURRENT_LANGUAGE;
 
   46         if (!is_array(
$args)) {
 
   48                 'As of Elgg 1.8, the 2nd arg to elgg_echo() is an array of string replacements and the 3rd arg is the language.',
 
   56         if (!isset($this->CONFIG->translations)) {
 
   61         if (!$CURRENT_LANGUAGE) {
 
   68         if (!isset($this->CONFIG->translations[
$language])) {
 
   76         if (isset($this->CONFIG->translations[
$language][$message_key])) {
 
   78         } 
else if (isset($this->CONFIG->translations[
"en"][$message_key])) {
 
   79             $string = $this->CONFIG->translations[
"en"][$message_key];
 
   80             _elgg_services()->logger->notice(sprintf(
'Missing %s translation for "%s" language key', 
$language, $message_key));
 
   83             _elgg_services()->logger->notice(sprintf(
'Missing English translation for "%s" language key', $message_key));
 
  110         if (!isset($this->CONFIG->translations)) {
 
  111             $this->CONFIG->translations = array();
 
  114         $country_code = strtolower($country_code);
 
  115         $country_code = trim($country_code);
 
  116         if (is_array($language_array) && $country_code != 
"") {
 
  117             if (
sizeof($language_array) > 0) { 
 
  118                 if (!isset($this->CONFIG->translations[$country_code])) {
 
  119                     $this->CONFIG->translations[$country_code] = $language_array;
 
  121                     $this->CONFIG->translations[$country_code] = $language_array + $this->CONFIG->translations[$country_code];
 
  162         if ((!
$language) && (isset($this->CONFIG->language)) && ($this->CONFIG->language)) {
 
  179         if ($this->CONFIG->system_cache_enabled) {
 
  192                 $this->CONFIG->i18n_loaded_from_cache = 
true;
 
  194                 $this->CONFIG->language_paths[$this->defaultPath] = 
true;
 
  218         if (!isset($this->CONFIG->language_paths)) {
 
  219             $this->CONFIG->language_paths = array();
 
  221         $this->CONFIG->language_paths[
$path] = 
true;
 
  225         _elgg_services()->logger->info(
"Translations loaded from: $path");
 
  228         $load_language_files = array(
 
  230             "$current_language.php" 
  233         $load_language_files = array_unique($load_language_files);
 
  235         $handle = opendir(
$path);
 
  237             _elgg_services()->logger->error(
"Could not open language path: $path");
 
  242         while (
false !== (
$language = readdir($handle))) {
 
  248             if (in_array(
$language, $load_language_files) || $load_all) {
 
  274         static $LANG_RELOAD_ALL_RUN;
 
  275         if ($LANG_RELOAD_ALL_RUN) {
 
  279         if ($this->CONFIG->i18n_loaded_from_cache) {
 
  281             $cache_dir = $cache->getVariable(
"cache_path");
 
  287                 if (preg_match(
'/(([a-z]{2,3})(_[a-z]{2})?)\.lang$/', 
$filename, $matches)) {
 
  296             foreach ($this->CONFIG->language_paths as 
$path => $dummy) {
 
  301         $LANG_RELOAD_ALL_RUN = 
true;
 
  316         $installed = array();
 
  320         foreach ($this->CONFIG->translations as $k => $v) {
 
  321             $installed[$k] = $this->
translate($k, array(), $k);
 
  322             if ($admin_logged_in && ($k != 
'en')) {
 
  324                 if ($completeness < 100) {
 
  325                     $installed[$k] .= 
" (" . $completeness . 
"% " . $this->
translate(
'complete') . 
")";
 
  348         $en = count($this->CONFIG->translations[
'en']);
 
  352             $missing = count($missing);
 
  358         $lang = $en - $missing;
 
  360         return round((
$lang / $en) * 100, 2);
 
  379         foreach ($this->CONFIG->translations[
'en'] as $k => $v) {
 
  380             if ((!isset($this->CONFIG->translations[
$language][$k]))
 
  381             || ($this->CONFIG->translations[
$language][$k] == $this->CONFIG->translations[
'en'][$k])) {
 
  386         if (count($missing)) {
 
  407         if ((
$language !== 
'en') && !array_key_exists(
$language, $this->CONFIG->translations)) {
 
  412         if (!array_key_exists(
$language, $this->CONFIG->translations)) {
 
  416         return array_key_exists(
$key, $this->CONFIG->translations[
$language]);
 
  585         $code = preg_replace(
'~[^a-z0-9]~', 
'_', 
$code);
 
elgg_load_system_cache($type)
Retrieve the contents of a system cache.
 
elgg_get_system_cache()
Returns an \ElggCache object suitable for caching system information.
 
static normalizeLanguageCode($code)
Normalize a language code (e.g.
 
__construct()
Initializes new translator.
 
languageKeyExists($key, $language='en')
Check if a give language key exists.
 
static getAllLanguageCodes()
Returns an array of language codes.
 
getCurrentLanguage()
Detect the current language being used by the current site or logged in user.
 
getInstalledTranslations()
Return an array of installed translations as an associative array "two letter code" => "native langua...
 
reloadAllTranslations()
Reload all translations from all registered paths.
 
addTranslation($country_code, $language_array)
Add a translation.
 
translate($message_key, $args=array(), $language="")
Given a message key, returns an appropriately translated full-text string.
 
getLanguageCompleteness($language)
Return the level of completeness for a given language code (compared to english)
 
loadTranslations()
@access private
 
getLanguage()
Gets the current language in use by the system or user.
 
registerTranslations($path, $load_all=false)
When given a full path, finds translation files and loads them.
 
getMissingLanguageKeys($language)
Return the translation keys missing from a given language, or those that are identical to the english...
 
sanitise_filepath($path, $append_slash=true)
Sanitise file paths ensuring that they begin and end with slashes etc.
 
elgg_get_file_list($directory, $exceptions=array(), $list=array(), $extensions=null)
Returns a list of files in $directory.
 
elgg_deprecated_notice($msg, $dep_version, $backtrace_level=1)
Log a notice about deprecated use of a function, view, etc.
 
sanitise_string($string)
Wrapper function for alternate English spelling (.
 
_elgg_load_translations_for_language($language)
Load both core and plugin translations for a specific language.
 
$args
Some servers don't allow PHP to check the rewrite, so try via AJAX.