From 9ce44542fdd58f5a1445e3a423b8908d3a986f39 Mon Sep 17 00:00:00 2001 From: benfre Date: Fri, 25 Nov 2022 01:02:25 +0800 Subject: [PATCH 1/4] Test translation implement using JavaScript objects --- generate_translate_template.ps1 | 8 + .../Resources/public/js/Util/i18n.js | 15 +- .../Resources/public/js/Util/translation.json | 479 ++++++++++++++++++ 3 files changed, 500 insertions(+), 2 deletions(-) create mode 100644 generate_translate_template.ps1 create mode 100644 src/PartKeepr/FrontendBundle/Resources/public/js/Util/translation.json diff --git a/generate_translate_template.ps1 b/generate_translate_template.ps1 new file mode 100644 index 000000000..31fe9b486 --- /dev/null +++ b/generate_translate_template.ps1 @@ -0,0 +1,8 @@ + +$data = $(Get-ChildItem -r -i *.js | Select-String 'i18n\("([\w\s]*)"\)' | ForEach-Object -Process {$_.Matches[0].Groups[1].Value} | Select-Object -Unique | Sort-Object |ForEach-Object -Process {"`n`"{0}`":`"{0}`"" -f $_}) +$data2 = $data -join ',' + "{`"translation`": + {$data2} +}" | Out-File -FilePath translation_template.json + + diff --git a/src/PartKeepr/FrontendBundle/Resources/public/js/Util/i18n.js b/src/PartKeepr/FrontendBundle/Resources/public/js/Util/i18n.js index 77dd28a36..f92296e89 100644 --- a/src/PartKeepr/FrontendBundle/Resources/public/js/Util/i18n.js +++ b/src/PartKeepr/FrontendBundle/Resources/public/js/Util/i18n.js @@ -3,6 +3,17 @@ * @param string * @return {*} */ + +import translation from "./translation.json" assert {type: 'json'} + function i18n (string) { - return string; -} \ No newline at end of file + if(string in translation.translation) + { + return translation.translation[string]; + } + else + { + return string; + } + +} diff --git a/src/PartKeepr/FrontendBundle/Resources/public/js/Util/translation.json b/src/PartKeepr/FrontendBundle/Resources/public/js/Util/translation.json new file mode 100644 index 000000000..5061201ce --- /dev/null +++ b/src/PartKeepr/FrontendBundle/Resources/public/js/Util/translation.json @@ -0,0 +1,479 @@ +{"translation": + { +"A category must be selected":"A category must be selected", +"Absolute":"Absolute", +"Acknowledge Notice":"Acknowledge Notice", +"Action":"Action", +"Actions":"Actions", +"Active":"Active", +"Add":"Add", +"Add Action":"Add Action", +"Add Batch Job":"Add Batch Job", +"Add Category":"Add Category", +"Add Data":"Add Data", +"Add Distributor":"Add Distributor", +"Add Filter":"Add Filter", +"Add Filter Expression":"Add Filter Expression", +"Add Footprint":"Add Footprint", +"Add Item":"Add Item", +"Add Logo":"Add Logo", +"Add Manufacturer":"Add Manufacturer", +"Add new field":"Add new field", +"Add Parametric Search Expression":"Add Parametric Search Expression", +"Add Part":"Add Part", +"Add Part Measurement Unit":"Add Part Measurement Unit", +"Add Project":"Add Project", +"Add selected Field":"Add selected Field", +"Add Stock":"Add Stock", +"Add Storage Location":"Add Storage Location", +"Add Unit":"Add Unit", +"Add User":"Add User", +"Add Value":"Add Value", +"Address":"Address", +"All Subcategories":"All Subcategories", +"All tips have been marked as unread":"All tips have been marked as unread", +"Always import":"Always import", +"Amount":"Amount", +"An existing storage location must be selected":"An existing storage location must be selected", +"Any Stock Level":"Any Stock Level", +"Apply":"Apply", +"Apply Parts":"Apply Parts", +"Attachment Renderer":"Attachment Renderer", +"Attachments":"Attachments", +"Available":"Available", +"Available fields":"Available fields", +"Available Formats":"Available Formats", +"Available Image Formats":"Available Image Formats", +"Average Part Value":"Average Part Value", +"Backtrace":"Backtrace", +"Base Entity":"Base Entity", +"Base Entity not selected":"Base Entity not selected", +"Basic":"Basic", +"Basic Data":"Basic Data", +"Batch Job":"Batch Job", +"Batch Job Completed Successfully":"Batch Job Completed Successfully", +"Batch Job Name":"Batch Job Name", +"Behaviour when item does not exist":"Behaviour when item does not exist", +"Behaviour when item exists":"Behaviour when item exists", +"Best Datasheet":"Best Datasheet", +"CAD Model":"CAD Model", +"CAD Models":"CAD Models", +"Cancel":"Cancel", +"Categories":"Categories", +"Category":"Category", +"Category Name":"Category Name", +"Category Scope":"Category Scope", +"Change Image":"Change Image", +"Choose Projects to create a report for":"Choose Projects to create a report for", +"Close":"Close", +"Code":"Code", +"Collapse All":"Collapse All", +"Collapse all Groups":"Collapse all Groups", +"Comment":"Comment", +"Compliance Documents":"Compliance Documents", +"Condition":"Condition", +"Configuration":"Configuration", +"Configure":"Configure", +"Configure Columns":"Configure Columns", +"Confirm Category Delete":"Confirm Category Delete", +"Confirm preset deletion":"Confirm preset deletion", +"Connect":"Connect", +"Connected":"Connected", +"Contained Parts":"Contained Parts", +"Count":"Count", +"Counts per Unit":"Counts per Unit", +"Create blank item after save":"Create blank item after save", +"Create blank preset":"Create blank preset", +"Create Copy after save":"Create Copy after save", +"Create date":"Create date", +"Create Date":"Create Date", +"Create new entity":"Create new entity", +"Create new item":"Create new item", +"Create new Part":"Create new Part", +"Create Report":"Create Report", +"Create Storage Locations":"Create Storage Locations", +"Created":"Created", +"Critical Error":"Critical Error", +"CSS Class":"CSS Class", +"CSV":"CSV", +"Currency":"Currency", +"Currency Renderer":"Currency Renderer", +"Currency Symbol":"Currency Symbol", +"Currency Symbol after value":"Currency Symbol after value", +"Current Password":"Current Password", +"Current Statistics":"Current Statistics", +"Datasheet":"Datasheet", +"Datasheets":"Datasheets", +"Date":"Date", +"Default":"Default", +"Delete":"Delete", +"Delete Action":"Delete Action", +"Delete Batch Job":"Delete Batch Job", +"Delete Category":"Delete Category", +"Delete Distributor":"Delete Distributor", +"Delete field":"Delete field", +"Delete Footprint":"Delete Footprint", +"Delete Item":"Delete Item", +"Delete Logo":"Delete Logo", +"Delete Manufacturer":"Delete Manufacturer", +"Delete Part":"Delete Part", +"Delete Part Measurement Unit":"Delete Part Measurement Unit", +"Delete Project":"Delete Project", +"Delete Query Field":"Delete Query Field", +"Delete Report":"Delete Report", +"Delete selected preset":"Delete selected preset", +"Delete Storage Location":"Delete Storage Location", +"Delete Unit":"Delete Unit", +"Delete Update Field":"Delete Update Field", +"Delete User":"Delete User", +"Description":"Description", +"Detail":"Detail", +"Details":"Details", +"Developers":"Developers", +"Different Parts":"Different Parts", +"Disconnected":"Disconnected", +"Display Field":"Display Field", +"Display File":"Display File", +"Display tips on login":"Display tips on login", +"Distributor":"Distributor", +"Distributor is used for price calculations":"Distributor is used for price calculations", +"Distributor Order Number":"Distributor Order Number", +"Distributors":"Distributors", +"Duplicate":"Duplicate", +"Duplicate basic data only":"Duplicate basic data only", +"Duplicate with all data":"Duplicate with all data", +"Dynamic":"Dynamic", +"Edit":"Edit", +"Edit Category":"Edit Category", +"Edit Parameter":"Edit Parameter", +"Edit Part":"Edit Part", +"Email":"Email", +"End":"End", +"Enter Search Terms":"Enter Search Terms", +"Enter the value":"Enter the value", +"Entity":"Entity", +"Equals":"Equals", +"Error":"Error", +"Errors":"Errors", +"Errors occured":"Errors occured", +"Excel 2007 and later":"Excel 2007 and later", +"Execute Batch Job":"Execute Batch Job", +"Execute import":"Execute import", +"Expand All":"Expand All", +"Expand all Groups":"Expand all Groups", +"Export":"Export", +"Export Grid":"Export Grid", +"Fax":"Fax", +"Field":"Field", +"Field name which denotes the quantity":"Field name which denotes the quantity", +"File":"File", +"File Upload":"File Upload", +"Filename":"Filename", +"Filter":"Filter", +"Filter by Part Parameter":"Filter by Part Parameter", +"Fixed":"Fixed", +"Footprint":"Footprint", +"From":"From", +"Full Report":"Full Report", +"Greater than":"Greater than", +"Greater than or equals":"Greater than or equals", +"Has attachments":"Has attachments", +"Help":"Help", +"Hidden":"Hidden", +"Hover Title":"Hover Title", +"Icon Renderer":"Icon Renderer", +"ID Renderer":"ID Renderer", +"Ignore":"Ignore", +"Ignore this entry for price calculations":"Ignore this entry for price calculations", +"Image":"Image", +"Image Upload":"Image Upload", +"Images":"Images", +"Import":"Import", +"Import Field":"Import Field", +"Import Images":"Import Images", +"Import Results":"Import Results", +"Index":"Index", +"Initial Stock Level":"Initial Stock Level", +"Insert special character":"Insert special character", +"Internal ID":"Internal ID", +"Internal Part Number":"Internal Part Number", +"Internet Explorer does not support HTML5 webcams":"Internet Explorer does not support HTML5 webcams", +"Invalid quantity":"Invalid quantity", +"Invert":"Invert", +"Item Price":"Item Price", +"Key":"Key", +"Legacy User":"Legacy User", +"Length":"Length", +"Less than":"Less than", +"Less than or equals":"Less than or equals", +"Load Report":"Load Report", +"Logged in as":"Logged in as", +"Logos":"Logos", +"Lot Number":"Lot Number", +"Manufacturer":"Manufacturer", +"Manufacturer Logos":"Manufacturer Logos", +"Manufacturer Name":"Manufacturer Name", +"Manufacturer Part Number":"Manufacturer Part Number", +"Manufacturers":"Manufacturers", +"Mapping":"Mapping", +"Mark all tips unread":"Mark all tips unread", +"Mark selected preset as default":"Mark selected preset as default", +"Match field":"Match field", +"Matches a list":"Matches a list", +"Max Value":"Max Value", +"Measurement Unit":"Measurement Unit", +"Measurement Unit Name":"Measurement Unit Name", +"Message":"Message", +"Message Log":"Message Log", +"Message of the day":"Message of the day", +"Meta Part":"Meta Part", +"Min Value":"Min Value", +"Minimum Numbers":"Minimum Numbers", +"Minimum Stock Level":"Minimum Stock Level", +"Modifier":"Modifier", +"More Information":"More Information", +"Move down":"Move down", +"Move to bottom":"Move to bottom", +"Move to top":"Move to top", +"Move up":"Move up", +"MPN":"MPN", +"Multiple Parts found":"Multiple Parts found", +"Name":"Name", +"Name Prefix":"Name Prefix", +"Needs Review":"Needs Review", +"New Batch Job":"New Batch Job", +"New Distributor":"New Distributor", +"New Footprint":"New Footprint", +"New Item":"New Item", +"New Manufacturer":"New Manufacturer", +"New Part Measurement Unit":"New Part Measurement Unit", +"New Password":"New Password", +"New Project":"New Project", +"New Storage Location":"New Storage Location", +"New System Notice":"New System Notice", +"New Unit":"New Unit", +"New User":"New User", +"Next Tip":"Next Tip", +"No action selected":"No action selected", +"No attachments":"No attachments", +"No Parameters":"No Parameters", +"No preset selected":"No preset selected", +"Nominal Value":"Nominal Value", +"none":"none", +"None":"None", +"Not equals":"Not equals", +"Not logged in":"Not logged in", +"Numeric":"Numeric", +"Object Field Renderer":"Object Field Renderer", +"Octopart Error":"Octopart Error", +"Octopart is not configured":"Octopart is not configured", +"Octopart Search":"Octopart Search", +"Offers":"Offers", +"OK":"OK", +"Operator":"Operator", +"Order Amount":"Order Amount", +"Order Number":"Order Number", +"Overage":"Overage", +"Overage Type":"Overage Type", +"Package Price":"Package Price", +"Packaging Unit":"Packaging Unit", +"Parameter":"Parameter", +"Parameter Criterias":"Parameter Criterias", +"Parameter Name":"Parameter Name", +"Parameters":"Parameters", +"Part":"Part", +"Part Description":"Part Description", +"Part Details":"Part Details", +"Part Filter":"Part Filter", +"Part Manager":"Part Manager", +"Part Manager Layout":"Part Manager Layout", +"Part Measurement Unit":"Part Measurement Unit", +"Part Name":"Part Name", +"Part Number":"Part Number", +"Part Parameter Name":"Part Parameter Name", +"Part Parameter Renderer":"Part Parameter Renderer", +"Part Parameters":"Part Parameters", +"Parts":"Parts", +"Parts List":"Parts List", +"Parts with price":"Parts with price", +"Parts without price":"Parts without price", +"Password":"Password", +"Password successfully changed":"Password successfully changed", +"Path":"Path", +"Patreon Status":"Patreon Status", +"Per Item":"Per Item", +"Percent":"Percent", +"Phone":"Phone", +"Power":"Power", +"Prefix":"Prefix", +"Prefix with zeroes":"Prefix with zeroes", +"Preview":"Preview", +"Previous Project Reports":"Previous Project Reports", +"Previous Tip":"Previous Tip", +"Price":"Price", +"Price per item":"Price per item", +"Price per Item":"Price per Item", +"Pricing":"Pricing", +"Production Remarks":"Production Remarks", +"Project":"Project", +"Project Description":"Project Description", +"Project Name":"Project Name", +"Project Parts":"Project Parts", +"Project Report":"Project Report", +"Project Report MetaPart Renderer":"Project Report MetaPart Renderer", +"Project Report Name":"Project Report Name", +"Project Report Quantity Renderer":"Project Report Quantity Renderer", +"Project Report Remark Renderer":"Project Report Remark Renderer", +"Project Report Stock Availability Renderer":"Project Report Stock Availability Renderer", +"Project Run":"Project Run", +"Projects":"Projects", +"Property":"Property", +"Provider":"Provider", +"Qty":"Qty", +"Quantity":"Quantity", +"Query Fields":"Query Fields", +"Ratio":"Ratio", +"Reference Design":"Reference Design", +"Reference Designs":"Reference Designs", +"Refresh":"Refresh", +"Reload":"Reload", +"Remarks":"Remarks", +"Remove":"Remove", +"Remove filter":"Remove filter", +"Remove parts from stock":"Remove parts from stock", +"Remove Stock":"Remove Stock", +"Render the icon if the column is zero":"Render the icon if the column is zero", +"Renderer":"Renderer", +"Renderer Configuration":"Renderer Configuration", +"Renderers":"Renderers", +"Renders a field value from an object":"Renders a field value from an object", +"Renders a specific icon if the part is a meta part":"Renders a specific icon if the part is a meta part", +"Renders a specific part parameter":"Renders a specific part parameter", +"Renders a value with the system defined currency":"Renders a value with the system defined currency", +"Renders an attachment icon if one or more attachments exist":"Renders an attachment icon if one or more attachments exist", +"Renders an icon":"Renders an icon", +"Renders an ID in both base36 as well as integer format":"Renders an ID in both base36 as well as integer format", +"Renders the amount of required metadata quantities":"Renders the amount of required metadata quantities", +"Renders the available stock level which includes the sum of all meta parts":"Renders the available stock level which includes the sum of all meta parts", +"Renders the remarks field":"Renders the remarks field", +"Renders the stock level including the part unit":"Renders the stock level including the part unit", +"Request":"Request", +"Required":"Required", +"Required Fields":"Required Fields", +"Reset":"Reset", +"Reset Filter":"Reset Filter", +"Response":"Response", +"Response Status Code":"Response Status Code", +"Restore Defaults":"Restore Defaults", +"Results":"Results", +"Reveal Category for selected part":"Reveal Category for selected part", +"Sample":"Sample", +"Save":"Save", +"Save Batch Job":"Save Batch Job", +"Save Distributor":"Save Distributor", +"Save Footprint":"Save Footprint", +"Save Manufacturer":"Save Manufacturer", +"Save Part Measurement Unit":"Save Part Measurement Unit", +"Save Preset":"Save Preset", +"Save Project":"Save Project", +"Save Project Report":"Save Project Report", +"Save Storage Location":"Save Storage Location", +"Save System Notice":"Save System Notice", +"Save Unit":"Save Unit", +"Save User":"Save User", +"Search":"Search", +"Search Fields":"Search Fields", +"Search Mode":"Search Mode", +"Search Part":"Search Part", +"Search Part Configuration":"Search Part Configuration", +"Searches for a part in the parts list":"Searches for a part in the parts list", +"Select a field":"Select a field", +"Select a file to upload or enter an URL to load the file from":"Select a file to upload or enter an URL to load the file from", +"Select all fields to be searched":"Select all fields to be searched", +"Select an action":"Select an action", +"Select an item to edit":"Select an item to edit", +"Select an operator":"Select an operator", +"Select Entity":"Select Entity", +"Select entity":"Select entity", +"Select Field":"Select Field", +"Select field":"Select field", +"Select match field":"Select match field", +"Selected Category":"Selected Category", +"Separate search terms":"Separate search terms", +"Separate thousands":"Separate thousands", +"Server Configuration":"Server Configuration", +"Set to fixed value":"Set to fixed value", +"Severity":"Severity", +"Short Name":"Short Name", +"Show Parts that need to reviewed only":"Show Parts that need to reviewed only", +"Show Parts without Price only":"Show Parts without Price only", +"Show Parts without stock removals only":"Show Parts without stock removals only", +"Show read tips":"Show read tips", +"Show Tips on login":"Show Tips on login", +"Size":"Size", +"SKU":"SKU", +"SKU URL":"SKU URL", +"Source File":"Source File", +"Start":"Start", +"Statistics Chart":"Statistics Chart", +"Status":"Status", +"Stock":"Stock", +"Stock Level":"Stock Level", +"Stock Level Renderer":"Stock Level Renderer", +"Stock Mode":"Stock Mode", +"Stock Removal Complete":"Stock Removal Complete", +"Stock Settings":"Stock Settings", +"Stock to use":"Stock to use", +"Stock User":"Stock User", +"Stop import":"Stop import", +"Storage Location":"Storage Location", +"Sum":"Sum", +"Symbol":"Symbol", +"System":"System", +"System Error":"System Error", +"System Preferences":"System Preferences", +"Take image":"Take image", +"Take picture and upload":"Take picture and upload", +"Take Webcam Photo":"Take Webcam Photo", +"Takeover all data":"Takeover all data", +"Text":"Text", +"The batch job has been executed successfully":"The batch job has been executed successfully", +"The field to render from an object":"The field to render from an object", +"The icon CSS class to render":"The icon CSS class to render", +"The selected renderer cannot be configured":"The selected renderer cannot be configured", +"The title to display when the mouse is hovered above the icon":"The title to display when the mouse is hovered above the icon", +"Theme":"Theme", +"This field is required":"This field is required", +"Thumbnail View":"Thumbnail View", +"Tip of the Day":"Tip of the Day", +"Title":"Title", +"To":"To", +"Tooltip":"Tooltip", +"Total Part Value":"Total Part Value", +"Type":"Type", +"Unable to retrieve the statistic data":"Unable to retrieve the statistic data", +"Unacknowledged System Notices":"Unacknowledged System Notices", +"Unit":"Unit", +"Unit Name":"Unit Name", +"unknown":"unknown", +"Update data if an item exists":"Update data if an item exists", +"Update Fields":"Update Fields", +"Upload Size Information":"Upload Size Information", +"URL":"URL", +"Use":"Use", +"Use this distributor for price calculations in project reports":"Use this distributor for price calculations in project reports", +"used":"used", +"Used for price calculations":"Used for price calculations", +"Used in Projects":"Used in Projects", +"User":"User", +"User Interface":"User Interface", +"Username":"Username", +"Value":"Value", +"Value Type":"Value Type", +"View":"View", +"Webcam not supported":"Webcam not supported", +"Website":"Website", +"Width":"Width", +"You need to select a base entity to perform the query against":"You need to select a base entity to perform the query against", +"You need to select a part":"You need to select a part"} +} From 6fc74e90ead709645933c858594b1b8baa0e8c4d Mon Sep 17 00:00:00 2001 From: benfre Date: Sun, 27 Nov 2022 00:03:39 +0800 Subject: [PATCH 2/4] fix translate template generate script, i18n with two type of string --- generate_translate_template.ps1 | 16 +- .../Resources/public/js/Util/i18n.js | 6 +- translation_template.js_temp | 634 ++++++++++++++++++ 3 files changed, 647 insertions(+), 9 deletions(-) create mode 100644 translation_template.js_temp diff --git a/generate_translate_template.ps1 b/generate_translate_template.ps1 index 31fe9b486..cc91d456a 100644 --- a/generate_translate_template.ps1 +++ b/generate_translate_template.ps1 @@ -1,8 +1,14 @@ -$data = $(Get-ChildItem -r -i *.js | Select-String 'i18n\("([\w\s]*)"\)' | ForEach-Object -Process {$_.Matches[0].Groups[1].Value} | Select-Object -Unique | Sort-Object |ForEach-Object -Process {"`n`"{0}`":`"{0}`"" -f $_}) -$data2 = $data -join ',' - "{`"translation`": - {$data2} -}" | Out-File -FilePath translation_template.json +$case1 = $(Get-ChildItem -r -i *.js | Select-String "i18n\(`"([^`"]*?)`"\)" -AllMatches | ForEach-Object -Process {$_.Matches[0].Groups[1].Value} | Select-Object -Unique) +$case2 = $(Get-ChildItem -r -i *.js | Select-String "i18n\(`'([^`']*?)`'\)" -AllMatches | ForEach-Object -Process {$_.Matches[0].Groups[1].Value} | Select-Object -Unique) +$all_case = $case1 + $case2 + +$key_pairs = $(echo $all_case |Sort-Object |ForEach-Object -Process {$x = $_ -replace "`"","\`""; "`n`"{0}`":`"{0}`"" -f $x}) + +$all_str = $key_pairs -join ',' + +"translation= +{$all_str +};" | Out-File -FilePath translation_template.js_temp diff --git a/src/PartKeepr/FrontendBundle/Resources/public/js/Util/i18n.js b/src/PartKeepr/FrontendBundle/Resources/public/js/Util/i18n.js index f92296e89..9f45ca79a 100644 --- a/src/PartKeepr/FrontendBundle/Resources/public/js/Util/i18n.js +++ b/src/PartKeepr/FrontendBundle/Resources/public/js/Util/i18n.js @@ -4,12 +4,10 @@ * @return {*} */ -import translation from "./translation.json" assert {type: 'json'} - function i18n (string) { - if(string in translation.translation) + if(string in translation) { - return translation.translation[string]; + return translation[string]; } else { diff --git a/translation_template.js_temp b/translation_template.js_temp new file mode 100644 index 000000000..ee68fb91a --- /dev/null +++ b/translation_template.js_temp @@ -0,0 +1,634 @@ +translation= +{ +"":"", +"

PartKeepr needs your support

":"

PartKeepr needs your support

", +"

Every cent helps to keep development alive!

":"

Every cent helps to keep development alive!

", +"

We need you to support development, so we can create new cool features, user interface improvements and regular releases!

":"

We need you to support development, so we can create new cool features, user interface improvements and regular releases!

", +"A category must be selected":"A category must be selected", +"Absolute":"Absolute", +"Acknowledge Notice":"Acknowledge Notice", +"Action":"Action", +"Actions":"Actions", +"Actions":"Actions", +"Active":"Active", +"Add":"Add", +"Add":"Add", +"Add Action":"Add Action", +"Add Batch Job":"Add Batch Job", +"Add Category":"Add Category", +"Add Data":"Add Data", +"Add Distributor":"Add Distributor", +"Add Filter":"Add Filter", +"Add Filter Expression":"Add Filter Expression", +"Add Footprint":"Add Footprint", +"Add Item":"Add Item", +"Add Logo":"Add Logo", +"Add Manufacturer":"Add Manufacturer", +"Add Meta-Part":"Add Meta-Part", +"Add new field":"Add new field", +"Add Parametric Search Expression":"Add Parametric Search Expression", +"Add Part":"Add Part", +"Add Part Measurement Unit":"Add Part Measurement Unit", +"Add Part(s)":"Add Part(s)", +"Add Project":"Add Project", +"Add Query Field…":"Add Query Field…", +"Add selected Field":"Add selected Field", +"Add Stock":"Add Stock", +"Add Storage Location":"Add Storage Location", +"Add Unit":"Add Unit", +"Add Update Field…":"Add Update Field…", +"Add User":"Add User", +"Add Value":"Add Value", +"Add…":"Add…", +"Add/Edit Meta-Part":"Add/Edit Meta-Part", +"Add/Remove Stock":"Add/Remove Stock", +"Add/Remove Stock Configuration":"Add/Remove Stock Configuration", +"Address":"Address", +"All Subcategories":"All Subcategories", +"All tips have been marked as unread":"All tips have been marked as unread", +"Allowed SI-Prefixes":"Allowed SI-Prefixes", +"Always import":"Always import", +"Always set to:":"Always set to:", +"Amount":"Amount", +"An existing storage location must be selected":"An existing storage location must be selected", +"Any Stock Level":"Any Stock Level", +"Apply":"Apply", +"Apply Parts":"Apply Parts", +"Applying distributors…":"Applying distributors…", +"Applying theme…":"Applying theme…", +"Are you sure to delete the preset?":"Are you sure to delete the preset?", +"Attachment Renderer":"Attachment Renderer", +"Attachments":"Attachments", +"Auto-Fill Distributors":"Auto-Fill Distributors", +"Available":"Available", +"Available fields":"Available fields", +"Available Formats":"Available Formats", +"Available Image Formats":"Available Image Formats", +"Average Part Value":"Average Part Value", +"Avg. Price":"Avg. Price", +"Backtrace":"Backtrace", +"Barcode Scanner Configuration":"Barcode Scanner Configuration", +"Base Entity":"Base Entity", +"Base Entity not selected":"Base Entity not selected", +"Basic":"Basic", +"Basic Data":"Basic Data", +"Batch Job":"Batch Job", +"Batch Job Completed Successfully":"Batch Job Completed Successfully", +"Batch Job Name":"Batch Job Name", +"Batch Jobs":"Batch Jobs", +"Behaviour when item does not exist":"Behaviour when item does not exist", +"Behaviour when item exists":"Behaviour when item exists", +"Best Datasheet":"Best Datasheet", +"CAD Model":"CAD Model", +"CAD Models":"CAD Models", +"Cancel":"Cancel", +"Categories":"Categories", +"Categories / Part Details":"Categories / Part Details", +"Category":"Category", +"Category Name":"Category Name", +"Category Scope":"Category Scope", +"Change Image":"Change Image", +"Chart":"Chart", +"Choose preset…":"Choose preset…", +"Choose Projects to create a report for":"Choose Projects to create a report for", +"Close":"Close", +"Code":"Code", +"Collapse All":"Collapse All", +"Collapse all Groups":"Collapse all Groups", +"Comment":"Comment", +"Compliance Documents":"Compliance Documents", +"Condition":"Condition", +"Configuration":"Configuration", +"Configure":"Configure", +"Configure Columns":"Configure Columns", +"Confirm Category Delete":"Confirm Category Delete", +"Confirm in-line stock level changes from the parts grid":"Confirm in-line stock level changes from the parts grid", +"Confirm preset deletion":"Confirm preset deletion", +"Connect":"Connect", +"Connected":"Connected", +"Contained Parts":"Contained Parts", +"Copy contents from:":"Copy contents from:", +"Count":"Count", +"Counts per Unit":"Counts per Unit", +"Create blank item after save":"Create blank item after save", +"Create blank preset":"Create blank preset", +"Create Copy after save":"Create Copy after save", +"Create Date":"Create Date", +"Create date":"Create date", +"Create new entity":"Create new entity", +"Create new item":"Create new item", +"Create new Part":"Create new Part", +"Create Report":"Create Report", +"Create Storage Locations":"Create Storage Locations", +"Created":"Created", +"Creating Distributor…":"Creating Distributor…", +"Creating Manufacturer…":"Creating Manufacturer…", +"Creating Unit…":"Creating Unit…", +"Critical Error":"Critical Error", +"CSS Class":"CSS Class", +"CSV":"CSV", +"Currency":"Currency", +"Currency Renderer":"Currency Renderer", +"Currency Symbol":"Currency Symbol", +"Currency Symbol after value":"Currency Symbol after value", +"Current Password":"Current Password", +"Current Statistics":"Current Statistics", +"Custom Export…":"Custom Export…", +"Customize…":"Customize…", +"Datasheet":"Datasheet", +"Datasheets":"Datasheets", +"Date":"Date", +"Decimal precision":"Decimal precision", +"Default":"Default", +"Delete":"Delete", +"Delete":"Delete", +"Delete Action":"Delete Action", +"Delete Batch Job":"Delete Batch Job", +"Delete Category":"Delete Category", +"Delete Distributor":"Delete Distributor", +"Delete field":"Delete field", +"Delete Footprint":"Delete Footprint", +"Delete Item":"Delete Item", +"Delete Logo":"Delete Logo", +"Delete Manufacturer":"Delete Manufacturer", +"Delete Part":"Delete Part", +"Delete Part Measurement Unit":"Delete Part Measurement Unit", +"Delete Project":"Delete Project", +"Delete Query Field":"Delete Query Field", +"Delete Report":"Delete Report", +"Delete selected preset":"Delete selected preset", +"Delete Storage Location":"Delete Storage Location", +"Delete Unit":"Delete Unit", +"Delete Update Field":"Delete Update Field", +"Delete User":"Delete User", +"Description":"Description", +"Detail":"Detail", +"Details":"Details", +"Details…":"Details…", +"Developers":"Developers", +"Different Parts":"Different Parts", +"Disconnect":"Disconnect", +"Disconnected":"Disconnected", +"Display":"Display", +"Display Field":"Display Field", +"Display File":"Display File", +"Display tips on login":"Display tips on login", +"Displaying {0} image(s) from {1} part(s)":"Displaying {0} image(s) from {1} part(s)", +"Distributor":"Distributor", +"Distributor is used for price calculations":"Distributor is used for price calculations", +"Distributor Order Number":"Distributor Order Number", +"Distributors":"Distributors", +"Distributors":"Distributors", +"Do you really want to remove the parts in the project report from the stock?":"Do you really want to remove the parts in the project report from the stock?", +"Do you really wish to delete the category %s?":"Do you really wish to delete the category %s?", +"Do you really wish to delete the item %s?":"Do you really wish to delete the item %s?", +"Do you really wish to delete the part measurement unit'%s'?":"Do you really wish to delete the part measurement unit'%s'?", +"Do you really wish to delete the unit'%s'?":"Do you really wish to delete the unit'%s'?", +"Do you really wish to delete the user '%s'?":"Do you really wish to delete the user '%s'?", +"Don't ask again":"Don't ask again", +"Don't import this sub-entity":"Don't import this sub-entity", +"Don't set":"Don't set", +"Don't update data if an item exists":"Don't update data if an item exists", +"Duplicate":"Duplicate", +"Duplicate basic data only":"Duplicate basic data only", +"Duplicate with all data":"Duplicate with all data", +"Dynamic":"Dynamic", +"E-Mail":"E-Mail", +"Edit":"Edit", +"Edit Category":"Edit Category", +"Edit Meta-Part":"Edit Meta-Part", +"Edit Parameter":"Edit Parameter", +"Edit Part":"Edit Part", +"Email":"Email", +"End":"End", +"Enter Search Terms":"Enter Search Terms", +"Enter the value":"Enter the value", +"Entity":"Entity", +"Equals":"Equals", +"Error":"Error", +"Errors":"Errors", +"Errors occured":"Errors occured", +"Excel 2007 and later":"Excel 2007 and later", +"Execute Batch Job":"Execute Batch Job", +"Execute import":"Execute import", +"Expand All":"Expand All", +"Expand all Groups":"Expand all Groups", +"Export":"Export", +"Export Grid":"Export Grid", +"Fax":"Fax", +"Field":"Field", +"Field name which denotes the quantity":"Field name which denotes the quantity", +"File":"File", +"File Upload":"File Upload", +"Filename":"Filename", +"Filter":"Filter", +"Filter by Part Parameter":"Filter by Part Parameter", +"Fixed":"Fixed", +"Footprint":"Footprint", +"Footprints":"Footprints", +"Formatting":"Formatting", +"From":"From", +"Full Report":"Full Report", +"Fulltext Search":"Fulltext Search", +"General Info":"General Info", +"Greater than":"Greater than", +"Greater than or equals":"Greater than or equals", +"Has attachments":"Has attachments", +"Has attachments?":"Has attachments?", +"Help":"Help", +"Hidden":"Hidden", +"Hover Title":"Hover Title", +"Icon Renderer":"Icon Renderer", +"ID Renderer":"ID Renderer", +"Ignore":"Ignore", +"Ignore this entry for price calculations":"Ignore this entry for price calculations", +"Image":"Image", +"Image Upload":"Image Upload", +"Images":"Images", +"Import":"Import", +"Import Field":"Import Field", +"Import Images":"Import Images", +"Import Results":"Import Results", +"Index":"Index", +"Initial Stock Level":"Initial Stock Level", +"Insert special character":"Insert special character", +"Internal ID":"Internal ID", +"Internal Part Number":"Internal Part Number", +"Internet Explorer does not support HTML5 webcams":"Internet Explorer does not support HTML5 webcams", +"Invalid quantity":"Invalid quantity", +"Invert":"Invert", +"Item Price":"Item Price", +"Key":"Key", +"Legacy User":"Legacy User", +"Length":"Length", +"Less than":"Less than", +"Less than or equals":"Less than or equals", +"Load Report":"Load Report", +"Loading…":"Loading…", +"Logged in as":"Logged in as", +"Logos":"Logos", +"Lot Number":"Lot Number", +"Manufacturer":"Manufacturer", +"Manufacturer Logos":"Manufacturer Logos", +"Manufacturer Name":"Manufacturer Name", +"Manufacturer Part Number":"Manufacturer Part Number", +"Manufacturers":"Manufacturers", +"Manufacturers":"Manufacturers", +"Mapping":"Mapping", +"Mark all tips unread":"Mark all tips unread", +"Mark Part Measurement Unit as Default":"Mark Part Measurement Unit as Default", +"Mark selected preset as default":"Mark selected preset as default", +"Match field":"Match field", +"Match import data with existing data using:":"Match import data with existing data using:", +"Matches a list":"Matches a list", +"Matches a subtext with wildcards (%)":"Matches a subtext with wildcards (%)", +"Max Value":"Max Value", +"Max.":"Max.", +"Maximum upload size: %s":"Maximum upload size: %s", +"Measurement Unit":"Measurement Unit", +"Measurement Unit Name":"Measurement Unit Name", +"Message":"Message", +"Message Log":"Message Log", +"Message of the day":"Message of the day", +"Meta Part":"Meta Part", +"Min Value":"Min Value", +"Min.":"Min.", +"Min. Stock":"Min. Stock", +"Minimum Numbers":"Minimum Numbers", +"Minimum Stock":"Minimum Stock", +"Minimum Stock Level":"Minimum Stock Level", +"Modifier":"Modifier", +"More Information":"More Information", +"Move down":"Move down", +"Move to bottom":"Move to bottom", +"Move to top":"Move to top", +"Move up":"Move up", +"MPN":"MPN", +"Multi-create storage locations":"Multi-create storage locations", +"Multi-Create Storage Locations":"Multi-Create Storage Locations", +"Multiple Parts found":"Multiple Parts found", +"Name":"Name", +"Name Prefix":"Name Prefix", +"Needs Review":"Needs Review", +"Needs Review?":"Needs Review?", +"New Batch Job":"New Batch Job", +"New Distributor":"New Distributor", +"New Footprint":"New Footprint", +"New Item":"New Item", +"New Manufacturer":"New Manufacturer", +"New Part Measurement Unit":"New Part Measurement Unit", +"New Password":"New Password", +"New Password (Confirm)":"New Password (Confirm)", +"New Project":"New Project", +"New Storage Location":"New Storage Location", +"New System Notice":"New System Notice", +"New Unit":"New Unit", +"New User":"New User", +"Next Meta-Part":"Next Meta-Part", +"Next Tip":"Next Tip", +"No action selected":"No action selected", +"No attachments":"No attachments", +"No Parameters":"No Parameters", +"No preset selected":"No preset selected", +"Nominal Value":"Nominal Value", +"None":"None", +"none":"none", +"Not equals":"Not equals", +"Not logged in":"Not logged in", +"Numeric":"Numeric", +"Object Field Renderer":"Object Field Renderer", +"Octopart":"Octopart", +"Octopart Error":"Octopart Error", +"Octopart is not configured":"Octopart is not configured", +"Octopart Search":"Octopart Search", +"Octopart…":"Octopart…", +"Offers":"Offers", +"OK":"OK", +"Operator":"Operator", +"Order Amount":"Order Amount", +"Order Number":"Order Number", +"Overage":"Overage", +"Overage Type":"Overage Type", +"Package Price":"Package Price", +"Packaging Unit":"Packaging Unit", +"Parameter":"Parameter", +"Parameter Criterias":"Parameter Criterias", +"Parameter Name":"Parameter Name", +"Parameters":"Parameters", +"Part":"Part", +"Part":"Part", +"Part Description":"Part Description", +"Part Details":"Part Details", +"Part Distributor":"Part Distributor", +"Part Filter":"Part Filter", +"Part Manager":"Part Manager", +"Part Manager Layout":"Part Manager Layout", +"Part Manufacturer":"Part Manufacturer", +"Part Measurement Unit":"Part Measurement Unit", +"Part Measurement Units":"Part Measurement Units", +"Part Name":"Part Name", +"Part Number":"Part Number", +"Part Parameter Name":"Part Parameter Name", +"Part Parameter Renderer":"Part Parameter Renderer", +"Part Parameters":"Part Parameters", +"Part(s)":"Part(s)", +"PartKeepr: Login":"PartKeepr: Login", +"Parts":"Parts", +"Parts List":"Parts List", +"Parts with price":"Parts with price", +"Parts without price":"Parts without price", +"Password":"Password", +"Password":"Password", +"Password successfully changed":"Password successfully changed", +"Passwords don't match":"Passwords don't match", +"Path":"Path", +"Patreon Status":"Patreon Status", +"Per Item":"Per Item", +"Percent":"Percent", +"Phone":"Phone", +"Please enter the project report name:":"Please enter the project report name:", +"Power":"Power", +"Prefix":"Prefix", +"Prefix with zeroes":"Prefix with zeroes", +"Preview":"Preview", +"Previous Meta-Part":"Previous Meta-Part", +"Previous Project Reports":"Previous Project Reports", +"Previous Tip":"Previous Tip", +"Price":"Price", +"Price":"Price", +"Price per item":"Price per item", +"Price per Item":"Price per Item", +"Pricing":"Pricing", +"Processing distributors…":"Processing distributors…", +"Production Remarks":"Production Remarks", +"Project":"Project", +"Project Description":"Project Description", +"Project Name":"Project Name", +"Project Parts":"Project Parts", +"Project Report":"Project Report", +"Project Report MetaPart Renderer":"Project Report MetaPart Renderer", +"Project Report Name":"Project Report Name", +"Project Report Quantity Renderer":"Project Report Quantity Renderer", +"Project Report Remark Renderer":"Project Report Remark Renderer", +"Project Report Stock Availability Renderer":"Project Report Stock Availability Renderer", +"Project Reports":"Project Reports", +"Project Run":"Project Run", +"Project Runs":"Project Runs", +"Projects":"Projects", +"Projects":"Projects", +"Property":"Property", +"Provider":"Provider", +"Qty":"Qty", +"Quantity":"Quantity", +"Query Fields":"Query Fields", +"Ratio":"Ratio", +"Ready.":"Ready.", +"Reference Design":"Reference Design", +"Reference Designs":"Reference Designs", +"Refresh":"Refresh", +"Reload":"Reload", +"Remarks":"Remarks", +"Remove":"Remove", +"Remove filter":"Remove filter", +"Remove Part(s)":"Remove Part(s)", +"Remove parts from stock":"Remove parts from stock", +"Remove Stock":"Remove Stock", +"Removed stock and created a new project run.":"Removed stock and created a new project run.", +"Render the icon if the column is zero":"Render the icon if the column is zero", +"Renderer":"Renderer", +"Renderer Configuration":"Renderer Configuration", +"Renderers":"Renderers", +"Renders a field value from an object":"Renders a field value from an object", +"Renders a specific icon if the part is a meta part":"Renders a specific icon if the part is a meta part", +"Renders a specific part parameter":"Renders a specific part parameter", +"Renders a value with the system defined currency":"Renders a value with the system defined currency", +"Renders an attachment icon if one or more attachments exist":"Renders an attachment icon if one or more attachments exist", +"Renders an icon":"Renders an icon", +"Renders an ID in both base36 as well as integer format":"Renders an ID in both base36 as well as integer format", +"Renders the amount of required metadata quantities":"Renders the amount of required metadata quantities", +"Renders the available stock level which includes the sum of all meta parts":"Renders the available stock level which includes the sum of all meta parts", +"Renders the remarks field":"Renders the remarks field", +"Renders the stock level including the part unit":"Renders the stock level including the part unit", +"Request":"Request", +"Required":"Required", +"Required Fields":"Required Fields", +"Reset":"Reset", +"Reset Filter":"Reset Filter", +"Response":"Response", +"Response Status Code":"Response Status Code", +"Restore Defaults":"Restore Defaults", +"Results":"Results", +"Reveal Category for selected part":"Reveal Category for selected part", +"Run Date/Time":"Run Date/Time", +"Sample":"Sample", +"Save":"Save", +"Save Batch Job":"Save Batch Job", +"Save Distributor":"Save Distributor", +"Save Footprint":"Save Footprint", +"Save Manufacturer":"Save Manufacturer", +"Save Part Measurement Unit":"Save Part Measurement Unit", +"Save Preset":"Save Preset", +"Save Project":"Save Project", +"Save Project Report":"Save Project Report", +"Save Storage Location":"Save Storage Location", +"Save System Notice":"Save System Notice", +"Save Unit":"Save Unit", +"Save User":"Save User", +"Saving…":"Saving…", +"Search":"Search", +"Search beginning of string (string*)":"Search beginning of string (string*)", +"Search Fields":"Search Fields", +"Search middle of string (*string*)":"Search middle of string (*string*)", +"Search Mode":"Search Mode", +"Search Part":"Search Part", +"Search Part Configuration":"Search Part Configuration", +"Search string as-is":"Search string as-is", +"Searches for a part and then allows the user to increase/decrease the stock level":"Searches for a part and then allows the user to increase/decrease the stock level", +"Searches for a part in the parts list":"Searches for a part in the parts list", +"Searches for a part. If the part is not found, a create part window is opened":"Searches for a part. If the part is not found, a create part window is opened", +"Select a field":"Select a field", +"Select a file to upload or enter an URL to load the file from":"Select a file to upload or enter an URL to load the file from", +"Select all fields to be searched":"Select all fields to be searched", +"Select an action":"Select an action", +"Select an item to edit":"Select an item to edit", +"Select an operator":"Select an operator", +"Select CSV file for import…":"Select CSV file for import…", +"Select Entity":"Select Entity", +"Select entity":"Select entity", +"Select entity…":"Select entity…", +"Select field":"Select field", +"Select Field":"Select Field", +"Select File...":"Select File...", +"Select Image...":"Select Image...", +"Select match field":"Select match field", +"Select the field(s) to be searched":"Select the field(s) to be searched", +"Selected Category":"Selected Category", +"Separate search terms":"Separate search terms", +"Separate thousands":"Separate thousands", +"Server Configuration":"Server Configuration", +"Set Stock Level for Part(s)":"Set Stock Level for Part(s)", +"Set to fixed value":"Set to fixed value", +"Set to:":"Set to:", +"Set Value…":"Set Value…", +"Severity":"Severity", +"Short Name":"Short Name", +"Show category descriptions (requires reload)":"Show category descriptions (requires reload)", +"Show Parts that need to reviewed only":"Show Parts that need to reviewed only", +"Show Parts without Price only":"Show Parts without Price only", +"Show Parts without stock removals only":"Show Parts without stock removals only", +"Show read tips":"Show read tips", +"Show Tips on login":"Show Tips on login", +"Size":"Size", +"SKU":"SKU", +"SKU URL":"SKU URL", +"Source File":"Source File", +"Start":"Start", +"Statistics Chart":"Statistics Chart", +"Status":"Status", +"Stock":"Stock", +"Stock":"Stock", +"Stock History":"Stock History", +"Stock Level":"Stock Level", +"Stock Level < Minimum Stock Level":"Stock Level < Minimum Stock Level", +"Stock Level = 0":"Stock Level = 0", +"Stock Level > 0":"Stock Level > 0", +"Stock Level Renderer":"Stock Level Renderer", +"Stock Mode":"Stock Mode", +"Stock Removal Complete":"Stock Removal Complete", +"Stock Settings":"Stock Settings", +"Stock to use":"Stock to use", +"Stock User":"Stock User", +"Stop import":"Stop import", +"Storage Location":"Storage Location", +"Storage Locations":"Storage Locations", +"Sum":"Sum", +"Sum (Order)":"Sum (Order)", +"Summary":"Summary", +"Symbol":"Symbol", +"System":"System", +"System Error":"System Error", +"System Information":"System Information", +"System Notices":"System Notices", +"System Preferences":"System Preferences", +"System Preferences":"System Preferences", +"Take image":"Take image", +"Take picture and upload":"Take picture and upload", +"Take Webcam Photo":"Take Webcam Photo", +"Takeover all data":"Takeover all data", +"Text":"Text", +"The batch job has been executed successfully":"The batch job has been executed successfully", +"The entity is required, but it is not configured":"The entity is required, but it is not configured", +"The field is required, but it is not configured":"The field is required, but it is not configured", +"The field must be set to a value, but it is ignored":"The field must be set to a value, but it is ignored", +"The field to render from an object":"The field to render from an object", +"The first number is the ID in decimal, the second number is the ID in base36":"The first number is the ID in decimal, the second number is the ID in base36", +"The following cronjobs aren't running:":"The following cronjobs aren't running:", +"The icon CSS class to render":"The icon CSS class to render", +"The maximum upload size can be configured in your php.ini file. There are two separate options:
- post_max_size
- upload_max_filesize

You need to set both values high enough.":"The maximum upload size can be configured in your php.ini file. There are two separate options:
- post_max_size
- upload_max_filesize

You need to set both values high enough.", +"The number of attachments must be greater than {0}":"The number of attachments must be greater than {0}", +"The number of distributors must be greater than {0}":"The number of distributors must be greater than {0}", +"The number of manufacturers must be greater than {0}":"The number of manufacturers must be greater than {0}", +"The selected renderer cannot be configured":"The selected renderer cannot be configured", +"The server returned a response which we were not able to interpret.":"The server returned a response which we were not able to interpret.", +"The title to display when the mouse is hovered above the icon":"The title to display when the mouse is hovered above the icon", +"The username must be 3-50 characters in length and may only contain the following characters: a-z, A-Z, 0-9, an underscore (_), a backslash (\), a slash (/), a dot (.) or a dash (-)":"The username must be 3-50 characters in length and may only contain the following characters: a-z, A-Z, 0-9, an underscore (_), a backslash (\), a slash (/), a dot (.) or a dash (-)", +"Theme":"Theme", +"Theme Tester":"Theme Tester", +"This field is required":"This field is required", +"This is a protected user, which may not be changed":"This is a protected user, which may not be changed", +"Thumbnail View":"Thumbnail View", +"Timeout (ms)":"Timeout (ms)", +"Tip of the Day":"Tip of the Day", +"Tip of the Day":"Tip of the Day", +"Title":"Title", +"To":"To", +"Tooltip":"Tooltip", +"Total Part Value":"Total Part Value", +"Type":"Type", +"Unable to retrieve the statistic data":"Unable to retrieve the statistic data", +"Unacknowledged System Notices":"Unacknowledged System Notices", +"Unassigned Meta-Parts":"Unassigned Meta-Parts", +"Unit":"Unit", +"Unit Name":"Unit Name", +"Units":"Units", +"unknown":"unknown", +"Update data if an item exists":"Update data if an item exists", +"Update Fields":"Update Fields", +"Upload":"Upload", +"Upload Size Information":"Upload Size Information", +"Uploading CAD Model…":"Uploading CAD Model…", +"Uploading datasheet…":"Uploading datasheet…", +"Uploading Image…":"Uploading Image…", +"Uploading Reference Designs…":"Uploading Reference Designs…", +"Uploading...":"Uploading...", +"URL":"URL", +"Use":"Use", +"Use enter/return to indicate scan input end":"Use enter/return to indicate scan input end", +"Use entered text as-is":"Use entered text as-is", +"Use this distributor for price calculations in project reports":"Use this distributor for price calculations in project reports", +"used":"used", +"Used for price calculations":"Used for price calculations", +"Used in Projects":"Used in Projects", +"User":"User", +"User Interface":"User Interface", +"User Preferences":"User Preferences", +"Username":"Username", +"Username or password invalid.":"Username or password invalid.", +"Users":"Users", +"Value":"Value", +"Value Type":"Value Type", +"View":"View", +"View Part":"View Part", +"Webcam not supported":"Webcam not supported", +"Website":"Website", +"Width":"Width", +"You are authenticated via an external user provider, password changing is not available.":"You are authenticated via an external user provider, password changing is not available.", +"You have unassigned meta-parts. In order to remove parts from stock, you need to assign the meta-parts first.":"You have unassigned meta-parts. In order to remove parts from stock, you need to assign the meta-parts first.", +"You need to re-login with the new password. Click OK to re-login.":"You need to re-login with the new password. Click OK to re-login.", +"You need to select a base entity to perform the query against":"You need to select a base entity to perform the query against", +"You need to select a part":"You need to select a part", +"You wish to add %s %s of part %s. Is this correct?":"You wish to add %s %s of part %s. Is this correct?", +"You wish to remove %s %s of the part %s. Is this correct?":"You wish to remove %s %s of the part %s. Is this correct?", +"You wish to set the stock level to %s %s for part %s. Is this correct?":"You wish to set the stock level to %s %s for part %s. Is this correct?", +"Your database schema is not up-to-date! Please re-run setup immediately!":"Your database schema is not up-to-date! Please re-run setup immediately!" +}; From fa6e27691aef28b94ca11132ce0e041d14fcb5ce Mon Sep 17 00:00:00 2001 From: benfre Date: Sun, 27 Nov 2022 00:07:08 +0800 Subject: [PATCH 3/4] add translation JavaScript to twig --- src/PartKeepr/FrontendBundle/Resources/views/index.html.twig | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/PartKeepr/FrontendBundle/Resources/views/index.html.twig b/src/PartKeepr/FrontendBundle/Resources/views/index.html.twig index 193004895..c0b0ffc6c 100644 --- a/src/PartKeepr/FrontendBundle/Resources/views/index.html.twig +++ b/src/PartKeepr/FrontendBundle/Resources/views/index.html.twig @@ -33,6 +33,11 @@ {% endimage %} + {% javascripts output='js/compiled/translation.js' + '@PartKeeprFrontendBundle/Resources/public/js/Util/translation.js' %} + + {% endjavascripts %} + {% endjavascripts %} - +