Enhance script to track duplicate translation string and use it to
remove around 50 duplicates.
This commit is contained in:
parent
d4268c079f
commit
7f3531a04c
279
dev/translation/sanity_check_en_langfiles.php
Normal file → Executable file
279
dev/translation/sanity_check_en_langfiles.php
Normal file → Executable file
@ -1,82 +1,102 @@
|
||||
#!/usr/bin/php
|
||||
<?php
|
||||
/* Copyright (c) 2015 Tommaso Basilici <t.basilici@19.coop>
|
||||
*
|
||||
* 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, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
/* Copyright (c) 2015 Tommaso Basilici <t.basilici@19.coop>
|
||||
* Copyright (c) 2015 Laurent Destailleur <eldy@destailleur.fr>
|
||||
*
|
||||
* 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, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
echo "<html>";
|
||||
echo "<head>";
|
||||
$sapi_type = php_sapi_name();
|
||||
$script_file = basename(__FILE__);
|
||||
$path=dirname(__FILE__).'/';
|
||||
|
||||
echo "<STYLE type=\"text/css\">
|
||||
$web=0;
|
||||
|
||||
table {
|
||||
background: #f5f5f5;
|
||||
border-collapse: separate;
|
||||
box-shadow: inset 0 1px 0 #fff;
|
||||
font-size: 12px;
|
||||
line-height: 24px;
|
||||
margin: 30px auto;
|
||||
text-align: left;
|
||||
width: 800px;
|
||||
}
|
||||
|
||||
th {
|
||||
background-color: #777;
|
||||
border-left: 1px solid #555;
|
||||
border-right: 1px solid #777;
|
||||
border-top: 1px solid #555;
|
||||
border-bottom: 1px solid #333;
|
||||
color: #fff;
|
||||
font-weight: bold;
|
||||
padding: 10px 15px;
|
||||
position: relative;
|
||||
text-shadow: 0 1px 0 #000;
|
||||
}
|
||||
|
||||
td {
|
||||
border-right: 1px solid #fff;
|
||||
border-left: 1px solid #e8e8e8;
|
||||
border-top: 1px solid #fff;
|
||||
border-bottom: 1px solid #e8e8e8;
|
||||
padding: 10px 15px;
|
||||
position: relative;
|
||||
// Test if batch mode
|
||||
if (substr($sapi_type, 0, 3) == 'cgi')
|
||||
{
|
||||
$web=1;
|
||||
}
|
||||
|
||||
|
||||
tr {
|
||||
background-color: #f1f1f1;
|
||||
|
||||
if ($web)
|
||||
{
|
||||
echo "<html>";
|
||||
echo "<head>";
|
||||
|
||||
echo "<STYLE type=\"text/css\">
|
||||
|
||||
table {
|
||||
background: #f5f5f5;
|
||||
border-collapse: separate;
|
||||
box-shadow: inset 0 1px 0 #fff;
|
||||
font-size: 12px;
|
||||
line-height: 24px;
|
||||
margin: 30px auto;
|
||||
text-align: left;
|
||||
width: 800px;
|
||||
}
|
||||
|
||||
th {
|
||||
background-color: #777;
|
||||
border-left: 1px solid #555;
|
||||
border-right: 1px solid #777;
|
||||
border-top: 1px solid #555;
|
||||
border-bottom: 1px solid #333;
|
||||
color: #fff;
|
||||
font-weight: bold;
|
||||
padding: 10px 15px;
|
||||
position: relative;
|
||||
text-shadow: 0 1px 0 #000;
|
||||
}
|
||||
|
||||
td {
|
||||
border-right: 1px solid #fff;
|
||||
border-left: 1px solid #e8e8e8;
|
||||
border-top: 1px solid #fff;
|
||||
border-bottom: 1px solid #e8e8e8;
|
||||
padding: 10px 15px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
|
||||
tr {
|
||||
background-color: #f1f1f1;
|
||||
|
||||
}
|
||||
|
||||
tr:nth-child(odd) td {
|
||||
background-color: #f1f1f1;
|
||||
}
|
||||
|
||||
</STYLE>";
|
||||
|
||||
echo "<body>";
|
||||
}
|
||||
|
||||
tr:nth-child(odd) td {
|
||||
background-color: #f1f1f1;
|
||||
}
|
||||
echo "If you call this file with the argument \"?unused=true\" it searches for the translation strings that exist in en_US but are never used.\n";
|
||||
if ($web) print "<br>";
|
||||
echo "IMPORTANT: that can take quite a lot of time (up to 10 minutes), you need to tune the max_execution_time on your php.ini accordingly.\n";
|
||||
if ($web) print "<br>";
|
||||
|
||||
</STYLE>";
|
||||
|
||||
echo "<body>";
|
||||
|
||||
echo "If you call this file with the argument \"?unused=true\" it searches for the translation strings that exist in en_US but are never used.<br>";
|
||||
echo "IMPORTANT: that can take quite a lot of time (up to 10 minutes), you need to tune the max_execution_time on your php.ini accordingly.<br>";
|
||||
echo "Happy translating :)<br>";
|
||||
|
||||
|
||||
// STEP 1 - Search duplicates keys
|
||||
|
||||
|
||||
// directory containing the php and lang files
|
||||
$htdocs = "../../htdocs/";
|
||||
$htdocs = $path."/../../htdocs/";
|
||||
|
||||
// directory containing the english lang files
|
||||
$workdir = $htdocs."langs/en_US/";
|
||||
@ -114,8 +134,10 @@ foreach ($files AS $file) {
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($langstrings_3d AS $filename => $file) {
|
||||
foreach ($file AS $linenum => $value) {
|
||||
foreach ($langstrings_3d AS $filename => $file)
|
||||
{
|
||||
foreach ($file AS $linenum => $value)
|
||||
{
|
||||
$keys = array_keys($langstrings_full, $value);
|
||||
if (count($keys)>1)
|
||||
{
|
||||
@ -126,30 +148,95 @@ foreach ($langstrings_3d AS $filename => $file) {
|
||||
}
|
||||
}
|
||||
|
||||
echo "<h2>Duplicate strings in lang files in $workdir - ".count($dups)." found</h2>";
|
||||
if ($web) print "<h2>";
|
||||
print "Duplicate strings in lang files in $workdir - ".count($dups)." found\n";
|
||||
if ($web) print "</h2>";
|
||||
|
||||
echo "<table border_bottom=1> ";
|
||||
echo "<thead><tr><th align=\"center\">#</th><th>String</th><th>File and lines</th></thead>";
|
||||
echo "<tbody>";
|
||||
$count = 0;
|
||||
foreach ($dups as $string => $pages) {
|
||||
$count++;
|
||||
echo "<tr>";
|
||||
echo "<td align=\"center\">$count</td>";
|
||||
echo "<td>$string</td>";
|
||||
echo "<td>";
|
||||
foreach ($pages AS $page => $lines ) {
|
||||
echo "$page ";
|
||||
foreach ($lines as $line => $translatedvalue) {
|
||||
//echo "($line - ".(substr($translatedvalue,0,20)).") ";
|
||||
echo "($line - ".htmlentities($translatedvalue).") ";
|
||||
}
|
||||
echo "<br>";
|
||||
}
|
||||
echo "</td></tr>\n";
|
||||
if ($web)
|
||||
{
|
||||
echo '<table border_bottom="1">'."\n";
|
||||
echo "<thead><tr><th align=\"center\">#</th><th>String</th><th>File and lines</th></thead>\n";
|
||||
echo "<tbody>\n";
|
||||
}
|
||||
|
||||
$sduplicateinsamefile='';
|
||||
$sinmainandother='';
|
||||
$sininstallandadmin='';
|
||||
$sother='';
|
||||
|
||||
$count = 0;
|
||||
foreach ($dups as $string => $pages)
|
||||
{
|
||||
$count++;
|
||||
$s='';
|
||||
|
||||
// Keyword $string
|
||||
if ($web) $s.="<tr>";
|
||||
if ($web) $s.="<td align=\"center\">";
|
||||
if ($web) $s.=$count;
|
||||
if ($web) $s.="</td>";
|
||||
if ($web) $s.="<td>";
|
||||
$s.=$string;
|
||||
if ($web) $s.="</td>";
|
||||
if ($web) $s.="<td>";
|
||||
if (! $web) $s.= ' : ';
|
||||
|
||||
// Loop on each files keyword was found
|
||||
$duplicateinsamefile=0;
|
||||
$inmain=0;
|
||||
$inadmin=0;
|
||||
foreach ($pages AS $file => $lines)
|
||||
{
|
||||
if ($file == 'main.lang') { $inmain=1; $inadmin=0; }
|
||||
if ($file == 'admin.lang' && ! $inmain) { $inadmin=1; }
|
||||
|
||||
$s.=$file." ";
|
||||
|
||||
// Loop on each line keword was found into file.
|
||||
$listoffilesforthisentry=array();
|
||||
foreach ($lines as $line => $translatedvalue)
|
||||
{
|
||||
if (! empty($listoffilesforthisentry[$file])) $duplicateinsamefile=1;
|
||||
$listoffilesforthisentry[$file]=1;
|
||||
|
||||
$s.= "(".$line." - ".htmlentities($translatedvalue).") ";
|
||||
}
|
||||
if ($web) $s.="<br>";
|
||||
}
|
||||
if ($web) $s.="</td></tr>";
|
||||
$s.="\n";
|
||||
|
||||
if ($duplicateinsamefile) $sduplicateinsamefile .= $s;
|
||||
else if ($inmain) $sinmainandother .= $s;
|
||||
else if ($inadmin) $sininstallandadmin .= $s;
|
||||
else $sother .= $s;
|
||||
}
|
||||
|
||||
if (! $web) print "\n***** Entries duplicated in same file\n";
|
||||
print $sduplicateinsamefile;
|
||||
if (! $web && empty($sduplicateinsamefile)) print "None\n";
|
||||
if (! $web) print "\n";
|
||||
|
||||
if (! $web) print "***** Entries in main and another (keep only entry in main)\n";
|
||||
print $sinmainandother;
|
||||
if (! $web && empty($sinmainandother)) print "None\n";
|
||||
if (! $web) print "\n";
|
||||
|
||||
if (! $web) print "***** Entries in admin and another\n";
|
||||
print $sininstallandadmin;
|
||||
if (! $web && empty($sininstallandadmin)) print "None\n";
|
||||
if (! $web) print "\n";
|
||||
|
||||
if (! $web) print "***** Other\n";
|
||||
print $sother;
|
||||
if (! $web && empty($sother)) print "None\n";
|
||||
if (! $web) print "\n";
|
||||
|
||||
if ($web)
|
||||
{
|
||||
echo "</tbody>\n";
|
||||
echo "</table>\n";
|
||||
}
|
||||
echo "</tbody>";
|
||||
echo "</table>";
|
||||
|
||||
|
||||
// STEP 2 - Search key not used
|
||||
@ -168,12 +255,20 @@ if (! empty($_REQUEST['unused']) && $_REQUEST['unused'] == 'true')
|
||||
}
|
||||
}
|
||||
|
||||
echo "<h2>Strings in en_US that are never used</h2>";
|
||||
echo "<pre>";
|
||||
if ($web) print "<h2>\n";
|
||||
print "Strings in en_US that are never used\n";
|
||||
if ($web) print "</h2>\n";
|
||||
if ($web) echo "<pre>";
|
||||
print_r($unused);
|
||||
echo "</pre>";
|
||||
if ($web) echo "</pre>\n";
|
||||
}
|
||||
|
||||
echo "\n";
|
||||
echo "</body>";
|
||||
echo "</html>";
|
||||
if ($web)
|
||||
{
|
||||
echo "</body>\n";
|
||||
echo "</html>\n";
|
||||
}
|
||||
|
||||
exit;
|
||||
|
||||
|
||||
@ -2833,7 +2833,7 @@ else if ($id > 0 || ! empty($ref))
|
||||
print '<tr><td>' . $langs->trans('Company') . '</td>';
|
||||
print '</td><td colspan="5">';
|
||||
if (! empty($conf->global->FACTURE_CHANGE_THIRDPARTY) && $action != 'editthirdparty' && $object->brouillon && $user->rights->facture->creer)
|
||||
print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=editthirdparty&facid=' . $object->id . '">' . img_edit($langs->trans('SetLinkToThirdParty'), 1) . '</a></td>';
|
||||
print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=editthirdparty&facid=' . $object->id . '">' . img_edit($langs->trans('SetLinkToAnotherThirdParty'), 1) . '</a></td>';
|
||||
print '</tr></table>';
|
||||
print '</td><td colspan="5">';
|
||||
if ($action == 'editthirdparty') {
|
||||
|
||||
@ -121,9 +121,9 @@ abstract class DolibarrTriggers
|
||||
$langs->load("admin");
|
||||
|
||||
if ($this->version == self::VERSION_DEVELOPMENT) {
|
||||
return $langs->trans("Development");
|
||||
return $langs->trans("VersionDevelopment");
|
||||
} elseif ($this->version == self::VERSION_EXPERIMENTAL) {
|
||||
return $langs->trans("Experimental");
|
||||
return $langs->trans("VersionExperimental");
|
||||
} elseif ($this->version == self::VERSION_DOLIBARR) {
|
||||
return DOL_VERSION;
|
||||
} elseif ($this->version) {
|
||||
|
||||
@ -333,9 +333,9 @@ if (! empty($force_install_message))
|
||||
if ($note) $option.=' '.$note;
|
||||
// Deprecated and experimental
|
||||
if ($type=='mysql') $option.=' ' . $langs->trans("Deprecated");
|
||||
elseif ($type=='mssql') $option.=' '.$langs->trans("Experimental");
|
||||
elseif ($type=='sqlite') $option.=' '.$langs->trans("Experimental");
|
||||
elseif ($type=='sqlite3') $option.=' '.$langs->trans("Experimental");
|
||||
elseif ($type=='mssql') $option.=' '.$langs->trans("VersionExperimental");
|
||||
elseif ($type=='sqlite') $option.=' '.$langs->trans("VersionExperimental");
|
||||
elseif ($type=='sqlite3') $option.=' '.$langs->trans("VersionExperimental");
|
||||
// No available
|
||||
elseif (! function_exists($testfunction)) $option.=' - '.$langs->trans("FunctionNotAvailableInThisPHP");
|
||||
$option.='</option>';
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
# Dolibarr language file - en_US - Accounting Expert
|
||||
CHARSET=UTF-8
|
||||
ACCOUNTING_EXPORT_SEPARATORCSV=Column separator for export file
|
||||
ACCOUNTING_EXPORT_DATE=Date format for export file
|
||||
ACCOUNTING_EXPORT_PIECE=Export the number of piece
|
||||
@ -12,8 +11,6 @@ ACCOUNTING_EXPORT_PREFIX_SPEC=Specify the prefix for the file name
|
||||
|
||||
Accounting=Accounting
|
||||
Globalparameters=Global parameters
|
||||
Chartofaccounts=Chart of accounts
|
||||
Fiscalyear=Fiscal years
|
||||
Menuaccount=Accounting accounts
|
||||
Menuthirdpartyaccount=Thirdparty accounts
|
||||
MenuTools=Tools
|
||||
@ -33,23 +30,17 @@ Back=Return
|
||||
|
||||
Definechartofaccounts=Define a chart of accounts
|
||||
Selectchartofaccounts=Select a chart of accounts
|
||||
Validate=Validate
|
||||
Addanaccount=Add an accounting account
|
||||
AccountAccounting=Accounting account
|
||||
AccountAccountingSuggest=Accounting account suggest
|
||||
Ventilation=Breakdown
|
||||
ToDispatch=To dispatch
|
||||
Dispatched=Dispatched
|
||||
|
||||
CustomersVentilation=Breakdown customers
|
||||
SuppliersVentilation=Breakdown suppliers
|
||||
TradeMargin=Trade margin
|
||||
Reports=Reports
|
||||
ByCustomerInvoice=By invoices customers
|
||||
ByMonth=By Month
|
||||
NewAccount=New accounting account
|
||||
Update=Update
|
||||
List=List
|
||||
Create=Create
|
||||
CreateMvts=Create movement
|
||||
UpdateAccount=Modification of an accounting account
|
||||
@ -61,7 +52,6 @@ AccountBalanceByMonth=Account balance by month
|
||||
AccountingVentilation=Breakdown accounting
|
||||
AccountingVentilationSupplier=Breakdown accounting supplier
|
||||
AccountingVentilationCustomer=Breakdown accounting customer
|
||||
Line=Line
|
||||
|
||||
CAHTF=Total purchase supplier before tax
|
||||
InvoiceLines=Lines of invoice to be ventilated
|
||||
@ -112,17 +102,12 @@ Docref=Reference
|
||||
Numerocompte=Account
|
||||
Code_tiers=Thirdparty
|
||||
Labelcompte=Label account
|
||||
Debit=Debit
|
||||
Credit=Credit
|
||||
Amount=Amount
|
||||
Sens=Sens
|
||||
Codejournal=Journal
|
||||
|
||||
DelBookKeeping=Delete the records of the general ledger
|
||||
|
||||
SellsJournal=Sells journal
|
||||
PurchasesJournal=Purchases journal
|
||||
DescSellsJournal=Sells journal
|
||||
DescSellsJournal=Sales journal
|
||||
DescPurchasesJournal=Purchases journal
|
||||
BankJournal=Bank journal
|
||||
DescBankJournal=Bank journal including all the types of payments other than cash
|
||||
@ -150,9 +135,6 @@ Pcgversion=Version of the plan
|
||||
Pcgtype=Class of account
|
||||
Pcgsubtype=Under class of account
|
||||
Accountparent=Root of the account
|
||||
Active=Statement
|
||||
|
||||
NewFiscalYear=New fiscal year
|
||||
|
||||
DescVentilCustomer=Consult here the annual breakdown accounting of your invoices customers
|
||||
TotalVente=Total turnover before tax
|
||||
|
||||
@ -105,7 +105,6 @@ DetailPosition=Sort number to define menu position
|
||||
PersonalizedMenusNotSupported=Personalized menus not supported
|
||||
AllMenus=All
|
||||
NotConfigured=Module not configured
|
||||
Setup=Setup
|
||||
Activation=Activation
|
||||
Active=Active
|
||||
SetupShort=Setup
|
||||
@ -193,15 +192,12 @@ ExportOptions=Export Options
|
||||
AddDropDatabase=Add DROP DATABASE command
|
||||
AddDropTable=Add DROP TABLE command
|
||||
ExportStructure=Structure
|
||||
Datas=Data
|
||||
NameColumn=Name columns
|
||||
ExtendedInsert=Extended INSERT
|
||||
NoLockBeforeInsert=No lock commands around INSERT
|
||||
DelayedInsert=Delayed insert
|
||||
EncodeBinariesInHexa=Encode binary data in hexadecimal
|
||||
IgnoreDuplicateRecords=Ignore errors of duplicate records (INSERT IGNORE)
|
||||
Yes=Yes
|
||||
No=No
|
||||
AutoDetectLang=Autodetect (browser language)
|
||||
FeatureDisabledInDemo=Feature disabled in demo
|
||||
Rights=Permissions
|
||||
@ -926,7 +922,6 @@ MenuCompanySetup=Company/Foundation
|
||||
MenuNewUser=New user
|
||||
MenuTopManager=Top menu manager
|
||||
MenuLeftManager=Left menu manager
|
||||
MenuManager=Menu manager
|
||||
MenuSmartphoneManager=Smartphone menu manager
|
||||
DefaultMenuTopManager=Top menu manager
|
||||
DefaultMenuLeftManager=Left menu manager
|
||||
@ -1110,7 +1105,6 @@ XDebugInstalled=XDebug is loaded.
|
||||
XCacheInstalled=XCache is loaded.
|
||||
AddRefInList=Display customer/supplier ref into list (select list or combobox) and most of hyperlink. Third parties will appears with name "CC12345 - SC45678 - The big company coorp", instead of "The big company coorp".
|
||||
FieldEdition=Edition of field %s
|
||||
FixTZ=TimeZone fix
|
||||
FillThisOnlyIfRequired=Example: +2 (fill only if timezone offset problems are experienced)
|
||||
GetBarCode=Get barcode
|
||||
EmptyNumRefModelDesc=The code is free. This code can be modified at any time.
|
||||
@ -1644,8 +1638,6 @@ OpenFiscalYear=Open fiscal year
|
||||
CloseFiscalYear=Close fiscal year
|
||||
DeleteFiscalYear=Delete fiscal year
|
||||
ConfirmDeleteFiscalYear=Are you sure to delete this fiscal year ?
|
||||
Opened=Open
|
||||
Closed=Closed
|
||||
AlwaysEditable=Can always be edited
|
||||
MAIN_APPLICATION_TITLE=Force visible name of application (warning: setting your own name here may break autofill login feature when using DoliDroid mobile application)
|
||||
NbMajMin=Minimum number of uppercase characters
|
||||
|
||||
@ -59,7 +59,6 @@ PaymentBack=Payment back
|
||||
Payments=Payments
|
||||
PaymentsBack=Payments back
|
||||
PaidBack=Paid back
|
||||
DatePayment=Payment date
|
||||
DeletePayment=Delete payment
|
||||
ConfirmDeletePayment=Are you sure you want to delete this payment ?
|
||||
ConfirmConvertToReduc=Do you want to convert this credit note or deposit into an absolute discount ?<br>The amount will so be saved among all discounts and could be used as a discount for a current or a future invoice for this customer.
|
||||
@ -103,7 +102,6 @@ ConvertToReduc=Convert into future discount
|
||||
EnterPaymentReceivedFromCustomer=Enter payment received from customer
|
||||
EnterPaymentDueToCustomer=Make payment due to customer
|
||||
DisabledBecauseRemainderToPayIsZero=Disabled because remaining unpaid is zero
|
||||
Amount=Amount
|
||||
PriceBase=Price base
|
||||
BillStatus=Invoice status
|
||||
BillStatusDraft=Draft (needs to be validated)
|
||||
@ -187,7 +185,6 @@ ShowInvoiceReplace=Show replacing invoice
|
||||
ShowInvoiceAvoir=Show credit note
|
||||
ShowInvoiceDeposit=Show deposit invoice
|
||||
ShowPayment=Show payment
|
||||
File=File
|
||||
AlreadyPaid=Already paid
|
||||
AlreadyPaidBack=Already paid back
|
||||
AlreadyPaidNoCreditNotesNoDeposits=Already paid (without credit notes and deposits)
|
||||
@ -240,7 +237,6 @@ Reduction=Reduction
|
||||
ReductionShort=Reduc.
|
||||
Reductions=Reductions
|
||||
ReductionsShort=Reduc.
|
||||
Discount=Discount
|
||||
Discounts=Discounts
|
||||
AddDiscount=Create discount
|
||||
AddRelativeDiscount=Create relative discount
|
||||
|
||||
@ -56,7 +56,6 @@ ReportByCustomers=Report by customers
|
||||
ReportByQuarter=Report by rate
|
||||
CivilityCode=Civility code
|
||||
RegisteredOffice=Registered office
|
||||
Name=Name
|
||||
Lastname=Last name
|
||||
Firstname=First name
|
||||
PostOrFunction=Post/Function
|
||||
|
||||
@ -79,7 +79,6 @@ ListPayment=List of payments
|
||||
ListOfPayments=List of payments
|
||||
ListOfCustomerPayments=List of customer payments
|
||||
ListOfSupplierPayments=List of supplier payments
|
||||
DatePayment=Payment date
|
||||
DateStartPeriod=Date start period
|
||||
DateEndPeriod=Date end period
|
||||
NewVATPayment=New VAT payment
|
||||
@ -200,7 +199,6 @@ ByProductsAndServices=By products and services
|
||||
RefExt=External ref
|
||||
ToCreateAPredefinedInvoice=To create a predefined invoice, create a standard invoice then, without validating it, click onto button "Convert to predefined invoice".
|
||||
LinkedOrder=Link to order
|
||||
ReCalculate=Recalculate
|
||||
Mode1=Method 1
|
||||
Mode2=Method 2
|
||||
CalculationRuleDesc=To calculate total VAT, there is two methods:<br>Method 1 is rounding vat on each line, then summing them.<br>Method 2 is summing all vat on each line, then rounding result.<br>Final result may differs from few cents. Default mode is mode <b>%s</b>.
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
# Dolibarr language file - Source file is en_US - ecm
|
||||
MenuECM=Documents
|
||||
DocsMine=My documents
|
||||
DocsGenerated=Generated documents
|
||||
DocsElements=Elements documents
|
||||
|
||||
@ -3,8 +3,6 @@
|
||||
# No errors
|
||||
NoErrorCommitIsDone=No error, we commit
|
||||
# Errors
|
||||
Error=Error
|
||||
Errors=Errors
|
||||
ErrorButCommitIsDone=Errors found but we validate despite this
|
||||
ErrorBadEMail=EMail %s is wrong
|
||||
ErrorBadUrl=Url %s is wrong
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
# Dolibarr language file - en_US - hrm
|
||||
CHARSET=UTF-8
|
||||
# Admin
|
||||
HRM_EMAIL_EXTERNAL_SERVICE=Email to prevent HRM external service
|
||||
Establishments=Establishments
|
||||
|
||||
@ -52,9 +52,7 @@ ServerPortDescription=Database server port. Keep empty if unknown.
|
||||
DatabaseServer=Database server
|
||||
DatabaseName=Database name
|
||||
DatabasePrefix=Database prefix table
|
||||
Login=Login
|
||||
AdminLogin=Login for Dolibarr database owner.
|
||||
Password=Password
|
||||
PasswordAgain=Retype password a second time
|
||||
AdminPassword=Password for Dolibarr database owner.
|
||||
CreateDatabase=Create database
|
||||
@ -62,14 +60,11 @@ CreateUser=Create owner
|
||||
DatabaseSuperUserAccess=Database server - Superuser access
|
||||
CheckToCreateDatabase=Check box if database does not exist and must be created.<br>In this case, you must fill the login/password for superuser account at the bottom of this page.
|
||||
CheckToCreateUser=Check box if database owner does not exist and must be created.<br>In this case, you must choose its login and password and also fill the login/password for the superuser account at the bottom of this page. If this box is unchecked, owner database and its passwords must exists.
|
||||
Experimental=(experimental)
|
||||
Deprecated=(deprecated)
|
||||
DatabaseRootLoginDescription=Login of the user allowed to create new databases or new users, mandatory if your database or its owner does not already exists.
|
||||
KeepEmptyIfNoPassword=Leave empty if user has no password (avoid this)
|
||||
SaveConfigurationFile=Save values
|
||||
ConfigurationSaving=Saving configuration file
|
||||
ServerConnection=Server connection
|
||||
DatabaseConnection=Database connection
|
||||
DatabaseCreation=Database creation
|
||||
UserCreation=User creation
|
||||
CreateDatabaseObjects=Database objects creation
|
||||
@ -92,7 +87,6 @@ GoToDolibarr=Go to Dolibarr
|
||||
GoToSetupArea=Go to Dolibarr (setup area)
|
||||
MigrationNotFinished=Version of your database is not completely up to date, so you'll have to run the upgrade process again.
|
||||
GoToUpgradePage=Go to upgrade page again
|
||||
Examples=Examples
|
||||
WithNoSlashAtTheEnd=Without the slash "/" at the end
|
||||
DirectoryRecommendation=It is recommanded to use a directory outside of your directory of your web pages.
|
||||
LoginAlreadyExists=Already exists
|
||||
@ -113,7 +107,6 @@ Upgrade=Upgrade
|
||||
UpgradeDesc=Use this mode if you have replaced old Dolibarr files with files from a newer version. This will upgrade your database and data.
|
||||
Start=Start
|
||||
InstallNotAllowed=Setup not allowed by <b>conf.php</b> permissions
|
||||
NotAvailable=Not available
|
||||
YouMustCreateWithPermission=You must create file %s and set write permissions on it for the web server during install process.
|
||||
CorrectProblemAndReloadPage=Please fix the problem and press F5 to reload page.
|
||||
AlreadyDone=Already migrated
|
||||
|
||||
@ -28,6 +28,7 @@ NoTranslation=No translation
|
||||
NoRecordFound=No record found
|
||||
NoError=No error
|
||||
Error=Error
|
||||
Errors=Errors
|
||||
ErrorFieldRequired=Field '%s' is required
|
||||
ErrorFieldFormat=Field '%s' has a bad value
|
||||
ErrorFileDoesNotExists=File %s does not exist
|
||||
@ -671,7 +672,7 @@ NewAttribute=New attribute
|
||||
AttributeCode=Attribute code
|
||||
OptionalFieldsSetup=Extra attributes setup
|
||||
URLPhoto=URL of photo/logo
|
||||
SetLinkToThirdParty=Link to another third party
|
||||
SetLinkToAnotherThirdParty=Link to another third party
|
||||
CreateDraft=Create draft
|
||||
SetToDraft=Back to draft
|
||||
ClickToEdit=Click to edit
|
||||
|
||||
@ -121,7 +121,6 @@ AttributeName=Attribute name
|
||||
String=String
|
||||
Text=Text
|
||||
Int=Int
|
||||
Date=Date
|
||||
DateAndTime=Date and time
|
||||
PublicMemberCard=Member public card
|
||||
MemberNotOrNoMoreExpectedToSubscribe=Member not or no more expected to subscribe
|
||||
|
||||
@ -64,7 +64,6 @@ SearchOrder=Search order
|
||||
SearchACustomerOrder=Search a customer order
|
||||
SearchASupplierOrder=Search a supplier order
|
||||
ShipProduct=Ship product
|
||||
Discount=Discount
|
||||
CreateOrder=Create Order
|
||||
RefuseOrder=Refuse order
|
||||
ApproveOrder=Approve order
|
||||
|
||||
@ -10,27 +10,26 @@ BirthdayAlertOn= birthday alert active
|
||||
BirthdayAlertOff= birthday alert inactive
|
||||
Notify_FICHINTER_VALIDATE=Intervention validated
|
||||
Notify_FICHINTER_SENTBYMAIL=Intervention sent by mail
|
||||
Notify_BILL_VALIDATE=Customer invoice validated
|
||||
Notify_BILL_UNVALIDATE=Customer invoice unvalidated
|
||||
Notify_ORDER_VALIDATE=Customer order validated
|
||||
Notify_ORDER_SENTBYMAIL=Customer order sent by mail
|
||||
Notify_ORDER_SUPPLIER_SENTBYMAIL=Supplier order sent by mail
|
||||
Notify_ORDER_SUPPLIER_VALIDATE=Supplier order recorded
|
||||
Notify_ORDER_SUPPLIER_APPROVE=Supplier order approved
|
||||
Notify_ORDER_SUPPLIER_REFUSE=Supplier order refused
|
||||
Notify_ORDER_VALIDATE=Customer order validated
|
||||
Notify_PROPAL_VALIDATE=Customer proposal validated
|
||||
Notify_PROPAL_CLOSE_SIGNED=Customer propal closed signed
|
||||
Notify_PROPAL_CLOSE_REFUSED=Customer propal closed refused
|
||||
Notify_PROPAL_SENTBYMAIL=Commercial proposal sent by mail
|
||||
Notify_WITHDRAW_TRANSMIT=Transmission withdrawal
|
||||
Notify_WITHDRAW_CREDIT=Credit withdrawal
|
||||
Notify_WITHDRAW_EMIT=Perform withdrawal
|
||||
Notify_ORDER_SENTBYMAIL=Customer order sent by mail
|
||||
Notify_COMPANY_CREATE=Third party created
|
||||
Notify_COMPANY_SENTBYMAIL=Mails sent from third party card
|
||||
Notify_PROPAL_SENTBYMAIL=Commercial proposal sent by mail
|
||||
Notify_BILL_VALIDATE=Customer invoice validated
|
||||
Notify_BILL_UNVALIDATE=Customer invoice unvalidated
|
||||
Notify_BILL_PAYED=Customer invoice payed
|
||||
Notify_BILL_CANCEL=Customer invoice canceled
|
||||
Notify_BILL_SENTBYMAIL=Customer invoice sent by mail
|
||||
Notify_ORDER_SUPPLIER_VALIDATE=Supplier order validated
|
||||
Notify_ORDER_SUPPLIER_SENTBYMAIL=Supplier order sent by mail
|
||||
Notify_BILL_SUPPLIER_VALIDATE=Supplier invoice validated
|
||||
Notify_BILL_SUPPLIER_PAYED=Supplier invoice payed
|
||||
Notify_BILL_SUPPLIER_SENTBYMAIL=Supplier invoice sent by mail
|
||||
@ -138,7 +137,6 @@ VolumeUnitinch3=in³
|
||||
VolumeUnitounce=ounce
|
||||
VolumeUnitlitre=litre
|
||||
VolumeUnitgallon=gallon
|
||||
Size=size
|
||||
SizeUnitm=m
|
||||
SizeUnitdm=dm
|
||||
SizeUnitcm=cm
|
||||
|
||||
@ -106,7 +106,6 @@ AddToOtherProposals=Add to other proposals
|
||||
AddToMyBills=Add to my bills
|
||||
AddToOtherBills=Add to other bills
|
||||
CorrectStock=Correct stock
|
||||
AddPhoto=Add photo
|
||||
ListOfStockMovements=List of stock movements
|
||||
BuyingPrice=Buying price
|
||||
PriceForEachProduct=Products with specific prices
|
||||
@ -139,7 +138,6 @@ KeywordFilter=Keyword filter
|
||||
CategoryFilter=Category filter
|
||||
ProductToAddSearch=Search product to add
|
||||
AddDel=Add/Delete
|
||||
Quantity=Quantity
|
||||
NoMatchFound=No match found
|
||||
ProductAssociationList=List of products/services that are component of this virtual product/package
|
||||
ProductParentList=List of package products/services with this product as a component
|
||||
|
||||
@ -99,7 +99,6 @@ ReOpenAProject=Open project
|
||||
ConfirmReOpenAProject=Are you sure you want to re-open this project ?
|
||||
ProjectContact=Project contacts
|
||||
ActionsOnProject=Events on project
|
||||
OpenedProjects=Opened projects
|
||||
YouAreNotContactOfProject=You are not a contact of this private project
|
||||
DeleteATimeSpent=Delete time spent
|
||||
ConfirmDeleteATimeSpent=Are you sure you want to delete this time spent ?
|
||||
|
||||
@ -11,7 +11,6 @@ DraftRequests=Draft requests
|
||||
LastModifiedRequests=Last %s modified price requests
|
||||
RequestsOpened=Open price requests
|
||||
SupplierProposalArea=Supplier proposals area
|
||||
SupplierProposal=Supplier proposal
|
||||
SupplierProposalShort=Supplier proposal
|
||||
SupplierProposals=Supplier proposals
|
||||
NewAskPrice=New price request
|
||||
|
||||
@ -53,8 +53,6 @@ AddLineMini=Add
|
||||
Date_DEBUT=Period date start
|
||||
Date_FIN=Period date end
|
||||
ModePaiement=Payment mode
|
||||
Note=Note
|
||||
Project=Project
|
||||
|
||||
VALIDATOR=User responsible for approval
|
||||
VALIDOR=Approved by
|
||||
|
||||
@ -41,7 +41,6 @@ SearchAUser=Search a user
|
||||
LoginNotDefined=Login is not defined.
|
||||
NameNotDefined=Name is not defined.
|
||||
ListOfUsers=List of users
|
||||
Administrator=Administrator
|
||||
SuperAdministrator=Super Administrator
|
||||
SuperAdministratorDesc=Global administrator
|
||||
AdministratorDesc=Administrator
|
||||
|
||||
@ -48,7 +48,6 @@ RefusedReason=Reason for rejection
|
||||
RefusedInvoicing=Billing the rejection
|
||||
NoInvoiceRefused=Do not charge the rejection
|
||||
InvoiceRefused=Invoice refused (Charge the rejection to customer)
|
||||
Status=Status
|
||||
StatusUnknown=Unknown
|
||||
StatusWaiting=Waiting
|
||||
StatusTrans=Sent
|
||||
|
||||
@ -51,8 +51,9 @@ $select_pricing_rules=array(
|
||||
);
|
||||
if ($conf->global->MAIN_FEATURES_LEVEL >= 2)
|
||||
{
|
||||
$select_pricing_rules['PRODUIT_CUSTOMER_PRICES_BY_QTY'] = $langs->trans('PriceByQuantity').' ('.$langs->trans("Experimental").')'; // TODO If this is enabled, price must be hidden when price by qty is enabled, also price for quantity must be used when adding product into order/propal/invoice
|
||||
$select_pricing_rules['PRODUIT_CUSTOMER_PRICES_BY_QTY&PRODUIT_MULTIPRICES'] = $langs->trans('MultiPricesAbility') . '+' . $langs->trans('PriceByQuantity').' ('.$langs->trans("Experimental").')';
|
||||
$langs->load("admin");
|
||||
$select_pricing_rules['PRODUIT_CUSTOMER_PRICES_BY_QTY'] = $langs->trans('PriceByQuantity').' ('.$langs->trans("VersionExperimental").')'; // TODO If this is enabled, price must be hidden when price by qty is enabled, also price for quantity must be used when adding product into order/propal/invoice
|
||||
$select_pricing_rules['PRODUIT_CUSTOMER_PRICES_BY_QTY&PRODUIT_MULTIPRICES'] = $langs->trans('MultiPricesAbility') . '+' . $langs->trans('PriceByQuantity').' ('.$langs->trans("VersionExperimental").')';
|
||||
}
|
||||
|
||||
// Clean param
|
||||
|
||||
Loading…
Reference in New Issue
Block a user