diff options
Diffstat (limited to '')
-rw-r--r-- | wp-includes/l10n/class-wp-translation-file-php.php | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/wp-includes/l10n/class-wp-translation-file-php.php b/wp-includes/l10n/class-wp-translation-file-php.php new file mode 100644 index 0000000..f93dd01 --- /dev/null +++ b/wp-includes/l10n/class-wp-translation-file-php.php @@ -0,0 +1,79 @@ +<?php +/** + * I18N: WP_Translation_File_PHP class. + * + * @package WordPress + * @subpackage I18N + * @since 6.5.0 + */ + +/** + * Class WP_Translation_File_PHP. + * + * @since 6.5.0 + */ +class WP_Translation_File_PHP extends WP_Translation_File { + /** + * Parses the file. + * + * @since 6.5.0 + */ + protected function parse_file() { + $this->parsed = true; + + $result = include $this->file; + if ( ! $result || ! is_array( $result ) ) { + $this->error = 'Invalid data'; + return; + } + + if ( isset( $result['messages'] ) && is_array( $result['messages'] ) ) { + foreach ( $result['messages'] as $original => $translation ) { + $this->entries[ (string) $original ] = $translation; + } + unset( $result['messages'] ); + } + + $this->headers = array_change_key_case( $result ); + } + + /** + * Exports translation contents as a string. + * + * @since 6.5.0 + * + * @return string Translation file contents. + */ + public function export(): string { + $data = array_merge( $this->headers, array( 'messages' => $this->entries ) ); + + return '<?php' . PHP_EOL . 'return ' . $this->var_export( $data ) . ';' . PHP_EOL; + } + + /** + * Outputs or returns a parsable string representation of a variable. + * + * Like {@see var_export()} but "minified", using short array syntax + * and no newlines. + * + * @since 6.5.0 + * + * @param mixed $value The variable you want to export. + * @return string The variable representation. + */ + private function var_export( $value ): string { + if ( ! is_array( $value ) ) { + return var_export( $value, true ); + } + + $entries = array(); + + $is_list = array_is_list( $value ); + + foreach ( $value as $key => $val ) { + $entries[] = $is_list ? $this->var_export( $val ) : var_export( $key, true ) . '=>' . $this->var_export( $val ); + } + + return '[' . implode( ',', $entries ) . ']'; + } +} |