/**
 * Adds a language with the default locale, name and direction.
 *
 * @param string $language_code ISO 639 or locale code
 * @param int $language_order language order [optional]
 * @param int &$error_code the error code, or 0 if the operation is successful
 * @return bool true if the language has been added; false if an error has occured
 */
function pll_add_language($language_code, $language_order = 0, &$error_code = 0)
{
    global $polylang;
    $adminModel = new PLL_Admin_Model($polylang->options);
    $info = pll_get_default_language_information($language_code);
    $args = array(name => $info['name'], slug => $info['code'], locale => $info['locale'], rtl => $info['rtl'] ? 1 : 0, term_group => $language_order);
    $error_code = $adminModel->add_language($args);
    return $error_code !== 0;
}
 /**
  * Adds, gets information about or removes a language
  *
  * ## OPTIONS
  *
  * <operation>
  * : the language operation (add, info, del)
  *
  * <language-code>
  * : the language code
  *
  * <order>
  * : for add operation, indicates the order of the language
  *
  * ## EXAMPLES
  *
  *   wp polylang language add fr
  *   wp polylang language add nl 2
  *   wp polylang language info vec
  *   wp polylang language del vec
  *
  * @synopsis <operation> <language-code> [<order>]
  * @alias lang
  */
 function language($args, $assocArgs)
 {
     $language_code = $args[1];
     $language_order = count($args) == 3 ? $args[2] : 0;
     $language_info = pll_get_default_language_information($language_code);
     if ($language_info === null) {
         WP_CLI::error("{$language_code} isn't a valid language code.");
         return;
     }
     $language_installed = pll_is_language_installed($language_code);
     switch ($args[0]) {
         case 'info':
             WP_CLI::line('Code:      ' . $language_info['code']);
             WP_CLI::line('Locale     ' . $language_info['locale']);
             WP_CLI::line('Name:      ' . $language_info['name']);
             WP_CLI::line('RTL:       ' . ($language_info['rtl'] ? 'yes' : 'no'));
             WP_CLI::line('Installed: ' . ($language_installed ? 'yes' : 'no'));
             break;
         case 'add':
             if ($language_installed) {
                 WP_CLI::warning("This language is already installed.");
                 return;
             }
             if (pll_add_language($language_code, $language_order, $error_code)) {
                 WP_CLI::success("Language added.");
                 return;
             }
             WP_CLI::error("Can't add the language.");
             break;
         case 'del':
             if (!$language_installed) {
                 WP_CLI::warning("This language isn't installed.");
                 return;
             }
             WP_CLI::error("Not implemented: del language");
             break;
         default:
             WP_CLI::error("Unknown command: polylang language {$args['0']}. Expected: add/del/info.");
     }
 }