first commit

This commit is contained in:
2023-09-12 21:41:04 +02:00
commit 3361a7f053
13284 changed files with 2116755 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
<?php
class WPML_PO_Import_Strings_Scripts {
public function __construct() {
$this->init();
}
public function init() {
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
}
public function enqueue_scripts( $page_hook ) {
if ( WPML_ST_FOLDER . '/menu/string-translation.php' === $page_hook ) {
wp_enqueue_script( 'wpml-st-strings-json-import-po', WPML_ST_URL . '/res/js/strings_json_import_po.js', array( 'jquery' ), WPML_ST_VERSION );
}
}
}

View File

@@ -0,0 +1,79 @@
<?php
class WPML_PO_Import_Strings {
const NONCE_NAME = 'wpml-po-import-strings';
private $errors;
public function maybe_import_po_add_strings() {
if ( array_key_exists( 'icl_po_upload', $_POST ) && wp_verify_nonce( $_POST[ '_wpnonce' ], 'icl_po_form' ) ) {
add_filter( 'wpml_st_get_po_importer', array( $this, 'import_po' ) );
} elseif ( array_key_exists( 'action', $_POST ) && 'icl_st_save_strings' === $_POST[ 'action' ] ) {
$this->add_strings();
}
}
/**
* @return null|WPML_PO_Import
*/
public function import_po() {
if ( $_FILES[ 'icl_po_file' ][ 'size' ] === 0 ) {
$this->errors = esc_html__( 'File upload error', 'wpml-string-translation' );
return null;
} else {
$po_importer = new WPML_PO_Import( $_FILES[ 'icl_po_file' ][ 'tmp_name' ] );
$this->errors = $po_importer->get_errors();
return $po_importer;
}
}
/**
* @return string
*/
public function get_errors() {
return $this->errors;
}
private function add_strings() {
$strings = json_decode( $_POST['strings_json'] );
foreach ( $strings as $k => $string ) {
$original = filter_var( $string->original, FILTER_SANITIZE_STRING );
$context = filter_var( $string->context, FILTER_SANITIZE_STRING );
$string->original = str_replace( '\n', "\n", $original );
$name = isset( $string->name )
? filter_var( $string->name, FILTER_SANITIZE_STRING ) : md5( $original );
$string_id = icl_register_string( array(
'domain' => filter_var( $_POST['icl_st_domain_name'], FILTER_SANITIZE_STRING ),
'context' => $context
),
$name,
$original
);
$this->maybe_add_translation( $string_id, $string );
}
}
/**
* @param string $string_id
* @param \stdClass $string
*/
private function maybe_add_translation( $string_id, $string ) {
if ( $string_id && array_key_exists( 'icl_st_po_language', $_POST ) ) {
if ( $string->translation !== '' ) {
$status = ICL_TM_COMPLETE;
if ( $string->fuzzy ) {
$status = ICL_TM_NOT_TRANSLATED;
}
$translation = str_replace('\n', "\n", $string->translation );
icl_add_string_translation( $string_id, $_POST[ 'icl_st_po_language' ], $translation, $status );
icl_update_string_status( $string_id );
}
}
}
}