updated PSR2 coding standard

This commit is contained in:
JcDenis 2021-08-19 00:48:47 +02:00
parent 58dee1a55a
commit c641542ee2
19 changed files with 3605 additions and 3752 deletions

View file

@ -1,6 +1,29 @@
x.x xxxxxxxx
- help translation
- source translation
- settings page
2021.08.19
* Fixed PSR-2 Coding Style
2018.10.26 - Pierre Van Glabeke
* Bug avec php 7.2 (https://forum.dotclear.org/viewtopic.php?pid=342810#p342810)
2018.10.18 - Pierre Van Glabeke
* Modifs localisation
2018.02.14 - Pierre Van Glabeke
* Suppression ?> en fin de lang.php
2017.05.10 - Pierre Van Glabeke
* Suppression ligne 614 de "continue" dans \inc\class.dc.translater.php
2016.08.20 - Pierre Van Glabeke
* Ajout Pluriel dans po
* Ajout favori
2016.07.08 - Pierre Van Glabeke
* Modifs localisation
2013.05.11
* Rewrited proposal tools

View file

@ -3,8 +3,7 @@
#
# This file is part of translater, a plugin for Dotclear 2.
#
# Copyright (c) 2009-2013 Jean-Christian Denis and contributors
# contact@jcdenis.fr
# Copyright (c) 2009-2016 Jean-Christian Denis and contributors
#
# Licensed under the GPL version 2.0 license.
# A copy of this license is available in LICENSE file or at
@ -12,96 +11,109 @@
#
# -- END LICENSE BLOCK ------------------------------------
if (!defined('DC_CONTEXT_ADMIN')){return;}
if (!defined('DC_CONTEXT_ADMIN')) {
return;
}
$core->blog->settings->addNamespace('translater');
$core->addBehavior('pluginsToolsTabs',array('translaterAdminBehaviors','pluginsToolsTabs'));
$core->addBehavior('adminCurrentThemeDetails',array('translaterAdminBehaviors','adminCurrentThemeDetails'));
$core->addBehavior('addTranslaterProposalTool',array('translaterAdminBehaviors','addGoogleProposalTool'));
$core->addBehavior('addTranslaterProposalTool',array('translaterAdminBehaviors','addYahooProposalTool'));
$core->addBehavior('addTranslaterProposalTool',array('translaterAdminBehaviors','addMicrosoftProposalTool'));
$core->rest->addFunction('getProposal',array('translaterRest','getProposal'));
$core->addBehavior('pluginsToolsTabs', ['translaterAdminBehaviors', 'pluginsToolsTabs']);
$core->addBehavior('adminCurrentThemeDetails', ['translaterAdminBehaviors', 'adminCurrentThemeDetails']);
$core->addBehavior('addTranslaterProposalTool', ['translaterAdminBehaviors', 'addGoogleProposalTool']);
$core->addBehavior('addTranslaterProposalTool', ['translaterAdminBehaviors', 'addYahooProposalTool']);
$core->addBehavior('addTranslaterProposalTool', ['translaterAdminBehaviors', 'addMicrosoftProposalTool']);
$core->rest->addFunction('getProposal', ['translaterRest', 'getProposal']);
$_menu['Plugins']->addItem(
__('Translater'),
'plugin.php?p=translater',
'index.php?pf=translater/icon.png',
preg_match('/plugin.php\?p=translater(&.*)?$/',$_SERVER['REQUEST_URI']),
$core->auth->isSuperAdmin()
__('Translater'),
'plugin.php?p=translater',
'index.php?pf=translater/icon.png',
preg_match('/plugin.php\?p=translater(&.*)?$/', $_SERVER['REQUEST_URI']),
$core->auth->isSuperAdmin()
);
class translaterAdminBehaviors
{
# Plugins tab
public static function pluginsToolsTabs($core)
{
if (!$core->blog->settings->translater->translater_plugin_menu || !$core->auth->isSuperAdmin()) {
return;
}
echo
'<div class="multi-part" id="translater" title="'.
__('Translate extensions').
'">'.
'<table class="clear"><tr>'.
'<th>&nbsp;</th>'.
'<th>'.__('Name').'</th>'.
'<th class="nowrap">'.__('Version').'</th>'.
'<th class="nowrap">'.__('Details').'</th>'.
'<th class="nowrap">'.__('Author').'</th>'.
'</tr>';
$modules = $core->plugins->getModules();
foreach ($modules as $name => $plugin)
{
echo
'<tr class="line">'.
'<td class="nowrap">'.
'<a href="plugin.php?p=translater&amp;part=module&amp;type=plugin&amp;module='.$name.'"'.
' title="'.__('Translate this plugin').'">'.__($plugin['name']).'</a></td>'.
'<td class="nowrap">'.$name.'</td>'.
'<td class="nowrap">'.$plugin['version'].'</td>'.
'<td class="maximal">'.$plugin['desc'].'</td>'.
'<td class="nowrap">'.$plugin['author'].'</td>'.
'</tr>';
}
echo '</table></div>';
}
# Themes menu
public static function adminCurrentThemeDetails($core,$id,$infos)
{
if (!$core->blog->settings->translater->translater_theme_menu || !$core->auth->isSuperAdmin()) {
return;
}
$root = path::real($infos['root']);
if ($id != 'default' && is_dir($root.'/locales'))
{
return
'<p><a href="plugin.php?p=translater&amp;part=module&amp;type=theme&amp;module='.$id.'"'.
' class="button">'.__('Translate this theme').'</a></p>';
}
}
# Google Translater tools
public static function addGoogleProposalTool($proposal)
{
$proposal->addTool('googleProposalTool');
}
# Yahoo Babelfish tools
public static function addYahooProposalTool($proposal)
{
$proposal->addTool('yahooProposalTool');
}
# Microsoft Bing tools
public static function addMicrosoftProposalTool($proposal)
{
$proposal->addTool('microsoftProposalTool');
}
# Plugins tab
public static function pluginsToolsTabs($core)
{
if (!$core->blog->settings->translater->translater_plugin_menu || !$core->auth->isSuperAdmin()) {
return;
}
echo
'<div class="multi-part" id="translater" title="' .
__('Translate plugins') .
'">' .
'<table class="clear"><tr>' .
'<th>&nbsp;</th>' .
'<th>' . __('Name') . '</th>' .
'<th class="nowrap">' . __('Version') . '</th>' .
'<th class="nowrap">' . __('Details') . '</th>' .
'<th class="nowrap">' . __('Author') . '</th>' .
'</tr>';
$modules = $core->plugins->getModules();
foreach ($modules as $name => $plugin) {
echo
'<tr class="line">' .
'<td class="nowrap">' .
'<a href="plugin.php?p=translater&amp;part=module&amp;type=plugin&amp;module=' . $name . '"' .
' title="' . __('Translate this plugin') . '">' . __($plugin['name']) . '</a></td>' .
'<td class="nowrap">' . $name . '</td>' .
'<td class="nowrap">' . $plugin['version'] . '</td>' .
'<td class="maximal">' . $plugin['desc'] . '</td>' .
'<td class="nowrap">' . $plugin['author'] . '</td>' .
'</tr>';
}
echo
'</table></div>';
}
# Themes menu
public static function adminCurrentThemeDetails($core, $id, $infos)
{
if (!$core->blog->settings->translater->translater_theme_menu || !$core->auth->isSuperAdmin()) {
return;
}
$root = path::real($infos['root']);
if ($id != 'default' && is_dir($root.'/locales')) {
return
'<p><a href="plugin.php?p=translater&amp;part=module&amp;type=theme&amp;module=' . $id . '"' .
' class="button">' . __('Translate this theme') . '</a></p>';
}
}
# Google Translater tools
public static function addGoogleProposalTool($proposal)
{
$proposal->addTool('googleProposalTool');
}
# Yahoo Babelfish tools
public static function addYahooProposalTool($proposal)
{
$proposal->addTool('yahooProposalTool');
}
# Microsoft Bing tools
public static function addMicrosoftProposalTool($proposal)
{
$proposal->addTool('microsoftProposalTool');
}
}
?>
$core->addBehavior('adminDashboardFavorites', 'translaterDashboardFavorites');
function translaterDashboardFavorites($core, $favs)
{
$favs->register('translater', [
'title' => __('Translater'),
'url' => 'plugin.php?p=translater',
'small-icon' => 'index.php?pf=translater/icon.png',
'large-icon' => 'index.php?pf=translater/icon-big.png',
'permissions' => 'usage,contentadmin'
]);
}

View file

@ -3,8 +3,7 @@
#
# This file is part of translater, a plugin for Dotclear 2.
#
# Copyright (c) 2009-2013 Jean-Christian Denis and contributors
# contact@jcdenis.fr
# Copyright (c) 2009-2021 Jean-Christian Denis and contributors
#
# Licensed under the GPL version 2.0 license.
# A copy of this license is available in LICENSE file or at
@ -12,13 +11,20 @@
#
# -- END LICENSE BLOCK ------------------------------------
if (!defined('DC_RC_PATH')){return;}
if (!defined('DC_RC_PATH')) {
return;
}
$this->registerModule(
/* Name */ "translater",
/* Description*/ "Translate your Dotclear plugins and themes",
/* Author */ "JC Denis",
/* Version */ '2013.05.11',
/* Permissions */ null
);
?>
'translater',
'Translate your Dotclear plugins and themes',
'Jean-Christian Denis & contributors',
'2021.08.15',
[
'permissions' => 'usage,contentadmin,admin',
'type' => 'plugin',
'dc_min' => '2.19',
'support' => 'http://forum.dotclear.org/viewtopic.php?id=39220',
'details' => 'https://plugins.dotaddict.org/dc2/details/translater'
]
);

View file

@ -3,8 +3,7 @@
#
# This file is part of translater, a plugin for Dotclear 2.
#
# Copyright (c) 2009-2013 Jean-Christian Denis and contributors
# contact@jcdenis.fr
# Copyright (c) 2009-2016 Jean-Christian Denis and contributors
#
# Licensed under the GPL version 2.0 license.
# A copy of this license is available in LICENSE file or at
@ -12,48 +11,48 @@
#
# -- END LICENSE BLOCK ------------------------------------
if (!defined('DC_CONTEXT_ADMIN')){return;}
if (!defined('DC_CONTEXT_ADMIN')) {
return;
}
$rdc_version = '2.5-alpha';
$new_version = $core->plugins->moduleInfo('translater','version');
$new_version = $core->plugins->moduleInfo('translater', 'version');
$old_version = $core->getVersion('translater');
if (version_compare($old_version,$new_version,'>=')) return;
if (version_compare($old_version, $new_version, '>=')) {
return;
}
try
{
if (version_compare(str_replace("-r","-p",DC_VERSION),$rdc_version,'<')) {
throw new Exception(sprintf('%s requires Dotclear %s','translater',$rdc_version));
}
$core->blog->settings->addNamespace('translater');
$core->blog->settings->translater->put('translater_plugin_menu',0,'boolean','Put a link in plugins page',false,true);
$core->blog->settings->translater->put('translater_theme_menu',0,'boolean','Put a link in themes page',false,true);
$core->blog->settings->translater->put('translater_backup_auto',1,'boolean','Make a backup of languages old files when there are modified',false,true);
$core->blog->settings->translater->put('translater_backup_limit',20,'string','Maximum backups per module',false,true);
$core->blog->settings->translater->put('translater_backup_folder','module','string','In which folder to store backups',false,true);
$core->blog->settings->translater->put('translater_start_page','setting,','string','Page to start on',false,true);
$core->blog->settings->translater->put('translater_write_po',1,'boolean','Write .po languages files',false,true);
$core->blog->settings->translater->put('translater_write_langphp',1,'boolean','Write .lang.php languages files',false,true);
$core->blog->settings->translater->put('translater_scan_tpl',0,'boolean','Translate strings of templates files',false,true);
$core->blog->settings->translater->put('translater_parse_nodc',1,'boolean','Translate only untranslated strings of Dotclear',false,true);
$core->blog->settings->translater->put('translater_hide_default',1,'boolean','Hide default modules of Dotclear',false,true);
$core->blog->settings->translater->put('translater_parse_comment',1,'boolean','Write comments and strings informations in lang files',false,true);
$core->blog->settings->translater->put('translater_parse_user',1,'boolean','Write inforamtions about author in lang files',false,true);
$core->blog->settings->translater->put('translater_parse_userinfo','displayname, email','string','Type of informations about user to write',false,true);
$core->blog->settings->translater->put('translater_import_overwrite',0,'boolean','Overwrite existing languages when import packages',false,true);
$core->blog->settings->translater->put('translater_export_filename','type-module-l10n-timestamp','string','Name of files of exported package',false,true);
$core->blog->settings->translater->put('translater_proposal_tool','google','string','Id of default tool for proposed translation',false,true);
$core->blog->settings->translater->put('translater_proposal_lang','en','string','Default source language for proposed translation',false,true);
$core->setVersion('translater',$new_version);
return true;
try {
if (version_compare(str_replace("-r", "-p", DC_VERSION), $rdc_version, '<')) {
throw new Exception(sprintf('%s requires Dotclear %s', 'translater', $rdc_version));
}
$core->blog->settings->addNamespace('translater');
$core->blog->settings->translater->put('translater_plugin_menu', 0, 'boolean', 'Put a link in plugins page', false, true);
$core->blog->settings->translater->put('translater_theme_menu', 0,'boolean', 'Put a link in themes page', false, true);
$core->blog->settings->translater->put('translater_backup_auto', 1,'boolean', 'Make a backup of languages old files when there are modified', false, true);
$core->blog->settings->translater->put('translater_backup_limit', 20,'string', 'Maximum backups per module', false, true);
$core->blog->settings->translater->put('translater_backup_folder', 'module',' string', 'In which folder to store backups', false, true);
$core->blog->settings->translater->put('translater_start_page', 'setting,', 'string', 'Page to start on', false, true);
$core->blog->settings->translater->put('translater_write_po', 1, 'boolean', 'Write .po languages files', false, true);
$core->blog->settings->translater->put('translater_write_langphp', 1, 'boolean', 'Write .lang.php languages files', false, true);
$core->blog->settings->translater->put('translater_scan_tpl', 0, 'boolean', 'Translate strings of templates files', false, true);
$core->blog->settings->translater->put('translater_parse_nodc', 1, 'boolean', 'Translate only untranslated strings of Dotclear', false, true);
$core->blog->settings->translater->put('translater_hide_default', 1, 'boolean', 'Hide default modules of Dotclear', false, true);
$core->blog->settings->translater->put('translater_parse_comment', 1, 'boolean', 'Write comments and strings informations in lang files', false, true);
$core->blog->settings->translater->put('translater_parse_user', 1,'boolean', 'Write inforamtions about author in lang files', false, true);
$core->blog->settings->translater->put('translater_parse_userinfo', 'displayname, email', 'string','Type of informations about user to write', false, true);
$core->blog->settings->translater->put('translater_import_overwrite', 0, 'boolean', 'Overwrite existing languages when import packages', false, true);
$core->blog->settings->translater->put('translater_export_filename', 'type-module-l10n-timestamp', 'string','Name of files of exported package', false, true);
$core->blog->settings->translater->put('translater_proposal_tool', 'google', 'string', 'Id of default tool for proposed translation', false, true);
$core->blog->settings->translater->put('translater_proposal_lang', 'en', 'string', 'Default source language for proposed translation', false, true);
$core->setVersion('translater', $new_version);
return true;
} catch (Exception $e) {
$core->error->add($e->getMessage());
}
catch (Exception $e)
{
$core->error->add($e->getMessage());
}
return false;
?>
return false;

View file

@ -3,8 +3,7 @@
#
# This file is part of translater, a plugin for Dotclear 2.
#
# Copyright (c) 2009-2013 Jean-Christian Denis and contributors
# contact@jcdenis.fr
# Copyright (c) 2009-2016 Jean-Christian Denis and contributors
#
# Licensed under the GPL version 2.0 license.
# A copy of this license is available in LICENSE file or at
@ -12,15 +11,16 @@
#
# -- END LICENSE BLOCK ------------------------------------
if (!defined('DC_RC_PATH')){return;}
if (!defined('DC_RC_PATH')) {
return;
}
global $__autoload;
$__autoload['dcTranslater'] = dirname(__FILE__).'/inc/class.dc.translater.php';
$__autoload['translaterRest'] = dirname(__FILE__).'/inc/class.translater.rest.php';
$__autoload['translaterProposals'] = dirname(__FILE__).'/inc/class.translater.proposals.php';
$__autoload['dcTranslater'] = dirname(__FILE__) . '/inc/class.dc.translater.php';
$__autoload['translaterRest'] = dirname(__FILE__) . '/inc/class.translater.rest.php';
$__autoload['translaterProposals'] = dirname(__FILE__) . '/inc/class.translater.proposals.php';
$__autoload['translaterProposalTool'] = dirname(__FILE__).'/inc/lib.translater.proposal.php';
$__autoload['googleProposalTool'] = dirname(__FILE__).'/inc/lib.translater.google.php';
$__autoload['microsoftProposalTool'] = dirname(__FILE__).'/inc/lib.translater.microsoft.php';
?>
$__autoload['translaterProposalTool'] = dirname(__FILE__) . '/inc/lib.translater.proposal.php';
$__autoload['googleProposalTool'] = dirname(__FILE__) . '/inc/lib.translater.google.php';
$__autoload['microsoftProposalTool'] = dirname(__FILE__) . '/inc/lib.translater.microsoft.php';

View file

@ -3,8 +3,7 @@
#
# This file is part of translater, a plugin for Dotclear 2.
#
# Copyright (c) 2009-2013 Jean-Christian Denis and contributors
# contact@jcdenis.fr
# Copyright (c) 2009-2016 Jean-Christian Denis and contributors
#
# Licensed under the GPL version 2.0 license.
# A copy of this license is available in LICENSE file or at
@ -12,48 +11,49 @@
#
# -- END LICENSE BLOCK ------------------------------------
if (!defined('DC_CONTEXT_ADMIN')){return;}
if (!defined('DC_CONTEXT_ADMIN')) {
return;
}
$this->addUserAction(
/* type */ 'settings',
/* action */ 'delete_all',
/* ns */ 'translater',
/* description */ __('delete all settings')
/* type */ 'settings',
/* action */ 'delete_all',
/* ns */ 'translater',
/* description */ __('delete all settings')
);
$this->addUserAction(
/* type */ 'plugins',
/* action */ 'delete',
/* ns */ 'translater',
/* description */ __('delete plugin files')
/* type */ 'plugins',
/* action */ 'delete',
/* ns */ 'translater',
/* description */ __('delete plugin files')
);
$this->addUserAction(
/* type */ 'versions',
/* action */ 'delete',
/* ns */ 'translater',
/* description */ __('delete the version number')
/* type */ 'versions',
/* action */ 'delete',
/* ns */ 'translater',
/* description */ __('delete the version number')
);
$this->addDirectAction(
/* type */ 'settings',
/* action */ 'delete_all',
/* ns */ 'translater',
/* description */ sprintf(__('delete all %s settings'),'translater')
/* type */ 'settings',
/* action */ 'delete_all',
/* ns */ 'translater',
/* description */ sprintf(__('delete all %s settings'), 'translater')
);
$this->addDirectAction(
/* type */ 'plugins',
/* action */ 'delete',
/* ns */ 'translater',
/* description */ sprintf(__('delete %s plugin files'),'translater')
/* type */ 'plugins',
/* action */ 'delete',
/* ns */ 'translater',
/* description */ sprintf(__('delete %s plugin files'), 'translater')
);
$this->addDirectAction(
/* type */ 'versions',
/* action */ 'delete',
/* ns */ 'translater',
/* description */ sprintf(__('delete %s version number'),'translater')
);
?>
/* type */ 'versions',
/* action */ 'delete',
/* ns */ 'translater',
/* description */ sprintf(__('delete %s version number'), 'translater')
);

BIN
icon-big.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
icon.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 691 B

After

Width:  |  Height:  |  Size: 799 B

File diff suppressed because it is too large Load diff

View file

@ -3,62 +3,59 @@
#
# This file is part of translater, a plugin for Dotclear 2.
#
# Copyright (c) 2009-2013 Jean-Christian Denis and contributors
# contact@jcdenis.fr
#
# Copyright (c) 2009-2016 Jean-Christian Denis and contributors
#
# Licensed under the GPL version 2.0 license.
# A copy of this license is available in LICENSE file or at
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
#
# -- END LICENSE BLOCK ------------------------------------
/**
* Translater proposal tools container.
*/
class translaterProposals
{
public $core;
private $stack = array();
public function __construct($core)
{
$this->core = $core;
# --BEHAVIOR-- addTranslaterProposalTool
$core->callBehavior('addTranslaterProposalTool',$this);
}
public function addTool($id)
{
if (!class_exists($id)) {
return;
}
$r = new ReflectionClass($id);
$p = $r->getParentClass();
public $core;
if (!$p || $p->name != 'translaterProposalTool') {
return;
}
$this->stack[$id] = new $id($this->core);
}
public function getTools()
{
return $this->stack;
}
public function getTool($id)
{
return array_key_exists($id,$this->stack) ? $this->stack[$id] : null;
}
public function hasTool($id)
{
return array_key_exists($id,$this->stack);
}
}
?>
private $stack = array();
public function __construct($core)
{
$this->core = $core;
# --BEHAVIOR-- addTranslaterProposalTool
$core->callBehavior('addTranslaterProposalTool', $this);
}
public function addTool($id)
{
if (!class_exists($id)) {
return;
}
$r = new ReflectionClass($id);
$p = $r->getParentClass();
if (!$p || $p->name != 'translaterProposalTool') {
return;
}
$this->stack[$id] = new $id($this->core);
}
public function getTools()
{
return $this->stack;
}
public function getTool($id)
{
return array_key_exists($id, $this->stack) ? $this->stack[$id] : null;
}
public function hasTool($id)
{
return array_key_exists($id, $this->stack);
}
}

View file

@ -3,8 +3,7 @@
#
# This file is part of translater, a plugin for Dotclear 2.
#
# Copyright (c) 2009-2013 Jean-Christian Denis and contributors
# contact@jcdenis.fr
# Copyright (c) 2009-2016 Jean-Christian Denis and contributors
#
# Licensed under the GPL version 2.0 license.
# A copy of this license is available in LICENSE file or at
@ -12,7 +11,9 @@
#
# -- END LICENSE BLOCK ------------------------------------
if (!defined('DC_CONTEXT_ADMIN')){return;}
if (!defined('DC_CONTEXT_ADMIN')) {
return;
}
/**
* Translater REST service.
@ -22,55 +23,47 @@ if (!defined('DC_CONTEXT_ADMIN')){return;}
*/
class translaterRest
{
public static function getProposal($core,$get)
{
$from = !empty($get['langFrom']) ? trim($get['langFrom']) : '';
$to = !empty($get['langTo']) ? trim($get['langTo']) : '';
$tool = !empty($get['langTool']) ? trim($get['langTool']) : '';
$str_in = !empty($get['langStr']) ? trim($get['langStr']) : '';
public static function getProposal($core, $get)
{
$from = !empty($get['langFrom']) ? trim($get['langFrom']) : '';
$to = !empty($get['langTo']) ? trim($get['langTo']) : '';
$tool = !empty($get['langTool']) ? trim($get['langTool']) : '';
$str_in = !empty($get['langStr']) ? trim($get['langStr']) : '';
$str_in = text::toUTF8($str_in);
$str_in = trim($str_in);
$str_out = '';
$str_in = text::toUTF8($str_in);
$str_in = trim($str_in);
$str_out = '';
$rsp = new xmlTag();
$rsp = new xmlTag();
try
{
if (empty($from) || empty($to) || empty($tool))
{
throw new Exception(__('Missing params'));
}
try {
if (empty($from) || empty($to) || empty($tool)) {
throw new Exception(__('Missing params'));
}
$translater = new dcTranslater($core);
$translater = new dcTranslater($core);
if (!empty($str_in))
{
if (!$translater->proposal->hasTool($tool))
{
throw new Exception(__('Failed to get translation tool'));
}
if (!$translater->proposal->getTool($tool)->isActive())
{
throw new Exception(__('Translation tool is not configured'));
}
if (!empty($str_in)) {
if (!$translater->proposal->hasTool($tool)) {
throw new Exception(__('Failed to get translation tool'));
}
if (!$translater->proposal->getTool($tool)->isActive()) {
throw new Exception(__('Translation tool is not configured'));
}
$str_out = (string) $translater->proposal->getTool($tool)->translate($str_in,$from,$to);
}
$str_out = (string) $translater->proposal->getTool($tool)->translate($str_in ,$from, $to);
}
$x = new xmlTag('proposal');
$x->lang_from = $from;
$x->lang_to = $to;
$x->tool = $tool;
$x->str_from = $str_in;
$x->str_to = text::toUTF8(html::decodeEntities($str_out));
$rsp->insertNode($x);
}
catch (Exception $e)
{
$core->error->add($e->getMessage());
}
return $rsp;
}
}
?>
$x = new xmlTag('proposal');
$x->lang_from = $from;
$x->lang_to = $to;
$x->tool = $tool;
$x->str_from = $str_in;
$x->str_to = text::toUTF8(html::decodeEntities($str_out));
$rsp->insertNode($x);
} catch (Exception $e) {
$core->error->add($e->getMessage());
}
return $rsp;
}
}

View file

@ -3,8 +3,7 @@
#
# This file is part of translater, a plugin for Dotclear 2.
#
# Copyright (c) 2009-2013 Jean-Christian Denis and contributors
# contact@jcdenis.fr
# Copyright (c) 2009-2016 Jean-Christian Denis and contributors
#
# Licensed under the GPL version 2.0 license.
# A copy of this license is available in LICENSE file or at
@ -12,7 +11,9 @@
#
# -- END LICENSE BLOCK ------------------------------------
if (!defined('DC_CONTEXT_ADMIN')){return;}
if (!defined('DC_CONTEXT_ADMIN')) {
return;
}
/**
* Google proposal tool.
@ -21,77 +22,75 @@ if (!defined('DC_CONTEXT_ADMIN')){return;}
*/
class googleProposalTool extends translaterProposalTool
{
private $api = 'https://www.googleapis.com/language/translate/v2';
private $agent = 'dcTranslater - http://jcd.lv/?q=translater';
private $key = null; //ex: AsSDqsGsfdSDSQFQsfedj9bnzY390aIg-1d
protected function setup()
{
$this->key = $this->core->blog->settings->translater->translater_google_proposal_key;
$this->setName(__('Google'));
$this->setDesc(__('Google Translation Tool API'));
$this->setActive(!empty($this->key));
}
public function form()
{
return
'<p><label class="classic" for="translater_google_proposal_key">'.
__('API Console Single Access Key').'<br />'.
form::field('translater_google_proposal_key',65,255,$this->key).
'</label></p>'.
'<p>'.__('You must have on Google API console:').'</p>'.
'<ul>'.
'<li><a href="https://code.google.com/apis/console/#access">'.__('A single access API key').'</a></li>'.
'<li><a href="https://code.google.com/apis/console/#services">'.__('Activate the "translate API" service').'</a></li>'.
'</ul>';
}
public function save()
{
$key = empty($_POST['translater_google_proposal_key']) ?
'' : $_POST['translater_google_proposal_key'];
$this->core->blog->settings->translater->put('translater_google_proposal_key',$key,'string','',true,true);
}
public function translate($str,$from,$to)
{
try
{
$data = array(
'key' => $this->key,
'q' => $str,
'source' => $from,
'target' => $to
);
$path = '';
$client = netHttp::initClient($this->api,$path);
$client->setUserAgent($this->agent);
$client->useGzip(false);
$client->setPersistReferers(false);
$client->get($path,$data);
private $api = 'https://www.googleapis.com/language/translate/v2';
private $agent = 'dcTranslater - http://jcd.lv/?q=translater';
private $key = null; //ex: AsSDqsGsfdSDSQFQsfedj9bnzY390aIg-1d
$rs = $client->getContent();
if ($client->getStatus() != 200) {
throw new Exception(__('Failed to query service.'));
}
if (null === ($dec = json_decode($rs))) {
throw new Exception('Failed to decode result');
}
if ('' == @$dec->data->translations[0]->translatedText) {
throw new Exception('No data response');
}
return $dec->data->translations[0]->translatedText;
}
catch (Exception $e) {}
return '';
}
}
?>
protected function setup()
{
$this->key = $this->core->blog->settings->translater->translater_google_proposal_key;
$this->setName(__('Google'));
$this->setDesc(__('Google Translation Tool API'));
$this->setActive(!empty($this->key));
}
public function form()
{
return
'<p><label class="classic" for="translater_google_proposal_key">' .
__('API Console Single Access Key') . '<br />' .
form::field('translater_google_proposal_key', 65, 255, $this->key) .
'</label></p>'.
'<p>' . __('You must have on Google API console:') . '</p>' .
'<ul>' .
'<li><a href="https://code.google.com/apis/console/#access">' . __('A single access API key') . '</a></li>' .
'<li><a href="https://code.google.com/apis/console/#services">' . __('Activate the "translate API" service') . '</a></li>' .
'</ul>';
}
public function save()
{
$key = empty($_POST['translater_google_proposal_key']) ?
'' : $_POST['translater_google_proposal_key'];
$this->core->blog->settings->translater->put('translater_google_proposal_key', $key, 'string', '', true, true);
}
public function translate($str, $from, $to)
{
try {
$data = array(
'key' => $this->key,
'q' => $str,
'source' => $from,
'target' => $to
);
$path = '';
$client = netHttp::initClient($this->api, $path);
$client->setUserAgent($this->agent);
$client->useGzip(false);
$client->setPersistReferers(false);
$client->get($path,$data);
$rs = $client->getContent();
if ($client->getStatus() != 200) {
throw new Exception(__('Failed to query service.'));
}
if (null === ($dec = json_decode($rs))) {
throw new Exception('Failed to decode result');
}
if ('' == @$dec->data->translations[0]->translatedText) {
throw new Exception('No data response');
}
return $dec->data->translations[0]->translatedText;
}
catch (Exception $e) {}
return '';
}
}

View file

@ -3,8 +3,7 @@
#
# This file is part of translater, a plugin for Dotclear 2.
#
# Copyright (c) 2009-2013 Jean-Christian Denis and contributors
# contact@jcdenis.fr
# Copyright (c) 2009-2016 Jean-Christian Denis and contributors
#
# Licensed under the GPL version 2.0 license.
# A copy of this license is available in LICENSE file or at
@ -12,7 +11,9 @@
#
# -- END LICENSE BLOCK ------------------------------------
if (!defined('DC_CONTEXT_ADMIN')){return;}
if (!defined('DC_CONTEXT_ADMIN')) {
return;
}
/**
* Microsoft proposal tool.
@ -21,115 +22,115 @@ if (!defined('DC_CONTEXT_ADMIN')){return;}
*/
class microsoftProposalTool extends translaterProposalTool
{
private $client = null; //ex: b6057813-234b-4154-b324-6342c27f608f
private $secret = null; //ex: DsdDScn/+xdSFF1GDxdx1wbkKPphAfAVSH5VXDBVDI=
protected function setup()
{
$this->setActive(false);
$this->client = $this->core->blog->settings->translater->translater_microsoft_proposal_client;
$this->secret = $this->core->blog->settings->translater->translater_microsoft_proposal_secret;
$this->setName(__('Bing'));
$this->setDesc(__('Microsoft Bing translation tool'));
$this->setActive(!empty($this->client) && !empty($this->secret));
}
public function form()
{
return
'<p><label class="classic" for="translater_microsoft_proposal_client">'.
__('Application client ID').'<br />'.
form::field('translater_microsoft_proposal_client',65,255,$this->client).
'</label></p>'.
'<p><label class="classic" for="translater_microsoft_proposal_secret">'.
__('Application client Secret').'<br />'.
form::field('translater_microsoft_proposal_secret',65,255,$this->secret).
'</label></p>'.
'<p>'.__('You must have:').'</p>'.
'<ul>'.
'<li><a href="https://datamarket.azure.com/account">'.__('A Microsoft Windows Azure account').'</a></li>'.
'<li><a href="https://datamarket.azure.com/dataset/bing/microsofttranslator">'.__('A valid subscription to Microsoft Translator').'</a></li>'.
'<li><a href="https://datamarket.azure.com/developer/applications/">'.__('And register an application').'</a></li>'.
'</ul>';
}
public function save()
{
$client = empty($_POST['translater_microsoft_proposal_client']) ?
'' : $_POST['translater_microsoft_proposal_client'];
$secret = empty($_POST['translater_microsoft_proposal_secret']) ?
'' : $_POST['translater_microsoft_proposal_secret'];
$this->core->blog->settings->translater->put('translater_microsoft_proposal_client',$client,'string','',true,true);
$this->core->blog->settings->translater->put('translater_microsoft_proposal_secret',$secret,'string','',true,true);
}
public function translate($str,$from,$to)
{
try {
return $this->doYourFuckingJob($this->client,$this->secret,$str,$from,$to);
}
catch (Exception $e) {}
return '';
}
//
// Microsoft fucking oAuth
//
private function doYourFuckingJob($client,$secret,$str,$from,$to)
{
try {
//Client ID of the application.
$clientID = $client;
//Client Secret key of the application.
$clientSecret = $secret;
//OAuth Url.
$authUrl = "https://datamarket.accesscontrol.windows.net/v2/OAuth2-13/";
//Application Scope Url
$scopeUrl = "http://api.microsofttranslator.com";
//Application grant type
$grantType = "client_credentials";
//Get the Access token.
$accessToken = $this->getTokens($grantType, $scopeUrl, $clientID, $clientSecret, $authUrl);
//Create the authorization Header string.
$authHeader = "Authorization: Bearer ". $accessToken;
//Set the params.//
$fromLanguage = $from;
$toLanguage = $to;
$inputStr = $str;
$contentType = 'text/plain';
$category = 'general';
$params = "text=".urlencode($inputStr)."&to=".$toLanguage."&from=".$fromLanguage;
$translateUrl = "http://api.microsofttranslator.com/v2/Http.svc/Translate?$params";
//Get the curlResponse.
$curlResponse = $this->curlRequest($translateUrl, $authHeader);
//Interprets a string of XML into an object.
$xmlObj = simplexml_load_string($curlResponse);
foreach((array)$xmlObj[0] as $val){
$translatedStr = $val;
}
return (string) $translatedStr;
/*
echo "<table border=2px>";
echo "<tr>";
echo "<td><b>From $fromLanguage</b></td><td><b>To $toLanguage</b></td>";
echo "</tr>";
echo "<tr><td>".$inputStr."</td><td>".$translatedStr."</td></tr>";
echo "</table>";
*/
} catch (Exception $e) {
throw $e;
}
}
private $client = null; //ex: b6057813-234b-4154-b324-6342c27f608f
private $secret = null; //ex: DsdDScn/+xdSFF1GDxdx1wbkKPphAfAVSH5VXDBVDI=
protected function setup()
{
$this->setActive(false);
$this->client = $this->core->blog->settings->translater->translater_microsoft_proposal_client;
$this->secret = $this->core->blog->settings->translater->translater_microsoft_proposal_secret;
$this->setName(__('Bing'));
$this->setDesc(__('Microsoft Bing translation tool'));
$this->setActive(!empty($this->client) && !empty($this->secret));
}
public function form()
{
return
'<p><label class="classic" for="translater_microsoft_proposal_client">' .
__('Application client ID') . '<br />' .
form::field('translater_microsoft_proposal_client', 65, 255, $this->client) .
'</label></p>' .
'<p><label class="classic" for="translater_microsoft_proposal_secret">' .
__('Application client Secret') . '<br />' .
form::field('translater_microsoft_proposal_secret', 65, 255, $this->secret) .
'</label></p>' .
'<p>' . __('You must have:') . '</p>' .
'<ul>' .
'<li><a href="https://datamarket.azure.com/account">' . __('A Microsoft Windows Azure account') . '</a></li>' .
'<li><a href="https://datamarket.azure.com/dataset/bing/microsofttranslator">' . __('A valid subscription to Microsoft Translator') . '</a></li>' .
'<li><a href="https://datamarket.azure.com/developer/applications/">' . __('And register an application') . '</a></li>' .
'</ul>';
}
public function save()
{
$client = empty($_POST['translater_microsoft_proposal_client']) ?
'' : $_POST['translater_microsoft_proposal_client'];
$secret = empty($_POST['translater_microsoft_proposal_secret']) ?
'' : $_POST['translater_microsoft_proposal_secret'];
$this->core->blog->settings->translater->put('translater_microsoft_proposal_client', $client, 'string', '', true, true);
$this->core->blog->settings->translater->put('translater_microsoft_proposal_secret', $secret, 'string', '', true, true);
}
public function translate($str, $from, $to)
{
try {
return $this->doYourFuckingJob($this->client, $this->secret, $str, $from, $to);
} catch (Exception $e) {}
return '';
}
//
// Microsoft fucking oAuth
//
private function doYourFuckingJob($client, $secret, $str, $from, $to)
{
try {
//Client ID of the application.
$clientID = $client;
//Client Secret key of the application.
$clientSecret = $secret;
//OAuth Url.
$authUrl = "https://datamarket.accesscontrol.windows.net/v2/OAuth2-13/";
//Application Scope Url
$scopeUrl = "http://api.microsofttranslator.com";
//Application grant type
$grantType = "client_credentials";
//Get the Access token.
$accessToken = $this->getTokens($grantType, $scopeUrl, $clientID, $clientSecret, $authUrl);
//Create the authorization Header string.
$authHeader = "Authorization: Bearer " . $accessToken;
//Set the params.//
$fromLanguage = $from;
$toLanguage = $to;
$inputStr = $str;
$contentType = 'text/plain';
$category = 'general';
$params = "text=" . urlencode($inputStr) . "&to=" . $toLanguage . "&from=" . $fromLanguage;
$translateUrl = "http://api.microsofttranslator.com/v2/Http.svc/Translate?$params";
//Get the curlResponse.
$curlResponse = $this->curlRequest($translateUrl, $authHeader);
//Interprets a string of XML into an object.
$xmlObj = simplexml_load_string($curlResponse);
foreach((array)$xmlObj[0] as $val){
$translatedStr = $val;
}
return (string) $translatedStr;
/*
echo "<table border=2px>";
echo "<tr>";
echo "<td><b>From $fromLanguage</b></td><td><b>To $toLanguage</b></td>";
echo "</tr>";
echo "<tr><td>" . $inputStr . "</td><td>" . $translatedStr . "</td></tr>";
echo "</table>";
*/
} catch (Exception $e) {
throw $e;
}
}
/*
* Get the access token.
*
@ -141,8 +142,8 @@ class microsoftProposalTool extends translaterProposalTool
*
* @return string.
*/
private function getTokens($grantType, $scopeUrl, $clientID, $clientSecret, $authUrl)
{
private function getTokens($grantType, $scopeUrl, $clientID, $clientSecret, $authUrl)
{
try {
//Initialize the Curl Session.
$ch = curl_init();
@ -169,9 +170,9 @@ class microsoftProposalTool extends translaterProposalTool
$strResponse = curl_exec($ch);
//Get the Error Code returned by Curl.
$curlErrno = curl_errno($ch);
if($curlErrno){
if($curlErrno) {
$curlError = curl_error($ch);
curl_close($ch);
curl_close($ch);
throw new Exception($curlError);
}
//Close the Curl Session.
@ -186,7 +187,7 @@ class microsoftProposalTool extends translaterProposalTool
throw $e;
}
}
/*
* Create and execute the HTTP CURL request.
*
@ -214,12 +215,11 @@ class microsoftProposalTool extends translaterProposalTool
$curlErrno = curl_errno($ch);
if ($curlErrno) {
$curlError = curl_error($ch);
curl_close($ch);
curl_close($ch);
throw new Exception($curlError);
}
//Close a cURL session.
curl_close($ch);
return $curlResponse;
}
}
?>
}

View file

@ -3,8 +3,7 @@
#
# This file is part of translater, a plugin for Dotclear 2.
#
# Copyright (c) 2009-2013 Jean-Christian Denis and contributors
# contact@jcdenis.fr
# Copyright (c) 2009-2016 Jean-Christian Denis and contributors
#
# Licensed under the GPL version 2.0 license.
# A copy of this license is available in LICENSE file or at
@ -12,7 +11,6 @@
#
# -- END LICENSE BLOCK ------------------------------------
/**
* Translater proposal tool.
*
@ -20,106 +18,105 @@
*/
abstract class translaterProposalTool
{
public $core;
private $active = false;
private $name = 'unknow';
private $desc = 'no description';
/**
Constructor
*/
final public function __construct($core)
{
$this->core = $core;
$this->setup();
}
/**
Set name of this tool
@param string Tool's name
*/
final protected function setName($name)
{
$this->name = (string) $name;
}
/**
Get name of this tool
@return string Tool's name
*/
final public function getName()
{
return $this->name;
}
/**
Set description of this tool
@param string Tool's description
*/
final protected function setDesc($desc)
{
$this->desc = (string) $desc;
}
/**
Get description of this tool
@return string Tool's description
*/
final public function getDesc()
{
return $this->desc;
}
/**
Set tool as (un)active
@param boolean $active True to set it as active
*/
final protected function setActive($active)
{
$this->active = (boolean) $active;
}
/**
Check if this tool is active
@return boolean True if it is active
*/
final public function isActive()
{
return $this->active;
}
/**
Set tool's info - using setName(),setDesc(),setActive()
*/
abstract protected function setup();
/**
Get configuration interface
@return Form field
*/
abstract public function form();
/**
Save configuration
*/
abstract public function save();
/**
Translate a string from a language to another
@param string $str Trimed UTF-8 string to translate
@param string $from Source language code
@param string to Destination language code
@return Translated string
*/
abstract public function translate($str,$from,$to);
}
?>
public $core;
private $active = false;
private $name = 'unknow';
private $desc = 'no description';
/**
Constructor
*/
final public function __construct($core)
{
$this->core = $core;
$this->setup();
}
/**
Set name of this tool
@param string Tool's name
*/
final protected function setName($name)
{
$this->name = (string) $name;
}
/**
Get name of this tool
@return string Tool's name
*/
final public function getName()
{
return $this->name;
}
/**
Set description of this tool
@param string Tool's description
*/
final protected function setDesc($desc)
{
$this->desc = (string) $desc;
}
/**
Get description of this tool
@return string Tool's description
*/
final public function getDesc()
{
return $this->desc;
}
/**
Set tool as (un)active
@param boolean $active True to set it as active
*/
final protected function setActive($active)
{
$this->active = (boolean) $active;
}
/**
Check if this tool is active
@return boolean True if it is active
*/
final public function isActive()
{
return $this->active;
}
/**
Set tool's info - using setName(),setDesc(),setActive()
*/
abstract protected function setup();
/**
Get configuration interface
@return Form field
*/
abstract public function form();
/**
Save configuration
*/
abstract public function save();
/**
Translate a string from a language to another
@param string $str Trimed UTF-8 string to translate
@param string $from Source language code
@param string to Destination language code
@return Translated string
*/
abstract public function translate($str,$from,$to);
}

2273
index.php

File diff suppressed because it is too large Load diff

View file

@ -1,24 +1,18 @@
<html>
<html>
<head>
<title>Translater</title>
</head>
<body>
<h3>Paramètres</h3>
<h4>Paramètres</h4>
<dl>
<dt>Activer l'interface simple</dt>
<dd>Permet de n'avoir que l'essentiel sous les yeux.</dd>
<dt>Utiliser deux colonnes sur la page d'administrations</dt>
<dt>Utiliser deux colonnes sur la page d'administration</dt>
<dd>Permet d'avoir un affichage sur deux colonnes.</dd>
<dt>Activer le menu de la page des extensions</dt>
<dd>Ajoute un onglet sur la page de gestion des extensions.</dd>
<dt>Activer le menu de la page des thèmes</dt>
<dd>Ajoute un lien sur les details du thème sélectionné sur le pages de gestion des thèmes.</dd>
<dt>Ecrire les fichier .po</dt>
<dd>C'est le format par défaut des fichiers de langue de Dotclear.</dd>
@ -39,13 +33,13 @@
<dt>Ecrire les informations à propos de l'auteur</dt>
<dd>Ajoute aux fichiers de langue <em>(si les commentaires sont actifs)</em> des informations à propos de l'auteur de la traduction.
Ces informations peuvent ne pas être présentes pour un auteur elles seront alors ignorées. Il accepte les masques suivants:
<ul>
<li>displayname : pseudo de l'auteur</li>
<li>firstname : prénom de l'auteur</li>
<li>name : nom de l'auteur</li>
<li>email : email de l'auteur</li>
<li>url : site de l'auteur</li>
</ul>
<ul>
<li>displayname : pseudo de l'auteur</li>
<li>firstname : prénom de l'auteur</li>
<li>name : nom de l'auteur</li>
<li>email : email de l'auteur</li>
<li>url : site de l'auteur</li>
</ul>
</dd>
<dt>Utiliser un outil d'aide à la traduction</dt>
@ -53,7 +47,7 @@
une alerte javascript avec la traduction apparait.</dd>
<dt>Langue par default des sources l10n</dt>
<dd>Langue des textes présents dans les fonctions:<br/>__('...') et {{tpl:lang ...}.</dd>
<dd>Langue des textes présents dans les fonctions:<br />__('...') et {{tpl:lang ...}}.</dd>
<dt>Ecraser les langages existants</dt>
<dd>Lors de l'import d'un paquetage de langue, si cette option est activé, une langue présente dans l'extension sera remplacé par celle venant du paquetage.</dd>
@ -61,13 +55,13 @@
<dt>Nom du paquetage exporté</dt>
<dd>C'est le nom par défaut du fichier zip lorsque vous exportez des sauvegardes.</dd>
<dd>Il accepte les masques suivants:
<ul>
<li>type : plugin ou thème</li>
<li>module : nom du module</li>
<li>version : la version du module</li>
<li>timestamp : le temps unix</li>
<li>%Y%m%D.... : les masques de date Dotclear</li>
</ul>
<ul>
<li>type : plugin ou thème</li>
<li>module : nom du module</li>
<li>version : la version du module</li>
<li>timestamp : le temps unix</li>
<li>%Y%m%D.... : les masques de date Dotclear</li>
</ul>
</dd>
<dt>Faire des sauvegardes lors de modifications</dt>
@ -79,23 +73,23 @@
<dt>Stoquer les sauvegardes dans un dossier particulier</dt>
<dd>Plusieurs choix de lieu de sauvegarde s'offrent:
<ul>
<ul>
<li>Repertoires <em>locales</em> de chaque module</li>
<li>Repertoire racine des extensions</li>
<li>Repertoire publique <em>(du blog en cours)</em></li>
<li>Repertoire <em>cache</em> de Dotclear</li>
<li>Repertoire unique du module <em>translater</em></li>
</ul>
<li>Repertoire racine des extensions</li>
<li>Repertoire publique <em>(du blog en cours)</em></li>
<li>Repertoire <em>cache</em> de Dotclear</li>
<li>Repertoire unique du module <em>translater</em></li>
</ul>
</dd>
<dd>Pour ne pas tous mélanger il est préférable de stoquer les sauvegardes dans chaque module associé.</dd>
</dl>
<h3>Ajout/Supression/Modification</h3>
<h4>Ajout/Supression/Modification</h4>
<p>Cet onglet permet d'ajouter, de supprimer ou d'étider des langues d'une extension.
Il est possible de copier la traduction d'une langue à une autre lors de sa création.
La supression d'une langue ne supprimera pas les éventuelles sauvegardes associées à cette langue.</p>
<h3>Edition d'une langue</h3>
<h4>Edition d'une langue</h4>
<dl>
<dt>Groupe</dt>
<dd>Cette option est uniquement présente en mode avancé.
@ -121,7 +115,32 @@ La supression d'une langue ne supprimera pas les éventuelles sauvegardes associ
<dd>Indique la traduction et l'extension qui utilise cette chaine le cas échéant.</dd>
</dl>
<h3>Sauvegardes</h3>
<h4>Import/Export</h4>
<dl>
<dt>Importer</dt>
<dd>Il est possible d'importer des paquetages de langue.
Le format de ces paquetages est le <em>zip</em> et la structure pour chaque fichier doit obligatoirement avoir:
<ul>
<li>le nom du module</li>
<li>le repertoire <em>locales</em></li>
<li>le code de la langue</li>
<li>le nom du fichier de langue</li>
</ul>
Ce qui donne par exemple pour le plugin <em>translater</em>:
<ul>
<li>translater/locales/fr/main.po</li>
<li>translater/locales/fr/main.lang.php</li>
<li>translater/locales/fr/error.po</li>
<li>...</li>
</ul>
Seuls les fichiers .po et .lang.php sont reconnus.
Un paquetage peut contenir plusieurs langues et plusieurs extensions.
Si l'import se fait depuis la page d'une extension, seule cette extension sera importée.
Si l'import se fait depuis la page général, toutes les extensions seront importées.
Si l'option <em>Ecraser les fichier lors de l'import</em> est activée dans les paramètres alors les fichiers exsitant seront remplacés.</dd>
</dl>
<h4>Sauvegardes</h4>
<dl>
<dt>Créer une sauvegarde</dt>
<dd>Si des traductions existent, une partie "Créer une sauvegarde" apparait.
@ -133,42 +152,26 @@ La supression d'une langue ne supprimera pas les éventuelles sauvegardes associ
Il suffit de selectionner les sauvegardes puis de choisir "Restaurer les sauvegardes". Elles seront restaurées par ordre chronologique.
C'est à dire que la plus ancienne sauvegarde sera restaurée en premier puis les plus récentes.
Dans cette même liste on peut supprimer des sauvegardes. La date, la langue et la taille de la sauvegarde sont affichées dans cette liste.</dd>
</dl>
<h3>Import/Export</h3>
<h4>Comportements</h4>
<dl>
<dt>Importer</dt>
<dd>Il est possible d'importer des paquetages de langue.
Le format de ces paquetages est le <em>zip</em> et la structure pour chaque fichier doit obligatoirement avoir:
<ul>
<li>le nom du module</li>
<li>le repertoire <em>locales</em></li>
<li>le code de la langue</li>
<li>le nom du fichier de langue</li>
</ul>
Ce qui donne par exemple pour l'extension <em>translater</em>:
<ul>
<li>translater/locales/fr/main.po</li>
<li>translater/locales/fr/main.lang.php</li>
<li>translater/locales/fr/error.po</li>
<li>...</li>
</ul>
Seuls les fichiers .po et .lang.php sont reconnus.
Un paquetage peut contenir plusieurs langues et plusieurs extensions.
Si l'import se fait depuis la page d'une extension, seule cette extension sera importée.
Si l'import se fait depuis la page général, toutes les extensions seront importées.
Si l'option <em>Ecraser les fichier lors de l'import</em> est activée dans les paramètres alors les fichiers exsitant seront remplacés.</dd>
<dt>Menu de départ par défaut</dt>
<dd>Permet de choisir quelle page apparaît lors de l'accès au présent plugin.</dd>
<dt>Activer le menu de la page des plugins</dt>
<dd>Ajoute un onglet sur la page de gestion des plugins.</dd>
<dt>Activer le menu de la page des thèmes</dt>
<dd>Ajoute un lien sur les details du thème sélectionné sur le pages de gestion des thèmes.</dd>
</dl>
<h3>Support</h3>
<p>Si vous souhaitez plus d'aide ou apporter votre contribution à cette extension, voici quelques liens utiles.</p>
<h4>Support</h4>
<p>Si vous souhaitez plus d'aide ou apporter votre contribution à ce plugin, voici quelques liens utiles.</p>
<ul>
<li><a href="http://forum.dotclear.net/viewtopic.php?id=39220">Sujet sur le forum Dotclear</a></li>
<li><a href="http://lab.dotclear.org/wiki/plugin/translater">Page dédiée du lab Dotclear</a></li>
<li><a href="http://jcd.lv/?q=translater">Blog de l'auteur</a></li>
<li><a href="http://plugins.dotaddict.org/dc2/details/translater">Fiche du plugin sur dotaddict</a></li>
</ul>
</body>
</html>
</html>

View file

@ -1,402 +1,420 @@
<?php
// Language: Français
// Module: translater - 2013.05.11
// Date: 2013-05-12 23:35:00
// Translated with dcTranslater - 2013.05.11
// Module: translater - 2018.02.14
// Date: 2018-10-18 09:43:01
// Translated with dcTranslater - 2018.02.14
#_admin.php:26
#index.php:537
#index.php:570
#index.php:1384
#_admin.php:25
#_admin.php:112
#index.php:536
#index.php:569
#index.php:1383
$GLOBALS['__l10n']['Translater'] = 'Traducteur';
#_admin.php:44
$GLOBALS['__l10n']['Translate extensions'] = 'Traduire les extensions';
#_admin.php:43
$GLOBALS['__l10n']['Translate plugins'] = 'Traduire les plugins';
#_admin.php:48
#index.php:670
$GLOBALS['__l10n']['Name'] = 'Nom';
#_admin.php:61
$GLOBALS['__l10n']['Translate this plugin'] = 'Traduire ce plugin';
#_admin.php:62
$GLOBALS['__l10n']['Translate this plugin'] = 'Traduire cette extension';
#_admin.php:85
#_admin.php:84
$GLOBALS['__l10n']['Translate this theme'] = 'Traduire ce thème';
#inc/class.dc.translater.php:434
#_uninstall.php:20
$GLOBALS['__l10n']['delete all settings'] = 'effacer tous les paramètres';
#_uninstall.php:27
$GLOBALS['__l10n']['delete plugin files'] = 'effacer les fichiers du plugin';
#_uninstall.php:34
$GLOBALS['__l10n']['delete the version number'] = 'effacer le n° de version';
#_uninstall.php:42
$GLOBALS['__l10n']['delete all %s settings'] = 'effacer tous les paramètres de %s';
#_uninstall.php:49
$GLOBALS['__l10n']['delete %s plugin files'] = 'effacer les fichiers du plugin %s';
#_uninstall.php:56
$GLOBALS['__l10n']['delete %s version number'] = 'effacer la version de %s';
#inc/class.dc.translater.php:359
$GLOBALS['__l10n']['Cannot find module %s'] = 'Impossible de trouver le module %s';
#inc/class.dc.translater.php:437
$GLOBALS['__l10n']['Cannot find backups folder for module %s'] = 'Impossible de trouver le dossier de sauvegarde du module %s';
#inc/class.dc.translater.php:450
#inc/class.dc.translater.php:453
$GLOBALS['__l10n']['Cannot find languages folder for module %s'] = 'Impossible de trouver le dossier de langue du module %s';
#inc/class.dc.translater.php:470
#inc/class.dc.translater.php:473
$GLOBALS['__l10n']['Cannot find root folder for module %s'] = 'Impossible de trouver le dossier racine du module %s';
#inc/class.dc.translater.php:499
#inc/class.dc.translater.php:502
$GLOBALS['__l10n']['Limit of %s backups for module %s exceed'] = 'La limite de %s sauvegardes pour le module % est dépassée';
#inc/class.dc.translater.php:561
#inc/class.dc.translater.php:951
#inc/class.dc.translater.php:1028
#inc/class.dc.translater.php:564
#inc/class.dc.translater.php:954
#inc/class.dc.translater.php:1031
$GLOBALS['__l10n']['Cannot find language folder %s for module %s'] = 'Impossible de trouver le dossier de langue %s pour le module %s';
#inc/class.dc.translater.php:616
#inc/class.dc.translater.php:619
$GLOBALS['__l10n']['Cannot delete backup file %s'] = 'Impossible d\'effacer le fichier de sauvegarde %s';
#inc/class.dc.translater.php:634
#inc/class.dc.translater.php:637
$GLOBALS['__l10n']['Cannot find backup file %s'] = 'Impossible de trouver le fichier de sauvegarde %s';
#inc/class.dc.translater.php:660
#inc/class.dc.translater.php:663
$GLOBALS['__l10n']['Wrong export query'] = 'Mauvaise requète d\'exportation';
#inc/class.dc.translater.php:671
#inc/class.dc.translater.php:674
$GLOBALS['__l10n']['Cannot use export mask %s'] = 'Impossible d\'utiliser le masque d\'exportation %s';
#inc/class.dc.translater.php:759
#inc/class.dc.translater.php:762
$GLOBALS['__l10n']['Wrong import query'] = 'Mauvaise requète d\'importation';
#inc/class.dc.translater.php:808
#inc/class.dc.translater.php:811
$GLOBALS['__l10n']['Nothing to import for these modules in pack %s'] = 'Rien à importer pour ces modules dans le paquetage %s';
#inc/class.dc.translater.php:837
#inc/class.dc.translater.php:840
$GLOBALS['__l10n']['Zip file %s is not in translater format'] = 'Le fichier zip n\'est pas au format de translater';
#inc/class.dc.translater.php:897
#inc/class.dc.translater.php:900
$GLOBALS['__l10n']['Language %s already exists for module %s'] = 'La langue %s existe dèjà pour le module %s';
#inc/class.dc.translater.php:908
#inc/class.dc.translater.php:911
$GLOBALS['__l10n']['Cannot copy file from language %s for module %s'] = 'Impossible de copier le fichier depuis le langage %s pour le module %s';
#inc/class.dc.translater.php:1000
#inc/class.dc.translater.php:1003
$GLOBALS['__l10n']['No string to write, language %s deleted for module %s'] = 'Aucune chaine à écrire, la langue %s a été effacée pour le module %s';
#inc/class.dc.translater.php:1264
#inc/class.dc.translater.php:1267
$GLOBALS['__l10n']['Cannot grant write acces on lang file %s'] = 'Impossible d\'avoir les droits en écriture sur le fichier de langue %s';
#inc/class.dc.translater.php:1275
#inc/class.dc.translater.php:1278
$GLOBALS['__l10n']['Cannot write lang file %s'] = 'Impossible d\'écrire le fichier de langue %s';
#inc/class.dc.translater.php:1579
#inc/class.dc.translater.php:1583
$GLOBALS['__l10n']['Cannot find language for code %s'] = 'Impossible de trouver de langue pour le code %s';
#inc/class.translater.rest.php:42
#inc/class.translater.rest.php:41
$GLOBALS['__l10n']['Missing params'] = 'Paramètres manquants';
#inc/class.translater.rest.php:51
#inc/class.translater.rest.php:50
$GLOBALS['__l10n']['Failed to get translation tool'] = 'Impossible de trouver l\'outil de traduction';
#inc/class.translater.rest.php:55
#inc/class.translater.rest.php:54
$GLOBALS['__l10n']['Translation tool is not configured'] = 'L\'outil de traduction n\'est pas configuré';
#inc/lib.translater.google.php:44
#inc/lib.translater.google.php:43
$GLOBALS['__l10n']['You must have on Google API console:'] = 'Vous devez avoir sur la console des API Google :';
#inc/lib.translater.google.php:80
$GLOBALS['__l10n']['Failed to query service.'] = 'Impossible d\'interoger le service.';
#inc/lib.translater.google.php:46
$GLOBALS['__l10n']['Activate the "translate API" service'] = 'Activer le service "translate API"';
#inc/lib.translater.microsoft.php:49
#inc/lib.translater.google.php:79
$GLOBALS['__l10n']['Failed to query service.'] = 'Impossible d\'interroger le service.';
#inc/lib.translater.microsoft.php:48
$GLOBALS['__l10n']['You must have:'] = 'Vous devez avoir :';
#index.php:26
#index.php:526
#index.php:1382
#index.php:25
#index.php:525
#index.php:1381
$GLOBALS['__l10n']['Settings'] = 'Paramètres';
#index.php:42
#index.php:27
#index.php:426
#index.php:462
#index.php:500
#index.php:571
$GLOBALS['__l10n']['Themes'] = 'Thèmes';
#index.php:41
$GLOBALS['__l10n']['locales folders of each module'] = 'le répertoire locales de chaque module';
#index.php:43
$GLOBALS['__l10n']['plugins folder root'] = 'le répertoire racine des extensions';
#index.php:42
$GLOBALS['__l10n']['plugins folder root'] = 'le répertoire racine des plugins';
#index.php:44
#index.php:43
$GLOBALS['__l10n']['public folder root'] = 'le répertoire public du blog';
#index.php:45
#index.php:44
$GLOBALS['__l10n']['cache folder of Dotclear'] = 'le répertoire cache de Dotclear';
#index.php:46
$GLOBALS['__l10n']['locales folder of translater'] = 'le répertoire locales de l\'extension translater';
#index.php:45
$GLOBALS['__l10n']['locales folder of translater'] = 'le répertoire locales du plugin translater';
#index.php:51
#index.php:50
$GLOBALS['__l10n']['Translation successfully updated'] = 'Traduction mise à jour avec succès';
#index.php:52
$GLOBALS['__l10n']['Translation successfully created'] = 'Traduction crée avec succès';
#index.php:51
$GLOBALS['__l10n']['Translation successfully created'] = 'Traduction créée avec succès';
#index.php:53
#index.php:52
$GLOBALS['__l10n']['Translation successfully deleted'] = 'Traduction effacée avec succès';
#index.php:54
$GLOBALS['__l10n']['Backups successfully create'] = 'Sauvegardes crées avec succès';
#index.php:53
$GLOBALS['__l10n']['Backups successfully create'] = 'Sauvegardes créées avec succès';
#index.php:55
#index.php:54
$GLOBALS['__l10n']['Backups successfully restored'] = 'Sauvegardes effectuées avec succès';
#index.php:56
#index.php:55
$GLOBALS['__l10n']['Backups successfully deleted'] = 'Sauvegardes effacées avec succès';
#index.php:57
#index.php:56
$GLOBALS['__l10n']['Package successfully imported'] = 'Paquetage importé avec succès';
#index.php:58
#index.php:57
$GLOBALS['__l10n']['Package successfully exported'] = 'Paquetage exporté avec succès';
#index.php:62
#index.php:61
$GLOBALS['__l10n']['Failed to update settings: %s'] = 'Impossible de mettre à jour les paramètres : %s';
#index.php:63
#index.php:62
$GLOBALS['__l10n']['Failed to update translation: %s'] = 'Impossible de mettre à jour la traduction : %s';
#index.php:64
#index.php:63
$GLOBALS['__l10n']['Failed to create translation: %s'] = 'Impossible de créer la traduction : %s';
#index.php:65
#index.php:64
$GLOBALS['__l10n']['Failed to delete translation: %s'] = 'Impossible d\'effacer la traduction : %s';
#index.php:66
#index.php:65
$GLOBALS['__l10n']['Failed to create backups: %s'] = 'Impossible de créer les sauvegardes : %s';
#index.php:67
#index.php:66
$GLOBALS['__l10n']['Failed to restore backups: %s'] = 'Impossible de restaurer les sauvegardes : %s';
#index.php:68
#index.php:67
$GLOBALS['__l10n']['Failed to delete backups: %s'] = 'Impossible d\'effacer les sauvegardes : %s';
#index.php:69
#index.php:68
$GLOBALS['__l10n']['Failed to import package: %s'] = 'Impossible d\'importer le paquetage : %s';
#index.php:70
#index.php:69
$GLOBALS['__l10n']['Failed to export package: %s'] = 'Impossible d\'exporter le paquetage : %s';
#index.php:112
#index.php:111
$GLOBALS['__l10n']['No lang to create'] = 'Pas de langue à créer';
#index.php:134
#index.php:133
$GLOBALS['__l10n']['No lang to delete'] = 'Pas de langue à effacer';
#index.php:156
#index.php:155
$GLOBALS['__l10n']['No lang to backup'] = 'Pas de langue à sauvegarder';
#index.php:189
#index.php:188
$GLOBALS['__l10n']['No blackup to restore'] = 'Pas de langue à restaurer';
#index.php:208
#index.php:207
$GLOBALS['__l10n']['No bakcup to to restore'] = 'Pas de sauvegarde à restaurer';
#index.php:229
#index.php:247
#index.php:228
#index.php:246
$GLOBALS['__l10n']['No backup to delete'] = 'Pas de sauvegarde à effacer';
#index.php:290
#index.php:364
#index.php:289
#index.php:363
$GLOBALS['__l10n']['Nothing to export'] = 'Rien à exporter';
#index.php:312
#index.php:311
$GLOBALS['__l10n']['No language to update'] = 'Pas de langue à mettre à jour';
#index.php:443
#index.php:490
#index.php:442
#index.php:489
$GLOBALS['__l10n']['Failed to launch translater: %s'] = 'Impossible de démarrer translater : %s';
#index.php:556
#index.php:555
$GLOBALS['__l10n']['Use this %s translation:'] = 'Utiliser la traduction de %s :';
#index.php:557
#index.php:556
$GLOBALS['__l10n']['Translate this text with %s'] = 'Traduire ce texte avec %s';
#index.php:558
#index.php:557
$GLOBALS['__l10n']['Use this text'] = 'Utiliser ce texte';
#index.php:606
#index.php:605
$GLOBALS['__l10n']['Translate theme "%s" (by %s)'] = 'Traduire le thème "%s" (de %s)';
#index.php:607
$GLOBALS['__l10n']['Translate plugin "%s" (by %s)'] = 'Traduire l\'extension "%s" (de %s)';
#index.php:606
$GLOBALS['__l10n']['Translate plugin "%s" (by %s)'] = 'Traduire le plugin "%s" (de %s)';
#index.php:627
#index.php:741
#index.php:626
#index.php:740
$GLOBALS['__l10n']['Edit translation'] = 'Modifier la traduction';
#index.php:639
#index.php:638
$GLOBALS['__l10n']['Id'] = 'Id';
#index.php:649
#index.php:648
$GLOBALS['__l10n']['There is no editable modules'] = 'Il n\'y a pas de modules modifiables.';
#index.php:665
#index.php:664
$GLOBALS['__l10n']['Summary'] = 'Résumé';
#index.php:666
#index.php:665
$GLOBALS['__l10n']['Module'] = 'Module';
#index.php:668
#index.php:667
$GLOBALS['__l10n']['About'] = 'À propos';
#index.php:678
#index.php:677
$GLOBALS['__l10n']['Root'] = 'Racine';
#index.php:680
#index.php:694
#index.php:811
#index.php:1342
#index.php:679
#index.php:693
#index.php:810
#index.php:1341
$GLOBALS['__l10n']['Backups'] = 'Sauvegardes';
#index.php:695
#index.php:694
$GLOBALS['__l10n']['Last backup'] = 'Dernière sauvegarde';
#index.php:722
#index.php:721
$GLOBALS['__l10n']['no backup'] = 'Aucune sauvegarde';
#index.php:731
$GLOBALS['__l10n']['Translations'] = 'Traductions';
#index.php:737
#index.php:736
$GLOBALS['__l10n']['Edit language'] = 'Modifier une langue';
#index.php:757
#index.php:756
$GLOBALS['__l10n']['Add language'] = 'Ajouter une langue';
#index.php:764
#index.php:763
$GLOBALS['__l10n']['Copy from language:'] = 'Copier depuis la langue :';
#index.php:766
#index.php:765
$GLOBALS['__l10n']['Optionnal'] = 'Optionnel';
#index.php:773
#index.php:772
$GLOBALS['__l10n']['Add translation'] = 'Ajouter la traduction';
#index.php:790
#index.php:789
$GLOBALS['__l10n']['Delete language'] = 'Effacer une langue';
#index.php:794
#index.php:793
$GLOBALS['__l10n']['Delete translation'] = 'Effacer la traduction';
#index.php:816
#index.php:815
$GLOBALS['__l10n']['Create backups'] = 'Créer une sauvegarde';
#index.php:818
#index.php:817
$GLOBALS['__l10n']['Choose languages to backup'] = 'Choisir la langue à sauvegarder';
#index.php:839
$GLOBALS['__l10n']['Backup'] = 'Sauvegarde';
#index.php:856
#index.php:855
$GLOBALS['__l10n']['List of backups'] = 'Liste des sauvegardes';
#index.php:860
#index.php:1066
#index.php:859
#index.php:1065
$GLOBALS['__l10n']['File'] = 'Fichier';
#index.php:863
$GLOBALS['__l10n']['Size'] = 'Taille';
#index.php:887
#index.php:886
$GLOBALS['__l10n']['Selected backups action:'] = 'Action sur les sauvegardes sélectionnées :';
#index.php:889
#index.php:888
$GLOBALS['__l10n']['Restore backups'] = 'Restaurer les sauvegardes';
#index.php:890
#index.php:889
$GLOBALS['__l10n']['Delete backups'] = 'Effacer les sauvegardes';
#index.php:916
#index.php:1183
#index.php:915
#index.php:1182
$GLOBALS['__l10n']['Choose language package to import'] = 'Choisir le paquetage de langue à importer';
#index.php:938
#index.php:1240
#index.php:937
#index.php:1239
$GLOBALS['__l10n']['Choose languages to export'] = 'Choisir les langues à exporter';
#index.php:1059
#index.php:1058
$GLOBALS['__l10n']['Group'] = 'Groupe';
#index.php:1061
#index.php:1060
$GLOBALS['__l10n']['String'] = 'Chaîne';
#index.php:1063
#index.php:1284
#index.php:1062
#index.php:1283
$GLOBALS['__l10n']['Translation'] = 'Traduction';
#index.php:1064
#index.php:1063
$GLOBALS['__l10n']['Existing'] = 'Existant';
#index.php:1127
#index.php:1126
$GLOBALS['__l10n']['%s occurrences'] = '%s occurrences';
#index.php:1153
#index.php:1152
$GLOBALS['__l10n']['Total of %s strings.'] = 'Total de %s chaînes.';
#index.php:1155
#index.php:1154
$GLOBALS['__l10n']['Change the group of the selected entries to:'] = 'Changer le groupe des entrées sélectionnées vers :';
#index.php:1212
#index.php:1211
$GLOBALS['__l10n']['Choose modules to export'] = 'Choisir les modules à exporter';
#index.php:1214
#index.php:1213
$GLOBALS['__l10n']['Modules'] = 'Modules';
#index.php:1287
$GLOBALS['__l10n']['Write .po files'] = 'Écrire les fichier .po';
#index.php:1286
$GLOBALS['__l10n']['Write .po files'] = 'Écrire les fichiers .po';
#index.php:1290
$GLOBALS['__l10n']['Write .lang.php files'] = 'Écrire les fichier .lang.php';
#index.php:1289
$GLOBALS['__l10n']['Write .lang.php files'] = 'Écrire les fichiers .lang.php';
#index.php:1293
#index.php:1292
$GLOBALS['__l10n']['Translate also strings of template files'] = 'Traduire également les chaînes des fichiers de template';
#index.php:1296
#index.php:1295
$GLOBALS['__l10n']['Translate only unknow strings'] = 'Traduire uniquement les chaînes inconnues';
#index.php:1299
#index.php:1298
$GLOBALS['__l10n']['Hide default modules of Dotclear'] = 'Cacher les modules d\'origine de Dotclear';
#index.php:1302
#index.php:1301
$GLOBALS['__l10n']['Write comments in files'] = 'Écrire les commentaires dans les fichiers';
#index.php:1305
#index.php:1304
$GLOBALS['__l10n']['Write informations about author in files'] = 'Écrire les informations à propos de l\'auteur dans les fichiers';
#index.php:1309
#index.php:1308
$GLOBALS['__l10n']['Tools'] = 'Outils';
#index.php:1310
#index.php:1309
$GLOBALS['__l10n']['Default language of l10n source:'] = 'Langue par défaut des sources l10n :';
#index.php:1314
#index.php:1313
$GLOBALS['__l10n']['Select and configure the tool to use to translate strings:'] = 'Sélectionner et configurer un outil de traduction :';
#index.php:1326
#index.php:1325
$GLOBALS['__l10n']['Nothing to configure for %s tool.'] = 'Rien à configurer pour l\'outil %s.';
#index.php:1337
#index.php:1336
$GLOBALS['__l10n']['Overwrite existing languages'] = 'Écraser les langages existants';
#index.php:1338
#index.php:1337
$GLOBALS['__l10n']['Name of exported package'] = 'Nom du paquetage exporté';
#index.php:1345
#index.php:1344
$GLOBALS['__l10n']['Make backups when changes are made'] = 'Faire des sauvegardes lors des modifications';
#index.php:1346
#index.php:1345
$GLOBALS['__l10n']['Limit backups to %s files per module'] = 'Limiter les sauvegardes à %s fichiers par module';
#index.php:1349
#index.php:1348
$GLOBALS['__l10n']['Store backups in %s'] = 'Stocker les sauvegardes dans %s';
#index.php:1354
#index.php:1353
$GLOBALS['__l10n']['Behaviors'] = 'Comportements';
#index.php:1355
#index.php:1354
$GLOBALS['__l10n']['Default start menu:'] = 'Menu de départ par défaut :';
#index.php:1360
$GLOBALS['__l10n']['Enable menu on extensions page'] = 'Activer le menu sur la page des extensions';
#index.php:1359
$GLOBALS['__l10n']['Enable menu on extensions page'] = 'Activer le menu sur la page des plugins';
#index.php:1363
#index.php:1362
$GLOBALS['__l10n']['Enable menu on themes page'] = 'Activer le menu sur la page des thèmes';
$GLOBALS['__l10n']['translater'] = 'Traducteur';
$GLOBALS['__l10n']['Translate your Dotclear plugins and themes'] = 'Traduire vos extensions et thèmes pour Dotclear';
$GLOBALS['__l10n']['Translate your Dotclear plugins and themes'] = 'Traduire vos plugins et thèmes pour Dotclear';
?>

View file

@ -1,531 +1,556 @@
# Language: Français
# Module: translater - 2013.05.11
# Date: 2013-05-12 23:35:00
# Translated with translater 2013.05.11
# Module: translater - 2018.02.14
# Date: 2018-10-18 09:43:01
# Translated with translater 2018.02.14
msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Project-Id-Version: translater 2013.05.11\n"
"Project-Id-Version: translater 2018.02.14\n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2013-05-12T23:35:00+00:00\n"
"Last-Translator: Jean-Christian Denis\n"
"PO-Revision-Date: 2018-10-18T09:43:01+00:00\n"
"Last-Translator: brol\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: _admin.php:26
#: index.php:537
#: index.php:570
#: index.php:1384
#: _admin.php:25
#: _admin.php:112
#: index.php:536
#: index.php:569
#: index.php:1383
msgid "Translater"
msgstr "Traducteur"
#: _admin.php:44
msgid "Translate extensions"
msgstr "Traduire les extensions"
#: _admin.php:43
msgid "Translate plugins"
msgstr "Traduire les plugins"
#: _admin.php:48
#: index.php:670
msgid "Name"
msgstr "Nom"
#: _admin.php:62
#: _admin.php:61
msgid "Translate this plugin"
msgstr "Traduire cette extension"
msgstr "Traduire ce plugin"
#: _admin.php:85
#: _admin.php:84
msgid "Translate this theme"
msgstr "Traduire ce thème"
#: inc/class.dc.translater.php:434
#: _uninstall.php:20
msgid "delete all settings"
msgstr "effacer tous les paramètres"
#: _uninstall.php:27
msgid "delete plugin files"
msgstr "effacer les fichiers du plugin"
#: _uninstall.php:34
msgid "delete the version number"
msgstr "effacer le n° de version"
#: _uninstall.php:42
msgid "delete all %s settings"
msgstr "effacer tous les paramètres de %s"
#: _uninstall.php:49
msgid "delete %s plugin files"
msgstr "effacer les fichiers du plugin %s"
#: _uninstall.php:56
msgid "delete %s version number"
msgstr "effacer la version de %s"
#: inc/class.dc.translater.php:359
msgid "Cannot find module %s"
msgstr "Impossible de trouver le module %s"
#: inc/class.dc.translater.php:437
msgid "Cannot find backups folder for module %s"
msgstr "Impossible de trouver le dossier de sauvegarde du module %s"
#: inc/class.dc.translater.php:450
#: inc/class.dc.translater.php:453
msgid "Cannot find languages folder for module %s"
msgstr "Impossible de trouver le dossier de langue du module %s"
#: inc/class.dc.translater.php:470
#: inc/class.dc.translater.php:473
msgid "Cannot find root folder for module %s"
msgstr "Impossible de trouver le dossier racine du module %s"
#: inc/class.dc.translater.php:499
#: inc/class.dc.translater.php:502
msgid "Limit of %s backups for module %s exceed"
msgstr "La limite de %s sauvegardes pour le module % est dépassée"
#: inc/class.dc.translater.php:561
#: inc/class.dc.translater.php:951
#: inc/class.dc.translater.php:1028
#: inc/class.dc.translater.php:564
#: inc/class.dc.translater.php:954
#: inc/class.dc.translater.php:1031
msgid "Cannot find language folder %s for module %s"
msgstr "Impossible de trouver le dossier de langue %s pour le module %s"
#: inc/class.dc.translater.php:616
#: inc/class.dc.translater.php:619
msgid "Cannot delete backup file %s"
msgstr "Impossible d'effacer le fichier de sauvegarde %s"
#: inc/class.dc.translater.php:634
#: inc/class.dc.translater.php:637
msgid "Cannot find backup file %s"
msgstr "Impossible de trouver le fichier de sauvegarde %s"
#: inc/class.dc.translater.php:660
#: inc/class.dc.translater.php:663
msgid "Wrong export query"
msgstr "Mauvaise requète d'exportation"
#: inc/class.dc.translater.php:671
#: inc/class.dc.translater.php:674
msgid "Cannot use export mask %s"
msgstr "Impossible d'utiliser le masque d'exportation %s"
#: inc/class.dc.translater.php:759
#: inc/class.dc.translater.php:762
msgid "Wrong import query"
msgstr "Mauvaise requète d'importation"
#: inc/class.dc.translater.php:808
#: inc/class.dc.translater.php:811
msgid "Nothing to import for these modules in pack %s"
msgstr "Rien à importer pour ces modules dans le paquetage %s"
#: inc/class.dc.translater.php:837
#: inc/class.dc.translater.php:840
msgid "Zip file %s is not in translater format"
msgstr "Le fichier zip n'est pas au format de translater"
#: inc/class.dc.translater.php:897
#: inc/class.dc.translater.php:900
msgid "Language %s already exists for module %s"
msgstr "La langue %s existe dèjà pour le module %s"
#: inc/class.dc.translater.php:908
#: inc/class.dc.translater.php:911
msgid "Cannot copy file from language %s for module %s"
msgstr "Impossible de copier le fichier depuis le langage %s pour le module %s"
#: inc/class.dc.translater.php:1000
#: inc/class.dc.translater.php:1003
msgid "No string to write, language %s deleted for module %s"
msgstr "Aucune chaine à écrire, la langue %s a été effacée pour le module %s"
#: inc/class.dc.translater.php:1264
#: inc/class.dc.translater.php:1267
msgid "Cannot grant write acces on lang file %s"
msgstr "Impossible d'avoir les droits en écriture sur le fichier de langue %s"
#: inc/class.dc.translater.php:1275
#: inc/class.dc.translater.php:1278
msgid "Cannot write lang file %s"
msgstr "Impossible d'écrire le fichier de langue %s"
#: inc/class.dc.translater.php:1579
#: inc/class.dc.translater.php:1583
msgid "Cannot find language for code %s"
msgstr "Impossible de trouver de langue pour le code %s"
#: inc/class.translater.rest.php:42
#: inc/class.translater.rest.php:41
msgid "Missing params"
msgstr "Paramètres manquants"
#: inc/class.translater.rest.php:51
#: inc/class.translater.rest.php:50
msgid "Failed to get translation tool"
msgstr "Impossible de trouver l'outil de traduction"
#: inc/class.translater.rest.php:55
#: inc/class.translater.rest.php:54
msgid "Translation tool is not configured"
msgstr "L'outil de traduction n'est pas configuré"
#: inc/lib.translater.google.php:44
#: inc/lib.translater.google.php:43
msgid "You must have on Google API console:"
msgstr "Vous devez avoir sur la console des API Google :"
#: inc/lib.translater.google.php:80
msgid "Failed to query service."
msgstr "Impossible d'interoger le service."
#: inc/lib.translater.google.php:46
msgid "Activate the \"translate API\" service"
msgstr "Activer le service \"translate API\""
#: inc/lib.translater.microsoft.php:49
#: inc/lib.translater.google.php:79
msgid "Failed to query service."
msgstr "Impossible d'interroger le service."
#: inc/lib.translater.microsoft.php:48
msgid "You must have:"
msgstr "Vous devez avoir :"
#: index.php:26
#: index.php:526
#: index.php:1382
#: index.php:25
#: index.php:525
#: index.php:1381
msgid "Settings"
msgstr "Paramètres"
#: index.php:42
#: index.php:27
#: index.php:426
#: index.php:462
#: index.php:500
#: index.php:571
msgid "Themes"
msgstr "Thèmes"
#: index.php:41
msgid "locales folders of each module"
msgstr "le répertoire locales de chaque module"
#: index.php:43
#: index.php:42
msgid "plugins folder root"
msgstr "le répertoire racine des extensions"
msgstr "le répertoire racine des plugins"
#: index.php:44
#: index.php:43
msgid "public folder root"
msgstr "le répertoire public du blog"
#: index.php:45
#: index.php:44
msgid "cache folder of Dotclear"
msgstr "le répertoire cache de Dotclear"
#: index.php:46
#: index.php:45
msgid "locales folder of translater"
msgstr "le répertoire locales de l'extension translater"
msgstr "le répertoire locales du plugin translater"
#: index.php:51
#: index.php:50
msgid "Translation successfully updated"
msgstr "Traduction mise à jour avec succès"
#: index.php:52
#: index.php:51
msgid "Translation successfully created"
msgstr "Traduction crée avec succès"
msgstr "Traduction créée avec succès"
#: index.php:53
#: index.php:52
msgid "Translation successfully deleted"
msgstr "Traduction effacée avec succès"
#: index.php:54
#: index.php:53
msgid "Backups successfully create"
msgstr "Sauvegardes crées avec succès"
msgstr "Sauvegardes créées avec succès"
#: index.php:55
#: index.php:54
msgid "Backups successfully restored"
msgstr "Sauvegardes effectuées avec succès"
#: index.php:56
#: index.php:55
msgid "Backups successfully deleted"
msgstr "Sauvegardes effacées avec succès"
#: index.php:57
#: index.php:56
msgid "Package successfully imported"
msgstr "Paquetage importé avec succès"
#: index.php:58
#: index.php:57
msgid "Package successfully exported"
msgstr "Paquetage exporté avec succès"
#: index.php:62
#: index.php:61
msgid "Failed to update settings: %s"
msgstr "Impossible de mettre à jour les paramètres : %s"
#: index.php:63
#: index.php:62
msgid "Failed to update translation: %s"
msgstr "Impossible de mettre à jour la traduction : %s"
#: index.php:64
#: index.php:63
msgid "Failed to create translation: %s"
msgstr "Impossible de créer la traduction : %s"
#: index.php:65
#: index.php:64
msgid "Failed to delete translation: %s"
msgstr "Impossible d'effacer la traduction : %s"
#: index.php:66
#: index.php:65
msgid "Failed to create backups: %s"
msgstr "Impossible de créer les sauvegardes : %s"
#: index.php:67
#: index.php:66
msgid "Failed to restore backups: %s"
msgstr "Impossible de restaurer les sauvegardes : %s"
#: index.php:68
#: index.php:67
msgid "Failed to delete backups: %s"
msgstr "Impossible d'effacer les sauvegardes : %s"
#: index.php:69
#: index.php:68
msgid "Failed to import package: %s"
msgstr "Impossible d'importer le paquetage : %s"
#: index.php:70
#: index.php:69
msgid "Failed to export package: %s"
msgstr "Impossible d'exporter le paquetage : %s"
#: index.php:112
#: index.php:111
msgid "No lang to create"
msgstr "Pas de langue à créer"
#: index.php:134
#: index.php:133
msgid "No lang to delete"
msgstr "Pas de langue à effacer"
#: index.php:156
#: index.php:155
msgid "No lang to backup"
msgstr "Pas de langue à sauvegarder"
#: index.php:189
#: index.php:188
msgid "No blackup to restore"
msgstr "Pas de langue à restaurer"
#: index.php:208
#: index.php:207
msgid "No bakcup to to restore"
msgstr "Pas de sauvegarde à restaurer"
#: index.php:229
#: index.php:247
#: index.php:228
#: index.php:246
msgid "No backup to delete"
msgstr "Pas de sauvegarde à effacer"
#: index.php:290
#: index.php:364
#: index.php:289
#: index.php:363
msgid "Nothing to export"
msgstr "Rien à exporter"
#: index.php:312
#: index.php:311
msgid "No language to update"
msgstr "Pas de langue à mettre à jour"
#: index.php:443
#: index.php:490
#: index.php:442
#: index.php:489
msgid "Failed to launch translater: %s"
msgstr "Impossible de démarrer translater : %s"
#: index.php:556
#: index.php:555
msgid "Use this %s translation:"
msgstr "Utiliser la traduction de %s :"
#: index.php:557
#: index.php:556
msgid "Translate this text with %s"
msgstr "Traduire ce texte avec %s"
#: index.php:558
#: index.php:557
msgid "Use this text"
msgstr "Utiliser ce texte"
#: index.php:606
#: index.php:605
msgid "Translate theme \"%s\" (by %s)"
msgstr "Traduire le thème \"%s\" (de %s)"
#: index.php:607
#: index.php:606
msgid "Translate plugin \"%s\" (by %s)"
msgstr "Traduire l'extension \"%s\" (de %s)"
msgstr "Traduire le plugin \"%s\" (de %s)"
#: index.php:627
#: index.php:741
#: index.php:626
#: index.php:740
msgid "Edit translation"
msgstr "Modifier la traduction"
#: index.php:639
#: index.php:638
msgid "Id"
msgstr "Id"
#: index.php:649
#: index.php:648
msgid "There is no editable modules"
msgstr "Il n'y a pas de modules modifiables."
#: index.php:665
#: index.php:664
msgid "Summary"
msgstr "Résumé"
#: index.php:666
#: index.php:665
msgid "Module"
msgstr "Module"
#: index.php:668
#: index.php:667
msgid "About"
msgstr "À propos"
#: index.php:678
#: index.php:677
msgid "Root"
msgstr "Racine"
#: index.php:680
#: index.php:694
#: index.php:811
#: index.php:1342
#: index.php:679
#: index.php:693
#: index.php:810
#: index.php:1341
msgid "Backups"
msgstr "Sauvegardes"
#: index.php:695
#: index.php:694
msgid "Last backup"
msgstr "Dernière sauvegarde"
#: index.php:722
#: index.php:721
msgid "no backup"
msgstr "Aucune sauvegarde"
#: index.php:731
msgid "Translations"
msgstr "Traductions"
#: index.php:737
#: index.php:736
msgid "Edit language"
msgstr "Modifier une langue"
#: index.php:757
#: index.php:756
msgid "Add language"
msgstr "Ajouter une langue"
#: index.php:764
#: index.php:763
msgid "Copy from language:"
msgstr "Copier depuis la langue :"
#: index.php:766
#: index.php:765
msgid "Optionnal"
msgstr "Optionnel"
#: index.php:773
#: index.php:772
msgid "Add translation"
msgstr "Ajouter la traduction"
#: index.php:790
#: index.php:789
msgid "Delete language"
msgstr "Effacer une langue"
#: index.php:794
#: index.php:793
msgid "Delete translation"
msgstr "Effacer la traduction"
#: index.php:816
#: index.php:815
msgid "Create backups"
msgstr "Créer une sauvegarde"
#: index.php:818
#: index.php:817
msgid "Choose languages to backup"
msgstr "Choisir la langue à sauvegarder"
#: index.php:839
msgid "Backup"
msgstr "Sauvegarde"
#: index.php:856
#: index.php:855
msgid "List of backups"
msgstr "Liste des sauvegardes"
#: index.php:860
#: index.php:1066
#: index.php:859
#: index.php:1065
msgid "File"
msgstr "Fichier"
#: index.php:863
msgid "Size"
msgstr "Taille"
#: index.php:887
#: index.php:886
msgid "Selected backups action:"
msgstr "Action sur les sauvegardes sélectionnées :"
#: index.php:889
#: index.php:888
msgid "Restore backups"
msgstr "Restaurer les sauvegardes"
#: index.php:890
#: index.php:889
msgid "Delete backups"
msgstr "Effacer les sauvegardes"
#: index.php:916
#: index.php:1183
#: index.php:915
#: index.php:1182
msgid "Choose language package to import"
msgstr "Choisir le paquetage de langue à importer"
#: index.php:938
#: index.php:1240
#: index.php:937
#: index.php:1239
msgid "Choose languages to export"
msgstr "Choisir les langues à exporter"
#: index.php:1059
#: index.php:1058
msgid "Group"
msgstr "Groupe"
#: index.php:1061
#: index.php:1060
msgid "String"
msgstr "Chaîne"
#: index.php:1063
#: index.php:1284
#: index.php:1062
#: index.php:1283
msgid "Translation"
msgstr "Traduction"
#: index.php:1064
#: index.php:1063
msgid "Existing"
msgstr "Existant"
#: index.php:1127
#: index.php:1126
msgid "%s occurrences"
msgstr "%s occurrences"
#: index.php:1153
#: index.php:1152
msgid "Total of %s strings."
msgstr "Total de %s chaînes."
#: index.php:1155
#: index.php:1154
msgid "Change the group of the selected entries to:"
msgstr "Changer le groupe des entrées sélectionnées vers :"
#: index.php:1212
#: index.php:1211
msgid "Choose modules to export"
msgstr "Choisir les modules à exporter"
#: index.php:1214
#: index.php:1213
msgid "Modules"
msgstr "Modules"
#: index.php:1287
#: index.php:1286
msgid "Write .po files"
msgstr "Écrire les fichier .po"
msgstr "Écrire les fichiers .po"
#: index.php:1290
#: index.php:1289
msgid "Write .lang.php files"
msgstr "Écrire les fichier .lang.php"
msgstr "Écrire les fichiers .lang.php"
#: index.php:1293
#: index.php:1292
msgid "Translate also strings of template files"
msgstr "Traduire également les chaînes des fichiers de template"
#: index.php:1296
#: index.php:1295
msgid "Translate only unknow strings"
msgstr "Traduire uniquement les chaînes inconnues"
#: index.php:1299
#: index.php:1298
msgid "Hide default modules of Dotclear"
msgstr "Cacher les modules d'origine de Dotclear"
#: index.php:1302
#: index.php:1301
msgid "Write comments in files"
msgstr "Écrire les commentaires dans les fichiers"
#: index.php:1305
#: index.php:1304
msgid "Write informations about author in files"
msgstr "Écrire les informations à propos de l'auteur dans les fichiers"
#: index.php:1309
#: index.php:1308
msgid "Tools"
msgstr "Outils"
#: index.php:1310
#: index.php:1309
msgid "Default language of l10n source:"
msgstr "Langue par défaut des sources l10n :"
#: index.php:1314
#: index.php:1313
msgid "Select and configure the tool to use to translate strings:"
msgstr "Sélectionner et configurer un outil de traduction :"
#: index.php:1326
#: index.php:1325
msgid "Nothing to configure for %s tool."
msgstr "Rien à configurer pour l'outil %s."
#: index.php:1337
#: index.php:1336
msgid "Overwrite existing languages"
msgstr "Écraser les langages existants"
#: index.php:1338
#: index.php:1337
msgid "Name of exported package"
msgstr "Nom du paquetage exporté"
#: index.php:1345
#: index.php:1344
msgid "Make backups when changes are made"
msgstr "Faire des sauvegardes lors des modifications"
#: index.php:1346
#: index.php:1345
msgid "Limit backups to %s files per module"
msgstr "Limiter les sauvegardes à %s fichiers par module"
#: index.php:1349
#: index.php:1348
msgid "Store backups in %s"
msgstr "Stocker les sauvegardes dans %s"
#: index.php:1354
#: index.php:1353
msgid "Behaviors"
msgstr "Comportements"
#: index.php:1355
#: index.php:1354
msgid "Default start menu:"
msgstr "Menu de départ par défaut :"
#: index.php:1360
#: index.php:1359
msgid "Enable menu on extensions page"
msgstr "Activer le menu sur la page des extensions"
msgstr "Activer le menu sur la page des plugins"
#: index.php:1363
#: index.php:1362
msgid "Enable menu on themes page"
msgstr "Activer le menu sur la page des thèmes"
@ -533,5 +558,5 @@ msgid "translater"
msgstr "Traducteur"
msgid "Translate your Dotclear plugins and themes"
msgstr "Traduire vos extensions et thèmes pour Dotclear"
msgstr "Traduire vos plugins et thèmes pour Dotclear"

View file

@ -10,7 +10,8 @@
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
# -- END LICENSE BLOCK ------------------------------------
if (!defined('DC_RC_PATH')) { return; }
if (!defined('DC_RC_PATH')) {
return;
}
$__resources['help']['translater'] = dirname(__FILE__).'/help/help.html';
?>
$__resources['help']['translater'] = dirname(__FILE__) . '/help/translater.html';