mirror of
https://github.com/WenPai-org/bulk-plugin-installer.git
synced 2025-08-03 01:58:43 +08:00
升级至 1.1.8 稳定版本,添加语言包
This commit is contained in:
parent
4b16ef8556
commit
5e805c2237
10 changed files with 1283 additions and 84 deletions
|
@ -207,4 +207,9 @@
|
|||
|
||||
.retry-btn:hover {
|
||||
background: #005a87;
|
||||
}
|
||||
|
||||
.upload.button {
|
||||
margin-left: 10px;
|
||||
vertical-align: top;
|
||||
}
|
|
@ -1,6 +1,16 @@
|
|||
jQuery(document).ready(function($) {
|
||||
const $results = $('#installation-results');
|
||||
|
||||
// Handle URL parameter for tab selection
|
||||
const urlParams = new URLSearchParams(window.location.search);
|
||||
const tab = urlParams.get('tab');
|
||||
if (tab) {
|
||||
$('.bpi-tab').removeClass('active');
|
||||
$('.bpi-tab[data-tab="' + tab + '"]').addClass('active');
|
||||
$('.bpi-tab-content').removeClass('active').hide();
|
||||
$('#' + tab).addClass('active').show();
|
||||
}
|
||||
|
||||
$('.bpi-tab').on('click', function() {
|
||||
$('.bpi-tab').removeClass('active');
|
||||
$(this).addClass('active');
|
||||
|
@ -92,7 +102,7 @@ jQuery(document).ready(function($) {
|
|||
const $fileInput = $form.find('input[type="file"]');
|
||||
const files = $fileInput[0].files;
|
||||
if (!files || files.length === 0) {
|
||||
errorMessage = 'Please select at least one ZIP file.';
|
||||
errorMessage = bpiAjax.i18n.no_files;
|
||||
} else {
|
||||
items = Array.from(files).map(file => file.name);
|
||||
}
|
||||
|
@ -103,8 +113,8 @@ jQuery(document).ready(function($) {
|
|||
.filter(item => item.length > 0);
|
||||
if (items.length === 0) {
|
||||
errorMessage = (type === 'repository' || type === 'wenpai') ?
|
||||
'Please enter at least one slug.' :
|
||||
'Please enter at least one URL.';
|
||||
bpiAjax.i18n.no_slugs :
|
||||
bpiAjax.i18n.no_urls;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -114,7 +124,7 @@ jQuery(document).ready(function($) {
|
|||
}
|
||||
|
||||
$submitButton.prop('disabled', true).text('Installing...');
|
||||
$results.html(`<div class="notice notice-info"><p>Installation in progress... (Large ZIP files may take some time)</p><div class="progress-count">0/${items.length} completed (0% done, ${items.length} remaining)</div><ul class="installation-list"></ul></div>`);
|
||||
$results.html(`<div class="notice notice-info"><p>${bpiAjax.i18n.installation_in_progress}</p><div class="progress-count">0/${items.length} ${bpiAjax.i18n.completed} (0% done, ${items.length} ${bpiAjax.i18n.remaining})</div><ul class="installation-list"></ul></div>`);
|
||||
|
||||
const $list = $results.find('.installation-list');
|
||||
const $progress = $results.find('.progress-count');
|
||||
|
@ -133,19 +143,19 @@ jQuery(document).ready(function($) {
|
|||
processData: false,
|
||||
contentType: false,
|
||||
success: function(response) {
|
||||
console.log('Upload response:', response); // 调试输出
|
||||
console.log('Upload response:', response);
|
||||
if (response.success) {
|
||||
Object.keys(response.data).forEach((item, index) => {
|
||||
handleResponse(response, item, index);
|
||||
});
|
||||
} else {
|
||||
$list.append(`<li><span class="item-name">Upload Error</span><span class="status error">✗ ${escapeHtml(response.data || 'Unknown upload error')}</span></li>`);
|
||||
$list.append(`<li><span class="item-name">${escapeHtml('Upload Error')}</span><span class="status error">✗ ${escapeHtml(response.data || 'Unknown upload error')}</span></li>`);
|
||||
}
|
||||
installationComplete();
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
console.log('Upload error:', xhr, status, error); // 调试输出
|
||||
$list.append(`<li><span class="item-name">Upload Error</span><span class="status error">✗ ${escapeHtml(xhr.responseText || error)}</span></li>`);
|
||||
console.log('Upload error:', xhr, status, error);
|
||||
$list.append(`<li><span class="item-name">${escapeHtml('Upload Error')}</span><span class="status error">✗ ${escapeHtml(xhr.responseText || error)}</span></li>`);
|
||||
installationComplete();
|
||||
}
|
||||
});
|
||||
|
@ -172,12 +182,12 @@ jQuery(document).ready(function($) {
|
|||
install_type: type
|
||||
},
|
||||
success: function(response) {
|
||||
console.log('Item response:', response); // 调试输出
|
||||
console.log('Item response:', response);
|
||||
handleResponse(response, item, index);
|
||||
processNextItem(index + 1);
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
console.log('Item error:', xhr, status, error); // 调试输出
|
||||
console.log('Item error:', xhr, status, error);
|
||||
handleError(xhr, status, error, item, index);
|
||||
processNextItem(index + 1);
|
||||
}
|
||||
|
@ -197,20 +207,20 @@ jQuery(document).ready(function($) {
|
|||
} else {
|
||||
statusHtml = '✗ ' + escapeHtml(result.message);
|
||||
if (result.retry) {
|
||||
statusHtml += ' <button class="retry-btn" data-item="' + escapeHtml(item) + '" data-type="' + type + '">Retry</button>';
|
||||
statusHtml += ' <button class="retry-btn" data-item="' + escapeHtml(item) + '" data-type="' + type + '">' + bpiAjax.i18n.retry + '</button>';
|
||||
}
|
||||
}
|
||||
$item.find('.status').html(statusHtml);
|
||||
} else {
|
||||
$item.addClass('error')
|
||||
.find('.status')
|
||||
.html('✗ ' + escapeHtml(response.data || 'Unknown error') + ' <button class="retry-btn" data-item="' + escapeHtml(item) + '" data-type="' + type + '">Retry</button>');
|
||||
.html('✗ ' + escapeHtml(response.data || 'Unknown error') + ' <button class="retry-btn" data-item="' + escapeHtml(item) + '" data-type="' + type + '">' + bpiAjax.i18n.retry + '</button>');
|
||||
}
|
||||
|
||||
completed++;
|
||||
const percentage = Math.round((completed / items.length) * 100);
|
||||
const remaining = items.length - completed;
|
||||
$progress.text(`${completed}/${items.length} completed (${percentage}% done, ${remaining} remaining)`);
|
||||
$progress.text(`${completed}/${items.length} ${bpiAjax.i18n.completed} (${percentage}% done, ${remaining} ${bpiAjax.i18n.remaining})`);
|
||||
}
|
||||
|
||||
function handleError(xhr, status, error, item, index) {
|
||||
|
@ -218,17 +228,17 @@ jQuery(document).ready(function($) {
|
|||
$item.find('.spinner').removeClass('is-active')
|
||||
.addClass('error')
|
||||
.find('.status')
|
||||
.html(`✗ ${escapeHtml(xhr.responseText || 'Installation failed: ' + error)} <button class="retry-btn" data-item="${escapeHtml(item)}" data-type="${type}">Retry</button>`);
|
||||
.html(`✗ ${escapeHtml(xhr.responseText || 'Installation failed: ' + error)} <button class="retry-btn" data-item="${escapeHtml(item)}" data-type="${type}">${bpiAjax.i18n.retry}</button>`);
|
||||
completed++;
|
||||
const percentage = Math.round((completed / items.length) * 100);
|
||||
const remaining = items.length - completed;
|
||||
$progress.text(`${completed}/${items.length} completed (${percentage}% done, ${remaining} remaining)`);
|
||||
$progress.text(`${completed}/${items.length} ${bpiAjax.i18n.completed} (${percentage}% done, ${remaining} ${bpiAjax.i18n.remaining})`);
|
||||
}
|
||||
|
||||
function installationComplete() {
|
||||
$submitButton.prop('disabled', false).text(`Install ${action === 'bpi_install_plugins' ? 'Plugins' : 'Themes'}`);
|
||||
const $notice = $results.find('.notice').removeClass('notice-info').addClass('notice-success');
|
||||
$notice.find('p').html('Installation completed! Check the results below. Failed items can be retried using the "Retry" buttons if applicable.');
|
||||
$notice.find('p').html(bpiAjax.i18n.installation_complete);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -251,7 +261,7 @@ jQuery(document).ready(function($) {
|
|||
install_type: type
|
||||
},
|
||||
success: function(response) {
|
||||
console.log('Retry response:', response); // 调试输出
|
||||
console.log('Retry response:', response);
|
||||
$li.find('.spinner').removeClass('is-active');
|
||||
if (response.success && response.data[item]) {
|
||||
const result = response.data[item];
|
||||
|
@ -262,22 +272,22 @@ jQuery(document).ready(function($) {
|
|||
} else {
|
||||
statusHtml = '✗ ' + escapeHtml(result.message);
|
||||
if (result.retry) {
|
||||
statusHtml += ' <button class="retry-btn" data-item="' + escapeHtml(item) + '" data-type="' + type + '">Retry</button>';
|
||||
statusHtml += ' <button class="retry-btn" data-item="' + escapeHtml(item) + '" data-type="' + type + '">' + bpiAjax.i18n.retry + '</button>';
|
||||
}
|
||||
}
|
||||
$li.find('.status').html(statusHtml);
|
||||
} else {
|
||||
$li.addClass('error')
|
||||
.find('.status')
|
||||
.html('✗ ' + escapeHtml(response.data || 'Unknown error') + ' <button class="retry-btn" data-item="' + escapeHtml(item) + '" data-type="' + type + '">Retry</button>');
|
||||
.html('✗ ' + escapeHtml(response.data || 'Unknown error') + ' <button class="retry-btn" data-item="' + escapeHtml(item) + '" data-type="' + type + '">' + bpiAjax.i18n.retry + '</button>');
|
||||
}
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
console.log('Retry error:', xhr, status, error); // 调试输出
|
||||
console.log('Retry error:', xhr, status, error);
|
||||
$li.find('.spinner').removeClass('is-active')
|
||||
.addClass('error')
|
||||
.find('.status')
|
||||
.html(`✗ ${escapeHtml(xhr.responseText || 'Retry failed: ' + error)} <button class="retry-btn" data-item="${escapeHtml(item)}" data-type="${type}">Retry</button>`);
|
||||
.html(`✗ ${escapeHtml(xhr.responseText || 'Retry failed: ' + error)} <button class="retry-btn" data-item="${escapeHtml(item)}" data-type="${type}">${bpiAjax.i18n.retry}</button>`);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
* Plugin Name: Bulk Plugin Installer
|
||||
* Plugin URI: https://wpmultisite.com/plugins/bulk-plugin-installer/
|
||||
* Description: Bulk install WordPress plugins and themes from repository, URL, or ZIP uploads.
|
||||
* Version: 1.1.7
|
||||
* Version: 1.1.8
|
||||
* Author: WPMultisite.com
|
||||
* Author URI: https://wpmultisite.com
|
||||
* Network: true
|
||||
|
@ -18,7 +18,7 @@ if (!defined('WPINC')) {
|
|||
die;
|
||||
}
|
||||
|
||||
define('BPI_VERSION', '1.1.7');
|
||||
define('BPI_VERSION', '1.1.8');
|
||||
define('BPI_PATH', plugin_dir_path(__FILE__));
|
||||
define('BPI_URL', plugin_dir_url(__FILE__));
|
||||
|
||||
|
@ -67,16 +67,14 @@ function bpi_add_network_submenu_page() {
|
|||
define('BPI_ALLOWED_ROLES', ['administrator', 'super_admin']);
|
||||
define('BPI_TRUSTED_DOMAINS', [
|
||||
'wordpress.org',
|
||||
'downloads.wordpress.org',
|
||||
'github.com',
|
||||
'raw.githubusercontent.com',
|
||||
'wenpai.cn',
|
||||
'wenpai.net',
|
||||
'wenpai.org',
|
||||
'downloads.wenpai.net',
|
||||
'weixiaoduo.com',
|
||||
'feibisi.com',
|
||||
'feicode.com'
|
||||
'feicode.com',
|
||||
'github.com',
|
||||
'raw.githubusercontent.com'
|
||||
]);
|
||||
|
||||
function bpi_register_settings() {
|
||||
|
@ -357,4 +355,38 @@ function bpi_activate() {
|
|||
'last_install_time' => ''
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Add "Upload from URL" button to plugin install page
|
||||
function bpi_add_plugin_url_upload_button() {
|
||||
if (bpi_user_can_install()) {
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
jQuery(document).ready(function($) {
|
||||
// 在插件上传按钮后添加URL上传按钮
|
||||
$('.wp-header-end').before(
|
||||
'<a href="<?php echo admin_url("plugins.php?page=bulk-plugin-installer&tab=plugins&install_type=url"); ?>" class="page-title-action"><?php _e("Upload from URL", "bulk-plugin-installer"); ?></a>'
|
||||
);
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
add_action('admin_footer-plugin-install.php', 'bpi_add_plugin_url_upload_button');
|
||||
|
||||
// Add "Upload from URL" button to theme install page
|
||||
function bpi_add_theme_url_upload_button() {
|
||||
if (bpi_user_can_install()) {
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
jQuery(document).ready(function($) {
|
||||
// 在主题上传按钮后添加URL上传按钮
|
||||
$('.wp-header-end').before(
|
||||
'<a href="<?php echo admin_url("plugins.php?page=bulk-plugin-installer&tab=themes&install_type=url"); ?>" class="page-title-action"><?php _e("Upload from URL", "bulk-plugin-installer"); ?></a>'
|
||||
);
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
add_action('admin_footer-theme-install.php', 'bpi_add_theme_url_upload_button');
|
||||
|
|
|
@ -6,7 +6,7 @@ function bpi_render_admin_page() {
|
|||
|
||||
wp_enqueue_style('bpi-admin-style', BPI_URL . 'assets/css/admin.css', [], BPI_VERSION);
|
||||
wp_enqueue_script('bpi-admin', BPI_URL . 'assets/js/admin.js', ['jquery'], BPI_VERSION, true);
|
||||
|
||||
|
||||
$i18n_strings = [
|
||||
'go_to_settings' => __('Go to Settings to add domain', 'bulk-plugin-installer'),
|
||||
'switch_to_themes' => __('Switch to Themes tab', 'bulk-plugin-installer'),
|
||||
|
@ -20,7 +20,7 @@ function bpi_render_admin_page() {
|
|||
'no_slugs' => __('Please enter at least one slug.', 'bulk-plugin-installer'),
|
||||
'no_urls' => __('Please enter at least one URL.', 'bulk-plugin-installer')
|
||||
];
|
||||
|
||||
|
||||
wp_localize_script('bpi-admin', 'bpiAjax', [
|
||||
'nonce' => wp_create_nonce('bpi_installer'),
|
||||
'ajaxurl' => admin_url('admin-ajax.php'),
|
||||
|
@ -238,4 +238,4 @@ function bpi_render_admin_page() {
|
|||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
}
|
|
@ -1,36 +1,38 @@
|
|||
<?php
|
||||
class BPI_Installer {
|
||||
private $wp_filesystem;
|
||||
|
||||
private $error_messages = [
|
||||
// Plugin error codes
|
||||
1001 => 'Invalid plugin slug format. Please use only lowercase letters, numbers and hyphens.',
|
||||
1004 => 'Invalid URL format. Please provide a complete URL including http:// or https://',
|
||||
1005 => 'The domain is not in the trusted list. Please add it in settings or use another source.',
|
||||
1007 => 'Only ZIP files are allowed for plugin uploads.',
|
||||
1009 => 'This appears to be a theme ZIP file. Please use the Themes tab for installation.',
|
||||
1010 => 'The uploaded file is not a valid WordPress plugin ZIP.',
|
||||
|
||||
// Theme error codes
|
||||
2001 => 'Invalid theme slug format. Please use only lowercase letters, numbers and hyphens.',
|
||||
2003 => 'Only ZIP files are allowed for theme uploads.',
|
||||
2005 => 'This appears to be a plugin ZIP file. Please use the Plugins tab for installation.',
|
||||
2006 => 'The uploaded file is not a valid WordPress theme ZIP.',
|
||||
2009 => 'Invalid URL format for theme. Please provide a complete URL including http:// or https://',
|
||||
2010 => 'The domain is not in the trusted list for themes. Please add it in settings or use another source.'
|
||||
];
|
||||
private $error_messages = []; // Initialize as empty array
|
||||
|
||||
public function __construct() {
|
||||
global $wp_filesystem;
|
||||
if (empty($wp_filesystem)) {
|
||||
require_once ABSPATH . '/wp-admin/includes/file.php';
|
||||
if (!WP_Filesystem()) {
|
||||
throw new Exception('Unable to initialize filesystem. Please check server permissions.');
|
||||
throw new Exception(__('Unable to initialize filesystem. Please check server permissions.', 'bulk-plugin-installer'));
|
||||
}
|
||||
}
|
||||
$this->wp_filesystem = $wp_filesystem;
|
||||
|
||||
// Initialize error messages with translations in the constructor
|
||||
$this->error_messages = [
|
||||
// Plugin error codes
|
||||
1001 => __('Invalid plugin slug format. Please use only lowercase letters, numbers and hyphens.', 'bulk-plugin-installer'),
|
||||
1004 => __('Invalid URL format. Please provide a complete URL including http:// or https://', 'bulk-plugin-installer'),
|
||||
1005 => __('The domain is not in the trusted list. Please add it in settings or use another source.', 'bulk-plugin-installer'),
|
||||
1007 => __('Only ZIP files are allowed for plugin uploads.', 'bulk-plugin-installer'),
|
||||
1009 => __('This appears to be a theme ZIP file. Please use the Themes tab for installation.', 'bulk-plugin-installer'),
|
||||
1010 => __('The uploaded file is not a valid WordPress plugin ZIP.', 'bulk-plugin-installer'),
|
||||
// Theme error codes
|
||||
2001 => __('Invalid theme slug format. Please use only lowercase letters, numbers and hyphens.', 'bulk-plugin-installer'),
|
||||
2003 => __('Only ZIP files are allowed for theme uploads.', 'bulk-plugin-installer'),
|
||||
2005 => __('This appears to be a plugin ZIP file. Please use the Plugins tab for installation.', 'bulk-plugin-installer'),
|
||||
2006 => __('The uploaded file is not a valid WordPress theme ZIP.', 'bulk-plugin-installer'),
|
||||
2009 => __('Invalid URL format for theme. Please provide a complete URL including http:// or https://', 'bulk-plugin-installer'),
|
||||
2010 => __('The domain is not in the trusted list for themes. Please add it in settings or use another source.', 'bulk-plugin-installer')
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
public function get_error_message($code, $default_message) {
|
||||
return __($this->error_messages[$code] ?? $default_message, 'bulk-plugin-installer');
|
||||
}
|
||||
|
@ -70,11 +72,11 @@ class BPI_Installer {
|
|||
public function bpi_install_plugins($items, $type) {
|
||||
$valid_types = ['repository', 'wenpai', 'url', 'upload'];
|
||||
if (!in_array($type, $valid_types)) {
|
||||
return ['error' => 'Invalid installation type'];
|
||||
return ['error' => __('Invalid installation type', 'bulk-plugin-installer')];
|
||||
}
|
||||
|
||||
if (empty($items) || !is_array($items)) {
|
||||
return ['error' => 'No items provided'];
|
||||
return ['error' => __('No items provided', 'bulk-plugin-installer')];
|
||||
}
|
||||
|
||||
require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
|
||||
|
@ -92,7 +94,7 @@ class BPI_Installer {
|
|||
$item = sanitize_text_field($item);
|
||||
if (!preg_match('/^[a-z0-9-]+$/', $item)) {
|
||||
throw new Exception(
|
||||
$this->get_error_message(1001, 'Invalid plugin slug'),
|
||||
$this->get_error_message(1001, 'Invalid plugin slug'),
|
||||
1001
|
||||
);
|
||||
}
|
||||
|
@ -105,7 +107,7 @@ class BPI_Installer {
|
|||
if ($plugin_key && array_key_exists($plugin_key, $installed_plugins)) {
|
||||
$results[$item] = [
|
||||
'success' => true,
|
||||
'message' => 'Plugin already installed, skipped',
|
||||
'message' => __('Plugin already installed, skipped', 'bulk-plugin-installer'),
|
||||
'skipped' => true
|
||||
];
|
||||
continue;
|
||||
|
@ -120,7 +122,7 @@ class BPI_Installer {
|
|||
]);
|
||||
if (is_wp_error($api)) {
|
||||
throw new Exception(
|
||||
$this->get_error_message(1002, 'Failed to fetch plugin info: ' . $api->get_error_message()),
|
||||
$this->get_error_message(1002, 'Failed to fetch plugin info: ' . $api->get_error_message()),
|
||||
1002
|
||||
);
|
||||
}
|
||||
|
@ -132,13 +134,13 @@ class BPI_Installer {
|
|||
if (is_wp_error($response)) {
|
||||
$code = wp_remote_retrieve_response_code($response);
|
||||
throw new Exception(
|
||||
$this->get_error_message(1003, "Download failed with status code $code: " . $response->get_error_message()),
|
||||
$this->get_error_message(1003, "Download failed with status code $code: " . $response->get_error_message()),
|
||||
1003
|
||||
);
|
||||
}
|
||||
$plugin_data = json_decode(wp_remote_retrieve_body($response), true);
|
||||
$download_link = $plugin_data && !empty($plugin_data['download_link'])
|
||||
? $plugin_data['download_link']
|
||||
$download_link = $plugin_data && !empty($plugin_data['download_link'])
|
||||
? $plugin_data['download_link']
|
||||
: "https://downloads.wenpai.net/plugin/{$item}.latest-stable.zip";
|
||||
break;
|
||||
|
||||
|
@ -146,13 +148,13 @@ class BPI_Installer {
|
|||
$item = sanitize_text_field($item);
|
||||
if (!filter_var($item, FILTER_VALIDATE_URL)) {
|
||||
throw new Exception(
|
||||
$this->get_error_message(1004, 'Invalid URL format'),
|
||||
$this->get_error_message(1004, 'Invalid URL format'),
|
||||
1004
|
||||
);
|
||||
}
|
||||
if (!bpi_is_domain_allowed($item)) {
|
||||
throw new Exception(
|
||||
$this->get_error_message(1005, 'Untrusted domain'),
|
||||
$this->get_error_message(1005, 'Untrusted domain'),
|
||||
1005
|
||||
);
|
||||
}
|
||||
|
@ -163,14 +165,14 @@ class BPI_Installer {
|
|||
$file = $item;
|
||||
if ($file['error'] !== UPLOAD_ERR_OK) {
|
||||
throw new Exception(
|
||||
$this->get_error_message(1006, 'File upload error: ' . $file['error']),
|
||||
$this->get_error_message(1006, 'File upload error: ' . $file['error']),
|
||||
1006
|
||||
);
|
||||
}
|
||||
$file_name = sanitize_file_name($file['name']);
|
||||
if (pathinfo($file_name, PATHINFO_EXTENSION) !== 'zip') {
|
||||
throw new Exception(
|
||||
$this->get_error_message(1007, 'Only ZIP files are allowed'),
|
||||
$this->get_error_message(1007, 'Only ZIP files are allowed'),
|
||||
1007
|
||||
);
|
||||
}
|
||||
|
@ -180,7 +182,7 @@ class BPI_Installer {
|
|||
|
||||
if (!move_uploaded_file($temp_file, $dest_path)) {
|
||||
throw new Exception(
|
||||
$this->get_error_message(1008, 'Failed to move uploaded file. Check server permissions.'),
|
||||
$this->get_error_message(1008, 'Failed to move uploaded file. Check server permissions.'),
|
||||
1008
|
||||
);
|
||||
}
|
||||
|
@ -189,13 +191,13 @@ class BPI_Installer {
|
|||
if ($this->is_theme_zip($dest_path)) {
|
||||
unlink($dest_path);
|
||||
throw new Exception(
|
||||
$this->get_error_message(1009, 'Theme ZIP detected'),
|
||||
$this->get_error_message(1009, 'Theme ZIP detected'),
|
||||
1009
|
||||
);
|
||||
}
|
||||
unlink($dest_path);
|
||||
throw new Exception(
|
||||
$this->get_error_message(1010, 'Invalid plugin ZIP'),
|
||||
$this->get_error_message(1010, 'Invalid plugin ZIP'),
|
||||
1010
|
||||
);
|
||||
}
|
||||
|
@ -213,12 +215,12 @@ class BPI_Installer {
|
|||
if (is_wp_error($result)) {
|
||||
$error_message = $result->get_error_message();
|
||||
throw new Exception(
|
||||
$this->get_error_message(1011, $error_message ?: 'Unknown installation error'),
|
||||
$this->get_error_message(1011, $error_message ?: 'Unknown installation error'),
|
||||
1011
|
||||
);
|
||||
} elseif ($result !== true) {
|
||||
throw new Exception(
|
||||
$this->get_error_message(1012, 'Installation failed unexpectedly'),
|
||||
$this->get_error_message(1012, 'Installation failed unexpectedly'),
|
||||
1012
|
||||
);
|
||||
}
|
||||
|
@ -244,11 +246,11 @@ class BPI_Installer {
|
|||
public function bpi_install_themes($items, $type) {
|
||||
$valid_types = ['repository', 'wenpai', 'url', 'upload'];
|
||||
if (!in_array($type, $valid_types)) {
|
||||
return ['error' => 'Invalid installation type'];
|
||||
return ['error' => __('Invalid installation type', 'bulk-plugin-installer')];
|
||||
}
|
||||
|
||||
if (empty($items) || !is_array($items)) {
|
||||
return ['error' => 'No items provided'];
|
||||
return ['error' => __('No items provided', 'bulk-plugin-installer')];
|
||||
}
|
||||
|
||||
require_once ABSPATH . 'wp-admin/includes/theme-install.php';
|
||||
|
@ -266,7 +268,7 @@ class BPI_Installer {
|
|||
$item = sanitize_text_field($item);
|
||||
if (!preg_match('/^[a-z0-9-]+$/', $item)) {
|
||||
throw new Exception(
|
||||
$this->get_error_message(2001, 'Invalid theme slug'),
|
||||
$this->get_error_message(2001, 'Invalid theme slug'),
|
||||
2001
|
||||
);
|
||||
}
|
||||
|
@ -275,14 +277,14 @@ class BPI_Installer {
|
|||
$file = $item;
|
||||
if ($file['error'] !== UPLOAD_ERR_OK) {
|
||||
throw new Exception(
|
||||
$this->get_error_message(2002, 'File upload error: ' . $file['error']),
|
||||
$this->get_error_message(2002, 'File upload error: ' . $file['error']),
|
||||
2002
|
||||
);
|
||||
}
|
||||
$file_name = sanitize_file_name($file['name']);
|
||||
if (pathinfo($file_name, PATHINFO_EXTENSION) !== 'zip') {
|
||||
throw new Exception(
|
||||
$this->get_error_message(2003, 'Only ZIP files are allowed'),
|
||||
$this->get_error_message(2003, 'Only ZIP files are allowed'),
|
||||
2003
|
||||
);
|
||||
}
|
||||
|
@ -292,7 +294,7 @@ class BPI_Installer {
|
|||
|
||||
if (!move_uploaded_file($temp_file, $dest_path)) {
|
||||
throw new Exception(
|
||||
$this->get_error_message(2004, 'Failed to move uploaded file. Check server permissions.'),
|
||||
$this->get_error_message(2004, 'Failed to move uploaded file. Check server permissions.'),
|
||||
2004
|
||||
);
|
||||
}
|
||||
|
@ -329,13 +331,13 @@ class BPI_Installer {
|
|||
if ($this->is_plugin_zip($dest_path)) {
|
||||
unlink($dest_path);
|
||||
throw new Exception(
|
||||
$this->get_error_message(2005, 'Plugin ZIP detected'),
|
||||
$this->get_error_message(2005, 'Plugin ZIP detected'),
|
||||
2005
|
||||
);
|
||||
}
|
||||
unlink($dest_path);
|
||||
throw new Exception(
|
||||
$this->get_error_message(2006, 'Invalid theme ZIP'),
|
||||
$this->get_error_message(2006, 'Invalid theme ZIP'),
|
||||
2006
|
||||
);
|
||||
}
|
||||
|
@ -362,7 +364,7 @@ class BPI_Installer {
|
|||
]);
|
||||
if (is_wp_error($api)) {
|
||||
throw new Exception(
|
||||
$this->get_error_message(2007, 'Failed to fetch theme info: ' . $api->get_error_message()),
|
||||
$this->get_error_message(2007, 'Failed to fetch theme info: ' . $api->get_error_message()),
|
||||
2007
|
||||
);
|
||||
}
|
||||
|
@ -374,13 +376,13 @@ class BPI_Installer {
|
|||
if (is_wp_error($response)) {
|
||||
$code = wp_remote_retrieve_response_code($response);
|
||||
throw new Exception(
|
||||
$this->get_error_message(2008, "Download failed with status code $code: " . $response->get_error_message()),
|
||||
$this->get_error_message(2008, "Download failed with status code $code: " . $response->get_error_message()),
|
||||
2008
|
||||
);
|
||||
}
|
||||
$theme_data = json_decode(wp_remote_retrieve_body($response), true);
|
||||
$download_link = $theme_data && !empty($theme_data['download_link'])
|
||||
? $theme_data['download_link']
|
||||
$download_link = $theme_data && !empty($theme_data['download_link'])
|
||||
? $theme_data['download_link']
|
||||
: "https://downloads.wenpai.net/theme/{$item}.latest-stable.zip";
|
||||
break;
|
||||
|
||||
|
@ -388,13 +390,13 @@ class BPI_Installer {
|
|||
$item = sanitize_text_field($item);
|
||||
if (!filter_var($item, FILTER_VALIDATE_URL)) {
|
||||
throw new Exception(
|
||||
$this->get_error_message(2009, 'Invalid URL format'),
|
||||
$this->get_error_message(2009, 'Invalid URL format'),
|
||||
2009
|
||||
);
|
||||
}
|
||||
if (!bpi_is_domain_allowed($item)) {
|
||||
throw new Exception(
|
||||
$this->get_error_message(2010, 'Untrusted domain'),
|
||||
$this->get_error_message(2010, 'Untrusted domain'),
|
||||
2010
|
||||
);
|
||||
}
|
||||
|
@ -414,12 +416,12 @@ class BPI_Installer {
|
|||
if (is_wp_error($result)) {
|
||||
$error_message = $result->get_error_message();
|
||||
throw new Exception(
|
||||
$this->get_error_message(2011, $error_message ?: 'Unknown installation error'),
|
||||
$this->get_error_message(2011, $error_message ?: 'Unknown installation error'),
|
||||
2011
|
||||
);
|
||||
} elseif ($result !== true) {
|
||||
throw new Exception(
|
||||
$this->get_error_message(2012, 'Installation failed unexpectedly'),
|
||||
$this->get_error_message(2012, 'Installation failed unexpectedly'),
|
||||
2012
|
||||
);
|
||||
}
|
||||
|
|
382
languages/bulk-plugin-installer-zh_CN-backup-202503260656430.po~
Normal file
382
languages/bulk-plugin-installer-zh_CN-backup-202503260656430.po~
Normal file
|
@ -0,0 +1,382 @@
|
|||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Bulk Plugin Installer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-03-26 03:53+0000\n"
|
||||
"PO-Revision-Date: 2025-03-26 06:37+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: 简体中文\n"
|
||||
"Language: zh_CN\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Loco https://localise.biz/\n"
|
||||
"X-Loco-Version: 2.6.11; wp-6.7.2\n"
|
||||
"X-Domain: bulk-plugin-installer\n"
|
||||
|
||||
#: includes/admin-page.php:181
|
||||
msgid "Additional Trusted Domains"
|
||||
msgstr "其他受信任域"
|
||||
|
||||
#: includes/admin-page.php:166
|
||||
msgid "Allowed Roles"
|
||||
msgstr "允许角色"
|
||||
|
||||
#. Description of the plugin
|
||||
msgid ""
|
||||
"Bulk install WordPress plugins and themes from repository, URL, or ZIP "
|
||||
"uploads."
|
||||
msgstr "从存储库、URL 或 ZIP 上传批量安装 WordPress 插件和主题。"
|
||||
|
||||
#: includes/admin-page.php:31
|
||||
msgid "Bulk Plugin & Theme Installer"
|
||||
msgstr "批量插件和主题安装器"
|
||||
|
||||
#. Name of the plugin
|
||||
msgid "Bulk Plugin Installer"
|
||||
msgstr "批量插件安装器"
|
||||
|
||||
#: includes/admin-page.php:16
|
||||
msgid "completed"
|
||||
msgstr "已完成"
|
||||
|
||||
#: includes/admin-page.php:158
|
||||
msgid "Configure plugin installation settings."
|
||||
msgstr "配置插件安装设置。"
|
||||
|
||||
#: includes/admin-page.php:33
|
||||
msgid "Document"
|
||||
msgstr "文档"
|
||||
|
||||
#: includes/admin-page.php:75 includes/admin-page.php:130
|
||||
msgid "Download URLs:"
|
||||
msgstr "下载网址:"
|
||||
|
||||
#: includes/admin-page.php:86
|
||||
msgid "Drag and drop plugin ZIP files here or click to select files"
|
||||
msgstr "将插件 ZIP 文件拖放到此处或单击选择文件"
|
||||
|
||||
#: includes/admin-page.php:141
|
||||
msgid "Drag and drop theme ZIP files here or click to select files"
|
||||
msgstr "将主题 ZIP 文件拖放到此处或单击以选择文件"
|
||||
|
||||
#: includes/admin-page.php:77 includes/admin-page.php:132
|
||||
msgid "Enter download URLs, one per line"
|
||||
msgstr "输入下载网址,每行一个"
|
||||
|
||||
#: includes/admin-page.php:183
|
||||
msgid "Enter one root domain per line (e.g., example.com)"
|
||||
msgstr "每行输入一个根域名(例如 example.com)"
|
||||
|
||||
#: includes/admin-page.php:63 includes/admin-page.php:70
|
||||
msgid "Enter plugin slugs, one per line (e.g., akismet)"
|
||||
msgstr "输入插件 slug,每行一个(例如 akismet)"
|
||||
|
||||
#: includes/admin-page.php:186
|
||||
msgid ""
|
||||
"Enter root domains (one per line) for remote installation. Subdomains are "
|
||||
"automatically included."
|
||||
msgstr "输入用于远程安装的根域(每行一个)。子域将自动包含在内。"
|
||||
|
||||
#: includes/admin-page.php:118 includes/admin-page.php:125
|
||||
msgid "Enter theme slugs, one per line (e.g., twentytwenty)"
|
||||
msgstr "输入主题 slug,每行一个(例如,twentytwenty)"
|
||||
|
||||
#: includes/admin-page.php:228
|
||||
msgid "Failed Installs"
|
||||
msgstr "安装失败"
|
||||
|
||||
#: includes/admin-page.php:11
|
||||
msgid "Go to Settings to add domain"
|
||||
msgstr "前往“设置”添加域"
|
||||
|
||||
#. Author URI of the plugin
|
||||
msgid "https://wpmultisite.com"
|
||||
msgstr "https://wpmultisite.com"
|
||||
|
||||
#. URI of the plugin
|
||||
msgid "https://wpmultisite.com/plugins/bulk-plugin-installer/"
|
||||
msgstr "https://wpmultisite.com/plugins/bulk-plugin-installer/"
|
||||
|
||||
#: includes/admin-page.php:48
|
||||
msgid "Install multiple plugins from various sources."
|
||||
msgstr "从不同来源安装多个插件。"
|
||||
|
||||
#: includes/admin-page.php:103
|
||||
msgid "Install multiple themes from various sources."
|
||||
msgstr "从不同来源安装多个主题。"
|
||||
|
||||
#: includes/admin-page.php:47 includes/admin-page.php:95
|
||||
msgid "Install Plugins"
|
||||
msgstr "安装插件"
|
||||
|
||||
#: includes/admin-page.php:102 includes/admin-page.php:150
|
||||
msgid "Install Themes"
|
||||
msgstr "安装主题"
|
||||
|
||||
#: includes/admin-page.php:18
|
||||
msgid ""
|
||||
"Installation completed! Check the results below. Failed items can be retried "
|
||||
"using the \"Retry\" buttons if applicable."
|
||||
msgstr "安装已完成!检查以下结果。如果适用,可以使用“重试”按钮重试失败的项目。"
|
||||
|
||||
#: includes/admin-page.php:15
|
||||
msgid "Installation in progress... (Large ZIP files may take some time)"
|
||||
msgstr "正在安装...(较大的 ZIP 文件可能需要一些时间)"
|
||||
|
||||
#: includes/admin-page.php:51 includes/admin-page.php:106
|
||||
msgid "Installation Source:"
|
||||
msgstr "安装来源:"
|
||||
|
||||
#: bulk-plugin-installer.php:147 bulk-plugin-installer.php:222
|
||||
#: bulk-plugin-installer.php:297
|
||||
msgid "Insufficient permissions"
|
||||
msgstr "权限不足"
|
||||
|
||||
#: includes/class-installer.php:75 includes/class-installer.php:249
|
||||
msgid "Invalid installation type"
|
||||
msgstr "安装类型无效"
|
||||
|
||||
#: includes/class-installer.php:19
|
||||
msgid ""
|
||||
"Invalid plugin slug format. Please use only lowercase letters, numbers and "
|
||||
"hyphens."
|
||||
msgstr "插件 slug 格式无效。请仅使用小写字母、数字和连字符。"
|
||||
|
||||
#: includes/class-installer.php:26
|
||||
msgid ""
|
||||
"Invalid theme slug format. Please use only lowercase letters, numbers and "
|
||||
"hyphens."
|
||||
msgstr "主题 slug 格式无效。请仅使用小写字母、数字和连字符。"
|
||||
|
||||
#: includes/class-installer.php:30
|
||||
msgid ""
|
||||
"Invalid URL format for theme. Please provide a complete URL including http:"
|
||||
"// or https://"
|
||||
msgstr "主题的 URL 格式无效。请提供完整的 URL,包括 http:// 或 https://"
|
||||
|
||||
#: includes/class-installer.php:20
|
||||
msgid ""
|
||||
"Invalid URL format. Please provide a complete URL including http:// or https:"
|
||||
"//"
|
||||
msgstr "URL 格式无效。请提供完整的 URL,包括 http:// 或 https://"
|
||||
|
||||
#: includes/admin-page.php:232
|
||||
msgid "Last Install Time"
|
||||
msgstr "上次安装时间"
|
||||
|
||||
#: includes/admin-page.php:214
|
||||
msgid "Metric"
|
||||
msgstr "参数"
|
||||
|
||||
#: includes/admin-page.php:233
|
||||
msgid "Never Installed"
|
||||
msgstr "从未安装"
|
||||
|
||||
#: bulk-plugin-installer.php:160 bulk-plugin-installer.php:235
|
||||
msgid "No files uploaded"
|
||||
msgstr "沒有上传文件"
|
||||
|
||||
#: bulk-plugin-installer.php:200 bulk-plugin-installer.php:275
|
||||
#: includes/class-installer.php:79 includes/class-installer.php:253
|
||||
msgid "No items provided"
|
||||
msgstr "沒有提供任何項目"
|
||||
|
||||
#: bulk-plugin-installer.php:191 bulk-plugin-installer.php:266
|
||||
msgid "No valid files uploaded"
|
||||
msgstr "未上传有效文件"
|
||||
|
||||
#: includes/class-installer.php:22
|
||||
msgid "Only ZIP files are allowed for plugin uploads."
|
||||
msgstr "仅允许上传 ZIP 文件插件。"
|
||||
|
||||
#: includes/class-installer.php:27
|
||||
msgid "Only ZIP files are allowed for theme uploads."
|
||||
msgstr "仅允许上传 ZIP 文件主题。"
|
||||
|
||||
#: includes/admin-page.php:20
|
||||
msgid "Please enter at least one slug."
|
||||
msgstr "请输入至少一个 slug。"
|
||||
|
||||
#: includes/admin-page.php:21
|
||||
msgid "Please enter at least one URL."
|
||||
msgstr "请输入至少一个网址。"
|
||||
|
||||
#: includes/admin-page.php:19
|
||||
msgid "Please select at least one ZIP file."
|
||||
msgstr "请至少选择一个 ZIP 文件。"
|
||||
|
||||
#: includes/class-installer.php:110
|
||||
msgid "Plugin already installed, skipped"
|
||||
msgstr "插件已安装,已跳过"
|
||||
|
||||
#: bulk-plugin-installer.php:47 bulk-plugin-installer.php:48
|
||||
#: bulk-plugin-installer.php:59 bulk-plugin-installer.php:60
|
||||
msgid "Plugin Installer"
|
||||
msgstr "插件安装器"
|
||||
|
||||
#: includes/admin-page.php:68
|
||||
msgid "Plugin Slugs (WenPai.org):"
|
||||
msgstr "插件 Slugs (WenPai.org):"
|
||||
|
||||
#: includes/admin-page.php:61
|
||||
msgid "Plugin Slugs:"
|
||||
msgstr "插件 Slugs :"
|
||||
|
||||
#: includes/admin-page.php:41
|
||||
msgid "Plugins"
|
||||
msgstr "插件"
|
||||
|
||||
#: includes/admin-page.php:17
|
||||
msgid "remaining"
|
||||
msgstr "其余的"
|
||||
|
||||
#: includes/admin-page.php:55 includes/admin-page.php:110
|
||||
msgid "Remote URL"
|
||||
msgstr "远程 URL"
|
||||
|
||||
#: includes/admin-page.php:14
|
||||
msgid "Retry"
|
||||
msgstr "重试"
|
||||
|
||||
#: includes/admin-page.php:190
|
||||
msgid "Save Settings"
|
||||
msgstr "保存设置"
|
||||
|
||||
#: includes/admin-page.php:43 includes/admin-page.php:157
|
||||
msgid "Settings"
|
||||
msgstr "设置"
|
||||
|
||||
#: bulk-plugin-installer.php:308
|
||||
msgid "Settings saved successfully!"
|
||||
msgstr "设置保存成功!"
|
||||
|
||||
#: includes/admin-page.php:201
|
||||
msgid "Statistics"
|
||||
msgstr "统计数据"
|
||||
|
||||
#: includes/admin-page.php:224
|
||||
msgid "Successful Installs"
|
||||
msgstr "成功安装"
|
||||
|
||||
#: includes/class-installer.php:230 includes/class-installer.php:431
|
||||
msgid "Successfully installed"
|
||||
msgstr "安装成功"
|
||||
|
||||
#: includes/admin-page.php:34
|
||||
msgid "Support"
|
||||
msgstr "支持"
|
||||
|
||||
#: includes/admin-page.php:13
|
||||
msgid "Switch to Plugins tab"
|
||||
msgstr "切换到插件选项卡"
|
||||
|
||||
#: includes/admin-page.php:12
|
||||
msgid "Switch to Themes tab"
|
||||
msgstr "切换到主题选项卡"
|
||||
|
||||
#: includes/class-installer.php:31
|
||||
msgid ""
|
||||
"The domain is not in the trusted list for themes. Please add it in settings "
|
||||
"or use another source."
|
||||
msgstr "该域名不在主题的受信任列表中。请在设置中添加它或使用其他来源。"
|
||||
|
||||
#: includes/class-installer.php:21
|
||||
msgid ""
|
||||
"The domain is not in the trusted list. Please add it in settings or use "
|
||||
"another source."
|
||||
msgstr "该域名不在受信任列表中。请在设置中添加它或使用其他来源。"
|
||||
|
||||
#: includes/class-installer.php:24
|
||||
msgid "The uploaded file is not a valid WordPress plugin ZIP."
|
||||
msgstr "上传的文件不是有效的 WordPress 插件 ZIP。"
|
||||
|
||||
#: includes/class-installer.php:29
|
||||
msgid "The uploaded file is not a valid WordPress theme ZIP."
|
||||
msgstr "上传的文件不是有效的 WordPress 主题 ZIP。"
|
||||
|
||||
#: includes/class-installer.php:324 includes/class-installer.php:352
|
||||
msgid "Theme already installed, skipped"
|
||||
msgstr "主题已安装,已跳过"
|
||||
|
||||
#: includes/admin-page.php:123
|
||||
msgid "Theme Slugs (WenPai.org):"
|
||||
msgstr "主题 Slugs (WenPai.org):"
|
||||
|
||||
#: includes/admin-page.php:116
|
||||
msgid "Theme Slugs:"
|
||||
msgstr "主题 Slugs :"
|
||||
|
||||
#: includes/admin-page.php:42
|
||||
msgid "Themes"
|
||||
msgstr "主题"
|
||||
|
||||
#: includes/class-installer.php:28
|
||||
msgid ""
|
||||
"This appears to be a plugin ZIP file. Please use the Plugins tab for "
|
||||
"installation."
|
||||
msgstr "这似乎是一个插件 ZIP 文件。请使用“插件”选项卡进行安装。"
|
||||
|
||||
#: includes/class-installer.php:23
|
||||
msgid ""
|
||||
"This appears to be a theme ZIP file. Please use the Themes tab for "
|
||||
"installation."
|
||||
msgstr "这似乎是一个主题 ZIP 文件。请使用“主题”选项卡进行安装。"
|
||||
|
||||
#: bulk-plugin-installer.php:336
|
||||
msgid "This plugin requires PHP 7.4 or higher."
|
||||
msgstr "此插件需要 PHP 7.4 或更高版本。"
|
||||
|
||||
#: includes/admin-page.php:220
|
||||
msgid "Total Installs"
|
||||
msgstr "总安装量"
|
||||
|
||||
#: includes/class-installer.php:11
|
||||
msgid "Unable to initialize filesystem. Please check server permissions."
|
||||
msgstr "无法初始化文件系统。请检查服务器权限。"
|
||||
|
||||
#: bulk-plugin-installer.php:364 bulk-plugin-installer.php:375
|
||||
msgid "Upload from URL"
|
||||
msgstr "从 URL 上传"
|
||||
|
||||
#: includes/admin-page.php:56 includes/admin-page.php:111
|
||||
msgid "Upload ZIP"
|
||||
msgstr "上传 ZIP"
|
||||
|
||||
#: includes/admin-page.php:215
|
||||
msgid "Value"
|
||||
msgstr "数值"
|
||||
|
||||
#: includes/admin-page.php:32
|
||||
#, php-format
|
||||
msgid "Version: %s"
|
||||
msgstr "版本: %s"
|
||||
|
||||
#: includes/admin-page.php:202
|
||||
msgid "View statistics of plugin and theme installations."
|
||||
msgstr "查看插件和主题安装的统计数据。"
|
||||
|
||||
#: includes/admin-page.php:54 includes/admin-page.php:109
|
||||
msgid "WenPai.org Repository (China Mirror)"
|
||||
msgstr "WenPai.org 存储库(中国镜像)"
|
||||
|
||||
#: includes/admin-page.php:53 includes/admin-page.php:108
|
||||
msgid "WordPress.org Repository"
|
||||
msgstr "WordPress.org 存储库"
|
||||
|
||||
#. Author of the plugin
|
||||
msgid "WPMultisite.com"
|
||||
msgstr "文派多站点"
|
||||
|
||||
#: includes/admin-page.php:4
|
||||
msgid "You do not have sufficient permissions to access this page."
|
||||
msgstr "您没有足够的权限访问此页面。"
|
||||
|
||||
#: includes/admin-page.php:161
|
||||
msgid "You need administrator privileges to modify these settings."
|
||||
msgstr "您需要管理员权限才能修改这些设置。"
|
||||
|
||||
#: includes/admin-page.php:82 includes/admin-page.php:137
|
||||
msgid "ZIP Files:"
|
||||
msgstr "ZIP 文件:"
|
3
languages/bulk-plugin-installer-zh_CN.l10n.php
Normal file
3
languages/bulk-plugin-installer-zh_CN.l10n.php
Normal file
File diff suppressed because one or more lines are too long
BIN
languages/bulk-plugin-installer-zh_CN.mo
Normal file
BIN
languages/bulk-plugin-installer-zh_CN.mo
Normal file
Binary file not shown.
382
languages/bulk-plugin-installer-zh_CN.po
Normal file
382
languages/bulk-plugin-installer-zh_CN.po
Normal file
|
@ -0,0 +1,382 @@
|
|||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Bulk Plugin Installer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-03-26 03:53+0000\n"
|
||||
"PO-Revision-Date: 2025-03-26 06:56+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: 简体中文\n"
|
||||
"Language: zh_CN\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Loco https://localise.biz/\n"
|
||||
"X-Loco-Version: 2.6.11; wp-6.7.2\n"
|
||||
"X-Domain: bulk-plugin-installer\n"
|
||||
|
||||
#: includes/admin-page.php:181
|
||||
msgid "Additional Trusted Domains"
|
||||
msgstr "其他受信任域"
|
||||
|
||||
#: includes/admin-page.php:166
|
||||
msgid "Allowed Roles"
|
||||
msgstr "允许角色"
|
||||
|
||||
#. Description of the plugin
|
||||
msgid ""
|
||||
"Bulk install WordPress plugins and themes from repository, URL, or ZIP "
|
||||
"uploads."
|
||||
msgstr "从存储库、URL 或 ZIP 上传批量安装 WordPress 插件和主题。"
|
||||
|
||||
#: includes/admin-page.php:31
|
||||
msgid "Bulk Plugin & Theme Installer"
|
||||
msgstr "批量插件和主题安装器"
|
||||
|
||||
#. Name of the plugin
|
||||
msgid "Bulk Plugin Installer"
|
||||
msgstr "批量插件安装器"
|
||||
|
||||
#: includes/admin-page.php:16
|
||||
msgid "completed"
|
||||
msgstr "已完成"
|
||||
|
||||
#: includes/admin-page.php:158
|
||||
msgid "Configure plugin installation settings."
|
||||
msgstr "配置插件安装设置。"
|
||||
|
||||
#: includes/admin-page.php:33
|
||||
msgid "Document"
|
||||
msgstr "文档"
|
||||
|
||||
#: includes/admin-page.php:75 includes/admin-page.php:130
|
||||
msgid "Download URLs:"
|
||||
msgstr "下载网址:"
|
||||
|
||||
#: includes/admin-page.php:86
|
||||
msgid "Drag and drop plugin ZIP files here or click to select files"
|
||||
msgstr "将插件 ZIP 文件拖放到此处或单击选择文件"
|
||||
|
||||
#: includes/admin-page.php:141
|
||||
msgid "Drag and drop theme ZIP files here or click to select files"
|
||||
msgstr "将主题 ZIP 文件拖放到此处或单击以选择文件"
|
||||
|
||||
#: includes/admin-page.php:77 includes/admin-page.php:132
|
||||
msgid "Enter download URLs, one per line"
|
||||
msgstr "输入下载网址,每行一个"
|
||||
|
||||
#: includes/admin-page.php:183
|
||||
msgid "Enter one root domain per line (e.g., example.com)"
|
||||
msgstr "每行输入一个根域名(例如 example.com)"
|
||||
|
||||
#: includes/admin-page.php:63 includes/admin-page.php:70
|
||||
msgid "Enter plugin slugs, one per line (e.g., akismet)"
|
||||
msgstr "输入插件 slug,每行一个(例如 akismet)"
|
||||
|
||||
#: includes/admin-page.php:186
|
||||
msgid ""
|
||||
"Enter root domains (one per line) for remote installation. Subdomains are "
|
||||
"automatically included."
|
||||
msgstr "输入用于远程安装的根域(每行一个)。子域将自动包含在内。"
|
||||
|
||||
#: includes/admin-page.php:118 includes/admin-page.php:125
|
||||
msgid "Enter theme slugs, one per line (e.g., twentytwenty)"
|
||||
msgstr "输入主题 slug,每行一个(例如,twentytwenty)"
|
||||
|
||||
#: includes/admin-page.php:228
|
||||
msgid "Failed Installs"
|
||||
msgstr "安装失败"
|
||||
|
||||
#: includes/admin-page.php:11
|
||||
msgid "Go to Settings to add domain"
|
||||
msgstr "前往“设置”添加域"
|
||||
|
||||
#. Author URI of the plugin
|
||||
msgid "https://wpmultisite.com"
|
||||
msgstr "https://wpmultisite.com"
|
||||
|
||||
#. URI of the plugin
|
||||
msgid "https://wpmultisite.com/plugins/bulk-plugin-installer/"
|
||||
msgstr "https://wpmultisite.com/plugins/bulk-plugin-installer/"
|
||||
|
||||
#: includes/admin-page.php:48
|
||||
msgid "Install multiple plugins from various sources."
|
||||
msgstr "从不同来源安装多个插件。"
|
||||
|
||||
#: includes/admin-page.php:103
|
||||
msgid "Install multiple themes from various sources."
|
||||
msgstr "从不同来源安装多个主题。"
|
||||
|
||||
#: includes/admin-page.php:47 includes/admin-page.php:95
|
||||
msgid "Install Plugins"
|
||||
msgstr "安装插件"
|
||||
|
||||
#: includes/admin-page.php:102 includes/admin-page.php:150
|
||||
msgid "Install Themes"
|
||||
msgstr "安装主题"
|
||||
|
||||
#: includes/admin-page.php:18
|
||||
msgid ""
|
||||
"Installation completed! Check the results below. Failed items can be retried "
|
||||
"using the \"Retry\" buttons if applicable."
|
||||
msgstr "安装已完成!检查以下结果。如果适用,可以使用“重试”按钮重试失败的项目。"
|
||||
|
||||
#: includes/admin-page.php:15
|
||||
msgid "Installation in progress... (Large ZIP files may take some time)"
|
||||
msgstr "正在安装...(较大的 ZIP 文件可能需要一些时间)"
|
||||
|
||||
#: includes/admin-page.php:51 includes/admin-page.php:106
|
||||
msgid "Installation Source:"
|
||||
msgstr "安装来源:"
|
||||
|
||||
#: bulk-plugin-installer.php:147 bulk-plugin-installer.php:222
|
||||
#: bulk-plugin-installer.php:297
|
||||
msgid "Insufficient permissions"
|
||||
msgstr "权限不足"
|
||||
|
||||
#: includes/class-installer.php:75 includes/class-installer.php:249
|
||||
msgid "Invalid installation type"
|
||||
msgstr "安装类型无效"
|
||||
|
||||
#: includes/class-installer.php:19
|
||||
msgid ""
|
||||
"Invalid plugin slug format. Please use only lowercase letters, numbers and "
|
||||
"hyphens."
|
||||
msgstr "插件 slug 格式无效。请仅使用小写字母、数字和连字符。"
|
||||
|
||||
#: includes/class-installer.php:26
|
||||
msgid ""
|
||||
"Invalid theme slug format. Please use only lowercase letters, numbers and "
|
||||
"hyphens."
|
||||
msgstr "主题 slug 格式无效。请仅使用小写字母、数字和连字符。"
|
||||
|
||||
#: includes/class-installer.php:30
|
||||
msgid ""
|
||||
"Invalid URL format for theme. Please provide a complete URL including http:"
|
||||
"// or https://"
|
||||
msgstr "主题的 URL 格式无效。请提供完整的 URL,包括 http:// 或 https://"
|
||||
|
||||
#: includes/class-installer.php:20
|
||||
msgid ""
|
||||
"Invalid URL format. Please provide a complete URL including http:// or https:"
|
||||
"//"
|
||||
msgstr "URL 格式无效。请提供完整的 URL,包括 http:// 或 https://"
|
||||
|
||||
#: includes/admin-page.php:232
|
||||
msgid "Last Install Time"
|
||||
msgstr "上次安装时间"
|
||||
|
||||
#: includes/admin-page.php:214
|
||||
msgid "Metric"
|
||||
msgstr "参数"
|
||||
|
||||
#: includes/admin-page.php:233
|
||||
msgid "Never Installed"
|
||||
msgstr "从未安装"
|
||||
|
||||
#: bulk-plugin-installer.php:160 bulk-plugin-installer.php:235
|
||||
msgid "No files uploaded"
|
||||
msgstr "沒有上传文件"
|
||||
|
||||
#: bulk-plugin-installer.php:200 bulk-plugin-installer.php:275
|
||||
#: includes/class-installer.php:79 includes/class-installer.php:253
|
||||
msgid "No items provided"
|
||||
msgstr "沒有提供任何項目"
|
||||
|
||||
#: bulk-plugin-installer.php:191 bulk-plugin-installer.php:266
|
||||
msgid "No valid files uploaded"
|
||||
msgstr "未上传有效文件"
|
||||
|
||||
#: includes/class-installer.php:22
|
||||
msgid "Only ZIP files are allowed for plugin uploads."
|
||||
msgstr "仅允许上传 ZIP 文件插件。"
|
||||
|
||||
#: includes/class-installer.php:27
|
||||
msgid "Only ZIP files are allowed for theme uploads."
|
||||
msgstr "仅允许上传 ZIP 文件主题。"
|
||||
|
||||
#: includes/admin-page.php:20
|
||||
msgid "Please enter at least one slug."
|
||||
msgstr "请输入至少一个 slug。"
|
||||
|
||||
#: includes/admin-page.php:21
|
||||
msgid "Please enter at least one URL."
|
||||
msgstr "请输入至少一个网址。"
|
||||
|
||||
#: includes/admin-page.php:19
|
||||
msgid "Please select at least one ZIP file."
|
||||
msgstr "请至少选择一个 ZIP 文件。"
|
||||
|
||||
#: includes/class-installer.php:110
|
||||
msgid "Plugin already installed, skipped"
|
||||
msgstr "插件已安装,已跳过"
|
||||
|
||||
#: bulk-plugin-installer.php:47 bulk-plugin-installer.php:48
|
||||
#: bulk-plugin-installer.php:59 bulk-plugin-installer.php:60
|
||||
msgid "Plugin Installer"
|
||||
msgstr "插件安装器"
|
||||
|
||||
#: includes/admin-page.php:68
|
||||
msgid "Plugin Slugs (WenPai.org):"
|
||||
msgstr "插件 Slugs (WenPai.org):"
|
||||
|
||||
#: includes/admin-page.php:61
|
||||
msgid "Plugin Slugs:"
|
||||
msgstr "插件 Slugs :"
|
||||
|
||||
#: includes/admin-page.php:41
|
||||
msgid "Plugins"
|
||||
msgstr "插件"
|
||||
|
||||
#: includes/admin-page.php:17
|
||||
msgid "remaining"
|
||||
msgstr "剩余"
|
||||
|
||||
#: includes/admin-page.php:55 includes/admin-page.php:110
|
||||
msgid "Remote URL"
|
||||
msgstr "远程 URL"
|
||||
|
||||
#: includes/admin-page.php:14
|
||||
msgid "Retry"
|
||||
msgstr "重试"
|
||||
|
||||
#: includes/admin-page.php:190
|
||||
msgid "Save Settings"
|
||||
msgstr "保存设置"
|
||||
|
||||
#: includes/admin-page.php:43 includes/admin-page.php:157
|
||||
msgid "Settings"
|
||||
msgstr "设置"
|
||||
|
||||
#: bulk-plugin-installer.php:308
|
||||
msgid "Settings saved successfully!"
|
||||
msgstr "设置保存成功!"
|
||||
|
||||
#: includes/admin-page.php:201
|
||||
msgid "Statistics"
|
||||
msgstr "统计数据"
|
||||
|
||||
#: includes/admin-page.php:224
|
||||
msgid "Successful Installs"
|
||||
msgstr "成功安装"
|
||||
|
||||
#: includes/class-installer.php:230 includes/class-installer.php:431
|
||||
msgid "Successfully installed"
|
||||
msgstr "安装成功"
|
||||
|
||||
#: includes/admin-page.php:34
|
||||
msgid "Support"
|
||||
msgstr "支持"
|
||||
|
||||
#: includes/admin-page.php:13
|
||||
msgid "Switch to Plugins tab"
|
||||
msgstr "切换到插件选项卡"
|
||||
|
||||
#: includes/admin-page.php:12
|
||||
msgid "Switch to Themes tab"
|
||||
msgstr "切换到主题选项卡"
|
||||
|
||||
#: includes/class-installer.php:31
|
||||
msgid ""
|
||||
"The domain is not in the trusted list for themes. Please add it in settings "
|
||||
"or use another source."
|
||||
msgstr "该域名不在主题的受信任列表中。请在设置中添加它或使用其他来源。"
|
||||
|
||||
#: includes/class-installer.php:21
|
||||
msgid ""
|
||||
"The domain is not in the trusted list. Please add it in settings or use "
|
||||
"another source."
|
||||
msgstr "该域名不在受信任列表中。请在设置中添加它或使用其他来源。"
|
||||
|
||||
#: includes/class-installer.php:24
|
||||
msgid "The uploaded file is not a valid WordPress plugin ZIP."
|
||||
msgstr "上传的文件不是有效的 WordPress 插件 ZIP。"
|
||||
|
||||
#: includes/class-installer.php:29
|
||||
msgid "The uploaded file is not a valid WordPress theme ZIP."
|
||||
msgstr "上传的文件不是有效的 WordPress 主题 ZIP。"
|
||||
|
||||
#: includes/class-installer.php:324 includes/class-installer.php:352
|
||||
msgid "Theme already installed, skipped"
|
||||
msgstr "主题已安装,已跳过"
|
||||
|
||||
#: includes/admin-page.php:123
|
||||
msgid "Theme Slugs (WenPai.org):"
|
||||
msgstr "主题 Slugs (WenPai.org):"
|
||||
|
||||
#: includes/admin-page.php:116
|
||||
msgid "Theme Slugs:"
|
||||
msgstr "主题 Slugs :"
|
||||
|
||||
#: includes/admin-page.php:42
|
||||
msgid "Themes"
|
||||
msgstr "主题"
|
||||
|
||||
#: includes/class-installer.php:28
|
||||
msgid ""
|
||||
"This appears to be a plugin ZIP file. Please use the Plugins tab for "
|
||||
"installation."
|
||||
msgstr "这似乎是一个插件 ZIP 文件。请使用“插件”选项卡进行安装。"
|
||||
|
||||
#: includes/class-installer.php:23
|
||||
msgid ""
|
||||
"This appears to be a theme ZIP file. Please use the Themes tab for "
|
||||
"installation."
|
||||
msgstr "这似乎是一个主题 ZIP 文件。请使用“主题”选项卡进行安装。"
|
||||
|
||||
#: bulk-plugin-installer.php:336
|
||||
msgid "This plugin requires PHP 7.4 or higher."
|
||||
msgstr "此插件需要 PHP 7.4 或更高版本。"
|
||||
|
||||
#: includes/admin-page.php:220
|
||||
msgid "Total Installs"
|
||||
msgstr "总安装量"
|
||||
|
||||
#: includes/class-installer.php:11
|
||||
msgid "Unable to initialize filesystem. Please check server permissions."
|
||||
msgstr "无法初始化文件系统。请检查服务器权限。"
|
||||
|
||||
#: bulk-plugin-installer.php:364 bulk-plugin-installer.php:375
|
||||
msgid "Upload from URL"
|
||||
msgstr "从 URL 上传"
|
||||
|
||||
#: includes/admin-page.php:56 includes/admin-page.php:111
|
||||
msgid "Upload ZIP"
|
||||
msgstr "上传 ZIP"
|
||||
|
||||
#: includes/admin-page.php:215
|
||||
msgid "Value"
|
||||
msgstr "数值"
|
||||
|
||||
#: includes/admin-page.php:32
|
||||
#, php-format
|
||||
msgid "Version: %s"
|
||||
msgstr "版本: %s"
|
||||
|
||||
#: includes/admin-page.php:202
|
||||
msgid "View statistics of plugin and theme installations."
|
||||
msgstr "查看插件和主题安装的统计数据。"
|
||||
|
||||
#: includes/admin-page.php:54 includes/admin-page.php:109
|
||||
msgid "WenPai.org Repository (China Mirror)"
|
||||
msgstr "WenPai.org 存储库(中国镜像)"
|
||||
|
||||
#: includes/admin-page.php:53 includes/admin-page.php:108
|
||||
msgid "WordPress.org Repository"
|
||||
msgstr "WordPress.org 存储库"
|
||||
|
||||
#. Author of the plugin
|
||||
msgid "WPMultisite.com"
|
||||
msgstr "文派多站点"
|
||||
|
||||
#: includes/admin-page.php:4
|
||||
msgid "You do not have sufficient permissions to access this page."
|
||||
msgstr "您没有足够的权限访问此页面。"
|
||||
|
||||
#: includes/admin-page.php:161
|
||||
msgid "You need administrator privileges to modify these settings."
|
||||
msgstr "您需要管理员权限才能修改这些设置。"
|
||||
|
||||
#: includes/admin-page.php:82 includes/admin-page.php:137
|
||||
msgid "ZIP Files:"
|
||||
msgstr "ZIP 文件:"
|
383
languages/bulk-plugin-installer.pot
Normal file
383
languages/bulk-plugin-installer.pot
Normal file
|
@ -0,0 +1,383 @@
|
|||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Bulk Plugin Installer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-03-26 06:35+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: \n"
|
||||
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Loco https://localise.biz/\n"
|
||||
"X-Loco-Version: 2.6.11; wp-6.7.2\n"
|
||||
"X-Domain: bulk-plugin-installer"
|
||||
|
||||
#: includes/admin-page.php:181
|
||||
msgid "Additional Trusted Domains"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:166
|
||||
msgid "Allowed Roles"
|
||||
msgstr ""
|
||||
|
||||
#. Description of the plugin
|
||||
msgid ""
|
||||
"Bulk install WordPress plugins and themes from repository, URL, or ZIP "
|
||||
"uploads."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:31
|
||||
msgid "Bulk Plugin & Theme Installer"
|
||||
msgstr ""
|
||||
|
||||
#. Name of the plugin
|
||||
msgid "Bulk Plugin Installer"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:16
|
||||
msgid "completed"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:158
|
||||
msgid "Configure plugin installation settings."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:33
|
||||
msgid "Document"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:75 includes/admin-page.php:130
|
||||
msgid "Download URLs:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:86
|
||||
msgid "Drag and drop plugin ZIP files here or click to select files"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:141
|
||||
msgid "Drag and drop theme ZIP files here or click to select files"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:77 includes/admin-page.php:132
|
||||
msgid "Enter download URLs, one per line"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:183
|
||||
msgid "Enter one root domain per line (e.g., example.com)"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:63 includes/admin-page.php:70
|
||||
msgid "Enter plugin slugs, one per line (e.g., akismet)"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:186
|
||||
msgid ""
|
||||
"Enter root domains (one per line) for remote installation. Subdomains are "
|
||||
"automatically included."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:118 includes/admin-page.php:125
|
||||
msgid "Enter theme slugs, one per line (e.g., twentytwenty)"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:228
|
||||
msgid "Failed Installs"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:11
|
||||
msgid "Go to Settings to add domain"
|
||||
msgstr ""
|
||||
|
||||
#. Author URI of the plugin
|
||||
msgid "https://wpmultisite.com"
|
||||
msgstr ""
|
||||
|
||||
#. URI of the plugin
|
||||
msgid "https://wpmultisite.com/plugins/bulk-plugin-installer/"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:48
|
||||
msgid "Install multiple plugins from various sources."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:103
|
||||
msgid "Install multiple themes from various sources."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:47 includes/admin-page.php:95
|
||||
msgid "Install Plugins"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:102 includes/admin-page.php:150
|
||||
msgid "Install Themes"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:18
|
||||
msgid ""
|
||||
"Installation completed! Check the results below. Failed items can be retried "
|
||||
"using the \"Retry\" buttons if applicable."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:15
|
||||
msgid "Installation in progress... (Large ZIP files may take some time)"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:51 includes/admin-page.php:106
|
||||
msgid "Installation Source:"
|
||||
msgstr ""
|
||||
|
||||
#: bulk-plugin-installer.php:147 bulk-plugin-installer.php:222
|
||||
#: bulk-plugin-installer.php:297
|
||||
msgid "Insufficient permissions"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-installer.php:75 includes/class-installer.php:249
|
||||
msgid "Invalid installation type"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-installer.php:19
|
||||
msgid ""
|
||||
"Invalid plugin slug format. Please use only lowercase letters, numbers and "
|
||||
"hyphens."
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-installer.php:26
|
||||
msgid ""
|
||||
"Invalid theme slug format. Please use only lowercase letters, numbers and "
|
||||
"hyphens."
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-installer.php:30
|
||||
msgid ""
|
||||
"Invalid URL format for theme. Please provide a complete URL including http:"
|
||||
"// or https://"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-installer.php:20
|
||||
msgid ""
|
||||
"Invalid URL format. Please provide a complete URL including http:// or https:"
|
||||
"//"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:232
|
||||
msgid "Last Install Time"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:214
|
||||
msgid "Metric"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:233
|
||||
msgid "Never Installed"
|
||||
msgstr ""
|
||||
|
||||
#: bulk-plugin-installer.php:160 bulk-plugin-installer.php:235
|
||||
msgid "No files uploaded"
|
||||
msgstr ""
|
||||
|
||||
#: bulk-plugin-installer.php:200 bulk-plugin-installer.php:275
|
||||
#: includes/class-installer.php:79 includes/class-installer.php:253
|
||||
msgid "No items provided"
|
||||
msgstr ""
|
||||
|
||||
#: bulk-plugin-installer.php:191 bulk-plugin-installer.php:266
|
||||
msgid "No valid files uploaded"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-installer.php:22
|
||||
msgid "Only ZIP files are allowed for plugin uploads."
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-installer.php:27
|
||||
msgid "Only ZIP files are allowed for theme uploads."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:20
|
||||
msgid "Please enter at least one slug."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:21
|
||||
msgid "Please enter at least one URL."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:19
|
||||
msgid "Please select at least one ZIP file."
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-installer.php:110
|
||||
msgid "Plugin already installed, skipped"
|
||||
msgstr ""
|
||||
|
||||
#: bulk-plugin-installer.php:47 bulk-plugin-installer.php:48
|
||||
#: bulk-plugin-installer.php:59 bulk-plugin-installer.php:60
|
||||
msgid "Plugin Installer"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:68
|
||||
msgid "Plugin Slugs (WenPai.org):"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:61
|
||||
msgid "Plugin Slugs:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:41
|
||||
msgid "Plugins"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:17
|
||||
msgid "remaining"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:55 includes/admin-page.php:110
|
||||
msgid "Remote URL"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:14
|
||||
msgid "Retry"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:190
|
||||
msgid "Save Settings"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:43 includes/admin-page.php:157
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#: bulk-plugin-installer.php:308
|
||||
msgid "Settings saved successfully!"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:201
|
||||
msgid "Statistics"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:224
|
||||
msgid "Successful Installs"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-installer.php:230 includes/class-installer.php:431
|
||||
msgid "Successfully installed"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:34
|
||||
msgid "Support"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:13
|
||||
msgid "Switch to Plugins tab"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:12
|
||||
msgid "Switch to Themes tab"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-installer.php:31
|
||||
msgid ""
|
||||
"The domain is not in the trusted list for themes. Please add it in settings "
|
||||
"or use another source."
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-installer.php:21
|
||||
msgid ""
|
||||
"The domain is not in the trusted list. Please add it in settings or use "
|
||||
"another source."
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-installer.php:24
|
||||
msgid "The uploaded file is not a valid WordPress plugin ZIP."
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-installer.php:29
|
||||
msgid "The uploaded file is not a valid WordPress theme ZIP."
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-installer.php:324 includes/class-installer.php:352
|
||||
msgid "Theme already installed, skipped"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:123
|
||||
msgid "Theme Slugs (WenPai.org):"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:116
|
||||
msgid "Theme Slugs:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:42
|
||||
msgid "Themes"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-installer.php:28
|
||||
msgid ""
|
||||
"This appears to be a plugin ZIP file. Please use the Plugins tab for "
|
||||
"installation."
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-installer.php:23
|
||||
msgid ""
|
||||
"This appears to be a theme ZIP file. Please use the Themes tab for "
|
||||
"installation."
|
||||
msgstr ""
|
||||
|
||||
#: bulk-plugin-installer.php:336
|
||||
msgid "This plugin requires PHP 7.4 or higher."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:220
|
||||
msgid "Total Installs"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-installer.php:11
|
||||
msgid "Unable to initialize filesystem. Please check server permissions."
|
||||
msgstr ""
|
||||
|
||||
#: bulk-plugin-installer.php:364 bulk-plugin-installer.php:375
|
||||
msgid "Upload from URL"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:56 includes/admin-page.php:111
|
||||
msgid "Upload ZIP"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:215
|
||||
msgid "Value"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:32
|
||||
#, php-format
|
||||
msgid "Version: %s"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:202
|
||||
msgid "View statistics of plugin and theme installations."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:54 includes/admin-page.php:109
|
||||
msgid "WenPai.org Repository (China Mirror)"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:53 includes/admin-page.php:108
|
||||
msgid "WordPress.org Repository"
|
||||
msgstr ""
|
||||
|
||||
#. Author of the plugin
|
||||
msgid "WPMultisite.com"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:4
|
||||
msgid "You do not have sufficient permissions to access this page."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:161
|
||||
msgid "You need administrator privileges to modify these settings."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-page.php:82 includes/admin-page.php:137
|
||||
msgid "ZIP Files:"
|
||||
msgstr ""
|
Loading…
Add table
Add a link
Reference in a new issue