diff --git a/dev/translation/sanity_check_en_langfiles.php b/dev/translation/sanity_check_en_langfiles.php new file mode 100644 index 00000000000..17dab085259 --- /dev/null +++ b/dev/translation/sanity_check_en_langfiles.php @@ -0,0 +1,60 @@ + +* +* 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 . +*/ + +// directory containing the english lang files +$workdir = "../../htdocs/langs/en_US/"; + +$files = scandir($workdir); +$exludefiles = array('.','..','README'); +$files = array_diff($files,$exludefiles); +$langstrings_3d = array(); +$langstrings_full = array(); +foreach ($files AS $file) { + $path_file = pathinfo($file); + // we're only interested in .lang files + if ($path_file['extension']=='lang') { + $content = file($workdir.$file); + foreach ($content AS $line => $row) { + // don't want comment lines + if (substr($row,0,1) !== '#') { + // don't want lines without the separator (why should those even be here, anyway...) + if (strpos($row,'=')!==false) { + $row_array = explode('=',$row); + $langstrings_3d[$path_file['basename']][$line+1]=$row_array[0]; + $langstrings_full[]=$row_array[0]; + } + } + } + } +} + +foreach ($langstrings_3d AS $filename => $file) { + foreach ($file AS $linenum => $value) { + $keys = array_keys($langstrings_full, $value); + if (count($keys)>1) { + foreach ($keys AS $key) { + $dups[$value][$filename][$linenum] = ''; + } + } + } +} + +echo "

Duplicate strings in lang files in $workdir

"; +echo "
";
+print_r($dups);
+
+?>
\ No newline at end of file
diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang
index 4b7ddfe0143..cd57a4d5a16 100755
--- a/htdocs/langs/en_US/admin.lang
+++ b/htdocs/langs/en_US/admin.lang
@@ -1077,7 +1077,7 @@ TotalNumberOfActivatedModules=Total number of activated feature modules: %s%s was added successfully.
 ObjectAlreadyLinkedToCategory=Element is already linked to this tag/category.
-CategorySuccessfullyCreated=This tag/category %s has been added with success.  
-ProductIsInCategories=Product/service owns to following tags/categories
-SupplierIsInCategories=Third party owns to following suppliers tags/categories
-CompanyIsInCustomersCategories=This third party owns to following customers/prospects tags/categories
-CompanyIsInSuppliersCategories=This third party owns to following suppliers tags/categories
-MemberIsInCategories=This member owns to following members tags/categories 
-ContactIsInCategories=This contact owns to following contacts tags/categories
+CategorySuccessfullyCreated=This tag/category %s has been added successfully.
+ProductIsInCategories=Product/service is linked to following tags/categories
+SupplierIsInCategories=Third party is linked to following suppliers tags/categories
+CompanyIsInCustomersCategories=This third party is linked to following customers/prospects tags/categories
+CompanyIsInSuppliersCategories=This third party is linked to following suppliers tags/categories
+MemberIsInCategories=This member is linked to following members tags/categories
+ContactIsInCategories=This contact is linked to following contacts tags/categories
 ProductHasNoCategory=This product/service is not in any tags/categories
 SupplierHasNoCategory=This supplier is not in any tags/categories
 CompanyHasNoCategory=This company is not in any tags/categories
 MemberHasNoCategory=This member is not in any tags/categories
 ContactHasNoCategory=This contact is not in any tags/categories
-ClassifyInCategory=Classify in tag/category
+ClassifyInCategory=Add to tag/category
 NoneCategory=None
 NotCategorized=Without tag/category
 CategoryExistsAtSameLevel=This category already exists with this ref
@@ -67,13 +67,13 @@ ContentsNotVisibleByAllShort=Contents not visible by all
 CategoriesTree=Tags/categories tree
 DeleteCategory=Delete tag/category
 ConfirmDeleteCategory=Are you sure you want to delete this tag/category ?
-RemoveFromCategory=Remove link with tag/categorie
-RemoveFromCategoryConfirm=Are you sure you want to remove link between the transaction and the tag/category ?
+RemoveFromCategory=Remove link with tag/category
+RemoveFromCategoryConfirm=Are you sure you want to unlink the transaction from the tag/category ?
 NoCategoriesDefined=No tag/category defined
-SuppliersCategoryShort=Suppliers tags/category
-CustomersCategoryShort=Customers tags/category
-ProductsCategoryShort=Products tags/category
-MembersCategoryShort=Members tags/category
+SuppliersCategoryShort=Suppliers tag/category
+CustomersCategoryShort=Customers tag/category
+ProductsCategoryShort=Products tag/category
+MembersCategoryShort=Members tag/category
 SuppliersCategoriesShort=Suppliers tags/categories
 CustomersCategoriesShort=Customers tags/categories
 CustomersProspectsCategoriesShort=Custo./Prosp. categories
@@ -107,4 +107,4 @@ CategoriesSetup=Tags/categories setup
 CategorieRecursiv=Link with parent tag/category automatically
 CategorieRecursivHelp=If activated, product will also linked to parent category when adding into a subcategory
 AddProductServiceIntoCategory=Add the following product/service
-ShowCategory=Show tag/category
\ No newline at end of file
+ShowCategory=Show tag/category
diff --git a/htdocs/langs/en_US/cron.lang b/htdocs/langs/en_US/cron.lang
index cf5e1a6198c..5d7abf732ab 100644
--- a/htdocs/langs/en_US/cron.lang
+++ b/htdocs/langs/en_US/cron.lang
@@ -26,11 +26,11 @@ CronLastOutput=Last run output
 CronLastResult=Last result code
 CronListOfCronJobs=List of scheduled jobs
 CronCommand=Command
-CronList=Scheduled job
+CronList=Scheduled jobs
 CronDelete=Delete scheduled jobs
-CronConfirmDelete=Are you sure you want to delete this scheduled jobs ?
+CronConfirmDelete=Are you sure you want to delete these scheduled jobs ?
 CronExecute=Launch scheduled jobs
-CronConfirmExecute=Are you sure to execute this scheduled jobs now ?
+CronConfirmExecute=Are you sure you want to execute these scheduled jobs now ?
 CronInfo=Scheduled job module allow to execute job that have been planned
 CronWaitingJobs=Waiting jobs
 CronTask=Job
@@ -39,8 +39,8 @@ CronDtStart=Start date
 CronDtEnd=End date
 CronDtNextLaunch=Next execution
 CronDtLastLaunch=Last execution
-CronFrequency=Frequancy
-CronClass=Classe
+CronFrequency=Frequency
+CronClass=Class
 CronMethod=Method
 CronModule=Module
 CronAction=Action
@@ -55,7 +55,7 @@ CronEach=Every
 JobFinished=Job launched and finished
 #Page card
 CronAdd= Add jobs
-CronHourStart= Start Hour and date of task
+CronHourStart= Start hour and date of task
 CronEvery= And execute task each
 CronObject= Instance/Object to create
 CronArgs=Parameters
@@ -79,10 +79,10 @@ CronCreateJob=Create new Scheduled Job
 # Info
 CronInfoPage=Information
 # Common
-CronType=Task type
+CronType=Job type
 CronType_method=Call method of a Dolibarr Class
 CronType_command=Shell command
 CronMenu=Cron
 CronCannotLoadClass=Cannot load class %s or object %s
 UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs.
-TaskDisabled=Task disabled
+TaskDisabled=Job disabled
diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang
index ffc80289124..7ef4c291d2a 100644
--- a/htdocs/langs/en_US/main.lang
+++ b/htdocs/langs/en_US/main.lang
@@ -421,7 +421,7 @@ Reportings=Reporting
 Draft=Draft
 Drafts=Drafts
 Validated=Validated
-Opened=Opened
+Opened=Open
 New=New
 Discount=Discount
 Unknown=Unknown
@@ -732,4 +732,4 @@ ShortThursday=T
 ShortFriday=F
 ShortSaturday=S
 ShortSunday=S
-SelectMailModel=Select email template
\ No newline at end of file
+SelectMailModel=Select email template
diff --git a/htdocs/langs/en_US/orders.lang b/htdocs/langs/en_US/orders.lang
index 8786b347866..7f2902a96e6 100644
--- a/htdocs/langs/en_US/orders.lang
+++ b/htdocs/langs/en_US/orders.lang
@@ -75,8 +75,8 @@ AddToMyOrders=Add to my orders
 AddToOtherOrders=Add to other orders
 AddToDraftOrders=Add to draft order
 ShowOrder=Show order
-NoOpenedOrders=No opened orders
-NoOtherOpenedOrders=No other opened orders
+NoOpenedOrders=No open orders
+NoOtherOpenedOrders=No other open orders
 NoDraftOrders=No draft orders
 OtherOrders=Other orders
 LastOrders=Last %s customer orders
diff --git a/htdocs/langs/en_US/printing.lang b/htdocs/langs/en_US/printing.lang
index f0cd2a40292..d86e998cf50 100644
--- a/htdocs/langs/en_US/printing.lang
+++ b/htdocs/langs/en_US/printing.lang
@@ -49,7 +49,6 @@ PRINTIPP_PORT=Port
 PRINTIPP_USER=Login
 PRINTIPP_PASSWORD=Password
 NoPrinterFound=No printers found (check your CUPS setup)
-FileWasSentToPrinter=File %s was sent to printer
 NoDefaultPrinterDefined=No default printer defined
 DefaultPrinter=Default printer
 Printer=Printer
diff --git a/htdocs/langs/en_US/products.lang b/htdocs/langs/en_US/products.lang
index 1b9a49b559d..781f867b5fe 100644
--- a/htdocs/langs/en_US/products.lang
+++ b/htdocs/langs/en_US/products.lang
@@ -44,7 +44,7 @@ CardProduct1=Service card
 CardContract=Contract card
 Warehouse=Warehouse
 Warehouses=Warehouses
-WarehouseOpened=Warehouse opened
+WarehouseOpened=Warehouse open
 WarehouseClosed=Warehouse closed
 Stock=Stock
 Stocks=Stocks
@@ -266,4 +266,4 @@ GlobalVariableUpdaterHelp1=Parses WebService data from specified URL, NS specifi
 GlobalVariableUpdaterHelpFormat1=format is {"URL": "http://example.com/urlofws", "VALUE": "array,targetvalue", "NS": "http://example.com/urlofns", "METHOD": "myWSMethod", "DATA": {"your": "data, "to": "send"}}
 UpdateInterval=Update interval (minutes)
 LastUpdated=Last updated
-CorrectlyUpdated=Correctly updated
\ No newline at end of file
+CorrectlyUpdated=Correctly updated
diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang
index e56ddf2ec4a..dde2aa7d469 100644
--- a/htdocs/langs/en_US/projects.lang
+++ b/htdocs/langs/en_US/projects.lang
@@ -11,7 +11,7 @@ ProjectsPublicDesc=This view presents all projects you are allowed to read.
 ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read.
 ProjectsDesc=This view presents all projects (your user permissions grant you permission to view everything).
 MyTasksDesc=This view is limited to projects or tasks you are a contact for (whatever is the type).
-OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible).
+OnlyOpenedProject=Only open projects are visible (projects in draft or closed status are not visible).
 TasksPublicDesc=This view presents all projects and tasks you are allowed to read.
 TasksDesc=This view presents all projects and tasks (your user permissions grant you permission to view everything).
 AllTaskVisibleButEditIfYouAreAssigned=All tasks for such project are visible, but you can enter time only for task you are assigned on.
@@ -29,7 +29,7 @@ ProjectsList=List of projects
 ShowProject=Show project
 SetProject=Set project
 NoProject=No project defined or owned
-NbOpenTasks=Nb of opened tasks
+NbOpenTasks=Nb of open tasks
 NbOfProjects=Nb of projects
 TimeSpent=Time spent
 TimeSpentByYou=Time spent by you
@@ -41,7 +41,7 @@ TaskTimeSpent=Time spent on tasks
 TaskTimeUser=User
 TaskTimeNote=Note
 TaskTimeDate=Date
-TasksOnOpenedProject=Tasks on opened projects
+TasksOnOpenedProject=Tasks on open projects
 WorkloadNotDefined=Workload not defined
 NewTimeSpent=New time spent
 MyTimeSpent=My time spent
@@ -95,7 +95,7 @@ DeleteATimeSpent=Delete time spent
 ConfirmDeleteATimeSpent=Are you sure you want to delete this time spent ?
 DoNotShowMyTasksOnly=See also tasks not assigned to me
 ShowMyTasksOnly=View only tasks assigned to me
-TaskRessourceLinks=Ressources
+TaskRessourceLinks=Resources
 ProjectsDedicatedToThisThirdParty=Projects dedicated to this third party
 NoTasks=No tasks for this project
 LinkedToAnotherCompany=Linked to other third party
@@ -139,7 +139,7 @@ ProjectReferers=Refering objects
 SearchAProject=Search a project
 ProjectMustBeValidatedFirst=Project must be validated first
 ProjectDraft=Draft projects
-FirstAddRessourceToAllocateTime=Associate a ressource to allocate time
+FirstAddRessourceToAllocateTime=Associate a resource to allocate time
 InputPerDay=Input per day 
 InputPerWeek=Input per week 
 InputPerAction=Input per action
diff --git a/htdocs/langs/en_US/propal.lang b/htdocs/langs/en_US/propal.lang
index 2b6d12870a1..c57e9c38324 100644
--- a/htdocs/langs/en_US/propal.lang
+++ b/htdocs/langs/en_US/propal.lang
@@ -4,7 +4,7 @@ Proposal=Commercial proposal
 ProposalShort=Proposal
 ProposalsDraft=Draft commercial proposals
 ProposalDraft=Draft commercial proposal
-ProposalsOpened=Opened commercial proposals
+ProposalsOpened=Open commercial proposals
 Prop=Commercial proposals
 CommercialProposal=Commercial proposal
 CommercialProposals=Commercial proposals
@@ -31,7 +31,7 @@ AmountOfProposalsByMonthHT=Amount by month (net of tax)
 NbOfProposals=Number of commercial proposals
 ShowPropal=Show proposal
 PropalsDraft=Drafts
-PropalsOpened=Opened
+PropalsOpened=Open
 PropalsNotBilled=Closed not billed
 PropalStatusDraft=Draft (needs to be validated)
 PropalStatusValidated=Validated (proposal is open)
@@ -42,7 +42,7 @@ PropalStatusNotSigned=Not signed (closed)
 PropalStatusBilled=Billed
 PropalStatusDraftShort=Draft
 PropalStatusValidatedShort=Validated
-PropalStatusOpenedShort=Opened
+PropalStatusOpenedShort=Open
 PropalStatusClosedShort=Closed
 PropalStatusSignedShort=Signed
 PropalStatusNotSignedShort=Not signed
@@ -51,8 +51,8 @@ PropalsToClose=Commercial proposals to close
 PropalsToBill=Signed commercial proposals to bill
 ListOfProposals=List of commercial proposals
 ActionsOnPropal=Events on proposal
-NoOpenedPropals=No opened commercial proposals
-NoOtherOpenedPropals=No other opened commercial proposals
+NoOpenedPropals=No open commercial proposals
+NoOtherOpenedPropals=No other open commercial proposals
 RefProposal=Commercial proposal ref
 SendPropalByMail=Send commercial proposal by mail
 AssociatedDocuments=Documents associated with the proposal:
diff --git a/htdocs/langs/en_US/sendings.lang b/htdocs/langs/en_US/sendings.lang
index dae86e3d8de..a15aa2e2e07 100644
--- a/htdocs/langs/en_US/sendings.lang
+++ b/htdocs/langs/en_US/sendings.lang
@@ -65,10 +65,10 @@ ShipmentLine=Shipment line
 CarrierList=List of transporters
 SendingRunning=Product from ordered customer orders
 SuppliersReceiptRunning=Product from ordered supplier orders
-ProductQtyInCustomersOrdersRunning=Product quantity into opened customers orders
-ProductQtyInSuppliersOrdersRunning=Product quantity into opened suppliers orders
+ProductQtyInCustomersOrdersRunning=Product quantity into open customers orders
+ProductQtyInSuppliersOrdersRunning=Product quantity into open suppliers orders
 ProductQtyInShipmentAlreadySent=Product quantity from opended customer order already sent
-ProductQtyInSuppliersShipmentAlreadyRecevied=Product quantity from opened supplier order already received
+ProductQtyInSuppliersShipmentAlreadyRecevied=Product quantity from open supplier order already received
 
 # Sending methods
 SendingMethodCATCH=Catch by customer
diff --git a/htdocs/langs/en_US/stocks.lang b/htdocs/langs/en_US/stocks.lang
index cc9dc79360d..924878973bb 100644
--- a/htdocs/langs/en_US/stocks.lang
+++ b/htdocs/langs/en_US/stocks.lang
@@ -5,7 +5,7 @@ Warehouses=Warehouses
 NewWarehouse=New warehouse / Stock area
 WarehouseEdit=Modify warehouse
 MenuNewWarehouse=New warehouse
-WarehouseOpened=Warehouse opened
+WarehouseOpened=Warehouse open
 WarehouseClosed=Warehouse closed
 WarehouseSource=Source warehouse
 WarehouseSourceNotDefined=No warehouse defined,
@@ -135,5 +135,5 @@ MovementCorrectStock=Stock correction for product %s
 MovementTransferStock=Stock transfer of product %s into another warehouse
 WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when "Product lot" module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps.
 InventoryCodeShort=Inv./Mov. code
-NoPendingReceptionOnSupplierOrder=No pending reception due to opened supplier order
-ThisSerialAlreadyExistWithDifferentDate=This lot/serial number (%s) already exists but with different eatby or sellby date (found %s but you enter %s).
\ No newline at end of file
+NoPendingReceptionOnSupplierOrder=No pending reception due to open supplier order
+ThisSerialAlreadyExistWithDifferentDate=This lot/serial number (%s) already exists but with different eatby or sellby date (found %s but you enter %s).
diff --git a/htdocs/langs/en_US/trips.lang b/htdocs/langs/en_US/trips.lang
index 30b6070632b..d4e4e8c4359 100644
--- a/htdocs/langs/en_US/trips.lang
+++ b/htdocs/langs/en_US/trips.lang
@@ -44,7 +44,6 @@ TF_HOTEL=Hotel
 TF_TAXI=Taxi
 
 ErrorDoubleDeclaration=You have declared another expense report into a similar date range.
-ListTripsAndExpenses=List of expense reports
 AucuneNDF=No expense reports found for this criteria
 AucuneLigne=There is no expense report declared yet
 AddLine=Add a line
diff --git a/htdocs/langs/en_US/workflow.lang b/htdocs/langs/en_US/workflow.lang
index 84b245fd77c..82af8e6c903 100644
--- a/htdocs/langs/en_US/workflow.lang
+++ b/htdocs/langs/en_US/workflow.lang
@@ -1,6 +1,6 @@
 # Dolibarr language file - Source file is en_US - admin 
 WorkflowSetup=Workflow module setup
-WorkflowDesc=This module is designed to modify the behaviour of automatic actions into application. By default, workflow is opened (you make thing in order you want). You can activate the automatic actions that you are interested in.
+WorkflowDesc=This module is designed to modify the behaviour of automatic actions into application. By default, workflow is open (you can do things in the order you want). You can activate the automatic actions you are interested in.
 ThereIsNoWorkflowToModify=There is no workflow to modify for the activated module.
 descWORKFLOW_PROPAL_AUTOCREATE_ORDER=Automatically create a customer order after a commercial proposal is signed
 descWORKFLOW_PROPAL_AUTOCREATE_INVOICEAutomatically create a customer invoice after a commercial proposal is signed