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