Automattic\WooCommerce\Internal\Admin

Translations::combine_user_translation_chunks()privateWC 1.0

Combines data from translation chunk files based on user-generated file formats, such as wp-cli tool or Loco Translate plugin.

Метод класса: Translations{}

Хуков нет.

Возвращает

Массив. Combined translation chunk data.

Использование

// private - только в коде основоного (родительского) класса
$result = $this->combine_user_translation_chunks( $json_i18n_filenames );
$json_i18n_filenames(массив) (обязательный)
List of JSON chunk files.

Код Translations::combine_user_translation_chunks() WC 8.1.1

private function combine_user_translation_chunks( $json_i18n_filenames ) {
	// the filesystem object should be hooked up.
	global $wp_filesystem;
	$combined_translation_data = array();

	foreach ( $json_i18n_filenames as $json_filename ) {
		if ( ! $wp_filesystem->is_readable( $json_filename ) ) {
			continue;
		}

		$file_contents = $wp_filesystem->get_contents( $json_filename );
		$chunk_data    = \json_decode( $file_contents, true );

		if ( empty( $chunk_data ) ) {
			continue;
		}

		$reference_file = $chunk_data['source'];

		// Only combine "app" files (not scripts registered with WP).
		if (
			false === strpos( $reference_file, WC_ADMIN_DIST_JS_FOLDER . 'app/index.js' ) &&
			false === strpos( $reference_file, WC_ADMIN_DIST_JS_FOLDER . 'chunks/' )
		) {
			continue;
		}

		if ( empty( $combined_translation_data ) ) {
			// Use the first translation file as the base structure.
			$combined_translation_data = $chunk_data;
		} else {
			// Combine all messages from all chunk files.
			$combined_translation_data['locale_data']['woocommerce'] = array_merge(
				$combined_translation_data['locale_data']['woocommerce'],
				$chunk_data['locale_data']['woocommerce']
			);
		}
	}

	// Remove inaccurate reference comment.
	unset( $combined_translation_data['source'] );
	return $combined_translation_data;
}