1<?php 2/** 3 * Elgg language module 4 * Functions to manage language and translations. 5 */ 6 7/** 8 * Given a message key, returns an appropriately translated full-text string 9 * 10 * @param string $message_key The short message code 11 * @param array $args An array of arguments to pass through vsprintf(). 12 * @param string $language Optionally, the standard language code 13 * (defaults to site/user default, then English) 14 * 15 * @return string Either the translated string, the English string, 16 * or the original language string. 17 */ 18function elgg_echo($message_key, array $args = [], $language = "") { 19 return elgg()->echo($message_key, $args, $language); 20} 21 22/** 23 * Add a translation. 24 * 25 * Translations are arrays in the Zend Translation array format, eg: 26 * 27 * $english = array('message1' => 'message1', 'message2' => 'message2'); 28 * $german = array('message1' => 'Nachricht1','message2' => 'Nachricht2'); 29 * 30 * @param string $country_code Standard country code (eg 'en', 'nl', 'es') 31 * @param array $language_array Formatted array of strings 32 * 33 * @return bool Depending on success 34 */ 35function add_translation($country_code, $language_array) { 36 return elgg()->translator->addTranslation($country_code, $language_array); 37} 38 39/** 40 * Get the current system/user language or "en". 41 * 42 * @return string The language code for the site/user or "en" if not set 43 */ 44function get_current_language() { 45 return elgg()->translator->getCurrentLanguage(); 46} 47 48/** 49 * Return an array of installed translations as an associative 50 * array "two letter code" => "native language name". 51 * 52 * @param boolean $calculate_completeness Set to true if you want a completeness postfix added to the language text 53 * 54 * @return array 55 */ 56function get_installed_translations($calculate_completeness = false) { 57 return elgg()->translator->getInstalledTranslations($calculate_completeness); 58} 59 60/** 61 * Return the level of completeness for a given language code (compared to english) 62 * 63 * @param string $language Language 64 * 65 * @return int 66 */ 67function get_language_completeness($language) { 68 return elgg()->translator->getLanguageCompleteness($language); 69} 70 71/** 72 * Check if a given language key exists. 73 * 74 * @note Translators should, whenever creating a "dynamically" named language key, always create an 75 * English (fallback) translation as well. 76 * 77 * @param string $key The translation key 78 * @param string $language The language. Provided an English translation exists for all created keys, then 79 * devs can generally use the default "en", regardless of the site/user language. 80 * 81 * @return bool 82 * @since 1.11 83 */ 84function elgg_language_key_exists($key, $language = 'en') { 85 return elgg()->translator->languageKeyExists($key, $language); 86} 87 88/** 89 * Returns an array of available languages 90 * 91 * @return array 92 * @since 3.0 93 */ 94function elgg_get_available_languages() { 95 return elgg()->translator->getAvailableLanguages(); 96} 97