* @since 5.0.0 */ namespace Beyondwords\Wordpress\Component\Settings\Fields\Language; use Beyondwords\Wordpress\Component\Settings\Sync; use Beyondwords\Wordpress\Core\ApiClient; /** * Language * * @since 5.0.0 */ defined('ABSPATH') || exit; class Language { /** * Option name. */ public const OPTION_NAME_CODE = 'beyondwords_project_language_code'; /** * Constructor * * @since 5.0.0 * @since 6.0.0 Make static. */ public static function init() { add_action('admin_init', [self::class, 'addSetting']); add_action('pre_update_option_' . self::OPTION_NAME_CODE, function ($value) { Sync::syncOptionToDashboard(self::OPTION_NAME_CODE); return $value; }); } /** * Add setting. * * @since 5.0.0 * @since 6.0.0 Make static. * * @return void */ public static function addSetting() { add_settings_field( 'beyondwords-default-language', __('Language', 'speechkit'), [self::class, 'render'], 'beyondwords_voices', 'voices' ); } /** * Render setting field. * * @since 5.0.0 * @since 6.0.0 Make static. * * @return void **/ public static function render() { $options = self::getOptions(); $current = get_option(self::OPTION_NAME_CODE); ?>

element. * * @since 5.0.0 * @since 6.0.0 Make static. * * @return string[] Array of options (value, label). **/ public static function getOptions() { $languages = ApiClient::getLanguages(); if (! is_array($languages)) { $languages = []; } return array_map(function ($language) { $label = $language['name']; if (isset($language['accent'])) { $label .= ' (' . $language['accent'] . ')'; } return [ 'value' => $language['code'], 'label' => $label, 'voices' => wp_json_encode($language['default_voices']), ]; }, $languages); } }