Plugin Directory

Changeset 3147335


Ignore:
Timestamp:
09/06/2024 04:04:59 AM (7 months ago)
Author:
mvpis
Message:

Performance improvements and greater support for more languages

Location:
fluentc-translation
Files:
363 added
9 edited

Legend:

Unmodified
Added
Removed
  • fluentc-translation/trunk/fluentc_wordpress_plugin.php

    r3144460 r3147335  
    77 * Plugin URI: https://github.com/fluentc/wordpress-plugin
    88 * Description: A plugin that enables website owners to easily install the FluentC Translation on their WordPress site.
    9  * Version: 1.7.2
     9 * Version: 1.7.3
    1010 * Author: FluentC
    1111 * Author URI: https://www.fluentc.ai
     
    1717define( 'FLUENTC_DIR', __DIR__ );
    1818define( 'FLUENTC_SLUG', 'fluentc_translation' );
    19 define( 'FLUENTC_TRANSLATION_VERSION', "1.7.1" );
     19define( 'FLUENTC_TRANSLATION_VERSION', "1.7.3" );
    2020define( 'FLUENTC_TRANSLATION_PLUGIN_DIR', plugin_dir_path(__FILE__) );
    2121define( 'FLUENTC_TRANSLATION_PLUGIN_URL', plugin_dir_url(__FILE__) );
  • fluentc-translation/trunk/readme.txt

    r3144460 r3147335  
    55Requires at least: 4.6
    66Tested up to: 6.6.1
    7 Stable tag: 1.7.2
     7Stable tag: 1.7.3
    88Requires PHP: 7.3
    99License: GPLv2 or later
  • fluentc-translation/trunk/src/actions/class-aioseo.php

    r3144460 r3147335  
    7474        $language_code = $this->fluentc_language->get_fluentc_language();
    7575        $widgetapikey  = get_option( 'fluentc_api_key' );
    76         $site_language = get_bloginfo( 'language' );
     76        $site_language = $this->fluentc_language->fluentc_site_language();
    7777        if ( $language_code ) {
    7878            // If language code is set, modify the output accordingly.
  • fluentc-translation/trunk/src/actions/class-insert.php

    r3144460 r3147335  
    180180            <meta name="generator" content="<?php echo esc_attr( 'FluentC v' . FLUENTC_TRANSLATION_VERSION ); ?>" >
    181181            <?php
    182             $explodelang = explode( '-', get_bloginfo( 'language' ) );
    183 
    184             if ( $explodelang ) {
    185                 $bloglanguage = $explodelang[0];
    186             } else {
    187                 $bloglanguage = get_bloginfo( 'language' );
    188             }
    189 
     182            $bloglanguage = $this->fluentc_language->fluentc_site_language();
    190183            foreach ( $languages as $language ) {
    191184
    192185                if ( $bloglanguage === $language ) {
    193                     $set = 'set';
     186                    ?>
     187                    <link rel="alternate" hreflang="<?php echo esc_attr( $language ); ?>" href="<?php echo esc_url( $this->fluentc_url->get_canonical_url( $current_url, $widgetapikey ) ) ?>" >
     188                <?php
    194189                } else {
    195190                    ?>
  • fluentc-translation/trunk/src/actions/class-rankmath.php

    r3122693 r3147335  
    7575        $language_code = $this->fluentc_language->get_fluentc_language();
    7676        $widgetapikey  = get_option( 'fluentc_api_key' );
    77         $site_language = get_bloginfo( 'language' );
     77        $site_language = $this->fluentc_language->fluentc_site_language();
    7878        if ( $language_code ) {
    7979            // If language code is set, modify the output accordingly.
     
    9595        $language_code = $this->fluentc_language->get_fluentc_language();
    9696        $widgetapikey  = get_option( 'fluentc_api_key' );
    97         $site_language = get_bloginfo( 'language' );
     97        $site_language = $this->fluentc_language->fluentc_site_language();
    9898        if ( $language_code ) {
    9999            // If language code is set, modify the output accordingly.
     
    115115        $language_code = $this->fluentc_language->get_fluentc_language();
    116116        $widgetapikey  = get_option( 'fluentc_api_key' );
    117         $site_language = get_bloginfo( 'language' );
     117        $site_language = $this->fluentc_language->fluentc_site_language();
    118118        if ( $language_code ) {
    119119            // If language code is set, modify the output accordingly.
  • fluentc-translation/trunk/src/actions/class-wordpress.php

    r3140944 r3147335  
    106106        $this->language_code = $this->fluentc_language->get_fluentc_language();
    107107        $this->widgetapikey  = get_option( 'fluentc_api_key' );
    108         $this->site_language = substr( get_bloginfo( 'language' ), 0, 2 );
     108        $this->site_language = $this->fluentc_language->fluentc_site_language();
    109109
    110110    }
     
    162162    $entry_skip_map = [];
    163163
    164     $elements = $dom->find('*:not(script):not(style):not(code):not(pre):not(noscript):not(iframe):not(object):not(embed):not(svg):not(math):not(canvas)');
     164    $elements = $dom->find('*:not(script):not(style):not(code):not(figure):not(pre):not(noscript):not(iframe):not(object):not(embed):not(svg):not(math):not(canvas)');
    165165    foreach ($elements as $element) {
    166166        $nodes = ($element instanceof \PHPHtmlParser\Dom\Node\HtmlNode) ? $element->getChildren() : [$element];
     
    220220   
    221221private function applyTranslations($entry_map, $translated_texts, $language_code) {
    222     foreach ($translated_texts as $index => $translatedText) {
    223         if (isset($entry_map[$index])) {
    224             $node = $entry_map[$index];
    225             $original_text = $node->text();
    226             $translated_text = $translatedText->translatedText;
    227            
    228             if ($translated_text !== null && $translated_text !== '') {
     222    foreach ($translated_texts as $translatedText) {
     223        $original_text = $translatedText->originalText;
     224        $translated_text = $translatedText->translatedText;
     225       
     226        if (isset($entry_map[$original_text]) && $translated_text !== null && $translated_text !== '') {
     227            foreach ($entry_map[$original_text] as $node) {
    229228                $node->setText($translated_text);
    230                 $key = hash('md5', $original_text);
    231                 $translated_key = hash('md5', $translated_text);
    232                 $this->translated_text[$key] = $translated_text;
    233                 $this->translated_text[$translated_key] = $translated_text;
    234                 $cache_key = $this->site_language . $language_code . $key;
    235                 $this->fluentc_cache->set($cache_key, json_encode([
    236                     'data' => ['translateSite' => ['body' => $translatedText]]
    237                 ]));
    238             } else {
    239                 do_action( 'qm/info', 'No Translated Text' );
    240             }
    241         }
    242        
    243     }
    244    
     229            }
     230           
     231            $key = hash('md5', $original_text);
     232            $translated_key = hash('md5', $translated_text);
     233           
     234            do_action('qm/info', 'applyTranslations $translated_text ' . $translated_key . ' text' . $translated_text);
     235           
     236            $this->translated_text[$key] = $translated_text;
     237            $this->translated_text[$translated_key] = $translated_text;
     238           
     239            $cache_key = $this->site_language . $language_code . $key;
     240            $this->fluentc_cache->set($cache_key, json_encode([
     241                'data' => ['translateSite' => ['body' => ['translatedText' => $translated_text]]]
     242            ]));
     243        } else {
     244            do_action('qm/info', 'No Translated Text or No Matching Nodes');
     245        }
     246    }
    245247}
    246248
     
    257259}
    258260   
    259     private function processNode($node, &$texts_to_translate, &$entry_map, &$entry_skip_map) {
     261private function processNode($node, &$texts_to_translate, &$entry_map, &$entry_skip_map) {
    260262    if (!($node instanceof \PHPHtmlParser\Dom\Node\TextNode)) {
    261263        return;
    262264    }
    263265
    264     if (preg_match($this->fluentc_htmltags->regex_only_whitespace, $node->text()) ||
    265         preg_match($this->fluentc_htmltags->regex_only_digits_whitespace_punctuation, $node->text())) {
     266    $text = $node->text();
     267
     268    if (preg_match($this->fluentc_htmltags->regex_only_whitespace, $text) ||
     269        preg_match($this->fluentc_htmltags->regex_only_digits_whitespace_punctuation, $text)) {
    266270        return;
    267271    }
    268    
    269     //Eliminate already translated text.
    270     $key = hash('md5', $node->text());
    271 
    272     if (array_key_exists($key, $this->translated_text)) {
    273         return;
    274     }
    275    
     272   
     273    $key = hash('md5', $text);
     274   
     275    // Check if the text has already been translated
     276    if (array_key_exists($key, $this->translated_text)) {
     277        $node->setText($this->translated_text[$key]);
     278        $entry_skip_map[] = $node;
     279        return;
     280    }
     281   
    276282    $cache_key = $this->site_language . $this->language_code . $key;
    277283    $cached_translation = $this->fluentc_cache->get($cache_key);
     284   
    278285    if ($cached_translation) {
    279286        $json_cache = json_decode($cached_translation);
    280         if (isset($json_cache->data->translateSite->body)) {
    281             $node->setText($json_cache->data->translateSite->body->translatedText);
    282             $translated_key = hash('md5', $json_cache->data->translateSite->body->translatedText);
    283             $this->translated_text[$translated_key] = $json_cache->data->translateSite->body->translatedText;
     287        if (isset($json_cache->data->translateSite->body->translatedText)) {
     288            $translated_text = $json_cache->data->translateSite->body->translatedText;
     289            $node->setText($translated_text);
     290            $translated_key = hash('md5', $translated_text);
     291            $this->translated_text[$key] = $translated_text;
     292            $this->translated_text[$translated_key] = $translated_text;
    284293            $entry_skip_map[] = $node;
    285294            return;
    286295        }
    287     }
    288 
    289     $texts_to_translate[] = $node->text();
    290     $entry_map[] = $node;
     296    }
     297
     298    // If we reach here, the text needs translation
     299    if (!in_array($text, $texts_to_translate)) {
     300        $texts_to_translate[] = $text;
     301    }
     302   
     303    if (!isset($entry_map[$text])) {
     304        $entry_map[$text] = [];
     305    }
     306    $entry_map[$text][] = $node;
    291307}
    292308   
     
    324340    $entry_skip_map = [];
    325341
    326     $elements = $dom->find('*:not(script):not(style):not(code):not(pre):not(noscript):not(iframe):not(object):not(embed):not(svg):not(math):not(canvas)');
     342    $elements = $dom->find('*:not(script):not(style):not(code):not(figure):not(pre):not(noscript):not(iframe):not(object):not(embed):not(svg):not(math):not(canvas)');
    327343    foreach ($elements as $element) {
    328344        $nodes = ($element instanceof \PHPHtmlParser\Dom\Node\HtmlNode) ? $element->getChildren() : [$element];
     
    390406        $language_code = $this->fluentc_language->get_fluentc_language();
    391407        $widgetapikey = get_option('fluentc_api_key');
    392         $site_language = get_bloginfo('language');
     408       
    393409   
    394410        if (!$language_code) {
     
    408424        $translated_data = $this->fluentc_connenct->get_translation_text(
    409425            $widgetapikey,
    410             substr($site_language, 0, 2),
     426            $this->site_language,
    411427            $language_code,
    412428            $title,
     
    439455        $language_code = $this->fluentc_language->get_fluentc_language();
    440456        $widgetapikey  = get_option( 'fluentc_api_key' );
    441         $site_language = get_bloginfo( 'language' );
     457       
    442458        if ( function_exists( 'wc_get_page_id' ) ) {
    443459            if ( is_page( wc_get_page_id( 'checkout' ) ) || is_page( wc_get_page_id( 'cart' ) ) ) {
     
    447463        if ( $language_code ) {
    448464            // If language code is set, modify the output accordingly.
    449             $text = $this->fluentc_connenct->get_translation_content( $widgetapikey, substr( $site_language, 0, 2 ), $language_code, $content );
     465            $text = $this->fluentc_connenct->get_translation_content( $widgetapikey, $this->site_language, $language_code, $content );
    450466            return $this->fluentc_html->find_and_replace( html_entity_decode( $content ), $text, $language_code, $this->fluentc_connenct->get_language_list_string( $widgetapikey ) );
    451467        } else {
     
    465481        $language_code = $this->fluentc_language->get_fluentc_language();
    466482        $widgetapikey  = get_option( 'fluentc_api_key' );
    467         $site_language = get_bloginfo( 'language' );
     483       
    468484        if ( $language_code ) {
    469485            // If language code is set, modify the output accordingly.
    470             $html = $this->fluentc_connenct->get_translation_content( $widgetapikey, substr( $site_language, 0, 2 ), $language_code, $text );
     486            $html = $this->fluentc_connenct->get_translation_content( $widgetapikey, $this->site_language, $language_code, $text );
    471487            return $this->fluentc_html->find_and_replace( $text, $html, $language_code, $this->fluentc_connenct->get_language_list_string( $widgetapikey ) );
    472488        } else {
     
    485501        $language_code = $this->fluentc_language->get_fluentc_language();
    486502        $widgetapikey  = get_option( 'fluentc_api_key' );
    487         $site_language = get_bloginfo( 'language' );
     503       
    488504        if ( $language_code ) {
    489505            // If language code is set, modify the output accordingly.
    490             $text = $this->fluentc_connenct->get_translation_content( $widgetapikey, substr( $site_language, 0, 2 ), $language_code, $content );
     506            $text = $this->fluentc_connenct->get_translation_content( $widgetapikey, $this->site_language, $language_code, $content );
    491507            return $this->fluentc_html->find_and_replace( $content, $text, $language_code, $this->fluentc_connenct->get_language_list_string( $widgetapikey ) );
    492508        } else {
     
    507523        $language_code = $this->fluentc_language->get_fluentc_language();
    508524        $widgetapikey  = get_option( 'fluentc_api_key' );
    509         $site_language = get_bloginfo( 'language' );
     525       
    510526        if ( $language_code ) {
    511527            // If language code is set, modify the output accordingly.
    512             $text = $this->fluentc_connenct->get_translation_content( $widgetapikey, substr( $site_language, 0, 2 ), $language_code, $output );
     528            $text = $this->fluentc_connenct->get_translation_content( $widgetapikey, $this->site_language, $language_code, $output );
    513529            return $this->fluentc_html->find_and_replace( $output, $text, $language_code, $this->fluentc_connenct->get_language_list_string( $widgetapikey ) );
    514530        } else {
     
    527543        $language_code = $this->fluentc_language->get_fluentc_language();
    528544        $widgetapikey  = get_option( 'fluentc_api_key' );
    529         $site_language = get_bloginfo( 'language' );
     545       
    530546        if ( $language_code ) {
    531547            // If language code is set, modify the output accordingly.
    532             $text = $this->fluentc_connenct->get_translation_content( $widgetapikey, substr( $site_language, 0, 2 ), $language_code, $content );
     548            $text = $this->fluentc_connenct->get_translation_content( $widgetapikey, $this->site_language, $language_code, $content );
    533549            return $this->fluentc_html->find_and_replace( $content, $text, $language_code, $this->fluentc_connenct->get_language_list_string( $widgetapikey ) );
    534550        } else {
     
    547563        $language_code = $this->fluentc_language->get_fluentc_language();
    548564        $widgetapikey  = get_option( 'fluentc_api_key' );
    549         $site_language = get_bloginfo( 'language' );
     565       
    550566        if ( $language_code ) {
    551567            // If language code is set, modify the output accordingly.
    552             $text = $this->fluentc_connenct->get_translation_content( $widgetapikey, substr( $site_language, 0, 2 ), $language_code, $content );
     568            $text = $this->fluentc_connenct->get_translation_content( $widgetapikey, $this->site_language, $language_code, $content );
    553569            return $this->fluentc_html->find_and_replace( $content, $text, $language_code, $this->fluentc_connenct->get_language_list_string( $widgetapikey ) );
    554570        } else {
  • fluentc-translation/trunk/src/actions/class-yoast.php

    r3080561 r3147335  
    6666        $language_code = $this->fluentc_language->get_fluentc_language();
    6767        $widgetapikey  = get_option( 'fluentc_api_key' );
    68         $site_language = get_bloginfo( 'language' );
     68        $site_language = $this->fluentc_language->fluentc_site_language();
    6969        if ( $language_code ) {
    7070            // If language code is set, modify the output accordingly.
  • fluentc-translation/trunk/src/services/class-html.php

    r3140944 r3147335  
    244244 */
    245245public function find_and_replace($html, $json, $language_code, $regex_lang) {
    246     // Create Options object and set the necessary options
     246    // Create Options object and set the necessary options.
    247247    $options = new Options();
    248248    $options->setCleanupInput(false);
     
    262262        $is_relative_path = empty($parsed_url['host']);
    263263        $root_url = home_url();
    264 
     264       
    265265        // Conditions to skip modification.
    266266        if (!empty($current_language_code) ||
    267267            $is_relative_path ||
    268268            (isset($parsed_url['host']) && wp_parse_url($root_url, PHP_URL_HOST) !== $parsed_url['host']) ||
    269             substr($url, -3, 1) === '/' && in_array(substr($url, -2), array($regex_lang, strtoupper($regex_lang)))) {
     269            substr($url, -3, 1) === '/' && in_array(substr($url, -2), array($regex_lang, strtoupper($regex_lang))) ||
     270            strpos($url, '/wp-admin/') !== false) { // New condition to skip wp-admin links
    270271            // Do nothing
    271272            continue;
  • fluentc-translation/trunk/src/utils/class-language.php

    r3135855 r3147335  
    3232    protected $fluentc_connenct;
    3333    /**
    34      * FluentC connection class
     34     * FluentC lang list class
    3535     *
    3636     * @var object
    3737     */
    3838    protected $regex_lang;
     39        /**
     40     * FluentC lang list class
     41     *
     42     * @var object
     43     */
     44    protected $fetch_widget_options;
    3945    /**
    4046     * Constructor.
     
    4854        if ( $widget_id ) {
    4955            $this->regex_lang = $this->fluentc_connenct->get_language_list_string( $widget_id );
     56            $this->fetch_widget_options = $this->fluentc_connenct->fetch_widget_options( $widget_id );
    5057        } else {
    5158            $this->regex_lang = '';
    5259        }
     60       
    5361    }
    5462
     
    6068     */
    6169    public function fluentc_site_language() {
    62         $site_language = get_bloginfo( 'language' );
    63         $site_language = substr( $site_language, 0, 2 );
     70        $site_language = $this->fetch_widget_options->data->fetchSiteOptions->sourceLanguage;
     71        $site_language = substr($site_language , 0, 2 );
    6472        return $site_language;
    6573    }
Note: See TracChangeset for help on using the changeset viewer.