|
<?php |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class WP_Translation_File_PHP extends WP_Translation_File { |
|
|
|
|
|
|
|
|
|
|
|
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 ); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function export(): string { |
|
$data = array_merge( $this->headers, array( 'messages' => $this->entries ) ); |
|
|
|
return '<?php' . PHP_EOL . 'return ' . $this->var_export( $data ) . ';' . PHP_EOL; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 ) . ']'; |
|
} |
|
} |
|
|