Version Description
- Fix wptexturize changing characters in secondary languages
- Mini refactoring of the url_is_file() function
- Refactor get_url_for_language() to not use the global var
- We no longer add the language path to links to actual files on the server
Download this release
Release Info
Developer | madalin.ungureanu |
Plugin | TranslatePress – Translate Multilingual sites |
Version | 1.2.0 |
Comparing to | |
See all releases |
Code changes from version 1.1.9 to 1.2.0
- class-translate-press.php +4 -1
- includes/class-translation-render.php +39 -1
- includes/class-url-converter.php +40 -18
- includes/functions.php +3 -3
- index.php +1 -1
- languages/translatepress-multilingual.pot +8 -8
- readme.txt +251 -245
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.
|
43 |
|
44 |
$this->load_dependencies();
|
45 |
$this->initialize_components();
|
@@ -189,6 +189,9 @@ class TRP_Translate_Press{
|
|
189 |
/* hide php ors and notice when we are storing strings in db */
|
190 |
$this->loader->add_action( 'wp', $this->translation_render, 'trp_debug_mode_off' );
|
191 |
|
|
|
|
|
|
|
192 |
/* ?or init ? hook here where you can change the $current_user global */
|
193 |
$this->loader->add_action( 'init', $this->translation_manager, 'trp_view_as_user' );
|
194 |
|
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.2.0' );
|
43 |
|
44 |
$this->load_dependencies();
|
45 |
$this->initialize_components();
|
189 |
/* hide php ors and notice when we are storing strings in db */
|
190 |
$this->loader->add_action( 'wp', $this->translation_render, 'trp_debug_mode_off' );
|
191 |
|
192 |
+
/* fix wptexturize to always replace with the default translated strings */
|
193 |
+
$this->loader->add_action( 'gettext_with_context', $this->translation_render, 'fix_wptexturize_characters', 999, 4 );
|
194 |
+
|
195 |
/* ?or init ? hook here where you can change the $current_user global */
|
196 |
$this->loader->add_action( 'init', $this->translation_manager, 'trp_view_as_user' );
|
197 |
|
includes/class-translation-render.php
CHANGED
@@ -596,7 +596,7 @@ class TRP_Translation_Render{
|
|
596 |
* @param string $url Url.
|
597 |
* @return bool Whether given url links to an external domain.
|
598 |
*/
|
599 |
-
|
600 |
// Abort if parameter URL is empty
|
601 |
if( empty($url) ) {
|
602 |
return false;
|
@@ -949,4 +949,42 @@ class TRP_Translation_Render{
|
|
949 |
$output = str_replace( ']]>', ']]>', $output );
|
950 |
return $output;
|
951 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
952 |
}
|
596 |
* @param string $url Url.
|
597 |
* @return bool Whether given url links to an external domain.
|
598 |
*/
|
599 |
+
public function is_external_link( $url ){
|
600 |
// Abort if parameter URL is empty
|
601 |
if( empty($url) ) {
|
602 |
return false;
|
949 |
$output = str_replace( ']]>', ']]>', $output );
|
950 |
return $output;
|
951 |
}
|
952 |
+
|
953 |
+
/**
|
954 |
+
* Function always renders the default language wptexturize characters instead of the translated ones for secondary languages.
|
955 |
+
* @param string
|
956 |
+
* @param string
|
957 |
+
* @param string
|
958 |
+
* @param string
|
959 |
+
* @return string
|
960 |
+
*/
|
961 |
+
function fix_wptexturize_characters( $translated, $text, $context, $domain ){
|
962 |
+
global $TRP_LANGUAGE;
|
963 |
+
$trp = TRP_Translate_Press::get_trp_instance();
|
964 |
+
$trp_settings = $trp->get_component( 'settings' );
|
965 |
+
$settings = $trp_settings->get_settings();
|
966 |
+
|
967 |
+
$default_language= $settings["default-language"];
|
968 |
+
|
969 |
+
// it's reversed because the same string ’ is replaced differently based on context and we can't have the same key twice on an array
|
970 |
+
$list_of_context_text = array(
|
971 |
+
'opening curly double quote' => '“',
|
972 |
+
'closing curly double quote' => '”',
|
973 |
+
'apostrophe' => '’',
|
974 |
+
'prime' => '′',
|
975 |
+
'double prime' => '″',
|
976 |
+
'opening curly single quote' => '‘',
|
977 |
+
'closing curly single quote' => '’',
|
978 |
+
'en dash' => '–',
|
979 |
+
'em dash' => '—',
|
980 |
+
'Comma-separated list of words to texturize in your language' => "'tain't,'twere,'twas,'tis,'twill,'til,'bout,'nuff,'round,'cause,'em",
|
981 |
+
'Comma-separated list of replacement words in your language' => '’tain’t,’twere,’twas,’tis,’twill,’til,’bout,’nuff,’round,’cause,’em'
|
982 |
+
);
|
983 |
+
|
984 |
+
if( $default_language != $TRP_LANGUAGE && array_key_exists($context, $list_of_context_text) && in_array($text, $list_of_context_text) ){
|
985 |
+
return trp_x( $text, $context, '', $default_language );
|
986 |
+
}
|
987 |
+
|
988 |
+
return $translated;
|
989 |
+
}
|
990 |
}
|
includes/class-url-converter.php
CHANGED
@@ -165,7 +165,8 @@ class TRP_Url_Converter {
|
|
165 |
* @return string
|
166 |
*/
|
167 |
public function get_url_for_language ( $language = null, $url = null, $trp_link_is_processed = '#TRPLINKPROCESSED') {
|
168 |
-
global $
|
|
|
169 |
|
170 |
// we're appending $trp_link_is_processed string to the end of each processed link so we don't process them again in the render class.
|
171 |
// we're stripping this from each url in the render class
|
@@ -175,41 +176,43 @@ class TRP_Url_Converter {
|
|
175 |
$trp_link_is_processed = '';
|
176 |
}
|
177 |
|
|
|
|
|
|
|
|
|
178 |
$trp_language_copy = $TRP_LANGUAGE;
|
179 |
|
180 |
if ( empty( $language ) ) {
|
181 |
$language = $TRP_LANGUAGE;
|
182 |
}
|
183 |
|
184 |
-
|
185 |
-
|
|
|
186 |
|
187 |
-
|
188 |
-
|
189 |
$TRP_LANGUAGE = $language;
|
190 |
-
$new_url = get_permalink( $
|
191 |
$TRP_LANGUAGE = $trp_language_copy;
|
192 |
-
}else{
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
// If no $post is set we simply replace the current language root with the new language root.
|
197 |
-
// we can't assume the URL's have / at the end so we need to untrailingslashit both $abs_home and $new_language_root
|
198 |
-
$abs_home = trailingslashit( $this->get_abs_home() );
|
199 |
|
200 |
$current_lang_root = untrailingslashit($abs_home . $this->get_url_slug( $TRP_LANGUAGE ));
|
201 |
$new_language_root = untrailingslashit($abs_home . $this->get_url_slug( $language ) );
|
202 |
|
203 |
if( $this->get_lang_from_url_string($url) === null ){
|
204 |
// this is for forcing the custom url's. We expect them to not have a language in them.
|
205 |
-
|
206 |
-
|
207 |
$new_url = str_replace($current_lang_root, $new_language_root, $url);
|
208 |
-
|
209 |
-
|
210 |
}
|
211 |
|
212 |
-
|
213 |
/* fix links for woocommerce on language switcher for product categories and product tags */
|
214 |
if( class_exists( 'WooCommerce' ) ){
|
215 |
if ( is_product_category() ) {
|
@@ -230,6 +233,25 @@ class TRP_Url_Converter {
|
|
230 |
return $new_url . $trp_link_is_processed ;
|
231 |
}
|
232 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
233 |
/**
|
234 |
* Get language code slug to use in url.
|
235 |
*
|
165 |
* @return string
|
166 |
*/
|
167 |
public function get_url_for_language ( $language = null, $url = null, $trp_link_is_processed = '#TRPLINKPROCESSED') {
|
168 |
+
global $TRP_LANGUAGE;
|
169 |
+
$new_url = '';
|
170 |
|
171 |
// we're appending $trp_link_is_processed string to the end of each processed link so we don't process them again in the render class.
|
172 |
// we're stripping this from each url in the render class
|
176 |
$trp_link_is_processed = '';
|
177 |
}
|
178 |
|
179 |
+
if ( $this->url_is_file($url) ){
|
180 |
+
return $url . $trp_link_is_processed;
|
181 |
+
}
|
182 |
+
|
183 |
$trp_language_copy = $TRP_LANGUAGE;
|
184 |
|
185 |
if ( empty( $language ) ) {
|
186 |
$language = $TRP_LANGUAGE;
|
187 |
}
|
188 |
|
189 |
+
if( empty( $url ) ) {
|
190 |
+
$url = $this->cur_page_url();
|
191 |
+
}
|
192 |
|
193 |
+
$post_id = url_to_postid($url);
|
194 |
+
if( $post_id ){
|
195 |
$TRP_LANGUAGE = $language;
|
196 |
+
$new_url = get_permalink( $post_id );
|
197 |
$TRP_LANGUAGE = $trp_language_copy;
|
198 |
+
} else {
|
199 |
+
// If no $post_id is set we simply replace the current language root with the new language root.
|
200 |
+
// we can't assume the URL's have / at the end so we need to untrailingslashit both $abs_home and $new_language_root
|
201 |
+
$abs_home = trailingslashit( $this->get_abs_home() );
|
|
|
|
|
|
|
202 |
|
203 |
$current_lang_root = untrailingslashit($abs_home . $this->get_url_slug( $TRP_LANGUAGE ));
|
204 |
$new_language_root = untrailingslashit($abs_home . $this->get_url_slug( $language ) );
|
205 |
|
206 |
if( $this->get_lang_from_url_string($url) === null ){
|
207 |
// this is for forcing the custom url's. We expect them to not have a language in them.
|
208 |
+
$new_url = str_replace(untrailingslashit($abs_home), $new_language_root, $url);
|
209 |
+
} else {
|
210 |
$new_url = str_replace($current_lang_root, $new_language_root, $url);
|
211 |
+
}
|
212 |
+
$new_url =apply_filters( 'trp_get_url_for_language', $new_url, $url, $language, $abs_home, $current_lang_root, $new_language_root );
|
213 |
}
|
214 |
|
215 |
+
|
216 |
/* fix links for woocommerce on language switcher for product categories and product tags */
|
217 |
if( class_exists( 'WooCommerce' ) ){
|
218 |
if ( is_product_category() ) {
|
233 |
return $new_url . $trp_link_is_processed ;
|
234 |
}
|
235 |
|
236 |
+
/**
|
237 |
+
* Check is a url is an actual file on the server, in which case don't add a language param.
|
238 |
+
*
|
239 |
+
* @param string $url
|
240 |
+
* @return bool
|
241 |
+
*/
|
242 |
+
public function url_is_file( $url = null ){
|
243 |
+
$trp = TRP_Translate_Press::get_trp_instance();
|
244 |
+
$translation_render = $trp->get_component("translation_render");
|
245 |
+
|
246 |
+
if ( empty( $url ) || $translation_render->is_external_link($url) ){
|
247 |
+
return false;
|
248 |
+
}
|
249 |
+
|
250 |
+
$path = untrailingslashit(ABSPATH) . str_replace($this->get_abs_home(), '', $url);
|
251 |
+
|
252 |
+
return is_file($path);
|
253 |
+
}
|
254 |
+
|
255 |
/**
|
256 |
* Get language code slug to use in url.
|
257 |
*
|
includes/functions.php
CHANGED
@@ -79,7 +79,6 @@ function trp_x( $text, $context, $domain, $language ){
|
|
79 |
return $text;
|
80 |
}
|
81 |
|
82 |
-
|
83 |
/**
|
84 |
* Function that tries to find the path for a translation file defined by textdomain and language
|
85 |
* @param $domain the textdomain of the string that you want the translation for
|
@@ -95,8 +94,9 @@ function trp_find_translation_location_for_domain( $domain, $language ){
|
|
95 |
}
|
96 |
elseif ( file_exists( WP_LANG_DIR . '/themes/'. $domain .'-' . $language . '.mo') ){
|
97 |
$path = WP_LANG_DIR . '/themes/'. $domain .'-' . $language . '.mo';
|
98 |
-
}
|
99 |
-
|
|
|
100 |
$possible_translation_folders = array( '', 'languages/', 'language/', 'translations/', 'translation/', 'lang/' );
|
101 |
foreach( $possible_translation_folders as $possible_translation_folder ){
|
102 |
if (file_exists(get_template_directory() . '/' . $possible_translation_folder . $domain . '-' . $language . '.mo')) {
|
79 |
return $text;
|
80 |
}
|
81 |
|
|
|
82 |
/**
|
83 |
* Function that tries to find the path for a translation file defined by textdomain and language
|
84 |
* @param $domain the textdomain of the string that you want the translation for
|
94 |
}
|
95 |
elseif ( file_exists( WP_LANG_DIR . '/themes/'. $domain .'-' . $language . '.mo') ){
|
96 |
$path = WP_LANG_DIR . '/themes/'. $domain .'-' . $language . '.mo';
|
97 |
+
} elseif( $domain === '' && file_exists( WP_LANG_DIR . '/' . $language . '.mo')){
|
98 |
+
$path = WP_LANG_DIR . '/' . $language . '.mo';
|
99 |
+
} else {
|
100 |
$possible_translation_folders = array( '', 'languages/', 'language/', 'translations/', 'translation/', 'lang/' );
|
101 |
foreach( $possible_translation_folders as $possible_translation_folder ){
|
102 |
if (file_exists(get_template_directory() . '/' . $possible_translation_folder . $domain . '-' . $language . '.mo')) {
|
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.
|
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.2.0
|
7 |
Author: Cozmoslabs, Razvan Mocanu, Madalin Ungureanu, Cristophor Hurduban
|
8 |
Author URI: https://cozmoslabs.com/
|
9 |
Text Domain: translatepress-multilingual
|
languages/translatepress-multilingual.pot
CHANGED
@@ -21,23 +21,23 @@ msgstr ""
|
|
21 |
msgid "Limit this menu item to the following languages"
|
22 |
msgstr ""
|
23 |
|
24 |
-
#: ../tp-add-on-browse-as-other-roles/partials/license-settings-page.php:4, ../tp-add-on-extra-languages/partials/license-settings-page.php:4, ../tp-add-on-navigation-based-on-language/partials/license-settings-page.php:4, ../tp-add-on-seo-pack/partials/license-settings-page.php:4, ../translatepress/partials/addons-settings-page.php:3, ../translatepress/partials/main-settings-page.php:5, ../translatepress/partials/test-google-key-settings-page.php:17,
|
25 |
msgid "TranslatePress Settings"
|
26 |
msgstr ""
|
27 |
|
28 |
-
#: ../tp-add-on-browse-as-other-roles/partials/license-settings-page.php:10, ../tp-add-on-extra-languages/partials/license-settings-page.php:10, ../tp-add-on-navigation-based-on-language/partials/license-settings-page.php:10, ../tp-add-on-seo-pack/partials/license-settings-page.php:10,
|
29 |
msgid "License Key"
|
30 |
msgstr ""
|
31 |
|
32 |
-
#: ../tp-add-on-browse-as-other-roles/partials/license-settings-page.php:15, ../tp-add-on-extra-languages/partials/license-settings-page.php:15, ../tp-add-on-navigation-based-on-language/partials/license-settings-page.php:15, ../tp-add-on-seo-pack/partials/license-settings-page.php:15,
|
33 |
msgid "Enter your license key."
|
34 |
msgstr ""
|
35 |
|
36 |
-
#: ../tp-add-on-browse-as-other-roles/partials/license-settings-page.php:22, ../tp-add-on-browse-as-other-roles/partials/license-settings-page.php:31, ../tp-add-on-extra-languages/partials/license-settings-page.php:22, ../tp-add-on-extra-languages/partials/license-settings-page.php:31, ../tp-add-on-navigation-based-on-language/partials/license-settings-page.php:22, ../tp-add-on-navigation-based-on-language/partials/license-settings-page.php:31, ../tp-add-on-seo-pack/partials/license-settings-page.php:22, ../tp-add-on-seo-pack/partials/license-settings-page.php:31,
|
37 |
msgid "Activate License"
|
38 |
msgstr ""
|
39 |
|
40 |
-
#: ../tp-add-on-browse-as-other-roles/partials/license-settings-page.php:28, ../tp-add-on-extra-languages/partials/license-settings-page.php:28, ../tp-add-on-navigation-based-on-language/partials/license-settings-page.php:28, ../tp-add-on-seo-pack/partials/license-settings-page.php:28,
|
41 |
msgid "Deactivate License"
|
42 |
msgstr ""
|
43 |
|
@@ -409,14 +409,14 @@ msgstr ""
|
|
409 |
msgid "Learn More"
|
410 |
msgstr ""
|
411 |
|
412 |
-
#:
|
413 |
msgid " TranslatePress Settings"
|
414 |
msgstr ""
|
415 |
|
416 |
-
#:
|
417 |
msgid "Translator"
|
418 |
msgstr ""
|
419 |
|
420 |
-
#:
|
421 |
msgid "Allow this user to translate the website."
|
422 |
msgstr ""
|
21 |
msgid "Limit this menu item to the following languages"
|
22 |
msgstr ""
|
23 |
|
24 |
+
#: ../tp-add-on-browse-as-other-roles/partials/license-settings-page.php:4, ../tp-add-on-extra-languages/partials/license-settings-page.php:4, ../tp-add-on-navigation-based-on-language/partials/license-settings-page.php:4, ../tp-add-on-seo-pack/partials/license-settings-page.php:4, ../translatepress/partials/addons-settings-page.php:3, ../translatepress/partials/main-settings-page.php:5, ../translatepress/partials/test-google-key-settings-page.php:17, partials/license-settings-page.php:4
|
25 |
msgid "TranslatePress Settings"
|
26 |
msgstr ""
|
27 |
|
28 |
+
#: ../tp-add-on-browse-as-other-roles/partials/license-settings-page.php:10, ../tp-add-on-extra-languages/partials/license-settings-page.php:10, ../tp-add-on-navigation-based-on-language/partials/license-settings-page.php:10, ../tp-add-on-seo-pack/partials/license-settings-page.php:10, partials/license-settings-page.php:10
|
29 |
msgid "License Key"
|
30 |
msgstr ""
|
31 |
|
32 |
+
#: ../tp-add-on-browse-as-other-roles/partials/license-settings-page.php:15, ../tp-add-on-extra-languages/partials/license-settings-page.php:15, ../tp-add-on-navigation-based-on-language/partials/license-settings-page.php:15, ../tp-add-on-seo-pack/partials/license-settings-page.php:15, partials/license-settings-page.php:15
|
33 |
msgid "Enter your license key."
|
34 |
msgstr ""
|
35 |
|
36 |
+
#: ../tp-add-on-browse-as-other-roles/partials/license-settings-page.php:22, ../tp-add-on-browse-as-other-roles/partials/license-settings-page.php:31, ../tp-add-on-extra-languages/partials/license-settings-page.php:22, ../tp-add-on-extra-languages/partials/license-settings-page.php:31, ../tp-add-on-navigation-based-on-language/partials/license-settings-page.php:22, ../tp-add-on-navigation-based-on-language/partials/license-settings-page.php:31, ../tp-add-on-seo-pack/partials/license-settings-page.php:22, ../tp-add-on-seo-pack/partials/license-settings-page.php:31, partials/license-settings-page.php:22, partials/license-settings-page.php:31
|
37 |
msgid "Activate License"
|
38 |
msgstr ""
|
39 |
|
40 |
+
#: ../tp-add-on-browse-as-other-roles/partials/license-settings-page.php:28, ../tp-add-on-extra-languages/partials/license-settings-page.php:28, ../tp-add-on-navigation-based-on-language/partials/license-settings-page.php:28, ../tp-add-on-seo-pack/partials/license-settings-page.php:28, partials/license-settings-page.php:28
|
41 |
msgid "Deactivate License"
|
42 |
msgstr ""
|
43 |
|
409 |
msgid "Learn More"
|
410 |
msgstr ""
|
411 |
|
412 |
+
#: includes/class-translator-accounts.php:119
|
413 |
msgid " TranslatePress Settings"
|
414 |
msgstr ""
|
415 |
|
416 |
+
#: includes/class-translator-accounts.php:123, includes/class-translator-accounts.php:124
|
417 |
msgid "Translator"
|
418 |
msgstr ""
|
419 |
|
420 |
+
#: includes/class-translator-accounts.php:128
|
421 |
msgid "Allow this user to translate the website."
|
422 |
msgstr ""
|
readme.txt
CHANGED
@@ -1,246 +1,252 @@
|
|
1 |
-
=== TranslatePress - Translate Multilingual sites ===
|
2 |
-
Contributors: cozmoslabs, razvan.mo, madalin.ungureanu, cristophor
|
3 |
-
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.4
|
7 |
-
Stable tag: 1.
|
8 |
-
License: GPLv2 or later
|
9 |
-
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
-
|
11 |
-
Easily translate your entire site directly from the front-end and go multilingual, with full support for WooCommerce, complex themes and site builders. Integrates with Google Translate.
|
12 |
-
|
13 |
-
== Description ==
|
14 |
-
|
15 |
-
**Experience a better way to translate your WordPress site and go multilingual, directly from the front-end using a friendly user interface.**
|
16 |
-
|
17 |
-
The interface allows you to easily translate the entire page at once, including output from shortcodes, forms and page builders. It also works out of the box with WooCommerce.
|
18 |
-
|
19 |
-
Built the WordPress way, TranslatePress - Multilingual is a GPL and self hosted translation plugin, meaning you'll own all your translations, forever. It's the fastest way to create a bilingual or multilingual site.
|
20 |
-
|
21 |
-
https://www.youtube.com/watch?v=pUlYisvBm8g
|
22 |
-
|
23 |
-
= Multilingual & Translation Features =
|
24 |
-
|
25 |
-
* Translate all your website content directly from the front-end, in a friendly user interface (translation displayed in real-time).
|
26 |
-
* Fully compatible with all themes and plugins
|
27 |
-
* Live preview of your translated pages, as you edit your translations.
|
28 |
-
* Support for both manual and automatic translation (via Google Translate)
|
29 |
-
* Ability to translate dynamic strings (gettext) added by WordPress, plugins and themes.
|
30 |
-
* Integrates with Google Translate, allowing you to set up Automatic Translation using your own Google API key.
|
31 |
-
* Translate larger html blocks using the css class **translation-block**. `<p class="translation-block">Translate <em>everything</em> inside</p>`
|
32 |
-
* Place language switchers anywhere using shortcode **[language-switcher]**, WP menu item or as a floating dropdown.
|
33 |
-
* Editorial control allowing you to publish your language only when all your translations are done
|
34 |
-
* Conditional display content shortcode based on language [trp_language language="en_US"] English content only [/trp_language]
|
35 |
-
* Possibility to edit gettext strings from themes and plugins from english to english, without adding another language. Basically a string-replace functionality.
|
36 |
-
|
37 |
-
Note: this plugin uses the Google Translation API to translate the strings on your site. This feature can be enabled or disabled according to your preferences.
|
38 |
-
|
39 |
-
Users with administrator rights have access to the following translate settings:
|
40 |
-
|
41 |
-
* select default language of the website and one translation language, for bilingual sites
|
42 |
-
* choose whether language switcher should display languages in their native names or English name
|
43 |
-
* force custom links to open in current language
|
44 |
-
* enable or disable url subdirectory for the default language
|
45 |
-
* enable automatic translation via Google Translate
|
46 |
-
|
47 |
-
= Powerful Translation Add-ons =
|
48 |
-
|
49 |
-
TranslatePress - Multilingual has a range of premium [Add-ons](https://translatepress.com/?utm_source=wp.org&utm_medium=tp-description-page&utm_campaign=TPFree) that allow you to extend the power of the translation plugin:
|
50 |
-
|
51 |
-
**Pro Add-ons** (available in the [premium versions](https://translatepress.com/pricing/?utm_source=wp.org&utm_medium=tp-description-page&utm_campaign=TPFree) only)
|
52 |
-
|
53 |
-
* [Extra Languages](https://translatepress.com/docs/addons/seo-pack/?utm_source=wp.org&utm_medium=tp-description-page&utm_campaign=TPFree) - allows you to add an unlimited number of translation languages, with the possibility to publish languages later after you complete the translation
|
54 |
-
* [SEO Pack](https://translatepress.com/docs/addons/multiple-languages/?utm_source=wp.org&utm_medium=tp-description-page&utm_campaign=TPFree) - allows you to translate meta information (like page title, description, url slug, image alt tag, Twitter and Facebook Social Graph tags & more) for boosting your website's SEO and increase traffic
|
55 |
-
* [Translator Accounts](https://translatepress.com/docs/addons/translator-accounts/?utm_source=wp.org&utm_medium=tp-description-page&utm_campaign=TPFree) - create or allow existing users to translate the site without admin rights
|
56 |
-
* [Browse as User Role](https://translatepress.com/docs/addons/browse-as-role/?utm_source=wp.org&utm_medium=tp-description-page&utm_campaign=TPFree) - view and translate content that is visible only to a particular user role
|
57 |
-
* [Navigation Based on Language](https://translatepress.com/docs/addons/navigate-based-language/?utm_source=wp.org&utm_medium=tp-description-page&utm_campaign=TPFree) - configure and display different menu items for different languages
|
58 |
-
|
59 |
-
**Free Add-ons**
|
60 |
-
|
61 |
-
* [Language by GET parameter](https://translatepress.com/docs/addons/language-get-parameter/?utm_source=wp.org&utm_medium=tp-description-page&utm_campaign=TPFree) - enables the language in the URL to be encoded as a GET Parameter
|
62 |
-
|
63 |
-
= Website =
|
64 |
-
|
65 |
-
[translatepress.com](https://translatepress.com/?utm_source=wp.org&utm_medium=tp-description-page&utm_campaign=TPFree)
|
66 |
-
|
67 |
-
= Documentation =
|
68 |
-
|
69 |
-
[Visit our documentation page](https://translatepress.com/docs/translatepress/?utm_source=wp.org&utm_medium=tp-description-page&utm_campaign=TPFree)
|
70 |
-
|
71 |
-
= Add-ons =
|
72 |
-
|
73 |
-
[Add-ons](https://translatepress.com/docs/translatepress/?utm_source=wp.org&utm_medium=tp-description-page&utm_campaign=TPFree)
|
74 |
-
|
75 |
-
= Demo Site =
|
76 |
-
|
77 |
-
You can test out TranslatePress - Multilingual by [visiting our demo site](https://demo.translatepress.com/)
|
78 |
-
|
79 |
-
== Installation ==
|
80 |
-
|
81 |
-
1. Upload the translatepress folder to the '/wp-content/plugins/' directory
|
82 |
-
2. Activate the plugin through the 'Plugins' menu in WordPress
|
83 |
-
3. Go to Settings -> TranslatePress and choose a translation language.
|
84 |
-
4. Open the front-end translation editor from the admin bar to translate your site.
|
85 |
-
|
86 |
-
== Frequently Asked Questions ==
|
87 |
-
|
88 |
-
= Where are my translations stored? =
|
89 |
-
|
90 |
-
All the translation are stored locally in your server's database.
|
91 |
-
|
92 |
-
= What types of content can I translate? =
|
93 |
-
|
94 |
-
TranslatePress - Multilingual works out of the box with WooCommerce, custom post types, complex themes and site builders, so you'll be able to translate any type of content.
|
95 |
-
|
96 |
-
= How is it different from other multilingual & translation plugins like WPML or Polylang? =
|
97 |
-
|
98 |
-
TranslatePress is easier to use and more intuitive altogether. No more switching between the editor, string translation interfaces or badly translated plugins. You can now translate the full page content directly from the front-end. This makes TranslatePress a great alternative to plugins like Polylang and WPML.
|
99 |
-
|
100 |
-
= How do I start to translate my site? =
|
101 |
-
|
102 |
-
After installing the plugin, select your secondary language and click "Translate Site" to start translating your entire site exactly as it looks in the front-end.
|
103 |
-
|
104 |
-
= Where can I find out more information? =
|
105 |
-
|
106 |
-
For more information please check out [TranslatePress documentation](https://translatepress.com/docs/translatepress/?utm_source=wp.org&utm_medium=tp-description-page&utm_campaign=TPFree).
|
107 |
-
|
108 |
-
|
109 |
-
== Screenshots ==
|
110 |
-
1. Front-end translation editor used to translate the entire page content
|
111 |
-
2. How to translate a Dynamic String (gettext) using TranslatePress - Multilingual
|
112 |
-
3. Translate Woocommerce Shop Page
|
113 |
-
4. Settings Page for TranslatePress - Multilingual
|
114 |
-
5. Floating Language Switcher added by TranslatePress - Multilingual
|
115 |
-
6. Menu Language Switcher
|
116 |
-
|
117 |
-
== Changelog ==
|
118 |
-
= 1.
|
119 |
-
* Fix
|
120 |
-
|
121 |
-
|
122 |
-
*
|
123 |
-
|
124 |
-
|
125 |
-
*
|
126 |
-
|
127 |
-
|
128 |
-
*
|
129 |
-
*
|
130 |
-
|
131 |
-
|
132 |
-
*
|
133 |
-
*
|
134 |
-
*
|
135 |
-
*
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
* Added
|
140 |
-
*
|
141 |
-
* Fixed
|
142 |
-
*
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
*
|
147 |
-
*
|
148 |
-
*
|
149 |
-
*
|
150 |
-
|
151 |
-
|
152 |
-
*
|
153 |
-
|
154 |
-
|
155 |
-
*
|
156 |
-
*
|
157 |
-
*
|
158 |
-
*
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
*
|
163 |
-
*
|
164 |
-
*
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
*
|
169 |
-
* Fixed
|
170 |
-
*
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
* Fixed
|
176 |
-
*
|
177 |
-
*
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
*
|
182 |
-
*
|
183 |
-
*
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
*
|
189 |
-
*
|
190 |
-
*
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
*
|
195 |
-
*
|
196 |
-
*
|
197 |
-
|
198 |
-
|
199 |
-
*
|
200 |
-
|
201 |
-
|
202 |
-
* Fixed a
|
203 |
-
* Fixed
|
204 |
-
* Fixed issues with
|
205 |
-
*
|
206 |
-
|
207 |
-
= 1.0.
|
208 |
-
*
|
209 |
-
*
|
210 |
-
* Fixed issues with
|
211 |
-
*
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
*
|
216 |
-
*
|
217 |
-
* We
|
218 |
-
*
|
219 |
-
|
220 |
-
= 1.0.
|
221 |
-
*
|
222 |
-
*
|
223 |
-
*
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
*
|
228 |
-
*
|
229 |
-
* Fixed
|
230 |
-
|
231 |
-
|
232 |
-
=
|
233 |
-
*
|
234 |
-
*
|
235 |
-
*
|
236 |
-
*
|
237 |
-
|
238 |
-
= 1.0.
|
239 |
-
*
|
240 |
-
* Fixed
|
241 |
-
*
|
242 |
-
* Fixed
|
243 |
-
|
244 |
-
|
245 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
246 |
* Initial release.
|
1 |
+
=== TranslatePress - Translate Multilingual sites ===
|
2 |
+
Contributors: cozmoslabs, razvan.mo, madalin.ungureanu, cristophor
|
3 |
+
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.4
|
7 |
+
Stable tag: 1.2.0
|
8 |
+
License: GPLv2 or later
|
9 |
+
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
+
|
11 |
+
Easily translate your entire site directly from the front-end and go multilingual, with full support for WooCommerce, complex themes and site builders. Integrates with Google Translate.
|
12 |
+
|
13 |
+
== Description ==
|
14 |
+
|
15 |
+
**Experience a better way to translate your WordPress site and go multilingual, directly from the front-end using a friendly user interface.**
|
16 |
+
|
17 |
+
The interface allows you to easily translate the entire page at once, including output from shortcodes, forms and page builders. It also works out of the box with WooCommerce.
|
18 |
+
|
19 |
+
Built the WordPress way, TranslatePress - Multilingual is a GPL and self hosted translation plugin, meaning you'll own all your translations, forever. It's the fastest way to create a bilingual or multilingual site.
|
20 |
+
|
21 |
+
https://www.youtube.com/watch?v=pUlYisvBm8g
|
22 |
+
|
23 |
+
= Multilingual & Translation Features =
|
24 |
+
|
25 |
+
* Translate all your website content directly from the front-end, in a friendly user interface (translation displayed in real-time).
|
26 |
+
* Fully compatible with all themes and plugins
|
27 |
+
* Live preview of your translated pages, as you edit your translations.
|
28 |
+
* Support for both manual and automatic translation (via Google Translate)
|
29 |
+
* Ability to translate dynamic strings (gettext) added by WordPress, plugins and themes.
|
30 |
+
* Integrates with Google Translate, allowing you to set up Automatic Translation using your own Google API key.
|
31 |
+
* Translate larger html blocks using the css class **translation-block**. `<p class="translation-block">Translate <em>everything</em> inside</p>`
|
32 |
+
* Place language switchers anywhere using shortcode **[language-switcher]**, WP menu item or as a floating dropdown.
|
33 |
+
* Editorial control allowing you to publish your language only when all your translations are done
|
34 |
+
* Conditional display content shortcode based on language [trp_language language="en_US"] English content only [/trp_language]
|
35 |
+
* Possibility to edit gettext strings from themes and plugins from english to english, without adding another language. Basically a string-replace functionality.
|
36 |
+
|
37 |
+
Note: this plugin uses the Google Translation API to translate the strings on your site. This feature can be enabled or disabled according to your preferences.
|
38 |
+
|
39 |
+
Users with administrator rights have access to the following translate settings:
|
40 |
+
|
41 |
+
* select default language of the website and one translation language, for bilingual sites
|
42 |
+
* choose whether language switcher should display languages in their native names or English name
|
43 |
+
* force custom links to open in current language
|
44 |
+
* enable or disable url subdirectory for the default language
|
45 |
+
* enable automatic translation via Google Translate
|
46 |
+
|
47 |
+
= Powerful Translation Add-ons =
|
48 |
+
|
49 |
+
TranslatePress - Multilingual has a range of premium [Add-ons](https://translatepress.com/?utm_source=wp.org&utm_medium=tp-description-page&utm_campaign=TPFree) that allow you to extend the power of the translation plugin:
|
50 |
+
|
51 |
+
**Pro Add-ons** (available in the [premium versions](https://translatepress.com/pricing/?utm_source=wp.org&utm_medium=tp-description-page&utm_campaign=TPFree) only)
|
52 |
+
|
53 |
+
* [Extra Languages](https://translatepress.com/docs/addons/seo-pack/?utm_source=wp.org&utm_medium=tp-description-page&utm_campaign=TPFree) - allows you to add an unlimited number of translation languages, with the possibility to publish languages later after you complete the translation
|
54 |
+
* [SEO Pack](https://translatepress.com/docs/addons/multiple-languages/?utm_source=wp.org&utm_medium=tp-description-page&utm_campaign=TPFree) - allows you to translate meta information (like page title, description, url slug, image alt tag, Twitter and Facebook Social Graph tags & more) for boosting your website's SEO and increase traffic
|
55 |
+
* [Translator Accounts](https://translatepress.com/docs/addons/translator-accounts/?utm_source=wp.org&utm_medium=tp-description-page&utm_campaign=TPFree) - create or allow existing users to translate the site without admin rights
|
56 |
+
* [Browse as User Role](https://translatepress.com/docs/addons/browse-as-role/?utm_source=wp.org&utm_medium=tp-description-page&utm_campaign=TPFree) - view and translate content that is visible only to a particular user role
|
57 |
+
* [Navigation Based on Language](https://translatepress.com/docs/addons/navigate-based-language/?utm_source=wp.org&utm_medium=tp-description-page&utm_campaign=TPFree) - configure and display different menu items for different languages
|
58 |
+
|
59 |
+
**Free Add-ons**
|
60 |
+
|
61 |
+
* [Language by GET parameter](https://translatepress.com/docs/addons/language-get-parameter/?utm_source=wp.org&utm_medium=tp-description-page&utm_campaign=TPFree) - enables the language in the URL to be encoded as a GET Parameter
|
62 |
+
|
63 |
+
= Website =
|
64 |
+
|
65 |
+
[translatepress.com](https://translatepress.com/?utm_source=wp.org&utm_medium=tp-description-page&utm_campaign=TPFree)
|
66 |
+
|
67 |
+
= Documentation =
|
68 |
+
|
69 |
+
[Visit our documentation page](https://translatepress.com/docs/translatepress/?utm_source=wp.org&utm_medium=tp-description-page&utm_campaign=TPFree)
|
70 |
+
|
71 |
+
= Add-ons =
|
72 |
+
|
73 |
+
[Add-ons](https://translatepress.com/docs/translatepress/?utm_source=wp.org&utm_medium=tp-description-page&utm_campaign=TPFree)
|
74 |
+
|
75 |
+
= Demo Site =
|
76 |
+
|
77 |
+
You can test out TranslatePress - Multilingual by [visiting our demo site](https://demo.translatepress.com/)
|
78 |
+
|
79 |
+
== Installation ==
|
80 |
+
|
81 |
+
1. Upload the translatepress folder to the '/wp-content/plugins/' directory
|
82 |
+
2. Activate the plugin through the 'Plugins' menu in WordPress
|
83 |
+
3. Go to Settings -> TranslatePress and choose a translation language.
|
84 |
+
4. Open the front-end translation editor from the admin bar to translate your site.
|
85 |
+
|
86 |
+
== Frequently Asked Questions ==
|
87 |
+
|
88 |
+
= Where are my translations stored? =
|
89 |
+
|
90 |
+
All the translation are stored locally in your server's database.
|
91 |
+
|
92 |
+
= What types of content can I translate? =
|
93 |
+
|
94 |
+
TranslatePress - Multilingual works out of the box with WooCommerce, custom post types, complex themes and site builders, so you'll be able to translate any type of content.
|
95 |
+
|
96 |
+
= How is it different from other multilingual & translation plugins like WPML or Polylang? =
|
97 |
+
|
98 |
+
TranslatePress is easier to use and more intuitive altogether. No more switching between the editor, string translation interfaces or badly translated plugins. You can now translate the full page content directly from the front-end. This makes TranslatePress a great alternative to plugins like Polylang and WPML.
|
99 |
+
|
100 |
+
= How do I start to translate my site? =
|
101 |
+
|
102 |
+
After installing the plugin, select your secondary language and click "Translate Site" to start translating your entire site exactly as it looks in the front-end.
|
103 |
+
|
104 |
+
= Where can I find out more information? =
|
105 |
+
|
106 |
+
For more information please check out [TranslatePress documentation](https://translatepress.com/docs/translatepress/?utm_source=wp.org&utm_medium=tp-description-page&utm_campaign=TPFree).
|
107 |
+
|
108 |
+
|
109 |
+
== Screenshots ==
|
110 |
+
1. Front-end translation editor used to translate the entire page content
|
111 |
+
2. How to translate a Dynamic String (gettext) using TranslatePress - Multilingual
|
112 |
+
3. Translate Woocommerce Shop Page
|
113 |
+
4. Settings Page for TranslatePress - Multilingual
|
114 |
+
5. Floating Language Switcher added by TranslatePress - Multilingual
|
115 |
+
6. Menu Language Switcher
|
116 |
+
|
117 |
+
== Changelog ==
|
118 |
+
= 1.2.0 =
|
119 |
+
* Fix wptexturize changing characters in secondary languages
|
120 |
+
* Mini refactoring of the url_is_file() function
|
121 |
+
* Refactor get_url_for_language() to not use the global var
|
122 |
+
* We no longer add the language path to links to actual files on the server
|
123 |
+
|
124 |
+
= 1.1.9 =
|
125 |
+
* Fix widget language switcher to take into account the new hreflang
|
126 |
+
|
127 |
+
= 1.1.8 =
|
128 |
+
* Fixed bug with Strings List appearing also in Dynamic Strings List. Also fixed bug with duplicate dynamic strings not having a pencil icon because of missing jquery_object.
|
129 |
+
* Fixed Woocommerce session storage compatibility
|
130 |
+
* Fixed language floater not opening on iPhone.
|
131 |
+
* Fixed issue with normal text nodes that were inside an element that had an atribute with gettext and did not get translated
|
132 |
+
* Replaced _ with - in hreflang and filter it
|
133 |
+
* Make force language to custom links set to yes as a default
|
134 |
+
* Remove intensive functions from inside two loops so they only happen once we detect something in js
|
135 |
+
* Decode html characters in mutation observed strings and removed stripslashes from trp-ajax.php to fix some strings added with js not being translated
|
136 |
+
|
137 |
+
= 1.1.7 =
|
138 |
+
* Compatibility fix with Elementor Page Builder
|
139 |
+
* Added translation .pot file
|
140 |
+
* Add proper encoding for mysqli connection in our trp-ajax.php file so we fixed some translation
|
141 |
+
* Fixed infinite loop related to mutation observer on javascript strings by not re-adding detected strings again if they are similar to existing ones
|
142 |
+
* Aligned text from add-ons tab.
|
143 |
+
|
144 |
+
= 1.1.6 =
|
145 |
+
* Added support for translating Contact Form 7 alert messages
|
146 |
+
* Fixed issue with some strings containing special characters not being translated (i.e. "¿¡")
|
147 |
+
* Fixed bug with switching languages in Editor when viewing as Logged out
|
148 |
+
* Fixed issue with broken homepage links in some themes
|
149 |
+
* Added support for RTL languages in translation editor
|
150 |
+
|
151 |
+
= 1.1.5 =
|
152 |
+
* Added support for translation blocks using the css class .translation-block.
|
153 |
+
* Added possibility to choose a different language as default language seen by website visitors.
|
154 |
+
* Updated add-ons settings page with the missing add-ons, added Language by GET parameter addon
|
155 |
+
* Fixed issue with the [language-switcher] in a post or page that broke saving the page when Yoast SEO plugin is active
|
156 |
+
* Added a plugin notification class and a notification for pretty permalinks
|
157 |
+
* Added WooCommerce compatibility tag
|
158 |
+
* Small css improvements
|
159 |
+
|
160 |
+
= 1.1.4 =
|
161 |
+
* Filter to allow adding new language: 'trp_wp_languages'
|
162 |
+
* Fixed issue with get_permalink() in ajax calls that was not returning the propper language
|
163 |
+
* Adapted code to allow language based on a GET parameter
|
164 |
+
* Fix some issues with language switcher and custom queries as well as take into account if subdirectory for default language is on
|
165 |
+
* Fixed issue with js translation that was trimming numbers and other characters from strings when it shouldn't
|
166 |
+
|
167 |
+
= 1.1.3 =
|
168 |
+
* Fix issue where the language switcher didn't work for BuddyPress pages
|
169 |
+
* Fixed issue with CDATA in post content that was breaking the translation
|
170 |
+
* Added a filter that can be activated and that tries to fix invalid html: trp_try_fixing_invalid_html
|
171 |
+
|
172 |
+
= 1.1.2 =
|
173 |
+
* We now make sure that all forms when submitted redirect to the correct language
|
174 |
+
* Fixed an issue with missing slash from language switcher
|
175 |
+
* Fixed an issue where we were not redirecting to the correct url slug when switching languages
|
176 |
+
* Fixed a possible notice inside the get_language_names function
|
177 |
+
* Fixed html breaking because of unescaped quotes in translated meta content
|
178 |
+
* Removed a special character from the full_trim function that was causing some strings to not be selectable for translation
|
179 |
+
|
180 |
+
= 1.1.1 =
|
181 |
+
* Fixed js error with startsWith method not being supported in IE
|
182 |
+
* Removed unnecessary files from select2 lib
|
183 |
+
* Improved the way we rewrite urls to remove certain bugs
|
184 |
+
|
185 |
+
= 1.1.0 =
|
186 |
+
* Implemented View As "Logged out user" functionality so you can translate strings that show only for logged out users
|
187 |
+
* Allow slug edit for default language
|
188 |
+
* Fixed an issue with the dropdown of translation strings when there were unsaved changes and the dropdown disconected from the textarea
|
189 |
+
* Prevent translate editor icon pencil to exit the translation iframe
|
190 |
+
* Fixed translating via the next/prev buttons that reset the position in the translation string list
|
191 |
+
* Refactor the way we are generating the language url for the language switcher when we don't have a variable available
|
192 |
+
|
193 |
+
= 1.0.9 =
|
194 |
+
* We now flush permalinks when saving the settings page to avoid getting 404 and 500 errors
|
195 |
+
* Added the current language as a class on the body tag. Ex: translatepress-en_US
|
196 |
+
* Small readme changes
|
197 |
+
|
198 |
+
= 1.0.8 =
|
199 |
+
* We now allow HTML in normal strings translations.
|
200 |
+
* Changed the way we get the default language permalinks in Woocommerce rewrites
|
201 |
+
* Fixed issues with date_i18n function
|
202 |
+
* Fixed a warning generated when there are no rewrite rules
|
203 |
+
* Fixed dynamic strings not updating the translation dropdown list.
|
204 |
+
* Fixed issues with hidden space characters that were breaking some translations
|
205 |
+
* Make sure we don't loose the trp-edit-translation=preview from url after a WordPress redirect
|
206 |
+
|
207 |
+
= 1.0.7 =
|
208 |
+
* Fixed a small bug in js regarding the translation editor sidebar with
|
209 |
+
* Fixed Language Switcher for Woocommerce product categories and product tags going to 404 pages
|
210 |
+
* Fixed issues with Woocommerce and permalinks when the default language was not english
|
211 |
+
* Excluded more functions from getting gettext wraps
|
212 |
+
|
213 |
+
= 1.0.6 =
|
214 |
+
* Added filter on capabilities to allow other roles to edit translations:'trp_translating_capability'
|
215 |
+
* Don't show php errors and notices when we are storing strings in the database
|
216 |
+
* Fixed issues with attributes that contain json content, for instance in woocommerce variations
|
217 |
+
* We no longer wrap gettext inside the wptexturize function
|
218 |
+
* We no longer wrap gettexts that appear in the bloginfo function
|
219 |
+
|
220 |
+
= 1.0.5 =
|
221 |
+
* Added possibility to edit gettext strings from themes and plugins from english to english, without adding another language. Basically, string-replace functionality.
|
222 |
+
* We now can translate text input placeholders
|
223 |
+
* We have a way of translating emails using the conditional language shortcode [trp_language language="en_US"] English only content [/trp_language]
|
224 |
+
* Fixed issues with some elements that contained new lines and \u00a0 at the start of the strings
|
225 |
+
|
226 |
+
= 1.0.4 =
|
227 |
+
* Fixed issues with the pencil select icon in the translation editor not showing up in certain cases on the button element
|
228 |
+
* Fixed issues with the pencil select icon in the translation editor not showing up in certain cases because of overflow hidden
|
229 |
+
* Fixed a issue that was sometimes causing javascript errors with certain plugins
|
230 |
+
|
231 |
+
= 1.0.3 =
|
232 |
+
* Added a conditional language shortcode: [trp_language language="en_US"] English only content [/trp_language]
|
233 |
+
* Create link to test out Google API key.
|
234 |
+
* Improvements to Woocommerce compatibility
|
235 |
+
* Fixed json_encode error that was causing js errors
|
236 |
+
* Changed 'template_include' hook priority to improve compatibility with some themes
|
237 |
+
|
238 |
+
= 1.0.2 =
|
239 |
+
* Translation interface improvements
|
240 |
+
* Fixed issues with strings loaded with ajax
|
241 |
+
* Added an addon page
|
242 |
+
* Fixed bug with gettext node accidentally wrapping another string too.
|
243 |
+
|
244 |
+
= 1.0.1 =
|
245 |
+
* Fixed incorrect blog prefix name for Multisite subsites on admin_bar gettext hook.
|
246 |
+
* Fixed Translate Page admin bar button sometimes not having the correct url for entering TP Editor Mode
|
247 |
+
* Skipped dynamic strings that have only numbers and special characters.
|
248 |
+
* Fixed order of categories in Editor dropdown. (Meta Information, String List..)
|
249 |
+
* Fixed JS error Uncaught Error: Syntax error, unrecognized expression
|
250 |
+
|
251 |
+
= 1.0.0 =
|
252 |
* Initial release.
|