/home/smartbloks/.trash/extendify/app/Translations.php
<?php
/**
* Handles translations
*/
namespace Extendify;
/**
* Handles translations
*/
class Translations
{
/**
* Constructor
*/
public function __construct()
{
$this->installLanguagePack('extendify', Config::$version, \get_locale());
\add_action('plugins_loaded', function () {
\load_plugin_textdomain('extendify');
});
}
/**
* Install language pack
*
* @param string $slug The plugin slug.
* @param string $version The plugin version.
* @param string $locale The locale.
*
* @return void|false
*/
public function installLanguagePack($slug, $version, $locale)
{
$langsChecked = (array) get_option('extendify_language_file_preloaded', []);
if (in_array($locale, $langsChecked, true)) {
return;
}
// Check only once per language.
update_option('extendify_language_file_preloaded', array_merge($langsChecked, [$locale]));
include_once ABSPATH . 'wp-admin/includes/translation-install.php';
$translations = translations_api('plugins', [
'slug' => 'extendify',
'version' => $version,
]);
if (!$translations) {
return false;
}
$translations = $translations['translations'];
$data = array_values(array_filter($translations, function ($translation) use ($locale) {
return $translation['language'] === $locale;
}));
if (! $data) {
return false;
}
$translation = (object) $data[0];
$currentlyInstalledPacks = wp_get_installed_translations('plugins');
if (isset($currentlyInstalledPacks[$slug][$locale]) || !wp_can_install_language_pack()) {
return;
}
$skin = new NoopUpgraderSkin();
$upgrader = new \WP_Upgrader($skin);
$upgrader->generic_strings();
$result = $upgrader->run([
'package' => $translation->package,
'destination' => WP_LANG_DIR . '/plugins',
'abort_if_destination_exists' => false,
]);
}
}
/**
* Overrides the WP output class to prevent any and all output.
*/
require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
require_once ABSPATH . 'wp-admin/includes/file.php';
require_once ABSPATH . 'wp-includes/pluggable.php';
// phpcs:disable
class NoopUpgraderSkin extends \WP_Upgrader_Skin
{
public function feedback($data, ...$args) {}
public function header() {}
public function footer() {}
}
// phpcs:enable