translate_settings_using_i18n_schema example


    protected static function translate( $theme_json$domain = 'default' ) {
        if ( null === static::$i18n_schema ) {
            $i18n_schema         = wp_json_file_decode( __DIR__ . '/theme-i18n.json' );
            static::$i18n_schema = null === $i18n_schema ? array() : $i18n_schema;
        }

        return translate_settings_using_i18n_schema( static::$i18n_schema$theme_json$domain );
    }

    /** * Returns core's origin config. * * @since 5.8.0 * * @return WP_Theme_JSON Entity that holds core data. */
    public static function get_core_data() {
        if ( null !== static::$core && static::has_same_registered_blocks( 'core' ) ) {
            
'styles'          => 'styles',
        'variations'      => 'variations',
        'example'         => 'example',
    );
    $textdomain        = ! empty( $metadata['textdomain'] ) ? $metadata['textdomain'] : null;
    $i18n_schema       = get_block_metadata_i18n_schema();

    foreach ( $property_mappings as $key => $mapped_key ) {
        if ( isset( $metadata[ $key ] ) ) {
            $settings[ $mapped_key ] = $metadata[ $key ];
            if ( $textdomain && isset( $i18n_schema->$key ) ) {
                $settings[ $mapped_key ] = translate_settings_using_i18n_schema( $i18n_schema->$key$settings[ $key ]$textdomain );
            }
        }
    }

    $script_fields = array(
        'editorScript' => 'editor_script_handles',
        'script'       => 'script_handles',
        'viewScript'   => 'view_script_handles',
    );
    foreach ( $script_fields as $metadata_field_name => $settings_field_name ) {
        if ( ! empty( $metadata[ $metadata_field_name ] ) ) {
            
function translate_settings_using_i18n_schema( $i18n_schema$settings$textdomain ) {
    if ( empty( $i18n_schema ) || empty( $settings ) || empty( $textdomain ) ) {
        return $settings;
    }

    if ( is_string( $i18n_schema ) && is_string( $settings ) ) {
        return translate_with_gettext_context( $settings$i18n_schema$textdomain );
    }
    if ( is_array( $i18n_schema ) && is_array( $settings ) ) {
        $translated_settings = array();
        foreach ( $settings as $value ) {
            $translated_settings[] = translate_settings_using_i18n_schema( $i18n_schema[0]$value$textdomain );
        }
        return $translated_settings;
    }
    if ( is_object( $i18n_schema ) && is_array( $settings ) ) {
        $group_key           = '*';
        $translated_settings = array();
        foreach ( $settings as $key => $value ) {
            if ( isset( $i18n_schema->$key ) ) {
                $translated_settings[ $key ] = translate_settings_using_i18n_schema( $i18n_schema->$key$value$textdomain );
            } elseif ( isset( $i18n_schema->$group_key ) ) {
                $translated_settings[ $key ] = translate_settings_using_i18n_schema( $i18n_schema->$group_key$value$textdomain );
            }
Home | Imprint | This part of the site doesn't use cookies.