public function translate($args, $languages = null)
{
if (is_array($args)) {
$lookup = array_shift($args);
} else {
$lookup = $args;
$args = [];
}
if (!$languages) {
$languages = [$this->grav['user']->authenticated ? $this->grav['user']->language : 'en'];
} else {
$languages = (array) $languages;
}
if ($lookup) {
if (empty($languages) || reset($languages) == null) {
if ($this->grav['config']->get('system.languages.translations_fallback', true)) {
$languages = $this->grav['language']->getFallbackLanguages();
} else {
$languages = (array) $this->grav['language']->getDefault();
}
}
}
foreach ((array) $languages as $lang) {
$translation = $this->grav['language']->getTranslation($lang, $lookup);
if (!$translation) {
$language = $this->grav['language']->getDefault() ?: 'en';
$translation = $this->grav['language']->getTranslation($language, $lookup);
}
if (!$translation) {
$language = 'en';
$translation = $this->grav['language']->getTranslation($language, $lookup);
}
if ($translation) {
if (count($args) >= 1) {
return vsprintf($translation, $args);
} else {
return $translation;
}
}
}
return $lookup;
}
/** * Handles removing a media file * * @return bool True if the action was performed */ public function taskRemoveMedia() { if (!$this->canEditMedia()) { return false; } $filename = base64_decode($this->grav['uri']->param('route')); $file = File::instance($filename); $resultRemoveMedia = false; $resultRemoveMediaMeta = true; if ($file->exists()) { $resultRemoveMedia = $file->delete(); $metaFilePath = $filename . '.meta.yaml'; $metaFilePath = str_replace('@3x', '', $metaFilePath); $metaFilePath = str_replace('@2x', '', $metaFilePath); if (is_file($metaFilePath)) { $metaFile = File::instance($metaFilePath); $resultRemoveMediaMeta = $metaFile->delete(); } } if ($resultRemoveMedia && $resultRemoveMediaMeta) { $this->admin->json_response = ['status' => 'success', 'message' => $this->admin->translate('PLUGIN_ADMIN.REMOVE_SUCCESSFUL')]; return true; } else { $this->admin->json_response = ['status' => 'success', 'message' => $this->admin->translate('PLUGIN_ADMIN.REMOVE_FAILED')]; return false; } }