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 | TranslatePress – Translate Multilingual sites |
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
|