Version Description
- Fixed Woocommerce translation of permalinks
- Added support for remove_accents to be based on default language when called from the sanitize_title function
- Added support for translating JSON found in custom ajax request
- Added better REST compatibility
- Added compatibility for Peepso plugin
- Fixed TranslatePress roken link to google translate set up api key on settings page
- Corrected flags for Arabic and Bengali languages
- Fixed issue with multiple slashes being added when the URL had extra get parameters
Download this release
Release Info
| Developer | madalin.ungureanu |
| Plugin | |
| Version | 1.3.1 |
| Comparing to | |
| See all releases | |
Code changes from version 1.3.0 to 1.3.1
- assets/images/flags/ar.png +0 -0
- assets/images/flags/bn_BD.png +0 -0
- class-translate-press.php +11 -1
- includes/class-translation-render.php +61 -35
- includes/class-url-converter.php +43 -11
- includes/functions.php +279 -0
- index.php +1 -1
- languages/translatepress-multilingual.catalog.php +2 -2
- languages/translatepress-multilingual.pot +11 -11
- partials/main-settings-page.php +2 -2
- readme.txt +11 -1
assets/images/flags/ar.png
CHANGED
|
Binary file
|
assets/images/flags/bn_BD.png
CHANGED
|
Binary file
|
class-translate-press.php
CHANGED
|
@@ -39,7 +39,7 @@ class TRP_Translate_Press{
|
|
| 39 |
define( 'TRP_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
|
| 40 |
define( 'TRP_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
|
| 41 |
define( 'TRP_PLUGIN_SLUG', 'translatepress-multilingual' );
|
| 42 |
-
define( 'TRP_PLUGIN_VERSION', '1.3.
|
| 43 |
|
| 44 |
$this->load_dependencies();
|
| 45 |
$this->initialize_components();
|
|
@@ -138,6 +138,14 @@ class TRP_Translate_Press{
|
|
| 138 |
$this->loader->add_filter( 'trp_before_translate_content', $this->translation_render, 'force_form_language_on_url_in_ajax', 20 );
|
| 139 |
/* handle CDATA str replacement from the content as it is messing up the renderer */
|
| 140 |
$this->loader->add_filter( "trp_before_translate_content", $this->translation_render, 'handle_cdata', 1000 );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 141 |
|
| 142 |
|
| 143 |
$this->loader->add_action( 'wp_enqueue_scripts', $this->language_switcher, 'enqueue_language_switcher_scripts' );
|
|
@@ -208,6 +216,8 @@ class TRP_Translate_Press{
|
|
| 208 |
* we can't flush the permalinks on every page load so we filter the rewrite_rules option
|
| 209 |
*/
|
| 210 |
$this->loader->add_filter( "option_rewrite_rules", $this->url_converter, 'woocommerce_filter_permalinks_on_other_languages' );
|
|
|
|
|
|
|
| 211 |
|
| 212 |
/* add to the body class the current language */
|
| 213 |
$this->loader->add_filter( "body_class", $this->translation_manager, 'add_language_to_body_class' );
|
| 39 |
define( 'TRP_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
|
| 40 |
define( 'TRP_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
|
| 41 |
define( 'TRP_PLUGIN_SLUG', 'translatepress-multilingual' );
|
| 42 |
+
define( 'TRP_PLUGIN_VERSION', '1.3.1' );
|
| 43 |
|
| 44 |
$this->load_dependencies();
|
| 45 |
$this->initialize_components();
|
| 138 |
$this->loader->add_filter( 'trp_before_translate_content', $this->translation_render, 'force_form_language_on_url_in_ajax', 20 );
|
| 139 |
/* handle CDATA str replacement from the content as it is messing up the renderer */
|
| 140 |
$this->loader->add_filter( "trp_before_translate_content", $this->translation_render, 'handle_cdata', 1000 );
|
| 141 |
+
|
| 142 |
+
/* apply translation filters for REST API response */
|
| 143 |
+
$post_types = get_post_types();
|
| 144 |
+
foreach ( $post_types as $post_type ) {
|
| 145 |
+
$this->loader->add_filter( 'rest_prepare_'.$post_type, $this->translation_render, 'handle_rest_api_translations' );
|
| 146 |
+
}
|
| 147 |
+
|
| 148 |
+
|
| 149 |
|
| 150 |
|
| 151 |
$this->loader->add_action( 'wp_enqueue_scripts', $this->language_switcher, 'enqueue_language_switcher_scripts' );
|
| 216 |
* we can't flush the permalinks on every page load so we filter the rewrite_rules option
|
| 217 |
*/
|
| 218 |
$this->loader->add_filter( "option_rewrite_rules", $this->url_converter, 'woocommerce_filter_permalinks_on_other_languages' );
|
| 219 |
+
$this->loader->add_filter( "option_woocommerce_permalinks", $this->url_converter, 'woocommerce_filter_permalink_option' );
|
| 220 |
+
$this->loader->add_filter( "pre_update_option_woocommerce_permalinks", $this->url_converter, 'woocommerce_handle_permalink_option_on_frontend', 10, 2 );
|
| 221 |
|
| 222 |
/* add to the body class the current language */
|
| 223 |
$this->loader->add_filter( "body_class", $this->translation_manager, 'add_language_to_body_class' );
|
includes/class-translation-render.php
CHANGED
|
@@ -36,6 +36,10 @@ class TRP_Translation_Render{
|
|
| 36 |
return;
|
| 37 |
}
|
| 38 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 39 |
mb_http_output("UTF-8");
|
| 40 |
ob_start(array($this, 'translate_page'));
|
| 41 |
}
|
|
@@ -256,6 +260,18 @@ class TRP_Translation_Render{
|
|
| 256 |
return null;
|
| 257 |
}
|
| 258 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 259 |
/**
|
| 260 |
* Finding translateable strings and replacing with translations.
|
| 261 |
*
|
|
@@ -271,6 +287,16 @@ class TRP_Translation_Render{
|
|
| 271 |
return $output;
|
| 272 |
}
|
| 273 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 274 |
global $TRP_LANGUAGE;
|
| 275 |
$language_code = $this->force_language_in_preview();
|
| 276 |
if ($language_code === false) {
|
|
@@ -279,39 +305,43 @@ class TRP_Translation_Render{
|
|
| 279 |
|
| 280 |
$preview_mode = isset( $_REQUEST['trp-edit-translation'] ) && $_REQUEST['trp-edit-translation'] == 'preview';
|
| 281 |
|
| 282 |
-
|
| 283 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 284 |
|
| 285 |
-
|
| 286 |
-
|
| 287 |
-
|
| 288 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 289 |
|
| 290 |
-
|
| 291 |
-
if (is_array($json_array = json_decode($output, true))) {
|
| 292 |
-
if (!empty($json_array)) {
|
| 293 |
-
foreach ($json_array as $key => $value) {
|
| 294 |
-
if (!empty($value)) {
|
| 295 |
-
if (!is_array($value)) { //if the current element is not an array check if it a html text and translate
|
| 296 |
-
if (html_entity_decode((string)$value) != strip_tags(html_entity_decode((string)$value))) {
|
| 297 |
-
$json_array[$key] = $this->translate_page(stripslashes($value));
|
| 298 |
-
}
|
| 299 |
-
} else {//look for the html elements
|
| 300 |
-
foreach( $value as $k => $v ){
|
| 301 |
-
if( !empty( $v ) ) {
|
| 302 |
-
if (!is_array($v)) {
|
| 303 |
-
if (html_entity_decode((string)$v) != strip_tags(html_entity_decode((string)$v))) {
|
| 304 |
-
$json_array[$key][$k] = $this->translate_page(stripslashes($v));
|
| 305 |
-
}
|
| 306 |
-
}
|
| 307 |
-
}
|
| 308 |
-
}
|
| 309 |
-
}
|
| 310 |
-
}
|
| 311 |
-
}
|
| 312 |
-
}
|
| 313 |
-
return trp_safe_json_encode($json_array);
|
| 314 |
-
}
|
| 315 |
}
|
| 316 |
|
| 317 |
/**
|
|
@@ -625,10 +655,6 @@ class TRP_Translation_Render{
|
|
| 625 |
|
| 626 |
}
|
| 627 |
|
| 628 |
-
if ( ! $this->url_converter ) {
|
| 629 |
-
$trp = TRP_Translate_Press::get_trp_instance();
|
| 630 |
-
$this->url_converter = $trp->get_component('url_converter');
|
| 631 |
-
}
|
| 632 |
|
| 633 |
// We need to save here in order to access the translated links too.
|
| 634 |
$html = $html->save();
|
| 36 |
return;
|
| 37 |
}
|
| 38 |
|
| 39 |
+
|
| 40 |
+
/*if($_SERVER['REQUEST_URI'] == '/it/wp-json/wp/v2/posts/')
|
| 41 |
+
return;*/
|
| 42 |
+
|
| 43 |
mb_http_output("UTF-8");
|
| 44 |
ob_start(array($this, 'translate_page'));
|
| 45 |
}
|
| 260 |
return null;
|
| 261 |
}
|
| 262 |
|
| 263 |
+
/**
|
| 264 |
+
* Function that translates the content excerpt and post title in the REST API
|
| 265 |
+
* @param $response
|
| 266 |
+
* @return mixed
|
| 267 |
+
*/
|
| 268 |
+
public function handle_rest_api_translations($response){
|
| 269 |
+
$response->data['title']['rendered'] = $this->translate_page( $response->data['title']['rendered'] );
|
| 270 |
+
$response->data['excerpt']['rendered'] = $this->translate_page( $response->data['excerpt']['rendered'] );
|
| 271 |
+
$response->data['content']['rendered'] = $this->translate_page( $response->data['content']['rendered'] );
|
| 272 |
+
return $response;
|
| 273 |
+
}
|
| 274 |
+
|
| 275 |
/**
|
| 276 |
* Finding translateable strings and replacing with translations.
|
| 277 |
*
|
| 287 |
return $output;
|
| 288 |
}
|
| 289 |
|
| 290 |
+
if ( ! $this->url_converter ) {
|
| 291 |
+
$trp = TRP_Translate_Press::get_trp_instance();
|
| 292 |
+
$this->url_converter = $trp->get_component('url_converter');
|
| 293 |
+
}
|
| 294 |
+
|
| 295 |
+
/* make sure we only translate on the rest_prepare_$post_type filter in REST requests and not the whole json */
|
| 296 |
+
if( strpos( $this->url_converter->cur_page_url(), get_rest_url() ) !== false && strpos( current_filter(), 'rest_prepare_' ) !== 0){
|
| 297 |
+
return $output;
|
| 298 |
+
}
|
| 299 |
+
|
| 300 |
global $TRP_LANGUAGE;
|
| 301 |
$language_code = $this->force_language_in_preview();
|
| 302 |
if ($language_code === false) {
|
| 305 |
|
| 306 |
$preview_mode = isset( $_REQUEST['trp-edit-translation'] ) && $_REQUEST['trp-edit-translation'] == 'preview';
|
| 307 |
|
| 308 |
+
$is_json = is_array( $json_array = json_decode( $output, true ) );
|
| 309 |
+
/* If we have a json response we need to parse it and only translate the nodes that contain html
|
| 310 |
+
*
|
| 311 |
+
* Removed is_ajax_on_frontend() check because we need to capture custom ajax events.
|
| 312 |
+
* Decided that if $output is json decodable it's a good enough check to handle it this way.
|
| 313 |
+
* We have necessary checks so that we don't get to this point when is_admin(), or when language is not default.
|
| 314 |
+
*/
|
| 315 |
+
if( $is_json ) {
|
| 316 |
+
/* if it's one of our own ajax calls don't do nothing */
|
| 317 |
+
if ( ! empty( $_REQUEST['action'] ) && strpos( $_REQUEST['action'], 'trp_' ) === 0 && $_REQUEST['action'] != 'trp_split_translation_block' ) {
|
| 318 |
+
return $output;
|
| 319 |
+
}
|
| 320 |
|
| 321 |
+
//check if we have a json response
|
| 322 |
+
if ( ! empty( $json_array ) ) {
|
| 323 |
+
foreach ( $json_array as $key => $value ) {
|
| 324 |
+
if ( ! empty( $value ) ) {
|
| 325 |
+
if ( ! is_array( $value ) ) { //if the current element is not an array check if it a html text and translate
|
| 326 |
+
if ( html_entity_decode( (string) $value ) != strip_tags( html_entity_decode( (string) $value ) ) ) {
|
| 327 |
+
$json_array[ $key ] = $this->translate_page( stripslashes( $value ) );
|
| 328 |
+
}
|
| 329 |
+
} else {//look for the html elements
|
| 330 |
+
foreach ( $value as $k => $v ) {
|
| 331 |
+
if ( ! empty( $v ) ) {
|
| 332 |
+
if ( ! is_array( $v ) ) {
|
| 333 |
+
if ( html_entity_decode( (string) $v ) != strip_tags( html_entity_decode( (string) $v ) ) ) {
|
| 334 |
+
$json_array[ $key ][ $k ] = $this->translate_page( stripslashes( $v ) );
|
| 335 |
+
}
|
| 336 |
+
}
|
| 337 |
+
}
|
| 338 |
+
}
|
| 339 |
+
}
|
| 340 |
+
}
|
| 341 |
+
}
|
| 342 |
+
}
|
| 343 |
|
| 344 |
+
return trp_safe_json_encode( $json_array );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 345 |
}
|
| 346 |
|
| 347 |
/**
|
| 655 |
|
| 656 |
}
|
| 657 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 658 |
|
| 659 |
// We need to save here in order to access the translated links too.
|
| 660 |
$html = $html->save();
|
includes/class-url-converter.php
CHANGED
|
@@ -185,8 +185,8 @@ class TRP_Url_Converter {
|
|
| 185 |
* so we can get the correct permalink (slug and all) and add the remaining arguments that might exist.
|
| 186 |
*/
|
| 187 |
$TRP_LANGUAGE = $language;
|
| 188 |
-
if ( !empty ( $arguments ) ){
|
| 189 |
-
|
| 190 |
}
|
| 191 |
$new_url = get_permalink( $post_id ) . $arguments;
|
| 192 |
$TRP_LANGUAGE = $trp_language_copy;
|
|
@@ -219,6 +219,11 @@ class TRP_Url_Converter {
|
|
| 219 |
$translated_tag_slug = trp_x( 'product-tag', 'slug', 'woocommerce', $language );
|
| 220 |
$new_url = str_replace( '/'.$current_tag_slug.'/', '/'.$translated_tag_slug.'/', $new_url );
|
| 221 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 222 |
}
|
| 223 |
|
| 224 |
if ( empty( $new_url ) ) {
|
|
@@ -380,16 +385,13 @@ class TRP_Url_Converter {
|
|
| 380 |
$default_language_wc_permalink_structure['category_rewrite_slug'] = trp_x( 'product-category', 'slug', 'woocommerce', $this->settings['default-language'] );
|
| 381 |
$default_language_wc_permalink_structure['tag_rewrite_slug'] = trp_x( 'product-tag', 'slug', 'woocommerce', $this->settings['default-language'] );
|
| 382 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 383 |
|
| 384 |
-
if( function_exists( 'wc_get_permalink_structure' ) ){
|
| 385 |
-
$current_language_permalink_structure = wc_get_permalink_structure();
|
| 386 |
-
}
|
| 387 |
-
else{
|
| 388 |
-
$current_language_permalink_structure = array();
|
| 389 |
-
$current_language_permalink_structure['product_rewrite_slug'] = trp_x( 'product', 'slug', 'woocommerce', $TRP_LANGUAGE );
|
| 390 |
-
$current_language_permalink_structure['category_rewrite_slug'] = trp_x( 'product-category', 'slug', 'woocommerce', $TRP_LANGUAGE );
|
| 391 |
-
$current_language_permalink_structure['tag_rewrite_slug'] = trp_x( 'product-tag', 'slug', 'woocommerce', $TRP_LANGUAGE );
|
| 392 |
-
}
|
| 393 |
|
| 394 |
$new_rewrite_rules = array();
|
| 395 |
|
|
@@ -412,4 +414,34 @@ class TRP_Url_Converter {
|
|
| 412 |
return $rewrite_rules;
|
| 413 |
}
|
| 414 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 415 |
}
|
| 185 |
* so we can get the correct permalink (slug and all) and add the remaining arguments that might exist.
|
| 186 |
*/
|
| 187 |
$TRP_LANGUAGE = $language;
|
| 188 |
+
if ( !empty ( $arguments ) ) {
|
| 189 |
+
$arguments = apply_filters('trp_get_url_for_language_custom_arguments', $arguments, $language, $url, $post_id);
|
| 190 |
}
|
| 191 |
$new_url = get_permalink( $post_id ) . $arguments;
|
| 192 |
$TRP_LANGUAGE = $trp_language_copy;
|
| 219 |
$translated_tag_slug = trp_x( 'product-tag', 'slug', 'woocommerce', $language );
|
| 220 |
$new_url = str_replace( '/'.$current_tag_slug.'/', '/'.$translated_tag_slug.'/', $new_url );
|
| 221 |
}
|
| 222 |
+
elseif( is_product() ){
|
| 223 |
+
$current_product_slug = trp_x( 'product', 'slug', 'woocommerce', $TRP_LANGUAGE );
|
| 224 |
+
$translated_product_slug = trp_x( 'product', 'slug', 'woocommerce', $language );
|
| 225 |
+
$new_url = str_replace( '/'.$current_product_slug.'/', '/'.$translated_product_slug.'/', $new_url );
|
| 226 |
+
}
|
| 227 |
}
|
| 228 |
|
| 229 |
if ( empty( $new_url ) ) {
|
| 385 |
$default_language_wc_permalink_structure['category_rewrite_slug'] = trp_x( 'product-category', 'slug', 'woocommerce', $this->settings['default-language'] );
|
| 386 |
$default_language_wc_permalink_structure['tag_rewrite_slug'] = trp_x( 'product-tag', 'slug', 'woocommerce', $this->settings['default-language'] );
|
| 387 |
}
|
| 388 |
+
|
| 389 |
+
//always generate the slugs for defaults on the current language
|
| 390 |
+
$current_language_permalink_structure = array();
|
| 391 |
+
$current_language_permalink_structure['product_rewrite_slug'] = trp_x( 'product', 'slug', 'woocommerce', $TRP_LANGUAGE );
|
| 392 |
+
$current_language_permalink_structure['category_rewrite_slug'] = trp_x( 'product-category', 'slug', 'woocommerce', $TRP_LANGUAGE );
|
| 393 |
+
$current_language_permalink_structure['tag_rewrite_slug'] = trp_x( 'product-tag', 'slug', 'woocommerce', $TRP_LANGUAGE );
|
| 394 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 395 |
|
| 396 |
$new_rewrite_rules = array();
|
| 397 |
|
| 414 |
return $rewrite_rules;
|
| 415 |
}
|
| 416 |
|
| 417 |
+
/* on frontend on other languages dinamically generate the woo permalink structure for the default slugs */
|
| 418 |
+
function woocommerce_filter_permalink_option( $value ){
|
| 419 |
+
global $TRP_LANGUAGE;
|
| 420 |
+
if( $TRP_LANGUAGE != $this->settings['default-language'] ) {
|
| 421 |
+
if( trim($value['product_base'], '/') === trp_x( 'product', 'slug', 'woocommerce', $this->settings['default-language'] ) ){
|
| 422 |
+
$value['product_base'] = '';
|
| 423 |
+
}
|
| 424 |
+
|
| 425 |
+
if( trim($value['category_base'], '/') === trp_x( 'product-category', 'slug', 'woocommerce', $this->settings['default-language'] ) ){
|
| 426 |
+
$value['category_base'] = '';
|
| 427 |
+
}
|
| 428 |
+
|
| 429 |
+
if( trim($value['tag_base'], '/') === trp_x( 'product-tag', 'slug', 'woocommerce', $this->settings['default-language'] ) ){
|
| 430 |
+
$value['tag_base'] = '';
|
| 431 |
+
}
|
| 432 |
+
|
| 433 |
+
}
|
| 434 |
+
|
| 435 |
+
return $value;
|
| 436 |
+
}
|
| 437 |
+
|
| 438 |
+
/* don't update the woocommerce_permalink option on the frontend if we are not on the default language */
|
| 439 |
+
function woocommerce_handle_permalink_option_on_frontend($value, $old_value){
|
| 440 |
+
global $TRP_LANGUAGE;
|
| 441 |
+
if( isset($TRP_LANGUAGE) && $TRP_LANGUAGE != $this->settings['default-language'] ){
|
| 442 |
+
$value = $old_value;
|
| 443 |
+
}
|
| 444 |
+
return $value;
|
| 445 |
+
}
|
| 446 |
+
|
| 447 |
}
|
includes/functions.php
CHANGED
|
@@ -254,3 +254,282 @@ function trp_wp_trim_words( $text, $num_words = 55, $more = null, $original_text
|
|
| 254 |
return $text;
|
| 255 |
}
|
| 256 |
add_filter('wp_trim_words', 'trp_wp_trim_words', 100, 4);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 254 |
return $text;
|
| 255 |
}
|
| 256 |
add_filter('wp_trim_words', 'trp_wp_trim_words', 100, 4);
|
| 257 |
+
|
| 258 |
+
|
| 259 |
+
/**
|
| 260 |
+
* Use home_url in the https://www.peepso.com/ ajax front-end url so strings come back translated.
|
| 261 |
+
*
|
| 262 |
+
* @since 1.3.1
|
| 263 |
+
*
|
| 264 |
+
* @param array $data Peepso data
|
| 265 |
+
* @return array
|
| 266 |
+
*/
|
| 267 |
+
add_filter( 'peepso_data', 'trp_use_home_url_in_peepso_ajax' );
|
| 268 |
+
function trp_use_home_url_in_peepso_ajax( $data ){
|
| 269 |
+
if ( is_array( $data ) && isset( $data['ajaxurl_legacy'] ) ){
|
| 270 |
+
$data['ajaxurl_legacy'] = home_url( '/peepsoajax/' );
|
| 271 |
+
}
|
| 272 |
+
return $data;
|
| 273 |
+
}
|
| 274 |
+
|
| 275 |
+
/**
|
| 276 |
+
* Filter sanitize_title() to use our own remove_accents() function so it's based on the default language, not current locale.
|
| 277 |
+
*
|
| 278 |
+
* @since 1.3.1
|
| 279 |
+
*
|
| 280 |
+
* @param string $title
|
| 281 |
+
* @param string $raw_title
|
| 282 |
+
* @param string $context
|
| 283 |
+
* @return string
|
| 284 |
+
*/
|
| 285 |
+
add_filter( 'sanitize_title', 'trp_sanitize_title', 1, 3 );
|
| 286 |
+
function trp_sanitize_title( $title, $raw_title, $context ){
|
| 287 |
+
|
| 288 |
+
if ( 'save' == $context )
|
| 289 |
+
$title = trp_remove_accents( $raw_title );
|
| 290 |
+
|
| 291 |
+
remove_filter( 'sanitize_title', 'trp_sanitize_title', 1, 3 );
|
| 292 |
+
$title = apply_filters( 'sanitize_title', $title, $raw_title, $context );
|
| 293 |
+
add_filter( 'sanitize_title', 'trp_sanitize_title', 1, 3 );
|
| 294 |
+
|
| 295 |
+
return $title;
|
| 296 |
+
}
|
| 297 |
+
|
| 298 |
+
function trp_remove_accents( $string ){
|
| 299 |
+
|
| 300 |
+
if ( !preg_match('/[\x80-\xff]/', $string) )
|
| 301 |
+
return $string;
|
| 302 |
+
|
| 303 |
+
if (seems_utf8($string)) {
|
| 304 |
+
$chars = array(
|
| 305 |
+
// Decompositions for Latin-1 Supplement
|
| 306 |
+
'ª' => 'a', 'º' => 'o',
|
| 307 |
+
'À' => 'A', 'Á' => 'A',
|
| 308 |
+
'Â' => 'A', 'Ã' => 'A',
|
| 309 |
+
'Ä' => 'A', 'Å' => 'A',
|
| 310 |
+
'Æ' => 'AE','Ç' => 'C',
|
| 311 |
+
'È' => 'E', 'É' => 'E',
|
| 312 |
+
'Ê' => 'E', 'Ë' => 'E',
|
| 313 |
+
'Ì' => 'I', 'Í' => 'I',
|
| 314 |
+
'Î' => 'I', 'Ï' => 'I',
|
| 315 |
+
'Ð' => 'D', 'Ñ' => 'N',
|
| 316 |
+
'Ò' => 'O', 'Ó' => 'O',
|
| 317 |
+
'Ô' => 'O', 'Õ' => 'O',
|
| 318 |
+
'Ö' => 'O', 'Ù' => 'U',
|
| 319 |
+
'Ú' => 'U', 'Û' => 'U',
|
| 320 |
+
'Ü' => 'U', 'Ý' => 'Y',
|
| 321 |
+
'Þ' => 'TH','ß' => 's',
|
| 322 |
+
'à' => 'a', 'á' => 'a',
|
| 323 |
+
'â' => 'a', 'ã' => 'a',
|
| 324 |
+
'ä' => 'a', 'å' => 'a',
|
| 325 |
+
'æ' => 'ae','ç' => 'c',
|
| 326 |
+
'è' => 'e', 'é' => 'e',
|
| 327 |
+
'ê' => 'e', 'ë' => 'e',
|
| 328 |
+
'ì' => 'i', 'í' => 'i',
|
| 329 |
+
'î' => 'i', 'ï' => 'i',
|
| 330 |
+
'ð' => 'd', 'ñ' => 'n',
|
| 331 |
+
'ò' => 'o', 'ó' => 'o',
|
| 332 |
+
'ô' => 'o', 'õ' => 'o',
|
| 333 |
+
'ö' => 'o', 'ø' => 'o',
|
| 334 |
+
'ù' => 'u', 'ú' => 'u',
|
| 335 |
+
'û' => 'u', 'ü' => 'u',
|
| 336 |
+
'ý' => 'y', 'þ' => 'th',
|
| 337 |
+
'ÿ' => 'y', 'Ø' => 'O',
|
| 338 |
+
// Decompositions for Latin Extended-A
|
| 339 |
+
'Ā' => 'A', 'ā' => 'a',
|
| 340 |
+
'Ă' => 'A', 'ă' => 'a',
|
| 341 |
+
'Ą' => 'A', 'ą' => 'a',
|
| 342 |
+
'Ć' => 'C', 'ć' => 'c',
|
| 343 |
+
'Ĉ' => 'C', 'ĉ' => 'c',
|
| 344 |
+
'Ċ' => 'C', 'ċ' => 'c',
|
| 345 |
+
'Č' => 'C', 'č' => 'c',
|
| 346 |
+
'Ď' => 'D', 'ď' => 'd',
|
| 347 |
+
'Đ' => 'D', 'đ' => 'd',
|
| 348 |
+
'Ē' => 'E', 'ē' => 'e',
|
| 349 |
+
'Ĕ' => 'E', 'ĕ' => 'e',
|
| 350 |
+
'Ė' => 'E', 'ė' => 'e',
|
| 351 |
+
'Ę' => 'E', 'ę' => 'e',
|
| 352 |
+
'Ě' => 'E', 'ě' => 'e',
|
| 353 |
+
'Ĝ' => 'G', 'ĝ' => 'g',
|
| 354 |
+
'Ğ' => 'G', 'ğ' => 'g',
|
| 355 |
+
'Ġ' => 'G', 'ġ' => 'g',
|
| 356 |
+
'Ģ' => 'G', 'ģ' => 'g',
|
| 357 |
+
'Ĥ' => 'H', 'ĥ' => 'h',
|
| 358 |
+
'Ħ' => 'H', 'ħ' => 'h',
|
| 359 |
+
'Ĩ' => 'I', 'ĩ' => 'i',
|
| 360 |
+
'Ī' => 'I', 'ī' => 'i',
|
| 361 |
+
'Ĭ' => 'I', 'ĭ' => 'i',
|
| 362 |
+
'Į' => 'I', 'į' => 'i',
|
| 363 |
+
'İ' => 'I', 'ı' => 'i',
|
| 364 |
+
'IJ' => 'IJ','ij' => 'ij',
|
| 365 |
+
'Ĵ' => 'J', 'ĵ' => 'j',
|
| 366 |
+
'Ķ' => 'K', 'ķ' => 'k',
|
| 367 |
+
'ĸ' => 'k', 'Ĺ' => 'L',
|
| 368 |
+
'ĺ' => 'l', 'Ļ' => 'L',
|
| 369 |
+
'ļ' => 'l', 'Ľ' => 'L',
|
| 370 |
+
'ľ' => 'l', 'Ŀ' => 'L',
|
| 371 |
+
'ŀ' => 'l', 'Ł' => 'L',
|
| 372 |
+
'ł' => 'l', 'Ń' => 'N',
|
| 373 |
+
'ń' => 'n', 'Ņ' => 'N',
|
| 374 |
+
'ņ' => 'n', 'Ň' => 'N',
|
| 375 |
+
'ň' => 'n', 'ʼn' => 'n',
|
| 376 |
+
'Ŋ' => 'N', 'ŋ' => 'n',
|
| 377 |
+
'Ō' => 'O', 'ō' => 'o',
|
| 378 |
+
'Ŏ' => 'O', 'ŏ' => 'o',
|
| 379 |
+
'Ő' => 'O', 'ő' => 'o',
|
| 380 |
+
'Œ' => 'OE','œ' => 'oe',
|
| 381 |
+
'Ŕ' => 'R','ŕ' => 'r',
|
| 382 |
+
'Ŗ' => 'R','ŗ' => 'r',
|
| 383 |
+
'Ř' => 'R','ř' => 'r',
|
| 384 |
+
'Ś' => 'S','ś' => 's',
|
| 385 |
+
'Ŝ' => 'S','ŝ' => 's',
|
| 386 |
+
'Ş' => 'S','ş' => 's',
|
| 387 |
+
'Š' => 'S', 'š' => 's',
|
| 388 |
+
'Ţ' => 'T', 'ţ' => 't',
|
| 389 |
+
'Ť' => 'T', 'ť' => 't',
|
| 390 |
+
'Ŧ' => 'T', 'ŧ' => 't',
|
| 391 |
+
'Ũ' => 'U', 'ũ' => 'u',
|
| 392 |
+
'Ū' => 'U', 'ū' => 'u',
|
| 393 |
+
'Ŭ' => 'U', 'ŭ' => 'u',
|
| 394 |
+
'Ů' => 'U', 'ů' => 'u',
|
| 395 |
+
'Ű' => 'U', 'ű' => 'u',
|
| 396 |
+
'Ų' => 'U', 'ų' => 'u',
|
| 397 |
+
'Ŵ' => 'W', 'ŵ' => 'w',
|
| 398 |
+
'Ŷ' => 'Y', 'ŷ' => 'y',
|
| 399 |
+
'Ÿ' => 'Y', 'Ź' => 'Z',
|
| 400 |
+
'ź' => 'z', 'Ż' => 'Z',
|
| 401 |
+
'ż' => 'z', 'Ž' => 'Z',
|
| 402 |
+
'ž' => 'z', 'ſ' => 's',
|
| 403 |
+
// Decompositions for Latin Extended-B
|
| 404 |
+
'Ș' => 'S', 'ș' => 's',
|
| 405 |
+
'Ț' => 'T', 'ț' => 't',
|
| 406 |
+
// Euro Sign
|
| 407 |
+
'€' => 'E',
|
| 408 |
+
// GBP (Pound) Sign
|
| 409 |
+
'£' => '',
|
| 410 |
+
// Vowels with diacritic (Vietnamese)
|
| 411 |
+
// unmarked
|
| 412 |
+
'Ơ' => 'O', 'ơ' => 'o',
|
| 413 |
+
'Ư' => 'U', 'ư' => 'u',
|
| 414 |
+
// grave accent
|
| 415 |
+
'Ầ' => 'A', 'ầ' => 'a',
|
| 416 |
+
'Ằ' => 'A', 'ằ' => 'a',
|
| 417 |
+
'Ề' => 'E', 'ề' => 'e',
|
| 418 |
+
'Ồ' => 'O', 'ồ' => 'o',
|
| 419 |
+
'Ờ' => 'O', 'ờ' => 'o',
|
| 420 |
+
'Ừ' => 'U', 'ừ' => 'u',
|
| 421 |
+
'Ỳ' => 'Y', 'ỳ' => 'y',
|
| 422 |
+
// hook
|
| 423 |
+
'Ả' => 'A', 'ả' => 'a',
|
| 424 |
+
'Ẩ' => 'A', 'ẩ' => 'a',
|
| 425 |
+
'Ẳ' => 'A', 'ẳ' => 'a',
|
| 426 |
+
'Ẻ' => 'E', 'ẻ' => 'e',
|
| 427 |
+
'Ể' => 'E', 'ể' => 'e',
|
| 428 |
+
'Ỉ' => 'I', 'ỉ' => 'i',
|
| 429 |
+
'Ỏ' => 'O', 'ỏ' => 'o',
|
| 430 |
+
'Ổ' => 'O', 'ổ' => 'o',
|
| 431 |
+
'Ở' => 'O', 'ở' => 'o',
|
| 432 |
+
'Ủ' => 'U', 'ủ' => 'u',
|
| 433 |
+
'Ử' => 'U', 'ử' => 'u',
|
| 434 |
+
'Ỷ' => 'Y', 'ỷ' => 'y',
|
| 435 |
+
// tilde
|
| 436 |
+
'Ẫ' => 'A', 'ẫ' => 'a',
|
| 437 |
+
'Ẵ' => 'A', 'ẵ' => 'a',
|
| 438 |
+
'Ẽ' => 'E', 'ẽ' => 'e',
|
| 439 |
+
'Ễ' => 'E', 'ễ' => 'e',
|
| 440 |
+
'Ỗ' => 'O', 'ỗ' => 'o',
|
| 441 |
+
'Ỡ' => 'O', 'ỡ' => 'o',
|
| 442 |
+
'Ữ' => 'U', 'ữ' => 'u',
|
| 443 |
+
'Ỹ' => 'Y', 'ỹ' => 'y',
|
| 444 |
+
// acute accent
|
| 445 |
+
'Ấ' => 'A', 'ấ' => 'a',
|
| 446 |
+
'Ắ' => 'A', 'ắ' => 'a',
|
| 447 |
+
'Ế' => 'E', 'ế' => 'e',
|
| 448 |
+
'Ố' => 'O', 'ố' => 'o',
|
| 449 |
+
'Ớ' => 'O', 'ớ' => 'o',
|
| 450 |
+
'Ứ' => 'U', 'ứ' => 'u',
|
| 451 |
+
// dot below
|
| 452 |
+
'Ạ' => 'A', 'ạ' => 'a',
|
| 453 |
+
'Ậ' => 'A', 'ậ' => 'a',
|
| 454 |
+
'Ặ' => 'A', 'ặ' => 'a',
|
| 455 |
+
'Ẹ' => 'E', 'ẹ' => 'e',
|
| 456 |
+
'Ệ' => 'E', 'ệ' => 'e',
|
| 457 |
+
'Ị' => 'I', 'ị' => 'i',
|
| 458 |
+
'Ọ' => 'O', 'ọ' => 'o',
|
| 459 |
+
'Ộ' => 'O', 'ộ' => 'o',
|
| 460 |
+
'Ợ' => 'O', 'ợ' => 'o',
|
| 461 |
+
'Ụ' => 'U', 'ụ' => 'u',
|
| 462 |
+
'Ự' => 'U', 'ự' => 'u',
|
| 463 |
+
'Ỵ' => 'Y', 'ỵ' => 'y',
|
| 464 |
+
// Vowels with diacritic (Chinese, Hanyu Pinyin)
|
| 465 |
+
'ɑ' => 'a',
|
| 466 |
+
// macron
|
| 467 |
+
'Ǖ' => 'U', 'ǖ' => 'u',
|
| 468 |
+
// acute accent
|
| 469 |
+
'Ǘ' => 'U', 'ǘ' => 'u',
|
| 470 |
+
// caron
|
| 471 |
+
'Ǎ' => 'A', 'ǎ' => 'a',
|
| 472 |
+
'Ǐ' => 'I', 'ǐ' => 'i',
|
| 473 |
+
'Ǒ' => 'O', 'ǒ' => 'o',
|
| 474 |
+
'Ǔ' => 'U', 'ǔ' => 'u',
|
| 475 |
+
'Ǚ' => 'U', 'ǚ' => 'u',
|
| 476 |
+
// grave accent
|
| 477 |
+
'Ǜ' => 'U', 'ǜ' => 'u',
|
| 478 |
+
);
|
| 479 |
+
|
| 480 |
+
// Used for locale-specific rules
|
| 481 |
+
$trp = TRP_Translate_Press::get_trp_instance();
|
| 482 |
+
$trp_settings = $trp->get_component( 'settings' );
|
| 483 |
+
$settings = $trp_settings->get_settings();
|
| 484 |
+
|
| 485 |
+
$default_language= $settings["default-language"];
|
| 486 |
+
$locale = $default_language;
|
| 487 |
+
|
| 488 |
+
if ( 'de_DE' == $locale || 'de_DE_formal' == $locale || 'de_CH' == $locale || 'de_CH_informal' == $locale ) {
|
| 489 |
+
$chars[ 'Ä' ] = 'Ae';
|
| 490 |
+
$chars[ 'ä' ] = 'ae';
|
| 491 |
+
$chars[ 'Ö' ] = 'Oe';
|
| 492 |
+
$chars[ 'ö' ] = 'oe';
|
| 493 |
+
$chars[ 'Ü' ] = 'Ue';
|
| 494 |
+
$chars[ 'ü' ] = 'ue';
|
| 495 |
+
$chars[ 'ß' ] = 'ss';
|
| 496 |
+
} elseif ( 'da_DK' === $locale ) {
|
| 497 |
+
$chars[ 'Æ' ] = 'Ae';
|
| 498 |
+
$chars[ 'æ' ] = 'ae';
|
| 499 |
+
$chars[ 'Ø' ] = 'Oe';
|
| 500 |
+
$chars[ 'ø' ] = 'oe';
|
| 501 |
+
$chars[ 'Å' ] = 'Aa';
|
| 502 |
+
$chars[ 'å' ] = 'aa';
|
| 503 |
+
} elseif ( 'ca' === $locale ) {
|
| 504 |
+
$chars[ 'l·l' ] = 'll';
|
| 505 |
+
} elseif ( 'sr_RS' === $locale || 'bs_BA' === $locale ) {
|
| 506 |
+
$chars[ 'Đ' ] = 'DJ';
|
| 507 |
+
$chars[ 'đ' ] = 'dj';
|
| 508 |
+
}
|
| 509 |
+
|
| 510 |
+
$string = strtr($string, $chars);
|
| 511 |
+
} else {
|
| 512 |
+
$chars = array();
|
| 513 |
+
// Assume ISO-8859-1 if not UTF-8
|
| 514 |
+
$chars['in'] = "\x80\x83\x8a\x8e\x9a\x9e"
|
| 515 |
+
."\x9f\xa2\xa5\xb5\xc0\xc1\xc2"
|
| 516 |
+
."\xc3\xc4\xc5\xc7\xc8\xc9\xca"
|
| 517 |
+
."\xcb\xcc\xcd\xce\xcf\xd1\xd2"
|
| 518 |
+
."\xd3\xd4\xd5\xd6\xd8\xd9\xda"
|
| 519 |
+
."\xdb\xdc\xdd\xe0\xe1\xe2\xe3"
|
| 520 |
+
."\xe4\xe5\xe7\xe8\xe9\xea\xeb"
|
| 521 |
+
."\xec\xed\xee\xef\xf1\xf2\xf3"
|
| 522 |
+
."\xf4\xf5\xf6\xf8\xf9\xfa\xfb"
|
| 523 |
+
."\xfc\xfd\xff";
|
| 524 |
+
|
| 525 |
+
$chars['out'] = "EfSZszYcYuAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy";
|
| 526 |
+
|
| 527 |
+
$string = strtr($string, $chars['in'], $chars['out']);
|
| 528 |
+
$double_chars = array();
|
| 529 |
+
$double_chars['in'] = array("\x8c", "\x9c", "\xc6", "\xd0", "\xde", "\xdf", "\xe6", "\xf0", "\xfe");
|
| 530 |
+
$double_chars['out'] = array('OE', 'oe', 'AE', 'DH', 'TH', 'ss', 'ae', 'dh', 'th');
|
| 531 |
+
$string = str_replace($double_chars['in'], $double_chars['out'], $string);
|
| 532 |
+
}
|
| 533 |
+
|
| 534 |
+
return $string;
|
| 535 |
+
};
|
index.php
CHANGED
|
@@ -3,7 +3,7 @@
|
|
| 3 |
Plugin Name: TranslatePress - Multilingual
|
| 4 |
Plugin URI: https://translatepress.com/
|
| 5 |
Description: Experience a better way of translating your WordPress site, with full support for WooCommerce and site builders.
|
| 6 |
-
Version: 1.3.
|
| 7 |
Author: Cozmoslabs, Razvan Mocanu, Madalin Ungureanu, Cristophor Hurduban
|
| 8 |
Author URI: https://cozmoslabs.com/
|
| 9 |
Text Domain: translatepress-multilingual
|
| 3 |
Plugin Name: TranslatePress - Multilingual
|
| 4 |
Plugin URI: https://translatepress.com/
|
| 5 |
Description: Experience a better way of translating your WordPress site, with full support for WooCommerce and site builders.
|
| 6 |
+
Version: 1.3.1
|
| 7 |
Author: Cozmoslabs, Razvan Mocanu, Madalin Ungureanu, Cristophor Hurduban
|
| 8 |
Author URI: https://cozmoslabs.com/
|
| 9 |
Text Domain: translatepress-multilingual
|
languages/translatepress-multilingual.catalog.php
CHANGED
|
@@ -77,8 +77,8 @@
|
|
| 77 |
<?php __("Google Translate", "translatepress-multilingual"); ?>
|
| 78 |
<?php __("Enable or disable the automatic translation of the site with Google Translate. Only untranslated strings will receive a translation.<br>You can later edit these automatic translations.<br>Note: Not all languages support automatic translation. Please consult the <a href=\"https://cloud.google.com/translate/docs/languages\" target=\"_blank\" title=\"Automatic translation supported languages.\">supported languages list</a>. ", "translatepress-multilingual"); ?>
|
| 79 |
<?php __("Google Translate API Key", "translatepress-multilingual"); ?>
|
| 80 |
-
<?php __("Test api key
|
| 81 |
-
<?php __("Visit this <a href=\"https://
|
| 82 |
<?php __("Language Switcher", "translatepress-multilingual"); ?>
|
| 83 |
<?php __("Shortcode ", "translatepress-multilingual"); ?>
|
| 84 |
<?php __("Use shortcode on any page or widget.", "translatepress-multilingual"); ?>
|
| 77 |
<?php __("Google Translate", "translatepress-multilingual"); ?>
|
| 78 |
<?php __("Enable or disable the automatic translation of the site with Google Translate. Only untranslated strings will receive a translation.<br>You can later edit these automatic translations.<br>Note: Not all languages support automatic translation. Please consult the <a href=\"https://cloud.google.com/translate/docs/languages\" target=\"_blank\" title=\"Automatic translation supported languages.\">supported languages list</a>. ", "translatepress-multilingual"); ?>
|
| 79 |
<?php __("Google Translate API Key", "translatepress-multilingual"); ?>
|
| 80 |
+
<?php __("Test api key", "translatepress-multilingual"); ?>
|
| 81 |
+
<?php __("Visit this <a href=\"https://cloud.google.com/docs/authentication/api-keys\" target=\"_blank\">link</a> to see how you can set up an API key. ", "translatepress-multilingual"); ?>
|
| 82 |
<?php __("Language Switcher", "translatepress-multilingual"); ?>
|
| 83 |
<?php __("Shortcode ", "translatepress-multilingual"); ?>
|
| 84 |
<?php __("Use shortcode on any page or widget.", "translatepress-multilingual"); ?>
|
languages/translatepress-multilingual.pot
CHANGED
|
@@ -21,7 +21,7 @@ msgstr ""
|
|
| 21 |
msgid "Limit this menu item to the following languages"
|
| 22 |
msgstr ""
|
| 23 |
|
| 24 |
-
#: ../tp-add-on-seo-pack/class-seo-pack.php:
|
| 25 |
msgid "The Yoast SEO Sitemaps will now contain the default language slug: example.com/en/sitemap_index.xml <br/> This works perfectly, just take it into account when you submit the sitemap to Google."
|
| 26 |
msgstr ""
|
| 27 |
|
|
@@ -205,35 +205,35 @@ msgstr ""
|
|
| 205 |
msgid "Security check"
|
| 206 |
msgstr ""
|
| 207 |
|
| 208 |
-
#: ../translatepress/includes/class-translation-render.php:
|
| 209 |
msgid "Description"
|
| 210 |
msgstr ""
|
| 211 |
|
| 212 |
-
#: ../translatepress/includes/class-translation-render.php:
|
| 213 |
msgid "OG Title"
|
| 214 |
msgstr ""
|
| 215 |
|
| 216 |
-
#: ../translatepress/includes/class-translation-render.php:
|
| 217 |
msgid "OG Site Name"
|
| 218 |
msgstr ""
|
| 219 |
|
| 220 |
-
#: ../translatepress/includes/class-translation-render.php:
|
| 221 |
msgid "OG Description"
|
| 222 |
msgstr ""
|
| 223 |
|
| 224 |
-
#: ../translatepress/includes/class-translation-render.php:
|
| 225 |
msgid "Twitter Title"
|
| 226 |
msgstr ""
|
| 227 |
|
| 228 |
-
#: ../translatepress/includes/class-translation-render.php:
|
| 229 |
msgid "Twitter Description"
|
| 230 |
msgstr ""
|
| 231 |
|
| 232 |
-
#: ../translatepress/includes/class-translation-render.php:
|
| 233 |
msgid "Post Slug"
|
| 234 |
msgstr ""
|
| 235 |
|
| 236 |
-
#: ../translatepress/includes/class-translation-render.php:
|
| 237 |
msgid "Page Title"
|
| 238 |
msgstr ""
|
| 239 |
|
|
@@ -326,11 +326,11 @@ msgid "Google Translate API Key"
|
|
| 326 |
msgstr ""
|
| 327 |
|
| 328 |
#: ../translatepress/partials/main-settings-page.php:92
|
| 329 |
-
msgid "Test api key
|
| 330 |
msgstr ""
|
| 331 |
|
| 332 |
#: ../translatepress/partials/main-settings-page.php:94
|
| 333 |
-
msgid "Visit this <a href=\"https://
|
| 334 |
msgstr ""
|
| 335 |
|
| 336 |
#: ../translatepress/partials/main-settings-page.php:101
|
| 21 |
msgid "Limit this menu item to the following languages"
|
| 22 |
msgstr ""
|
| 23 |
|
| 24 |
+
#: ../tp-add-on-seo-pack/class-seo-pack.php:155
|
| 25 |
msgid "The Yoast SEO Sitemaps will now contain the default language slug: example.com/en/sitemap_index.xml <br/> This works perfectly, just take it into account when you submit the sitemap to Google."
|
| 26 |
msgstr ""
|
| 27 |
|
| 205 |
msgid "Security check"
|
| 206 |
msgstr ""
|
| 207 |
|
| 208 |
+
#: ../translatepress/includes/class-translation-render.php:163
|
| 209 |
msgid "Description"
|
| 210 |
msgstr ""
|
| 211 |
|
| 212 |
+
#: ../translatepress/includes/class-translation-render.php:169
|
| 213 |
msgid "OG Title"
|
| 214 |
msgstr ""
|
| 215 |
|
| 216 |
+
#: ../translatepress/includes/class-translation-render.php:175
|
| 217 |
msgid "OG Site Name"
|
| 218 |
msgstr ""
|
| 219 |
|
| 220 |
+
#: ../translatepress/includes/class-translation-render.php:181
|
| 221 |
msgid "OG Description"
|
| 222 |
msgstr ""
|
| 223 |
|
| 224 |
+
#: ../translatepress/includes/class-translation-render.php:187
|
| 225 |
msgid "Twitter Title"
|
| 226 |
msgstr ""
|
| 227 |
|
| 228 |
+
#: ../translatepress/includes/class-translation-render.php:193
|
| 229 |
msgid "Twitter Description"
|
| 230 |
msgstr ""
|
| 231 |
|
| 232 |
+
#: ../translatepress/includes/class-translation-render.php:199
|
| 233 |
msgid "Post Slug"
|
| 234 |
msgstr ""
|
| 235 |
|
| 236 |
+
#: ../translatepress/includes/class-translation-render.php:203
|
| 237 |
msgid "Page Title"
|
| 238 |
msgstr ""
|
| 239 |
|
| 326 |
msgstr ""
|
| 327 |
|
| 328 |
#: ../translatepress/partials/main-settings-page.php:92
|
| 329 |
+
msgid "Test api key"
|
| 330 |
msgstr ""
|
| 331 |
|
| 332 |
#: ../translatepress/partials/main-settings-page.php:94
|
| 333 |
+
msgid "Visit this <a href=\"https://cloud.google.com/docs/authentication/api-keys\" target=\"_blank\">link</a> to see how you can set up an API key. "
|
| 334 |
msgstr ""
|
| 335 |
|
| 336 |
#: ../translatepress/partials/main-settings-page.php:101
|
partials/main-settings-page.php
CHANGED
|
@@ -89,9 +89,9 @@
|
|
| 89 |
<th scope="row"><?php _e( 'Google Translate API Key', 'translatepress-multilingual' ); ?> </th>
|
| 90 |
<td>
|
| 91 |
<input type="text" id="trp-g-translate-key" class="trp-text-input" name="trp_settings[g-translate-key]" value="<?php if( !empty( $this->settings['g-translate-key'] ) ) echo esc_attr( $this->settings['g-translate-key']);?>"/>
|
| 92 |
-
<?php if( !empty( $this->settings['g-translate-key'] ) ) echo '<a href="'.admin_url( 'admin.php?page=trp_test_google_key_page' ).'">'.__( "Test api key
|
| 93 |
<p class="description">
|
| 94 |
-
<?php _e( 'Visit this <a href="https://
|
| 95 |
</p>
|
| 96 |
</td>
|
| 97 |
|
| 89 |
<th scope="row"><?php _e( 'Google Translate API Key', 'translatepress-multilingual' ); ?> </th>
|
| 90 |
<td>
|
| 91 |
<input type="text" id="trp-g-translate-key" class="trp-text-input" name="trp_settings[g-translate-key]" value="<?php if( !empty( $this->settings['g-translate-key'] ) ) echo esc_attr( $this->settings['g-translate-key']);?>"/>
|
| 92 |
+
<?php if( !empty( $this->settings['g-translate-key'] ) ) echo '<a href="'.admin_url( 'admin.php?page=trp_test_google_key_page' ).'">'.__( "Test api key", 'translatepress-multilingual' ).'</a>'; ?>
|
| 93 |
<p class="description">
|
| 94 |
+
<?php _e( 'Visit this <a href="https://cloud.google.com/docs/authentication/api-keys" target="_blank">link</a> to see how you can set up an API key. ', 'translatepress-multilingual' ); ?>
|
| 95 |
</p>
|
| 96 |
</td>
|
| 97 |
|
readme.txt
CHANGED
|
@@ -4,7 +4,7 @@ Donate link: https://www.cozmoslabs.com/
|
|
| 4 |
Tags: translate, translation, multilingual, automatic translation, bilingual, front-end translation, google translate, language
|
| 5 |
Requires at least: 3.1.0
|
| 6 |
Tested up to: 4.9.8
|
| 7 |
-
Stable tag: 1.3.
|
| 8 |
License: GPLv2 or later
|
| 9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
| 10 |
|
|
@@ -118,6 +118,16 @@ For more information please check out [TranslatePress documentation](https://tra
|
|
| 118 |
6. Menu Language Switcher
|
| 119 |
|
| 120 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 121 |
= 1.3.0 =
|
| 122 |
* Added support for word trim when the default language is japanese, chinese or thai.
|
| 123 |
* Exluded wp_trim_words funtion from our gettext filter to prevent som issues
|
| 4 |
Tags: translate, translation, multilingual, automatic translation, bilingual, front-end translation, google translate, language
|
| 5 |
Requires at least: 3.1.0
|
| 6 |
Tested up to: 4.9.8
|
| 7 |
+
Stable tag: 1.3.1
|
| 8 |
License: GPLv2 or later
|
| 9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
| 10 |
|
| 118 |
6. Menu Language Switcher
|
| 119 |
|
| 120 |
== Changelog ==
|
| 121 |
+
= 1.3.1 =
|
| 122 |
+
* Fixed Woocommerce translation of permalinks
|
| 123 |
+
* Added support for remove_accents to be based on default language when called from the sanitize_title function
|
| 124 |
+
* Added support for translating JSON found in custom ajax request
|
| 125 |
+
* Added better REST compatibility
|
| 126 |
+
* Added compatibility for Peepso plugin
|
| 127 |
+
* Fixed TranslatePress roken link to google translate set up api key on settings page
|
| 128 |
+
* Corrected flags for Arabic and Bengali languages
|
| 129 |
+
* Fixed issue with multiple slashes being added when the URL had extra get parameters
|
| 130 |
+
|
| 131 |
= 1.3.0 =
|
| 132 |
* Added support for word trim when the default language is japanese, chinese or thai.
|
| 133 |
* Exluded wp_trim_words funtion from our gettext filter to prevent som issues
|
