Version Description
- Add : Add builtin translation tool
- Fix : Wrong function used to get description length
Download this release
Release Info
Developer | JoomUnited |
Plugin | WP Meta SEO |
Version | 3.2.6 |
Comparing to | |
See all releases |
Code changes from version 3.2.5 to 3.2.6
- css/metaseo_admin.css +7 -2
- inc/class.metaseo-admin.php +1 -1
- inc/class.metaseo-broken-link-table.php +3 -3
- inc/class.metaseo-content-list-table.php +4 -4
- inc/class.metaseo-image-list-table.php +5 -5
- inc/class.metaseo-link-list-table.php +3 -3
- inc/class.metaseo-metabox.php +2 -2
- inc/class.metaseo-sitemap.php +2 -2
- inc/google_analytics/wpmsga.php +1 -1
- inc/pages/content-meta.php +1 -1
- inc/pages/dashboard.php +6 -6
- inc/pages/google-analytics/metaseo-google-analytics-trackcode.php +2 -3
- inc/pages/metaseo-image-compression.php +4 -4
- inc/pages/settings.php +5 -0
- inc/pages/sitemaps/metaseo-google-sitemap.php +1 -1
- jutranslation/assets/css/jutranslation.css +348 -0
- jutranslation/assets/images/preview_loader.gif +0 -0
- jutranslation/assets/images/radio.svg +1 -0
- jutranslation/assets/js/jutranslation.js +815 -0
- jutranslation/jutranslation.php +609 -0
- languages/wp-meta-seo-en_US.mo +0 -0
- languages/wp-meta-seo-en_US.po +0 -635
- languages/wp-meta-seo-fr_FR.mo +0 -0
- languages/wp-meta-seo-fr_FR.po +0 -793
- languages/wp-meta-seo.pot +0 -635
- readme.txt +96 -103
- wp-meta-seo.php +31 -2
css/metaseo_admin.css
CHANGED
@@ -498,10 +498,11 @@ strong {
|
|
498 |
|
499 |
.content-box{
|
500 |
padding: 10px;
|
|
|
501 |
}
|
502 |
|
503 |
-
.content-wpms-
|
504 |
-
display:
|
505 |
}
|
506 |
|
507 |
.wpms_content_settings{
|
@@ -622,4 +623,8 @@ strong {
|
|
622 |
float:left;
|
623 |
width: 70px;
|
624 |
line-height: 25px;
|
|
|
|
|
|
|
|
|
625 |
}
|
498 |
|
499 |
.content-box{
|
500 |
padding: 10px;
|
501 |
+
display: none;
|
502 |
}
|
503 |
|
504 |
+
.content-wpms-global{
|
505 |
+
display: block;
|
506 |
}
|
507 |
|
508 |
.wpms_content_settings{
|
623 |
float:left;
|
624 |
width: 70px;
|
625 |
line-height: 25px;
|
626 |
+
}
|
627 |
+
|
628 |
+
#jutranslation{
|
629 |
+
margin-top: 40px;
|
630 |
}
|
inc/class.metaseo-admin.php
CHANGED
@@ -272,7 +272,7 @@ class MetaSeo_Admin {
|
|
272 |
* Loads translated strings.
|
273 |
*/
|
274 |
function wpms_load_langguage() {
|
275 |
-
load_plugin_textdomain('wp-meta-seo', false, dirname(plugin_basename(
|
276 |
}
|
277 |
|
278 |
function metaseo_create_field($data_title, $alt, $dashicon, $label, $value_hidden) {
|
272 |
* Loads translated strings.
|
273 |
*/
|
274 |
function wpms_load_langguage() {
|
275 |
+
load_plugin_textdomain('wp-meta-seo', false, dirname(plugin_basename(__FILE__)) . DIRECTORY_SEPARATOR . 'languages' .DIRECTORY_SEPARATOR);
|
276 |
}
|
277 |
|
278 |
function metaseo_create_field($data_title, $alt, $dashicon, $label, $value_hidden) {
|
inc/class.metaseo-broken-link-table.php
CHANGED
@@ -126,7 +126,7 @@ class MetaSeo_Broken_Link_Table extends WP_List_Table {
|
|
126 |
|
127 |
if (!empty($columns['cb'])) {
|
128 |
static $cb_counter = 1;
|
129 |
-
$columns['cb'] = '<label class="screen-reader-text" for="cb-select-all-' . $cb_counter . '">' . __('Select All') . '</label>'
|
130 |
. '<input id="cb-select-all-' . $cb_counter . '" type="checkbox" style="margin:0;" />';
|
131 |
$cb_counter++;
|
132 |
}
|
@@ -384,7 +384,7 @@ class MetaSeo_Broken_Link_Table extends WP_List_Table {
|
|
384 |
</select>
|
385 |
|
386 |
<?php
|
387 |
-
submit_button(__('Filter'), 'button', 'filter_type_action', false, array('id' => 'broken-submit'));
|
388 |
echo '<div style="float:left;padding-left: 5px;"><div class="wpms_process" data-w="0"></div>';
|
389 |
echo '<div data-comment_paged="1" data-paged="1" class="button wpms_scan_link">' . __('Index internal broken links', 'wp-meta-seo') . '</div></div>';
|
390 |
echo '<span class="spinner"></span>';
|
@@ -593,7 +593,7 @@ class MetaSeo_Broken_Link_Table extends WP_List_Table {
|
|
593 |
$source = get_comment($rec->source_id);
|
594 |
if (!empty($source)) {
|
595 |
$row_action = array(
|
596 |
-
'edit' => '<a target="_blank" href="' . get_edit_comment_link($rec->source_id) . '" title="'.__('Edit this item','wp-meta-seo').'">'.__('Edit','wp-meta-seo').'</a>',
|
597 |
'view' => '<a target="_blank" href="' . get_comment_link($rec->source_id) . '" title="View “test”" rel="permalink">'.__('View','wp-meta-seo').'</a>'
|
598 |
);
|
599 |
|
126 |
|
127 |
if (!empty($columns['cb'])) {
|
128 |
static $cb_counter = 1;
|
129 |
+
$columns['cb'] = '<label class="screen-reader-text" for="cb-select-all-' . $cb_counter . '">' . __('Select All', 'wp-meta-seo') . '</label>'
|
130 |
. '<input id="cb-select-all-' . $cb_counter . '" type="checkbox" style="margin:0;" />';
|
131 |
$cb_counter++;
|
132 |
}
|
384 |
</select>
|
385 |
|
386 |
<?php
|
387 |
+
submit_button(__('Filter', 'wp-meta-seo'), 'button', 'filter_type_action', false, array('id' => 'broken-submit'));
|
388 |
echo '<div style="float:left;padding-left: 5px;"><div class="wpms_process" data-w="0"></div>';
|
389 |
echo '<div data-comment_paged="1" data-paged="1" class="button wpms_scan_link">' . __('Index internal broken links', 'wp-meta-seo') . '</div></div>';
|
390 |
echo '<span class="spinner"></span>';
|
593 |
$source = get_comment($rec->source_id);
|
594 |
if (!empty($source)) {
|
595 |
$row_action = array(
|
596 |
+
'edit' => '<a target="_blank" href="' . get_edit_comment_link($rec->source_id) . '" title="'.__('Edit this item','wp-meta-seo').'">'.__('Edit','wp-meta-seo','wp-meta-seo').'</a>',
|
597 |
'view' => '<a target="_blank" href="' . get_comment_link($rec->source_id) . '" title="View “test”" rel="permalink">'.__('View','wp-meta-seo').'</a>'
|
598 |
);
|
599 |
|
inc/class.metaseo-content-list-table.php
CHANGED
@@ -113,7 +113,7 @@ class MetaSeo_Content_List_Table extends WP_List_Table {
|
|
113 |
$btn_bulk = '<input type="button" name="do_copy" id="post_do_copy" class="button button-primary btn_do_copy post_do_copy" value="' . __('Content title as meta title', 'wp-meta-seo') . '"><span class="spinner"></span>';
|
114 |
|
115 |
echo sprintf('<select name="post_type_filter" class="metaseo-filter">%1$s</select>', $options);
|
116 |
-
submit_button(__('Filter'), 'button', 'do_filter', false, array('id' => 'post-query-submit'));
|
117 |
echo $sl_bulk . $btn_bulk;
|
118 |
echo "</div>";
|
119 |
}
|
@@ -373,15 +373,15 @@ class MetaSeo_Content_List_Table extends WP_List_Table {
|
|
373 |
$actions = array();
|
374 |
|
375 |
if ($can_edit_post && 'trash' != $rec->post_status) {
|
376 |
-
$actions['edit'] = '<a href="' . get_edit_post_link($rec->ID, true) . '" title="' . esc_attr(__('Edit this item')) . '">' . __('Edit') . '</a>';
|
377 |
}
|
378 |
|
379 |
if ($post_type_object->public) {
|
380 |
if (in_array($rec->post_status, array('pending', 'draft', 'future'))) {
|
381 |
if ($can_edit_post)
|
382 |
-
$actions['view'] = '<a href="' . esc_url(add_query_arg('preview', 'true', get_permalink($rec->ID))) . '" title="' . esc_attr(sprintf(__('Preview “%s”'), $rec->post_title)) . '" rel="permalink">' . __('Preview') . '</a>';
|
383 |
} elseif ('trash' != $rec->post_status) {
|
384 |
-
$actions['view'] = '<a target="_blank" href="' . get_permalink($rec->ID) . '" title="' . esc_attr(sprintf(__('View “%s”'), $rec->post_title)) . '" rel="permalink">' . __('View') . '</a>';
|
385 |
}
|
386 |
}
|
387 |
|
113 |
$btn_bulk = '<input type="button" name="do_copy" id="post_do_copy" class="button button-primary btn_do_copy post_do_copy" value="' . __('Content title as meta title', 'wp-meta-seo') . '"><span class="spinner"></span>';
|
114 |
|
115 |
echo sprintf('<select name="post_type_filter" class="metaseo-filter">%1$s</select>', $options);
|
116 |
+
submit_button(__('Filter', 'wp-meta-seo'), 'button', 'do_filter', false, array('id' => 'post-query-submit'));
|
117 |
echo $sl_bulk . $btn_bulk;
|
118 |
echo "</div>";
|
119 |
}
|
373 |
$actions = array();
|
374 |
|
375 |
if ($can_edit_post && 'trash' != $rec->post_status) {
|
376 |
+
$actions['edit'] = '<a href="' . get_edit_post_link($rec->ID, true) . '" title="' . esc_attr(__('Edit this item','wp-meta-seo')) . '">' . __('Edit', 'wp-meta-seo') . '</a>';
|
377 |
}
|
378 |
|
379 |
if ($post_type_object->public) {
|
380 |
if (in_array($rec->post_status, array('pending', 'draft', 'future'))) {
|
381 |
if ($can_edit_post)
|
382 |
+
$actions['view'] = '<a href="' . esc_url(add_query_arg('preview', 'true', get_permalink($rec->ID))) . '" title="' . esc_attr(sprintf(__('Preview “%s”', 'wp-meta-seo'), $rec->post_title)) . '" rel="permalink">' . __('Preview', 'wp-meta-seo') . '</a>';
|
383 |
} elseif ('trash' != $rec->post_status) {
|
384 |
+
$actions['view'] = '<a target="_blank" href="' . get_permalink($rec->ID) . '" title="' . esc_attr(sprintf(__('View “%s”', 'wp-meta-seo'), $rec->post_title)) . '" rel="permalink">' . __('View', 'wp-meta-seo') . '</a>';
|
385 |
}
|
386 |
}
|
387 |
|
inc/class.metaseo-image-list-table.php
CHANGED
@@ -209,7 +209,7 @@ class MetaSeo_Image_List_Table extends WP_List_Table {
|
|
209 |
|
210 |
if (!empty($columns['cb'])) {
|
211 |
static $cb_counter = 1;
|
212 |
-
$columns['cb'] = '<label class="screen-reader-text" for="cb-select-all-' . $cb_counter . '">' . __('Select All') . '</label>'
|
213 |
. '<input id="cb-select-all-' . $cb_counter . '" type="checkbox" style="margin:0;" />';
|
214 |
$cb_counter++;
|
215 |
}
|
@@ -416,14 +416,14 @@ class MetaSeo_Image_List_Table extends WP_List_Table {
|
|
416 |
continue;
|
417 |
$month = zeroise($arc_row->month, 2);
|
418 |
$year = $arc_row->year;
|
419 |
-
printf("<option %s value='%s' >%s</option>\n", selected($m, "$year-$month", false), esc_attr("$arc_row->year-$month"), sprintf(__('%1$s %2$d'), $wp_locale->get_month($month), $year)
|
420 |
);
|
421 |
}
|
422 |
?>
|
423 |
</select>
|
424 |
|
425 |
<?php
|
426 |
-
submit_button(__('Filter'), 'button', $namebutton, false, array('id' => 'image-submit'));
|
427 |
}
|
428 |
|
429 |
/**
|
@@ -792,7 +792,7 @@ class MetaSeo_Image_List_Table extends WP_List_Table {
|
|
792 |
<td colspan="8"></td>
|
793 |
<td colspan="2">
|
794 |
<a href="javascript:void(0);" id="metaseo-replace-all" class="button button-primary" onclick="optimize_imgs_group(this)">
|
795 |
-
<?php echo __('Replace All') ?>
|
796 |
</a>
|
797 |
<span class="optimizing spinner"></span>
|
798 |
</td>
|
@@ -1333,7 +1333,7 @@ class MetaSeo_Image_List_Table extends WP_List_Table {
|
|
1333 |
$response->msg = __('This image has been removed from the post, please check again!', 'wp-meta-seo');
|
1334 |
}
|
1335 |
} else {
|
1336 |
-
$response->msg = __('Content of the post is empty, please check again', '
|
1337 |
}
|
1338 |
}
|
1339 |
|
209 |
|
210 |
if (!empty($columns['cb'])) {
|
211 |
static $cb_counter = 1;
|
212 |
+
$columns['cb'] = '<label class="screen-reader-text" for="cb-select-all-' . $cb_counter . '">' . __('Select All', 'wp-meta-seo') . '</label>'
|
213 |
. '<input id="cb-select-all-' . $cb_counter . '" type="checkbox" style="margin:0;" />';
|
214 |
$cb_counter++;
|
215 |
}
|
416 |
continue;
|
417 |
$month = zeroise($arc_row->month, 2);
|
418 |
$year = $arc_row->year;
|
419 |
+
printf("<option %s value='%s' >%s</option>\n", selected($m, "$year-$month", false), esc_attr("$arc_row->year-$month"), sprintf(__('%1$s %2$d', 'wp-meta-seo'), $wp_locale->get_month($month), $year)
|
420 |
);
|
421 |
}
|
422 |
?>
|
423 |
</select>
|
424 |
|
425 |
<?php
|
426 |
+
submit_button(__('Filter', 'wp-meta-seo'), 'button', $namebutton, false, array('id' => 'image-submit'));
|
427 |
}
|
428 |
|
429 |
/**
|
792 |
<td colspan="8"></td>
|
793 |
<td colspan="2">
|
794 |
<a href="javascript:void(0);" id="metaseo-replace-all" class="button button-primary" onclick="optimize_imgs_group(this)">
|
795 |
+
<?php echo __('Replace All', 'wp-meta-seo') ?>
|
796 |
</a>
|
797 |
<span class="optimizing spinner"></span>
|
798 |
</td>
|
1333 |
$response->msg = __('This image has been removed from the post, please check again!', 'wp-meta-seo');
|
1334 |
}
|
1335 |
} else {
|
1336 |
+
$response->msg = __('Content of the post is empty, please check again', 'wp-meta-seo');
|
1337 |
}
|
1338 |
}
|
1339 |
|
inc/class.metaseo-link-list-table.php
CHANGED
@@ -207,7 +207,7 @@ class MetaSeo_Link_List_Table extends WP_List_Table {
|
|
207 |
|
208 |
if (!empty($columns['cb'])) {
|
209 |
static $cb_counter = 1;
|
210 |
-
$columns['cb'] = '<label class="screen-reader-text" for="cb-select-all-' . $cb_counter . '">' . __('Select All') . '</label>'
|
211 |
. '<input id="cb-select-all-' . $cb_counter . '" type="checkbox" style="margin:0;" />';
|
212 |
$cb_counter++;
|
213 |
}
|
@@ -451,14 +451,14 @@ class MetaSeo_Link_List_Table extends WP_List_Table {
|
|
451 |
continue;
|
452 |
$month = zeroise($arc_row->month, 2);
|
453 |
$year = $arc_row->year;
|
454 |
-
printf("<option %s value='%s' >%s</option>\n", selected($m, "$year-$month", false), esc_attr("$arc_row->year-$month"), sprintf(__('%1$s %2$d'), $wp_locale->get_month($month), $year)
|
455 |
);
|
456 |
}
|
457 |
?>
|
458 |
</select>
|
459 |
|
460 |
<?php
|
461 |
-
submit_button(__('Filter'), 'button', $namebutton, false, array('id' => 'image-submit'));
|
462 |
}
|
463 |
|
464 |
/**
|
207 |
|
208 |
if (!empty($columns['cb'])) {
|
209 |
static $cb_counter = 1;
|
210 |
+
$columns['cb'] = '<label class="screen-reader-text" for="cb-select-all-' . $cb_counter . '">' . __('Select All', 'wp-meta-seo') . '</label>'
|
211 |
. '<input id="cb-select-all-' . $cb_counter . '" type="checkbox" style="margin:0;" />';
|
212 |
$cb_counter++;
|
213 |
}
|
451 |
continue;
|
452 |
$month = zeroise($arc_row->month, 2);
|
453 |
$year = $arc_row->year;
|
454 |
+
printf("<option %s value='%s' >%s</option>\n", selected($m, "$year-$month", false), esc_attr("$arc_row->year-$month"), sprintf(__('%1$s %2$d', 'wp-meta-seo'), $wp_locale->get_month($month), $year)
|
455 |
);
|
456 |
}
|
457 |
?>
|
458 |
</select>
|
459 |
|
460 |
<?php
|
461 |
+
submit_button(__('Filter', 'wp-meta-seo'), 'button', $namebutton, false, array('id' => 'image-submit'));
|
462 |
}
|
463 |
|
464 |
/**
|
inc/class.metaseo-metabox.php
CHANGED
@@ -67,7 +67,7 @@ class WPMSEO_Metabox extends WPMSEO_Meta {
|
|
67 |
self::$meta_fields['general']['snippetpreview']['help'] = sprintf(__('This is a preview of what your content will looks like in search engine results: title, description and URL', 'wp-meta-seo'), '<a target="_blank" href="https://www.joomunited.com/wordpress-products/wpms">', '</a>');
|
68 |
|
69 |
self::$meta_fields['general']['title']['title'] = __('Search engine title', 'wp-meta-seo');
|
70 |
-
self::$meta_fields['general']['title']['description'] = sprintf(
|
71 |
self::$meta_fields['general']['title']['help'] = __('This is the title of your content that may be displayed in search engine results (meta title). By default it’s the content title (page title, post title…). 69 characters max allowed.', 'wp-meta-seo');
|
72 |
|
73 |
$settings = get_option('_metaseo_settings');
|
@@ -81,7 +81,7 @@ class WPMSEO_Metabox extends WPMSEO_Meta {
|
|
81 |
|
82 |
|
83 |
self::$meta_fields['general']['desc']['title'] = __('Search engine description', 'wp-meta-seo');
|
84 |
-
self::$meta_fields['general']['desc']['description'] = sprintf(
|
85 |
self::$meta_fields['general']['desc']['help'] = __('The description of your content that may be displayed in search engine results aka meta description. By default search engine take an excerpt from your content (depending on the search query). 156 characters max allowed.', 'wp-meta-seo');
|
86 |
|
87 |
self::$meta_fields['social']['opengraph-title']['title'] = __('Facebook Title', 'wp-meta-seo');
|
67 |
self::$meta_fields['general']['snippetpreview']['help'] = sprintf(__('This is a preview of what your content will looks like in search engine results: title, description and URL', 'wp-meta-seo'), '<a target="_blank" href="https://www.joomunited.com/wordpress-products/wpms">', '</a>');
|
68 |
|
69 |
self::$meta_fields['general']['title']['title'] = __('Search engine title', 'wp-meta-seo');
|
70 |
+
self::$meta_fields['general']['title']['description'] = sprintf('<span id="metaseo_wpmseo_title-length">%s</span>', self::$meta_length_reason);
|
71 |
self::$meta_fields['general']['title']['help'] = __('This is the title of your content that may be displayed in search engine results (meta title). By default it’s the content title (page title, post title…). 69 characters max allowed.', 'wp-meta-seo');
|
72 |
|
73 |
$settings = get_option('_metaseo_settings');
|
81 |
|
82 |
|
83 |
self::$meta_fields['general']['desc']['title'] = __('Search engine description', 'wp-meta-seo');
|
84 |
+
self::$meta_fields['general']['desc']['description'] = sprintf('<span id="metaseo_wpmseo_desc-length">%s</span>', self::$meta_length_reason);
|
85 |
self::$meta_fields['general']['desc']['help'] = __('The description of your content that may be displayed in search engine results aka meta description. By default search engine take an excerpt from your content (depending on the search query). 156 characters max allowed.', 'wp-meta-seo');
|
86 |
|
87 |
self::$meta_fields['social']['opengraph-title']['title'] = __('Facebook Title', 'wp-meta-seo');
|
inc/class.metaseo-sitemap.php
CHANGED
@@ -147,7 +147,7 @@ class MetaSeo_Sitemap {
|
|
147 |
?>
|
148 |
<?php if (is_multisite()) { ?>
|
149 |
<label><input id="wpms_sitemap_add" type='checkbox' disabled="disabled" name='_metaseo_settings_sitemap[wpms_sitemap_add]' value="1" <?php checked(1, $this->settings_sitemap['wpms_sitemap_add']); ?> /> <?php _e("add sitemap file path in robots.txt", 'wp-meta-seo'); ?></label>
|
150 |
-
<p style="color:red"><?php _e("Since you are using
|
151 |
<?php } else { ?>
|
152 |
<!-- for robots.txt we need to use site_url instead home_url ! -->
|
153 |
<label><input id="wpms_sitemap_add" type='checkbox' name='_metaseo_settings_sitemap[wpms_sitemap_add]' value="1" <?php checked(1, $this->settings_sitemap['wpms_sitemap_add']); ?> /> <?php _e("add sitemap link in the", 'wp-meta-seo'); ?> <a href="<?php echo site_url('/'); ?>robots.txt" target="_new">robots.txt</a></label>
|
@@ -764,7 +764,7 @@ class MetaSeo_Sitemap {
|
|
764 |
if ($i == 1) {
|
765 |
// Authors
|
766 |
if ($this->settings_sitemap['wpms_sitemap_author'] == 1) {
|
767 |
-
$html .= '<div id="sitemap_authors"><h3>' . __('Authors') . '</h3>
|
768 |
<ul>';
|
769 |
|
770 |
$authEx = implode(", ", get_users('orderby=nicename&meta_key=wpms_excludeauthorsitemap&meta_value=on'));
|
147 |
?>
|
148 |
<?php if (is_multisite()) { ?>
|
149 |
<label><input id="wpms_sitemap_add" type='checkbox' disabled="disabled" name='_metaseo_settings_sitemap[wpms_sitemap_add]' value="1" <?php checked(1, $this->settings_sitemap['wpms_sitemap_add']); ?> /> <?php _e("add sitemap file path in robots.txt", 'wp-meta-seo'); ?></label>
|
150 |
+
<p style="color:red"><?php _e("Since you are using multisite, the plugin does not allow to add a sitemap to robots.txt", 'wp-meta-seo'); ?></p>
|
151 |
<?php } else { ?>
|
152 |
<!-- for robots.txt we need to use site_url instead home_url ! -->
|
153 |
<label><input id="wpms_sitemap_add" type='checkbox' name='_metaseo_settings_sitemap[wpms_sitemap_add]' value="1" <?php checked(1, $this->settings_sitemap['wpms_sitemap_add']); ?> /> <?php _e("add sitemap link in the", 'wp-meta-seo'); ?> <a href="<?php echo site_url('/'); ?>robots.txt" target="_new">robots.txt</a></label>
|
764 |
if ($i == 1) {
|
765 |
// Authors
|
766 |
if ($this->settings_sitemap['wpms_sitemap_author'] == 1) {
|
767 |
+
$html .= '<div id="sitemap_authors"><h3>' . __('Authors', 'wp-meta-seo') . '</h3>
|
768 |
<ul>';
|
769 |
|
770 |
$authEx = implode(", ", get_users('orderby=nicename&meta_key=wpms_excludeauthorsitemap&meta_value=on'));
|
inc/google_analytics/wpmsga.php
CHANGED
@@ -19,7 +19,7 @@ if (!class_exists('WPMSGA_Manager')) {
|
|
19 |
*/
|
20 |
private function __construct() {
|
21 |
if (null !== self::$instance) {
|
22 |
-
_doing_it_wrong(__FUNCTION__, __("This is not allowed, read the documentation!", 'wp-meta-seo'), '4.6');
|
23 |
}
|
24 |
}
|
25 |
|
19 |
*/
|
20 |
private function __construct() {
|
21 |
if (null !== self::$instance) {
|
22 |
+
_doing_it_wrong(__FUNCTION__, __("This is not allowed, please read the documentation!", 'wp-meta-seo'), '4.6');
|
23 |
}
|
24 |
}
|
25 |
|
inc/pages/content-meta.php
CHANGED
@@ -78,7 +78,7 @@ if (!empty($_REQUEST['_wp_http_referer'])) {
|
|
78 |
});
|
79 |
|
80 |
$('.metaseo-metadesc').bind('input propertychange', function () {
|
81 |
-
|
82 |
});
|
83 |
|
84 |
$('.metaseo-metadesc').blur(function () {
|
78 |
});
|
79 |
|
80 |
$('.metaseo-metadesc').bind('input propertychange', function () {
|
81 |
+
metaseo_desclength(this.id, true);
|
82 |
});
|
83 |
|
84 |
$('.metaseo-metadesc').blur(function () {
|
inc/pages/dashboard.php
CHANGED
@@ -51,7 +51,7 @@ $plugin_imgRecycle_file = 'imagerecycle-pdf-image-compression/wp-image-recycle.p
|
|
51 |
<span class="sr-only">0% Complete (success)</span>
|
52 |
</div>
|
53 |
</div>
|
54 |
-
<p><?php _e('Meta title filled', 'wp-meta-seo') ?>: <?php _e('Loading...','wp-meta-seo
|
55 |
</div>
|
56 |
<div class="col-xs-5 col-lg-4 text-right">
|
57 |
<input type="text" value="0" class="dial-warning">
|
@@ -73,7 +73,7 @@ $plugin_imgRecycle_file = 'imagerecycle-pdf-image-compression/wp-image-recycle.p
|
|
73 |
<span class="sr-only">0% Complete (success)</span>
|
74 |
</div>
|
75 |
</div>
|
76 |
-
<p><?php _e('Meta description filled', 'wp-meta-seo') ?>: <?php _e('Loading...','wp-meta-seo
|
77 |
</div>
|
78 |
<div class="col-xs-5 col-lg-4 text-right">
|
79 |
<input type="text" value="0" class="dial-info">
|
@@ -96,7 +96,7 @@ $plugin_imgRecycle_file = 'imagerecycle-pdf-image-compression/wp-image-recycle.p
|
|
96 |
<span class="sr-only">0% Complete (success)</span>
|
97 |
</div>
|
98 |
</div>
|
99 |
-
<p><?php _e('Wrong resized images', 'wp-meta-seo') ?>: <?php _e('Loading...','wp-meta-seo
|
100 |
</div>
|
101 |
<div class="col-xs-5 col-lg-4 text-right">
|
102 |
<input type="text" value="0" class="dial-danger">
|
@@ -118,7 +118,7 @@ $plugin_imgRecycle_file = 'imagerecycle-pdf-image-compression/wp-image-recycle.p
|
|
118 |
<span class="sr-only">0% Complete (success)</span>
|
119 |
</div>
|
120 |
</div>
|
121 |
-
<p><?php _e('Image data filled (in content)', 'wp-meta-seo') ?>: <?php _e('Loading...','wp-meta-seo
|
122 |
</div>
|
123 |
<div class="col-xs-5 col-lg-4 text-right">
|
124 |
<input type="text" value="0" class="dial-success">
|
@@ -140,7 +140,7 @@ $plugin_imgRecycle_file = 'imagerecycle-pdf-image-compression/wp-image-recycle.p
|
|
140 |
<span class="sr-only">0% Complete (success)</span>
|
141 |
</div>
|
142 |
</div>
|
143 |
-
<p><?php _e('Latest month new or updated content', 'wp-meta-seo') ?>: <?php _e('Loading...','wp-meta-seo
|
144 |
</div>
|
145 |
<div class="col-xs-5 col-lg-4 text-right">
|
146 |
<input type="text" value="0" class="dial-warning">
|
@@ -162,7 +162,7 @@ $plugin_imgRecycle_file = 'imagerecycle-pdf-image-compression/wp-image-recycle.p
|
|
162 |
<span class="sr-only">0% Complete (success)</span>
|
163 |
</div>
|
164 |
</div>
|
165 |
-
<p><?php _e('Links title completed', 'wp-meta-seo') ?>: <?php _e('Loading...','wp-meta-seo
|
166 |
</div>
|
167 |
<div class="col-xs-5 col-lg-4 text-right">
|
168 |
<input type="text" value="0" class="dial-warning">
|
51 |
<span class="sr-only">0% Complete (success)</span>
|
52 |
</div>
|
53 |
</div>
|
54 |
+
<p><?php _e('Meta title filled', 'wp-meta-seo') ?>: <?php _e('Loading...','wp-meta-seo') ?></p>
|
55 |
</div>
|
56 |
<div class="col-xs-5 col-lg-4 text-right">
|
57 |
<input type="text" value="0" class="dial-warning">
|
73 |
<span class="sr-only">0% Complete (success)</span>
|
74 |
</div>
|
75 |
</div>
|
76 |
+
<p><?php _e('Meta description filled', 'wp-meta-seo') ?>: <?php _e('Loading...','wp-meta-seo') ?></p>
|
77 |
</div>
|
78 |
<div class="col-xs-5 col-lg-4 text-right">
|
79 |
<input type="text" value="0" class="dial-info">
|
96 |
<span class="sr-only">0% Complete (success)</span>
|
97 |
</div>
|
98 |
</div>
|
99 |
+
<p><?php _e('Wrong resized images', 'wp-meta-seo') ?>: <?php _e('Loading...','wp-meta-seo') ?></p>
|
100 |
</div>
|
101 |
<div class="col-xs-5 col-lg-4 text-right">
|
102 |
<input type="text" value="0" class="dial-danger">
|
118 |
<span class="sr-only">0% Complete (success)</span>
|
119 |
</div>
|
120 |
</div>
|
121 |
+
<p><?php _e('Image data filled (in content)', 'wp-meta-seo') ?>: <?php _e('Loading...','wp-meta-seo') ?></p>
|
122 |
</div>
|
123 |
<div class="col-xs-5 col-lg-4 text-right">
|
124 |
<input type="text" value="0" class="dial-success">
|
140 |
<span class="sr-only">0% Complete (success)</span>
|
141 |
</div>
|
142 |
</div>
|
143 |
+
<p><?php _e('Latest month new or updated content', 'wp-meta-seo') ?>: <?php _e('Loading...','wp-meta-seo') ?></p>
|
144 |
</div>
|
145 |
<div class="col-xs-5 col-lg-4 text-right">
|
146 |
<input type="text" value="0" class="dial-warning">
|
162 |
<span class="sr-only">0% Complete (success)</span>
|
163 |
</div>
|
164 |
</div>
|
165 |
+
<p><?php _e('Links title completed', 'wp-meta-seo') ?>: <?php _e('Loading...','wp-meta-seo') ?></p>
|
166 |
</div>
|
167 |
<div class="col-xs-5 col-lg-4 text-right">
|
168 |
<input type="text" value="0" class="dial-warning">
|
inc/pages/google-analytics/metaseo-google-analytics-trackcode.php
CHANGED
@@ -12,8 +12,7 @@
|
|
12 |
}
|
13 |
|
14 |
if (empty($this->google_alanytics['tableid_jail'])) {
|
15 |
-
$message = "<div class='error'><p>" . __(
|
16 |
-
//$message = __("You need select a profile:", 'wp-meta-seo') . ' <a href="' . admin_url('admin.php?page=metaseo_google_analytics&view=wpmsga_trackcode') . '">' . __("authorize the plugin", 'wp-meta-seo') . '</a>.';
|
17 |
echo $message;
|
18 |
}
|
19 |
|
@@ -62,7 +61,7 @@
|
|
62 |
}
|
63 |
}
|
64 |
} else {
|
65 |
-
echo '<option value="">' . __(
|
66 |
}
|
67 |
?>
|
68 |
</select>
|
12 |
}
|
13 |
|
14 |
if (empty($this->google_alanytics['tableid_jail'])) {
|
15 |
+
$message = "<div class='error'><p>" . __( 'You have to select a profile: ', 'wp-meta-seo') . '<a href="' . admin_url('admin.php?page=metaseo_google_analytics&view=wpmsga_trackcode') . '">' . __("authorize the plugin", 'wp-meta-seo') . '</a></p></div>';
|
|
|
16 |
echo $message;
|
17 |
}
|
18 |
|
61 |
}
|
62 |
}
|
63 |
} else {
|
64 |
+
echo '<option value="">' . __('Property not found', 'wp-meta-seo') . '</option>';
|
65 |
}
|
66 |
?>
|
67 |
</select>
|
inc/pages/metaseo-image-compression.php
CHANGED
@@ -13,7 +13,7 @@ if (isset($_GET['action'])) {
|
|
13 |
if ('install-plugin' == $action) {
|
14 |
|
15 |
if (!current_user_can('install_plugins'))
|
16 |
-
wp_die(__('You do not have sufficient permissions to install plugins on this site.'));
|
17 |
|
18 |
include_once( ABSPATH . 'wp-admin/includes/plugin-install.php' ); //for plugins_api..
|
19 |
|
@@ -40,11 +40,11 @@ if (isset($_GET['action'])) {
|
|
40 |
wp_die($api);
|
41 |
}
|
42 |
|
43 |
-
$title = __('Plugin Install');
|
44 |
$parent_file = 'plugins.php';
|
45 |
$submenu_file = 'plugin-install.php';
|
46 |
|
47 |
-
$title = sprintf(__('Installing Plugin: %s'), $api->name . ' ' . $api->version);
|
48 |
$nonce = 'install-plugin_' . $plugin;
|
49 |
$url = 'update.php?action=install-plugin&plugin=' . urlencode($plugin);
|
50 |
if (isset($_GET['from']))
|
@@ -56,7 +56,7 @@ if (isset($_GET['action'])) {
|
|
56 |
$upgrader->install($api->download_link);
|
57 |
}elseif ('activate' == $action) {
|
58 |
if (!current_user_can('activate_plugins'))
|
59 |
-
wp_die(__('You do not have sufficient permissions to activate plugins for this site.'));
|
60 |
|
61 |
if (is_multisite() && !is_network_admin() && is_network_only_plugin($plugin)) {
|
62 |
wp_redirect(self_admin_url("plugins.php?plugin_status=$status&paged=$page&s=$s"));
|
13 |
if ('install-plugin' == $action) {
|
14 |
|
15 |
if (!current_user_can('install_plugins'))
|
16 |
+
wp_die(__('You do not have sufficient permissions to install plugins on this site.', 'wp-meta-seo'));
|
17 |
|
18 |
include_once( ABSPATH . 'wp-admin/includes/plugin-install.php' ); //for plugins_api..
|
19 |
|
40 |
wp_die($api);
|
41 |
}
|
42 |
|
43 |
+
$title = __('Plugin Install', 'wp-meta-seo');
|
44 |
$parent_file = 'plugins.php';
|
45 |
$submenu_file = 'plugin-install.php';
|
46 |
|
47 |
+
$title = sprintf(__('Installing Plugin: %s', 'wp-meta-seo'), $api->name . ' ' . $api->version);
|
48 |
$nonce = 'install-plugin_' . $plugin;
|
49 |
$url = 'update.php?action=install-plugin&plugin=' . urlencode($plugin);
|
50 |
if (isset($_GET['from']))
|
56 |
$upgrader->install($api->download_link);
|
57 |
}elseif ('activate' == $action) {
|
58 |
if (!current_user_can('activate_plugins'))
|
59 |
+
wp_die(__('You do not have sufficient permissions to activate plugins for this site.', 'wp-meta-seo'));
|
60 |
|
61 |
if (is_multisite() && !is_network_admin() && is_network_only_plugin($plugin)) {
|
62 |
wp_redirect(self_admin_url("plugins.php?plugin_status=$status&paged=$page&s=$s"));
|
inc/pages/settings.php
CHANGED
@@ -23,6 +23,7 @@ if (is_array($wpms_settings_404)) {
|
|
23 |
<?php
|
24 |
endif;
|
25 |
?>
|
|
|
26 |
</div>
|
27 |
</div>
|
28 |
<div class="wpms_content_settings">
|
@@ -75,6 +76,10 @@ if (is_array($wpms_settings_404)) {
|
|
75 |
<span class="message_saved"><?php _e('Saved', 'wp-meta-seo') ?></span>
|
76 |
</div>
|
77 |
|
|
|
|
|
|
|
|
|
78 |
<?php
|
79 |
if(is_plugin_active(WPMSEO_ADDON_FILENAME)){
|
80 |
echo $html_tabemail;
|
23 |
<?php
|
24 |
endif;
|
25 |
?>
|
26 |
+
<div class="wpms-tab-header" data-label="wpms-jutranslation"><?php _e('Translation', 'wp-meta-seo') ?></div>
|
27 |
</div>
|
28 |
</div>
|
29 |
<div class="wpms_content_settings">
|
76 |
<span class="message_saved"><?php _e('Saved', 'wp-meta-seo') ?></span>
|
77 |
</div>
|
78 |
|
79 |
+
<div class="content-box content-wpms-jutranslation">
|
80 |
+
<?php echo \Joomunited\WPMetaSEO\Jutranslation\Jutranslation::getInput(); ?>
|
81 |
+
</div>
|
82 |
+
|
83 |
<?php
|
84 |
if(is_plugin_active(WPMSEO_ADDON_FILENAME)){
|
85 |
echo $html_tabemail;
|
inc/pages/sitemaps/metaseo-google-sitemap.php
CHANGED
@@ -25,7 +25,7 @@
|
|
25 |
}
|
26 |
echo '<div class="div_wpms_save_sitemaps"><input type="button" class="button button-primary wpms_save_create_sitemaps" value="' . __('Regenerate and save sitemaps', 'wp-meta-seo') . '"><span class="spinner spinner_save_sitemaps"></span></div>';
|
27 |
if(is_plugin_active(WPMSEO_ADDON_FILENAME)){
|
28 |
-
echo '<p class="description">'.__("Sitemap automatic submission to Google Search Console on save, ","wp-meta-seo
|
29 |
}
|
30 |
?>
|
31 |
</form>
|
25 |
}
|
26 |
echo '<div class="div_wpms_save_sitemaps"><input type="button" class="button button-primary wpms_save_create_sitemaps" value="' . __('Regenerate and save sitemaps', 'wp-meta-seo') . '"><span class="spinner spinner_save_sitemaps"></span></div>';
|
27 |
if(is_plugin_active(WPMSEO_ADDON_FILENAME)){
|
28 |
+
echo '<p class="description">'.__("Sitemap automatic submission to Google Search Console on save, ","wp-meta-seo").'<a href="'.admin_url('admin.php?page=metaseo_console&tab=settings').'">'.__("requires authentication","wp-meta-seo").'</a></p>';
|
29 |
}
|
30 |
?>
|
31 |
</form>
|
jutranslation/assets/css/jutranslation.css
ADDED
@@ -0,0 +1,348 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#jutranslation {
|
2 |
+
font-family: 'Open Sans', Helvetica, Arial, sans-serif !important;
|
3 |
+
}
|
4 |
+
|
5 |
+
#jutranslation a {
|
6 |
+
text-decoration: none;
|
7 |
+
}
|
8 |
+
|
9 |
+
/* START WordPress only
|
10 |
+
-----------------------------------------------*/
|
11 |
+
|
12 |
+
div#jutranslation.wordpress div.control-group table#jutranslations-languages.table.table-striped {
|
13 |
+
width: 80%;
|
14 |
+
text-align: left;
|
15 |
+
}
|
16 |
+
|
17 |
+
div#jutranslation.wordpress div.control-group table#jutranslations-languages tbody tr td {
|
18 |
+
padding: 0 10px;
|
19 |
+
}
|
20 |
+
|
21 |
+
div#jutranslation.wordpress div.control-group.edition table {
|
22 |
+
width: 90%;
|
23 |
+
}
|
24 |
+
|
25 |
+
@media only screen and (min-width: 1920px) {
|
26 |
+
#jutranslation.wordpress > div.control-group.edition > table > tbody > tr.do_table_heading > td:nth-child(1) {
|
27 |
+
width: 35%;
|
28 |
+
}
|
29 |
+
#jutranslation.wordpress > div.control-group.edition > table > tbody > tr.do_table_heading > td:nth-child(2) {
|
30 |
+
width: 22%;
|
31 |
+
}
|
32 |
+
#jutranslation.wordpress > div.control-group.edition > table > tbody > tr.do_table_heading > td:nth-child(3) {
|
33 |
+
width: 22%;
|
34 |
+
}
|
35 |
+
#jutranslation.wordpress > div.control-group.edition > table > tbody > tr.do_table_heading > td:nth-child(4) {
|
36 |
+
width: 22%;
|
37 |
+
}
|
38 |
+
div#jutranslation.wordpress tr.do_table_filters td input.do_table_filter_reference,
|
39 |
+
div#jutranslation.wordpress tr.do_table_line td input.do_table_reference,
|
40 |
+
div#jutranslation.wordpress tr.do_table_filters td input.do_table_filter_language,
|
41 |
+
div#jutranslation.wordpress tr.do_table_line td input.do_table_language,
|
42 |
+
div#jutranslation.wordpress div.control-group.edition td input.do_table_filter_override,
|
43 |
+
div#jutranslation.wordpress div.control-group.edition td input.do_table_override {
|
44 |
+
min-width: 310px;
|
45 |
+
}
|
46 |
+
}
|
47 |
+
|
48 |
+
@media only screen and (min-width: 1480px) and (max-width: 1920px) {
|
49 |
+
#jutranslation.wordpress > div.control-group.edition > table > tbody > tr.do_table_heading > td:nth-child(1) {
|
50 |
+
width: 25%;
|
51 |
+
}
|
52 |
+
#jutranslation.wordpress > div.control-group.edition > table > tbody > tr.do_table_heading > td:nth-child(2) {
|
53 |
+
width: 22%;
|
54 |
+
}
|
55 |
+
#jutranslation.wordpress > div.control-group.edition > table > tbody > tr.do_table_heading > td:nth-child(3) {
|
56 |
+
width: 22%;
|
57 |
+
}
|
58 |
+
#jutranslation.wordpress > div.control-group.edition > table > tbody > tr.do_table_heading > td:nth-child(4) {
|
59 |
+
width: 22%;
|
60 |
+
}
|
61 |
+
div#jutranslation.wordpress tr.do_table_filters td input.do_table_filter_reference,
|
62 |
+
div#jutranslation.wordpress tr.do_table_line td input.do_table_reference,
|
63 |
+
div#jutranslation.wordpress tr.do_table_filters td input.do_table_filter_language,
|
64 |
+
div#jutranslation.wordpress tr.do_table_line td input.do_table_language,
|
65 |
+
div#jutranslation.wordpress div.control-group.edition td input.do_table_filter_override,
|
66 |
+
div#jutranslation.wordpress div.control-group.edition td input.do_table_override {
|
67 |
+
min-width: 250px;
|
68 |
+
}
|
69 |
+
}
|
70 |
+
|
71 |
+
@media only screen and (min-width: 1230px) and (max-width: 1480px) {
|
72 |
+
div#jutranslation.wordpress div.control-group.edition table {
|
73 |
+
width: 100%;
|
74 |
+
}
|
75 |
+
#jutranslation.wordpress > div.control-group.edition > table > tbody > tr.do_table_heading > td:nth-child(1) {
|
76 |
+
width: 35%;
|
77 |
+
}
|
78 |
+
#jutranslation.wordpress > div.control-group.edition > table > tbody > tr.do_table_heading > td:nth-child(2) {
|
79 |
+
width: auto;
|
80 |
+
}
|
81 |
+
#jutranslation.wordpress > div.control-group.edition > table > tbody > tr.do_table_heading > td:nth-child(3) {
|
82 |
+
width: auto;
|
83 |
+
}
|
84 |
+
#jutranslation.wordpress > div.control-group.edition > table > tbody > tr.do_table_heading > td:nth-child(4) {
|
85 |
+
width: auto;
|
86 |
+
}
|
87 |
+
div#jutranslation.wordpress tr.do_table_filters td input.do_table_filter_reference,
|
88 |
+
div#jutranslation.wordpress tr.do_table_line td input.do_table_reference,
|
89 |
+
div#jutranslation.wordpress tr.do_table_filters td input.do_table_filter_language,
|
90 |
+
div#jutranslation.wordpress tr.do_table_line td input.do_table_language,
|
91 |
+
div#jutranslation.wordpress div.control-group.edition td input.do_table_filter_override,
|
92 |
+
div#jutranslation.wordpress div.control-group.edition td input.do_table_override {
|
93 |
+
min-width: 200px;
|
94 |
+
}
|
95 |
+
}
|
96 |
+
|
97 |
+
@media only screen and (min-width: 740px) and (max-width: 1230px) {
|
98 |
+
div#jutranslation.wordpress div.control-group.edition table {
|
99 |
+
width: 100%;
|
100 |
+
}
|
101 |
+
#jutranslation.wordpress > div.control-group.edition > table > tbody > tr.do_table_heading > td:nth-child(1) {
|
102 |
+
width: 35%;
|
103 |
+
}
|
104 |
+
#jutranslation.wordpress > div.control-group.edition > table > tbody > tr.do_table_heading > td:nth-child(2) {
|
105 |
+
width: auto;
|
106 |
+
}
|
107 |
+
#jutranslation.wordpress > div.control-group.edition > table > tbody > tr.do_table_heading > td:nth-child(3) {
|
108 |
+
width: auto;
|
109 |
+
}
|
110 |
+
#jutranslation.wordpress > div.control-group.edition > table > tbody > tr.do_table_heading > td:nth-child(4) {
|
111 |
+
width: auto;
|
112 |
+
}
|
113 |
+
div#jutranslation.wordpress tr.do_table_filters td input.do_table_filter_reference,
|
114 |
+
div#jutranslation.wordpress tr.do_table_line td input.do_table_reference,
|
115 |
+
div#jutranslation.wordpress tr.do_table_filters td input.do_table_filter_language,
|
116 |
+
div#jutranslation.wordpress tr.do_table_line td input.do_table_language,
|
117 |
+
div#jutranslation.wordpress div.control-group.edition td input.do_table_filter_override,
|
118 |
+
div#jutranslation.wordpress div.control-group.edition td input.do_table_override {
|
119 |
+
min-width: 120px;
|
120 |
+
}
|
121 |
+
}
|
122 |
+
|
123 |
+
|
124 |
+
/* END WordPress only
|
125 |
+
-----------------------------------------------*/
|
126 |
+
|
127 |
+
#jutranslations-languages div.original_content a.jutranslation-override,
|
128 |
+
#jutranslations-languages div.original_content span a {
|
129 |
+
height: auto;
|
130 |
+
width: auto;
|
131 |
+
border: none;
|
132 |
+
text-shadow: none;
|
133 |
+
box-shadow: none;
|
134 |
+
background-color: #1d6cb0;
|
135 |
+
background: #1d6cb0;
|
136 |
+
border-radius: 2px;
|
137 |
+
padding: 2px 10px;
|
138 |
+
font-size: 12px;
|
139 |
+
text-transform: uppercase;
|
140 |
+
color: #fff;
|
141 |
+
line-height: 35px;
|
142 |
+
margin-right: 5px;
|
143 |
+
transition: all 0.2s ease-in;
|
144 |
+
}
|
145 |
+
|
146 |
+
#jutranslations-languages div.original_content a.jutranslation-override:hover,
|
147 |
+
#jutranslations-languages div.original_content a.jutranslation-override:active,
|
148 |
+
#jutranslations-languages div.original_content a.jutranslation-override:focus,
|
149 |
+
#jutranslations-languages div.original_content span a:hover,
|
150 |
+
#jutranslations-languages div.original_content span a:active,
|
151 |
+
#jutranslations-languages div.original_content span a:focus {
|
152 |
+
box-shadow: 1px 1px 12px #ccc;
|
153 |
+
text-decoration: none;
|
154 |
+
}
|
155 |
+
|
156 |
+
#jutranslations-languages div.original_content a.jutranslation-edition {
|
157 |
+
height: auto;
|
158 |
+
width: auto;
|
159 |
+
border: none;
|
160 |
+
text-shadow: none;
|
161 |
+
box-shadow: none;
|
162 |
+
background-color: #F9A541;
|
163 |
+
background: #F9A541;
|
164 |
+
border-radius: 2px;
|
165 |
+
padding: 2px 10px;
|
166 |
+
font-size: 12px;
|
167 |
+
text-transform: uppercase;
|
168 |
+
color: #fff;
|
169 |
+
line-height: 35px;
|
170 |
+
margin-right: 5px;
|
171 |
+
transition: all 0.2s ease-in;
|
172 |
+
}
|
173 |
+
|
174 |
+
#jutranslations-languages div.original_content a.jutranslation-edition:hover,
|
175 |
+
#jutranslations-languages div.original_content a.jutranslation-edition:active,
|
176 |
+
#jutranslations-languages div.original_content a.jutranslation-edition:focus {
|
177 |
+
box-shadow: 1px 1px 12px #ccc;
|
178 |
+
text-decoration: none;
|
179 |
+
}
|
180 |
+
|
181 |
+
#jutranslations-languages div.original_content a.jutranslation-share {
|
182 |
+
height: auto;
|
183 |
+
width: auto;
|
184 |
+
border: none;
|
185 |
+
text-shadow: none;
|
186 |
+
box-shadow: none;
|
187 |
+
background-color: #7AC143;
|
188 |
+
background: #7AC143;
|
189 |
+
border-radius: 2px;
|
190 |
+
padding: 2px 10px;
|
191 |
+
font-size: 12px;
|
192 |
+
text-transform: uppercase;
|
193 |
+
color: #fff;
|
194 |
+
line-height: 35px;
|
195 |
+
margin-right: 5px;
|
196 |
+
transition: all 0.2s ease-in;
|
197 |
+
}
|
198 |
+
|
199 |
+
#jutranslations-languages div.original_content a.jutranslation-share:hover,
|
200 |
+
#jutranslations-languages div.original_content a.jutranslation-share:active,
|
201 |
+
#jutranslations-languages div.original_content a.jutranslation-share:focus {
|
202 |
+
box-shadow: 1px 1px 12px #ccc;
|
203 |
+
text-decoration: none;
|
204 |
+
}
|
205 |
+
|
206 |
+
#jutranslations-languages thead tr th {
|
207 |
+
font-size: 14px;
|
208 |
+
text-transform: uppercase;
|
209 |
+
font-weight: bold;
|
210 |
+
line-height: 30px;
|
211 |
+
border-bottom: 1px solid #eee;
|
212 |
+
}
|
213 |
+
|
214 |
+
#jutranslations-languages tbody tr td.current_version,
|
215 |
+
#jutranslations-languages tbody tr td div.original_content {
|
216 |
+
font-weight: normal;
|
217 |
+
}
|
218 |
+
|
219 |
+
#jutranslations-languages tbody tr td {
|
220 |
+
font-weight: bold;
|
221 |
+
}
|
222 |
+
|
223 |
+
div#jutranslation.wordpress div.control-group p,
|
224 |
+
#jutranslation div.control-group div.controls p {
|
225 |
+
font-weight: bold;
|
226 |
+
text-transform: uppercase;
|
227 |
+
padding-left: 8px;
|
228 |
+
}
|
229 |
+
|
230 |
+
#jutranslations-languages tbody tr td {
|
231 |
+
vertical-align: middle;
|
232 |
+
}
|
233 |
+
|
234 |
+
#jutranslation .do_table_reference_copy,
|
235 |
+
#jutranslation .do_table_language_copy,
|
236 |
+
#jutranslation .do_table_override_copy {
|
237 |
+
font-size: 15px;
|
238 |
+
padding: 2px 2px 2px 5px;
|
239 |
+
vertical-align: middle;
|
240 |
+
}
|
241 |
+
|
242 |
+
#jutranslation > div.tab-description.alert.alert-info {
|
243 |
+
display: none;
|
244 |
+
}
|
245 |
+
|
246 |
+
#jutranslation .do_table_buttons {}
|
247 |
+
|
248 |
+
.jutranslation-share.just-added {
|
249 |
+
transition: all 1s ease-in;
|
250 |
+
color: #2167da;
|
251 |
+
font-weight: bold;
|
252 |
+
}
|
253 |
+
|
254 |
+
#jutranslation tr.do_table_heading td {
|
255 |
+
font-size: 14px;
|
256 |
+
text-transform: uppercase;
|
257 |
+
font-weight: bold;
|
258 |
+
line-height: 30px;
|
259 |
+
border-bottom: 1px solid #eee;
|
260 |
+
}
|
261 |
+
|
262 |
+
#jutranslation tr.do_table_filters {
|
263 |
+
height: 80px;
|
264 |
+
}
|
265 |
+
|
266 |
+
#jutranslation div.control-group.edition input {
|
267 |
+
border: 1px solid #ccc;
|
268 |
+
border-radius: 0;
|
269 |
+
box-shadow: none;
|
270 |
+
padding: 5px;
|
271 |
+
margin: 3px 0;
|
272 |
+
}
|
273 |
+
|
274 |
+
#jutranslation tr.do_table_filters > td:nth-child(1) {
|
275 |
+
vertical-align: middle;
|
276 |
+
}
|
277 |
+
|
278 |
+
#jutranslation tr.do_table_filters td input.do_table_filter_empty_reference,
|
279 |
+
#jutranslation tr.do_table_filters td input.do_table_filter_empty_language,
|
280 |
+
#jutranslation tr.do_table_filters td input.do_table_filter_empty_override {
|
281 |
+
margin: 0;
|
282 |
+
}
|
283 |
+
|
284 |
+
#jutranslation div.control-group.edition-message {
|
285 |
+
background-color: #2DAEF0;
|
286 |
+
padding: 15px;
|
287 |
+
color: #fff;
|
288 |
+
font-size: 15px;
|
289 |
+
}
|
290 |
+
|
291 |
+
#jutranslation #jutranslation_show_edition,
|
292 |
+
#jutranslation #jutranslation_cancel_edition {
|
293 |
+
margin: 10px 5px;
|
294 |
+
}
|
295 |
+
|
296 |
+
@media only screen and (min-width: 1680px) {
|
297 |
+
#jutranslation > div.control-group.edition > table > tbody > tr.do_table_heading > td:nth-child(1) {
|
298 |
+
min-width: 400px;
|
299 |
+
}
|
300 |
+
}
|
301 |
+
|
302 |
+
#jutranslation div.control-group.edition table tbody tr td textarea {
|
303 |
+
box-shadow: 1px 1px 12px #ccc;
|
304 |
+
border: 1px solid #888;
|
305 |
+
border-radius: 0;
|
306 |
+
transition: all 0.2s ease-in;
|
307 |
+
}
|
308 |
+
|
309 |
+
body > form > div:nth-child(3) > textarea {
|
310 |
+
border: 1px solid #ccc;
|
311 |
+
border-radius: 0;
|
312 |
+
box-shadow: none;
|
313 |
+
padding: 5px;
|
314 |
+
transition: all 0.2s ease-in;
|
315 |
+
}
|
316 |
+
|
317 |
+
#jutranslation div.control-group.edition tr td a i {
|
318 |
+
color: #444;
|
319 |
+
}
|
320 |
+
|
321 |
+
.wordpress .table-striped tbody > tr:nth-child(odd) > td,
|
322 |
+
.wordpress .table-striped tbody > tr:nth-child(odd) > th {
|
323 |
+
background-color: #f9f9f9;
|
324 |
+
}
|
325 |
+
|
326 |
+
.wordpress .dashicons-arrow-right-alt2 {
|
327 |
+
font-size: 15px;
|
328 |
+
vertical-align: sub;
|
329 |
+
}
|
330 |
+
|
331 |
+
a.disabled {
|
332 |
+
background-color: #c3c2c2 !important;
|
333 |
+
color: #333 !important;
|
334 |
+
cursor: default;
|
335 |
+
position: relative;
|
336 |
+
}
|
337 |
+
|
338 |
+
#jutranslation_toast {
|
339 |
+
position: fixed;
|
340 |
+
top: 40px;
|
341 |
+
right: 20px;
|
342 |
+
padding: 14px 15px;
|
343 |
+
background-color: #323232;
|
344 |
+
color: #FFFFFF;
|
345 |
+
font-size: 14px;
|
346 |
+
border-radius: 2px;
|
347 |
+
z-index: 1000;
|
348 |
+
}
|
jutranslation/assets/images/preview_loader.gif
ADDED
Binary file
|
jutranslation/assets/images/radio.svg
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
<?xml version="1.0" encoding="utf-8"?><svg width='14px' height='14px' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" class="uil-blank"><rect x="0" y="0" width="100" height="100" fill="none" class="bk"></rect><g transform="scale(0.55)"><circle cx="30" cy="150" r="30" fill="#7b92bd"><animate attributeName="opacity" from="0" to="1" dur="1s" begin="0" repeatCount="indefinite" keyTimes="0;0.5;1" values="0;1;1"></animate></circle><path d="M90,150h30c0-49.7-40.3-90-90-90v30C63.1,90,90,116.9,90,150z" fill="#545f85"><animate attributeName="opacity" from="0" to="1" dur="1s" begin="0.1" repeatCount="indefinite" keyTimes="0;0.5;1" values="0;1;1"></animate></path><path d="M150,150h30C180,67.2,112.8,0,30,0v30C96.3,30,150,83.7,150,150z" fill="#545f85"><animate attributeName="opacity" from="0" to="1" dur="1s" begin="0.2" repeatCount="indefinite" keyTimes="0;0.5;1" values="0;1;1"></animate></path></g></svg>
|
jutranslation/assets/js/jutranslation.js
ADDED
@@ -0,0 +1,815 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
var joomunited_url = 'https://www.joomunited.com/';
|
2 |
+
|
3 |
+
jQuery(document).ready(function($){
|
4 |
+
// Define jutranslation_ajax_action if doesn't exist
|
5 |
+
if (typeof jutranslation_ajax_action === 'undefined') {
|
6 |
+
jutranslation_ajax_action='';
|
7 |
+
}
|
8 |
+
|
9 |
+
//Load the available version from Joomunited
|
10 |
+
$.each(julanguages, function(){
|
11 |
+
var julanguage = this;
|
12 |
+
$.ajax({
|
13 |
+
url : joomunited_url + "index.php?option=com_jutranslation&task=translations.getTranslations",
|
14 |
+
type : 'POST',
|
15 |
+
data : julanguage,
|
16 |
+
success : function(data){
|
17 |
+
data = JSON.parse(data);
|
18 |
+
|
19 |
+
$('#jutranslations-languages tbody tr[data-slug="'+ julanguage.extension + '"]').each(function(){
|
20 |
+
var lang = $(this).data('lang');
|
21 |
+
var slug = $(this).data('slug');
|
22 |
+
|
23 |
+
//Is this language one of Joomunited has translated
|
24 |
+
var found = false;
|
25 |
+
|
26 |
+
//For each translation found add the version and an install btn
|
27 |
+
$.each(data.data,function(){
|
28 |
+
if(this.language === lang && this.extension === slug){
|
29 |
+
found = true;
|
30 |
+
//Add new version availability information
|
31 |
+
var html;
|
32 |
+
switch (versionCompare(julanguage.versions[this.language], this.extension_version, julanguage.revisions[this.language], this.revision)) {
|
33 |
+
case 1:
|
34 |
+
html = 'You already have the newer version<br/>The latest version on Joomunited is ' + this.extension_version + ' rev'+this.revision + ' <a class="jutranslation-install" href="#" data-extension="' + this.extension + '" data-id="' + this.id + '">Install this version</a>';
|
35 |
+
break;
|
36 |
+
case 0:
|
37 |
+
html = 'You already have the latest version <a class="jutranslation-install" href="#" data-extension="' + this.extension + '" data-id="' + this.id + '">Reinstall</a>';
|
38 |
+
break;
|
39 |
+
case -1:
|
40 |
+
if (julanguage.versions[this.language]) {
|
41 |
+
install_update = 'Update';
|
42 |
+
} else {
|
43 |
+
install_update = 'Install';
|
44 |
+
}
|
45 |
+
|
46 |
+
html = 'There is a new version of language file available v' + this.extension_version + ' rev'+this.revision + ' <a class="jutranslation-install" href="#" data-extension="' + this.extension + '" data-id="' + this.id + '">' + install_update + '</a>';
|
47 |
+
}
|
48 |
+
$('#jutranslations-languages tr[data-lang="'+ this.language + '"][data-slug="'+ julanguage.extension + '"] td .latest_version').html(html);
|
49 |
+
|
50 |
+
//Initialize all installation button
|
51 |
+
$('.jutranslation-install').unbind().bind('click',function(e){
|
52 |
+
e.preventDefault();
|
53 |
+
|
54 |
+
var $clicked_button = $(this);
|
55 |
+
var $parent_line = $clicked_button.parents('tr');
|
56 |
+
var slug = $clicked_button.parents('tr').data('slug');
|
57 |
+
|
58 |
+
//Get from Joomunited the translation
|
59 |
+
$.ajax({
|
60 |
+
url : joomunited_url + "/index.php?option=com_jutranslation&task=translations.download",
|
61 |
+
type : 'POST',
|
62 |
+
data : {
|
63 |
+
extension : $clicked_button.data("extension"),
|
64 |
+
translation : $clicked_button.data("id")
|
65 |
+
},
|
66 |
+
success : function(result){
|
67 |
+
result = JSON.parse(result);
|
68 |
+
|
69 |
+
//Do not show language columns if it's en-US
|
70 |
+
var show_reference = true;
|
71 |
+
if(result.datas.language==='en-US'){
|
72 |
+
show_reference = false;
|
73 |
+
}
|
74 |
+
|
75 |
+
var table_option = {
|
76 |
+
language : result.datas.language,
|
77 |
+
confirm_button_action : function(e, $_content, close){
|
78 |
+
e.preventDefault();
|
79 |
+
|
80 |
+
var caller = this;
|
81 |
+
|
82 |
+
//Get the strings
|
83 |
+
strings = {};
|
84 |
+
var modified = 0;
|
85 |
+
$.each($_content.find('.do_table_line'),function(){
|
86 |
+
//Get only strings if they need to be translated and have actually been translated
|
87 |
+
switch (1===1){
|
88 |
+
case $(this).find('.do_table_language').is('[readonly]'):
|
89 |
+
strings[$(this).find('.do_table_constant').data('value')] = $(this).find('.do_table_language').val();
|
90 |
+
break;
|
91 |
+
case $(this).find('.do_table_language').prop('defaultValue') !== $(this).find('.do_table_language').val():
|
92 |
+
strings[$(this).find('.do_table_constant').data('value')] = $(this).find('.do_table_language').val();
|
93 |
+
modified = 1;
|
94 |
+
break;
|
95 |
+
}
|
96 |
+
});
|
97 |
+
|
98 |
+
//Initialize ajax request datas
|
99 |
+
ajax_data = {
|
100 |
+
action : jutranslation_ajax_action,
|
101 |
+
slug: slug,
|
102 |
+
strings : JSON.stringify(strings),
|
103 |
+
language : result.datas.language,
|
104 |
+
extension_version : result.datas.version,
|
105 |
+
revision : result.datas.revision,
|
106 |
+
modified : modified,
|
107 |
+
wp_nonce : jutranslation_token
|
108 |
+
};
|
109 |
+
ajax_data[jutranslation_token] = 1;
|
110 |
+
|
111 |
+
$.ajax({
|
112 |
+
type: 'POST',
|
113 |
+
url: jutranslation_base_url + 'task=jutranslation.saveStrings',
|
114 |
+
data: ajax_data,
|
115 |
+
success: function (result2) {
|
116 |
+
result2 = JSON.parse(result2);
|
117 |
+
if (result2.status === 'success') {
|
118 |
+
//Close the edition
|
119 |
+
if(close) {
|
120 |
+
caller.cancel_button_action(e);
|
121 |
+
}
|
122 |
+
toast('Modifications saved');
|
123 |
+
|
124 |
+
$parent_line.find('.current_version').html(result.datas.version + ' rev' + result.datas.revision);
|
125 |
+
$parent_line.attr('data-version', result.datas.version);
|
126 |
+
|
127 |
+
if(modified){
|
128 |
+
$parent_line.find('.jutranslation-share').show().addClass('just-added');
|
129 |
+
}else{
|
130 |
+
$parent_line.find('.jutranslation-share').hide();
|
131 |
+
}
|
132 |
+
|
133 |
+
$parent_line.find('.latest_version').html('The language file has been updated');
|
134 |
+
$parent_line.find('.jutranslation-edition').removeClass('disabled');
|
135 |
+
} else {
|
136 |
+
alert('Error while updating language file');
|
137 |
+
}
|
138 |
+
}
|
139 |
+
});
|
140 |
+
},
|
141 |
+
columns : {
|
142 |
+
reference : {
|
143 |
+
show : show_reference
|
144 |
+
},
|
145 |
+
language : {
|
146 |
+
editable : true,
|
147 |
+
title : 'Language ' + result.datas.language,
|
148 |
+
allow_copy : false
|
149 |
+
},
|
150 |
+
override : {
|
151 |
+
show : false
|
152 |
+
}
|
153 |
+
},
|
154 |
+
copy_destination : 'do_table_language',
|
155 |
+
after_init : function($_content){
|
156 |
+
//Do not allow to edit already translated strings
|
157 |
+
$_content.find('.do_table_language').filter(function () {
|
158 |
+
return this.value.length > 0
|
159 |
+
}).attr('readonly','readonly').parents('tr').find('[class^="do_table_copy_"]').hide();
|
160 |
+
|
161 |
+
//Set an introduction message
|
162 |
+
if($_content.find('.do_table_language').not('[readonly="readonly"]').length){
|
163 |
+
$_content.prepend('<h3>Some strings are not currently translated to your language, you can translate it now. If you don\'t translate the english translation will be used instead</h3>');
|
164 |
+
}
|
165 |
+
}
|
166 |
+
};
|
167 |
+
|
168 |
+
//Generate the table
|
169 |
+
doTable(result.datas.strings, table_option);
|
170 |
+
}
|
171 |
+
});
|
172 |
+
});
|
173 |
+
}
|
174 |
+
});
|
175 |
+
|
176 |
+
//Check if a translation has been found on joomunited
|
177 |
+
var $line = $('#jutranslations-languages tr[data-lang="'+ lang + '"][data-slug="'+ julanguage.extension + '"]');
|
178 |
+
if(found===false){
|
179 |
+
$line.find('td .latest_version').html('No translation found');
|
180 |
+
}else{
|
181 |
+
if(!$line.attr('data-installed')){
|
182 |
+
$line.find('td .jutranslation-edition').addClass('disabled').attr('title','Please install the latest available version first');
|
183 |
+
}
|
184 |
+
}
|
185 |
+
});
|
186 |
+
}
|
187 |
+
});
|
188 |
+
});
|
189 |
+
// Edit an installed version
|
190 |
+
$('.jutranslation-edition').click(function(e){
|
191 |
+
e.preventDefault();
|
192 |
+
|
193 |
+
var $clicked_button = $(this);
|
194 |
+
|
195 |
+
// Do nothing is disabled
|
196 |
+
if ($clicked_button.hasClass('disabled')) {
|
197 |
+
return;
|
198 |
+
}
|
199 |
+
|
200 |
+
var language = $clicked_button.parents('tr').data('lang');
|
201 |
+
var slug = $clicked_button.parents('tr').data('slug');
|
202 |
+
|
203 |
+
getStrings(language, slug, function(datas){
|
204 |
+
|
205 |
+
var table_option = {
|
206 |
+
language : language,
|
207 |
+
slug : slug,
|
208 |
+
confirm_button_action : function(e, $_content, close){
|
209 |
+
e.preventDefault();
|
210 |
+
|
211 |
+
var caller = this;
|
212 |
+
|
213 |
+
//Get the strings
|
214 |
+
values = {};
|
215 |
+
modified = 0;
|
216 |
+
|
217 |
+
$.each($_content.find('.do_table_line'),function(){
|
218 |
+
var value = $(this).find('.do_table_language').val();
|
219 |
+
if(value !== ''){
|
220 |
+
values[$(this).find('.do_table_constant').data('value')] = value;
|
221 |
+
}
|
222 |
+
|
223 |
+
//Check if something has been modified
|
224 |
+
if ($(this).find('.do_table_language').prop('defaultValue') !== $(this).find('.do_table_language').val()) {
|
225 |
+
modified = 1;
|
226 |
+
}
|
227 |
+
});
|
228 |
+
|
229 |
+
if (modified === 1) {
|
230 |
+
//Initialize ajax request datas
|
231 |
+
ajax_data = {
|
232 |
+
action : jutranslation_ajax_action,
|
233 |
+
strings: JSON.stringify(values),
|
234 |
+
language: language,
|
235 |
+
slug: slug,
|
236 |
+
destination: 'edition',
|
237 |
+
modified: '1',
|
238 |
+
wp_nonce : jutranslation_token
|
239 |
+
};
|
240 |
+
ajax_data[jutranslation_token] = 1;
|
241 |
+
|
242 |
+
$.ajax({
|
243 |
+
type: 'POST',
|
244 |
+
url: jutranslation_base_url + 'task=jutranslation.saveStrings',
|
245 |
+
data: ajax_data,
|
246 |
+
success: function (result) {
|
247 |
+
result = JSON.parse(result);
|
248 |
+
if (result.status === 'success') {
|
249 |
+
//Close the edition
|
250 |
+
if(close) {
|
251 |
+
caller.cancel_button_action(e);
|
252 |
+
}
|
253 |
+
toast('Modifications saved');
|
254 |
+
|
255 |
+
$clicked_button.parents('tr').find('.jutranslation-share').show().addClass('just-added');
|
256 |
+
} else {
|
257 |
+
alert('Error while updating language file');
|
258 |
+
}
|
259 |
+
}
|
260 |
+
});
|
261 |
+
}else{
|
262 |
+
//Do nothing and close the edition
|
263 |
+
if(close) {
|
264 |
+
caller.cancel_button_action(e);
|
265 |
+
}
|
266 |
+
toast('Modifications saved');
|
267 |
+
}
|
268 |
+
},
|
269 |
+
columns : {
|
270 |
+
language : {
|
271 |
+
editable : true,
|
272 |
+
title : 'Language ' + language,
|
273 |
+
allow_copy : false
|
274 |
+
},
|
275 |
+
override : {
|
276 |
+
show : false
|
277 |
+
}
|
278 |
+
},
|
279 |
+
copy_destination : 'do_table_language',
|
280 |
+
after_init : function($_content){
|
281 |
+
//Add a message for translators before allowing to do anything
|
282 |
+
var message = '<p>This feature is for translators only, the content may be overwritten during the next language update. ' +
|
283 |
+
'If you only want to edit language strings for your own purpose please use the override feature.</p>' +
|
284 |
+
'<p><a href="#" id="jutranslation_show_edition" class="btn btn-lg btn-success button button-primary">OK got it, let me translate and share</a>' +
|
285 |
+
'<a href="#" id="jutranslation_cancel_edition" class="btn btn-lg btn-success button button-primary">Cancel</a></p>';
|
286 |
+
|
287 |
+
$_content.hide().after('<div class="control-group edition-message">' + message + '</div>');
|
288 |
+
|
289 |
+
//Click on ok edit button
|
290 |
+
$('#jutranslation_show_edition').click(function(){
|
291 |
+
$('#jutranslation .control-group.edition-message').remove();
|
292 |
+
$('#jutranslation .control-group.edition').show();
|
293 |
+
});
|
294 |
+
|
295 |
+
//Click on cancel edition button
|
296 |
+
$('#jutranslation_cancel_edition').click(function(){
|
297 |
+
$('#jutranslation .control-group.edition-message').remove();
|
298 |
+
$('#jutranslation .control-group.edition').remove();
|
299 |
+
$('#jutranslation .control-group').show();
|
300 |
+
});
|
301 |
+
}
|
302 |
+
};
|
303 |
+
|
304 |
+
//Generate the table
|
305 |
+
doTable(datas, table_option);
|
306 |
+
});
|
307 |
+
});
|
308 |
+
|
309 |
+
$('.jutranslation-override').click(function(e){
|
310 |
+
e.preventDefault();
|
311 |
+
|
312 |
+
var $clicked_button = $(this);
|
313 |
+
|
314 |
+
var language = $clicked_button.parents('tr').data('lang');
|
315 |
+
var slug = $clicked_button.parents('tr').data('slug');
|
316 |
+
|
317 |
+
//Do not show language columns if it's en-US
|
318 |
+
var show_language = true;
|
319 |
+
if(language==='en-US'){
|
320 |
+
show_language = false;
|
321 |
+
}
|
322 |
+
|
323 |
+
getStrings(language, slug, function(datas) {
|
324 |
+
var table_option = {
|
325 |
+
language : language,
|
326 |
+
confirm_button_action : function(e, $_content, close){
|
327 |
+
e.preventDefault();
|
328 |
+
|
329 |
+
var caller = this;
|
330 |
+
|
331 |
+
//Get the strings
|
332 |
+
overrides = {};
|
333 |
+
$.each($_content.find('.do_table_line'),function(){
|
334 |
+
var value = $(this).find('.do_table_override').val();
|
335 |
+
if(value !== ''){
|
336 |
+
overrides[$(this).find('.do_table_constant').data('value')] = value;
|
337 |
+
}
|
338 |
+
});
|
339 |
+
|
340 |
+
//Initialize ajax request datas
|
341 |
+
ajax_data = {
|
342 |
+
action : jutranslation_ajax_action,
|
343 |
+
strings : JSON.stringify(overrides),
|
344 |
+
language : this.language,
|
345 |
+
slug: slug,
|
346 |
+
destination : 'override',
|
347 |
+
wp_nonce : jutranslation_token
|
348 |
+
};
|
349 |
+
ajax_data[jutranslation_token] = 1;
|
350 |
+
|
351 |
+
$.ajax({
|
352 |
+
type : 'POST',
|
353 |
+
url : jutranslation_base_url + 'task=jutranslation.saveStrings',
|
354 |
+
data : ajax_data,
|
355 |
+
success : function(result){
|
356 |
+
result = JSON.parse(result);
|
357 |
+
if(result.status === 'success'){
|
358 |
+
$clicked_button.parents('tr').find('.jutranslation-override-count').html(Object.keys(overrides).length);
|
359 |
+
|
360 |
+
if(close) {
|
361 |
+
caller.cancel_button_action(e);
|
362 |
+
}
|
363 |
+
toast('Modifications saved');
|
364 |
+
}else{
|
365 |
+
alert('Error while updating language file');
|
366 |
+
}
|
367 |
+
}
|
368 |
+
});
|
369 |
+
},
|
370 |
+
columns : {
|
371 |
+
language : {
|
372 |
+
title : 'Language ' + language,
|
373 |
+
show : show_language
|
374 |
+
}
|
375 |
+
}
|
376 |
+
};
|
377 |
+
|
378 |
+
//Generate the table
|
379 |
+
doTable(datas, table_option);
|
380 |
+
});
|
381 |
+
});
|
382 |
+
|
383 |
+
//Share a translation to Joomunited
|
384 |
+
$('.jutranslation-share').click(function(e){
|
385 |
+
e.preventDefault();
|
386 |
+
if(typeof SqueezeBox !== 'undefined' ){
|
387 |
+
//Open Joomla lightbox
|
388 |
+
SqueezeBox.open(jutranslation_base_url + 'action=&task=jutranslation.showViewForm&language=' + $(this).closest('tr').attr('data-lang'), {handler: 'iframe'});
|
389 |
+
}else{
|
390 |
+
//Open Wordpress lightbox
|
391 |
+
tb_show('Share with Joomunited',jutranslation_base_url + 'action=' + jutranslation_ajax_action + '&task=jutranslation.showViewForm&slug=' + $(this).closest('tr').attr('data-slug') + '&language=' + $(this).closest('tr').attr('data-lang') + '&TB_iframe=true');
|
392 |
+
}
|
393 |
+
});
|
394 |
+
|
395 |
+
function doTable(datas, options) {
|
396 |
+
// DOM element containing the generated content
|
397 |
+
var $_content;
|
398 |
+
|
399 |
+
var default_options = {
|
400 |
+
language : null,
|
401 |
+
slug : null,
|
402 |
+
confirm_button_label: 'Save and close',
|
403 |
+
save_button_label: 'Save',
|
404 |
+
cancel_button_label: 'Cancel',
|
405 |
+
cancel_button_action: function (e) {
|
406 |
+
if(e!==undefined){
|
407 |
+
e.preventDefault();
|
408 |
+
}
|
409 |
+
|
410 |
+
$('#jutranslation .control-group.edition').remove();
|
411 |
+
$('#jutranslation .control-group').show();
|
412 |
+
},
|
413 |
+
confirm_button_action : function (e) {
|
414 |
+
if(e!==undefined){
|
415 |
+
e.preventDefault();
|
416 |
+
}
|
417 |
+
|
418 |
+
options.cancel_button_action(e);
|
419 |
+
},
|
420 |
+
after_init : function() {},
|
421 |
+
columns : {
|
422 |
+
constant : {
|
423 |
+
show : true,
|
424 |
+
title : 'Constant',
|
425 |
+
allow_copy : false
|
426 |
+
},
|
427 |
+
reference : {
|
428 |
+
show : true,
|
429 |
+
editable : false,
|
430 |
+
title : 'Reference en-US',
|
431 |
+
allow_copy : true
|
432 |
+
|
433 |
+
},
|
434 |
+
language : {
|
435 |
+
show : true,
|
436 |
+
editable : false,
|
437 |
+
title : 'Language',
|
438 |
+
allow_copy : true
|
439 |
+
},
|
440 |
+
override : {
|
441 |
+
show : true,
|
442 |
+
editable : true,
|
443 |
+
title : 'Override',
|
444 |
+
allow_copy : false
|
445 |
+
}
|
446 |
+
},
|
447 |
+
copy_destination : 'do_table_override'
|
448 |
+
};
|
449 |
+
|
450 |
+
// Initialize options variable if not already
|
451 |
+
if(options === undefined){
|
452 |
+
var options = {};
|
453 |
+
}
|
454 |
+
|
455 |
+
// Merge the default options to the passed ones
|
456 |
+
options = $.extend(true, {}, default_options, options);
|
457 |
+
|
458 |
+
//Add a button to save
|
459 |
+
var content = '';
|
460 |
+
content += '<p class="do_table_buttons">';
|
461 |
+
content += ' <a href="#" class="do_table_confirm btn btn-primary button button-primary">' + options.confirm_button_label + '</a>';
|
462 |
+
content += ' <a href="#" class="do_table_save btn btn-primary button button-primary">' + options.save_button_label + '</a>';
|
463 |
+
content += ' <a href="#" class="do_table_cancel btn btn-primary button">' + options.cancel_button_label + '</a>';
|
464 |
+
content += '</p>';
|
465 |
+
|
466 |
+
//Create the table of strings
|
467 |
+
content += '<table>';
|
468 |
+
|
469 |
+
//Add columns names
|
470 |
+
content += '<tr class="do_table_heading">' +
|
471 |
+
' <td' + ( options.columns.constant.show?'':' class="hidden"' ) + '>' + options.columns.constant.title + '</td>' +
|
472 |
+
' <td' + ( options.columns.reference.show?'':' class="hidden"' ) + '>' + options.columns.reference.title + '</td>' +
|
473 |
+
' <td' + ( options.columns.language.show?'':' class="hidden"' ) + '>' + options.columns.language.title + '</td>' +
|
474 |
+
' <td' + ( options.columns.override.show?'':' class="hidden"' ) + '>' + options.columns.override.title + '</td>' +
|
475 |
+
'</tr>';
|
476 |
+
|
477 |
+
//Add filter inputs
|
478 |
+
content += '<tr class="do_table_filters">' +
|
479 |
+
' <td' + ( options.columns.constant.show?'':' class="hidden"' ) + '><input class="do_table_filter_constant" type="text" placeholder="Filter by constant"/></td>' +
|
480 |
+
' <td' + ( options.columns.reference.show?'':' class="hidden"' ) + '><input class="do_table_filter_reference" type="text" placeholder="Filter by reference"/><br/>Show only empty <input type="checkbox" class="do_table_filter_empty_reference"/><br/>Show only not empty <input type="checkbox" class="do_table_filter_not_empty_reference"/></td>' +
|
481 |
+
' <td' + ( options.columns.language.show?'':' class="hidden"' ) + '><input class="do_table_filter_language" type="text" placeholder="Filter by language"/><br/>Show only empty <input type="checkbox" class="do_table_filter_empty_language"/><br/>Show only not empty <input type="checkbox" class="do_table_filter_not_empty_language"/></td>' +
|
482 |
+
' <td' + ( options.columns.override.show?'':' class="hidden"' ) + '><input class="do_table_filter_override" type="text" placeholder="Filter by override"/><br/>Show only empty <input type="checkbox" class="do_table_filter_empty_override"/><br/>Show only not empty <input type="checkbox" class="do_table_filter_not_empty_override"/></td>' +
|
483 |
+
'</tr>';
|
484 |
+
|
485 |
+
$.each(datas, function(key,value){
|
486 |
+
content += '' +
|
487 |
+
'<tr class="do_table_line">' +
|
488 |
+
' <td' + ( options.columns.constant.show?'':' class="hidden"' ) + '>' +
|
489 |
+
' <span class="do_table_constant" data-value="' + htmlEntities(value.key) + '">' + htmlEntities(value.key) + '</span>' +
|
490 |
+
' </td>' +
|
491 |
+
' <td' + ( options.columns.reference.show?'':' class="hidden"' ) + '>' +
|
492 |
+
' <input type="text" class="do_table_reference" value="' + htmlEntities(value.reference) + '" ' + ( options.columns.reference.editable?'':'readonly="readonly"' ) + ' />' + (options.columns.reference.allow_copy?'<a title="copy" href="#" class="do_table_copy_reference"><i class="icon-arrow-right-4 dashicons dashicons-arrow-right-alt2"></i></a>':'') +
|
493 |
+
' </td>' +
|
494 |
+
' <td' + ( options.columns.language.show?'':' class="hidden"' ) + '>' +
|
495 |
+
' <input type="text" class="do_table_language" value="' + htmlEntities(value.language) + '" ' + ( options.columns.language.editable?'':'readonly="readonly"' ) + ' >' + (options.columns.language.allow_copy?'<a title="copy" href="#" class="do_table_copy_language"><i class="icon-arrow-right-4 dashicons dashicons-arrow-right-alt2"></i></a>':'') +
|
496 |
+
' </td>' +
|
497 |
+
' <td' + ( options.columns.override.show?'':' class="hidden"' ) + '>' +
|
498 |
+
' <input type="text" class="do_table_override" value="' + htmlEntities(value.override) + '" ' + ( options.columns.override.editable?'':'readonly="readonly"' ) + ' >' + (options.columns.override.allow_copy?'<a title="copy" href="#" class="do_table_copy_override"><i class="icon-arrow-right-4 dashicons dashicons-arrow-right-alt2"></i></a>':'') +
|
499 |
+
' </td>' +
|
500 |
+
'</tr>';
|
501 |
+
});
|
502 |
+
content += '</table>';
|
503 |
+
|
504 |
+
$('#jutranslation .control-group').after('<div class="control-group edition">' + content + '</div>');
|
505 |
+
$_content = $('#jutranslation .control-group.edition');
|
506 |
+
|
507 |
+
// Enable filtering
|
508 |
+
$_content.find('[class^="do_table_filter_"]').on("change keyup paste", function(){
|
509 |
+
//Texts filters
|
510 |
+
var filter_constant = $_content.find('.do_table_filter_constant').val();
|
511 |
+
var filter_reference = $_content.find('.do_table_filter_reference').val();
|
512 |
+
var filter_language = $_content.find('.do_table_filter_language').val();
|
513 |
+
var filter_override = $_content.find('.do_table_filter_override').val();
|
514 |
+
|
515 |
+
// Do not allow to check both filters
|
516 |
+
switch (1==1) {
|
517 |
+
case $(this).hasClass('do_table_filter_empty_reference') && $(this).is(':checked'):
|
518 |
+
$_content.find('.do_table_filter_not_empty_reference').attr('checked',null);
|
519 |
+
break;
|
520 |
+
case $(this).hasClass('do_table_filter_empty_language') && $(this).is(':checked'):
|
521 |
+
$_content.find('.do_table_filter_not_empty_language').attr('checked',null);
|
522 |
+
break;
|
523 |
+
case $(this).hasClass('do_table_filter_empty_override') && $(this).is(':checked'):
|
524 |
+
$_content.find('.do_table_filter_not_empty_override').attr('checked',null);
|
525 |
+
break;
|
526 |
+
case $(this).hasClass('do_table_filter_not_empty_reference') && $(this).is(':checked'):
|
527 |
+
$_content.find('.do_table_filter_empty_reference').attr('checked',null);
|
528 |
+
break;
|
529 |
+
case $(this).hasClass('do_table_filter_not_empty_language') && $(this).is(':checked'):
|
530 |
+
$_content.find('.do_table_filter_empty_language').attr('checked',null);
|
531 |
+
break;
|
532 |
+
case $(this).hasClass('do_table_filter_not_empty_override') && $(this).is(':checked'):
|
533 |
+
$_content.find('.do_table_filter_empty_override').attr('checked',null);
|
534 |
+
break;
|
535 |
+
|
536 |
+
}
|
537 |
+
if($(this).is('[class^="do_table_filter_empty"]')){
|
538 |
+
|
539 |
+
} else if ($(this).is('[class^="do_table_filter_not_empty"]')) {
|
540 |
+
|
541 |
+
}
|
542 |
+
$_content.find('.do_table_filter_not_empty_reference')
|
543 |
+
|
544 |
+
//Empty filters
|
545 |
+
var filter_empty_reference = $_content.find('.do_table_filter_empty_reference').is(":checked");
|
546 |
+
var filter_empty_language = $_content.find('.do_table_filter_empty_language').is(":checked");
|
547 |
+
var filter_empty_override = $_content.find('.do_table_filter_empty_override').is(":checked");
|
548 |
+
|
549 |
+
var filter_not_empty_reference = $_content.find('.do_table_filter_not_empty_reference').is(":checked");
|
550 |
+
var filter_not_empty_language = $_content.find('.do_table_filter_not_empty_language').is(":checked");
|
551 |
+
var filter_not_empty_override = $_content.find('.do_table_filter_not_empty_override').is(":checked");
|
552 |
+
|
553 |
+
// Show all rows
|
554 |
+
$_content.find('tr.do_table_line').show();
|
555 |
+
|
556 |
+
// Filtering is active
|
557 |
+
if(filter_constant !== '' || filter_reference !== '' || filter_language !== '' || filter_override != '' || filter_empty_reference!==false || filter_empty_language !== false || filter_empty_override !== false || filter_not_empty_reference!==false || filter_not_empty_language !== false || filter_not_empty_override !== false){
|
558 |
+
// Show only rows matching search
|
559 |
+
$_content.find('.do_table_line').filter(function(){
|
560 |
+
//Filter by empty reference
|
561 |
+
if(filter_empty_reference && $(this).find('.do_table_reference').val() !== ''){
|
562 |
+
return true;
|
563 |
+
}
|
564 |
+
|
565 |
+
//Filter by empty language
|
566 |
+
if(filter_empty_language && $(this).find('.do_table_language').val() !== ''){
|
567 |
+
return true;
|
568 |
+
}
|
569 |
+
|
570 |
+
//Filter by empty override
|
571 |
+
if(filter_empty_override && $(this).find('.do_table_override').val() !== ''){
|
572 |
+
return true;
|
573 |
+
}
|
574 |
+
|
575 |
+
//Filter by not empty reference
|
576 |
+
if(filter_not_empty_reference && $(this).find('.do_table_reference').val() === ''){
|
577 |
+
return true;
|
578 |
+
}
|
579 |
+
|
580 |
+
//Filter by empty language
|
581 |
+
if(filter_not_empty_language && $(this).find('.do_table_language').val() === ''){
|
582 |
+
return true;
|
583 |
+
}
|
584 |
+
|
585 |
+
//Filter by empty override
|
586 |
+
if(filter_not_empty_override && $(this).find('.do_table_override').val() === ''){
|
587 |
+
return true;
|
588 |
+
}
|
589 |
+
|
590 |
+
//Filter by constant
|
591 |
+
if(filter_constant !== ''){
|
592 |
+
var regex = new RegExp(escapeRegExp(filter_constant), 'i');
|
593 |
+
if(!regex.test($(this).find('.do_table_constant').data('value'))){
|
594 |
+
return true;
|
595 |
+
}
|
596 |
+
}
|
597 |
+
|
598 |
+
//Filter by reference
|
599 |
+
if(filter_reference !== ''){
|
600 |
+
var regex = new RegExp(escapeRegExp(filter_reference), 'i');
|
601 |
+
if(!regex.test($(this).find('.do_table_reference').val())){
|
602 |
+
return true;
|
603 |
+
}
|
604 |
+
}
|
605 |
+
|
606 |
+
//Filter by current language
|
607 |
+
if(filter_language !== ''){
|
608 |
+
var regex = new RegExp(escapeRegExp(filter_language), 'i');
|
609 |
+
if(!regex.test($(this).find('.do_table_language').val())){
|
610 |
+
return true;
|
611 |
+
}
|
612 |
+
}
|
613 |
+
|
614 |
+
//Filter by override
|
615 |
+
if(filter_override !== ''){
|
616 |
+
var regex = new RegExp(escapeRegExp(filter_override), 'i');
|
617 |
+
if(!regex.test($(this).find('.do_table_override').val())){
|
618 |
+
return true;
|
619 |
+
}
|
620 |
+
}
|
621 |
+
|
622 |
+
return false;
|
623 |
+
}).hide();
|
624 |
+
return;
|
625 |
+
}
|
626 |
+
});
|
627 |
+
|
628 |
+
// Enable copy from one input to another
|
629 |
+
$_content.find('[class^="do_table_copy_"]').click(function(e){
|
630 |
+
e.preventDefault();
|
631 |
+
|
632 |
+
//Get the value from clicked element
|
633 |
+
if($(this).hasClass('do_table_copy_reference')){
|
634 |
+
var value = $(this).parents('tr').find('.do_table_reference').val();
|
635 |
+
}else if($(this).hasClass('do_table_copy_language')){
|
636 |
+
var value = $(this).parents('tr').find('.do_table_language').val();
|
637 |
+
}else if($(this).hasClass('do_table_copy_override')){
|
638 |
+
var value = $(this).parents('tr').find('.do_table_override').val();
|
639 |
+
}
|
640 |
+
|
641 |
+
//Copy value to destination input
|
642 |
+
$(this).parents('tr').find('.'+options.copy_destination).val(value);
|
643 |
+
});
|
644 |
+
|
645 |
+
//Save and close
|
646 |
+
$_content.find('.do_table_confirm').click(function(e){
|
647 |
+
options.confirm_button_action(e, $_content, true);
|
648 |
+
});
|
649 |
+
|
650 |
+
//Confirm the current action
|
651 |
+
$_content.find('.do_table_save').click(function(e){
|
652 |
+
options.confirm_button_action(e, $_content, false);
|
653 |
+
});
|
654 |
+
|
655 |
+
//Cancel the current action
|
656 |
+
$_content.find('.do_table_cancel').click(function(e, $_content){
|
657 |
+
options.cancel_button_action(e);
|
658 |
+
});
|
659 |
+
|
660 |
+
$('#jutranslation .control-group').not('.edition').hide();
|
661 |
+
|
662 |
+
$_content.find('.do_table_line input').focus(function(){
|
663 |
+
$this = $(this);
|
664 |
+
$this_line = $this.parents('tr');
|
665 |
+
|
666 |
+
//Do nothing if already hidden
|
667 |
+
if($(this).is(":hidden")){
|
668 |
+
return;
|
669 |
+
}
|
670 |
+
|
671 |
+
//Remove all old textarea
|
672 |
+
$this_line.find('textarea').remove();
|
673 |
+
|
674 |
+
$this_line.find('input').each(function(){
|
675 |
+
// Get the input value
|
676 |
+
var val = $(this).val();
|
677 |
+
|
678 |
+
// Add a textarea after the inpu
|
679 |
+
$('<textarea style="width:' + $(this).css('width') + '" ' + ($(this).is('[readonly="readonly"]')?'readonly="readonly"':'') + '>' + htmlEntities(val) + '</textarea>').insertAfter(this);
|
680 |
+
|
681 |
+
// Hide the input
|
682 |
+
$(this).hide();
|
683 |
+
});
|
684 |
+
|
685 |
+
// Remove textarea on focus out
|
686 |
+
$this.siblings('textarea').focus().focusout(function(){
|
687 |
+
$this.val(($(this).val()));
|
688 |
+
$this_line.find('input').show();
|
689 |
+
$this_line.find('textarea').hide(); //Hide instead of remove to avoid html5fallback.js error
|
690 |
+
});
|
691 |
+
});
|
692 |
+
|
693 |
+
options.after_init($_content);
|
694 |
+
}
|
695 |
+
|
696 |
+
function getStrings(language, slug, done_function) {
|
697 |
+
var strings = {};
|
698 |
+
$.ajax({
|
699 |
+
type: 'POST',
|
700 |
+
url: jutranslation_base_url + 'task=jutranslation.getTranslation',
|
701 |
+
data: {
|
702 |
+
action : jutranslation_ajax_action,
|
703 |
+
language: language,
|
704 |
+
slug: slug
|
705 |
+
},
|
706 |
+
success: function (result) {
|
707 |
+
result = JSON.parse(result);
|
708 |
+
|
709 |
+
if (result.status === 'success') {
|
710 |
+
done_function(result.datas.strings);
|
711 |
+
} else {
|
712 |
+
alert('Error while loading strings');
|
713 |
+
}
|
714 |
+
}
|
715 |
+
});
|
716 |
+
}
|
717 |
+
|
718 |
+
/**
|
719 |
+
* Escape a string to allow using it literally in a regex
|
720 |
+
* @param string
|
721 |
+
* @return string escaped
|
722 |
+
*/
|
723 |
+
function escapeRegExp(string) {
|
724 |
+
return string.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
|
725 |
+
}
|
726 |
+
|
727 |
+
/**
|
728 |
+
* Secure a string to use it in html content
|
729 |
+
* @param string to espace
|
730 |
+
* @return {string} escaped string
|
731 |
+
*/
|
732 |
+
function htmlEntities(string){
|
733 |
+
return String(string).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
|
734 |
+
}
|
735 |
+
|
736 |
+
/**
|
737 |
+
* Compare two version numbers and their revisions
|
738 |
+
* @param version1
|
739 |
+
* @param version2
|
740 |
+
* @param revision_version1
|
741 |
+
* @param revision_version2
|
742 |
+
* @return 1 if version1>version2, -1 if version1<version2 , 0 if version1==version2
|
743 |
+
*/
|
744 |
+
function versionCompare(version1, version2, revision_version1, revision_version2){
|
745 |
+
if(version1==='') {
|
746 |
+
version1 = '0';
|
747 |
+
}
|
748 |
+
|
749 |
+
if(version2==='') {
|
750 |
+
version2 = '0';
|
751 |
+
}
|
752 |
+
|
753 |
+
version1 = version1.split('.');
|
754 |
+
version2 = version2.split('.');
|
755 |
+
|
756 |
+
if(typeof revision_version1 === 'undefined'){
|
757 |
+
revision_version1 = 0;
|
758 |
+
}
|
759 |
+
|
760 |
+
if(typeof revision_version2 === 'undefined'){
|
761 |
+
revision_version2 = 0;
|
762 |
+
}
|
763 |
+
|
764 |
+
for(var ij=0; ij < version1.length; ij++ ) {
|
765 |
+
if(typeof version2[ij] === 'undefined'){
|
766 |
+
//Version 1 has the longest version
|
767 |
+
for(var ik=ij; ik < version1.length; ik++){
|
768 |
+
//Check if it has another thing as 0 trailing
|
769 |
+
if(parseInt(version[1]) > 0){
|
770 |
+
//Latest version is upper
|
771 |
+
return 1;
|
772 |
+
}
|
773 |
+
}
|
774 |
+
//End only with 0 version numbers, it's equal
|
775 |
+
if(revision_version1 > revision_version2){
|
776 |
+
return 1;
|
777 |
+
} else if(revision_version1 < revision_version2){
|
778 |
+
return -1;
|
779 |
+
}
|
780 |
+
return 0;
|
781 |
+
} else {
|
782 |
+
if(parseInt(version1[ij]) > parseInt(version2[ij])) {
|
783 |
+
return 1;
|
784 |
+
} else if(parseInt(version1[ij]) < parseInt(version2[ij])) {
|
785 |
+
return -1;
|
786 |
+
}
|
787 |
+
}
|
788 |
+
}
|
789 |
+
|
790 |
+
//Version 2 has the longest version or is equal
|
791 |
+
for(var ik=ij; ik < version2.length; ik++){
|
792 |
+
//Check if it has another thing as 0 trailing
|
793 |
+
if(parseInt(version2[ik]) > 0){
|
794 |
+
//Latest version is upper
|
795 |
+
return -1;
|
796 |
+
}
|
797 |
+
}
|
798 |
+
|
799 |
+
//End only with 0 version numbers, it's equal
|
800 |
+
if(revision_version1 > revision_version2){
|
801 |
+
return 1;
|
802 |
+
} else if(revision_version1 < revision_version2){
|
803 |
+
return -1;
|
804 |
+
}
|
805 |
+
return 0;
|
806 |
+
}
|
807 |
+
|
808 |
+
function toast(text) {
|
809 |
+
$('#jutranslation_toast').remove();
|
810 |
+
$('body').append('<div id="jutranslation_toast">' + text + '</div>');
|
811 |
+
setTimeout(function() {
|
812 |
+
$('#jutranslation_toast').remove();
|
813 |
+
}, 2000);
|
814 |
+
}
|
815 |
+
});
|
jutranslation/jutranslation.php
ADDED
@@ -0,0 +1,609 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Joomunited\WPMetaSEO\Jutranslation;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Class Jutranslation
|
6 |
+
* @package Joomunited\WPMetaSEO\Jutranslation
|
7 |
+
*/
|
8 |
+
class Jutranslation {
|
9 |
+
public static $extension_slug;
|
10 |
+
public static $extension_name;
|
11 |
+
public static $text_domain;
|
12 |
+
public static $language_file;
|
13 |
+
|
14 |
+
public static $main_plugin_file;
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Initialize Jutranslation
|
18 |
+
* @param $main_plugin_file
|
19 |
+
* @param $extension_slug
|
20 |
+
* @param $extension_name
|
21 |
+
* @param $text_domain
|
22 |
+
* @param $language_file
|
23 |
+
*/
|
24 |
+
public static function init($main_plugin_file, $extension_slug, $extension_name, $text_domain, $language_file){
|
25 |
+
Jutranslation::$main_plugin_file = $main_plugin_file;
|
26 |
+
Jutranslation::$extension_slug = $extension_slug;
|
27 |
+
Jutranslation::$extension_name = $extension_name;
|
28 |
+
Jutranslation::$text_domain = $text_domain;
|
29 |
+
Jutranslation::$language_file = plugin_dir_path( Jutranslation::$main_plugin_file ) . $language_file;
|
30 |
+
|
31 |
+
//Load override file
|
32 |
+
add_action( 'load_textdomain', array(__CLASS__, 'overrideLanguage'), 1, 2);
|
33 |
+
|
34 |
+
add_filter(Jutranslation::$extension_slug . '_get_addons', function ($addons) {
|
35 |
+
$addon = new \StdClass();
|
36 |
+
$addon->main_plugin_file = Jutranslation::$main_plugin_file;
|
37 |
+
$addon->extension_name = Jutranslation::$extension_name;
|
38 |
+
$addon->extension_slug = Jutranslation::$extension_slug;
|
39 |
+
$addon->text_domain = Jutranslation::$text_domain;
|
40 |
+
$addon->language_file = Jutranslation::$language_file;
|
41 |
+
$addons[$addon->extension_slug] = $addon;
|
42 |
+
return $addons;
|
43 |
+
});
|
44 |
+
|
45 |
+
//Only need Jutranslation on admin side
|
46 |
+
if(!is_admin()){
|
47 |
+
return;
|
48 |
+
}
|
49 |
+
|
50 |
+
// Check if the current user
|
51 |
+
add_action('admin_init', function(){
|
52 |
+
if(current_user_can('manage_options')) {
|
53 |
+
//Initialize needed ajax mehtods
|
54 |
+
add_action( 'wp_ajax_jutranslation_'.Jutranslation::$extension_slug, array(__CLASS__, 'dispatchQuery') );
|
55 |
+
}
|
56 |
+
});
|
57 |
+
}
|
58 |
+
|
59 |
+
/**
|
60 |
+
* Ajax queries dispatcher
|
61 |
+
*/
|
62 |
+
public static function dispatchQuery() {
|
63 |
+
if(!isset($_REQUEST['task'])) {
|
64 |
+
die;
|
65 |
+
}
|
66 |
+
|
67 |
+
switch ($_REQUEST['task']) {
|
68 |
+
case 'jutranslation.saveStrings':
|
69 |
+
Jutranslation::saveStrings();
|
70 |
+
break;
|
71 |
+
case 'jutranslation.getTranslation':
|
72 |
+
Jutranslation::getTranslation();
|
73 |
+
break;
|
74 |
+
case 'jutranslation.showViewForm':
|
75 |
+
Jutranslation::showViewForm();
|
76 |
+
break;
|
77 |
+
}
|
78 |
+
}
|
79 |
+
|
80 |
+
/**
|
81 |
+
* Return the main html content for jutranslation
|
82 |
+
* @return void
|
83 |
+
*/
|
84 |
+
public static function getInput(){
|
85 |
+
echo '<div id="jutranslation" class="wordpress">';
|
86 |
+
echo '<div class="control-group">';
|
87 |
+
|
88 |
+
//Declare all js and css to include
|
89 |
+
$jsInline = array(
|
90 |
+
'jutranslation_token="'.wp_create_nonce( 'jutranslation' ).'";',
|
91 |
+
'jutranslation_ajax_action="jutranslation_'.Jutranslation::$extension_slug.'";',
|
92 |
+
'jutranslation_base_url=ajaxurl+"?";'
|
93 |
+
);
|
94 |
+
echo '<script type="text/javascript">'.implode(PHP_EOL,$jsInline).'</script>';
|
95 |
+
wp_enqueue_script('jutranslation', plugin_dir_url( Jutranslation::$main_plugin_file ) . 'jutranslation/assets/js/jutranslation.js');
|
96 |
+
wp_enqueue_style('jutranslation', plugin_dir_url( Jutranslation::$main_plugin_file ) . 'jutranslation/assets/css/jutranslation.css');
|
97 |
+
|
98 |
+
add_thickbox();
|
99 |
+
|
100 |
+
|
101 |
+
//Get all installed languages
|
102 |
+
$installed_languages = array();
|
103 |
+
foreach ( wp_get_installed_translations('core') as $type) {
|
104 |
+
foreach ( $type as $lang => $value ) {
|
105 |
+
$lang = str_replace('_', '-', $lang);
|
106 |
+
$installed_languages[] = $lang;
|
107 |
+
}
|
108 |
+
}
|
109 |
+
|
110 |
+
//Add Polylang languages
|
111 |
+
if(function_exists('pll_languages_list')){
|
112 |
+
foreach ( pll_languages_list(array('fields'=>'locale')) as $pll_language) {
|
113 |
+
$lang = str_replace('_', '-', $pll_language);
|
114 |
+
$installed_languages[] = $lang;
|
115 |
+
}
|
116 |
+
}
|
117 |
+
|
118 |
+
//Add WPML languages
|
119 |
+
if(!function_exists('pll_languages_list') && function_exists('icl_get_languages')){
|
120 |
+
foreach ( icl_get_languages() as $wpml_language) {
|
121 |
+
$lang = str_replace('_', '-', $wpml_language['default_locale']);
|
122 |
+
$installed_languages[] = $lang;
|
123 |
+
}
|
124 |
+
}
|
125 |
+
|
126 |
+
//Add default en-US language
|
127 |
+
if(!isset($installed_languages['en-US'])){
|
128 |
+
$installed_languages = array_merge(array('en-US'), $installed_languages);
|
129 |
+
}
|
130 |
+
|
131 |
+
$installed_languages = array_unique($installed_languages);
|
132 |
+
|
133 |
+
//Get addons
|
134 |
+
$addons = apply_filters(Jutranslation::$extension_slug.'_get_addons', array());
|
135 |
+
ksort($addons);
|
136 |
+
|
137 |
+
$languages = array();
|
138 |
+
foreach ($installed_languages as $installed_language) {
|
139 |
+
foreach ($addons as $addon) {
|
140 |
+
$langObject = new \stdClass();
|
141 |
+
$langObject->extension = $addon;
|
142 |
+
$langObject->installed = false;
|
143 |
+
$langObject->extension_version = '';
|
144 |
+
$langObject->language_version = '';
|
145 |
+
$langObject->revision = '1';
|
146 |
+
$langObject->languageCode = $installed_language;
|
147 |
+
$langObject->modified = '0';
|
148 |
+
|
149 |
+
$languages[] = $langObject;
|
150 |
+
}
|
151 |
+
}
|
152 |
+
|
153 |
+
//Check if language is installed
|
154 |
+
foreach ($languages as &$language) {
|
155 |
+
if (str_replace('-', '_', $language->languageCode) === 'en_US') {
|
156 |
+
$file = $language->extension->language_file;
|
157 |
+
} else {
|
158 |
+
$file = WP_CONTENT_DIR . DIRECTORY_SEPARATOR . 'languages' . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . $language->extension->text_domain . '-' . str_replace('-', '_', $language->languageCode) . '.mo';
|
159 |
+
}
|
160 |
+
|
161 |
+
if (file_exists($file)) {
|
162 |
+
$language->installed = true;
|
163 |
+
|
164 |
+
// Load language file
|
165 |
+
$mo = new \MO();
|
166 |
+
$mo->import_from_file($file);
|
167 |
+
|
168 |
+
//Assign it to the language
|
169 |
+
if (isset($mo->headers['Version'])) {
|
170 |
+
$language->language_version = $mo->headers['Version'];
|
171 |
+
}
|
172 |
+
if (isset($mo->headers['Revision'])) {
|
173 |
+
$language->revision = $mo->headers['Revision'];
|
174 |
+
}
|
175 |
+
if (isset($mo->headers['Modified'])) {
|
176 |
+
$language->modified = $mo->headers['Modified'];
|
177 |
+
} else {
|
178 |
+
//The header has not been found, so the language file has not been add by jutranslation
|
179 |
+
$language->modified = '1';
|
180 |
+
}
|
181 |
+
}
|
182 |
+
|
183 |
+
//Check for language override
|
184 |
+
$language->overrided = 0;
|
185 |
+
$file = WP_CONTENT_DIR . DIRECTORY_SEPARATOR . 'languages' . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . $language->extension->text_domain . '-' . str_replace('-', '_', $language->languageCode) . '.override.mo';;
|
186 |
+
if (file_exists($file)) {
|
187 |
+
// Load language file
|
188 |
+
$mo = new \MO();
|
189 |
+
$mo->import_from_file($file);
|
190 |
+
|
191 |
+
$language->overrided = 0;
|
192 |
+
|
193 |
+
//Check if a translation exists for each entry
|
194 |
+
foreach ($mo->entries as $entry) {
|
195 |
+
if (count($entry->translations[0])) {
|
196 |
+
$language->overrided++;
|
197 |
+
}
|
198 |
+
}
|
199 |
+
}
|
200 |
+
}
|
201 |
+
unset($language);
|
202 |
+
|
203 |
+
//Show documentation link
|
204 |
+
echo '<p>You can refer to the <a href="https://www.joomunited.com/documentation/ju-translation-translate-wordpress-and-joomla-extensions" target="_blank">documentation page on Joomunited</a> for more informations about extension translation</p>';
|
205 |
+
|
206 |
+
echo '<p>';
|
207 |
+
foreach ($addons as $addon) {
|
208 |
+
//Get extension version
|
209 |
+
$plugin_data = get_plugin_data( $addon->main_plugin_file );
|
210 |
+
$extension_version = $plugin_data['Version'];
|
211 |
+
|
212 |
+
echo 'Current ' . $addon->extension_name . ' version is ' . $extension_version . '<br/>';
|
213 |
+
}
|
214 |
+
echo '</p>';
|
215 |
+
|
216 |
+
$julanguages = array();
|
217 |
+
|
218 |
+
echo '<table id="jutranslations-languages" class="table table-striped" >
|
219 |
+
<thead >
|
220 |
+
<tr>
|
221 |
+
<th ' . (count($addons)>1?'':'style="display:none;"') . '>Plugin</th>
|
222 |
+
<th>Language</th>
|
223 |
+
<th>Current version</th>
|
224 |
+
<th>Latest available version</th>
|
225 |
+
</tr>
|
226 |
+
</thead>
|
227 |
+
<tbody>';
|
228 |
+
|
229 |
+
foreach ($languages as $language) {
|
230 |
+
echo '<tr data-slug="' . $language->extension->extension_slug. '" data-lang="' . $language->languageCode . '" data-installed="' . $language->installed . '" data-version="' . $language->extension_version . '">';
|
231 |
+
echo '<td ' . (count($addons)>1?'':'style="display:none;"') . '>' . $language->extension->extension_name . '</td>';
|
232 |
+
echo '<td>' . $language->languageCode . '</td>';
|
233 |
+
echo '<td class="current_version">' . ($language->installed?($language->language_version?($language->revision?$language->language_version.' rev'.$language->revision:$language->language_version.' rev'.$language->revision):'Unknown'):'Not installed') . '</td>';
|
234 |
+
echo '<td><div class="original_content">';
|
235 |
+
echo '<span class="latest_version"><img src="' . plugin_dir_url( Jutranslation::$main_plugin_file ) . 'jutranslation/assets/images/radio.svg" alt="loading"/></span><br/>';
|
236 |
+
|
237 |
+
echo '<a class="jutranslation-override" href="#" data-language="' . $language->languageCode .'">Override (<span class="jutranslation-override-count">' . $language->overrided . '</span>)</a> ';
|
238 |
+
if($language->languageCode !== 'en-US'){
|
239 |
+
//Reference en-US file can't be modified
|
240 |
+
echo '<a class="jutranslation-edition" href="#" data-language="' . $language->languageCode .'">Edit original file</a>';
|
241 |
+
}
|
242 |
+
|
243 |
+
//No sharing for en-US
|
244 |
+
if($language->languageCode!=='en-US'){
|
245 |
+
echo ' <a class="jutranslation-share" style="' . (($language->modified==='0')?'display:none':'') . '" href="#" data-language="' . $language->languageCode .'">Share with Joomunited</a>';
|
246 |
+
}
|
247 |
+
echo '</div><div class="temporary_content"></div></td>';
|
248 |
+
echo '</tr>';
|
249 |
+
|
250 |
+
if (!isset($julanguages[$language->extension->extension_slug])) {
|
251 |
+
$plugin_data = get_plugin_data($language->extension->main_plugin_file);
|
252 |
+
|
253 |
+
$julanguages[$language->extension->extension_slug] = array();
|
254 |
+
$julanguages[$language->extension->extension_slug]['extension'] = $language->extension->extension_slug;
|
255 |
+
$julanguages[$language->extension->extension_slug]['extension_version'] = $plugin_data['Version'];
|
256 |
+
$julanguages[$language->extension->extension_slug]['language_version'] = $language->language_version;
|
257 |
+
$julanguages[$language->extension->extension_slug]['languages'] = array();
|
258 |
+
$julanguages[$language->extension->extension_slug]['versions'] = array();
|
259 |
+
$julanguages[$language->extension->extension_slug]['revisions'] = array();
|
260 |
+
}
|
261 |
+
$julanguages[$language->extension->extension_slug]['languages'][] = $language->languageCode;
|
262 |
+
$julanguages[$language->extension->extension_slug]['versions'][$language->languageCode] = $language->language_version;
|
263 |
+
$julanguages[$language->extension->extension_slug]['revisions'][$language->languageCode] = $language->revision;
|
264 |
+
|
265 |
+
}
|
266 |
+
echo '</tbody>
|
267 |
+
</table>';
|
268 |
+
|
269 |
+
echo '<script type="text/javascript">julanguages = ' . json_encode($julanguages) . ';</script>';
|
270 |
+
echo '</div></div>';
|
271 |
+
}
|
272 |
+
|
273 |
+
/**
|
274 |
+
* Save a post translation for a given language
|
275 |
+
*/
|
276 |
+
protected static function saveStrings(){
|
277 |
+
|
278 |
+
//Security check
|
279 |
+
if(!wp_verify_nonce( $_REQUEST['wp_nonce'], 'jutranslation' )){
|
280 |
+
echo json_encode(array('status'=>'error','message'=>'nonce error'));
|
281 |
+
die();
|
282 |
+
}
|
283 |
+
|
284 |
+
//Get and check language
|
285 |
+
$language = $_POST['language'];
|
286 |
+
if(!$language){
|
287 |
+
echo json_encode(array('status'=>'error','message'=>'language empty'));
|
288 |
+
die();
|
289 |
+
}
|
290 |
+
if(!preg_match('/^[a-z]{2,3}(?:-[a-zA-Z]{4})?(?:-[A-Z]{2,3})?$/',$language)){
|
291 |
+
echo json_encode(array('status'=>'error','message'=>'invalid language code'));
|
292 |
+
die();
|
293 |
+
}
|
294 |
+
|
295 |
+
$plugin = $_POST['slug'];
|
296 |
+
if(!$plugin){
|
297 |
+
echo json_encode(array('status'=>'error','message'=>'plugin empty'));
|
298 |
+
die();
|
299 |
+
}
|
300 |
+
if(!preg_match('/^[a-zA-Z-_]+$/',$plugin)){
|
301 |
+
echo json_encode(array('status'=>'error','message'=>'invalid plugin slug'));
|
302 |
+
die();
|
303 |
+
}
|
304 |
+
|
305 |
+
$addons = apply_filters(Jutranslation::$extension_slug.'_get_addons', array());
|
306 |
+
if (!isset($addons[$plugin])) {
|
307 |
+
echo json_encode(array('status'=>'error','message'=>'plugin not found'));
|
308 |
+
die();
|
309 |
+
}
|
310 |
+
|
311 |
+
//Get the file to write to
|
312 |
+
$destination = $_POST['destination'];
|
313 |
+
$file = WP_CONTENT_DIR . DIRECTORY_SEPARATOR . 'languages' . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . $addons[$plugin]->text_domain . '-' . str_replace('-', '_', $language) ;
|
314 |
+
switch ($destination){
|
315 |
+
case 'override':
|
316 |
+
$file .= '.override.mo';
|
317 |
+
break;
|
318 |
+
case 'edition':
|
319 |
+
//Disallow editing main en-US file
|
320 |
+
if($language === 'en-US'){
|
321 |
+
echo json_encode(array('status'=>'error','message'=>'editing main reference file not allowed'));
|
322 |
+
die();
|
323 |
+
}
|
324 |
+
|
325 |
+
$file .= '.mo';
|
326 |
+
|
327 |
+
//Get informations about previous installed file
|
328 |
+
// Load language file
|
329 |
+
$mo = new \MO();
|
330 |
+
$mo->import_from_file( $file );
|
331 |
+
|
332 |
+
//Get the file version
|
333 |
+
if(isset($mo->headers['Version']) && $mo->headers['Version']){
|
334 |
+
$extension_version = $mo->headers['Version'];
|
335 |
+
}else{
|
336 |
+
//Use the current extension version
|
337 |
+
$plugin_data = get_plugin_data($addons[$plugin]->main_plugin_file);
|
338 |
+
$extension_version = $plugin_data['Version'];
|
339 |
+
}
|
340 |
+
|
341 |
+
//Get the file revision
|
342 |
+
if(isset($mo->headers['Revision'])){
|
343 |
+
$revision = $mo->headers['Revision'];
|
344 |
+
}else{
|
345 |
+
//Use the current extension version
|
346 |
+
$revision = (int)$_POST['revision'];
|
347 |
+
}
|
348 |
+
break;
|
349 |
+
default: //Case new language version installation from Joomunited
|
350 |
+
//Get the version
|
351 |
+
$extension_version = $_POST['extension_version'];
|
352 |
+
if(!$extension_version){
|
353 |
+
echo json_encode(array('status'=>'error','message'=>'version empty'));
|
354 |
+
die();
|
355 |
+
}
|
356 |
+
|
357 |
+
//Get revision
|
358 |
+
$revision = (int)$_POST['revision'];
|
359 |
+
|
360 |
+
$file .= '.mo';
|
361 |
+
break;
|
362 |
+
}
|
363 |
+
|
364 |
+
//Check version number
|
365 |
+
if($destination!=='override' && !preg_match('/^([0-9]+)\.([0-9]+)(\.([0-9]+))?(\.([0-9]+))?$/',$extension_version)){
|
366 |
+
echo json_encode(array('status'=>'error','message'=>'invalid version number'));
|
367 |
+
die();
|
368 |
+
}
|
369 |
+
|
370 |
+
$modified = $_POST['modified'];
|
371 |
+
|
372 |
+
//Get strings and remove slashes auto added by WP
|
373 |
+
$strings = stripslashes($_POST['strings']);
|
374 |
+
|
375 |
+
//Check if strings is a valid array
|
376 |
+
$strings = json_decode($strings);
|
377 |
+
if($strings === false || !is_object($strings) || !count((array)$strings)){
|
378 |
+
$strings = new \StdClass();
|
379 |
+
}
|
380 |
+
|
381 |
+
// Load translation class
|
382 |
+
$mo = new \MO();
|
383 |
+
|
384 |
+
//Generate the file header
|
385 |
+
if($destination !== 'override'){
|
386 |
+
$mo->headers['Version'] = $extension_version;
|
387 |
+
$mo->headers['Revision'] = $revision;
|
388 |
+
$mo->headers['Modified'] = (int)$modified;
|
389 |
+
}
|
390 |
+
|
391 |
+
foreach ($strings as $code => $string) {
|
392 |
+
//Only save reference language empty strings
|
393 |
+
if($string !== '' || $language === 'en-US') {
|
394 |
+
$entry = &$mo->make_entry($code, $string);
|
395 |
+
$mo->entries[$code] = &$entry;
|
396 |
+
}
|
397 |
+
}
|
398 |
+
|
399 |
+
//Create parents folders of language file
|
400 |
+
wp_mkdir_p(dirname($file));
|
401 |
+
|
402 |
+
//Write the language file
|
403 |
+
if($mo->export_to_file($file)){
|
404 |
+
echo json_encode(array('status'=>'success','message'=>'file created'));
|
405 |
+
die();
|
406 |
+
}
|
407 |
+
|
408 |
+
echo json_encode(array('status'=>'error','message'=>'writing file failed'));
|
409 |
+
die();
|
410 |
+
}
|
411 |
+
|
412 |
+
protected static function getTranslation(){
|
413 |
+
//Get and check language
|
414 |
+
$language =$_POST['language'];
|
415 |
+
if(!$language){
|
416 |
+
echo json_encode(array('status'=>'error','message'=>'language empty'));
|
417 |
+
die();
|
418 |
+
}
|
419 |
+
if(!preg_match('/^[a-z]{2,3}(?:-[a-zA-Z]{4})?(?:-[A-Z]{2,3})?$/',$language)){
|
420 |
+
echo json_encode(array('status'=>'error','message'=>'invalid language code'));
|
421 |
+
die();
|
422 |
+
}
|
423 |
+
|
424 |
+
$plugin = $_POST['slug'];
|
425 |
+
if(!$plugin){
|
426 |
+
echo json_encode(array('status'=>'error','message'=>'plugin empty'));
|
427 |
+
die();
|
428 |
+
}
|
429 |
+
if(!preg_match('/^[a-zA-Z-_]+$/',$plugin)){
|
430 |
+
echo json_encode(array('status'=>'error','message'=>'invalid plugin slug'));
|
431 |
+
die();
|
432 |
+
}
|
433 |
+
|
434 |
+
$addons = apply_filters(Jutranslation::$extension_slug.'_get_addons', array());
|
435 |
+
if (!isset($addons[$plugin])) {
|
436 |
+
echo json_encode(array('status'=>'error','message'=>'plugin not found'));
|
437 |
+
die();
|
438 |
+
}
|
439 |
+
|
440 |
+
//Get the language file for reference language en-US
|
441 |
+
$file = $addons[$plugin]->language_file;
|
442 |
+
$mo = new \MO();
|
443 |
+
$mo->import_from_file( $file );
|
444 |
+
|
445 |
+
//Retrieve reference the strings
|
446 |
+
$reference_strings = array();
|
447 |
+
foreach($mo->entries as $entry) {
|
448 |
+
$reference_strings[$entry->singular] = $entry->translations[0];
|
449 |
+
}
|
450 |
+
|
451 |
+
//Get the default language file for this language
|
452 |
+
$file = WP_CONTENT_DIR . DIRECTORY_SEPARATOR . 'languages' . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . $addons[$plugin]->text_domain . '-' . str_replace('-', '_', $language) . '.mo';
|
453 |
+
$mo = new \MO();
|
454 |
+
$mo->import_from_file( $file );
|
455 |
+
|
456 |
+
//Retrieve default strings
|
457 |
+
$language_strings = array();
|
458 |
+
foreach($mo->entries as $entry) {
|
459 |
+
$language_strings[$entry->singular] = $entry->translations[0];
|
460 |
+
}
|
461 |
+
|
462 |
+
//Get the override file content if exists
|
463 |
+
$file = WP_CONTENT_DIR . DIRECTORY_SEPARATOR . 'languages' . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . $addons[$plugin]->text_domain . '-' . str_replace('-', '_', $language) . '.override.mo';
|
464 |
+
if(file_exists($file)){
|
465 |
+
$mo = new \MO();
|
466 |
+
$mo->import_from_file( $file );
|
467 |
+
|
468 |
+
//Retrieve override strings
|
469 |
+
$override_strings = array();
|
470 |
+
foreach($mo->entries as $entry) {
|
471 |
+
$override_strings[$entry->singular] = $entry->translations[0];
|
472 |
+
}
|
473 |
+
}else{
|
474 |
+
$override_strings = array();
|
475 |
+
}
|
476 |
+
|
477 |
+
//Generate the final variable cotaining all strings
|
478 |
+
$final_result = array();
|
479 |
+
foreach (array('reference_strings' => $reference_strings, 'language_strings' => $language_strings, 'override_strings' => $override_strings) as $variable => $strings) {
|
480 |
+
foreach ($strings as $constant => $value) {
|
481 |
+
if(empty($final_result[$constant])) {
|
482 |
+
$obj = new \stdClass();
|
483 |
+
$obj->key = $constant;
|
484 |
+
$obj->reference = '';
|
485 |
+
$obj->language = '';
|
486 |
+
$obj->override = '';
|
487 |
+
$final_result[$constant] = $obj;
|
488 |
+
}
|
489 |
+
switch ($variable) {
|
490 |
+
case 'reference_strings' :
|
491 |
+
$final_result[$constant]->reference = $value;
|
492 |
+
break;
|
493 |
+
case 'language_strings' :
|
494 |
+
$final_result[$constant]->language = $value;
|
495 |
+
break;
|
496 |
+
case 'override_strings' :
|
497 |
+
$final_result[$constant]->override = $value;
|
498 |
+
break;
|
499 |
+
}
|
500 |
+
}
|
501 |
+
}
|
502 |
+
|
503 |
+
echo json_encode(array('status'=>'success','datas'=> array('language'=> $language, 'strings' => $final_result)));
|
504 |
+
die();
|
505 |
+
}
|
506 |
+
|
507 |
+
/**
|
508 |
+
* Show submit form to share translation
|
509 |
+
*/
|
510 |
+
protected static function showViewForm(){
|
511 |
+
echo '<!doctype html>';
|
512 |
+
echo '<html lang="en">';
|
513 |
+
echo '<head>';
|
514 |
+
echo ' <meta charset="utf-8">';
|
515 |
+
echo ' <title>Share with Joomunited</title>';
|
516 |
+
echo '</head>';
|
517 |
+
echo '<body>';
|
518 |
+
|
519 |
+
//Get and check language
|
520 |
+
$language = $_GET['language'];
|
521 |
+
if(!$language){
|
522 |
+
throw new Exception('language empty');
|
523 |
+
}
|
524 |
+
if(!preg_match('/^[a-z]{2,3}(?:-[a-zA-Z]{4})?(?:-[A-Z]{2,3})?$/',$language)){
|
525 |
+
throw new Exception('invalid language code');
|
526 |
+
}
|
527 |
+
|
528 |
+
$plugin = $_GET['slug'];
|
529 |
+
if(!$plugin){
|
530 |
+
echo json_encode(array('status'=>'error','message'=>'plugin empty'));
|
531 |
+
die();
|
532 |
+
}
|
533 |
+
if(!preg_match('/^[a-zA-Z-_]+$/',$plugin)){
|
534 |
+
echo json_encode(array('status'=>'error','message'=>'invalid plugin slug'));
|
535 |
+
die();
|
536 |
+
}
|
537 |
+
|
538 |
+
$addons = apply_filters(Jutranslation::$extension_slug.'_get_addons', array());
|
539 |
+
if (!isset($addons[$plugin])) {
|
540 |
+
echo json_encode(array('status'=>'error','message'=>'plugin not found'));
|
541 |
+
die();
|
542 |
+
}
|
543 |
+
|
544 |
+
$file = WP_CONTENT_DIR . DIRECTORY_SEPARATOR . 'languages' . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . $addons[$plugin]->text_domain . '-' . str_replace('-', '_', $language) . '.mo';
|
545 |
+
if(!file_exists($file)){
|
546 |
+
throw new Exception('language file doesn\'t exist');
|
547 |
+
}
|
548 |
+
|
549 |
+
//Get informations
|
550 |
+
$mo = new \MO();
|
551 |
+
$mo->import_from_file( $file );
|
552 |
+
|
553 |
+
//Check if the file has been modified by the user
|
554 |
+
if(isset($mo->headers['Modified']) && $mo->headers['Modified']!=='1'){
|
555 |
+
throw new Exception('language file not modified');
|
556 |
+
}
|
557 |
+
|
558 |
+
$strings = array();
|
559 |
+
//Check if a translation exists for each entry
|
560 |
+
foreach($mo->entries as $entry) {
|
561 |
+
$strings[$entry->singular] = $entry->translations[0];
|
562 |
+
}
|
563 |
+
$strings = json_encode($strings);
|
564 |
+
|
565 |
+
//Get the current extension version
|
566 |
+
$plugin_data = get_plugin_data( $addons[$plugin]->main_plugin_file );
|
567 |
+
$version = $plugin_data['Version'];
|
568 |
+
|
569 |
+
echo '<form method="POST" action="https://www.joomunited.com/index.php?option=com_jutranslation&task=contribution.share">';
|
570 |
+
echo '<input type="hidden" name="extension" value="' . $addons[$plugin]->extension_slug . '" />';
|
571 |
+
echo '<input type="hidden" name="extension_language" value="' . $language . '" />';
|
572 |
+
echo '<input type="hidden" name="extension_version" value="' . $version . '" />';
|
573 |
+
echo '<textarea style="display: none" name="strings">' . htmlentities($strings) . '</textarea>';
|
574 |
+
echo '</form>';
|
575 |
+
//Add waiting image
|
576 |
+
echo '<div style="text-align:center"><img src="' . plugin_dir_url( Jutranslation::$main_plugin_file ) . 'jutranslation/assets/images/preview_loader.gif"</div>';
|
577 |
+
|
578 |
+
//Submit automatically the form on page loading
|
579 |
+
echo '<script type="text/javascript">document.forms[0].submit();</script>';
|
580 |
+
|
581 |
+
echo '</body>';
|
582 |
+
echo '</html>';
|
583 |
+
wp_die();
|
584 |
+
}
|
585 |
+
|
586 |
+
public static function overrideLanguage($text_domain, $mofile){
|
587 |
+
//Only for our plugin and addons
|
588 |
+
$addons = apply_filters(Jutranslation::$extension_slug.'_get_addons', array());
|
589 |
+
|
590 |
+
foreach ($addons as $addon) {
|
591 |
+
if ($text_domain === $addon->text_domain) {
|
592 |
+
$path_parts = explode(DIRECTORY_SEPARATOR, $mofile);
|
593 |
+
$filename = $path_parts[count($path_parts)-1];
|
594 |
+
$filename_parts = explode('.',$filename);
|
595 |
+
|
596 |
+
//Return if it's action already for overrode file
|
597 |
+
if(count($filename_parts)>2 || $filename_parts[count($filename_parts)-2] === 'override'){
|
598 |
+
return;
|
599 |
+
}
|
600 |
+
|
601 |
+
//Load the overrode file
|
602 |
+
$path_parts[count($path_parts)-1] = str_replace('.mo', '.override.mo', $path_parts[count($path_parts)-1]);
|
603 |
+
if(file_exists(implode(DIRECTORY_SEPARATOR, $path_parts))){
|
604 |
+
load_textdomain($text_domain, implode(DIRECTORY_SEPARATOR, $path_parts));
|
605 |
+
}
|
606 |
+
}
|
607 |
+
}
|
608 |
+
}
|
609 |
+
}
|
languages/wp-meta-seo-en_US.mo
CHANGED
Binary file
|
languages/wp-meta-seo-en_US.po
DELETED
@@ -1,635 +0,0 @@
|
|
1 |
-
msgid ""
|
2 |
-
msgstr ""
|
3 |
-
"Project-Id-Version: \n"
|
4 |
-
"POT-Creation-Date: \n"
|
5 |
-
"PO-Revision-Date: \n"
|
6 |
-
"Last-Translator: \n"
|
7 |
-
"Language-Team: \n"
|
8 |
-
"Language: en_US\n"
|
9 |
-
"MIME-Version: 1.0\n"
|
10 |
-
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
-
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"X-Generator: Poedit 1.7.4\n"
|
13 |
-
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
14 |
-
|
15 |
-
msgid "Twitter username (without @)"
|
16 |
-
msgstr "Twitter username (without @)"
|
17 |
-
|
18 |
-
msgid "2 plugins that are doing almost the same thing detected: disable AIO SEO or Yoast SEO to avoid conflict."
|
19 |
-
msgstr "2 plugins that are doing almost the same thing detected: disable AIO SEO or Yoast SEO to avoid conflict."
|
20 |
-
|
21 |
-
msgid "We have found that you’re using All In One SEO plugin, WP Meta SEO can import the meta from this plugin, %s"
|
22 |
-
msgstr "We have found that you’re using All In One SEO plugin, WP Meta SEO can import the meta from this plugin, %s"
|
23 |
-
|
24 |
-
msgid "We have found that you’re using Yoast SEO plugin, WP Meta SEO can import the meta from this plugin, %s"
|
25 |
-
msgstr "We have found that you’re using Yoast SEO plugin, WP Meta SEO can import the meta from this plugin, %s"
|
26 |
-
|
27 |
-
msgid "Results preview"
|
28 |
-
msgstr "Results preview"
|
29 |
-
|
30 |
-
msgid "This is a preview of what your content will looks like in search engine results: title, description and URL"
|
31 |
-
msgstr "This is a preview of what your content will looks like in search engine results: title, description and URL"
|
32 |
-
|
33 |
-
msgid "Search engine title"
|
34 |
-
msgstr "Search engine title"
|
35 |
-
|
36 |
-
msgid "This is the title of your content that may be displayed in search engine results (meta title). By default it’s the content title (page title, post title…). 69 characters max allowed."
|
37 |
-
msgstr "This is the title of your content that may be displayed in search engine results (meta title). By default it’s the content title (page title, post title…). 69 characters max allowed."
|
38 |
-
|
39 |
-
msgid "Search engine description"
|
40 |
-
msgstr "Search engine description"
|
41 |
-
|
42 |
-
msgid "The description of your content that may be displayed in search engine results aka meta description. By default search engine take an excerpt from your content (depending on the search query). 156 characters max allowed."
|
43 |
-
msgstr "The description of your content that may be displayed in search engine results aka meta description. By default search engine take an excerpt from your content (depending on the search query). 156 characters max allowed."
|
44 |
-
|
45 |
-
msgid "Facebook Title"
|
46 |
-
msgstr "Facebook Title"
|
47 |
-
|
48 |
-
msgid "Custom title to display when sharing this content on facebook, content title override"
|
49 |
-
msgstr "Custom title to display when sharing this content on facebook, content title override"
|
50 |
-
|
51 |
-
msgid "Facebook Description"
|
52 |
-
msgstr "Facebook Description"
|
53 |
-
|
54 |
-
msgid "Custom description to display when sharing this content on facebook, content description override"
|
55 |
-
msgstr "Custom description to display when sharing this content on facebook, content description override"
|
56 |
-
|
57 |
-
msgid "Facebook Image"
|
58 |
-
msgstr "Facebook Image"
|
59 |
-
|
60 |
-
msgid "Custom image to display when sharing this content on facebook, content description override, recommended size is 1200px x 630px"
|
61 |
-
msgstr "Custom image to display when sharing this content on facebook, content description override, recommended size is 1200px x 630px"
|
62 |
-
|
63 |
-
msgid "Twitter Title"
|
64 |
-
msgstr "Twitter Title"
|
65 |
-
|
66 |
-
msgid "Custom title to display when sharing this content on twitter, content title override"
|
67 |
-
msgstr "Custom title to display when sharing this content on twitter, content title override"
|
68 |
-
|
69 |
-
msgid "Twitter Description"
|
70 |
-
msgstr "Twitter Description"
|
71 |
-
|
72 |
-
msgid "Custom description to display when sharing this content on twitter, content description override"
|
73 |
-
msgstr "Custom description to display when sharing this content on twitter, content description override"
|
74 |
-
|
75 |
-
msgid "Twitter Image"
|
76 |
-
msgstr "Twitter Image"
|
77 |
-
|
78 |
-
msgid "Custom image to display when sharing this content on facebook, content description override, recommended min size 440px X 220px"
|
79 |
-
msgstr "Custom image to display when sharing this content on facebook, content description override, recommended min size 440px X 220px"
|
80 |
-
|
81 |
-
msgid "Use Image"
|
82 |
-
msgstr "Use Image"
|
83 |
-
|
84 |
-
msgid " (because of date display)"
|
85 |
-
msgstr " (because of date display)"
|
86 |
-
|
87 |
-
msgid "(no parent)"
|
88 |
-
msgstr "(no parent)"
|
89 |
-
|
90 |
-
msgid "General"
|
91 |
-
msgstr "General"
|
92 |
-
|
93 |
-
msgid "Social"
|
94 |
-
msgstr "Social"
|
95 |
-
|
96 |
-
msgid "Page title word in content heading"
|
97 |
-
msgstr "Page title word in content heading"
|
98 |
-
|
99 |
-
msgid "Page title word in content"
|
100 |
-
msgstr "Page title word in content"
|
101 |
-
|
102 |
-
msgid "Page url matches with page title"
|
103 |
-
msgstr "Page url matches with page title"
|
104 |
-
|
105 |
-
msgid "Meta title filled"
|
106 |
-
msgstr "Meta title filled"
|
107 |
-
|
108 |
-
msgid "Meta description filled"
|
109 |
-
msgstr "Meta description filled"
|
110 |
-
|
111 |
-
msgid "Wrong image resize"
|
112 |
-
msgstr "Wrong image resize"
|
113 |
-
|
114 |
-
msgid "Image have meta title or alt"
|
115 |
-
msgstr "Image have meta title or alt"
|
116 |
-
|
117 |
-
msgid "SEO Page optimization"
|
118 |
-
msgstr "SEO Page optimization"
|
119 |
-
|
120 |
-
msgid "Social for search engine"
|
121 |
-
msgstr "Social for search engine"
|
122 |
-
|
123 |
-
msgid "Reload analysis"
|
124 |
-
msgstr "Reload analysis"
|
125 |
-
|
126 |
-
msgid "Filter by date"
|
127 |
-
msgstr "Filter by date"
|
128 |
-
|
129 |
-
msgid "All dates"
|
130 |
-
msgstr "All dates"
|
131 |
-
|
132 |
-
msgid "ID"
|
133 |
-
msgstr "ID"
|
134 |
-
|
135 |
-
msgid "Image"
|
136 |
-
msgstr "Image"
|
137 |
-
|
138 |
-
msgid "Name"
|
139 |
-
msgstr "Name"
|
140 |
-
|
141 |
-
msgid "Optimization Info"
|
142 |
-
msgstr "Optimization Info"
|
143 |
-
|
144 |
-
msgid "Alternative text"
|
145 |
-
msgstr "Alternative text"
|
146 |
-
|
147 |
-
msgid "Title"
|
148 |
-
msgstr "Title"
|
149 |
-
|
150 |
-
msgid "Legend"
|
151 |
-
msgstr "Legend"
|
152 |
-
|
153 |
-
msgid "Description"
|
154 |
-
msgstr "Description"
|
155 |
-
|
156 |
-
msgid "Select All"
|
157 |
-
msgstr "Select All"
|
158 |
-
|
159 |
-
msgid "Filter"
|
160 |
-
msgstr "Filter"
|
161 |
-
|
162 |
-
msgid "We didn't find any image which needed to be updated regarding meta information"
|
163 |
-
msgstr "We didn't find any image which needed to be updated regarding meta information"
|
164 |
-
|
165 |
-
msgid "This image has still not been inserted in any post!"
|
166 |
-
msgstr "This image has still not been inserted in any post!"
|
167 |
-
|
168 |
-
msgid "We found %s which needed to optimize"
|
169 |
-
msgstr "We found %s which can be resized @ its native size"
|
170 |
-
|
171 |
-
msgid "Replace?"
|
172 |
-
msgstr "Replace?"
|
173 |
-
|
174 |
-
msgid "Replace All"
|
175 |
-
msgstr "Replace All"
|
176 |
-
|
177 |
-
msgid "The post doesn't exist, please select another one"
|
178 |
-
msgstr "The post doesn't exist, please select another one"
|
179 |
-
|
180 |
-
msgid "There is a problem when update image name"
|
181 |
-
msgstr "There is a problem when update image name"
|
182 |
-
|
183 |
-
msgid "Image name changed"
|
184 |
-
msgstr "Image name changed"
|
185 |
-
|
186 |
-
msgid "Name already exist"
|
187 |
-
msgstr "Name already exist"
|
188 |
-
|
189 |
-
msgid "File doesn't existed"
|
190 |
-
msgstr "File doesn't existed"
|
191 |
-
|
192 |
-
msgid "Should not be empty"
|
193 |
-
msgstr "Should not be empty"
|
194 |
-
|
195 |
-
msgid "There is a problem during image meta update"
|
196 |
-
msgstr "There is a problem during image meta update"
|
197 |
-
|
198 |
-
msgid "This content has been deleted, please check again!"
|
199 |
-
msgstr "This content has been deleted, please check again!"
|
200 |
-
|
201 |
-
msgid "The post haven't been updated, please check again!"
|
202 |
-
msgstr "The post haven't been updated, please check again!"
|
203 |
-
|
204 |
-
msgid "This image has been removed from the post, please check again!"
|
205 |
-
msgstr "This image has been removed from the post, please check again!"
|
206 |
-
|
207 |
-
msgid "Content of the post is empty, please check again"
|
208 |
-
msgstr "Content of the post is empty, please check again"
|
209 |
-
|
210 |
-
msgid "We can't get traffic rank from Alexa for this website"
|
211 |
-
msgstr "We can't get traffic rank from Alexa for this website"
|
212 |
-
|
213 |
-
msgid "Meta Title"
|
214 |
-
msgstr "Meta Title"
|
215 |
-
|
216 |
-
msgid "Meta Description"
|
217 |
-
msgstr "Meta Description"
|
218 |
-
|
219 |
-
msgid "(no title)"
|
220 |
-
msgstr "(no title)"
|
221 |
-
|
222 |
-
msgid "Edit this item"
|
223 |
-
msgstr "Edit this item"
|
224 |
-
|
225 |
-
msgid "Edit"
|
226 |
-
msgstr "Edit"
|
227 |
-
|
228 |
-
msgid "View"
|
229 |
-
msgstr "View"
|
230 |
-
|
231 |
-
msgid "Preview"
|
232 |
-
msgstr "Preview"
|
233 |
-
|
234 |
-
msgid "This is a preview of what this content might looks like in Google's search results."
|
235 |
-
msgstr "Prévisualisation de la manière dont le contenu sera affiché dans les résultats de recherche"
|
236 |
-
|
237 |
-
msgid "Snippet Preview %s"
|
238 |
-
msgstr "Snippet Preview %s"
|
239 |
-
|
240 |
-
msgid "Facebook profile URL"
|
241 |
-
msgstr "Facebook profile URL"
|
242 |
-
|
243 |
-
msgid "Twitter Username"
|
244 |
-
msgstr "Twitter Username"
|
245 |
-
|
246 |
-
msgid "Meta block edition"
|
247 |
-
msgstr "Meta block edition"
|
248 |
-
|
249 |
-
msgid "Modification was saved"
|
250 |
-
msgstr "Modification was saved"
|
251 |
-
|
252 |
-
msgid "Meta title was not saved"
|
253 |
-
msgstr "Meta title was not saved"
|
254 |
-
|
255 |
-
msgid "Meta description was not saved"
|
256 |
-
msgstr "Meta description was not saved"
|
257 |
-
|
258 |
-
msgid "Dashboard"
|
259 |
-
msgstr "Dashboard"
|
260 |
-
|
261 |
-
msgid "WP Meta SEO"
|
262 |
-
msgstr "WP Meta SEO"
|
263 |
-
|
264 |
-
msgid "Content meta"
|
265 |
-
msgstr "Content meta"
|
266 |
-
|
267 |
-
msgid "Image information"
|
268 |
-
msgstr "Image information"
|
269 |
-
|
270 |
-
msgid "Settings"
|
271 |
-
msgstr "Settings"
|
272 |
-
|
273 |
-
msgid "Activate meta block edition in content"
|
274 |
-
msgstr "Activate meta block edition in content"
|
275 |
-
|
276 |
-
msgid "This post is not existed or deleted, please select another one"
|
277 |
-
msgstr "This post is not existed or deleted, please select another one"
|
278 |
-
|
279 |
-
msgid "Well done! This image is perfect now."
|
280 |
-
msgstr "Well done! This image is perfect now."
|
281 |
-
|
282 |
-
msgid "Oops! An error occured when updating the post, please try again"
|
283 |
-
msgstr "Oops! An error occured when updating the post, please try again"
|
284 |
-
|
285 |
-
msgid "Resize image"
|
286 |
-
msgstr "Resize image"
|
287 |
-
|
288 |
-
msgid "Image sizes are good!"
|
289 |
-
msgstr "Image sizes are good!"
|
290 |
-
|
291 |
-
msgid "Fix info in content"
|
292 |
-
msgstr "Fix info in content"
|
293 |
-
|
294 |
-
msgid "Edit information"
|
295 |
-
msgstr "Edit information"
|
296 |
-
|
297 |
-
msgid "N/A"
|
298 |
-
msgstr "N/A"
|
299 |
-
|
300 |
-
msgid "Poor"
|
301 |
-
msgstr "Poor"
|
302 |
-
|
303 |
-
msgid "OK"
|
304 |
-
msgstr "OK"
|
305 |
-
|
306 |
-
msgid "Good"
|
307 |
-
msgstr "Good"
|
308 |
-
|
309 |
-
msgid "Bad"
|
310 |
-
msgstr "Bad"
|
311 |
-
|
312 |
-
msgid "Homepage meta title"
|
313 |
-
msgstr "Homepage meta title"
|
314 |
-
|
315 |
-
msgid "Homepage meta description"
|
316 |
-
msgstr "Homepage meta description"
|
317 |
-
|
318 |
-
msgid "Bulk copy"
|
319 |
-
msgstr "Bulk copy"
|
320 |
-
|
321 |
-
msgid "All content"
|
322 |
-
msgstr "All content"
|
323 |
-
|
324 |
-
msgid "Selected posts"
|
325 |
-
msgstr "Selected posts"
|
326 |
-
|
327 |
-
msgid "Content title as meta title"
|
328 |
-
msgstr "Content title as meta title"
|
329 |
-
|
330 |
-
msgid "All Images"
|
331 |
-
msgstr "All Images"
|
332 |
-
|
333 |
-
msgid "Selected images"
|
334 |
-
msgstr "Selected images"
|
335 |
-
|
336 |
-
msgid "Image name as alt text"
|
337 |
-
msgstr "Image name as alt text"
|
338 |
-
|
339 |
-
msgid "Image name as image title"
|
340 |
-
msgstr "Image name as image title"
|
341 |
-
|
342 |
-
msgid "Warning, you're about to replace existing image alt or tile content, are you sire about that?"
|
343 |
-
msgstr "Warning, you're about to replace existing image alt or tile content, are you sure about that?"
|
344 |
-
|
345 |
-
msgid "Twitter card type "
|
346 |
-
msgstr "Twitter card type "
|
347 |
-
|
348 |
-
msgid "Summary"
|
349 |
-
msgstr "Summary"
|
350 |
-
|
351 |
-
msgid "Summary with large image"
|
352 |
-
msgstr "Summary with large image"
|
353 |
-
|
354 |
-
msgid "Optimized at"
|
355 |
-
msgstr "Optimized at"
|
356 |
-
|
357 |
-
msgid "Wrong resized images"
|
358 |
-
msgstr "Wrong resized images"
|
359 |
-
|
360 |
-
msgid "Latest month new or updated content"
|
361 |
-
msgstr "Latest month new or updated content"
|
362 |
-
|
363 |
-
msgid "Image data filled (in content)"
|
364 |
-
msgstr "Image data filled (in content)"
|
365 |
-
|
366 |
-
msgid "More information about WP Meta SEO"
|
367 |
-
msgstr "More information about WP Meta SEO"
|
368 |
-
|
369 |
-
msgid "Other plugins from JoomUnited"
|
370 |
-
msgstr "Other plugins from JoomUnited"
|
371 |
-
|
372 |
-
msgid "Check if a word of this content title is also in a title heading (h1, h2...)"
|
373 |
-
msgstr "Check if a word of this content title is also in a title heading (h1, h2...)"
|
374 |
-
|
375 |
-
msgid "Check if a word of this content title is also in the text"
|
376 |
-
msgstr "Check if a word of this content title is also in the text"
|
377 |
-
|
378 |
-
msgid "Does the page title match with the permalink (URL structure)"
|
379 |
-
msgstr "Does the page title match with the permalink (URL structure)"
|
380 |
-
|
381 |
-
msgid "Is the meta title of this page filled?"
|
382 |
-
msgstr "Is the meta title of this page filled?"
|
383 |
-
|
384 |
-
msgid "Is the meta description of this page filled?"
|
385 |
-
msgstr "Is the meta description of this page filled?"
|
386 |
-
|
387 |
-
msgid "Check for image HTML resizing in content (usually image resized using handles)"
|
388 |
-
msgstr "Check for image HTML resizing in content (usually image resized using handles)"
|
389 |
-
|
390 |
-
msgid "Check for image Alt text and title"
|
391 |
-
msgstr "Check for image Alt text and title"
|
392 |
-
|
393 |
-
msgid "It's better using a permalink structure that is adding in your URL the category name and content title. This parameter can be changed in Settings > Permalinks WordPress menu. Tag recommended is %category%/%postname%"
|
394 |
-
msgstr "It's better using a permalink structure that is adding in your URL the category name and content title. This parameter can be changed in Settings > Permalinks WordPress menu. Tag recommended is %category%/%postname%"
|
395 |
-
|
396 |
-
msgid "Meta titles are displayed in search engine results as a page title. It's a good thing for SEO to have some custom and attractive ones. Be sure to fill at least the met information on your most popular pages"
|
397 |
-
msgstr "Meta titles are displayed in search engine results as a page title. It's a good thing for SEO to have some custom and attractive ones. Be sure to fill at least the met information on your most popular pages"
|
398 |
-
|
399 |
-
msgid "Meta descriptions are displayed in search engine results as a page description. It's a good thing for SEO to have some custom and attractive ones. Be sure to fill at least the meta information on your most popular pages."
|
400 |
-
msgstr "Meta descriptions are displayed in search engine results as a page description. It's a good thing for SEO to have some custom and attractive ones. Be sure to fill at least the meta information on your most popular pages."
|
401 |
-
|
402 |
-
msgid "Display image at its natural size, do not use HTML resize. It happens usually when you use handles to resize an image. You have a bulk edition tool to fix that."
|
403 |
-
msgstr "Display image at its natural size, do not use HTML resize. It happens usually when you use handles to resize an image. You have a bulk edition tool to fix that."
|
404 |
-
|
405 |
-
msgid ""
|
406 |
-
"We recommend to use both alt text and image title. The main advantage is that it helps search engines discover your images and display them in image search results. Plus, these tags improve the accessibility of your site and give more information about your "
|
407 |
-
"images. Use our bulk image tool to quickly check and fix that."
|
408 |
-
msgstr ""
|
409 |
-
"We recommend to use both alt text and image title. The main advantage is that it helps search engines discover your images and display them in image search results. Plus, these tags improve the accessibility of your site and give more information about your "
|
410 |
-
"images. Use our bulk image tool to quickly check and fix that."
|
411 |
-
|
412 |
-
msgid "It is highly recommended to update or add new content on your website quite frequently. At least 3 updated or new content per month would be great :)"
|
413 |
-
msgstr "It is highly recommended to update or add new content on your website quite frequently. At least 3 updated or new content per month would be great :)"
|
414 |
-
|
415 |
-
msgid "Social networks meta"
|
416 |
-
msgstr "Social networks meta"
|
417 |
-
|
418 |
-
msgid "Activate social edition"
|
419 |
-
msgstr "Activate social edition"
|
420 |
-
|
421 |
-
msgid "Permalinks settings"
|
422 |
-
msgstr "Permalinks settings"
|
423 |
-
|
424 |
-
msgid "HTML image resizing"
|
425 |
-
msgstr "HTML image resizing"
|
426 |
-
|
427 |
-
msgid "Image title/alt"
|
428 |
-
msgstr "Image title/alt"
|
429 |
-
|
430 |
-
msgid "New or updated content"
|
431 |
-
msgstr "New or updated content"
|
432 |
-
|
433 |
-
msgid "WP Meta SEO dashboard"
|
434 |
-
msgstr "WP Meta SEO dashboard"
|
435 |
-
|
436 |
-
msgid "Latest WP Meta SEO News"
|
437 |
-
msgstr "Latest WP Meta SEO News"
|
438 |
-
|
439 |
-
msgid "All Posts"
|
440 |
-
msgstr "All Posts"
|
441 |
-
|
442 |
-
msgid "We can't get rank of this site from Alexa.com!"
|
443 |
-
msgstr "We can't get rank of this site from Alexa.com!"
|
444 |
-
|
445 |
-
msgid "Activate meta block edition below content"
|
446 |
-
msgstr "Activate meta block edition below content"
|
447 |
-
|
448 |
-
msgid "Well! This image is so good now."
|
449 |
-
msgstr "Well! This image is optimized now"
|
450 |
-
|
451 |
-
msgid "The default card type to use"
|
452 |
-
msgstr "The default card type to use"
|
453 |
-
|
454 |
-
msgid "Be careful you installed 2 extensions doing almost the same thing, please deactivate AIOSEO or Yoast in order to work more clearly!"
|
455 |
-
msgstr "Be careful you installed 2 extensions doing almost the same thing, please deactivate AIOSEO or Yoast in order to work more clearly!"
|
456 |
-
|
457 |
-
msgid "We have found that you’re using All In One Pack Plugin, WP Meta SEO can import the meta from this plugin, %s"
|
458 |
-
msgstr "We have found that you’re using All In One Pack Plugin, WP Meta SEO can import the meta from this plugin, %s"
|
459 |
-
|
460 |
-
msgid "File name already given!"
|
461 |
-
msgstr "File name already given!"
|
462 |
-
|
463 |
-
msgid "We found 0 image which needed to add or change meta information"
|
464 |
-
msgstr "We found 0 image which needed to add or change meta information"
|
465 |
-
|
466 |
-
msgid "The post is not existed, please choose one another!"
|
467 |
-
msgstr "The post is not existed, please choose one another!"
|
468 |
-
|
469 |
-
msgid "Image name was changed"
|
470 |
-
msgstr "Image name was changed"
|
471 |
-
|
472 |
-
msgid "File is not existed"
|
473 |
-
msgstr "File is not existed"
|
474 |
-
|
475 |
-
msgid "There is a problem when update image meta!"
|
476 |
-
msgstr "There is a problem when update image meta!"
|
477 |
-
|
478 |
-
msgid "The post has been deleted before, please check again!"
|
479 |
-
msgstr "The post has been deleted before, please check again!"
|
480 |
-
|
481 |
-
msgid " This is a rendering of what this post might look like in Google's search results."
|
482 |
-
msgstr " This is a rendering of what this post might look like in Google's search results."
|
483 |
-
|
484 |
-
msgid "This post is not existed or deleted, please choose one another!"
|
485 |
-
msgstr "This post is not existed or deleted, please choose one another!"
|
486 |
-
|
487 |
-
msgid "Opps! An error occured when updating the post, please try again"
|
488 |
-
msgstr "Oops! An error occured when updating the post, please try again"
|
489 |
-
|
490 |
-
msgid "Upload Image"
|
491 |
-
msgstr "Upload Image"
|
492 |
-
|
493 |
-
msgid "WP Meta SEO - Page optimization"
|
494 |
-
msgstr "WP Meta SEO - Page optimization"
|
495 |
-
|
496 |
-
msgid "Meta title was saved"
|
497 |
-
msgstr "Meta title was saved"
|
498 |
-
|
499 |
-
msgid "Content Meta"
|
500 |
-
msgstr ""
|
501 |
-
|
502 |
-
msgid "Meta keywords was saved"
|
503 |
-
msgstr "Meta keywords was saved"
|
504 |
-
|
505 |
-
msgid "Force SEO validation"
|
506 |
-
msgstr "Force SEO validation"
|
507 |
-
|
508 |
-
msgid "Allow user to force on page SEO criteria validation by clicking on the icon"
|
509 |
-
msgstr "Allow user to force on page SEO criteria validation by clicking on the icon"
|
510 |
-
|
511 |
-
msgid "Meta keywords"
|
512 |
-
msgstr "Meta keywords"
|
513 |
-
|
514 |
-
msgid "Active meta keywords"
|
515 |
-
msgstr "Active meta keywords"
|
516 |
-
|
517 |
-
msgid "Link text field"
|
518 |
-
msgstr "Link text field"
|
519 |
-
|
520 |
-
msgid "Adds back the missing 'title' field in the Insert/Edit URL box"
|
521 |
-
msgstr "Adds back the missing 'title' field in the Insert/Edit URL box"
|
522 |
-
|
523 |
-
msgid "Link titles"
|
524 |
-
msgstr "Link titles"
|
525 |
-
|
526 |
-
msgid "The link title attribute does not have any SEO value for links. BUT links titles can influence click behavior for users, which may indirectly affect your SEO performance"
|
527 |
-
msgstr "The link title attribute does not have any SEO value for links. BUT links titles can influence click behavior for users, which may indirectly affect your SEO performance"
|
528 |
-
|
529 |
-
msgid "Links title completed"
|
530 |
-
msgstr "Links title completed"
|
531 |
-
|
532 |
-
msgid "Saved."
|
533 |
-
msgstr "Saved."
|
534 |
-
|
535 |
-
msgid "Error."
|
536 |
-
msgstr "Error."
|
537 |
-
|
538 |
-
msgid "Source"
|
539 |
-
msgstr "Source"
|
540 |
-
|
541 |
-
msgid "URL"
|
542 |
-
msgstr "URL"
|
543 |
-
|
544 |
-
msgid "Link title"
|
545 |
-
msgstr "Link title"
|
546 |
-
|
547 |
-
msgid "Link text"
|
548 |
-
msgstr "Link text"
|
549 |
-
|
550 |
-
msgid "Link editor"
|
551 |
-
msgstr "Link editor"
|
552 |
-
|
553 |
-
msgid "Meta title as page title"
|
554 |
-
msgstr "Meta title as page title"
|
555 |
-
|
556 |
-
msgid "When meta title is filled use it as page title instead of the content title"
|
557 |
-
msgstr "When meta title is filled use it as page title instead of the content title"
|
558 |
-
|
559 |
-
msgid "It’s better using a permalink structure that is adding in your URL the category name and content title. This parameter can be changed in Settings > Permalinks WordPress menu. Tag recommended is %category%/%postname%"
|
560 |
-
msgstr "It’s better using a permalink structure that is adding in your URL the category name and content title. This parameter can be changed in Settings > Permalinks WordPress menu. Tag recommended is %category%/%postname%"
|
561 |
-
|
562 |
-
msgid "Meta descriptions are displayed in search engine results as a page description. It’s a good thing for SEO to have some custom and attractive ones. Be sure to fill at least the meta information on your most popular pages."
|
563 |
-
msgstr "Meta descriptions are displayed in search engine results as a page description. It’s a good thing for SEO to have some custom and attractive ones. Be sure to fill at least the meta information on your most popular pages."
|
564 |
-
|
565 |
-
msgid "Meta titles are displayed in search engine results as a page title. It’s a good thing for SEO to have some custom and attractive ones. Be sure to fill at least the met information on your most popular pages"
|
566 |
-
msgstr "Meta titles are displayed in search engine results as a page title. It’s a good thing for SEO to have some custom and attractive ones. Be sure to fill at least the met information on your most popular pages"
|
567 |
-
|
568 |
-
msgid "A website with a bunch of 404 errors doesn’t provide a good user experience, which is significantly important in content marketing and SEO. We recommend to use our internal broken link checker and redirect tool to fix all the 404 error you can periodically."
|
569 |
-
msgstr "A website with a bunch of 404 errors doesn’t provide a good user experience, which is significantly important in content marketing and SEO. We recommend to use our internal broken link checker and redirect tool to fix all the 404 error you can periodically."
|
570 |
-
|
571 |
-
msgid "Index internal broken links"
|
572 |
-
msgstr "Index internal broken links"
|
573 |
-
|
574 |
-
msgid "Type or Link text"
|
575 |
-
msgstr "Type or Link text"
|
576 |
-
|
577 |
-
msgid "Hits number"
|
578 |
-
msgstr "Hits number"
|
579 |
-
|
580 |
-
msgid "Status"
|
581 |
-
msgstr "Status"
|
582 |
-
|
583 |
-
msgid "Allow search engines robots to index this content, as default your content is indexed"
|
584 |
-
msgstr "Allow search engines robots to index this content, as default your content is indexed"
|
585 |
-
|
586 |
-
msgid "Provides show or do not show this page in search results in search results."
|
587 |
-
msgstr "Provides show or do not show this page in search results in search results."
|
588 |
-
|
589 |
-
msgid "Index"
|
590 |
-
msgstr "Index"
|
591 |
-
|
592 |
-
msgid "Follow"
|
593 |
-
msgstr "Follow"
|
594 |
-
|
595 |
-
msgid "Re-index content links"
|
596 |
-
msgstr "Re-index content links"
|
597 |
-
|
598 |
-
msgid "Apply"
|
599 |
-
msgstr "Apply"
|
600 |
-
|
601 |
-
msgid "-- Selection --"
|
602 |
-
msgstr "-- Selection --"
|
603 |
-
|
604 |
-
msgid "Follow selected"
|
605 |
-
msgstr "Follow selected"
|
606 |
-
|
607 |
-
msgid "Nofollow selected"
|
608 |
-
msgstr "Nofollow selected"
|
609 |
-
|
610 |
-
msgid "Follow all"
|
611 |
-
msgstr "Follow all"
|
612 |
-
|
613 |
-
msgid "Nofollow all"
|
614 |
-
msgstr "Nofollow all"
|
615 |
-
|
616 |
-
msgid "Link source"
|
617 |
-
msgstr "Link source"
|
618 |
-
|
619 |
-
msgid "Internal"
|
620 |
-
msgstr "Internal"
|
621 |
-
|
622 |
-
msgid "External"
|
623 |
-
msgstr "External"
|
624 |
-
|
625 |
-
msgid "Post/Page follow"
|
626 |
-
msgstr "Post/Page follow"
|
627 |
-
|
628 |
-
msgid "Post/Page index"
|
629 |
-
msgstr "Post/Page index"
|
630 |
-
|
631 |
-
msgid "Use ImageRecycle image compression plugin to activate this feature"
|
632 |
-
msgstr "Use ImageRecycle image compression plugin to activate this feature"
|
633 |
-
|
634 |
-
msgid "Images represent around 60% of a web page weight. An image compression reduce the image size by up to 70% while preserving the same visual quality. Small loading time is great for SEO!"
|
635 |
-
msgstr "Images represent around 60% of a web page weight. An image compression reduce the image size by up to 70% while preserving the same visual quality. Small loading time is great for SEO!"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/wp-meta-seo-fr_FR.mo
DELETED
Binary file
|
languages/wp-meta-seo-fr_FR.po
DELETED
@@ -1,793 +0,0 @@
|
|
1 |
-
msgid ""
|
2 |
-
msgstr ""
|
3 |
-
"Project-Id-Version: WPMS 1.2\n"
|
4 |
-
"POT-Creation-Date: \n"
|
5 |
-
"PO-Revision-Date: \n"
|
6 |
-
"Last-Translator: \n"
|
7 |
-
"Language-Team: \n"
|
8 |
-
"Language: fr_FR\n"
|
9 |
-
"MIME-Version: 1.0\n"
|
10 |
-
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
-
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"X-Generator: Poedit 1.8.5\n"
|
13 |
-
|
14 |
-
msgid "Twitter username (without @)"
|
15 |
-
msgstr "ID Twitter (sans le @)"
|
16 |
-
|
17 |
-
msgid ""
|
18 |
-
"2 plugins that are doing almost the same thing detected: disable AIO SEO or "
|
19 |
-
"Yoast SEO to avoid conflict."
|
20 |
-
msgstr ""
|
21 |
-
"2 plugins sont présent et font tous les 2 du SEO: merci de désactiver AIO "
|
22 |
-
"SEO ou Yoast SEO pour éviter les conflits"
|
23 |
-
|
24 |
-
msgid ""
|
25 |
-
"We have found that you’re using All In One SEO plugin, WP Meta SEO can "
|
26 |
-
"import the meta from this plugin, %s"
|
27 |
-
msgstr ""
|
28 |
-
"Vous utilisez le plugin All in one SEO, nous pouvons importer les meta de "
|
29 |
-
"ce plugin pour vous, %s"
|
30 |
-
|
31 |
-
msgid ""
|
32 |
-
"We have found that you’re using Yoast SEO plugin, WP Meta SEO can import the "
|
33 |
-
"meta from this plugin, %s"
|
34 |
-
msgstr ""
|
35 |
-
"Vous utilisez le plugin Yoast SEO, nous pouvons importer les meta de ce "
|
36 |
-
"plugin pour vous, %s"
|
37 |
-
|
38 |
-
msgid "Results preview"
|
39 |
-
msgstr "Prévisualisation"
|
40 |
-
|
41 |
-
msgid ""
|
42 |
-
"This is a preview of what your content will looks like in search engine "
|
43 |
-
"results: title, description and URL"
|
44 |
-
msgstr "Prévisualisation des résultats de recherche, titre, description et URL"
|
45 |
-
|
46 |
-
msgid "Search engine title"
|
47 |
-
msgstr "Titre"
|
48 |
-
|
49 |
-
msgid ""
|
50 |
-
"This is the title of your content that may be displayed in search engine "
|
51 |
-
"results (meta title). By default it’s the content title (page title, post "
|
52 |
-
"title…). 69 characters max allowed."
|
53 |
-
msgstr ""
|
54 |
-
"Ceci est le titre de votre contenu qui pourra être reprit par les moteurs de "
|
55 |
-
"recherche (meta title). Par défaut il s'agit du titre du contenu. 69 "
|
56 |
-
"caractères max"
|
57 |
-
|
58 |
-
msgid "Search engine description"
|
59 |
-
msgstr "Description"
|
60 |
-
|
61 |
-
msgid ""
|
62 |
-
"The description of your content that may be displayed in search engine "
|
63 |
-
"results aka meta description. By default search engine take an excerpt from "
|
64 |
-
"your content (depending on the search query). 156 characters max allowed."
|
65 |
-
msgstr ""
|
66 |
-
"Ceci est la description de votre contenu qui pourra être reprit par les "
|
67 |
-
"moteurs de recherche (meta description). Par défaut il s'agit d'un extrait "
|
68 |
-
"de votre contenu.156 caractères max"
|
69 |
-
|
70 |
-
msgid "Facebook Title"
|
71 |
-
msgstr "Titre facebook"
|
72 |
-
|
73 |
-
msgid ""
|
74 |
-
"Custom title to display when sharing this content on facebook, content title "
|
75 |
-
"override"
|
76 |
-
msgstr "Titre customisé lors du partage de ce contenu sur Facebook"
|
77 |
-
|
78 |
-
msgid "Facebook Description"
|
79 |
-
msgstr "Description Facebook"
|
80 |
-
|
81 |
-
msgid ""
|
82 |
-
"Custom description to display when sharing this content on facebook, content "
|
83 |
-
"description override"
|
84 |
-
msgstr "Description customisé lors du partage de ce contenu sur Facebook"
|
85 |
-
|
86 |
-
msgid "Facebook Image"
|
87 |
-
msgstr "Image Facebook"
|
88 |
-
|
89 |
-
msgid ""
|
90 |
-
"Custom image to display when sharing this content on facebook, content "
|
91 |
-
"description override, recommended size is 1200px x 630px"
|
92 |
-
msgstr ""
|
93 |
-
"Image customisé lors du partage de ce contenu sur Facebook, taille "
|
94 |
-
"recommandée 1200px x 630px"
|
95 |
-
|
96 |
-
msgid "Twitter Title"
|
97 |
-
msgstr "Titre Twitter"
|
98 |
-
|
99 |
-
msgid ""
|
100 |
-
"Custom title to display when sharing this content on twitter, content title "
|
101 |
-
"override"
|
102 |
-
msgstr "Titre customisé lors du partage de ce contenu sur Twitter"
|
103 |
-
|
104 |
-
msgid "Twitter Description"
|
105 |
-
msgstr "Description Twitter"
|
106 |
-
|
107 |
-
msgid ""
|
108 |
-
"Custom description to display when sharing this content on twitter, content "
|
109 |
-
"description override"
|
110 |
-
msgstr "Description customisé lors du partage de ce contenu sur Twitter"
|
111 |
-
|
112 |
-
msgid "Twitter Image"
|
113 |
-
msgstr "Image Twitter"
|
114 |
-
|
115 |
-
msgid ""
|
116 |
-
"Custom image to display when sharing this content on facebook, content "
|
117 |
-
"description override, recommended min size 440px X 220px"
|
118 |
-
msgstr ""
|
119 |
-
"Image customisé lors du partage de ce contenu sur Twitter, taille "
|
120 |
-
"recommandée 440px x 220px"
|
121 |
-
|
122 |
-
msgid "Use Image"
|
123 |
-
msgstr "Utiliser image"
|
124 |
-
|
125 |
-
msgid " (because of date display)"
|
126 |
-
msgstr " (because of date display)"
|
127 |
-
|
128 |
-
msgid "(no parent)"
|
129 |
-
msgstr "(no parent)"
|
130 |
-
|
131 |
-
msgid "General"
|
132 |
-
msgstr "General"
|
133 |
-
|
134 |
-
msgid "Social"
|
135 |
-
msgstr "Social"
|
136 |
-
|
137 |
-
msgid "Page title word in content heading"
|
138 |
-
msgstr "Mot du titre dans un titre du contenu"
|
139 |
-
|
140 |
-
msgid "Page title word in content"
|
141 |
-
msgstr "Mot du titre dans le contenu"
|
142 |
-
|
143 |
-
msgid "Page url matches with page title"
|
144 |
-
msgstr "URL de page correspond au titre de page"
|
145 |
-
|
146 |
-
msgid "Meta title filled"
|
147 |
-
msgstr "Meta titres complétés"
|
148 |
-
|
149 |
-
msgid "Meta description filled"
|
150 |
-
msgstr "Meta descriptions complétées"
|
151 |
-
|
152 |
-
msgid "Wrong image resize"
|
153 |
-
msgstr "Mauvaise taille d'image"
|
154 |
-
|
155 |
-
msgid "Image have meta title or alt"
|
156 |
-
msgstr "Les images ont des meta title ou alt"
|
157 |
-
|
158 |
-
msgid "SEO Page optimization"
|
159 |
-
msgstr "Optimisation moteur de recherche"
|
160 |
-
|
161 |
-
msgid "Social for search engine"
|
162 |
-
msgstr "Partage réseaux sociaux"
|
163 |
-
|
164 |
-
msgid "Reload analysis"
|
165 |
-
msgstr "Relancer analyse"
|
166 |
-
|
167 |
-
msgid "Filter by date"
|
168 |
-
msgstr "Filtrer par date"
|
169 |
-
|
170 |
-
msgid "All dates"
|
171 |
-
msgstr "Toutes les dates"
|
172 |
-
|
173 |
-
msgid "ID"
|
174 |
-
msgstr "ID"
|
175 |
-
|
176 |
-
msgid "Image"
|
177 |
-
msgstr "Image"
|
178 |
-
|
179 |
-
msgid "Name"
|
180 |
-
msgstr "Nom"
|
181 |
-
|
182 |
-
msgid "Optimization Info"
|
183 |
-
msgstr "Info optimisation"
|
184 |
-
|
185 |
-
msgid "Alternative text"
|
186 |
-
msgstr "texte alternatif"
|
187 |
-
|
188 |
-
msgid "Title"
|
189 |
-
msgstr "Titre"
|
190 |
-
|
191 |
-
msgid "Legend"
|
192 |
-
msgstr "Légende"
|
193 |
-
|
194 |
-
msgid "Description"
|
195 |
-
msgstr "Description"
|
196 |
-
|
197 |
-
msgid "Select All"
|
198 |
-
msgstr "Tout selectionner"
|
199 |
-
|
200 |
-
msgid "Filter"
|
201 |
-
msgstr "Filtrer"
|
202 |
-
|
203 |
-
msgid ""
|
204 |
-
"We didn't find any image which needed to be updated regarding meta "
|
205 |
-
"information"
|
206 |
-
msgstr ""
|
207 |
-
"Nous n'avons trouvé aucune image qui ont besoin d'être optimisé pour le SEO"
|
208 |
-
|
209 |
-
msgid "This image has still not been inserted in any post!"
|
210 |
-
msgstr "Cette image n'a été ajouté dans aucun de vos contenus"
|
211 |
-
|
212 |
-
msgid "We found %s which needed to optimize"
|
213 |
-
msgstr "Nous avons trouvé %s qui nécessite une optimisation"
|
214 |
-
|
215 |
-
msgid "Replace?"
|
216 |
-
msgstr "Remplacer ?"
|
217 |
-
|
218 |
-
msgid "Replace All"
|
219 |
-
msgstr "Tout remplacer"
|
220 |
-
|
221 |
-
msgid "The post doesn't exist, please select another one"
|
222 |
-
msgstr "Le post n'existe plus, merci d'en sélectionner un autre"
|
223 |
-
|
224 |
-
msgid "There is a problem when update image name"
|
225 |
-
msgstr "Erreur lors du changement de nom d'image"
|
226 |
-
|
227 |
-
msgid "Image name changed"
|
228 |
-
msgstr "Nom de l'image changé"
|
229 |
-
|
230 |
-
msgid "Name already exist"
|
231 |
-
msgstr "Le nom existe déjà"
|
232 |
-
|
233 |
-
msgid "File doesn't existed"
|
234 |
-
msgstr "Le fichier n'existe plus"
|
235 |
-
|
236 |
-
msgid "Should not be empty"
|
237 |
-
msgstr "Ne peut être vide"
|
238 |
-
|
239 |
-
msgid "There is a problem during image meta update"
|
240 |
-
msgstr "Un problème est survenue durant l'update des meta"
|
241 |
-
|
242 |
-
msgid "This content has been deleted, please check again!"
|
243 |
-
msgstr "Ce contenu a été supprimé, merci de revérifier!"
|
244 |
-
|
245 |
-
msgid "The post haven't been updated, please check again!"
|
246 |
-
msgstr "Ce post n'a pas été mis à jour, merci de revérifier"
|
247 |
-
|
248 |
-
msgid "This image has been removed from the post, please check again!"
|
249 |
-
msgstr "Cette image a été supprimée du contenu"
|
250 |
-
|
251 |
-
msgid "Content of the post is empty, please check again"
|
252 |
-
msgstr "Le contenu est vide, merci de revérifier"
|
253 |
-
|
254 |
-
msgid "We can't get traffic rank from Alexa for this website"
|
255 |
-
msgstr ""
|
256 |
-
"Nous n'avons pas assez d'info (de trafic) Alexa pour avoir le \"Traffic Rank"
|
257 |
-
"\""
|
258 |
-
|
259 |
-
msgid "Meta Title"
|
260 |
-
msgstr "Meta titre"
|
261 |
-
|
262 |
-
msgid "Meta Description"
|
263 |
-
msgstr "Meta description"
|
264 |
-
|
265 |
-
msgid "(no title)"
|
266 |
-
msgstr "(pas de titre)"
|
267 |
-
|
268 |
-
msgid "Edit this item"
|
269 |
-
msgstr "Editer cet item"
|
270 |
-
|
271 |
-
msgid "Edit"
|
272 |
-
msgstr "Editer"
|
273 |
-
|
274 |
-
msgid "View"
|
275 |
-
msgstr "Afficher"
|
276 |
-
|
277 |
-
msgid "Preview"
|
278 |
-
msgstr "Prévisualiser"
|
279 |
-
|
280 |
-
msgid ""
|
281 |
-
"This is a preview of what this content might looks like in Google's search "
|
282 |
-
"results."
|
283 |
-
msgstr ""
|
284 |
-
"Prévisualisation de ce à quoi votre contenu peut ressembler dans les "
|
285 |
-
"résultats de recherche"
|
286 |
-
|
287 |
-
msgid "Snippet Preview %s"
|
288 |
-
msgstr "Prévisualisation %s"
|
289 |
-
|
290 |
-
msgid "Facebook profile URL"
|
291 |
-
msgstr "Lien URL profil Facebook"
|
292 |
-
|
293 |
-
msgid "Twitter Username"
|
294 |
-
msgstr "Nom d'utilisateur Twitter"
|
295 |
-
|
296 |
-
msgid "Meta block edition"
|
297 |
-
msgstr "Block édition meta"
|
298 |
-
|
299 |
-
msgid "Modification was saved"
|
300 |
-
msgstr "Modifications sauvegardées"
|
301 |
-
|
302 |
-
msgid "Meta title was not saved"
|
303 |
-
msgstr "Meta titre non sauvegardé"
|
304 |
-
|
305 |
-
msgid "Meta description was not saved"
|
306 |
-
msgstr "Meta description non sauvegardé"
|
307 |
-
|
308 |
-
msgid "Dashboard"
|
309 |
-
msgstr "Tableau de bord"
|
310 |
-
|
311 |
-
msgid "WP Meta SEO"
|
312 |
-
msgstr "WP Meta SEO"
|
313 |
-
|
314 |
-
msgid "Content meta"
|
315 |
-
msgstr "Contenu meta"
|
316 |
-
|
317 |
-
msgid "Image information"
|
318 |
-
msgstr "Image information"
|
319 |
-
|
320 |
-
msgid "Settings"
|
321 |
-
msgstr "Paramètres"
|
322 |
-
|
323 |
-
msgid "Activate meta block edition in content"
|
324 |
-
msgstr "Activer l'édition des block de meta dans le contenu"
|
325 |
-
|
326 |
-
msgid "This post is not existed or deleted, please select another one"
|
327 |
-
msgstr "Ce post n'existe plus ou a été supprimé"
|
328 |
-
|
329 |
-
msgid "Well done! This image is perfect now."
|
330 |
-
msgstr "Bien joué ! Image remise à la bonne taille !"
|
331 |
-
|
332 |
-
msgid "Oops! An error occured when updating the post, please try again"
|
333 |
-
msgstr ""
|
334 |
-
"Oups! Une erreur est survenue durant la mise à jour du post, merci de "
|
335 |
-
"réessayer"
|
336 |
-
|
337 |
-
msgid "Resize image"
|
338 |
-
msgstr "Redimensionner image"
|
339 |
-
|
340 |
-
msgid "Image sizes are good!"
|
341 |
-
msgstr "Taille d'image OK!"
|
342 |
-
|
343 |
-
msgid "Fix info in content"
|
344 |
-
msgstr "Améliorer meta"
|
345 |
-
|
346 |
-
msgid "Edit information"
|
347 |
-
msgstr ""
|
348 |
-
|
349 |
-
msgid "N/A"
|
350 |
-
msgstr "N/A"
|
351 |
-
|
352 |
-
msgid "Poor"
|
353 |
-
msgstr "Mauvaise qualité"
|
354 |
-
|
355 |
-
msgid "OK"
|
356 |
-
msgstr "OK"
|
357 |
-
|
358 |
-
msgid "Good"
|
359 |
-
msgstr "Bon"
|
360 |
-
|
361 |
-
msgid "Bad"
|
362 |
-
msgstr "Mauvais"
|
363 |
-
|
364 |
-
msgid "Homepage meta title"
|
365 |
-
msgstr "Meta info page d'accueil"
|
366 |
-
|
367 |
-
msgid "Homepage meta description"
|
368 |
-
msgstr "Description page d'accueil"
|
369 |
-
|
370 |
-
msgid "Bulk copy"
|
371 |
-
msgstr "Copy par lot"
|
372 |
-
|
373 |
-
msgid "All content"
|
374 |
-
msgstr "Tout le contenu"
|
375 |
-
|
376 |
-
msgid "Selected posts"
|
377 |
-
msgstr "Sélection de contenu"
|
378 |
-
|
379 |
-
msgid "Content title as meta title"
|
380 |
-
msgstr "Titre contenu > meta titre"
|
381 |
-
|
382 |
-
msgid "All Images"
|
383 |
-
msgstr "Toutes les images"
|
384 |
-
|
385 |
-
msgid "Selected images"
|
386 |
-
msgstr "Sélection d'images"
|
387 |
-
|
388 |
-
msgid "Image name as alt text"
|
389 |
-
msgstr "Nom image > alt texte"
|
390 |
-
|
391 |
-
msgid "Image name as image title"
|
392 |
-
msgstr "Nom image > titre d'image"
|
393 |
-
|
394 |
-
msgid ""
|
395 |
-
"Warning, you're about to replace existing image alt or tile content, are you "
|
396 |
-
"sire about that?"
|
397 |
-
msgstr ""
|
398 |
-
"Vous êtes sur le point de remplacer des attributs de vos images, vous êtes "
|
399 |
-
"sûr ?"
|
400 |
-
|
401 |
-
msgid "Twitter card type "
|
402 |
-
msgstr "Type Twitter card"
|
403 |
-
|
404 |
-
msgid "Summary"
|
405 |
-
msgstr "Sommaire"
|
406 |
-
|
407 |
-
msgid "Summary with large image"
|
408 |
-
msgstr "Sommaire avec large image"
|
409 |
-
|
410 |
-
msgid "Optimized at"
|
411 |
-
msgstr "Optimisé à"
|
412 |
-
|
413 |
-
msgid "Wrong resized images"
|
414 |
-
msgstr "Image redimentionnées"
|
415 |
-
|
416 |
-
msgid "Latest month new or updated content"
|
417 |
-
msgstr "Contenu ajouté ou mis à jour le mois dernier"
|
418 |
-
|
419 |
-
msgid "Image data filled (in content)"
|
420 |
-
msgstr "Informations images complétées"
|
421 |
-
|
422 |
-
msgid "More information about WP Meta SEO"
|
423 |
-
msgstr "Plus d'info sur le plugin WP Meta SEO"
|
424 |
-
|
425 |
-
msgid "Other plugins from JoomUnited"
|
426 |
-
msgstr "Autres plugin de JoomUnited"
|
427 |
-
|
428 |
-
msgid ""
|
429 |
-
"Check if a word of this content title is also in a title heading (h1, h2...)"
|
430 |
-
msgstr ""
|
431 |
-
"Vérifie si un mot du titre de page est aussi présent dans un titre du "
|
432 |
-
"contenu (h1, h2...)"
|
433 |
-
|
434 |
-
msgid "Check if a word of this content title is also in the text"
|
435 |
-
msgstr ""
|
436 |
-
"Vérifie si un mot du titre de page est aussi présent dans le contenu texte"
|
437 |
-
|
438 |
-
msgid "Does the page title match with the permalink (URL structure)"
|
439 |
-
msgstr "Vérifie si le titre de page correspond à l'URL (permalien)"
|
440 |
-
|
441 |
-
msgid "Is the meta title of this page filled?"
|
442 |
-
msgstr "Est-ce que les meta titres sont complétés?"
|
443 |
-
|
444 |
-
msgid "Is the meta description of this page filled?"
|
445 |
-
msgstr "Est-ce que les meta description sont complétés?"
|
446 |
-
|
447 |
-
msgid ""
|
448 |
-
"Check for image HTML resizing in content (usually image resized using "
|
449 |
-
"handles)"
|
450 |
-
msgstr ""
|
451 |
-
"Vérifie si des images sont redimensionnées en HTML (habituellement en "
|
452 |
-
"utilisant les poignées)"
|
453 |
-
|
454 |
-
msgid "Check for image Alt text and title"
|
455 |
-
msgstr "Vérifie si les textes alt and titre d'images sont remplis"
|
456 |
-
|
457 |
-
msgid ""
|
458 |
-
"It's better using a permalink structure that is adding in your URL the "
|
459 |
-
"category name and content title. This parameter can be changed in Settings > "
|
460 |
-
"Permalinks WordPress menu. Tag recommended is %category%/%postname%"
|
461 |
-
msgstr ""
|
462 |
-
"Il est préférable d'utiliser des URL dont le nom de la catégorie et le titre "
|
463 |
-
"de page sont en clair. Ce paramètre peut être modifié depuis le menu "
|
464 |
-
"Paramètres > Permaliens. Le tag recommandé est %category%/%postname%"
|
465 |
-
|
466 |
-
msgid ""
|
467 |
-
"Meta titles are displayed in search engine results as a page title. It's a "
|
468 |
-
"good thing for SEO to have some custom and attractive ones. Be sure to fill "
|
469 |
-
"at least the met information on your most popular pages"
|
470 |
-
msgstr ""
|
471 |
-
"Les titres Meta sont affichés dans les résultats de recherche comme titre de "
|
472 |
-
"page. C'est une bonne chose de mettre des titres accrocheurs pour avoir un "
|
473 |
-
"plus grand nombre de clics."
|
474 |
-
|
475 |
-
msgid ""
|
476 |
-
"Meta descriptions are displayed in search engine results as a page "
|
477 |
-
"description. It's a good thing for SEO to have some custom and attractive "
|
478 |
-
"ones. Be sure to fill at least the meta information on your most popular "
|
479 |
-
"pages."
|
480 |
-
msgstr ""
|
481 |
-
"Les Meta descroption sont affichés dans les résultats de recherche comme "
|
482 |
-
"description de page. C'est une bonne chose de mettre des descriptions "
|
483 |
-
"accrocheuses pour avoir un plus grand nombre de clics."
|
484 |
-
|
485 |
-
msgid ""
|
486 |
-
"Display image at its natural size, do not use HTML resize. It happens "
|
487 |
-
"usually when you use handles to resize an image. You have a bulk edition "
|
488 |
-
"tool to fix that."
|
489 |
-
msgstr ""
|
490 |
-
"Utilisez des images à leur taille naturelle, pas en les redimensionnant en "
|
491 |
-
"HTML (avec les poignées). Avec WP Meta SEO, vous disposez d'un outil pour "
|
492 |
-
"corriger cela"
|
493 |
-
|
494 |
-
msgid ""
|
495 |
-
"We recommend to use both alt text and image title. The main advantage is "
|
496 |
-
"that it helps search engines discover your images and display them in image "
|
497 |
-
"search results. Plus, these tags improve the accessibility of your site and "
|
498 |
-
"give more information about your images. Use our bulk image tool to quickly "
|
499 |
-
"check and fix that."
|
500 |
-
msgstr ""
|
501 |
-
"Nous vous recommandons de compléter les le textes alternatif et les titres "
|
502 |
-
"d'images. L'avantage c'est que cela permet aux moteur de recherche d'indexer "
|
503 |
-
"vos images et apporte plus de contenu à vos pages. utilisez l'outil "
|
504 |
-
"d'édition par lot pour aller plus vite! "
|
505 |
-
|
506 |
-
msgid ""
|
507 |
-
"It is highly recommended to update or add new content on your website quite "
|
508 |
-
"frequently. At least 3 updated or new content per month would be great :)"
|
509 |
-
msgstr ""
|
510 |
-
"Il est fortement recommandé de mettre à jour ou d'ajouter du contenu sur "
|
511 |
-
"votre site pour être mieux référencé. Au moins 3 mises à jour ou ajout de "
|
512 |
-
"contenu par mois serait parfait :)"
|
513 |
-
|
514 |
-
msgid "Social networks meta"
|
515 |
-
msgstr "Meta réseaux sociaux"
|
516 |
-
|
517 |
-
msgid "Activate social edition"
|
518 |
-
msgstr "Activer l'édition des meta pour les réseaux sociaux"
|
519 |
-
|
520 |
-
msgid "Permalinks settings"
|
521 |
-
msgstr "Paramètres permaliens"
|
522 |
-
|
523 |
-
msgid "HTML image resizing"
|
524 |
-
msgstr "Image redimensionnées en HTML"
|
525 |
-
|
526 |
-
msgid "Image title/alt"
|
527 |
-
msgstr "Titre text alt des images"
|
528 |
-
|
529 |
-
msgid "New or updated content"
|
530 |
-
msgstr "Nouveau ou mise à jour contenu"
|
531 |
-
|
532 |
-
msgid "WP Meta SEO dashboard"
|
533 |
-
msgstr "Tableau de bord WP Meta SEO"
|
534 |
-
|
535 |
-
msgid "Latest WP Meta SEO News"
|
536 |
-
msgstr "Dernière news WP Meta SEO"
|
537 |
-
|
538 |
-
msgid "All Posts"
|
539 |
-
msgstr "Tous les posts"
|
540 |
-
|
541 |
-
msgid "We can't get rank of this site from Alexa.com!"
|
542 |
-
msgstr "Impossible de déterminer le Traffic Rank Alexa pour ce site"
|
543 |
-
|
544 |
-
msgid "Activate meta block edition below content"
|
545 |
-
msgstr "Activer l'édition des meta info sous les contenu (pages, articles)"
|
546 |
-
|
547 |
-
msgid "Well! This image is so good now."
|
548 |
-
msgstr "Parfait! image optimisée"
|
549 |
-
|
550 |
-
msgid "The default card type to use"
|
551 |
-
msgstr "Type de Twitter card"
|
552 |
-
|
553 |
-
msgid ""
|
554 |
-
"Be careful you installed 2 extensions doing almost the same thing, please "
|
555 |
-
"deactivate AIOSEO or Yoast in order to work more clearly!"
|
556 |
-
msgstr ""
|
557 |
-
"Attention plusieurs plugins sont susceptibles d'effectuer les même tâches, "
|
558 |
-
"essayez de désactiver AIO SEO ou Yoast SEO"
|
559 |
-
|
560 |
-
msgid ""
|
561 |
-
"We have found that you’re using All In One Pack Plugin, WP Meta SEO can "
|
562 |
-
"import the meta from this plugin, %s"
|
563 |
-
msgstr ""
|
564 |
-
"Vous utilisez actuellement All In One SEO Plugin, WP Meta SEO put importer "
|
565 |
-
"les données de ce plugin pour vous, %s"
|
566 |
-
|
567 |
-
msgid "File name already given!"
|
568 |
-
msgstr ""
|
569 |
-
|
570 |
-
msgid "We found 0 image which needed to add or change meta information"
|
571 |
-
msgstr ""
|
572 |
-
"Nous n'avons pas trouvé d'images qui nécessite l'ajout ou l'édition des meta"
|
573 |
-
|
574 |
-
msgid "The post is not existed, please choose one another!"
|
575 |
-
msgstr "Ce post n'existe pas, merci d'un sélectionner un autre"
|
576 |
-
|
577 |
-
msgid "Image name was changed"
|
578 |
-
msgstr "Nom d'image changé"
|
579 |
-
|
580 |
-
msgid "File is not existed"
|
581 |
-
msgstr "Ce fichier n'existe plus"
|
582 |
-
|
583 |
-
msgid "There is a problem when update image meta!"
|
584 |
-
msgstr "Erreur lors de la mise à jour des meta"
|
585 |
-
|
586 |
-
msgid "The post has been deleted before, please check again!"
|
587 |
-
msgstr "Ce contenu a été supprimé, merci de recharger la page"
|
588 |
-
|
589 |
-
msgid ""
|
590 |
-
" This is a rendering of what this post might look like in Google's search "
|
591 |
-
"results."
|
592 |
-
msgstr "Prévisualisation des résultats de recherche Google"
|
593 |
-
|
594 |
-
msgid "This post is not existed or deleted, please choose one another!"
|
595 |
-
msgstr "Ce post n'existe plus, merci d'en sélectionner un autre"
|
596 |
-
|
597 |
-
msgid "Opps! An error occured when updating the post, please try again"
|
598 |
-
msgstr "Oups! une erreur est survenue lors de la mise à jour du contenu"
|
599 |
-
|
600 |
-
msgid "Upload Image"
|
601 |
-
msgstr "Envoyer image"
|
602 |
-
|
603 |
-
msgid "WP Meta SEO - Page optimization"
|
604 |
-
msgstr "WP Meta SEO - Page optimisation"
|
605 |
-
|
606 |
-
msgid "Meta title was saved"
|
607 |
-
msgstr "Metz"
|
608 |
-
|
609 |
-
msgid "Content Meta"
|
610 |
-
msgstr "Meta content"
|
611 |
-
|
612 |
-
msgid "Meta keywords was saved"
|
613 |
-
msgstr "Mot clés enregistrés"
|
614 |
-
|
615 |
-
msgid "Force SEO validation"
|
616 |
-
msgstr "Forcer validation SEO"
|
617 |
-
|
618 |
-
msgid ""
|
619 |
-
"Allow user to force on page SEO criteria validation by clicking on the icon"
|
620 |
-
msgstr ""
|
621 |
-
"Autoriser la validation forcée des critères SEO dans l'analyse des pages"
|
622 |
-
|
623 |
-
msgid "Meta keywords"
|
624 |
-
msgstr "Mot clés"
|
625 |
-
|
626 |
-
msgid "Active meta keywords"
|
627 |
-
msgstr "Activer les mot clés meta"
|
628 |
-
|
629 |
-
msgid "Link text field"
|
630 |
-
msgstr "Champ titre lien"
|
631 |
-
|
632 |
-
msgid "Adds back the missing 'title' field in the Insert/Edit URL box"
|
633 |
-
msgstr "Ajouter un champ titre dans l'outil d'édition de lien"
|
634 |
-
|
635 |
-
msgid "Link titles"
|
636 |
-
msgstr "Titres lien"
|
637 |
-
|
638 |
-
msgid ""
|
639 |
-
"The link title attribute does not have any SEO value for links. BUT links "
|
640 |
-
"titles can influence click behavior for users, which may indirectly affect "
|
641 |
-
"your SEO performance"
|
642 |
-
msgstr ""
|
643 |
-
"Les titres des liens n'ont pas d'impact direct sur le SEO MAIS cela peut "
|
644 |
-
"influencer le comportement des utilisateurs en les incitant a cliquer dessus"
|
645 |
-
|
646 |
-
msgid "Links title completed"
|
647 |
-
msgstr "Titre de lien ajouté"
|
648 |
-
|
649 |
-
msgid "Saved."
|
650 |
-
msgstr "Enregistré"
|
651 |
-
|
652 |
-
msgid "Error."
|
653 |
-
msgstr "Erreur"
|
654 |
-
|
655 |
-
msgid "Source"
|
656 |
-
msgstr "Source"
|
657 |
-
|
658 |
-
msgid "URL"
|
659 |
-
msgstr "URL"
|
660 |
-
|
661 |
-
msgid "Link title"
|
662 |
-
msgstr "Titre liens"
|
663 |
-
|
664 |
-
msgid "Link text"
|
665 |
-
msgstr "Text lien"
|
666 |
-
|
667 |
-
msgid "Link editor"
|
668 |
-
msgstr "Link editor"
|
669 |
-
|
670 |
-
msgid "Meta title as page title"
|
671 |
-
msgstr "Meta titre vers titre page"
|
672 |
-
|
673 |
-
msgid ""
|
674 |
-
"When meta title is filled use it as page title instead of the content title"
|
675 |
-
msgstr ""
|
676 |
-
"Lorsque le meta titre est rempli, l'utiliser plutôt que le titre du contenu"
|
677 |
-
|
678 |
-
msgid ""
|
679 |
-
"It’s better using a permalink structure that is adding in your URL the "
|
680 |
-
"category name and content title. This parameter can be changed in Settings > "
|
681 |
-
"Permalinks WordPress menu. Tag recommended is %category%/%postname%"
|
682 |
-
msgstr ""
|
683 |
-
"Il est conseillé d'utiliser une structure d'URL qui inclus le nom de la "
|
684 |
-
"catégorie et le titre du contenu. Ce paramètre peut être changé dans "
|
685 |
-
"Paramètres > Permaliens. Le tag recommandé est %category%/%postname%"
|
686 |
-
|
687 |
-
msgid ""
|
688 |
-
"Meta descriptions are displayed in search engine results as a page "
|
689 |
-
"description. It’s a good thing for SEO to have some custom and attractive "
|
690 |
-
"ones. Be sure to fill at least the meta information on your most popular "
|
691 |
-
"pages."
|
692 |
-
msgstr ""
|
693 |
-
"Les meta descriptions sont affichées dans les résultats de recherche si ils "
|
694 |
-
"sont jugés pertinents. Il est bon pour avoir un taux de clics élevé d'en "
|
695 |
-
"rédiger des attractifs. Assurez vous de les compléter au moins pour vos "
|
696 |
-
"principales pages."
|
697 |
-
|
698 |
-
msgid ""
|
699 |
-
"Meta titles are displayed in search engine results as a page title. It’s a "
|
700 |
-
"good thing for SEO to have some custom and attractive ones. Be sure to fill "
|
701 |
-
"at least the met information on your most popular pages"
|
702 |
-
msgstr ""
|
703 |
-
"Les meta titres sont affichées dans les résultats de recherche. Il est bon "
|
704 |
-
"pour avoir un taux de clics élevé d'en rédiger des attractifs. Assurez vous "
|
705 |
-
"de les compléter au moins pour vos principales pages."
|
706 |
-
|
707 |
-
msgid ""
|
708 |
-
"A website with a bunch of 404 errors doesn’t provide a good user experience, "
|
709 |
-
"which is significantly important in content marketing and SEO. We recommend "
|
710 |
-
"to use our internal broken link checker and redirect tool to fix all the 404 "
|
711 |
-
"error you can periodically."
|
712 |
-
msgstr ""
|
713 |
-
"Un site web qui contient beaucoup d'erreur 404 donne une mauvaise expérience "
|
714 |
-
"d'utilisation, ce qui est très dommageable pour le marketing et le SEO. Nous "
|
715 |
-
"vous recommandons de corriger le maximum d'erreur en faisant des "
|
716 |
-
"redirections pertinentes."
|
717 |
-
|
718 |
-
msgid "Index internal broken links"
|
719 |
-
msgstr "Indexer les liens brisés"
|
720 |
-
|
721 |
-
msgid "Type or Link text"
|
722 |
-
msgstr "Type ou texte du lien"
|
723 |
-
|
724 |
-
msgid "Hits number"
|
725 |
-
msgstr "Nombre de clic"
|
726 |
-
|
727 |
-
msgid "Status"
|
728 |
-
msgstr "Status"
|
729 |
-
|
730 |
-
msgid ""
|
731 |
-
"Allow search engines robots to index this content, as default your content "
|
732 |
-
"is indexed"
|
733 |
-
msgstr "Autoriser les moteurs de recherche à indexer ce contenu"
|
734 |
-
|
735 |
-
msgid ""
|
736 |
-
"Provides show or do not show this page in search results in search results."
|
737 |
-
msgstr "Afficher ou pas cette page dans les résultats des moteurs de recherche"
|
738 |
-
|
739 |
-
msgid "Index"
|
740 |
-
msgstr "Index"
|
741 |
-
|
742 |
-
msgid "Follow"
|
743 |
-
msgstr "Follow"
|
744 |
-
|
745 |
-
msgid "Re-index content links"
|
746 |
-
msgstr "Re-indexer liens"
|
747 |
-
|
748 |
-
msgid "Apply"
|
749 |
-
msgstr "Appliquer"
|
750 |
-
|
751 |
-
msgid "-- Selection --"
|
752 |
-
msgstr "-- Selection --"
|
753 |
-
|
754 |
-
msgid "Follow selected"
|
755 |
-
msgstr "Follow sélection"
|
756 |
-
|
757 |
-
msgid "Nofollow selected"
|
758 |
-
msgstr "Nofollow sélection"
|
759 |
-
|
760 |
-
msgid "Follow all"
|
761 |
-
msgstr "Follow tous"
|
762 |
-
|
763 |
-
msgid "Nofollow all"
|
764 |
-
msgstr "Nofollow tous"
|
765 |
-
|
766 |
-
msgid "Link source"
|
767 |
-
msgstr "Source lien"
|
768 |
-
|
769 |
-
msgid "Internal"
|
770 |
-
msgstr "Interne"
|
771 |
-
|
772 |
-
msgid "External"
|
773 |
-
msgstr "Externe"
|
774 |
-
|
775 |
-
msgid "Post/Page follow"
|
776 |
-
msgstr "Article/Page follow"
|
777 |
-
|
778 |
-
msgid "Post/Page index"
|
779 |
-
msgstr "Article/Page index"
|
780 |
-
|
781 |
-
msgid "Use ImageRecycle image compression plugin to activate this feature"
|
782 |
-
msgstr ""
|
783 |
-
"Activation : l'installation du plugin de compression d'image ImageRecycle "
|
784 |
-
"est nécessaire"
|
785 |
-
|
786 |
-
msgid ""
|
787 |
-
"Images represent around 60% of a web page weight. An image compression "
|
788 |
-
"reduce the image size by up to 70% while preserving the same visual quality. "
|
789 |
-
"Small loading time is great for SEO!"
|
790 |
-
msgstr ""
|
791 |
-
"Les images représentent en moyenne 60% du poids d'une page web. Une "
|
792 |
-
"compression sans perte de qualité réduit de manière importante le poids de "
|
793 |
-
"votre page, parfait pour le référencement !"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/wp-meta-seo.pot
DELETED
@@ -1,635 +0,0 @@
|
|
1 |
-
#, fuzzy
|
2 |
-
msgid ""
|
3 |
-
msgstr ""
|
4 |
-
"Project-Id-Version: WP Meta SEO\n"
|
5 |
-
"POT-Creation-Date: \n"
|
6 |
-
"PO-Revision-Date: \n"
|
7 |
-
"Last-Translator: \n"
|
8 |
-
"Language-Team: \n"
|
9 |
-
"MIME-Version: 1.0\n"
|
10 |
-
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
-
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"Language: en_GB\n"
|
13 |
-
"X-Generator: Poedit 1.8.5\n"
|
14 |
-
"X-Poedit-SourceCharset: UTF-8\n"
|
15 |
-
|
16 |
-
msgid "Twitter username (without @)"
|
17 |
-
msgstr ""
|
18 |
-
|
19 |
-
msgid "2 plugins that are doing almost the same thing detected: disable AIO SEO or Yoast SEO to avoid conflict."
|
20 |
-
msgstr ""
|
21 |
-
|
22 |
-
msgid "We have found that you’re using All In One SEO plugin, WP Meta SEO can import the meta from this plugin, %s"
|
23 |
-
msgstr ""
|
24 |
-
|
25 |
-
msgid "We have found that you’re using Yoast SEO plugin, WP Meta SEO can import the meta from this plugin, %s"
|
26 |
-
msgstr ""
|
27 |
-
|
28 |
-
msgid "Results preview"
|
29 |
-
msgstr ""
|
30 |
-
|
31 |
-
msgid "This is a preview of what your content will looks like in search engine results: title, description and URL"
|
32 |
-
msgstr ""
|
33 |
-
|
34 |
-
msgid "Search engine title"
|
35 |
-
msgstr ""
|
36 |
-
|
37 |
-
msgid "This is the title of your content that may be displayed in search engine results (meta title). By default it’s the content title (page title, post title…). 69 characters max allowed."
|
38 |
-
msgstr ""
|
39 |
-
|
40 |
-
msgid "Search engine description"
|
41 |
-
msgstr ""
|
42 |
-
|
43 |
-
msgid "The description of your content that may be displayed in search engine results aka meta description. By default search engine take an excerpt from your content (depending on the search query). 156 characters max allowed."
|
44 |
-
msgstr ""
|
45 |
-
|
46 |
-
msgid "Facebook Title"
|
47 |
-
msgstr ""
|
48 |
-
|
49 |
-
msgid "Custom title to display when sharing this content on facebook, content title override"
|
50 |
-
msgstr ""
|
51 |
-
|
52 |
-
msgid "Facebook Description"
|
53 |
-
msgstr ""
|
54 |
-
|
55 |
-
msgid "Custom description to display when sharing this content on facebook, content description override"
|
56 |
-
msgstr ""
|
57 |
-
|
58 |
-
msgid "Facebook Image"
|
59 |
-
msgstr ""
|
60 |
-
|
61 |
-
msgid "Custom image to display when sharing this content on facebook, content description override, recommended size is 1200px x 630px"
|
62 |
-
msgstr ""
|
63 |
-
|
64 |
-
msgid "Twitter Title"
|
65 |
-
msgstr ""
|
66 |
-
|
67 |
-
msgid "Custom title to display when sharing this content on twitter, content title override"
|
68 |
-
msgstr ""
|
69 |
-
|
70 |
-
msgid "Twitter Description"
|
71 |
-
msgstr ""
|
72 |
-
|
73 |
-
msgid "Custom description to display when sharing this content on twitter, content description override"
|
74 |
-
msgstr ""
|
75 |
-
|
76 |
-
msgid "Twitter Image"
|
77 |
-
msgstr ""
|
78 |
-
|
79 |
-
msgid "Custom image to display when sharing this content on facebook, content description override, recommended min size 440px X 220px"
|
80 |
-
msgstr ""
|
81 |
-
|
82 |
-
msgid "Use Image"
|
83 |
-
msgstr ""
|
84 |
-
|
85 |
-
msgid " (because of date display)"
|
86 |
-
msgstr ""
|
87 |
-
|
88 |
-
msgid "(no parent)"
|
89 |
-
msgstr ""
|
90 |
-
|
91 |
-
msgid "General"
|
92 |
-
msgstr ""
|
93 |
-
|
94 |
-
msgid "Social"
|
95 |
-
msgstr ""
|
96 |
-
|
97 |
-
msgid "Page title word in content heading"
|
98 |
-
msgstr ""
|
99 |
-
|
100 |
-
msgid "Page title word in content"
|
101 |
-
msgstr ""
|
102 |
-
|
103 |
-
msgid "Page url matches with page title"
|
104 |
-
msgstr ""
|
105 |
-
|
106 |
-
msgid "Meta title filled"
|
107 |
-
msgstr ""
|
108 |
-
|
109 |
-
msgid "Meta description filled"
|
110 |
-
msgstr ""
|
111 |
-
|
112 |
-
msgid "Wrong image resize"
|
113 |
-
msgstr ""
|
114 |
-
|
115 |
-
msgid "Image have meta title or alt"
|
116 |
-
msgstr ""
|
117 |
-
|
118 |
-
msgid "SEO Page optimization"
|
119 |
-
msgstr ""
|
120 |
-
|
121 |
-
msgid "Social for search engine"
|
122 |
-
msgstr ""
|
123 |
-
|
124 |
-
msgid "Reload analysis"
|
125 |
-
msgstr ""
|
126 |
-
|
127 |
-
msgid "Filter by date"
|
128 |
-
msgstr ""
|
129 |
-
|
130 |
-
msgid "All dates"
|
131 |
-
msgstr ""
|
132 |
-
|
133 |
-
msgid "ID"
|
134 |
-
msgstr ""
|
135 |
-
|
136 |
-
msgid "Image"
|
137 |
-
msgstr ""
|
138 |
-
|
139 |
-
msgid "Name"
|
140 |
-
msgstr ""
|
141 |
-
|
142 |
-
msgid "Optimization Info"
|
143 |
-
msgstr ""
|
144 |
-
|
145 |
-
msgid "Alternative text"
|
146 |
-
msgstr ""
|
147 |
-
|
148 |
-
msgid "Title"
|
149 |
-
msgstr ""
|
150 |
-
|
151 |
-
msgid "Legend"
|
152 |
-
msgstr ""
|
153 |
-
|
154 |
-
msgid "Description"
|
155 |
-
msgstr ""
|
156 |
-
|
157 |
-
msgid "Select All"
|
158 |
-
msgstr ""
|
159 |
-
|
160 |
-
msgid "Filter"
|
161 |
-
msgstr ""
|
162 |
-
|
163 |
-
msgid "We didn't find any image which needed to be updated regarding meta information"
|
164 |
-
msgstr ""
|
165 |
-
|
166 |
-
msgid "This image has still not been inserted in any post!"
|
167 |
-
msgstr ""
|
168 |
-
|
169 |
-
msgid "We found %s which needed to optimize"
|
170 |
-
msgstr ""
|
171 |
-
|
172 |
-
msgid "Replace?"
|
173 |
-
msgstr ""
|
174 |
-
|
175 |
-
msgid "Replace All"
|
176 |
-
msgstr ""
|
177 |
-
|
178 |
-
msgid "The post doesn't exist, please select another one"
|
179 |
-
msgstr ""
|
180 |
-
|
181 |
-
msgid "There is a problem when update image name"
|
182 |
-
msgstr ""
|
183 |
-
|
184 |
-
msgid "Image name changed"
|
185 |
-
msgstr ""
|
186 |
-
|
187 |
-
msgid "Name already exist"
|
188 |
-
msgstr ""
|
189 |
-
|
190 |
-
msgid "File doesn't existed"
|
191 |
-
msgstr ""
|
192 |
-
|
193 |
-
msgid "Should not be empty"
|
194 |
-
msgstr ""
|
195 |
-
|
196 |
-
msgid "There is a problem during image meta update"
|
197 |
-
msgstr ""
|
198 |
-
|
199 |
-
msgid "This content has been deleted, please check again!"
|
200 |
-
msgstr ""
|
201 |
-
|
202 |
-
msgid "The post haven't been updated, please check again!"
|
203 |
-
msgstr ""
|
204 |
-
|
205 |
-
msgid "This image has been removed from the post, please check again!"
|
206 |
-
msgstr ""
|
207 |
-
|
208 |
-
msgid "Content of the post is empty, please check again"
|
209 |
-
msgstr ""
|
210 |
-
|
211 |
-
msgid "We can't get traffic rank from Alexa for this website"
|
212 |
-
msgstr ""
|
213 |
-
|
214 |
-
msgid "Meta Title"
|
215 |
-
msgstr ""
|
216 |
-
|
217 |
-
msgid "Meta Description"
|
218 |
-
msgstr ""
|
219 |
-
|
220 |
-
msgid "(no title)"
|
221 |
-
msgstr ""
|
222 |
-
|
223 |
-
msgid "Edit this item"
|
224 |
-
msgstr ""
|
225 |
-
|
226 |
-
msgid "Edit"
|
227 |
-
msgstr ""
|
228 |
-
|
229 |
-
msgid "View"
|
230 |
-
msgstr ""
|
231 |
-
|
232 |
-
msgid "Preview"
|
233 |
-
msgstr ""
|
234 |
-
|
235 |
-
msgid "This is a preview of what this content might looks like in Google's search results."
|
236 |
-
msgstr ""
|
237 |
-
|
238 |
-
msgid "Snippet Preview %s"
|
239 |
-
msgstr ""
|
240 |
-
|
241 |
-
msgid "Facebook profile URL"
|
242 |
-
msgstr ""
|
243 |
-
|
244 |
-
msgid "Twitter Username"
|
245 |
-
msgstr ""
|
246 |
-
|
247 |
-
msgid "Meta block edition"
|
248 |
-
msgstr ""
|
249 |
-
|
250 |
-
msgid "Modification was saved"
|
251 |
-
msgstr ""
|
252 |
-
|
253 |
-
msgid "Meta title was not saved"
|
254 |
-
msgstr ""
|
255 |
-
|
256 |
-
msgid "Meta description was not saved"
|
257 |
-
msgstr ""
|
258 |
-
|
259 |
-
msgid "Dashboard"
|
260 |
-
msgstr ""
|
261 |
-
|
262 |
-
msgid "WP Meta SEO"
|
263 |
-
msgstr ""
|
264 |
-
|
265 |
-
msgid "Content meta"
|
266 |
-
msgstr ""
|
267 |
-
|
268 |
-
msgid "Image information"
|
269 |
-
msgstr ""
|
270 |
-
|
271 |
-
msgid "Settings"
|
272 |
-
msgstr ""
|
273 |
-
|
274 |
-
msgid "Activate meta block edition in content"
|
275 |
-
msgstr ""
|
276 |
-
|
277 |
-
msgid "This post is not existed or deleted, please select another one"
|
278 |
-
msgstr ""
|
279 |
-
|
280 |
-
msgid "Well done! This image is perfect now."
|
281 |
-
msgstr ""
|
282 |
-
|
283 |
-
msgid "Oops! An error occured when updating the post, please try again"
|
284 |
-
msgstr ""
|
285 |
-
|
286 |
-
msgid "Resize image"
|
287 |
-
msgstr ""
|
288 |
-
|
289 |
-
msgid "Image sizes are good!"
|
290 |
-
msgstr ""
|
291 |
-
|
292 |
-
msgid "Fix info in content"
|
293 |
-
msgstr ""
|
294 |
-
|
295 |
-
msgid "Edit information"
|
296 |
-
msgstr ""
|
297 |
-
|
298 |
-
msgid "N/A"
|
299 |
-
msgstr ""
|
300 |
-
|
301 |
-
msgid "Poor"
|
302 |
-
msgstr ""
|
303 |
-
|
304 |
-
msgid "OK"
|
305 |
-
msgstr ""
|
306 |
-
|
307 |
-
msgid "Good"
|
308 |
-
msgstr ""
|
309 |
-
|
310 |
-
msgid "Bad"
|
311 |
-
msgstr ""
|
312 |
-
|
313 |
-
msgid "Homepage meta title"
|
314 |
-
msgstr ""
|
315 |
-
|
316 |
-
msgid "Homepage meta description"
|
317 |
-
msgstr ""
|
318 |
-
|
319 |
-
msgid "Bulk copy"
|
320 |
-
msgstr ""
|
321 |
-
|
322 |
-
msgid "All content"
|
323 |
-
msgstr ""
|
324 |
-
|
325 |
-
msgid "Selected posts"
|
326 |
-
msgstr ""
|
327 |
-
|
328 |
-
msgid "Content title as meta title"
|
329 |
-
msgstr ""
|
330 |
-
|
331 |
-
msgid "All Images"
|
332 |
-
msgstr ""
|
333 |
-
|
334 |
-
msgid "Selected images"
|
335 |
-
msgstr ""
|
336 |
-
|
337 |
-
msgid "Image name as alt text"
|
338 |
-
msgstr ""
|
339 |
-
|
340 |
-
msgid "Image name as image title"
|
341 |
-
msgstr ""
|
342 |
-
|
343 |
-
msgid "Warning, you're about to replace existing image alt or tile content, are you sire about that?"
|
344 |
-
msgstr ""
|
345 |
-
|
346 |
-
msgid "Twitter card type "
|
347 |
-
msgstr ""
|
348 |
-
|
349 |
-
msgid "Summary"
|
350 |
-
msgstr ""
|
351 |
-
|
352 |
-
msgid "Summary with large image"
|
353 |
-
msgstr ""
|
354 |
-
|
355 |
-
msgid "Optimized at"
|
356 |
-
msgstr ""
|
357 |
-
|
358 |
-
msgid "Wrong resized images"
|
359 |
-
msgstr ""
|
360 |
-
|
361 |
-
msgid "Latest month new or updated content"
|
362 |
-
msgstr ""
|
363 |
-
|
364 |
-
msgid "Image data filled (in content)"
|
365 |
-
msgstr ""
|
366 |
-
|
367 |
-
msgid "More information about WP Meta SEO"
|
368 |
-
msgstr ""
|
369 |
-
|
370 |
-
msgid "Other plugins from JoomUnited"
|
371 |
-
msgstr ""
|
372 |
-
|
373 |
-
msgid "Check if a word of this content title is also in a title heading (h1, h2...)"
|
374 |
-
msgstr ""
|
375 |
-
|
376 |
-
msgid "Check if a word of this content title is also in the text"
|
377 |
-
msgstr ""
|
378 |
-
|
379 |
-
msgid "Does the page title match with the permalink (URL structure)"
|
380 |
-
msgstr ""
|
381 |
-
|
382 |
-
msgid "Is the meta title of this page filled?"
|
383 |
-
msgstr ""
|
384 |
-
|
385 |
-
msgid "Is the meta description of this page filled?"
|
386 |
-
msgstr ""
|
387 |
-
|
388 |
-
msgid "Check for image HTML resizing in content (usually image resized using handles)"
|
389 |
-
msgstr ""
|
390 |
-
|
391 |
-
msgid "Check for image Alt text and title"
|
392 |
-
msgstr ""
|
393 |
-
|
394 |
-
msgid "It's better using a permalink structure that is adding in your URL the category name and content title. This parameter can be changed in Settings > Permalinks WordPress menu. Tag recommended is %category%/%postname%"
|
395 |
-
msgstr ""
|
396 |
-
|
397 |
-
msgid "Meta titles are displayed in search engine results as a page title. It's a good thing for SEO to have some custom and attractive ones. Be sure to fill at least the met information on your most popular pages"
|
398 |
-
msgstr ""
|
399 |
-
|
400 |
-
msgid "Meta descriptions are displayed in search engine results as a page description. It's a good thing for SEO to have some custom and attractive ones. Be sure to fill at least the meta information on your most popular pages."
|
401 |
-
msgstr ""
|
402 |
-
|
403 |
-
msgid "Display image at its natural size, do not use HTML resize. It happens usually when you use handles to resize an image. You have a bulk edition tool to fix that."
|
404 |
-
msgstr ""
|
405 |
-
|
406 |
-
msgid "We recommend to use both alt text and image title. The main advantage is that it helps search engines discover your images and display them in image search results. Plus, these tags improve the accessibility of your site and give more information about your images. Use our bulk image tool to quickly check and fix that."
|
407 |
-
msgstr ""
|
408 |
-
|
409 |
-
msgid "It is highly recommended to update or add new content on your website quite frequently. At least 3 updated or new content per month would be great :)"
|
410 |
-
msgstr ""
|
411 |
-
|
412 |
-
msgid "Social networks meta"
|
413 |
-
msgstr ""
|
414 |
-
|
415 |
-
msgid "Activate social edition"
|
416 |
-
msgstr ""
|
417 |
-
|
418 |
-
msgid "Permalinks settings"
|
419 |
-
msgstr ""
|
420 |
-
|
421 |
-
msgid "HTML image resizing"
|
422 |
-
msgstr ""
|
423 |
-
|
424 |
-
msgid "Image title/alt"
|
425 |
-
msgstr ""
|
426 |
-
|
427 |
-
msgid "New or updated content"
|
428 |
-
msgstr ""
|
429 |
-
|
430 |
-
msgid "WP Meta SEO dashboard"
|
431 |
-
msgstr ""
|
432 |
-
|
433 |
-
msgid "Latest WP Meta SEO News"
|
434 |
-
msgstr ""
|
435 |
-
|
436 |
-
msgid "All Posts"
|
437 |
-
msgstr ""
|
438 |
-
|
439 |
-
msgid "We can't get rank of this site from Alexa.com!"
|
440 |
-
msgstr ""
|
441 |
-
|
442 |
-
msgid "Activate meta block edition below content"
|
443 |
-
msgstr ""
|
444 |
-
|
445 |
-
msgid "Well! This image is so good now."
|
446 |
-
msgstr ""
|
447 |
-
|
448 |
-
msgid "The default card type to use"
|
449 |
-
msgstr ""
|
450 |
-
|
451 |
-
msgid "Be careful you installed 2 extensions doing almost the same thing, please deactivate AIOSEO or Yoast in order to work more clearly!"
|
452 |
-
msgstr ""
|
453 |
-
|
454 |
-
msgid "We have found that you’re using All In One Pack Plugin, WP Meta SEO can import the meta from this plugin, %s"
|
455 |
-
msgstr ""
|
456 |
-
|
457 |
-
msgid "File name already given!"
|
458 |
-
msgstr ""
|
459 |
-
|
460 |
-
msgid "We found 0 image which needed to add or change meta information"
|
461 |
-
msgstr ""
|
462 |
-
|
463 |
-
msgid "The post is not existed, please choose one another!"
|
464 |
-
msgstr ""
|
465 |
-
|
466 |
-
msgid "Image name was changed"
|
467 |
-
msgstr ""
|
468 |
-
|
469 |
-
msgid "File is not existed"
|
470 |
-
msgstr ""
|
471 |
-
|
472 |
-
msgid "There is a problem when update image meta!"
|
473 |
-
msgstr ""
|
474 |
-
|
475 |
-
msgid "The post has been deleted before, please check again!"
|
476 |
-
msgstr ""
|
477 |
-
|
478 |
-
msgid " This is a rendering of what this post might look like in Google's search results."
|
479 |
-
msgstr ""
|
480 |
-
|
481 |
-
msgid "This post is not existed or deleted, please choose one another!"
|
482 |
-
msgstr ""
|
483 |
-
|
484 |
-
msgid "Opps! An error occured when updating the post, please try again"
|
485 |
-
msgstr ""
|
486 |
-
|
487 |
-
msgid "Upload Image"
|
488 |
-
msgstr ""
|
489 |
-
|
490 |
-
msgid "WP Meta SEO - Page optimization"
|
491 |
-
msgstr ""
|
492 |
-
|
493 |
-
msgid "Meta title was saved"
|
494 |
-
msgstr ""
|
495 |
-
|
496 |
-
msgid "Content Meta"
|
497 |
-
msgstr ""
|
498 |
-
|
499 |
-
msgid "Meta keywords was saved"
|
500 |
-
msgstr ""
|
501 |
-
|
502 |
-
msgid "Force SEO validation"
|
503 |
-
msgstr ""
|
504 |
-
|
505 |
-
msgid "Allow user to force on page SEO criteria validation by clicking on the icon"
|
506 |
-
msgstr ""
|
507 |
-
|
508 |
-
msgid "Meta keywords"
|
509 |
-
msgstr ""
|
510 |
-
|
511 |
-
msgid "Active meta keywords"
|
512 |
-
msgstr ""
|
513 |
-
|
514 |
-
msgid "Link text field"
|
515 |
-
msgstr ""
|
516 |
-
|
517 |
-
msgid "Adds back the missing 'title' field in the Insert/Edit URL box"
|
518 |
-
msgstr ""
|
519 |
-
|
520 |
-
msgid "Link titles"
|
521 |
-
msgstr ""
|
522 |
-
|
523 |
-
msgid "The link title attribute does not have any SEO value for links. BUT links titles can influence click behavior for users, which may indirectly affect your SEO performance"
|
524 |
-
msgstr ""
|
525 |
-
|
526 |
-
msgid "Links title completed"
|
527 |
-
msgstr ""
|
528 |
-
|
529 |
-
msgid "Saved."
|
530 |
-
msgstr ""
|
531 |
-
|
532 |
-
msgid "Error."
|
533 |
-
msgstr ""
|
534 |
-
|
535 |
-
msgid "Source"
|
536 |
-
msgstr ""
|
537 |
-
|
538 |
-
msgid "URL"
|
539 |
-
msgstr ""
|
540 |
-
|
541 |
-
msgid "Link title"
|
542 |
-
msgstr ""
|
543 |
-
|
544 |
-
msgid "Link text"
|
545 |
-
msgstr ""
|
546 |
-
|
547 |
-
msgid "Link editor"
|
548 |
-
msgstr ""
|
549 |
-
|
550 |
-
msgid "Meta title as page title"
|
551 |
-
msgstr ""
|
552 |
-
|
553 |
-
msgid "When meta title is filled use it as page title instead of the content title"
|
554 |
-
msgstr ""
|
555 |
-
|
556 |
-
msgid "It’s better using a permalink structure that is adding in your URL the category name and content title. This parameter can be changed in Settings > Permalinks WordPress menu. Tag recommended is %category%/%postname%"
|
557 |
-
msgstr ""
|
558 |
-
|
559 |
-
msgid "Meta descriptions are displayed in search engine results as a page description. It’s a good thing for SEO to have some custom and attractive ones. Be sure to fill at least the meta information on your most popular pages."
|
560 |
-
msgstr ""
|
561 |
-
|
562 |
-
msgid "Meta titles are displayed in search engine results as a page title. It’s a good thing for SEO to have some custom and attractive ones. Be sure to fill at least the met information on your most popular pages"
|
563 |
-
msgstr ""
|
564 |
-
|
565 |
-
msgid "A website with a bunch of 404 errors doesn’t provide a good user experience, which is significantly important in content marketing and SEO. We recommend to use our internal broken link checker and redirect tool to fix all the 404 error you can periodically."
|
566 |
-
msgstr ""
|
567 |
-
|
568 |
-
msgid "Index internal broken links"
|
569 |
-
msgstr ""
|
570 |
-
|
571 |
-
msgid "Type or Link text"
|
572 |
-
msgstr ""
|
573 |
-
|
574 |
-
msgid "Hits number"
|
575 |
-
msgstr ""
|
576 |
-
|
577 |
-
msgid "Status"
|
578 |
-
msgstr ""
|
579 |
-
|
580 |
-
msgid "Allow search engines robots to index this content, as default your content is indexed"
|
581 |
-
msgstr ""
|
582 |
-
|
583 |
-
msgid "Provides show or do not show this page in search results in search results."
|
584 |
-
msgstr ""
|
585 |
-
|
586 |
-
msgid "Index"
|
587 |
-
msgstr ""
|
588 |
-
|
589 |
-
msgid "Follow"
|
590 |
-
msgstr ""
|
591 |
-
|
592 |
-
msgid "Re-index content links"
|
593 |
-
msgstr ""
|
594 |
-
|
595 |
-
msgid "Apply"
|
596 |
-
msgstr ""
|
597 |
-
|
598 |
-
msgid "-- Selection --"
|
599 |
-
msgstr ""
|
600 |
-
|
601 |
-
msgid "Follow selected"
|
602 |
-
msgstr ""
|
603 |
-
|
604 |
-
msgid "Nofollow selected"
|
605 |
-
msgstr ""
|
606 |
-
|
607 |
-
msgid "Follow all"
|
608 |
-
msgstr ""
|
609 |
-
|
610 |
-
msgid "Nofollow all"
|
611 |
-
msgstr ""
|
612 |
-
|
613 |
-
msgid "Link source"
|
614 |
-
msgstr ""
|
615 |
-
|
616 |
-
msgid "Internal"
|
617 |
-
msgstr ""
|
618 |
-
|
619 |
-
msgid "External"
|
620 |
-
msgstr ""
|
621 |
-
|
622 |
-
msgid "Post/Page follow"
|
623 |
-
msgstr ""
|
624 |
-
|
625 |
-
msgid "Post/Page index"
|
626 |
-
msgstr ""
|
627 |
-
|
628 |
-
msgid "Use ImageRecycle image compression plugin to activate this feature"
|
629 |
-
msgstr ""
|
630 |
-
|
631 |
-
msgid "Images represent around 60% of a web page weight. An image compression reduce the image size by up to 70% while preserving the same visual quality. Small loading time is great for SEO!"
|
632 |
-
msgstr ""
|
633 |
-
|
634 |
-
msgid "Product Type"
|
635 |
-
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
readme.txt
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
-
|
2 |
Contributors: JoomUnited
|
3 |
Tags: google, webmaster tools, keywords, meta, meta description, meta keywords, meta title, robots meta, search engine optimization, seo, wordpress seo, yahoo, image optimization, image resize, custom post seo, redirect, redirection, 301, broken link
|
4 |
Requires at least: 4.0
|
5 |
Tested up to: 4.7.2
|
6 |
-
Stable tag: 3.2.
|
7 |
License: GPLv2 or later
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
|
@@ -254,170 +254,163 @@ It could be! if you have a lot of pages that need to be indexed with no specific
|
|
254 |
|
255 |
== Changelog ==
|
256 |
|
|
|
|
|
|
|
|
|
257 |
= 3.2.5 =
|
258 |
-
* Check DOM PHP activation install to avoid fatal error
|
259 |
-
* Fix
|
260 |
|
261 |
= 3.2.4 =
|
262 |
-
* WP Meta SEO Addon compatibility
|
263 |
-
* Fix
|
264 |
|
265 |
= 3.2.3 =
|
266 |
-
* Fix
|
267 |
-
* Fix
|
268 |
-
* Fix
|
269 |
-
* Fix
|
270 |
-
* Fix
|
271 |
-
* Fix German
|
272 |
|
273 |
= 3.2.2 =
|
274 |
-
* Fix
|
275 |
-
* Fix
|
276 |
|
277 |
= 3.2.1 =
|
278 |
-
*
|
279 |
|
280 |
= 3.2.0 =
|
281 |
-
* Enable Google Analytics tracking with token access
|
282 |
-
* Tracking options to exclude WordPress user groups from analytics
|
283 |
-
* File download statistics activation
|
284 |
-
* Display Analytics statistics: session, users, organic...
|
285 |
-
|
286 |
-
= 3.1.0 =
|
287 |
-
* Whole code optimization regarding plugin performance
|
288 |
-
* Add SQL query optimization regarding plugin performance
|
289 |
-
* Add Sanitize elements prints on frontend (XSS)
|
290 |
-
* Test and optimize the plugin to work on website with huge amount of content and small resources
|
291 |
-
* Fix save and generate new sitemap
|
292 |
-
* Fix warning with PHP 7.0
|
293 |
|
294 |
= 3.0.2 =
|
295 |
-
* Add Import meta from Yoast premium plugin
|
296 |
-
* Fix
|
297 |
|
298 |
= 3.0.1 =
|
299 |
-
* Fix XML menu generation don't handle menu levels
|
300 |
-
* Fix
|
301 |
-
* Fix
|
302 |
-
* Fix
|
303 |
|
304 |
= 3.0.0 =
|
305 |
-
* Add XML sitemap feature
|
306 |
-
* Add HTML sitemap feature
|
307 |
-
* Add sitemap source: menus (any content), post, page, category, author
|
308 |
-
* Add HTML sitemap content position in page
|
309 |
-
* Add XML sitemap copy option on root option
|
310 |
-
* Add XML sitemap link in robot.txt option
|
311 |
-
* Add help text for all the sitemap parameters
|
312 |
-
* Add help text for all the global parameters
|
313 |
-
* Add AJAX sitemap regeneration
|
314 |
|
315 |
= 2.2.1 =
|
316 |
-
* Update sql sentences to improve query speed
|
317 |
|
318 |
= 2.2.0 =
|
319 |
-
* Follow/Nofollow bulk link edition
|
320 |
-
* Link re-index tool from the bulk link editor
|
321 |
-
* Follow/Nofollow on Wordpress content (onpage SEO)
|
322 |
-
* Index/Noindex on Wordpress content (onpage SEO)
|
323 |
|
324 |
= 2.1.0 =
|
325 |
-
* Add ImageRecycle images and PDF compression integration (www.imagerecycle.com)
|
326 |
|
327 |
= 2.0.3 =
|
328 |
-
* Fix On page analysis return wrong result on header title in content
|
329 |
-
* Fix Update language on image
|
330 |
|
331 |
= 2.0.2 =
|
332 |
-
* Fix Detect new type of 404 and add tooltip
|
333 |
-
* Fix
|
334 |
-
* Fix Autosaving too fast in safari or firefox
|
335 |
|
336 |
= 2.0.1 =
|
337 |
-
* Fix
|
338 |
|
339 |
= 2.0.0 =
|
340 |
-
* Add 404 and redirect manager
|
341 |
-
* Add Options to redirect all 404 to home page
|
342 |
-
* Add Setup 404 page as: WP Meta SEO page, custom page,
|
343 |
|
344 |
= 1.7.3 =
|
345 |
-
* Fix og: link broken (facebook)
|
346 |
|
347 |
= 1.7.2 =
|
348 |
-
* Page title as content title or as SEO meta title (option)
|
349 |
|
350 |
= 1.7.1 =
|
351 |
-
*
|
352 |
-
*
|
353 |
|
354 |
= 1.7.0 =
|
355 |
-
* Add link SEO title field in link editor tool
|
356 |
-
* Add a SEO bulk edition view on your links titles (of all your content)
|
357 |
-
* Automatic meta SEO addition for category view: add category title as meta title and category description as meta description
|
358 |
-
* Add SEO dashboard check for link titles
|
359 |
-
* Fix WooCommerce meta description and title in category view (automatic)
|
360 |
-
* Fix WP Meta SEO language to be conform to plugin directory translation tool
|
361 |
|
362 |
= 1.6.0 =
|
363 |
-
* Add meta keywords edition in bulk editor
|
364 |
-
* Add option to for SEO criteria validation
|
365 |
|
366 |
= 1.5.1 =
|
367 |
-
* Fix
|
368 |
-
* Fix
|
369 |
|
370 |
= 1.5.0 =
|
371 |
-
* Add help tooltip to explain on page validation SEO criteria
|
372 |
-
* Add help tooltip to explain dashboard SEO parameters
|
373 |
-
* Put snippet preview title in a column on SEO bulk view edition
|
374 |
-
* Add SEO and check notification for robot.txt that lock search engine
|
375 |
-
* Update EN and FR language files
|
376 |
|
377 |
= 1.4.0 =
|
378 |
-
* Bulk copy new option: content title to meta title
|
379 |
-
* Bulk copy new option: image name to alt text
|
380 |
-
* Bulk copy new option: image name to image title
|
381 |
-
* Fix
|
382 |
-
* Fix SEO meta empty in some themes
|
383 |
|
384 |
= 1.3.0 =
|
385 |
-
* New SEO check dashboard
|
386 |
-
* Check for SEO permalinks
|
387 |
-
* Check for meta
|
388 |
-
* Check for
|
389 |
-
* Check for image
|
390 |
-
*
|
391 |
-
* Check for new content
|
392 |
|
393 |
= 1.2.0 =
|
394 |
-
* Change language to po/mo files
|
395 |
-
* Include .pot file and French language
|
396 |
-
* Setting for home page meta
|
397 |
-
* Bigger edit meta boxes
|
398 |
-
* Update icon of notification in meta view
|
399 |
|
400 |
= 1.1.0 =
|
401 |
-
* On page SEO analysis
|
402 |
-
* Social sharing custom content
|
403 |
-
|
404 |
-
= 1.0.5 =
|
405 |
-
* Title tag value is empty
|
406 |
|
407 |
= 1.0.4 =
|
408 |
-
* Check empty array
|
409 |
|
410 |
= 1.0.3 =
|
411 |
-
* Escape meta title and meta description
|
412 |
|
413 |
= 1.0.2 =
|
414 |
-
* Fix
|
415 |
|
416 |
= 1.0.1 =
|
417 |
-
* display (no title) in column title if post is no titled
|
418 |
|
419 |
= 1.0.0 =
|
420 |
-
* Initial release
|
|
|
421 |
|
422 |
|
423 |
== Upgrade Notice ==
|
1 |
+
=== WP Meta SEO ===
|
2 |
Contributors: JoomUnited
|
3 |
Tags: google, webmaster tools, keywords, meta, meta description, meta keywords, meta title, robots meta, search engine optimization, seo, wordpress seo, yahoo, image optimization, image resize, custom post seo, redirect, redirection, 301, broken link
|
4 |
Requires at least: 4.0
|
5 |
Tested up to: 4.7.2
|
6 |
+
Stable tag: 3.2.6
|
7 |
License: GPLv2 or later
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
|
254 |
|
255 |
== Changelog ==
|
256 |
|
257 |
+
= 3.2.6 =
|
258 |
+
* Add : Add builtin translation tool
|
259 |
+
* Fix : Wrong function used to get description length
|
260 |
+
|
261 |
= 3.2.5 =
|
262 |
+
* Add : Check DOM PHP activation install to avoid fatal error
|
263 |
+
* Fix : Image information edition with greek characters
|
264 |
|
265 |
= 3.2.4 =
|
266 |
+
* Add : WP Meta SEO Addon compatibility
|
267 |
+
* Fix : Conflict with DIVI layout injector plugin
|
268 |
|
269 |
= 3.2.3 =
|
270 |
+
* Fix : Image resize list does not refresh
|
271 |
+
* Fix : Meta image text replaced by image information
|
272 |
+
* Fix : Dashboard Alexa rank display
|
273 |
+
* Fix : Sharp URL suffix are detected as 404 by the redirect manager
|
274 |
+
* Fix : Phone numbers with '+' are detected as 404 by the redirect manager
|
275 |
+
* Fix : German characters are broken in the link manager
|
276 |
|
277 |
= 3.2.2 =
|
278 |
+
* Fix : Image information edition with a quote becomes empty
|
279 |
+
* Fix : Meta edition character count does not refresh using AJAX
|
280 |
|
281 |
= 3.2.1 =
|
282 |
+
* Add : Compatibility with WP Speed of Light plugin: https://www.joomunited.com/wordpress-products/wp-speed-of-light
|
283 |
|
284 |
= 3.2.0 =
|
285 |
+
* Add : Enable Google Analytics tracking with token access
|
286 |
+
* Add : Tracking options to exclude WordPress user groups from analytics
|
287 |
+
* Add : File download statistics activation
|
288 |
+
* Add : Display Analytics statistics: session, users, organic...
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
289 |
|
290 |
= 3.0.2 =
|
291 |
+
* Add : Add Import meta from Yoast premium plugin
|
292 |
+
* Fix : Font called from http instead of https from dashboard
|
293 |
|
294 |
= 3.0.1 =
|
295 |
+
* Fix : XML menu generation don't handle menu levels
|
296 |
+
* Fix : Mailto links are indexed as 404 error in the redirect manager
|
297 |
+
* Fix : PHP warning when link editor is activated in editor
|
298 |
+
* Fix : Secure code
|
299 |
|
300 |
= 3.0.0 =
|
301 |
+
* Add : Add XML sitemap feature
|
302 |
+
* Add : Add HTML sitemap feature
|
303 |
+
* Add : Add sitemap source: menus (any content), post, page, category, author
|
304 |
+
* Add : Add HTML sitemap content position in page
|
305 |
+
* Add : Add XML sitemap copy option on root option
|
306 |
+
* Add : Add XML sitemap link in robot.txt option
|
307 |
+
* Add : Add help text for all the sitemap parameters
|
308 |
+
* Add : Add help text for all the global parameters
|
309 |
+
* Add : Add AJAX sitemap regeneration
|
310 |
|
311 |
= 2.2.1 =
|
312 |
+
* Add : Update sql sentences to improve query speed
|
313 |
|
314 |
= 2.2.0 =
|
315 |
+
* Add : Follow/Nofollow bulk link edition
|
316 |
+
* Add : Link re-index tool from the bulk link editor
|
317 |
+
* Add : Follow/Nofollow on Wordpress content (onpage SEO)
|
318 |
+
* Add : Index/Noindex on Wordpress content (onpage SEO)
|
319 |
|
320 |
= 2.1.0 =
|
321 |
+
* Add : Add ImageRecycle images and PDF compression integration (https://www.imagerecycle.com)
|
322 |
|
323 |
= 2.0.3 =
|
324 |
+
* Fix : On page analysis return wrong result on header title in content
|
325 |
+
* Fix : Update language on image bulk edit view
|
326 |
|
327 |
= 2.0.2 =
|
328 |
+
* Fix : Detect new type of 404 and add tooltip
|
329 |
+
* Fix : Comment content not detected
|
330 |
+
* Fix : Autosaving too fast in safari or firefox
|
331 |
|
332 |
= 2.0.1 =
|
333 |
+
* Fix : Google font style on Safari browser
|
334 |
|
335 |
= 2.0.0 =
|
336 |
+
* Add : Add 404 and redirect manager
|
337 |
+
* Add : Add Options to redirect all 404 to home page
|
338 |
+
* Add : Add Setup 404 page as: WP Meta SEO page, custom page, default page
|
339 |
|
340 |
= 1.7.3 =
|
341 |
+
* Fix : og: link broken (facebook)
|
342 |
|
343 |
= 1.7.2 =
|
344 |
+
* Add : Page title as content title or as SEO meta title (option)
|
345 |
|
346 |
= 1.7.1 =
|
347 |
+
* Add : Edit separately the content title from the meta title (for search engine)
|
348 |
+
* Fix : Fix RSS feed is broken with WP Meta SEO 1.7.0
|
349 |
|
350 |
= 1.7.0 =
|
351 |
+
* Add : Add link SEO title field in link editor tool
|
352 |
+
* Add : Add a SEO bulk edition view on your links titles (of all your content)
|
353 |
+
* Add : Automatic meta SEO addition for category view: add category title as meta title and category description as meta description
|
354 |
+
* Add : Add SEO dashboard check for link titles
|
355 |
+
* Fix : WooCommerce meta description and title in category view (automatic)
|
356 |
+
* Fix : WP Meta SEO language to be conform to plugin directory translation tool
|
357 |
|
358 |
= 1.6.0 =
|
359 |
+
* Add : Add meta keywords edition in bulk editor
|
360 |
+
* Add : Add option to for SEO criteria validation
|
361 |
|
362 |
= 1.5.1 =
|
363 |
+
* Fix : Home page meta not working on some themes
|
364 |
+
* Fix : Break foreach when search title in SEO content (title in heading)
|
365 |
|
366 |
= 1.5.0 =
|
367 |
+
* Add : Add help tooltip to explain on page validation SEO criteria
|
368 |
+
* Add : Add help tooltip to explain dashboard SEO parameters
|
369 |
+
* Add : Put snippet preview title in a column on SEO bulk view edition
|
370 |
+
* Add : Add SEO and check notification for robot.txt that lock search engine
|
371 |
+
* Add : Update EN and FR language files
|
372 |
|
373 |
= 1.4.0 =
|
374 |
+
* Add : Bulk copy new option: content title to meta title
|
375 |
+
* Add : Bulk copy new option: image name to alt text
|
376 |
+
* Add : Bulk copy new option: image name to image title
|
377 |
+
* Fix : Twitter card on SEO on page optimization
|
378 |
+
* Fix : SEO meta empty in some themes
|
379 |
|
380 |
= 1.3.0 =
|
381 |
+
* Add : New SEO check dashboard
|
382 |
+
* Add : Check for SEO permalinks
|
383 |
+
* Add : Check for meta description
|
384 |
+
* Add : Check for image HTML resizing
|
385 |
+
* Add : Check for image SEO: title, alt and description
|
386 |
+
* Add : Check for new content
|
|
|
387 |
|
388 |
= 1.2.0 =
|
389 |
+
* Add : Change language to po/mo files
|
390 |
+
* Add : Include .pot file and French language
|
391 |
+
* Add : Setting for home page meta
|
392 |
+
* Add : Bigger edit meta boxes
|
393 |
+
* Add : Update icon of notification in meta view
|
394 |
|
395 |
= 1.1.0 =
|
396 |
+
* Add : On page SEO analysis
|
397 |
+
* Add : Social sharing custom content
|
|
|
|
|
|
|
398 |
|
399 |
= 1.0.4 =
|
400 |
+
* Fix : Check empty array
|
401 |
|
402 |
= 1.0.3 =
|
403 |
+
* Fix : Escape meta title and meta description
|
404 |
|
405 |
= 1.0.2 =
|
406 |
+
* Fix : Filter broken and icons broken
|
407 |
|
408 |
= 1.0.1 =
|
409 |
+
* Fix : display (no title) in column title if post is no titled
|
410 |
|
411 |
= 1.0.0 =
|
412 |
+
* Add : Initial release
|
413 |
+
|
414 |
|
415 |
|
416 |
== Upgrade Notice ==
|
wp-meta-seo.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
* Plugin Name: WP Meta SEO
|
5 |
* Plugin URI: http://www.joomunited.com/wordpress-products/wp-meta-seo
|
6 |
* Description: WP Meta SEO is a plugin for WordPress to fill meta for content, images and main SEO info in a single view.
|
7 |
-
* Version: 3.2.
|
8 |
* Text Domain: wp-meta-seo
|
9 |
* Domain Path: /languages
|
10 |
* Author: JoomUnited
|
@@ -36,6 +36,35 @@ if (!function_exists('add_action')) {
|
|
36 |
exit;
|
37 |
}
|
38 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
if (!defined('WPMETASEO_MINIMUM_WP_VERSION'))
|
40 |
define('WPMETASEO_MINIMUM_WP_VERSION', '3.1');
|
41 |
if (!defined('WPMETASEO_PLUGIN_URL'))
|
@@ -46,7 +75,7 @@ if (!defined('URL'))
|
|
46 |
define('URL', get_site_url());
|
47 |
|
48 |
if (!defined('WPMSEO_VERSION')) {
|
49 |
-
define('WPMSEO_VERSION', '3.2.
|
50 |
}
|
51 |
|
52 |
if (!defined('WPMS_CLIENTID')) {
|
4 |
* Plugin Name: WP Meta SEO
|
5 |
* Plugin URI: http://www.joomunited.com/wordpress-products/wp-meta-seo
|
6 |
* Description: WP Meta SEO is a plugin for WordPress to fill meta for content, images and main SEO info in a single view.
|
7 |
+
* Version: 3.2.6
|
8 |
* Text Domain: wp-meta-seo
|
9 |
* Domain Path: /languages
|
10 |
* Author: JoomUnited
|
36 |
exit;
|
37 |
}
|
38 |
|
39 |
+
if (version_compare(PHP_VERSION, '5.3', '<')) {
|
40 |
+
if( !function_exists('wpms_disable_plugin') ){
|
41 |
+
function wpms_disable_plugin(){
|
42 |
+
if ( current_user_can('activate_plugins') && is_plugin_active( plugin_basename( __FILE__ ) ) ) {
|
43 |
+
deactivate_plugins( __FILE__ );
|
44 |
+
unset( $_GET['activate'] );
|
45 |
+
}
|
46 |
+
}
|
47 |
+
}
|
48 |
+
|
49 |
+
if( !function_exists('wpms_show_error') ){
|
50 |
+
function wpms_show_error(){
|
51 |
+
echo '<div class="error"><p><strong>WP Meta SEO</strong> need at least PHP 5.3 version, please update php before installing the plugin.</p></div>';
|
52 |
+
}
|
53 |
+
}
|
54 |
+
|
55 |
+
//Add actions
|
56 |
+
add_action( 'admin_init', 'wpms_disable_plugin' );
|
57 |
+
add_action( 'admin_notices', 'wpms_show_error' );
|
58 |
+
|
59 |
+
//Do not load anything more
|
60 |
+
return;
|
61 |
+
}
|
62 |
+
|
63 |
+
//Include the jutranslation helpers
|
64 |
+
include_once('jutranslation' . DIRECTORY_SEPARATOR . 'jutranslation.php');
|
65 |
+
\Joomunited\WPMetaSEO\Jutranslation\Jutranslation::init(__FILE__, 'wp-meta-seo', 'WP Meta SEO', 'wp-meta-seo', DIRECTORY_SEPARATOR . 'languages' . DIRECTORY_SEPARATOR . 'wp-meta-seo-en_US.mo');
|
66 |
+
|
67 |
+
|
68 |
if (!defined('WPMETASEO_MINIMUM_WP_VERSION'))
|
69 |
define('WPMETASEO_MINIMUM_WP_VERSION', '3.1');
|
70 |
if (!defined('WPMETASEO_PLUGIN_URL'))
|
75 |
define('URL', get_site_url());
|
76 |
|
77 |
if (!defined('WPMSEO_VERSION')) {
|
78 |
+
define('WPMSEO_VERSION', '3.2.6');
|
79 |
}
|
80 |
|
81 |
if (!defined('WPMS_CLIENTID')) {
|