From 22c1f1d0f3031aa8996d721bee1d3e0c64d1846f Mon Sep 17 00:00:00 2001 From: Anry Das Date: Wed, 26 Mar 2025 14:15:14 +0200 Subject: [PATCH 1/4] Added missed files --- NovaPoshta/.gitignore | 2 + .../src/main/resources/application.properties | 15 + .../main/resources/languages/lang.properties | 306 ++++++++++++++++++ .../resources/languages/lang_en.properties | 306 ++++++++++++++++++ .../resources/languages/lang_uk.properties | 306 ++++++++++++++++++ 5 files changed, 935 insertions(+) create mode 100644 NovaPoshta/src/main/resources/application.properties create mode 100644 NovaPoshta/src/main/resources/languages/lang.properties create mode 100644 NovaPoshta/src/main/resources/languages/lang_en.properties create mode 100644 NovaPoshta/src/main/resources/languages/lang_uk.properties diff --git a/NovaPoshta/.gitignore b/NovaPoshta/.gitignore index 24ff508..6238c69 100644 --- a/NovaPoshta/.gitignore +++ b/NovaPoshta/.gitignore @@ -35,6 +35,8 @@ build/ ### App ### *.properties +!application.properties +!lang*.properties mvnw mvnw.cmd *.zip diff --git a/NovaPoshta/src/main/resources/application.properties b/NovaPoshta/src/main/resources/application.properties new file mode 100644 index 0000000..9590219 --- /dev/null +++ b/NovaPoshta/src/main/resources/application.properties @@ -0,0 +1,15 @@ +spring.main.banner-mode=off +spring.application.name=Nova Poshta Tracker + +logging.level.das=off +logging.file.name=logs/NP.log +logging.logback.rollingpolicy.max-history=5 +logging.logback.rollingpolicy.max-file-size=10MB + +driverClassName=org.sqlite.JDBC +url=jdbc:sqlite:DB/np.db +spring.jpa.database-platform=org.hibernate.community.dialect.SQLiteDialect +spring.datasource.initSQL=PRAGMA foreign_keys = ON +#spring.datasource.username=your_username +#spring.datasource.password=your_password +app.transaction.timeout.seconds=10 diff --git a/NovaPoshta/src/main/resources/languages/lang.properties b/NovaPoshta/src/main/resources/languages/lang.properties new file mode 100644 index 0000000..25eefb1 --- /dev/null +++ b/NovaPoshta/src/main/resources/languages/lang.properties @@ -0,0 +1,306 @@ +# Default Language locale file +# Application +number.type.in=Inbound +number.type.out=Outbound +number.type.undef=Undefined +number.status.new=New +number.status.error=Error +number.status.processing=Delivering +number.status.waiting=Waiting +number.status.complete=Completed +# Number item +item.tooltip.type=Cargo type: %s +item.tooltip.status=Cargo status: %s +item.tooltip.added.date=Added date +item.tooltip.created.date=Created date +item.tooltip.updated.date=Last updated date +# Number info +info.tooltip.comment=User added comment +info.tooltip.descr=Cargo description +info.label.group=Group: +info.tooltip.group=Number's group +info.label.status=Status: +info.tooltip.status=Cargo status +info.label.type=Type: +info.tooltip.type=Cargo type +info.label.cost=Cost: +info.tooltip.cost=Cost of delivery, UAH +info.label.seats=Seats: +info.tooltip.seats=Seats amount +info.label.price=Price: +info.tooltip.price=Announced Price, UAH +info.label.weight=Weight: +info.tooltip.weight=Weight, kg +info.label.created=Created: +info.tooltip.created=Date created +info.label.scheduled=Scheduled: +info.tooltip.scheduled=Scheduled Delivery Date +info.label.updated=Updated: +info.tooltip.updated=Last updated date +info.label.recipient.name=For: +info.tooltip.recipient.name=Recipient Full Name +info.label.recipient.city=in: +info.tooltip.recipient.city=Recipient's city +info.label.recipient.warehouse=at: +info.tooltip.recipient.warehouse=Recipient's warehouse +info.label.sender.name=From: +info.tooltip.sender.name=Sender Full Name +info.label.sender.phone=(%s) +info.tooltip.sender.phone=Sender phone number +info.label.sender.city=in: +info.tooltip.sender.city=Sender's city +info.label.sender.warehouse=at: +info.tooltip.sender.warehouse=Sender's Warehouse +info.tooltip.barcode=Number's Barcode +info.button.tooltip.copy=Copy to clipboard +info.button.message.copy=Copied to clipboard +info.button.tooltip.open=Open in new window +info.label.detailed=Detailed Info: +info.field.detailed.name=Field Name +info.field.detailed.value=Field Value +info.field.menu.copy.name=Copy Field Name +info.field.menu.copy.value=Copy Field value +info.field.menu.copy.kv=Copy Key and Value as K=V +info.field.menu.copy.kv1=Copy Key and Value as K->V +info.field.menu.copy.all=Copy All Rows +# Fields +number.field.id=ID +number.field.number=Number +number.field.group=Group +number.field.appStatus=Number Status +number.field.numberType=Number Type +number.field.comment=User Comment +number.field.dateCreated=Date Created +number.field.weight=Weight +number.field.cost=Cost +number.field.seatsAmount=Seats Amount +number.field.description=Description +number.field.cargoType=Type +number.field.statusCode=Status Code +number.field.announcedPrice=Announced Price +number.field.scheduledDeliveryDate=Scheduled Delivery Date +number.field.recipientFullName=Recipient Full Name +number.field.cityRecipient=Recipient's City +number.field.warehouseRecipient=Recipient's Warehouse +number.field.warehouseRecipientNumber=Recipient Warehouse's Number +number.field.phoneRecipient=Recipient's Phone +number.field.recipientAddress=Recipient's Address +number.field.citySender=Sender's City +number.field.phoneSender=Sender's Phone +number.field.warehouseSender=Sender's Warehouse +number.field.senderAddress=Sender's Address +number.field.fullData=Response Full Data +number.field.created=Created Date +number.field.updated=Last Updated Date +number.field.groupName=Group name +number.field.descr=Describe* +number.field.autoUpdated=Auto Update +# Config window +config.title=Configuration: +config.label.url=API URL: +config.label.phone=Phone: +config.label.language=Language: +config.label.maxHistory=Search history records: +config.tooltip.maxHistory=Search history maximum records: from %d to %d\nZero value means 'Do not save search history' +config.label.maxLogRecords=LOG records: +config.label.autoUpdate=Enable Auto Update +config.alert.title=Error in config +config.alert.message.wrongApiUrl=Field must contain valid NP's API endpoint value +config.alert.message.wrongPhone=Field must contain valid phone number +# Detailed Info window +detail.title=Detailed info for %s +# Add Number window +add.title=Adding new number +add.label.number=Number: +add.label.type=Type: +add.label.phone=Phone: +add.label.update=Auto Update +add.label.another=Add another +add.label.comment=Comment: +add.label.group=Group: +add.edit.comment.prompt=Comment for new Cargo Number (could be empty) +add.alert.title.error=Error +add.alert.message.WrongNumber=Wrong number +add.alert.message.NumberAlreadyAdded=Number '%s' already added +add.alert.message.WrongPhone=Wrong phone +add.tooltip.AddPhone=Add this phone into DB +add.tooltip.EditPhones=Edit all phones +add.message.PhoneAdded=The phone '%s' have been added into DB +add.message.PhoneExists=The phone '%s' already exists in DB +# Edit Phones window +edit.phones.title=Edit all pones +edit.phones.dialog.title=Editing Phones +edit.phones.newPhone=New Phone number: +edit.phones.alert.title=Wrong phone number '%s' +edit.phones.alert.message=There was a wrong phone number entered.\nPlease correct and try again. +edit.phones.confirm.title=Confirm deletion +edit.phones.confirm.header=Confirm deletion of '%s' +edit.phones.confirm.message=Are you sure to remove the phone? +edit.phones.alert.phoneUsed.title=The '%s' phone is used in number(s) +edit.phones.alert.phoneUsed.message=Phone used in number(s). So it couldn't be deleted +# Edit Search Options window +edit.options.action.moveUp=Move Up +edit.options.action.moveDn=Move Down +edit.options.action.add=Add item +edit.options.action.edit=Edit item +edit.options.action.apply=Apply changes +edit.options.action.remove=Remove item +edit.options.title=Edit all pones +edit.options.confirm.title=Confirm deletion +edit.options.confirm.header=Confirm deletion of '%s' +edit.options.confirm.message=Are you sure to remove the Search Option? +edit.options.alert.title=Wrong parameter +edit.options.alert.message=The Search Options' name couldn't be empty.\nPlease correct and try again. +edit.options.toast.message.applied=Changes have been applied +edit.options.toast.message.noChanges=There were no changes +edit.options.toast.message.removed=The option '%s' have been removed +edit.options.name.newOption=New search options +edit.options.label.name=Name: +edit.options.label.text=Search text: +# Edit Groups window +edit.groups.title=Edit all groups +edit.groups.dialog.title=Editing Groups +edit.groups.newGroup=New Group name: +edit.groups.alert.title=Group '%s' already exists +edit.groups.alert.message=Group name you have been entered already exists.\nEnter new one please. +edit.groups.confirm.title=Confirm deletion +edit.groups.confirm.header=Confirm deletion of '%s' +edit.groups.confirm.message=Are you sure to remove the Group? +edit.groups.toast.message.removed=The Group '%s' have been removed +edit.groups.alert.notEmpty.title=Group '%s' is not empty +edit.groups.alert.notEmpty.message=The Group contains %d numbers.\nNot empty group couldn't be deleted. +# Search window +search.window.title=Search +search.fields.tooltip=Selected fields:\n%s +search.fields.tooltip.selectAll=Select all fields +search.fields.tooltip.SelectNone=Clear selected fields +search.label.what=Search for: +search.edit.what.prompt=Enter search text +search.label.searchOptions=Options: +search.button=Search +search.label.options=Search options +search.button.save=Save search options +search.button.restore=Restore search options +search.label.results=Search Results +search.button.plugins.tooltip=Send numbers list to Plugin +search.button.simpleSearch=Simple search +search.button.extSearch=in Extended search +search.button.searchArchive=in Archive +search.button.sendAllItems=Send all items +search.button.sendAllItems.tooltip=Send all items to plugin (if checked) or selected items only +search.alert.input.title=Search name +search.alert.input.header=Enter new search name: +search.alert.input.content=Name: +search.alert.error.header=Error saving options +search.alert.error.message.alreadyExists=Name '%s' already exists. Please enter new one. +search.alert.select.title=Select option +search.alert.select.header=Search option name selection +search.alert.select.content=Select name: +search.alert.info.results.header=Search Results +search.alert.info.results.content=There are no results was found for your request +search.log.numbersFound=For search query '%s' found %d number(s) +search.log.numbersNotFound=For search query '%s' doesn't found any number(s) +search.log.searchMethodChanged=Search results have been cleared due to search method was changed from 'Search in Archive' to 'Regular Search' +# search options pane +options.label.group=Group +options.label.groupName=Group Name +options.label.weight=Weight +options.label.cost=Cost +options.label.price=Announced Price +options.label.seats=Seats Amount +options.label.numberStatus=Number Status +options.label.numberType=Number Type +options.label.status=Status +options.label.createDate=Create date +options.label.scheduledDate=Scheduled delivery date +# Main Menu +menu.group.number=Numbers +menu.number.add=Add number +menu.number.update=Update number +menu.number.updateUncompleted=Update Uncompleted numbers +menu.number.moveToArchive=Move to archive +menu.number.addToCustom=Add to custom view +menu.number.restoreFromArchive=Restore from archive +menu.number.exit=Exit +menu.group.moveToGroup=Move to Group +menu.group.edit=Edit +menu.edit.newGroup=New Group +menu.edit.editGroups=Edit Groups +menu.edit.editPhones=Edit Phones +menu.edit.editSearchOptions=Edit Search Options +menu.edit.search=Search +menu.edit.config=Configuration +menu.group.view=View +menu.group.viewMode=View Mode +menu.group.filterMode=Filtering Mode +menu.view.detail=Detailed view +menu.view.showLog=Show Log +menu.group.plugins=Plugins +menu.plugins.loadPlugins=Load Plugins +menu.group.windows=Windows +menu.windows.customList=Custom numbers list +menu.windows.archivedList=Archived numbers +menu.windows.cascade=Show all as cascade +menu.windows.closeAll=Close all windows +menu.group.help=Help +menu.help.about=About +menu.log.copy=Copy LOG messages +menu.log.clear=Clear LOG messages +# Main window alerts +alert.firstLaunch.title=First launch +alert.firstLaunch.header=Welcome! There is a first launch of the Application. +alert.firstLaunch.message=Please fill all necessary configuration fields. +alert.NoNumber.title=No Uncompleted numbers +alert.NoNumber.message=There is no Uncompleted numbers in list +alert.log.NoNumber.message=Auto Update: There is no Uncompleted numbers in list +alert.CouldNotExit.title=Couldn't exit +alert.CouldNotExit.message=There is an opened windows potentially with unsaved data.\nClose it and try again +alert.archive.moveTo.header.numberExists=Error moving number to archive +alert.archive.moveTo.content.numberExists=The number '%s' already exists in archive.\nRemove it first and try again. +alert.archive.restore.header.numberExists=Error restoring number from archive +alert.archive.restore.content.numberExists=The number '%s' already exists in database.\nRestoring impossible +alert.archive.restore.content.numberNotFoundInArchive=The number '%s' doesn't exist in archive +alert.archive.title.confirmDelete=Confirm deletion +alert.archive.header.confirmDelete=Are you sure to permanently remove number '%s'?\nThis is an irreversible operation, it will be impossible to restore number. +alert.log.number.movedToArchive=The number '%s' moved to archive +alert.log.number.restoredFromArchive=The number '%s' restored from archive +alert.log.gettingResponse=Error getting response: +alert.message.gettingResponse=There was error occurred while getting data from server +# Main window view modes +label.vm.tooltip=View mode +vm.numbers=Numbers +vm.groups=Groups +vm.calendarUpdate=Calendar (Update) +vm.calendarCreate=Calendar (Create) +# Main window Filtering Mode +label.fm.filter.tooltip=View filter +fm.all=All +fm.uncompleted=Uncompleted +fm.inbound=Inbound +fm.outbound=Outbound +# Add Group window +group.add.title=Adding new group +group.add.label.name=Name: +group.alert.exists.title=Group already exists +group.alert.exists.message=Group '%s' already exists +group.alert.EmptyName.title=Empty group name +group.alert.EmptyName.message=Group name couldn't be empty +group.message.newGroup=Added new group '%s' +group.message.movedToGroup=Number '%s' moved to group '%s' +group.alert.cantMove.header=Can not move number +group.alert.cantMove.message=Can not move Number '%s'\nto Group it's already in +# List window commons +lw.menu.ctx.remove=Remove +lw.menu.ctx.clear=Clear +lw.alert.title=Deletion confirmation +# Custom Number List window +cnl.title=Custom Numbers List window +cnl.label=Numbers List: +cnl.alert.message=Are you sure to remove %d custom numbers from Custom List? +# Archived Number List window +anl.title=Archived Numbers List window +anl.label=Numbers List: +anl.alert.message=Are you sure to remove %d archived numbers? +anl.alert.content=This operation couldn't be reverted! +anl.log.numberRemoved=The number '%s' have been permanently removed +anl.log.numbersCleared=There was permanently removed all archived numbers \ No newline at end of file diff --git a/NovaPoshta/src/main/resources/languages/lang_en.properties b/NovaPoshta/src/main/resources/languages/lang_en.properties new file mode 100644 index 0000000..51d05d8 --- /dev/null +++ b/NovaPoshta/src/main/resources/languages/lang_en.properties @@ -0,0 +1,306 @@ +# English Language locale file +# Application +number.type.in=Inbound +number.type.out=Outbound +number.type.undef=Undefined +number.status.new=New +number.status.error=Error +number.status.processing=Delivering +number.status.waiting=Waiting +number.status.complete=Completed +# Number item +item.tooltip.type=Cargo type: %s +item.tooltip.status=Cargo status: %s +item.tooltip.added.date=Added date +item.tooltip.created.date=Created date +item.tooltip.updated.date=Last updated date +# Number info +info.tooltip.comment=User added comment +info.tooltip.descr=Cargo description +info.label.group=Group: +info.tooltip.group=Number's group +info.label.status=Status: +info.tooltip.status=Cargo status +info.label.type=Type: +info.tooltip.type=Cargo type +info.label.cost=Cost: +info.tooltip.cost=Cost of delivery, UAH +info.label.seats=Seats: +info.tooltip.seats=Seats amount +info.label.price=Price: +info.tooltip.price=Announced Price, UAH +info.label.weight=Weight: +info.tooltip.weight=Weight, kg +info.label.created=Created: +info.tooltip.created=Date created +info.label.scheduled=Scheduled: +info.tooltip.scheduled=Scheduled Delivery Date +info.label.updated=Updated: +info.tooltip.updated=Last updated date +info.label.recipient.name=For: +info.tooltip.recipient.name=Recipient Full Name +info.label.recipient.city=in: +info.tooltip.recipient.city=Recipient's city +info.label.recipient.warehouse=at: +info.tooltip.recipient.warehouse=Recipient's warehouse +info.label.sender.name=From: +info.tooltip.sender.name=Sender Full Name +info.label.sender.phone=(%s) +info.tooltip.sender.phone=Sender phone number +info.label.sender.city=in: +info.tooltip.sender.city=Sender's city +info.label.sender.warehouse=at: +info.tooltip.sender.warehouse=Sender's Warehouse +info.tooltip.barcode=Number's Barcode +info.button.tooltip.copy=Copy to clipboard +info.button.message.copy=Copied to clipboard +info.button.tooltip.open=Open in new window +info.label.detailed=Detailed Info: +info.field.detailed.name=Field Name +info.field.detailed.value=Field Value +info.field.menu.copy.name=Copy Field Name +info.field.menu.copy.value=Copy Field value +info.field.menu.copy.kv=Copy Key and Value as K=V +info.field.menu.copy.kv1=Copy Key and Value as K->V +info.field.menu.copy.all=Copy All Rows +# Fields +number.field.id=ID +number.field.number=Number +number.field.group=Group +number.field.appStatus=Number Status +number.field.numberType=Number Type +number.field.comment=User Comment +number.field.dateCreated=Date Created +number.field.weight=Weight +number.field.cost=Cost +number.field.seatsAmount=Seats Amount +number.field.description=Description +number.field.cargoType=Type +number.field.statusCode=Status Code +number.field.announcedPrice=Announced Price +number.field.scheduledDeliveryDate=Scheduled Delivery Date +number.field.recipientFullName=Recipient Full Name +number.field.cityRecipient=Recipient's City +number.field.warehouseRecipient=Recipient's Warehouse +number.field.warehouseRecipientNumber=Recipient Warehouse's Number +number.field.phoneRecipient=Recipient's Phone +number.field.recipientAddress=Recipient's Address +number.field.citySender=Sender's City +number.field.phoneSender=Sender's Phone +number.field.warehouseSender=Sender's Warehouse +number.field.senderAddress=Sender's Address +number.field.fullData=Response Full Data +number.field.created=Created Date +number.field.updated=Last Updated Date +number.field.groupName=Group name +number.field.descr=Describe* +number.field.autoUpdated=Auto Update +# Config window +config.title=Configuration: +config.label.url=API URL: +config.label.phone=Phone: +config.label.language=Language: +config.label.maxHistory=Search history records: +config.tooltip.maxHistory=Search history maximum records: from %d to %d\nZero value means 'Do not save search history' +config.label.maxLogRecords=LOG records: +config.label.autoUpdate=Enable Auto Update +config.alert.title=Error in config +config.alert.message.wrongApiUrl=Field must contain valid NP's API endpoint value +config.alert.message.wrongPhone=Field must contain valid phone number +# Detailed Info window +detail.title=Detailed info for %s +# Add Number window +add.title=Adding new number +add.label.number=Number: +add.label.type=Type: +add.label.phone=Phone: +add.label.update=Auto Update +add.label.another=Add another +add.label.comment=Comment: +add.label.group=Group: +add.edit.comment.prompt=Comment for new Cargo Number (could be empty) +add.alert.title.error=Error +add.alert.message.WrongNumber=Wrong number +add.alert.message.NumberAlreadyAdded=Number '%s' already added +add.alert.message.WrongPhone=Wrong phone +add.tooltip.AddPhone=Add this phone into DB +add.tooltip.EditPhones=Edit all phones +add.message.PhoneAdded=The phone '%s' have been added into DB +add.message.PhoneExists=The phone '%s' already exists in DB +# Edit Phones window +edit.phones.title=Edit all pones +edit.phones.dialog.title=Editing Phones +edit.phones.newPhone=New Phone number: +edit.phones.alert.title=Wrong phone number '%s' +edit.phones.alert.message=There was a wrong phone number entered.\nPlease correct and try again. +edit.phones.confirm.title=Confirm deletion +edit.phones.confirm.header=Confirm deletion of '%s' +edit.phones.confirm.message=Are you sure to remove the phone? +edit.phones.alert.phoneUsed.title=The '%s' phone is used in number(s) +edit.phones.alert.phoneUsed.message=Phone used in number(s). So it couldn't be deleted +# Edit Search Options window +edit.options.action.moveUp=Move Up +edit.options.action.moveDn=Move Down +edit.options.action.add=Add item +edit.options.action.edit=Edit item +edit.options.action.apply=Apply changes +edit.options.action.remove=Remove item +edit.options.title=Edit all pones +edit.options.confirm.title=Confirm deletion +edit.options.confirm.header=Confirm deletion of '%s' +edit.options.confirm.message=Are you sure to remove the Search Option? +edit.options.alert.title=Wrong parameter +edit.options.alert.message=The Search Options' name couldn't be empty.\nPlease correct and try again. +edit.options.toast.message.applied=Changes have been applied +edit.options.toast.message.noChanges=There were no changes +edit.options.toast.message.removed=The option '%s' have been removed +edit.options.name.newOption=New search options +edit.options.label.name=Name: +edit.options.label.text=Search text: +# Edit Groups window +edit.groups.title=Edit all groups +edit.groups.dialog.title=Editing Groups +edit.groups.newGroup=New Group name: +edit.groups.alert.title=Group '%s' already exists +edit.groups.alert.message=Group name you have been entered already exists.\nEnter new one please. +edit.groups.confirm.title=Confirm deletion +edit.groups.confirm.header=Confirm deletion of '%s' +edit.groups.confirm.message=Are you sure to remove the Group? +edit.groups.toast.message.removed=The Group '%s' have been removed +edit.groups.alert.notEmpty.title=Group '%s' is not empty +edit.groups.alert.notEmpty.message=The Group contains %d numbers.\nNot empty group couldn't be deleted. +# Search window +search.window.title=Search +search.fields.tooltip=Selected fields:\n%s +search.fields.tooltip.selectAll=Select all fields +search.fields.tooltip.SelectNone=Clear selected fields +search.label.what=Search for: +search.edit.what.prompt=Enter search text +search.label.searchOptions=Search in: +search.button=Search +search.label.options=Search options +search.button.save=Save search options +search.button.restore=Restore search options +search.label.results=Search Results +search.button.plugins.tooltip=Send numbers list to Plugin +search.button.simpleSearch=Simple search +search.button.extSearch=in Extended search +search.button.searchArchive=in Archive +search.button.sendAllItems=Send all items +search.button.sendAllItems.tooltip=Send all items to plugin (if checked) or selected items only +search.alert.input.title=Search name +search.alert.input.header=Enter new search name: +search.alert.input.content=Name: +search.alert.error.header=Error saving options +search.alert.error.message.alreadyExists=Name '%s' already exists. Please enter new one. +search.alert.select.title=Select option +search.alert.select.header=Search option name selection +search.alert.select.content=Select name: +search.alert.info.results.header=Search Results +search.alert.info.results.content=There are no results was found for your request +search.log.numbersFound=For search query '%s' found %d number(s) +search.log.numbersNotFound=For search query '%s' doesn't found any number(s) +search.log.searchMethodChanged=Search results have been cleared due to search method was changed from 'Search in Archive' to 'Regular Search' +# search options pane +options.label.group=Group +options.label.groupName=Group Name +options.label.weight=Weight +options.label.cost=Cost +options.label.price=Announced Price +options.label.seats=Seats Amount +options.label.numberStatus=Number Status +options.label.numberType=Number Type +options.label.status=Status +options.label.createDate=Create date +options.label.scheduledDate=Scheduled delivery date +# Main Menu +menu.group.number=Numbers +menu.number.add=Add number +menu.number.update=Update number +menu.number.updateUncompleted=Update Uncompleted numbers +menu.number.moveToArchive=Move to archive +menu.number.addToCustom=Add to custom view +menu.number.restoreFromArchive=Restore from archive +menu.number.exit=Exit +menu.group.moveToGroup=Move to Group +menu.group.edit=Edit +menu.edit.newGroup=New Group +menu.edit.editGroups=Edit Groups +menu.edit.editPhones=Edit Phones +menu.edit.editSearchOptions=Edit Search Options +menu.edit.search=Search +menu.edit.config=Configuration +menu.group.view=View +menu.group.viewMode=View Mode +menu.group.filterMode=Filtering Mode +menu.view.detail=Detailed view +menu.view.showLog=Show Log +menu.group.plugins=Plugins +menu.plugins.loadPlugins=Load Plugins +menu.group.windows=Windows +menu.windows.customList=Custom numbers list +menu.windows.archivedList=Archived numbers +menu.windows.cascade=Show all as cascade +menu.windows.closeAll=Close all windows +menu.group.help=Help +menu.help.about=About +menu.log.copy=Copy LOG messages +menu.log.clear=Clear LOG messages +# Main window alerts +alert.firstLaunch.title=First launch +alert.firstLaunch.header=Welcome! There is a first launch of the Application. +alert.firstLaunch.message=Please fill all necessary configuration fields. +alert.NoNumber.title=No Uncompleted numbers +alert.NoNumber.message=There is no Uncompleted numbers in list +alert.log.NoNumber.message=Auto Update: There is no Uncompleted numbers in list +alert.CouldNotExit.title=Couldn't exit +alert.CouldNotExit.message=There is an opened windows potentially with unsaved data.\nClose it and try again +alert.archive.moveTo.header.numberExists=Error moving number to archive +alert.archive.moveTo.content.numberExists=The number '%s' already exists in archive.\nRemove it first and try again. +alert.archive.restore.header.numberExists=Error restoring number from archive +alert.archive.restore.content.numberExists=The number '%s' already exists in database.\nRestoring impossible +alert.archive.restore.content.numberNotFoundInArchive=The number '%s' doesn't exists in archive +alert.archive.title.confirmDelete=Confirm deletion +alert.archive.header.confirmDelete=Are you sure to permanently remove number '%s'?\nThis is an irreversible operation, it will be impossible to restore number. +alert.log.number.movedToArchive=The number '%s' moved to archive +alert.log.number.restoredFromArchive=The number '%s' restored from archive +alert.log.gettingResponse=Error getting response: +alert.message.gettingResponse=There was error occurred while getting data from server +# Main window view modes +label.vm.tooltip=View mode +vm.numbers=Numbers +vm.groups=Groups +vm.calendarUpdate=Calendar (Update) +vm.calendarCreate=Calendar (Create) +# Main window Filtering Mode +label.fm.filter.tooltip=View filter +fm.all=All +fm.uncompleted=Uncompleted +fm.inbound=Inbound +fm.outbound=Outbound +# Add Group window +group.add.title=Adding new group +group.add.label.name=Name: +group.alert.exists.title=Group already exists +group.alert.exists.message=Group '%s' already exists +group.alert.EmptyName.title=Empty group name +group.alert.EmptyName.message=Group name couldn't be empty +group.message.newGroup=Added new group '%s' +group.message.movedToGroup=Number '%s' moved to group '%s' +group.alert.cantMove.header=Can not move number +group.alert.cantMove.message=Can not move Number '%s'\nto Group it's already in +# List window commons +lw.menu.ctx.remove=Remove +lw.menu.ctx.clear=Clear +lw.alert.title=Deletion confirmation +# Custom Number List window +cnl.title=Custom Numbers List window +cnl.label=Numbers List: +cnl.alert.message=Are you sure to remove %d custom numbers from Custom List? +# Archived Number List window +anl.title=Archived Numbers List window +anl.label=Numbers List: +anl.alert.message=Are you sure to remove %d archived numbers? +anl.alert.content=This operation couldn't be reverted! +anl.log.numberRemoved=The number '%s' have been permanently removed +anl.log.numbersCleared=There was permanently removed all archived numbers \ No newline at end of file diff --git a/NovaPoshta/src/main/resources/languages/lang_uk.properties b/NovaPoshta/src/main/resources/languages/lang_uk.properties new file mode 100644 index 0000000..bf764a6 --- /dev/null +++ b/NovaPoshta/src/main/resources/languages/lang_uk.properties @@ -0,0 +1,306 @@ +# Ukrainian Language locale file +# Application +number.type.in=Вхідний +number.type.out=Вихідний +number.type.undef=Не визначено +number.status.new=Новий +number.status.error=Помилка +number.status.processing=Доставляється +number.status.waiting=Очікує +number.status.complete=Завершено +# Number item +item.tooltip.type=Тип вантажу: %s +item.tooltip.status=Стан вантажу: %s +item.tooltip.added.date=Дата додавання у БД +item.tooltip.created.date=Дата створення у НП +item.tooltip.updated.date=Дата останнього оновлення +# Number info +info.tooltip.comment=Коментар до вантажу, доданий користувачем +info.tooltip.descr=Опис вантажу +info.label.group=Група: +info.tooltip.group=Група, до якої внесено номер +info.label.status=Стан: +info.tooltip.status=Стан вантажу +info.label.type=Тип: +info.tooltip.type=Тип вантажу +info.label.cost=Вартість: +info.tooltip.cost=Вартість доставки, грн +info.label.seats=Місця: +info.tooltip.seats=Кількість місць +info.label.price=Ціна: +info.tooltip.price=Оголошена ціна, грн +info.label.weight=Вага: +info.tooltip.weight=Вага вантажу, кг +info.label.created=Створено: +info.tooltip.created=Дата створення +info.label.scheduled=Заплановано: +info.tooltip.scheduled=Планова дата доставки +info.label.updated=Оновлено: +info.tooltip.updated=Дата останнього оновлення +info.label.recipient.name=Для: +info.tooltip.recipient.name=Повне ім'я отримувача +info.label.recipient.city=у: +info.tooltip.recipient.city=Місто отримувача +info.label.recipient.warehouse=до: +info.tooltip.recipient.warehouse=Склад отримувача +info.label.sender.name=Від: +info.tooltip.sender.name=Повне ім'я відправника +info.label.sender.phone=(%s) +info.tooltip.sender.phone=Номер телефону відправника +info.label.sender.city=у: +info.tooltip.sender.city=Місто відправника +info.label.sender.warehouse=з: +info.tooltip.sender.warehouse=Склад відправника +info.tooltip.barcode=Штрих-код номера +info.button.tooltip.copy=Скопіювати текст +info.button.message.copy=Скопійовано +info.button.tooltip.open=Відкрити у новому вікні +info.label.detailed=Детальна інформація: +info.field.detailed.name=Поле +info.field.detailed.value=Значення +info.field.menu.copy.name=Копіювати ім'я поля +info.field.menu.copy.value=Копіювати значення поля +info.field.menu.copy.kv=Копіювати поле як ім'я=значення +info.field.menu.copy.kv1=Копіювати поле як ім'я->значення +info.field.menu.copy.all=Копіювати все +# Fields +number.field.id=ID +number.field.number=Номер +number.field.group=Група +number.field.appStatus=Статус номеру +number.field.numberType=Тип номеру +number.field.comment=Коментар користувача +number.field.dateCreated=Дата створення +number.field.weight=Вага +number.field.cost=Вартість +number.field.seatsAmount=Кількість місць +number.field.description=Опис +number.field.cargoType=Тип +number.field.statusCode=Код стану +number.field.announcedPrice=Оголошена вартість +number.field.scheduledDeliveryDate=Запланована дата доставки +number.field.recipientFullName=Повне ім'я Отримувача +number.field.cityRecipient=Місто Отримувача +number.field.warehouseRecipient=Відділення Отримувача +number.field.warehouseRecipientNumber=Номер відділення Отримувача +number.field.phoneRecipient=Номер телефону Отримувача +number.field.recipientAddress=Адреса Отримувача +number.field.citySender=Місто Відправника +number.field.phoneSender=Номер телефону Відправника +number.field.warehouseSender=Відділення Відправника +number.field.senderAddress=Адреса Відправника +number.field.fullData=Повні дані з сервера +number.field.created=Створено +number.field.updated=Оновлено +number.field.groupName=Ім'я групи +number.field.descr=Опис* +number.field.autoUpdated=Автоматичне оновлення +# Config window +config.title=Конфігурація: +config.label.url=API URL: +config.label.phone=Телефон: +config.label.language=Мова: +config.label.maxHistory=Записів у історії пошуку: +config.tooltip.maxHistory=Кількість записів у історії пошуку: від %d до %d\nНуль означає "Не зберігати історію" +config.label.maxLogRecords=Записів у журналі: +config.label.autoUpdate=Увімкнути автоматичне оновлення +config.alert.title=Error in config +config.alert.message.wrongApiUrl=У поле має бути правильний URL API НП +config.alert.message.wrongPhone=У поле має бути правильний номер телефону +# Detailed Info window +detail.title=Детально про номер %s +# Add Number window +add.title=Додавання нового номеру +add.label.number=Номер: +add.label.type=Тип: +add.label.phone=Телефон: +add.label.update=Автоматичне оновлення +add.label.another=Додати інший +add.label.comment=Коментар: +add.label.group=Група: +add.edit.comment.prompt=Коментар для нового номера ТТН (може бути порожнім) +add.alert.title.error=Помилка +add.alert.message.WrongNumber=Невірно введений номер +add.alert.message.NumberAlreadyAdded=Номер '%s' вже додано +add.alert.message.WrongPhone=Неправильний номер телефону +add.tooltip.AddPhone=Додати номер телефону до БД +add.tooltip.EditPhones=Редагувати всі номери телефонів +add.message.PhoneAdded=Телефон '%s' було додано до БД +add.message.PhoneExists=Телефон '%s' вже додано до БД +# Edit Phones window +edit.phones.title=Редагувати номери телефонів +edit.phones.dialog.title=Зміна номеру телефону +edit.phones.newPhone=Новий номер: +edit.phones.alert.title=Неправильний номер телефону '%s' +edit.phones.alert.message=Введено неправильний номер телефону.\nВиправте та спробуйте ще раз. +edit.phones.confirm.title=Підтвердження видалення +edit.phones.confirm.header=Підтвердіть видалення номеру '%s' +edit.phones.confirm.message=Ви дійсно хочете видалити вказаний номер? +edit.phones.alert.phoneUsed.title=Номер телефону '%s' використовується в ТТН +edit.phones.alert.phoneUsed.message=Номер телефону використовується в ТТН. Т.ч. його не можна видалити +# Edit Search Options window +edit.options.action.moveUp=Вгору +edit.options.action.moveDn=Вниз +edit.options.action.add=Додати +edit.options.action.edit=Редагувати +edit.options.action.apply=Підтвердити зміні +edit.options.action.remove=Видалити +edit.options.title=Редагувати налаштування пошуку +edit.options.confirm.title=Підтвердження видалення +edit.options.confirm.header=Підтвердіть видалення налаштувань пошуку '%s' +edit.options.confirm.message=Ви дійсно хочете видалити вказані налаштуваня пошуку? +edit.options.alert.title=Невірний параметр +edit.options.alert.message=Ім'я параметрів пошуку не може бути порожнім.\nВиправте та спробуйте ще раз. +edit.options.toast.message.applied=Зміни застосовано +edit.options.toast.message.noChanges=Змін не було зроблено +edit.options.toast.message.removed=Налаштування '%s' було видалено +edit.options.name.newOption=Нові налаштування пошуку +edit.options.label.name=Назва: +edit.options.label.text=Текст для пошуку: +# Edit Groups window +edit.groups.title=Редагувати групи +edit.groups.dialog.title=Редагування груп +edit.groups.newGroup=Ім'я нової групи: +edit.groups.alert.title=Група '%s' вже існує +edit.groups.alert.message=Група з таким іменем вже є.\nВведіт, будь ласка, нове ім'я групи. +edit.groups.confirm.title=Підтвердження видалення +edit.groups.confirm.header=Підтвердіть видалення групи '%s' +edit.groups.confirm.message==Ви дійсно хочете видалити вказану групу? +edit.groups.toast.message.removed=Групу '%s' було видалено +edit.groups.alert.notEmpty.title=Група '%s' не порожня +edit.groups.alert.notEmpty.message=Група містить %d ТТН.\nНепорожню групу видалити неможна. +# Search window +search.window.title=Пошук +search.fields.tooltip=Обрані для пошуку поля:\n%s +search.fields.tooltip.selectAll=Обрати всі поля +search.fields.tooltip.SelectNone=Очистити обрані поля +search.label.what=Що шукати: +search.edit.what.prompt=Введіть текст для пошуку +search.label.searchOptions=Шукати у: +search.button=Шукати +search.button.options=Налаштування пошуку +search.button.save=Зберегти налаштування пошуку +search.button.restore=Відновити налаштування пошуку +search.label.results=Результати пошуку +search.button.plugins.tooltip=Надіслати список до плагіну +search.button.simpleSearch=Простий пошук +search.button.extSearch=Розширений пошук +search.button.searchArchive=в архіві +search.button.sendAllItems=Усі ТТН +search.button.sendAllItems.tooltip=Надіслати до плагіну усі ТТН (якщо обрано) чи лише вибрані ТТН +search.alert.input.title=Назва пошуку +search.alert.input.header=Введіть нову назву для пошуку: +search.alert.input.content=Назва: +search.alert.error.header=Помилка зберігання налаштувань +search.alert.error.message.alreadyExists=Назва '%s' вже збережено. Будь ласка введіть нове. +search.alert.select.title=Вибір налаштувань +search.alert.select.header=Вибір назви налаштувань пошуку +search.alert.select.content=Виберіть назву: +search.alert.info.results.header=Результати пошуку +search.alert.info.results.content=За вашим запитом не знайдено жодного результату +search.log.numbersFound=За запитом '%s' знайдено %d ТТН +search.log.numbersNotFound=За запитом '%s' не знайдено жодного ТТН +search.log.searchMethodChanged=Результати пошуку очищено т.я. метод пошуку змінено з 'Шукати в архіві' на 'Звичайний пошук' +# search options pane +options.label.group=Група +options.label.groupName=Назва групи +options.label.weight=Вага +options.label.cost=Вартість +options.label.price=Оголошена вартість +options.label.seats=Кількість місць +options.label.numberStatus=Стан накладної +options.label.numberType=Тип накладної +options.label.status=Статус +options.label.createDate=Дата створення +options.label.scheduledDate=Планова доставка +# Main Menu +menu.group.number=Номери +menu.number.add=Додати номер +menu.number.update=Оновити номер +menu.number.updateUncompleted=Оновити незавершені номери +menu.number.moveToArchive=Перемістити до архіву +menu.number.addToCustom=Додати до обраних +menu.number.restoreFromArchive=Відновити з архіву +menu.number.exit=Вихід +menu.group.moveToGroup=Перемістити до групи +menu.group.edit=Змінити +menu.edit.newGroup=Нова група +menu.edit.editGroups=Змінити групи +menu.edit.editPhones=Змінити телефони +menu.edit.editSearchOptions=Змінити опції пошуку +menu.edit.search=Пошук +menu.edit.config=Конфігурація +menu.group.view=Вигляд +menu.group.viewMode=Перегляд +menu.group.filterMode=Фільтр +menu.view.detail=Детально +menu.view.showLog=Показати журнал +menu.group.plugins=Плагіни +menu.plugins.loadPlugins=Завантажити плагіни +menu.group.windows=Вікна +menu.windows.customList=Обрані номери +menu.windows.archivedList=Архівні номери +menu.windows.cascade=Показати всі каскадом +menu.windows.closeAll=Закрити всі +menu.group.help=Допомога +menu.help.about=Про додаток +menu.log.copy=Копіювати +menu.log.clear=Очистити +# Main window alerts +alert.firstLaunch.title=Перший запуск +alert.firstLaunch.header=Ласкаво прошу! Це перший запуск додатка. +alert.firstLaunch.message=Будь ласка, заповніть усі необхідні поля конфігурації. +alert.NoNumber.title=Немає незавершених номерів +alert.NoNumber.message=Жодного незавершеного номера у списку +alert.log.NoNumber.message=Автоматичне оновлення: Жодного незавершеного номера у списку +alert.CouldNotExit.title=Вихід неможливий +alert.CouldNotExit.message=Є відкриті вікна потенційно з незбереженими даними.\nЗакрийте їх та спробуйте ще раз +alert.archive.moveTo.header.numberExists=Помилка переміщення ТТН до архіву +alert.archive.moveTo.content.numberExists=ТТН '%s' вже є в архіві.\nСпершу видаліть цей ТТН з архіву та спробуйте ще раз. +alert.archive.restore.header.numberExists=Помилка відновлення номеру з архіву +alert.archive.restore.content.numberExists=ТТН '%s' вже є в основній БД.\nВідновлення неможливе. +alert.archive.restore.content.numberNotFoundInArchive=ТТН '%s' не знайдено в архіві +alert.archive.title.confirmDelete=Підтвердження видалення +alert.archive.header.confirmDelete=Ви впевнені, що ТТН '%s' потрібно видалити?\nЦе незворотня операція, відновити ТТН буде неможливо. +alert.log.number.movedToArchive=ТТН '%s' переміщено до архіву +alert.log.number.restoredFromArchive=ТТН '%s' відновлено з архіву +alert.log.gettingResponse=Помилка отримання даних: +alert.message.gettingResponse=Виникла помилка отримання даних з серверу +# Main window view modes +label.vm.tooltip=Перегляд +vm.numbers=Номери +vm.groups=Групи +vm.calendarUpdate=Календар (Оновлено) +vm.calendarCreate=Календар (Створено) +# Main window Filtering Mode +label.fm.filter.tooltip=Фільтр +fm.all=Всі +fm.uncompleted=Незавершені +fm.inbound=Вхідні +fm.outbound=Вихідні +# Add Group window +group.add.title=Додати нову групу +group.add.label.name=Назва: +group.alert.exists.title=Групу вже додано +group.alert.exists.message=Група '%s' вже існує +group.alert.EmptyName.title=Порожнє ім'я групи +group.alert.EmptyName.message=Ім'я групи не може бути порожнім +group.message.newGroup=Додано нову групу '%s' +group.message.movedToGroup=ТТН '%s' переміщено до групи '%s' +group.alert.cantMove.header=Неможливо перемістити ТТН +group.alert.cantMove.message=Неможливо перемістити ТТН '%s'\nдо групи т.я. він вже у групі +# List window commons +lw.menu.ctx.remove=Видалити +lw.menu.ctx.clear=Очистити +lw.alert.title=Підтвердження видалення +# Custom Number List window +cnl.title=Вікно обраних ТТН +cnl.label=Список номерів: +cnl.alert.message=Ви впевнені, що потрібно видалити %d обраних номерів зі списку обраних? +# Archived Number List window +anl.title=Вікно архівних ТТН +anl.label=Список номерів: +anl.alert.message=Ви впевнеі, що потрібно видалити %d номерів з архіву? +anl.alert.content=Цю операцію неможливо буде відмінити! +anl.log.numberRemoved=ТТН '%s' було повністю видалено +anl.log.numbersCleared=Було повністю видалено всі архівні ТТН \ No newline at end of file From 9bdcd5f0354cc7b458aad9c5afcc657854d62aa2 Mon Sep 17 00:00:00 2001 From: Anry Das Date: Wed, 26 Mar 2025 15:00:27 +0200 Subject: [PATCH 2/4] Updated files --- NovaPoshta/.gitignore | 1 + NovaPoshta/run.sh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/NovaPoshta/.gitignore b/NovaPoshta/.gitignore index 6238c69..8513a80 100644 --- a/NovaPoshta/.gitignore +++ b/NovaPoshta/.gitignore @@ -37,6 +37,7 @@ build/ *.properties !application.properties !lang*.properties +.mvn mvnw mvnw.cmd *.zip diff --git a/NovaPoshta/run.sh b/NovaPoshta/run.sh index 4463eb5..1660df4 100644 --- a/NovaPoshta/run.sh +++ b/NovaPoshta/run.sh @@ -1,3 +1,3 @@ #!/bin/bash JFX_PATH=/full/path/to/jfx -${JAVA_HOME}/bin/java ${JFX_PATH}/lib --add-modules javafx.controls,javafx.fxm -jar NovaPoshta.jar & +${JAVA_HOME}/bin/java --module-path ${JFX_PATH}/lib --add-modules javafx.controls,javafx.fxm -jar NovaPoshta.jar & From 1fb15761f1045de003a2ae0984ea4a190b9060db Mon Sep 17 00:00:00 2001 From: Anry Das Date: Sat, 29 Mar 2025 08:29:38 +0200 Subject: [PATCH 3/4] Added missed files --- .../main/resources/images/buttons/edit_16.png | Bin 0 -> 527 bytes .../resources/images/buttons/plus-green-16.png | Bin 0 -> 767 bytes .../src/main/resources/images/np_app_icon.png | Bin 0 -> 4218 bytes .../main/resources/images/number/group_24.png | Bin 0 -> 485 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 NovaPoshta/src/main/resources/images/buttons/edit_16.png create mode 100644 NovaPoshta/src/main/resources/images/buttons/plus-green-16.png create mode 100644 NovaPoshta/src/main/resources/images/np_app_icon.png create mode 100644 NovaPoshta/src/main/resources/images/number/group_24.png diff --git a/NovaPoshta/src/main/resources/images/buttons/edit_16.png b/NovaPoshta/src/main/resources/images/buttons/edit_16.png new file mode 100644 index 0000000000000000000000000000000000000000..c3d8e278b3862f839096fb7744d646b5ad02c5dc GIT binary patch literal 527 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6XVU3I`u#fXMsm#F#`kN z5fEmas?8@26ucVX6XFV_&CSgtZ5?Y|d}8gK9UUE)`a~WNN(PeF78XD$2(Yy=-*s?* zb!pjpznBaMx3tWReMgTRI(cHp{(YG#o)>mFRu%glJ$t&Qv}~qVsF$_vwm<_X&zx~^jf0hy`LPWSDaqkLk;}JlHZ&A(*uJf{ zv0-MXU429GjfeNQ?AcY2nU){ux^RMBc4Sb0yl-!VZDgQtRzh@ReeJx(i+U$bT(fB- zP`jI(TTy9gX+?QSMR`zgaPorhIY5uOmjw9*Gw>h(YIpJf|F5Zn32B%9|NsBx3Xp(+ zIWWd@_W%D^{QvI)<0I&w|Ly92{{Oe`Oh!Th(8vZ)7srr_Il1RIay1(WG(7yRI7P|n z;6m1eOS}6OzZ|XQRG(gUKE$QO;6k^WnsYwKA9;4q2_`RcQgZhMIBeS>62jPVImLE* z)fVrZiQIWM4_;{VY&x8K>-GbtkeaQfiM$^eR_DGK%$gIqvB>H1`Yn?b&egxT$2srI hq1S)r*u6JC#lM?TE7w^!VhhkM44$rjF6*2UngI1J^?m>V literal 0 HcmV?d00001 diff --git a/NovaPoshta/src/main/resources/images/buttons/plus-green-16.png b/NovaPoshta/src/main/resources/images/buttons/plus-green-16.png new file mode 100644 index 0000000000000000000000000000000000000000..280cb161cacb568ca57e12d44d3a149a598c7d03 GIT binary patch literal 767 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 literal 0 HcmV?d00001 diff --git a/NovaPoshta/src/main/resources/images/number/group_24.png b/NovaPoshta/src/main/resources/images/number/group_24.png new file mode 100644 index 0000000000000000000000000000000000000000..1d48dab585ede959734ba0dbc08e068844545bf0 GIT binary patch literal 485 zcmV{ROZkM5~L~D<0w6-^oqEVcx zNBi3Y<0@BD{hz`XQ3EmrYvrl z{@elh*#-C62ClO^il9{9%oxtYB&DuFpsPhNaFyxO5cJmwLwbh=TC*N!q913W3S6+C zt3?P~vH@7O{@no-VyVkbpi=+<0KQ2?K~#90V`RVq7zs%*BB@~fi;!SpM92V{-{2D5 zC`K}VhD-4M1Ch*(jK4uN+dHs?FeBq@hy>Rw@vle{Oss-0@JR47zGo16D)W{>gz+7U z1RpCS1LJ+Ae+0w40qD~3)00000NkvXXu0mjfIn&1D literal 0 HcmV?d00001 From 76d70c17d1b1954a60b0c24e2749d58aac0347b5 Mon Sep 17 00:00:00 2001 From: Anry Das Date: Sat, 29 Mar 2025 08:34:48 +0200 Subject: [PATCH 4/4] Version --- NovaPoshta/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NovaPoshta/pom.xml b/NovaPoshta/pom.xml index 9d4a444..ffb216a 100644 --- a/NovaPoshta/pom.xml +++ b/NovaPoshta/pom.xml @@ -10,7 +10,7 @@ - 1.1 + 1.2 17 1.3.0 2.17.0