__('Use WordPress language', 'ait-multilingual-translate'), 'en_US' => __('English', 'ait-multilingual-translate'), 'ru_RU' => __('Russian', 'ait-multilingual-translate'), 'ka_GE' => __('Georgian', 'ait-multilingual-translate'), ); } public static function sanitize($locale) { $locale = sanitize_text_field((string) $locale); return array_key_exists($locale, self::raw_choices()) ? $locale : 'auto'; } public static function selected() { $options = get_option('aitmt_options', array()); $options = is_array($options) ? $options : array(); return self::sanitize(isset($options['interface_language']) ? $options['interface_language'] : 'auto'); } public static function filter_locale($locale, $domain) { if (self::DOMAIN !== (string) $domain) { return $locale; } $selected = self::selected(); return 'auto' === $selected ? $locale : $selected; } public static function load() { $selected = self::selected(); if ('auto' === $selected || 'en_US' === $selected) { return; } $mofile = trailingslashit(AITMT_PLUGIN_DIR) . 'languages/' . self::DOMAIN . '-' . $selected . '.mo'; if (!is_readable($mofile)) { return; } unload_textdomain(self::DOMAIN); load_textdomain(self::DOMAIN, $mofile); } public static function is_rtl() { $base = strtolower(substr(str_replace('-', '_', self::selected()), 0, 2)); return in_array($base, array('ar', 'he', 'fa', 'ur'), true); } private static function raw_choices() { return array( 'auto' => true, 'en_US' => true, 'ru_RU' => true, 'ka_GE' => true, ); } }