Changeset 3142013
- Timestamp:
- 08/27/2024 04:13:59 AM (7 months ago)
- Location:
- fluentc-translation/trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
fluentc-translation/trunk/fluentc_wordpress_plugin.php
r3140944 r3142013 7 7 * Plugin URI: https://github.com/fluentc/wordpress-plugin 8 8 * Description: A plugin that enables website owners to easily install the FluentC Translation on their WordPress site. 9 * Version: 1.7 9 * Version: 1.7.1 10 10 * Author: FluentC 11 11 * Author URI: https://www.fluentc.ai … … 17 17 define( 'FLUENTC_DIR', __DIR__ ); 18 18 define( 'FLUENTC_SLUG', 'fluentc_translation' ); 19 define( 'FLUENTC_TRANSLATION_VERSION', "1.7 " );19 define( 'FLUENTC_TRANSLATION_VERSION', "1.7.1" ); 20 20 define( 'FLUENTC_TRANSLATION_PLUGIN_DIR', plugin_dir_path(__FILE__) ); 21 21 define( 'FLUENTC_TRANSLATION_PLUGIN_URL', plugin_dir_url(__FILE__) ); -
fluentc-translation/trunk/readme.txt
r3140944 r3142013 5 5 Requires at least: 4.6 6 6 Tested up to: 6.6.1 7 Stable tag: 1.7 7 Stable tag: 1.7.1 8 8 Requires PHP: 7.3 9 9 License: GPLv2 or later -
fluentc-translation/trunk/src/services/class-fluentc-translations.php
r3140944 r3142013 33 33 34 34 private function get_paginated_translations($offset, $limit) { 35 $fluentc_cache = new \FluentC\Services\Cache(); 36 $all_transients = $fluentc_cache->get_fluentc_transients(); 37 35 global $wpdb; 38 36 $translations = []; 39 37 $count = 0; 40 $processed_ids = []; // Now an associative array 41 42 foreach ($all_transients as $transient_name => $transient_data) { 38 39 $sql = "SELECT option_name, option_value 40 FROM {$wpdb->options} 41 WHERE option_name LIKE '_transient_fluentc%' 42 LIMIT %d OFFSET %d"; 43 44 $results = $wpdb->get_results($wpdb->prepare($sql, $limit, $offset), ARRAY_A); 45 46 foreach ($results as $result) { 47 $transient_name = str_replace('_transient_', '', $result['option_name']); 48 $transient_data = $result['option_value']; 49 43 50 if (is_string($transient_data)) { 44 51 $data = json_decode($transient_data, true); 45 52 if (json_last_error() === JSON_ERROR_NONE && isset($data['data']['translateSite']['body'])) { 46 47 $originalText = html_entity_decode($data['data']['translateSite']['body']['originalText'], ENT_QUOTES | ENT_XML1, 'UTF-8'); 48 $translatedText = html_entity_decode($data['data']['translateSite']['body']['translatedText'], ENT_QUOTES | ENT_XML1, 'UTF-8'); 53 $body = $data['data']['translateSite']['body']; 49 54 50 // Generate a unique identifier for this translation 51 $unique_id = md5($transient_name . $originalText . $translatedText); 52 53 // Check if we've processed this unique translation before 54 if ($originalText !== $translatedText && !isset($processed_ids[$unique_id])) { 55 if ($count >= $offset && count($translations) < $limit) { 55 // Check if body is a single translation or an array of translations 56 if (isset($body['originalText'])) { 57 $body = [$body]; // Convert single translation to array 58 } 59 60 foreach ($body as $translation) { 61 $originalText = html_entity_decode($translation['originalText'], ENT_QUOTES | ENT_XML1, 'UTF-8'); 62 $translatedText = html_entity_decode($translation['translatedText'], ENT_QUOTES | ENT_XML1, 'UTF-8'); 63 64 if ($originalText !== $translatedText) { 56 65 $translations[] = [ 57 66 'id' => $transient_name, 58 'sourceLanguage' => $ data['data']['translateSite']['body']['sourceLanguage'],59 'targetLanguage' => $ data['data']['translateSite']['body']['targetLanguage'],67 'sourceLanguage' => $translation['sourceLanguage'], 68 'targetLanguage' => $translation['targetLanguage'], 60 69 'originalText' => $originalText, 61 70 'translatedText' => $translatedText 62 71 ]; 72 $count++; 73 74 if (count($translations) >= $limit) { 75 break 2; // Exit both loops if we've reached the limit 76 } 63 77 } 78 } 79 } 80 } 81 } 82 83 return $translations; 84 } 85 86 private function get_total_translations_count() { 87 global $wpdb; 88 $count = 0; 89 90 $sql = "SELECT option_value 91 FROM {$wpdb->options} 92 WHERE option_name LIKE '_transient_fluentc%'"; 93 94 $results = $wpdb->get_col($sql); 95 96 foreach ($results as $transient_data) { 97 $data = json_decode($transient_data, true); 98 if (json_last_error() === JSON_ERROR_NONE && isset($data['data']['translateSite']['body'])) { 99 $body = $data['data']['translateSite']['body']; 100 101 // Check if body is a single translation or an array of translations 102 if (isset($body['originalText'])) { 103 $body = [$body]; // Convert single translation to array 104 } 105 106 foreach ($body as $translation) { 107 $originalText = html_entity_decode($translation['originalText'], ENT_QUOTES | ENT_XML1, 'UTF-8'); 108 $translatedText = html_entity_decode($translation['translatedText'], ENT_QUOTES | ENT_XML1, 'UTF-8'); 109 110 if ($originalText !== $translatedText) { 64 111 $count++; 65 $processed_ids[$unique_id] = true; // Mark this translation as processed66 67 112 } 68 113 } 69 114 } 70 } 71 } 72 73 return $translations; 74 } 75 76 private function get_total_translations_count() { 77 $fluentc_cache = new \FluentC\Services\Cache(); 78 $all_transients = $fluentc_cache->get_fluentc_transients(); 79 80 $count = 0; 81 $processed_ids = []; // Now an associative array. 82 foreach ($all_transients as $transient_name => $transient_data) { 83 if (is_string($transient_data)) { 84 $data = json_decode($transient_data, true); 85 if (json_last_error() === JSON_ERROR_NONE && isset($data['data']['translateSite']['body'])) { 86 87 $originalText = html_entity_decode($data['data']['translateSite']['body']['originalText'], ENT_QUOTES | ENT_XML1, 'UTF-8'); 88 $translatedText = html_entity_decode($data['data']['translateSite']['body']['translatedText'], ENT_QUOTES | ENT_XML1, 'UTF-8'); 89 90 $unique_id = md5($transient_name . $originalText . $translatedText); 91 92 if ($originalText !== $translatedText && !isset($processed_ids[$unique_id])) { 93 $count++; 94 $processed_ids[$unique_id] = true; 95 } 96 97 } 98 } 99 } 115 } 116 100 117 return $count; 101 118 }
Note: See TracChangeset
for help on using the changeset viewer.