Init
This commit is contained in:
commit
58dee1a55a
339
LICENSE
Normal file
339
LICENSE
Normal file
@ -0,0 +1,339 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Lesser General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License.
|
107
_admin.php
Normal file
107
_admin.php
Normal file
@ -0,0 +1,107 @@
|
||||
<?php
|
||||
# -- BEGIN LICENSE BLOCK ----------------------------------
|
||||
#
|
||||
# This file is part of translater, a plugin for Dotclear 2.
|
||||
#
|
||||
# Copyright (c) 2009-2013 Jean-Christian Denis and contributors
|
||||
# contact@jcdenis.fr
|
||||
#
|
||||
# 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 ------------------------------------
|
||||
|
||||
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'));
|
||||
|
||||
$_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()
|
||||
);
|
||||
|
||||
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> </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&part=module&type=plugin&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&part=module&type=theme&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');
|
||||
}
|
||||
}
|
||||
?>
|
24
_define.php
Normal file
24
_define.php
Normal file
@ -0,0 +1,24 @@
|
||||
<?php
|
||||
# -- BEGIN LICENSE BLOCK ----------------------------------
|
||||
#
|
||||
# This file is part of translater, a plugin for Dotclear 2.
|
||||
#
|
||||
# Copyright (c) 2009-2013 Jean-Christian Denis and contributors
|
||||
# contact@jcdenis.fr
|
||||
#
|
||||
# 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 ------------------------------------
|
||||
|
||||
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
|
||||
);
|
||||
?>
|
59
_install.php
Normal file
59
_install.php
Normal file
@ -0,0 +1,59 @@
|
||||
<?php
|
||||
# -- BEGIN LICENSE BLOCK ----------------------------------
|
||||
#
|
||||
# This file is part of translater, a plugin for Dotclear 2.
|
||||
#
|
||||
# Copyright (c) 2009-2013 Jean-Christian Denis and contributors
|
||||
# contact@jcdenis.fr
|
||||
#
|
||||
# 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 ------------------------------------
|
||||
|
||||
if (!defined('DC_CONTEXT_ADMIN')){return;}
|
||||
|
||||
$rdc_version = '2.5-alpha';
|
||||
$new_version = $core->plugins->moduleInfo('translater','version');
|
||||
$old_version = $core->getVersion('translater');
|
||||
|
||||
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;
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
$core->error->add($e->getMessage());
|
||||
}
|
||||
return false;
|
||||
?>
|
26
_prepend.php
Normal file
26
_prepend.php
Normal file
@ -0,0 +1,26 @@
|
||||
<?php
|
||||
# -- BEGIN LICENSE BLOCK ----------------------------------
|
||||
#
|
||||
# This file is part of translater, a plugin for Dotclear 2.
|
||||
#
|
||||
# Copyright (c) 2009-2013 Jean-Christian Denis and contributors
|
||||
# contact@jcdenis.fr
|
||||
#
|
||||
# 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 ------------------------------------
|
||||
|
||||
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['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';
|
||||
?>
|
59
_uninstall.php
Normal file
59
_uninstall.php
Normal file
@ -0,0 +1,59 @@
|
||||
<?php
|
||||
# -- BEGIN LICENSE BLOCK ----------------------------------
|
||||
#
|
||||
# This file is part of translater, a plugin for Dotclear 2.
|
||||
#
|
||||
# Copyright (c) 2009-2013 Jean-Christian Denis and contributors
|
||||
# contact@jcdenis.fr
|
||||
#
|
||||
# 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 ------------------------------------
|
||||
|
||||
if (!defined('DC_CONTEXT_ADMIN')){return;}
|
||||
|
||||
$this->addUserAction(
|
||||
/* type */ 'settings',
|
||||
/* action */ 'delete_all',
|
||||
/* ns */ 'translater',
|
||||
/* description */ __('delete all settings')
|
||||
);
|
||||
|
||||
$this->addUserAction(
|
||||
/* type */ 'plugins',
|
||||
/* action */ 'delete',
|
||||
/* ns */ 'translater',
|
||||
/* description */ __('delete plugin files')
|
||||
);
|
||||
|
||||
$this->addUserAction(
|
||||
/* 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')
|
||||
);
|
||||
|
||||
$this->addDirectAction(
|
||||
/* 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')
|
||||
);
|
||||
?>
|
1585
inc/class.dc.translater.php
Normal file
1585
inc/class.dc.translater.php
Normal file
File diff suppressed because it is too large
Load Diff
64
inc/class.translater.proposals.php
Normal file
64
inc/class.translater.proposals.php
Normal file
@ -0,0 +1,64 @@
|
||||
<?php
|
||||
# -- BEGIN LICENSE BLOCK ----------------------------------
|
||||
#
|
||||
# This file is part of translater, a plugin for Dotclear 2.
|
||||
#
|
||||
# Copyright (c) 2009-2013 Jean-Christian Denis and contributors
|
||||
# contact@jcdenis.fr
|
||||
#
|
||||
# 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();
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
?>
|
76
inc/class.translater.rest.php
Normal file
76
inc/class.translater.rest.php
Normal file
@ -0,0 +1,76 @@
|
||||
<?php
|
||||
# -- BEGIN LICENSE BLOCK ----------------------------------
|
||||
#
|
||||
# This file is part of translater, a plugin for Dotclear 2.
|
||||
#
|
||||
# Copyright (c) 2009-2013 Jean-Christian Denis and contributors
|
||||
# contact@jcdenis.fr
|
||||
#
|
||||
# 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 ------------------------------------
|
||||
|
||||
if (!defined('DC_CONTEXT_ADMIN')){return;}
|
||||
|
||||
/**
|
||||
* Translater REST service.
|
||||
*
|
||||
* Admin service de retrieve translation of a string
|
||||
* Queries come from translater jquery tools
|
||||
*/
|
||||
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']) : '';
|
||||
|
||||
$str_in = text::toUTF8($str_in);
|
||||
$str_in = trim($str_in);
|
||||
$str_out = '';
|
||||
|
||||
$rsp = new xmlTag();
|
||||
|
||||
try
|
||||
{
|
||||
if (empty($from) || empty($to) || empty($tool))
|
||||
{
|
||||
throw new Exception(__('Missing params'));
|
||||
}
|
||||
|
||||
$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'));
|
||||
}
|
||||
|
||||
$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;
|
||||
}
|
||||
}
|
||||
?>
|
BIN
inc/img/field.png
Normal file
BIN
inc/img/field.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 321 B |
BIN
inc/img/toggle.png
Normal file
BIN
inc/img/toggle.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 209 B |
97
inc/lib.translater.google.php
Normal file
97
inc/lib.translater.google.php
Normal file
@ -0,0 +1,97 @@
|
||||
<?php
|
||||
# -- BEGIN LICENSE BLOCK ----------------------------------
|
||||
#
|
||||
# This file is part of translater, a plugin for Dotclear 2.
|
||||
#
|
||||
# Copyright (c) 2009-2013 Jean-Christian Denis and contributors
|
||||
# contact@jcdenis.fr
|
||||
#
|
||||
# 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 ------------------------------------
|
||||
|
||||
if (!defined('DC_CONTEXT_ADMIN')){return;}
|
||||
|
||||
/**
|
||||
* Google proposal tool.
|
||||
*
|
||||
* This uses google API v2 to translate strings
|
||||
*/
|
||||
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);
|
||||
|
||||
$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 '';
|
||||
}
|
||||
}
|
||||
?>
|
225
inc/lib.translater.microsoft.php
Normal file
225
inc/lib.translater.microsoft.php
Normal file
@ -0,0 +1,225 @@
|
||||
<?php
|
||||
# -- BEGIN LICENSE BLOCK ----------------------------------
|
||||
#
|
||||
# This file is part of translater, a plugin for Dotclear 2.
|
||||
#
|
||||
# Copyright (c) 2009-2013 Jean-Christian Denis and contributors
|
||||
# contact@jcdenis.fr
|
||||
#
|
||||
# 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 ------------------------------------
|
||||
|
||||
if (!defined('DC_CONTEXT_ADMIN')){return;}
|
||||
|
||||
/**
|
||||
* Microsoft proposal tool.
|
||||
*
|
||||
* This uses Microsoft API to translate strings
|
||||
*/
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Get the access token.
|
||||
*
|
||||
* @param string $grantType Grant type.
|
||||
* @param string $scopeUrl Application Scope URL.
|
||||
* @param string $clientID Application client ID.
|
||||
* @param string $clientSecret Application client ID.
|
||||
* @param string $authUrl Oauth Url.
|
||||
*
|
||||
* @return string.
|
||||
*/
|
||||
private function getTokens($grantType, $scopeUrl, $clientID, $clientSecret, $authUrl)
|
||||
{
|
||||
try {
|
||||
//Initialize the Curl Session.
|
||||
$ch = curl_init();
|
||||
//Create the request Array.
|
||||
$paramArr = array (
|
||||
'grant_type' => $grantType,
|
||||
'scope' => $scopeUrl,
|
||||
'client_id' => $clientID,
|
||||
'client_secret' => $clientSecret
|
||||
);
|
||||
//Create an Http Query.//
|
||||
$paramArr = http_build_query($paramArr);
|
||||
//Set the Curl URL.
|
||||
curl_setopt($ch, CURLOPT_URL, $authUrl);
|
||||
//Set HTTP POST Request.
|
||||
curl_setopt($ch, CURLOPT_POST, TRUE);
|
||||
//Set data to POST in HTTP "POST" Operation.
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $paramArr);
|
||||
//CURLOPT_RETURNTRANSFER- TRUE to return the transfer as a string of the return value of curl_exec().
|
||||
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, TRUE);
|
||||
//CURLOPT_SSL_VERIFYPEER- Set FALSE to stop cURL from verifying the peer's certificate.
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
||||
//Execute the cURL session.
|
||||
$strResponse = curl_exec($ch);
|
||||
//Get the Error Code returned by Curl.
|
||||
$curlErrno = curl_errno($ch);
|
||||
if($curlErrno){
|
||||
$curlError = curl_error($ch);
|
||||
curl_close($ch);
|
||||
throw new Exception($curlError);
|
||||
}
|
||||
//Close the Curl Session.
|
||||
curl_close($ch);
|
||||
//Decode the returned JSON string.
|
||||
$objResponse = json_decode($strResponse);
|
||||
if (@$objResponse->error){
|
||||
throw new Exception($objResponse->error_description);
|
||||
}
|
||||
return $objResponse->access_token;
|
||||
} catch (Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Create and execute the HTTP CURL request.
|
||||
*
|
||||
* @param string $url HTTP Url.
|
||||
* @param string $authHeader Authorization Header string.
|
||||
* @param string $postData Data to post.
|
||||
*
|
||||
* @return string.
|
||||
*
|
||||
*/
|
||||
private function curlRequest($url, $authHeader) {
|
||||
//Initialize the Curl Session.
|
||||
$ch = curl_init();
|
||||
//Set the Curl url.
|
||||
curl_setopt ($ch, CURLOPT_URL, $url);
|
||||
//Set the HTTP HEADER Fields.
|
||||
curl_setopt ($ch, CURLOPT_HTTPHEADER, array($authHeader,"Content-Type: text/xml"));
|
||||
//CURLOPT_RETURNTRANSFER- TRUE to return the transfer as a string of the return value of curl_exec().
|
||||
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, TRUE);
|
||||
//CURLOPT_SSL_VERIFYPEER- Set FALSE to stop cURL from verifying the peer's certificate.
|
||||
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, False);
|
||||
//Execute the cURL session.
|
||||
$curlResponse = curl_exec($ch);
|
||||
//Get the Error Code returned by Curl.
|
||||
$curlErrno = curl_errno($ch);
|
||||
if ($curlErrno) {
|
||||
$curlError = curl_error($ch);
|
||||
curl_close($ch);
|
||||
throw new Exception($curlError);
|
||||
}
|
||||
//Close a cURL session.
|
||||
curl_close($ch);
|
||||
return $curlResponse;
|
||||
}
|
||||
}
|
||||
?>
|
125
inc/lib.translater.proposal.php
Normal file
125
inc/lib.translater.proposal.php
Normal file
@ -0,0 +1,125 @@
|
||||
<?php
|
||||
# -- BEGIN LICENSE BLOCK ----------------------------------
|
||||
#
|
||||
# This file is part of translater, a plugin for Dotclear 2.
|
||||
#
|
||||
# Copyright (c) 2009-2013 Jean-Christian Denis and contributors
|
||||
# contact@jcdenis.fr
|
||||
#
|
||||
# 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 tool.
|
||||
*
|
||||
* Generic class to provide translation tool
|
||||
*/
|
||||
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);
|
||||
}
|
||||
?>
|
91
js/jquery.translater.js
Normal file
91
js/jquery.translater.js
Normal file
@ -0,0 +1,91 @@
|
||||
/* -- BEGIN LICENSE BLOCK ----------------------------------
|
||||
*
|
||||
* This file is part of translater, a plugin for Dotclear 2.
|
||||
*
|
||||
* Copyright (c) 2009-2013 Jean-Christian Denis and contributors
|
||||
* contact@jcdenis.fr
|
||||
*
|
||||
* 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 ------------------------------------*/
|
||||
|
||||
;if(window.jQuery) (function($){
|
||||
$.fn.translater = function(options){
|
||||
var opts = $.extend({}, $.fn.translater.defaults, options);
|
||||
return this.each(function(){
|
||||
|
||||
var img = '<img src="index.php?pf=translater/inc/img/field.png" alt="" />';
|
||||
var tog = '<img src="index.php?pf=translater/inc/img/toggle.png" alt="" />';
|
||||
var line = this;
|
||||
var msgid = $(line).children('.translatermsgid');
|
||||
var msgfile = $(line).children('.translatermsgfile');
|
||||
var msgstr = $(line).children('.translatermsgstr');
|
||||
var target = $(line).children('.translatertarget');
|
||||
|
||||
$('.strlist').hide();
|
||||
|
||||
var img_go = $('<a class="addfield" title="'+opts.title_go+'">'+img+'</a>').css('cursor','pointer');
|
||||
$(msgid).prepend(' ').prepend(img_go);
|
||||
$(img_go).click(function(){
|
||||
var txt = $(msgid).text();
|
||||
$(img_go).css('cursor','wait');
|
||||
$.get(opts.url,{f:opts.func,langFrom:opts.from,langTo:opts.to,langTool:opts.tool,langStr:txt},function(data){
|
||||
data=$(data);
|
||||
if(data.find('rsp').attr('status')=='ok' && $(data).find('proposal').attr('str_to')){
|
||||
var resp = $(data).find('proposal').attr('str_to');
|
||||
if (confirm(opts.title+'\n'+resp)){
|
||||
addText(target,resp);
|
||||
$(img_go).css('cursor','pointer');
|
||||
}
|
||||
else{
|
||||
$(img_go).css('cursor','pointer');
|
||||
}
|
||||
}else{
|
||||
alert(opts.failed);
|
||||
$(img_go).css('cursor','pointer');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$(msgstr).children('.subtranslatermsgstr').each(function(){
|
||||
var img_str = $('<a class="togglelist" title="detail">'+tog+'</a>').css('cursor','pointer');
|
||||
$(this).children('strong').each(function(){
|
||||
var txt = $(this).text();
|
||||
var img_add = $('<a class="addfield" title="'+opts.title_add+'">'+img+'</a>').css('cursor','pointer');
|
||||
$(this).prepend(' ').prepend(img_add);
|
||||
$(img_add).click(function(){addText(target,txt);});
|
||||
|
||||
$(this).append(' ').append(img_str);
|
||||
var strlist=$(this).siblings('.strlist');
|
||||
$(strlist).click(function(){$(strlist).toggle();});
|
||||
$(img_str).click(function(){$(strlist).toggle();});
|
||||
});
|
||||
});
|
||||
|
||||
var img_file = $('<a class="togglelist" title="detail">'+tog+'</a>').css('cursor','pointer');
|
||||
$(msgfile).children('strong').each(function(){
|
||||
$(this).append(' ').append(img_file);
|
||||
var strlist=$(this).siblings('.strlist');
|
||||
$(strlist).click(function(){$(strlist).toggle();});
|
||||
$(img_file).click(function(){$(strlist).toggle();});
|
||||
});
|
||||
});
|
||||
};
|
||||
function addText(target,text){
|
||||
$(target).children(':text').val(text);
|
||||
}
|
||||
|
||||
$.fn.translater.defaults = {
|
||||
url: '',
|
||||
func: '',
|
||||
from: 'en',
|
||||
to: 'fr',
|
||||
tool: 'google',
|
||||
failed: 'Failed to translate this',
|
||||
title: 'Copy translation to field:',
|
||||
title_go: 'Find translation',
|
||||
title_add: 'Add this translation'
|
||||
};
|
||||
})(jQuery);
|
174
locales/fr/help/help.html
Normal file
174
locales/fr/help/help.html
Normal file
@ -0,0 +1,174 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Translater</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<h3>Paramètres</h3>
|
||||
<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>
|
||||
<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>
|
||||
|
||||
<dt>Ecrire les fichiers .lang.php</dt>
|
||||
<dd>C'est le format <em>rapide</em> des fichiers de langues.
|
||||
<em>Peu importe le choix de fichier, vous devez au moins en selectionner un.</em></dd>
|
||||
|
||||
<dt>Traduire également les chaines des fichiers de template</dt>
|
||||
<dd>Cette option permet de traduire les balises de langage des fichiers .html. Ex: {{tpl:lang Lorem}}.</dd>
|
||||
|
||||
<dt>Traduire uniquement les chaines inconnues</dt>
|
||||
<dd>Cette option est recommander est permet de griser les chaines déjà traduite dans Dotclear.</dd>
|
||||
|
||||
<dt>Ecrire les commentaires dans les fichiers</dt>
|
||||
<dd>Cela est pratique lors du developpement d'une extensions, le nom et la ligne ou se trouve la chaine sont alors écrit dans le fichier de langue.
|
||||
Il est préfèrable de désactiver cette option lors de la réalisation de version finale, afin d'avoir des fichiers plus légés.</dd>
|
||||
|
||||
<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>
|
||||
</dd>
|
||||
|
||||
<dt>Utiliser un outil d'aide à la traduction</dt>
|
||||
<dd>Une fois qu'un outil est choisi, lors d'un click sur une texte à traduire dans l'edition d'une traduction,
|
||||
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>
|
||||
|
||||
<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>
|
||||
|
||||
<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>
|
||||
</dd>
|
||||
|
||||
<dt>Faire des sauvegardes lors de modifications</dt>
|
||||
<dd>Permet de faire automatiquement des sauvegardes des fichiers de langue à chaque changement enregistré.</dd>
|
||||
|
||||
<dt>Limiter les sauvegardes</dt>
|
||||
<dd>Permet de limiter le nombre de sauvegarde par module afin de ne pas prendre trop de place sur la plateforme.
|
||||
Les sauvegardes ne sont pas effacées automatiquement il faut le faire dans le gesionnaire de sauvegarde.</dd>
|
||||
|
||||
<dt>Stoquer les sauvegardes dans un dossier particulier</dt>
|
||||
<dd>Plusieurs choix de lieu de sauvegarde s'offrent:
|
||||
<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>
|
||||
</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>
|
||||
<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>
|
||||
<dl>
|
||||
<dt>Groupe</dt>
|
||||
<dd>Cette option est uniquement présente en mode avancé.
|
||||
C'est le nom du fichier de langue.
|
||||
D'autres choix sont possibles mais Dotclear ne recherche que le groupe <em>main</em> pour un plugin et <em>public</em> pour un thème.
|
||||
Pour de gros plugin ou tout simplement pour des raisons de commodité (!) vous pouvez vouloir séparer certaines traductions.
|
||||
Il faut alors demander explicitement à Dotclear de les charger.
|
||||
Exemple: l10n::set('mon_repertoire/error');</dd>
|
||||
|
||||
<dt>Chaine</dt>
|
||||
<dd>C'est la chaine à traduire trouvée dans l'extension. elle est apellé avec __('ma_chaine') .</dd>
|
||||
|
||||
<dt>Fichier</dt>
|
||||
<dd>Cette option est uniquement présente en mode avancé.
|
||||
C'est la liste des fichiers ainsi que la ligne ou se trouve la chaine.</dd>
|
||||
|
||||
<dt>Traduction</dt>
|
||||
<dd>Traduction donnée à cette chaine pour la langue choisie.
|
||||
Cette case est grisée <em>(Inaccessible)</em> si cette chaine est déjà traduite et
|
||||
que l'option <em>"Traduire uniquement les chaines inconnues"</em> est selectionnée dans les paramètres.</dd>
|
||||
|
||||
<dt>Existant</dt>
|
||||
<dd>Indique la traduction et l'extension qui utilise cette chaine le cas échéant.</dd>
|
||||
</dl>
|
||||
|
||||
<h3>Sauvegardes</h3>
|
||||
<dl>
|
||||
<dt>Créer une sauvegarde</dt>
|
||||
<dd>Si des traductions existent, une partie "Créer une sauvegarde" apparait.
|
||||
Il est possible de faire une sauvegarde <em>(au format zip)</em> d'une langue d'une extension.
|
||||
Elle sera stoquée dans le repertoire choisi dans les paramètres.</dd>
|
||||
|
||||
<dt>Listes des sauvegardes</dt>
|
||||
<dd>Si des sauvegardes existent, il est possible de restaurer ou de supprimer ces sauvegardes.
|
||||
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>
|
||||
<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>
|
||||
|
||||
</dl>
|
||||
|
||||
<h3>Support</h3>
|
||||
<p>Si vous souhaitez plus d'aide ou apporter votre contribution à cette extension, 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>
|
||||
</ul>
|
||||
|
||||
</body>
|
||||
</html>
|
402
locales/fr/main.lang.php
Normal file
402
locales/fr/main.lang.php
Normal file
@ -0,0 +1,402 @@
|
||||
<?php
|
||||
// Language: Français
|
||||
// Module: translater - 2013.05.11
|
||||
// Date: 2013-05-12 23:35:00
|
||||
// Translated with dcTranslater - 2013.05.11
|
||||
|
||||
#_admin.php:26
|
||||
#index.php:537
|
||||
#index.php:570
|
||||
#index.php:1384
|
||||
$GLOBALS['__l10n']['Translater'] = 'Traducteur';
|
||||
|
||||
#_admin.php:44
|
||||
$GLOBALS['__l10n']['Translate extensions'] = 'Traduire les extensions';
|
||||
|
||||
#_admin.php:48
|
||||
#index.php:670
|
||||
$GLOBALS['__l10n']['Name'] = 'Nom';
|
||||
|
||||
#_admin.php:62
|
||||
$GLOBALS['__l10n']['Translate this plugin'] = 'Traduire cette extension';
|
||||
|
||||
#_admin.php:85
|
||||
$GLOBALS['__l10n']['Translate this theme'] = 'Traduire ce thème';
|
||||
|
||||
#inc/class.dc.translater.php:434
|
||||
$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
|
||||
$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
|
||||
$GLOBALS['__l10n']['Cannot find root folder for module %s'] = 'Impossible de trouver le dossier racine du module %s';
|
||||
|
||||
#inc/class.dc.translater.php:499
|
||||
$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
|
||||
$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
|
||||
$GLOBALS['__l10n']['Cannot delete backup file %s'] = 'Impossible d\'effacer le fichier de sauvegarde %s';
|
||||
|
||||
#inc/class.dc.translater.php:634
|
||||
$GLOBALS['__l10n']['Cannot find backup file %s'] = 'Impossible de trouver le fichier de sauvegarde %s';
|
||||
|
||||
#inc/class.dc.translater.php:660
|
||||
$GLOBALS['__l10n']['Wrong export query'] = 'Mauvaise requète d\'exportation';
|
||||
|
||||
#inc/class.dc.translater.php:671
|
||||
$GLOBALS['__l10n']['Cannot use export mask %s'] = 'Impossible d\'utiliser le masque d\'exportation %s';
|
||||
|
||||
#inc/class.dc.translater.php:759
|
||||
$GLOBALS['__l10n']['Wrong import query'] = 'Mauvaise requète d\'importation';
|
||||
|
||||
#inc/class.dc.translater.php:808
|
||||
$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
|
||||
$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
|
||||
$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
|
||||
$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
|
||||
$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
|
||||
$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
|
||||
$GLOBALS['__l10n']['Cannot write lang file %s'] = 'Impossible d\'écrire le fichier de langue %s';
|
||||
|
||||
#inc/class.dc.translater.php:1579
|
||||
$GLOBALS['__l10n']['Cannot find language for code %s'] = 'Impossible de trouver de langue pour le code %s';
|
||||
|
||||
#inc/class.translater.rest.php:42
|
||||
$GLOBALS['__l10n']['Missing params'] = 'Paramètres manquants';
|
||||
|
||||
#inc/class.translater.rest.php:51
|
||||
$GLOBALS['__l10n']['Failed to get translation tool'] = 'Impossible de trouver l\'outil de traduction';
|
||||
|
||||
#inc/class.translater.rest.php:55
|
||||
$GLOBALS['__l10n']['Translation tool is not configured'] = 'L\'outil de traduction n\'est pas configuré';
|
||||
|
||||
#inc/lib.translater.google.php:44
|
||||
$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.microsoft.php:49
|
||||
$GLOBALS['__l10n']['You must have:'] = 'Vous devez avoir :';
|
||||
|
||||
#index.php:26
|
||||
#index.php:526
|
||||
#index.php:1382
|
||||
$GLOBALS['__l10n']['Settings'] = 'Paramètres';
|
||||
|
||||
#index.php:42
|
||||
$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:44
|
||||
$GLOBALS['__l10n']['public folder root'] = 'le répertoire public du blog';
|
||||
|
||||
#index.php:45
|
||||
$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:51
|
||||
$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:53
|
||||
$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:55
|
||||
$GLOBALS['__l10n']['Backups successfully restored'] = 'Sauvegardes effectuées avec succès';
|
||||
|
||||
#index.php:56
|
||||
$GLOBALS['__l10n']['Backups successfully deleted'] = 'Sauvegardes effacées avec succès';
|
||||
|
||||
#index.php:57
|
||||
$GLOBALS['__l10n']['Package successfully imported'] = 'Paquetage importé avec succès';
|
||||
|
||||
#index.php:58
|
||||
$GLOBALS['__l10n']['Package successfully exported'] = 'Paquetage exporté avec succès';
|
||||
|
||||
#index.php:62
|
||||
$GLOBALS['__l10n']['Failed to update settings: %s'] = 'Impossible de mettre à jour les paramètres : %s';
|
||||
|
||||
#index.php:63
|
||||
$GLOBALS['__l10n']['Failed to update translation: %s'] = 'Impossible de mettre à jour la traduction : %s';
|
||||
|
||||
#index.php:64
|
||||
$GLOBALS['__l10n']['Failed to create translation: %s'] = 'Impossible de créer la traduction : %s';
|
||||
|
||||
#index.php:65
|
||||
$GLOBALS['__l10n']['Failed to delete translation: %s'] = 'Impossible d\'effacer la traduction : %s';
|
||||
|
||||
#index.php:66
|
||||
$GLOBALS['__l10n']['Failed to create backups: %s'] = 'Impossible de créer les sauvegardes : %s';
|
||||
|
||||
#index.php:67
|
||||
$GLOBALS['__l10n']['Failed to restore backups: %s'] = 'Impossible de restaurer les sauvegardes : %s';
|
||||
|
||||
#index.php:68
|
||||
$GLOBALS['__l10n']['Failed to delete backups: %s'] = 'Impossible d\'effacer les sauvegardes : %s';
|
||||
|
||||
#index.php:69
|
||||
$GLOBALS['__l10n']['Failed to import package: %s'] = 'Impossible d\'importer le paquetage : %s';
|
||||
|
||||
#index.php:70
|
||||
$GLOBALS['__l10n']['Failed to export package: %s'] = 'Impossible d\'exporter le paquetage : %s';
|
||||
|
||||
#index.php:112
|
||||
$GLOBALS['__l10n']['No lang to create'] = 'Pas de langue à créer';
|
||||
|
||||
#index.php:134
|
||||
$GLOBALS['__l10n']['No lang to delete'] = 'Pas de langue à effacer';
|
||||
|
||||
#index.php:156
|
||||
$GLOBALS['__l10n']['No lang to backup'] = 'Pas de langue à sauvegarder';
|
||||
|
||||
#index.php:189
|
||||
$GLOBALS['__l10n']['No blackup to restore'] = 'Pas de langue à restaurer';
|
||||
|
||||
#index.php:208
|
||||
$GLOBALS['__l10n']['No bakcup to to restore'] = 'Pas de sauvegarde à restaurer';
|
||||
|
||||
#index.php:229
|
||||
#index.php:247
|
||||
$GLOBALS['__l10n']['No backup to delete'] = 'Pas de sauvegarde à effacer';
|
||||
|
||||
#index.php:290
|
||||
#index.php:364
|
||||
$GLOBALS['__l10n']['Nothing to export'] = 'Rien à exporter';
|
||||
|
||||
#index.php:312
|
||||
$GLOBALS['__l10n']['No language to update'] = 'Pas de langue à mettre à jour';
|
||||
|
||||
#index.php:443
|
||||
#index.php:490
|
||||
$GLOBALS['__l10n']['Failed to launch translater: %s'] = 'Impossible de démarrer translater : %s';
|
||||
|
||||
#index.php:556
|
||||
$GLOBALS['__l10n']['Use this %s translation:'] = 'Utiliser la traduction de %s :';
|
||||
|
||||
#index.php:557
|
||||
$GLOBALS['__l10n']['Translate this text with %s'] = 'Traduire ce texte avec %s';
|
||||
|
||||
#index.php:558
|
||||
$GLOBALS['__l10n']['Use this text'] = 'Utiliser ce texte';
|
||||
|
||||
#index.php:606
|
||||
$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:627
|
||||
#index.php:741
|
||||
$GLOBALS['__l10n']['Edit translation'] = 'Modifier la traduction';
|
||||
|
||||
#index.php:639
|
||||
$GLOBALS['__l10n']['Id'] = 'Id';
|
||||
|
||||
#index.php:649
|
||||
$GLOBALS['__l10n']['There is no editable modules'] = 'Il n\'y a pas de modules modifiables.';
|
||||
|
||||
#index.php:665
|
||||
$GLOBALS['__l10n']['Summary'] = 'Résumé';
|
||||
|
||||
#index.php:666
|
||||
$GLOBALS['__l10n']['Module'] = 'Module';
|
||||
|
||||
#index.php:668
|
||||
$GLOBALS['__l10n']['About'] = 'À propos';
|
||||
|
||||
#index.php:678
|
||||
$GLOBALS['__l10n']['Root'] = 'Racine';
|
||||
|
||||
#index.php:680
|
||||
#index.php:694
|
||||
#index.php:811
|
||||
#index.php:1342
|
||||
$GLOBALS['__l10n']['Backups'] = 'Sauvegardes';
|
||||
|
||||
#index.php:695
|
||||
$GLOBALS['__l10n']['Last backup'] = 'Dernière sauvegarde';
|
||||
|
||||
#index.php:722
|
||||
$GLOBALS['__l10n']['no backup'] = 'Aucune sauvegarde';
|
||||
|
||||
#index.php:731
|
||||
$GLOBALS['__l10n']['Translations'] = 'Traductions';
|
||||
|
||||
#index.php:737
|
||||
$GLOBALS['__l10n']['Edit language'] = 'Modifier une langue';
|
||||
|
||||
#index.php:757
|
||||
$GLOBALS['__l10n']['Add language'] = 'Ajouter une langue';
|
||||
|
||||
#index.php:764
|
||||
$GLOBALS['__l10n']['Copy from language:'] = 'Copier depuis la langue :';
|
||||
|
||||
#index.php:766
|
||||
$GLOBALS['__l10n']['Optionnal'] = 'Optionnel';
|
||||
|
||||
#index.php:773
|
||||
$GLOBALS['__l10n']['Add translation'] = 'Ajouter la traduction';
|
||||
|
||||
#index.php:790
|
||||
$GLOBALS['__l10n']['Delete language'] = 'Effacer une langue';
|
||||
|
||||
#index.php:794
|
||||
$GLOBALS['__l10n']['Delete translation'] = 'Effacer la traduction';
|
||||
|
||||
#index.php:816
|
||||
$GLOBALS['__l10n']['Create backups'] = 'Créer une sauvegarde';
|
||||
|
||||
#index.php:818
|
||||
$GLOBALS['__l10n']['Choose languages to backup'] = 'Choisir la langue à sauvegarder';
|
||||
|
||||
#index.php:839
|
||||
$GLOBALS['__l10n']['Backup'] = 'Sauvegarde';
|
||||
|
||||
#index.php:856
|
||||
$GLOBALS['__l10n']['List of backups'] = 'Liste des sauvegardes';
|
||||
|
||||
#index.php:860
|
||||
#index.php:1066
|
||||
$GLOBALS['__l10n']['File'] = 'Fichier';
|
||||
|
||||
#index.php:863
|
||||
$GLOBALS['__l10n']['Size'] = 'Taille';
|
||||
|
||||
#index.php:887
|
||||
$GLOBALS['__l10n']['Selected backups action:'] = 'Action sur les sauvegardes sélectionnées :';
|
||||
|
||||
#index.php:889
|
||||
$GLOBALS['__l10n']['Restore backups'] = 'Restaurer les sauvegardes';
|
||||
|
||||
#index.php:890
|
||||
$GLOBALS['__l10n']['Delete backups'] = 'Effacer les sauvegardes';
|
||||
|
||||
#index.php:916
|
||||
#index.php:1183
|
||||
$GLOBALS['__l10n']['Choose language package to import'] = 'Choisir le paquetage de langue à importer';
|
||||
|
||||
#index.php:938
|
||||
#index.php:1240
|
||||
$GLOBALS['__l10n']['Choose languages to export'] = 'Choisir les langues à exporter';
|
||||
|
||||
#index.php:1059
|
||||
$GLOBALS['__l10n']['Group'] = 'Groupe';
|
||||
|
||||
#index.php:1061
|
||||
$GLOBALS['__l10n']['String'] = 'Chaîne';
|
||||
|
||||
#index.php:1063
|
||||
#index.php:1284
|
||||
$GLOBALS['__l10n']['Translation'] = 'Traduction';
|
||||
|
||||
#index.php:1064
|
||||
$GLOBALS['__l10n']['Existing'] = 'Existant';
|
||||
|
||||
#index.php:1127
|
||||
$GLOBALS['__l10n']['%s occurrences'] = '%s occurrences';
|
||||
|
||||
#index.php:1153
|
||||
$GLOBALS['__l10n']['Total of %s strings.'] = 'Total de %s chaînes.';
|
||||
|
||||
#index.php:1155
|
||||
$GLOBALS['__l10n']['Change the group of the selected entries to:'] = 'Changer le groupe des entrées sélectionnées vers :';
|
||||
|
||||
#index.php:1212
|
||||
$GLOBALS['__l10n']['Choose modules to export'] = 'Choisir les modules à exporter';
|
||||
|
||||
#index.php:1214
|
||||
$GLOBALS['__l10n']['Modules'] = 'Modules';
|
||||
|
||||
#index.php:1287
|
||||
$GLOBALS['__l10n']['Write .po files'] = 'Écrire les fichier .po';
|
||||
|
||||
#index.php:1290
|
||||
$GLOBALS['__l10n']['Write .lang.php files'] = 'Écrire les fichier .lang.php';
|
||||
|
||||
#index.php:1293
|
||||
$GLOBALS['__l10n']['Translate also strings of template files'] = 'Traduire également les chaînes des fichiers de template';
|
||||
|
||||
#index.php:1296
|
||||
$GLOBALS['__l10n']['Translate only unknow strings'] = 'Traduire uniquement les chaînes inconnues';
|
||||
|
||||
#index.php:1299
|
||||
$GLOBALS['__l10n']['Hide default modules of Dotclear'] = 'Cacher les modules d\'origine de Dotclear';
|
||||
|
||||
#index.php:1302
|
||||
$GLOBALS['__l10n']['Write comments in files'] = 'Écrire les commentaires dans les fichiers';
|
||||
|
||||
#index.php:1305
|
||||
$GLOBALS['__l10n']['Write informations about author in files'] = 'Écrire les informations à propos de l\'auteur dans les fichiers';
|
||||
|
||||
#index.php:1309
|
||||
$GLOBALS['__l10n']['Tools'] = 'Outils';
|
||||
|
||||
#index.php:1310
|
||||
$GLOBALS['__l10n']['Default language of l10n source:'] = 'Langue par défaut des sources l10n :';
|
||||
|
||||
#index.php:1314
|
||||
$GLOBALS['__l10n']['Select and configure the tool to use to translate strings:'] = 'Sélectionner et configurer un outil de traduction :';
|
||||
|
||||
#index.php:1326
|
||||
$GLOBALS['__l10n']['Nothing to configure for %s tool.'] = 'Rien à configurer pour l\'outil %s.';
|
||||
|
||||
#index.php:1337
|
||||
$GLOBALS['__l10n']['Overwrite existing languages'] = 'Écraser les langages existants';
|
||||
|
||||
#index.php:1338
|
||||
$GLOBALS['__l10n']['Name of exported package'] = 'Nom du paquetage exporté';
|
||||
|
||||
#index.php:1345
|
||||
$GLOBALS['__l10n']['Make backups when changes are made'] = 'Faire des sauvegardes lors des modifications';
|
||||
|
||||
#index.php:1346
|
||||
$GLOBALS['__l10n']['Limit backups to %s files per module'] = 'Limiter les sauvegardes à %s fichiers par module';
|
||||
|
||||
#index.php:1349
|
||||
$GLOBALS['__l10n']['Store backups in %s'] = 'Stocker les sauvegardes dans %s';
|
||||
|
||||
#index.php:1354
|
||||
$GLOBALS['__l10n']['Behaviors'] = 'Comportements';
|
||||
|
||||
#index.php:1355
|
||||
$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:1363
|
||||
$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';
|
||||
|
||||
?>
|
537
locales/fr/main.po
Normal file
537
locales/fr/main.po
Normal file
@ -0,0 +1,537 @@
|
||||
# Language: Français
|
||||
# Module: translater - 2013.05.11
|
||||
# Date: 2013-05-12 23:35:00
|
||||
# Translated with translater 2013.05.11
|
||||
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Project-Id-Version: translater 2013.05.11\n"
|
||||
"POT-Creation-Date: \n"
|
||||
"PO-Revision-Date: 2013-05-12T23:35:00+00:00\n"
|
||||
"Last-Translator: Jean-Christian Denis\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: _admin.php:26
|
||||
#: index.php:537
|
||||
#: index.php:570
|
||||
#: index.php:1384
|
||||
msgid "Translater"
|
||||
msgstr "Traducteur"
|
||||
|
||||
#: _admin.php:44
|
||||
msgid "Translate extensions"
|
||||
msgstr "Traduire les extensions"
|
||||
|
||||
#: _admin.php:48
|
||||
#: index.php:670
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
#: _admin.php:62
|
||||
msgid "Translate this plugin"
|
||||
msgstr "Traduire cette extension"
|
||||
|
||||
#: _admin.php:85
|
||||
msgid "Translate this theme"
|
||||
msgstr "Traduire ce thème"
|
||||
|
||||
#: inc/class.dc.translater.php:434
|
||||
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
|
||||
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
|
||||
msgid "Cannot find root folder for module %s"
|
||||
msgstr "Impossible de trouver le dossier racine du module %s"
|
||||
|
||||
#: inc/class.dc.translater.php:499
|
||||
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
|
||||
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
|
||||
msgid "Cannot delete backup file %s"
|
||||
msgstr "Impossible d'effacer le fichier de sauvegarde %s"
|
||||
|
||||
#: inc/class.dc.translater.php:634
|
||||
msgid "Cannot find backup file %s"
|
||||
msgstr "Impossible de trouver le fichier de sauvegarde %s"
|
||||
|
||||
#: inc/class.dc.translater.php:660
|
||||
msgid "Wrong export query"
|
||||
msgstr "Mauvaise requète d'exportation"
|
||||
|
||||
#: inc/class.dc.translater.php:671
|
||||
msgid "Cannot use export mask %s"
|
||||
msgstr "Impossible d'utiliser le masque d'exportation %s"
|
||||
|
||||
#: inc/class.dc.translater.php:759
|
||||
msgid "Wrong import query"
|
||||
msgstr "Mauvaise requète d'importation"
|
||||
|
||||
#: inc/class.dc.translater.php:808
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
msgid "Cannot write lang file %s"
|
||||
msgstr "Impossible d'écrire le fichier de langue %s"
|
||||
|
||||
#: inc/class.dc.translater.php:1579
|
||||
msgid "Cannot find language for code %s"
|
||||
msgstr "Impossible de trouver de langue pour le code %s"
|
||||
|
||||
#: inc/class.translater.rest.php:42
|
||||
msgid "Missing params"
|
||||
msgstr "Paramètres manquants"
|
||||
|
||||
#: inc/class.translater.rest.php:51
|
||||
msgid "Failed to get translation tool"
|
||||
msgstr "Impossible de trouver l'outil de traduction"
|
||||
|
||||
#: inc/class.translater.rest.php:55
|
||||
msgid "Translation tool is not configured"
|
||||
msgstr "L'outil de traduction n'est pas configuré"
|
||||
|
||||
#: inc/lib.translater.google.php:44
|
||||
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.microsoft.php:49
|
||||
msgid "You must have:"
|
||||
msgstr "Vous devez avoir :"
|
||||
|
||||
#: index.php:26
|
||||
#: index.php:526
|
||||
#: index.php:1382
|
||||
msgid "Settings"
|
||||
msgstr "Paramètres"
|
||||
|
||||
#: index.php:42
|
||||
msgid "locales folders of each module"
|
||||
msgstr "le répertoire locales de chaque module"
|
||||
|
||||
#: index.php:43
|
||||
msgid "plugins folder root"
|
||||
msgstr "le répertoire racine des extensions"
|
||||
|
||||
#: index.php:44
|
||||
msgid "public folder root"
|
||||
msgstr "le répertoire public du blog"
|
||||
|
||||
#: index.php:45
|
||||
msgid "cache folder of Dotclear"
|
||||
msgstr "le répertoire cache de Dotclear"
|
||||
|
||||
#: index.php:46
|
||||
msgid "locales folder of translater"
|
||||
msgstr "le répertoire locales de l'extension translater"
|
||||
|
||||
#: index.php:51
|
||||
msgid "Translation successfully updated"
|
||||
msgstr "Traduction mise à jour avec succès"
|
||||
|
||||
#: index.php:52
|
||||
msgid "Translation successfully created"
|
||||
msgstr "Traduction crée avec succès"
|
||||
|
||||
#: index.php:53
|
||||
msgid "Translation successfully deleted"
|
||||
msgstr "Traduction effacée avec succès"
|
||||
|
||||
#: index.php:54
|
||||
msgid "Backups successfully create"
|
||||
msgstr "Sauvegardes crées avec succès"
|
||||
|
||||
#: index.php:55
|
||||
msgid "Backups successfully restored"
|
||||
msgstr "Sauvegardes effectuées avec succès"
|
||||
|
||||
#: index.php:56
|
||||
msgid "Backups successfully deleted"
|
||||
msgstr "Sauvegardes effacées avec succès"
|
||||
|
||||
#: index.php:57
|
||||
msgid "Package successfully imported"
|
||||
msgstr "Paquetage importé avec succès"
|
||||
|
||||
#: index.php:58
|
||||
msgid "Package successfully exported"
|
||||
msgstr "Paquetage exporté avec succès"
|
||||
|
||||
#: index.php:62
|
||||
msgid "Failed to update settings: %s"
|
||||
msgstr "Impossible de mettre à jour les paramètres : %s"
|
||||
|
||||
#: index.php:63
|
||||
msgid "Failed to update translation: %s"
|
||||
msgstr "Impossible de mettre à jour la traduction : %s"
|
||||
|
||||
#: index.php:64
|
||||
msgid "Failed to create translation: %s"
|
||||
msgstr "Impossible de créer la traduction : %s"
|
||||
|
||||
#: index.php:65
|
||||
msgid "Failed to delete translation: %s"
|
||||
msgstr "Impossible d'effacer la traduction : %s"
|
||||
|
||||
#: index.php:66
|
||||
msgid "Failed to create backups: %s"
|
||||
msgstr "Impossible de créer les sauvegardes : %s"
|
||||
|
||||
#: index.php:67
|
||||
msgid "Failed to restore backups: %s"
|
||||
msgstr "Impossible de restaurer les sauvegardes : %s"
|
||||
|
||||
#: index.php:68
|
||||
msgid "Failed to delete backups: %s"
|
||||
msgstr "Impossible d'effacer les sauvegardes : %s"
|
||||
|
||||
#: index.php:69
|
||||
msgid "Failed to import package: %s"
|
||||
msgstr "Impossible d'importer le paquetage : %s"
|
||||
|
||||
#: index.php:70
|
||||
msgid "Failed to export package: %s"
|
||||
msgstr "Impossible d'exporter le paquetage : %s"
|
||||
|
||||
#: index.php:112
|
||||
msgid "No lang to create"
|
||||
msgstr "Pas de langue à créer"
|
||||
|
||||
#: index.php:134
|
||||
msgid "No lang to delete"
|
||||
msgstr "Pas de langue à effacer"
|
||||
|
||||
#: index.php:156
|
||||
msgid "No lang to backup"
|
||||
msgstr "Pas de langue à sauvegarder"
|
||||
|
||||
#: index.php:189
|
||||
msgid "No blackup to restore"
|
||||
msgstr "Pas de langue à restaurer"
|
||||
|
||||
#: index.php:208
|
||||
msgid "No bakcup to to restore"
|
||||
msgstr "Pas de sauvegarde à restaurer"
|
||||
|
||||
#: index.php:229
|
||||
#: index.php:247
|
||||
msgid "No backup to delete"
|
||||
msgstr "Pas de sauvegarde à effacer"
|
||||
|
||||
#: index.php:290
|
||||
#: index.php:364
|
||||
msgid "Nothing to export"
|
||||
msgstr "Rien à exporter"
|
||||
|
||||
#: index.php:312
|
||||
msgid "No language to update"
|
||||
msgstr "Pas de langue à mettre à jour"
|
||||
|
||||
#: index.php:443
|
||||
#: index.php:490
|
||||
msgid "Failed to launch translater: %s"
|
||||
msgstr "Impossible de démarrer translater : %s"
|
||||
|
||||
#: index.php:556
|
||||
msgid "Use this %s translation:"
|
||||
msgstr "Utiliser la traduction de %s :"
|
||||
|
||||
#: index.php:557
|
||||
msgid "Translate this text with %s"
|
||||
msgstr "Traduire ce texte avec %s"
|
||||
|
||||
#: index.php:558
|
||||
msgid "Use this text"
|
||||
msgstr "Utiliser ce texte"
|
||||
|
||||
#: index.php:606
|
||||
msgid "Translate theme \"%s\" (by %s)"
|
||||
msgstr "Traduire le thème \"%s\" (de %s)"
|
||||
|
||||
#: index.php:607
|
||||
msgid "Translate plugin \"%s\" (by %s)"
|
||||
msgstr "Traduire l'extension \"%s\" (de %s)"
|
||||
|
||||
#: index.php:627
|
||||
#: index.php:741
|
||||
msgid "Edit translation"
|
||||
msgstr "Modifier la traduction"
|
||||
|
||||
#: index.php:639
|
||||
msgid "Id"
|
||||
msgstr "Id"
|
||||
|
||||
#: index.php:649
|
||||
msgid "There is no editable modules"
|
||||
msgstr "Il n'y a pas de modules modifiables."
|
||||
|
||||
#: index.php:665
|
||||
msgid "Summary"
|
||||
msgstr "Résumé"
|
||||
|
||||
#: index.php:666
|
||||
msgid "Module"
|
||||
msgstr "Module"
|
||||
|
||||
#: index.php:668
|
||||
msgid "About"
|
||||
msgstr "À propos"
|
||||
|
||||
#: index.php:678
|
||||
msgid "Root"
|
||||
msgstr "Racine"
|
||||
|
||||
#: index.php:680
|
||||
#: index.php:694
|
||||
#: index.php:811
|
||||
#: index.php:1342
|
||||
msgid "Backups"
|
||||
msgstr "Sauvegardes"
|
||||
|
||||
#: index.php:695
|
||||
msgid "Last backup"
|
||||
msgstr "Dernière sauvegarde"
|
||||
|
||||
#: index.php:722
|
||||
msgid "no backup"
|
||||
msgstr "Aucune sauvegarde"
|
||||
|
||||
#: index.php:731
|
||||
msgid "Translations"
|
||||
msgstr "Traductions"
|
||||
|
||||
#: index.php:737
|
||||
msgid "Edit language"
|
||||
msgstr "Modifier une langue"
|
||||
|
||||
#: index.php:757
|
||||
msgid "Add language"
|
||||
msgstr "Ajouter une langue"
|
||||
|
||||
#: index.php:764
|
||||
msgid "Copy from language:"
|
||||
msgstr "Copier depuis la langue :"
|
||||
|
||||
#: index.php:766
|
||||
msgid "Optionnal"
|
||||
msgstr "Optionnel"
|
||||
|
||||
#: index.php:773
|
||||
msgid "Add translation"
|
||||
msgstr "Ajouter la traduction"
|
||||
|
||||
#: index.php:790
|
||||
msgid "Delete language"
|
||||
msgstr "Effacer une langue"
|
||||
|
||||
#: index.php:794
|
||||
msgid "Delete translation"
|
||||
msgstr "Effacer la traduction"
|
||||
|
||||
#: index.php:816
|
||||
msgid "Create backups"
|
||||
msgstr "Créer une sauvegarde"
|
||||
|
||||
#: index.php:818
|
||||
msgid "Choose languages to backup"
|
||||
msgstr "Choisir la langue à sauvegarder"
|
||||
|
||||
#: index.php:839
|
||||
msgid "Backup"
|
||||
msgstr "Sauvegarde"
|
||||
|
||||
#: index.php:856
|
||||
msgid "List of backups"
|
||||
msgstr "Liste des sauvegardes"
|
||||
|
||||
#: index.php:860
|
||||
#: index.php:1066
|
||||
msgid "File"
|
||||
msgstr "Fichier"
|
||||
|
||||
#: index.php:863
|
||||
msgid "Size"
|
||||
msgstr "Taille"
|
||||
|
||||
#: index.php:887
|
||||
msgid "Selected backups action:"
|
||||
msgstr "Action sur les sauvegardes sélectionnées :"
|
||||
|
||||
#: index.php:889
|
||||
msgid "Restore backups"
|
||||
msgstr "Restaurer les sauvegardes"
|
||||
|
||||
#: index.php:890
|
||||
msgid "Delete backups"
|
||||
msgstr "Effacer les sauvegardes"
|
||||
|
||||
#: index.php:916
|
||||
#: index.php:1183
|
||||
msgid "Choose language package to import"
|
||||
msgstr "Choisir le paquetage de langue à importer"
|
||||
|
||||
#: index.php:938
|
||||
#: index.php:1240
|
||||
msgid "Choose languages to export"
|
||||
msgstr "Choisir les langues à exporter"
|
||||
|
||||
#: index.php:1059
|
||||
msgid "Group"
|
||||
msgstr "Groupe"
|
||||
|
||||
#: index.php:1061
|
||||
msgid "String"
|
||||
msgstr "Chaîne"
|
||||
|
||||
#: index.php:1063
|
||||
#: index.php:1284
|
||||
msgid "Translation"
|
||||
msgstr "Traduction"
|
||||
|
||||
#: index.php:1064
|
||||
msgid "Existing"
|
||||
msgstr "Existant"
|
||||
|
||||
#: index.php:1127
|
||||
msgid "%s occurrences"
|
||||
msgstr "%s occurrences"
|
||||
|
||||
#: index.php:1153
|
||||
msgid "Total of %s strings."
|
||||
msgstr "Total de %s chaînes."
|
||||
|
||||
#: index.php:1155
|
||||
msgid "Change the group of the selected entries to:"
|
||||
msgstr "Changer le groupe des entrées sélectionnées vers :"
|
||||
|
||||
#: index.php:1212
|
||||
msgid "Choose modules to export"
|
||||
msgstr "Choisir les modules à exporter"
|
||||
|
||||
#: index.php:1214
|
||||
msgid "Modules"
|
||||
msgstr "Modules"
|
||||
|
||||
#: index.php:1287
|
||||
msgid "Write .po files"
|
||||
msgstr "Écrire les fichier .po"
|
||||
|
||||
#: index.php:1290
|
||||
msgid "Write .lang.php files"
|
||||
msgstr "Écrire les fichier .lang.php"
|
||||
|
||||
#: index.php:1293
|
||||
msgid "Translate also strings of template files"
|
||||
msgstr "Traduire également les chaînes des fichiers de template"
|
||||
|
||||
#: index.php:1296
|
||||
msgid "Translate only unknow strings"
|
||||
msgstr "Traduire uniquement les chaînes inconnues"
|
||||
|
||||
#: index.php:1299
|
||||
msgid "Hide default modules of Dotclear"
|
||||
msgstr "Cacher les modules d'origine de Dotclear"
|
||||
|
||||
#: index.php:1302
|
||||
msgid "Write comments in files"
|
||||
msgstr "Écrire les commentaires dans les fichiers"
|
||||
|
||||
#: index.php:1305
|
||||
msgid "Write informations about author in files"
|
||||
msgstr "Écrire les informations à propos de l'auteur dans les fichiers"
|
||||
|
||||
#: index.php:1309
|
||||
msgid "Tools"
|
||||
msgstr "Outils"
|
||||
|
||||
#: index.php:1310
|
||||
msgid "Default language of l10n source:"
|
||||
msgstr "Langue par défaut des sources l10n :"
|
||||
|
||||
#: index.php:1314
|
||||
msgid "Select and configure the tool to use to translate strings:"
|
||||
msgstr "Sélectionner et configurer un outil de traduction :"
|
||||
|
||||
#: index.php:1326
|
||||
msgid "Nothing to configure for %s tool."
|
||||
msgstr "Rien à configurer pour l'outil %s."
|
||||
|
||||
#: index.php:1337
|
||||
msgid "Overwrite existing languages"
|
||||
msgstr "Écraser les langages existants"
|
||||
|
||||
#: index.php:1338
|
||||
msgid "Name of exported package"
|
||||
msgstr "Nom du paquetage exporté"
|
||||
|
||||
#: index.php:1345
|
||||
msgid "Make backups when changes are made"
|
||||
msgstr "Faire des sauvegardes lors des modifications"
|
||||
|
||||
#: index.php:1346
|
||||
msgid "Limit backups to %s files per module"
|
||||
msgstr "Limiter les sauvegardes à %s fichiers par module"
|
||||
|
||||
#: index.php:1349
|
||||
msgid "Store backups in %s"
|
||||
msgstr "Stocker les sauvegardes dans %s"
|
||||
|
||||
#: index.php:1354
|
||||
msgid "Behaviors"
|
||||
msgstr "Comportements"
|
||||
|
||||
#: index.php:1355
|
||||
msgid "Default start menu:"
|
||||
msgstr "Menu de départ par défaut :"
|
||||
|
||||
#: index.php:1360
|
||||
msgid "Enable menu on extensions page"
|
||||
msgstr "Activer le menu sur la page des extensions"
|
||||
|
||||
#: index.php:1363
|
||||
msgid "Enable menu on themes page"
|
||||
msgstr "Activer le menu sur la page des thèmes"
|
||||
|
||||
msgid "translater"
|
||||
msgstr "Traducteur"
|
||||
|
||||
msgid "Translate your Dotclear plugins and themes"
|
||||
msgstr "Traduire vos extensions et thèmes pour Dotclear"
|
||||
|
16
locales/fr/resources.php
Normal file
16
locales/fr/resources.php
Normal file
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
# -- BEGIN LICENSE BLOCK ----------------------------------
|
||||
# This file is part of translater, a plugin for Dotclear 2.
|
||||
#
|
||||
# Copyright (c) 2009 JC Denis and contributors
|
||||
# jcdenis@gdwd.com
|
||||
#
|
||||
# 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 ------------------------------------
|
||||
|
||||
if (!defined('DC_RC_PATH')) { return; }
|
||||
|
||||
$__resources['help']['translater'] = dirname(__FILE__).'/help/help.html';
|
||||
?>
|
86
release.txt
Normal file
86
release.txt
Normal file
@ -0,0 +1,86 @@
|
||||
x.x xxxxxxxx
|
||||
- help translation
|
||||
- source translation
|
||||
|
||||
2013.05.11
|
||||
* Rewrited proposal tools
|
||||
* Added Microsoft translation tool
|
||||
* Updated Google translation tool
|
||||
* Removed permissions, now required superadmin
|
||||
* Fixed page title and messages and contents
|
||||
* Moved all sub-pages into one page
|
||||
|
||||
1.5 20100901
|
||||
* Added option to set defaut tab (closes #552)
|
||||
* Fixed occurrences count (closes #551)
|
||||
* Fixed regxep (closes #550)
|
||||
* Cleaned design (thanks to osku)
|
||||
|
||||
1.4.2 20100901
|
||||
* Tried to fix crash with regexp on parsing .po file
|
||||
|
||||
1.4.1 20100626
|
||||
* Fixed crash on .po files
|
||||
* Fixed toggle function
|
||||
* Fixed admin crash on non 2.2
|
||||
* Fixed minor bugs
|
||||
* Added option to hide default modules of Dotclear
|
||||
|
||||
1.4 20100605
|
||||
* Switched to DC 2.2
|
||||
* Added toogle list of existing translation
|
||||
* Fixed google translate (now uses Google ajax API)
|
||||
* Removed "simple mode"
|
||||
* Changed admin interface (easy, light, fast)
|
||||
|
||||
1.3 20091025
|
||||
* Added babelfish help
|
||||
* Added behaviors on files writing
|
||||
* Fixed regexp again
|
||||
* Changed priority to .po files instead of .lang.php files
|
||||
|
||||
1.2 20091010
|
||||
* Added direct text copy and paste
|
||||
* Added grouping file change
|
||||
* Fixed some typo
|
||||
|
||||
1.1 20091002
|
||||
* Added the proposed translation
|
||||
* Rewrited settings system
|
||||
* Speed up expert mode
|
||||
|
||||
1.0 20090928
|
||||
* Added translation of template files. closes #250
|
||||
|
||||
0.9 20090923
|
||||
* Fixed bug on translate escape string
|
||||
* Added _uninstall.php support
|
||||
|
||||
0.8 20090816
|
||||
* Fixed php 5.3 compatibility
|
||||
|
||||
0.7
|
||||
* Fixed some l10n
|
||||
* Fixed ''xhtml strict'' validation
|
||||
|
||||
0.6
|
||||
* Added ''author'' to langs files
|
||||
* Added ''two-cols'' option
|
||||
* Added ''sort option'' on array of translations
|
||||
* Fixed ''bugs'' with no theme
|
||||
* Fixed ''bugs'' with folder perms
|
||||
* Fixed ''nothing to update" in simple mode
|
||||
* Fixed ''bugs'' in Import/export
|
||||
* Fixed ''html >'' like DC changset 2385
|
||||
* Fixed ''xhtml strict'' validation
|
||||
|
||||
0.5
|
||||
* Fixed ''admin url''
|
||||
* Added user perm check
|
||||
* Fixed ''bugs'' with bad strings (close #166)
|
||||
|
||||
0.4
|
||||
* Changed default tab to plugin
|
||||
* Replaced list of modules in select box rather than in help
|
||||
* Fixed wrong message when nothing to export
|
||||
* Added help in helpBlock
|
Loading…
Reference in New Issue
Block a user