diff --git a/plugins/org.jkiss.dbeaver.core/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.core/META-INF/MANIFEST.MF
index a7d216473789597aa5b3cc37720b902f72bb20f7..78b6a29102101d308a72ffe869a6ad8ccb47cbf3 100644
--- a/plugins/org.jkiss.dbeaver.core/META-INF/MANIFEST.MF
+++ b/plugins/org.jkiss.dbeaver.core/META-INF/MANIFEST.MF
@@ -13,7 +13,6 @@ Export-Package: org.jkiss.dbeaver,
org.jkiss.dbeaver.registry,
org.jkiss.dbeaver.registry.datatype,
org.jkiss.dbeaver.registry.driver,
- org.jkiss.dbeaver.registry.formatter,
org.jkiss.dbeaver.registry.tools,
org.jkiss.dbeaver.registry.updater,
org.jkiss.dbeaver.runtime,
diff --git a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle.properties b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle.properties
index 86900639eab09e6f7e5a861c04686e49327e4a76..923654d276b9a89808539f295963abcf18c4ede1 100644
--- a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle.properties
+++ b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle.properties
@@ -2,16 +2,13 @@
Bundle-Vendor = JKISS
Bundle-Name = DBeaver Core Plug-in
-extension-point.org.jkiss.dbeaver.pluginService.name = Plugin service
extension-point.org.jkiss.dbeaver.mavenRepository.name = Maven repositories config
extension-point.org.jkiss.dbeaver.dataSourceProvider.name = DataSource provider
extension-point.org.jkiss.dbeaver.dataSourceView.name = DataSource views
extension-point.org.jkiss.dbeaver.databaseEditor.name = Custom Entity Editor
extension-point.org.jkiss.dbeaver.dataTypeProvider.name = DataType provider
extension-point.org.jkiss.dbeaver.dataManager.name = Data value managers
-extension-point.org.jkiss.dbeaver.dataFormatter.name = Data value formatters
extension-point.org.jkiss.dbeaver.objectManager.name = Database object managers
-extension-point.org.jkiss.dbeaver.aggregateFunction.name = Aggregate Functions
extension-point.org.jkiss.dbeaver.sqlCommand.name = SQL script commands
extension-point.org.jkiss.dbeaver.sqlFormatter.name = SQL formatters
extension-point.org.jkiss.dbeaver.resourceHandler.name = Resource Handlers
@@ -322,38 +319,6 @@ command.org.jkiss.dbeaver.core.process.stop.description=Terminates running proce
command.org.jkiss.dbeaver.ui.editors.text.content.format.name=Content Format
command.org.jkiss.dbeaver.ui.editors.text.content.format.description=Format text
-DateFormatter.date.label=Date
-DateFormatter.date.general.label=General
-DateFormatter.date.general.pattern.label=Pattern
-DateFormatter.date.general.pattern.description=Date pattern
-
-DateFormatter.time.label=Time
-DateFormatter.time.general.label=General
-DateFormatter.time.general.pattern.label=Pattern
-DateFormatter.time.general.pattern.description=Time pattern
-
-DateFormatter.timestamp.label=Timestamp
-DateFormatter.timestamp.general.label=General
-DateFormatter.timestamp.general.pattern.label=Pattern
-DateFormatter.timestamp.general.pattern.description=Timestamp pattern
-
-DateFormatter.number.label=Numbers
-DateFormatter.number.general.label=General
-DateFormatter.number.general.grouping.label=Use Grouping
-DateFormatter.number.general.grouping.description=Tells grouping is used in this format
-DateFormatter.number.general.maxIntDigits.label=Maximum integer digits
-DateFormatter.number.general.maxIntDigits.description=Maximum integer digits
-DateFormatter.number.general.minIntDigits.label=Minimum integer digits
-DateFormatter.number.general.minIntDigits.description=Minimum integer digits
-DateFormatter.number.general.maxFractDigits.label=Maximum fraction digits
-DateFormatter.number.general.maxFractDigits.description=Maximum fraction digits
-DateFormatter.number.general.minFractDigits.label=Minimum fraction digits
-DateFormatter.number.general.minFractDigits.description=Minimum fraction digits
-DateFormatter.number.general.useTypeScale.label=Use data type scale for fraction digits
-DateFormatter.number.general.useTypeScale.description=Use column/attribute data type scale as minimum fraction digits number
-DateFormatter.number.general.roundingMode.label=Rounding mode
-DateFormatter.number.general.roundingMode.description=Rounding mode
-
menu.navigate=Navigate
menu.search=Se&arch
menu.database=&Database
diff --git a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_de.properties b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_de.properties
index 15bd580e93a6c9639f5fb82da927641aed032109..15e08c6f66ae33654c79bac196429e14651b6fd8 100644
--- a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_de.properties
+++ b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_de.properties
@@ -3,35 +3,6 @@
# Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org)
# Copyright (C) 2016 Karl Griesser (fullref@gmail.com)
-DateFormatter.date.general.label = Allgemein
-DateFormatter.date.general.pattern.description = Datumsmuster
-DateFormatter.date.general.pattern.label = Muster
-DateFormatter.date.label = Datum
-DateFormatter.number.general.grouping.description = Gruppierung wird bei diesem Format verwendet
-DateFormatter.number.general.grouping.label = Gruppierung verwenden
-DateFormatter.number.general.label = Allgemein
-DateFormatter.number.general.maxFractDigits.description = Maximale Anzahl an Nachkommastellen
-DateFormatter.number.general.maxFractDigits.label = Maximale Anzahl an Nachkommastellen
-DateFormatter.number.general.maxIntDigits.description = Maximale Anzahl an Vorkommastellen
-DateFormatter.number.general.maxIntDigits.label = Maximale Anzahl an Vorkommastellen
-DateFormatter.number.general.minFractDigits.description = Minimale Anzahl an Nachkommastellen
-DateFormatter.number.general.minFractDigits.label = Minimale Anzahl an Nachkommastellen
-DateFormatter.number.general.minIntDigits.description = Minimale Anzahl an Vorkommastellen
-DateFormatter.number.general.minIntDigits.label = Minimale Anzahl an Vorkommastellen
-DateFormatter.number.general.roundingMode.description = Rundungsmodus
-DateFormatter.number.general.roundingMode.label = Rundungsmodus
-DateFormatter.number.general.useTypeScale.description = Verwendung der Spalten-/Attributdatentyp-Skala als minimale Bruchziffernanzahl
-DateFormatter.number.general.useTypeScale.label = Datentypskala f\u00FCr Bruchziffern verwenden
-DateFormatter.number.label = Zahlen
-DateFormatter.time.general.label = Allgemein
-DateFormatter.time.general.pattern.description = Zeitmuster
-DateFormatter.time.general.pattern.label = Muster
-DateFormatter.time.label = Zeit
-DateFormatter.timestamp.general.label = Allgemein
-DateFormatter.timestamp.general.pattern.description = Zeitstempelmuster
-DateFormatter.timestamp.general.pattern.label = Muster
-DateFormatter.timestamp.label = Zeitstempel
-
category.dbconnection.description = Datenbankverbindungsbefehle
category.dbconnection.name = Verbindung
category.dbnavigator.description = Datenbanknavigatorbefehle
diff --git a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_es.properties b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_es.properties
index 1b0db7c371e183cd7f54e6d21d9974a0c0c64b70..055596999e4c0227667327a24f2858ba18392fdc 100644
--- a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_es.properties
+++ b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_es.properties
@@ -100,32 +100,7 @@ command.org.jkiss.dbeaver.core.process.stop.name = Terminar proceso
command.org.jkiss.dbeaver.core.process.stop.description = Terminar proceso en ejecuci\u0443n
command.org.jkiss.dbeaver.ui.editors.text.content.format.name = Formatear contenidp
command.org.jkiss.dbeaver.ui.editors.text.content.format.description = Formatear texto
-DateFormatter.date.label = Fecha
-DateFormatter.date.general.label = General
-DateFormatter.date.general.pattern.label = Cadena de Formato
-DateFormatter.date.general.pattern.description = Cadena de formato de las fechas
-DateFormatter.time.label = Hora
-DateFormatter.time.general.label = General
-DateFormatter.time.general.pattern.label = Cadena de Formato
-DateFormatter.time.general.pattern.description = Cadena de formato de las horas
-DateFormatter.timestamp.label = Fecha/Hora
-DateFormatter.timestamp.general.label = General
-DateFormatter.timestamp.general.pattern.label = Cadena de formato de fecha/hora
-DateFormatter.timestamp.general.pattern.description = Cadena de formato de fecha/hora
-DateFormatter.number.label = N\u044Ameros
-DateFormatter.number.general.label = General
-DateFormatter.number.general.grouping.label = Usar agrupaci\u0443n
-DateFormatter.number.general.grouping.description = Indica qu\u0439 agrupaci\u0443n se usa en el formato
-DateFormatter.number.general.maxIntDigits.label = M\u0431ximas cifras enteras
-DateFormatter.number.general.maxIntDigits.description = M\u0431ximas cifras enteras
-DateFormatter.number.general.minIntDigits.label = M\u043Dnimas cifras enteras
-DateFormatter.number.general.minIntDigits.description = M\u043Dnimas cifras enteras
-DateFormatter.number.general.maxFractDigits.label = M\u0431ximas cifras decimales
-DateFormatter.number.general.maxFractDigits.description = M\u0431ximas cifras decimales
-DateFormatter.number.general.minFractDigits.label = M\u043Dximas cifras decimales
-DateFormatter.number.general.minFractDigits.description = M\u043Dximas cifras decimales
-DateFormatter.number.general.roundingMode.label = Modo de redondeo
-DateFormatter.number.general.roundingMode.description = Modo de redondeo
+
menu.database = Base de Datos
menu.database.tools = Herramientas
menu.sqleditor = Editor SQL
diff --git a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_fr.properties b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_fr.properties
index a266ed647587b7293113b5370a36198ea78d9322..069d3d4d9bbd8c3653083edfa1ac0bdb7dcc480b 100644
--- a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_fr.properties
+++ b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_fr.properties
@@ -6,14 +6,11 @@ Bundle-Name = Extension Noyau DBeaver
extension.org.jkiss.dbeaver.DBeaverNature.name = DBeaver Nature
-extension-point.org.jkiss.dbeaver.pluginService.name = Service d'extensions
extension-point.org.jkiss.dbeaver.mavenRepository.name = Config des d\u00E9p\u00F4ts Maven
extension-point.org.jkiss.dbeaver.dataSourceProvider.name = Fournisseur de Sources de donn\u00E9es
extension-point.org.jkiss.dbeaver.databaseEditor.name = Editeur d'entit\u00E9 personnalis\u00E9es
extension-point.org.jkiss.dbeaver.dataTypeProvider.name = Fournisseur de types de donn\u00E9es
extension-point.org.jkiss.dbeaver.dataManager.name = Gestionnaires de donn\u00E9es
-extension-point.org.jkiss.dbeaver.dataFormatter.name = Formateurs de donn\u00E9es
-extension-point.org.jkiss.dbeaver.aggregateFunction.name = Fonctions d'aggr\u00E9gation
extension-point.org.jkiss.dbeaver.sqlCommand.name = Commandes de scripts SQL
extension-point.org.jkiss.dbeaver.sqlFormatter.name = Formateurs SQL
extension-point.org.jkiss.dbeaver.resourceHandler.name = Handlers de ressources
@@ -33,35 +30,6 @@ view.shell.process.title = Processus
view.database.output.title=Sortie
view.sql.results.title=Donn\u00E9es
-DateFormatter.date.general.label = G\u00E9n\u00E9ral
-DateFormatter.date.general.pattern.description = Mod\u00E8le de date
-DateFormatter.date.general.pattern.label = Mod\u00E8le
-DateFormatter.date.label = Date
-DateFormatter.number.general.grouping.description = Indique un regroupement dans ce format
-DateFormatter.number.general.grouping.label = Regrouper
-DateFormatter.number.general.label = G\u00E9n\u00E9ral
-DateFormatter.number.general.maxFractDigits.description = Nombre maximal de chiffres apr\u00E8s la virgule
-DateFormatter.number.general.maxFractDigits.label = Nombre maximal de chiffres apr\u00E8s la virgule
-DateFormatter.number.general.maxIntDigits.description = Nombre maximal de chiffres entiers
-DateFormatter.number.general.maxIntDigits.label = Nombre maximal de chiffres entiers
-DateFormatter.number.general.minFractDigits.description = Nombre minimal de chiffres apr\u00E8s la virgule
-DateFormatter.number.general.minFractDigits.label = Nombre minimal de chiffres apr\u00E8s la virgule
-DateFormatter.number.general.minIntDigits.description = Nombre minimal de chiffres entiers
-DateFormatter.number.general.minIntDigits.label = Nombre minimal de chiffres entiers
-DateFormatter.number.general.useTypeScale.label = Utiliser l'\u00E9chelle du type de donne\u00E9s pour les chiffres \u00E0 virgules
-DateFormatter.number.general.useTypeScale.description = Utiliser la colonne/attribut d'\u00E9chelle du type de donne\u00E9s comme nombre minimal de chiffres apr\u00E8s la virgule
-DateFormatter.number.general.roundingMode.description = R\u00E8gle d'arrondissement
-DateFormatter.number.general.roundingMode.label = R\u00E8gle d'arrondissement
-DateFormatter.number.label = Nombre
-DateFormatter.time.general.label = G\u00E9n\u00E9ral
-DateFormatter.time.general.pattern.description = Mod\u00E8le de date/heure
-DateFormatter.time.general.pattern.label = Mod\u00E8le
-DateFormatter.time.label = Date/heure
-DateFormatter.timestamp.general.label = G\u00E9n\u00E9ral
-DateFormatter.timestamp.general.pattern.description = Mod\u00E8le d'horodatage
-DateFormatter.timestamp.general.pattern.label = Mod\u00E8le
-DateFormatter.timestamp.label = Horodatage
-
category.dbconnection.description = Connexion \u00E0 une base de donn\u00E9es
category.dbconnection.name = Connexion
category.dbnavigator.description = Navigateur de bases de donn\u00E9es
diff --git a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_it.properties b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_it.properties
index 93ba93683ba89b29c4bb7217453f311d55d425d6..aa68604b204f596a2397695e696e2fcd72450331 100644
--- a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_it.properties
+++ b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_it.properties
@@ -98,32 +98,7 @@ command.org.jkiss.dbeaver.core.process.stop.name = Termina processo
command.org.jkiss.dbeaver.core.process.stop.description = Termina processo in esecuzione
command.org.jkiss.dbeaver.ui.editors.text.content.format.name = Formatta contenuto
command.org.jkiss.dbeaver.ui.editors.text.content.format.description = Formatta testo
-DateFormatter.date.label = Data
-DateFormatter.date.general.label = Generale
-DateFormatter.date.general.pattern.label = Formato
-DateFormatter.date.general.pattern.description = Formato Data
-DateFormatter.time.label = Ora
-DateFormatter.time.general.label = Generale
-DateFormatter.time.general.pattern.label = Formato
-DateFormatter.time.general.pattern.description = Formato Ora
-DateFormatter.timestamp.label = Data/Oa
-DateFormatter.timestamp.general.label = Generale
-DateFormatter.timestamp.general.pattern.label = Formato
-DateFormatter.timestamp.general.pattern.description = Formato Data/Ora
-DateFormatter.number.label = Numeri
-DateFormatter.number.general.label = Generale
-DateFormatter.number.general.grouping.label = Usa il Raggruppamento
-DateFormatter.number.general.grouping.description = Segnala quale raggruppamento \u00E8 usato in questo formato
-DateFormatter.number.general.maxIntDigits.label = Massimo intero per le cifre
-DateFormatter.number.general.maxIntDigits.description = Massimo intero per le cifre
-DateFormatter.number.general.minIntDigits.label = Minimo intero per le cifre
-DateFormatter.number.general.minIntDigits.description = Minimo intero per le cifre
-DateFormatter.number.general.maxFractDigits.label = Massima frazione per le cifre
-DateFormatter.number.general.maxFractDigits.description = Massima frazione per le cifre
-DateFormatter.number.general.minFractDigits.label = Minima frazione per le cifre
-DateFormatter.number.general.minFractDigits.description = Minima frazione per le cifre
-DateFormatter.number.general.roundingMode.label = Modalit\u00E0 di arrotondamento
-DateFormatter.number.general.roundingMode.description = Modalit\u00E0 di arrotondamento
+
menu.database = Database
menu.database.tools = Strumenti
menu.sqleditor = Editor SQL
diff --git a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_ja.properties b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_ja.properties
index 9271b9ac70deaacd976af38fb2f4762d1775aa47..174528a7907fb0e058e58abfc9ef618a4ebdc5a9 100644
--- a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_ja.properties
+++ b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_ja.properties
@@ -1,13 +1,10 @@
Bundle-Name =DBeaver\u30B3\u30A2\u30D7\u30E9\u30B0\u30A4\u30F3
-extension-point.org.jkiss.dbeaver.pluginService.name =\u30D7\u30E9\u30B0\u30A4\u30F3\u30B5\u30FC\u30D3\u30B9
extension-point.org.jkiss.dbeaver.mavenRepository.name =Maven\u30EA\u30DD\u30B8\u30C8\u30EA\u8A2D\u5B9A
extension-point.org.jkiss.dbeaver.dataSourceProvider.name =\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u30D7\u30ED\u30D0\u30A4\u30C0
extension-point.org.jkiss.dbeaver.databaseEditor.name =\u30AB\u30B9\u30BF\u30E0\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u30A8\u30C7\u30A3\u30BF
extension-point.org.jkiss.dbeaver.dataTypeProvider.name =\u30C7\u30FC\u30BF\u578B\u30D7\u30ED\u30D0\u30A4\u30C0
extension-point.org.jkiss.dbeaver.dataManager.name =\u30C7\u30FC\u30BF\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC
-extension-point.org.jkiss.dbeaver.dataFormatter.name =\u30C7\u30FC\u30BF\u30D5\u30A9\u30FC\u30DE\u30C3\u30BF
-extension-point.org.jkiss.dbeaver.aggregateFunction.name =\u96C6\u8A08\u95A2\u6570
extension-point.org.jkiss.dbeaver.sqlCommand.name =SQL\u30B9\u30AF\u30EA\u30D7\u30C8\u30B3\u30DE\u30F3\u30C9
extension-point.org.jkiss.dbeaver.sqlFormatter.name =SQL\u30D5\u30A9\u30FC\u30DE\u30C3\u30BF
extension-point.org.jkiss.dbeaver.resourceHandler.name =\u30EA\u30BD\u30FC\u30B9\u30CF\u30F3\u30C9\u30E9
@@ -301,38 +298,6 @@ command.org.jkiss.dbeaver.core.process.stop.description=\u5B9F\u884C\u30D7\u30ED
command.org.jkiss.dbeaver.ui.editors.text.content.format.name=\u30B3\u30F3\u30C6\u30F3\u30C4\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8
command.org.jkiss.dbeaver.ui.editors.text.content.format.description=\u30C6\u30AD\u30B9\u30C8\u306E\u66F8\u5F0F\u8A2D\u5B9A
-DateFormatter.date.label=\u65E5\u4ED8
-DateFormatter.date.general.label=\u4E00\u822C
-DateFormatter.date.general.pattern.label=\u30D1\u30BF\u30FC\u30F3
-DateFormatter.date.general.pattern.description=\u65E5\u4ED8\u30D1\u30BF\u30FC\u30F3
-
-DateFormatter.time.label=\u6642\u9593
-DateFormatter.time.general.label=\u4E00\u822C
-DateFormatter.time.general.pattern.label=\u30D1\u30BF\u30FC\u30F3
-DateFormatter.time.general.pattern.description=\u6642\u9593\u30D1\u30BF\u30FC\u30F3
-
-DateFormatter.timestamp.label=\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7
-DateFormatter.timestamp.general.label=\u4E00\u822C
-DateFormatter.timestamp.general.pattern.label=\u30D1\u30BF\u30FC\u30F3
-DateFormatter.timestamp.general.pattern.description=\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u30D1\u30BF\u30FC\u30F3
-
-DateFormatter.number.label=\u6570\u5B57
-DateFormatter.number.general.label=\u4E00\u822C
-DateFormatter.number.general.grouping.label=\u30B0\u30EB\u30FC\u30D7\u5316\u306E\u4F7F\u7528
-DateFormatter.number.general.grouping.description=\u30B0\u30EB\u30FC\u30D7\u5316\u304C\u3053\u306E\u5F62\u5F0F\u3067\u4F7F\u7528\u3055\u308C\u308B\u3053\u3068\u3092\u4F1D\u3048\u308B
-DateFormatter.number.general.maxIntDigits.label=\u6700\u5927\u6574\u6570\u6841
-DateFormatter.number.general.maxIntDigits.description=\u6700\u5927\u6574\u6570\u6841
-DateFormatter.number.general.minIntDigits.label=\u6700\u5C0F\u6574\u6570\u6841
-DateFormatter.number.general.minIntDigits.description=\u6700\u5C0F\u6574\u6570\u6841
-DateFormatter.number.general.maxFractDigits.label=\u6700\u5927\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u6570
-DateFormatter.number.general.maxFractDigits.description=\u6700\u5927\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u6570
-DateFormatter.number.general.minFractDigits.label=\u6700\u5C0F\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u6570
-DateFormatter.number.general.minFractDigits.description=\u6700\u5C0F\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u6570
-DateFormatter.number.general.useTypeScale.label=\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u306B\u306F\u30C7\u30FC\u30BF\u578B\u5C3A\u5EA6\u3092\u4F7F\u7528\u3059\u308B
-DateFormatter.number.general.useTypeScale.description=\u5217/\u5C5E\u6027\u306E\u30C7\u30FC\u30BF\u578B\u306E\u30B9\u30B1\u30FC\u30EB\u3092\u6700\u5C0F\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u6570\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B
-DateFormatter.number.general.roundingMode.label=\u4E38\u3081\u30E2\u30FC\u30C9
-DateFormatter.number.general.roundingMode.description=\u4E38\u3081\u30E2\u30FC\u30C9
-
menu.database=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9
menu.database.tools=\u30C4\u30FC\u30EB
menu.database.sql.generate=SQL\u306E\u751F\u6210
diff --git a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_ru.properties b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_ru.properties
index 8a6b0457fb2cbd06b8d9e0ad49c9a0968fe22dfd..fe585e76c25ab5dcf830a830f7ef1b1fa9720b43 100644
--- a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_ru.properties
+++ b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_ru.properties
@@ -4,35 +4,6 @@
Bundle-Name = DBeaver \u041F\u043B\u0430\u0442\u0444\u043E\u0440\u043C\u0430
-Bundle-Vendor = JKISS
-
-DateFormatter.date.general.label = \u041E\u0441\u043D\u043E\u0432\u043D\u044B\u0435
-DateFormatter.date.general.pattern.description = \u0428\u0430\u0431\u043B\u043E\u043D \u0434\u0430\u0442\u044B
-DateFormatter.date.general.pattern.label = \u0428\u0430\u0431\u043B\u043E\u043D
-DateFormatter.date.label = \u0414\u0430\u0442\u0430
-DateFormatter.number.general.grouping.description = \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0443 \u0432 \u044D\u0442\u043E\u043C \u0444\u043E\u0440\u043C\u0430\u0442\u0435
-DateFormatter.number.general.grouping.label = \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0443
-DateFormatter.number.general.label = \u041E\u0441\u043D\u043E\u0432\u043D\u044B\u0435
-DateFormatter.number.general.maxFractDigits.description = Maximum fraction digits
-DateFormatter.number.general.maxFractDigits.label = Maximum fraction digits
-DateFormatter.number.general.maxIntDigits.description = Maximum integer digits
-DateFormatter.number.general.maxIntDigits.label = \u041C\u0430\u043A\u0441. \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0446\u0438\u0444\u0440 \u0432 \u0447\u0438\u0441\u043B\u0435
-DateFormatter.number.general.minFractDigits.description = Minimum fraction digits
-DateFormatter.number.general.minFractDigits.label = Minimum fraction digits
-DateFormatter.number.general.minIntDigits.description = Minimum integer digits
-DateFormatter.number.general.minIntDigits.label = Minimum integer digits
-DateFormatter.number.general.roundingMode.description = \u0420\u0435\u0436\u0438\u043C \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u044F
-DateFormatter.number.general.roundingMode.label = \u0420\u0435\u0436\u0438\u043C \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u044F
-DateFormatter.number.label = \u0427\u0438\u0441\u043B\u0430
-DateFormatter.time.general.label = \u041E\u0441\u043D\u043E\u0432\u043D\u044B\u0435
-DateFormatter.time.general.pattern.description = \u0428\u0430\u0431\u043B\u043E\u043D \u0432\u0440\u0435\u043C\u0435\u043D\u0438
-DateFormatter.time.general.pattern.label = \u0428\u0430\u0431\u043B\u043E\u043D
-DateFormatter.time.label = \u0412\u0440\u0435\u043C\u044F
-DateFormatter.timestamp.general.label = \u041E\u0441\u043D\u043E\u0432\u043D\u044B\u0435
-DateFormatter.timestamp.general.pattern.description = Timestamp pattern
-DateFormatter.timestamp.general.pattern.label = \u0428\u0430\u0431\u043B\u043E\u043D
-DateFormatter.timestamp.label = Timestamp
-
category.dbconnection.description = \u041A\u043E\u043C\u0430\u043D\u0434\u044B \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F \u0441 \u0411\u0414
category.dbconnection.name = \u0421\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435
category.dbnavigator.description = \u041A\u043E\u043C\u0430\u043D\u0434\u044B \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430 \u0411\u0414
diff --git a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_zh.properties b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_zh.properties
index 3b231526752aa2c4b82cd3475d02972c39432131..4dbd6cd4b43a2f6e01e33461481ef4eb03878784 100644
--- a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_zh.properties
+++ b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_zh.properties
@@ -5,37 +5,6 @@
Bundle-Name = DBeaver \u6838\u5FC3\u63D2\u4EF6
-Bundle-Vendor = JKISS
-
-DateFormatter.date.general.label = \u5E38\u89C4
-DateFormatter.date.general.pattern.description = \u65E5\u671F\u6A21\u5F0F
-DateFormatter.date.general.pattern.label = \u6A21\u5F0F
-DateFormatter.date.label = \u65E5\u671F
-DateFormatter.number.general.grouping.description = \u5728\u8BE5\u683C\u5F0F\u4E2D\u4F7F\u7528\u5206\u7EC4
-DateFormatter.number.general.grouping.label = \u5206\u7EC4
-DateFormatter.number.general.label = \u5E38\u89C4
-DateFormatter.number.general.maxFractDigits.description = \u6700\u591A\u5C0F\u6570\u4F4D\u6570
-DateFormatter.number.general.maxFractDigits.label = \u6700\u591A\u5C0F\u6570\u4F4D\u6570
-DateFormatter.number.general.maxIntDigits.description = \u6700\u5927\u6574\u6570\u4F4D\u6570
-DateFormatter.number.general.maxIntDigits.label = \u6700\u5927\u6574\u6570\u4F4D\u6570
-DateFormatter.number.general.minFractDigits.description = \u6700\u5C11\u5C0F\u6570\u4F4D\u6570
-DateFormatter.number.general.minFractDigits.label = \u6700\u5C11\u5C0F\u6570\u4F4D\u6570
-DateFormatter.number.general.minIntDigits.description = \u6700\u5C0F\u6574\u6570\u4F4D\u6570
-DateFormatter.number.general.minIntDigits.label = \u6700\u5C0F\u6574\u6570\u4F4D\u6570
-DateFormatter.number.general.roundingMode.description = \u53D6\u6574\u6A21\u5F0F
-DateFormatter.number.general.roundingMode.label = \u53D6\u6574\u6A21\u5F0F
-DateFormatter.number.general.useTypeScale.description = \u4F7F\u7528\u5217\u6216\u5C5E\u6027\u6570\u636E\u7C7B\u578B\u7684\u5C0F\u6570\u4F4D\u6570\u4F5C\u4E3A\u6700\u5C0F\u7684\u5C0F\u6570\u4F4D\u6570
-DateFormatter.number.general.useTypeScale.label = \u4F7F\u7528\u6570\u636E\u7C7B\u578B\u7684\u5C0F\u6570\u4F4D\u6570
-DateFormatter.number.label = \u6570\u5B57
-DateFormatter.time.general.label = \u5E38\u89C4
-DateFormatter.time.general.pattern.description = \u65F6\u95F4\u6A21\u5F0F
-DateFormatter.time.general.pattern.label = \u6A21\u5F0F
-DateFormatter.time.label = \u65F6\u95F4
-DateFormatter.timestamp.general.label = \u5E38\u89C4
-DateFormatter.timestamp.general.pattern.description = \u65F6\u95F4\u6233\u6A21\u5F0F
-DateFormatter.timestamp.general.pattern.label = \u6A21\u5F0F
-DateFormatter.timestamp.label = \u65F6\u95F4\u6233
-
category.dbconnection.description = \u6570\u636E\u5E93\u8FDE\u63A5\u547D\u4EE4
category.dbconnection.name = \u8FDE\u63A5
category.dbnavigator.description = \u6570\u636E\u5E93\u5BFC\u822A\u547D\u4EE4
@@ -385,8 +354,6 @@ editor.folder.name = \u6587\u4EF6\u5939\u7F16\u8F91\u5668
editor.lob.name = \u5927\u578B\u5BF9\u8C61\u7F16\u8F91\u5668
editor.sql.name = SQL \u7F16\u8F91\u5668
-extension-point.org.jkiss.dbeaver.aggregateFunction.name = \u805A\u96C6\u51FD\u6570
-extension-point.org.jkiss.dbeaver.dataFormatter.name = \u6570\u636E\u683C\u5F0F\u5668
extension-point.org.jkiss.dbeaver.dataManager.name = \u6570\u636E\u7BA1\u7406\u5668
extension-point.org.jkiss.dbeaver.dataSourceProvider.name = \u6570\u636E\u6E90\u63D0\u4F9B\u8005
extension-point.org.jkiss.dbeaver.dataSourceView.name = \u6570\u636E\u6E90\u67E5\u770B\u5668
@@ -395,7 +362,6 @@ extension-point.org.jkiss.dbeaver.databaseEditor.name = \u81EA\u5B9A\u4
extension-point.org.jkiss.dbeaver.language.name = \u8BED\u8A00
extension-point.org.jkiss.dbeaver.mavenRepository.name = Maven \u4ED3\u5E93\u914D\u7F6E
extension-point.org.jkiss.dbeaver.networkHandler.name = \u7F51\u7EDC\u5904\u7406\u5668
-extension-point.org.jkiss.dbeaver.pluginService.name = \u63D2\u4EF6\u670D\u52A1
extension-point.org.jkiss.dbeaver.product.bundles.name = \u4EA7\u54C1\u5305
extension-point.org.jkiss.dbeaver.resourceHandler.name = \u8D44\u6E90\u5904\u7406\u7A0B\u5E8F
extension-point.org.jkiss.dbeaver.resources.name = \u8D44\u6E90
diff --git a/plugins/org.jkiss.dbeaver.core/plugin.xml b/plugins/org.jkiss.dbeaver.core/plugin.xml
index 66f093fa5f88a664d85511a84690a40eb27f586c..affd45c22b7e805d848d714603006731f930c6a8 100644
--- a/plugins/org.jkiss.dbeaver.core/plugin.xml
+++ b/plugins/org.jkiss.dbeaver.core/plugin.xml
@@ -25,7 +25,6 @@
-
@@ -3524,46 +3523,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/plugins/org.jkiss.dbeaver.model/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.model/META-INF/MANIFEST.MF
index 56713be3273875737e495efa37e943ffd4cf0fbf..4658cb9d90e4e925d1fb8b3b96470924011992c4 100644
--- a/plugins/org.jkiss.dbeaver.model/META-INF/MANIFEST.MF
+++ b/plugins/org.jkiss.dbeaver.model/META-INF/MANIFEST.MF
@@ -65,6 +65,7 @@ Export-Package: org.jkiss.dbeaver,
org.jkiss.dbeaver.model.struct,
org.jkiss.dbeaver.model.struct.rdb,
org.jkiss.dbeaver.model.virtual,
+ org.jkiss.dbeaver.registry.formatter,
org.jkiss.dbeaver.runtime,
org.jkiss.dbeaver.runtime.encode,
org.jkiss.dbeaver.runtime.jobs,
diff --git a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle.properties b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle.properties
index 563d271efa0e3bb41ba86ecfbf2d447e22274a45..74c4e4d94a67040817bcca21de900d6551e497eb 100644
--- a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle.properties
+++ b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle.properties
@@ -4,6 +4,41 @@ Bundle-Vendor = JKISS
Bundle-Name = DBeaver Model
extension-point.org.jkiss.dbeaver.application.name = DBeaver applications
+extension-point.org.jkiss.dbeaver.pluginService.name = Plugin service
+extension-point.org.jkiss.dbeaver.dataFormatter.name = Data value formatters
+extension-point.org.jkiss.dbeaver.aggregateFunction.name = Aggregate Functions
+
+DateFormatter.date.label=Date
+DateFormatter.date.general.label=General
+DateFormatter.date.general.pattern.label=Pattern
+DateFormatter.date.general.pattern.description=Date pattern
+
+DateFormatter.time.label=Time
+DateFormatter.time.general.label=General
+DateFormatter.time.general.pattern.label=Pattern
+DateFormatter.time.general.pattern.description=Time pattern
+
+DateFormatter.timestamp.label=Timestamp
+DateFormatter.timestamp.general.label=General
+DateFormatter.timestamp.general.pattern.label=Pattern
+DateFormatter.timestamp.general.pattern.description=Timestamp pattern
+
+DateFormatter.number.label=Numbers
+DateFormatter.number.general.label=General
+DateFormatter.number.general.grouping.label=Use Grouping
+DateFormatter.number.general.grouping.description=Tells grouping is used in this format
+DateFormatter.number.general.maxIntDigits.label=Maximum integer digits
+DateFormatter.number.general.maxIntDigits.description=Maximum integer digits
+DateFormatter.number.general.minIntDigits.label=Minimum integer digits
+DateFormatter.number.general.minIntDigits.description=Minimum integer digits
+DateFormatter.number.general.maxFractDigits.label=Maximum fraction digits
+DateFormatter.number.general.maxFractDigits.description=Maximum fraction digits
+DateFormatter.number.general.minFractDigits.label=Minimum fraction digits
+DateFormatter.number.general.minFractDigits.description=Minimum fraction digits
+DateFormatter.number.general.useTypeScale.label=Use data type scale for fraction digits
+DateFormatter.number.general.useTypeScale.description=Use column/attribute data type scale as minimum fraction digits number
+DateFormatter.number.general.roundingMode.label=Rounding mode
+DateFormatter.number.general.roundingMode.description=Rounding mode
meta.org.jkiss.dbeaver.model.DBPNamedObject.name.name=Name
meta.org.jkiss.dbeaver.model.data.DBDValueLocator.entity.name=Table
diff --git a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_de.properties b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_de.properties
index 58546a6b1ec105f6b4f2ea983110d15d8b2d045f..4f1f4199df22ff0cc8e92a881587e4672f827158 100644
--- a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_de.properties
+++ b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_de.properties
@@ -2,10 +2,37 @@
Bundle-Name = DBeaver Model
-Bundle-Vendor = JKISS
-
extension-point.org.jkiss.dbeaver.application.name = DBeaver Anwendungen
+DateFormatter.date.general.label = Allgemein
+DateFormatter.date.general.pattern.description = Datumsmuster
+DateFormatter.date.general.pattern.label = Muster
+DateFormatter.date.label = Datum
+DateFormatter.number.general.grouping.description = Gruppierung wird bei diesem Format verwendet
+DateFormatter.number.general.grouping.label = Gruppierung verwenden
+DateFormatter.number.general.label = Allgemein
+DateFormatter.number.general.maxFractDigits.description = Maximale Anzahl an Nachkommastellen
+DateFormatter.number.general.maxFractDigits.label = Maximale Anzahl an Nachkommastellen
+DateFormatter.number.general.maxIntDigits.description = Maximale Anzahl an Vorkommastellen
+DateFormatter.number.general.maxIntDigits.label = Maximale Anzahl an Vorkommastellen
+DateFormatter.number.general.minFractDigits.description = Minimale Anzahl an Nachkommastellen
+DateFormatter.number.general.minFractDigits.label = Minimale Anzahl an Nachkommastellen
+DateFormatter.number.general.minIntDigits.description = Minimale Anzahl an Vorkommastellen
+DateFormatter.number.general.minIntDigits.label = Minimale Anzahl an Vorkommastellen
+DateFormatter.number.general.roundingMode.description = Rundungsmodus
+DateFormatter.number.general.roundingMode.label = Rundungsmodus
+DateFormatter.number.general.useTypeScale.description = Verwendung der Spalten-/Attributdatentyp-Skala als minimale Bruchziffernanzahl
+DateFormatter.number.general.useTypeScale.label = Datentypskala f\u00FCr Bruchziffern verwenden
+DateFormatter.number.label = Zahlen
+DateFormatter.time.general.label = Allgemein
+DateFormatter.time.general.pattern.description = Zeitmuster
+DateFormatter.time.general.pattern.label = Muster
+DateFormatter.time.label = Zeit
+DateFormatter.timestamp.general.label = Allgemein
+DateFormatter.timestamp.general.pattern.description = Zeitstempelmuster
+DateFormatter.timestamp.general.pattern.label = Muster
+DateFormatter.timestamp.label = Zeitstempel
+
meta.org.jkiss.dbeaver.model.DBPNamedObject.name.name = Name
meta.org.jkiss.dbeaver.model.data.DBDValueLocator.entity.name = Tabelle
meta.org.jkiss.dbeaver.model.data.DBDValueLocator.uniqueKey.name = Schl\u00FCssel
diff --git a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_es.properties b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_es.properties
new file mode 100644
index 0000000000000000000000000000000000000000..0281763ac84d1f53ca58cdfd1f557ec4e72a20b3
--- /dev/null
+++ b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_es.properties
@@ -0,0 +1,26 @@
+DateFormatter.date.label = Fecha
+DateFormatter.date.general.label = General
+DateFormatter.date.general.pattern.label = Cadena de Formato
+DateFormatter.date.general.pattern.description = Cadena de formato de las fechas
+DateFormatter.time.label = Hora
+DateFormatter.time.general.label = General
+DateFormatter.time.general.pattern.label = Cadena de Formato
+DateFormatter.time.general.pattern.description = Cadena de formato de las horas
+DateFormatter.timestamp.label = Fecha/Hora
+DateFormatter.timestamp.general.label = General
+DateFormatter.timestamp.general.pattern.label = Cadena de formato de fecha/hora
+DateFormatter.timestamp.general.pattern.description = Cadena de formato de fecha/hora
+DateFormatter.number.label = N\u044Ameros
+DateFormatter.number.general.label = General
+DateFormatter.number.general.grouping.label = Usar agrupaci\u0443n
+DateFormatter.number.general.grouping.description = Indica qu\u0439 agrupaci\u0443n se usa en el formato
+DateFormatter.number.general.maxIntDigits.label = M\u0431ximas cifras enteras
+DateFormatter.number.general.maxIntDigits.description = M\u0431ximas cifras enteras
+DateFormatter.number.general.minIntDigits.label = M\u043Dnimas cifras enteras
+DateFormatter.number.general.minIntDigits.description = M\u043Dnimas cifras enteras
+DateFormatter.number.general.maxFractDigits.label = M\u0431ximas cifras decimales
+DateFormatter.number.general.maxFractDigits.description = M\u0431ximas cifras decimales
+DateFormatter.number.general.minFractDigits.label = M\u043Dximas cifras decimales
+DateFormatter.number.general.minFractDigits.description = M\u043Dximas cifras decimales
+DateFormatter.number.general.roundingMode.label = Modo de redondeo
+DateFormatter.number.general.roundingMode.description = Modo de redondeo
diff --git a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_fr.properties b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_fr.properties
index c060ad5760926f45a6708921553b7c1eb20cc122..8b523e4b55492c5aaf5d08cf817ab5cabec699d3 100644
--- a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_fr.properties
+++ b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_fr.properties
@@ -1,5 +1,37 @@
# Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org)
extension-point.org.jkiss.dbeaver.application.name = DBeaver applications
+extension-point.org.jkiss.dbeaver.pluginService.name = Service d'extensions
+extension-point.org.jkiss.dbeaver.dataFormatter.name = Formateurs de donn\u00E9es
+extension-point.org.jkiss.dbeaver.aggregateFunction.name = Fonctions d'aggr\u00E9gation
+
+DateFormatter.date.general.label = G\u00E9n\u00E9ral
+DateFormatter.date.general.pattern.description = Mod\u00E8le de date
+DateFormatter.date.general.pattern.label = Mod\u00E8le
+DateFormatter.date.label = Date
+DateFormatter.number.general.grouping.description = Indique un regroupement dans ce format
+DateFormatter.number.general.grouping.label = Regrouper
+DateFormatter.number.general.label = G\u00E9n\u00E9ral
+DateFormatter.number.general.maxFractDigits.description = Nombre maximal de chiffres apr\u00E8s la virgule
+DateFormatter.number.general.maxFractDigits.label = Nombre maximal de chiffres apr\u00E8s la virgule
+DateFormatter.number.general.maxIntDigits.description = Nombre maximal de chiffres entiers
+DateFormatter.number.general.maxIntDigits.label = Nombre maximal de chiffres entiers
+DateFormatter.number.general.minFractDigits.description = Nombre minimal de chiffres apr\u00E8s la virgule
+DateFormatter.number.general.minFractDigits.label = Nombre minimal de chiffres apr\u00E8s la virgule
+DateFormatter.number.general.minIntDigits.description = Nombre minimal de chiffres entiers
+DateFormatter.number.general.minIntDigits.label = Nombre minimal de chiffres entiers
+DateFormatter.number.general.useTypeScale.label = Utiliser l'\u00E9chelle du type de donne\u00E9s pour les chiffres \u00E0 virgules
+DateFormatter.number.general.useTypeScale.description = Utiliser la colonne/attribut d'\u00E9chelle du type de donne\u00E9s comme nombre minimal de chiffres apr\u00E8s la virgule
+DateFormatter.number.general.roundingMode.description = R\u00E8gle d'arrondissement
+DateFormatter.number.general.roundingMode.label = R\u00E8gle d'arrondissement
+DateFormatter.number.label = Nombre
+DateFormatter.time.general.label = G\u00E9n\u00E9ral
+DateFormatter.time.general.pattern.description = Mod\u00E8le de date/heure
+DateFormatter.time.general.pattern.label = Mod\u00E8le
+DateFormatter.time.label = Date/heure
+DateFormatter.timestamp.general.label = G\u00E9n\u00E9ral
+DateFormatter.timestamp.general.pattern.description = Mod\u00E8le d'horodatage
+DateFormatter.timestamp.general.pattern.label = Mod\u00E8le
+DateFormatter.timestamp.label = Horodatage
meta.org.jkiss.dbeaver.model.DBPNamedObject.name.name=Nom
meta.org.jkiss.dbeaver.model.data.DBDValueLocator.entity.name=Table
diff --git a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_it.properties b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_it.properties
new file mode 100644
index 0000000000000000000000000000000000000000..0af65f17e131773953a26b757e7db2e5418d1ffb
--- /dev/null
+++ b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_it.properties
@@ -0,0 +1,26 @@
+DateFormatter.date.label = Data
+DateFormatter.date.general.label = Generale
+DateFormatter.date.general.pattern.label = Formato
+DateFormatter.date.general.pattern.description = Formato Data
+DateFormatter.time.label = Ora
+DateFormatter.time.general.label = Generale
+DateFormatter.time.general.pattern.label = Formato
+DateFormatter.time.general.pattern.description = Formato Ora
+DateFormatter.timestamp.label = Data/Oa
+DateFormatter.timestamp.general.label = Generale
+DateFormatter.timestamp.general.pattern.label = Formato
+DateFormatter.timestamp.general.pattern.description = Formato Data/Ora
+DateFormatter.number.label = Numeri
+DateFormatter.number.general.label = Generale
+DateFormatter.number.general.grouping.label = Usa il Raggruppamento
+DateFormatter.number.general.grouping.description = Segnala quale raggruppamento \u00E8 usato in questo formato
+DateFormatter.number.general.maxIntDigits.label = Massimo intero per le cifre
+DateFormatter.number.general.maxIntDigits.description = Massimo intero per le cifre
+DateFormatter.number.general.minIntDigits.label = Minimo intero per le cifre
+DateFormatter.number.general.minIntDigits.description = Minimo intero per le cifre
+DateFormatter.number.general.maxFractDigits.label = Massima frazione per le cifre
+DateFormatter.number.general.maxFractDigits.description = Massima frazione per le cifre
+DateFormatter.number.general.minFractDigits.label = Minima frazione per le cifre
+DateFormatter.number.general.minFractDigits.description = Minima frazione per le cifre
+DateFormatter.number.general.roundingMode.label = Modalit\u00E0 di arrotondamento
+DateFormatter.number.general.roundingMode.description = Modalit\u00E0 di arrotondamento
diff --git a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_ja.properties b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_ja.properties
index f776f2d0cc538ff9616e88bcea01f33d3d0a5955..21ee6667843446e27a757dc4431da37c8133344e 100644
--- a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_ja.properties
+++ b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_ja.properties
@@ -1,6 +1,41 @@
# Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org)
extension-point.org.jkiss.dbeaver.application.name =DBeaver\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3
+extension-point.org.jkiss.dbeaver.pluginService.name =\u30D7\u30E9\u30B0\u30A4\u30F3\u30B5\u30FC\u30D3\u30B9
+extension-point.org.jkiss.dbeaver.dataFormatter.name =\u30C7\u30FC\u30BF\u30D5\u30A9\u30FC\u30DE\u30C3\u30BF
+extension-point.org.jkiss.dbeaver.aggregateFunction.name =\u96C6\u8A08\u95A2\u6570
+
+DateFormatter.date.label=\u65E5\u4ED8
+DateFormatter.date.general.label=\u4E00\u822C
+DateFormatter.date.general.pattern.label=\u30D1\u30BF\u30FC\u30F3
+DateFormatter.date.general.pattern.description=\u65E5\u4ED8\u30D1\u30BF\u30FC\u30F3
+
+DateFormatter.time.label=\u6642\u9593
+DateFormatter.time.general.label=\u4E00\u822C
+DateFormatter.time.general.pattern.label=\u30D1\u30BF\u30FC\u30F3
+DateFormatter.time.general.pattern.description=\u6642\u9593\u30D1\u30BF\u30FC\u30F3
+
+DateFormatter.timestamp.label=\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7
+DateFormatter.timestamp.general.label=\u4E00\u822C
+DateFormatter.timestamp.general.pattern.label=\u30D1\u30BF\u30FC\u30F3
+DateFormatter.timestamp.general.pattern.description=\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u30D1\u30BF\u30FC\u30F3
+
+DateFormatter.number.label=\u6570\u5B57
+DateFormatter.number.general.label=\u4E00\u822C
+DateFormatter.number.general.grouping.label=\u30B0\u30EB\u30FC\u30D7\u5316\u306E\u4F7F\u7528
+DateFormatter.number.general.grouping.description=\u30B0\u30EB\u30FC\u30D7\u5316\u304C\u3053\u306E\u5F62\u5F0F\u3067\u4F7F\u7528\u3055\u308C\u308B\u3053\u3068\u3092\u4F1D\u3048\u308B
+DateFormatter.number.general.maxIntDigits.label=\u6700\u5927\u6574\u6570\u6841
+DateFormatter.number.general.maxIntDigits.description=\u6700\u5927\u6574\u6570\u6841
+DateFormatter.number.general.minIntDigits.label=\u6700\u5C0F\u6574\u6570\u6841
+DateFormatter.number.general.minIntDigits.description=\u6700\u5C0F\u6574\u6570\u6841
+DateFormatter.number.general.maxFractDigits.label=\u6700\u5927\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u6570
+DateFormatter.number.general.maxFractDigits.description=\u6700\u5927\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u6570
+DateFormatter.number.general.minFractDigits.label=\u6700\u5C0F\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u6570
+DateFormatter.number.general.minFractDigits.description=\u6700\u5C0F\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u6570
+DateFormatter.number.general.useTypeScale.label=\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u306B\u306F\u30C7\u30FC\u30BF\u578B\u5C3A\u5EA6\u3092\u4F7F\u7528\u3059\u308B
+DateFormatter.number.general.useTypeScale.description=\u5217/\u5C5E\u6027\u306E\u30C7\u30FC\u30BF\u578B\u306E\u30B9\u30B1\u30FC\u30EB\u3092\u6700\u5C0F\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u6570\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B
+DateFormatter.number.general.roundingMode.label=\u4E38\u3081\u30E2\u30FC\u30C9
+DateFormatter.number.general.roundingMode.description=\u4E38\u3081\u30E2\u30FC\u30C9
meta.org.jkiss.dbeaver.model.DBPNamedObject.name.name=\u540D\u524D
meta.org.jkiss.dbeaver.model.data.DBDValueLocator.entity.name=\u8868
diff --git a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_ru.properties b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_ru.properties
index ad339eaabf6cacc2e3a980fb81fb7bed4a29a69a..d42c61f44058a4f63146cc79b8d1752ac6596baa 100644
--- a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_ru.properties
+++ b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_ru.properties
@@ -1,7 +1,31 @@
# Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org)
-Bundle-Vendor = JKISS
-Bundle-Name = DBeaver Model
+DateFormatter.date.general.label = \u041E\u0441\u043D\u043E\u0432\u043D\u044B\u0435
+DateFormatter.date.general.pattern.description = \u0428\u0430\u0431\u043B\u043E\u043D \u0434\u0430\u0442\u044B
+DateFormatter.date.general.pattern.label = \u0428\u0430\u0431\u043B\u043E\u043D
+DateFormatter.date.label = \u0414\u0430\u0442\u0430
+DateFormatter.number.general.grouping.description = \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0443 \u0432 \u044D\u0442\u043E\u043C \u0444\u043E\u0440\u043C\u0430\u0442\u0435
+DateFormatter.number.general.grouping.label = \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0443
+DateFormatter.number.general.label = \u041E\u0441\u043D\u043E\u0432\u043D\u044B\u0435
+DateFormatter.number.general.maxFractDigits.description = Maximum fraction digits
+DateFormatter.number.general.maxFractDigits.label = Maximum fraction digits
+DateFormatter.number.general.maxIntDigits.description = Maximum integer digits
+DateFormatter.number.general.maxIntDigits.label = \u041C\u0430\u043A\u0441. \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0446\u0438\u0444\u0440 \u0432 \u0447\u0438\u0441\u043B\u0435
+DateFormatter.number.general.minFractDigits.description = Minimum fraction digits
+DateFormatter.number.general.minFractDigits.label = Minimum fraction digits
+DateFormatter.number.general.minIntDigits.description = Minimum integer digits
+DateFormatter.number.general.minIntDigits.label = Minimum integer digits
+DateFormatter.number.general.roundingMode.description = \u0420\u0435\u0436\u0438\u043C \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u044F
+DateFormatter.number.general.roundingMode.label = \u0420\u0435\u0436\u0438\u043C \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u044F
+DateFormatter.number.label = \u0427\u0438\u0441\u043B\u0430
+DateFormatter.time.general.label = \u041E\u0441\u043D\u043E\u0432\u043D\u044B\u0435
+DateFormatter.time.general.pattern.description = \u0428\u0430\u0431\u043B\u043E\u043D \u0432\u0440\u0435\u043C\u0435\u043D\u0438
+DateFormatter.time.general.pattern.label = \u0428\u0430\u0431\u043B\u043E\u043D
+DateFormatter.time.label = \u0412\u0440\u0435\u043C\u044F
+DateFormatter.timestamp.general.label = \u041E\u0441\u043D\u043E\u0432\u043D\u044B\u0435
+DateFormatter.timestamp.general.pattern.description = Timestamp pattern
+DateFormatter.timestamp.general.pattern.label = \u0428\u0430\u0431\u043B\u043E\u043D
+DateFormatter.timestamp.label = Timestamp
meta.org.jkiss.dbeaver.model.data.DBDValueLocator.entity.name=\u0422\u0430\u0431\u043B\u0438\u0446\u0430
meta.org.jkiss.dbeaver.model.data.DBDValueLocator.uniqueKey.name=\u041A\u043B\u044E\u0447
diff --git a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_zh.properties b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_zh.properties
index 5eb16aae962348b8a5dd235ec91ed2f32b835936..1c804f4b724e52b8f5b35e055156bc1ea5c480f4 100644
--- a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_zh.properties
+++ b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_zh.properties
@@ -1,6 +1,38 @@
# Copyright (C) 2017 Liu, Yuanyuan (liuyuanyuan@highgo.com)
extension-point.org.jkiss.dbeaver.application.name = DBeaver \u5E94\u7528\u7A0B\u5E8F
+extension-point.org.jkiss.dbeaver.pluginService.name = \u63D2\u4EF6\u670D\u52A1
+extension-point.org.jkiss.dbeaver.aggregateFunction.name = \u805A\u96C6\u51FD\u6570
+extension-point.org.jkiss.dbeaver.dataFormatter.name = \u6570\u636E\u683C\u5F0F\u5668
+
+DateFormatter.date.general.label = \u5E38\u89C4
+DateFormatter.date.general.pattern.description = \u65E5\u671F\u6A21\u5F0F
+DateFormatter.date.general.pattern.label = \u6A21\u5F0F
+DateFormatter.date.label = \u65E5\u671F
+DateFormatter.number.general.grouping.description = \u5728\u8BE5\u683C\u5F0F\u4E2D\u4F7F\u7528\u5206\u7EC4
+DateFormatter.number.general.grouping.label = \u5206\u7EC4
+DateFormatter.number.general.label = \u5E38\u89C4
+DateFormatter.number.general.maxFractDigits.description = \u6700\u591A\u5C0F\u6570\u4F4D\u6570
+DateFormatter.number.general.maxFractDigits.label = \u6700\u591A\u5C0F\u6570\u4F4D\u6570
+DateFormatter.number.general.maxIntDigits.description = \u6700\u5927\u6574\u6570\u4F4D\u6570
+DateFormatter.number.general.maxIntDigits.label = \u6700\u5927\u6574\u6570\u4F4D\u6570
+DateFormatter.number.general.minFractDigits.description = \u6700\u5C11\u5C0F\u6570\u4F4D\u6570
+DateFormatter.number.general.minFractDigits.label = \u6700\u5C11\u5C0F\u6570\u4F4D\u6570
+DateFormatter.number.general.minIntDigits.description = \u6700\u5C0F\u6574\u6570\u4F4D\u6570
+DateFormatter.number.general.minIntDigits.label = \u6700\u5C0F\u6574\u6570\u4F4D\u6570
+DateFormatter.number.general.roundingMode.description = \u53D6\u6574\u6A21\u5F0F
+DateFormatter.number.general.roundingMode.label = \u53D6\u6574\u6A21\u5F0F
+DateFormatter.number.general.useTypeScale.description = \u4F7F\u7528\u5217\u6216\u5C5E\u6027\u6570\u636E\u7C7B\u578B\u7684\u5C0F\u6570\u4F4D\u6570\u4F5C\u4E3A\u6700\u5C0F\u7684\u5C0F\u6570\u4F4D\u6570
+DateFormatter.number.general.useTypeScale.label = \u4F7F\u7528\u6570\u636E\u7C7B\u578B\u7684\u5C0F\u6570\u4F4D\u6570
+DateFormatter.number.label = \u6570\u5B57
+DateFormatter.time.general.label = \u5E38\u89C4
+DateFormatter.time.general.pattern.description = \u65F6\u95F4\u6A21\u5F0F
+DateFormatter.time.general.pattern.label = \u6A21\u5F0F
+DateFormatter.time.label = \u65F6\u95F4
+DateFormatter.timestamp.general.label = \u5E38\u89C4
+DateFormatter.timestamp.general.pattern.description = \u65F6\u95F4\u6233\u6A21\u5F0F
+DateFormatter.timestamp.general.pattern.label = \u6A21\u5F0F
+DateFormatter.timestamp.label = \u65F6\u95F4\u6233
meta.org.jkiss.dbeaver.model.DBPNamedObject.name.name = \u540D\u79F0
meta.org.jkiss.dbeaver.model.data.DBDValueLocator.entity.name = \u8868
diff --git a/plugins/org.jkiss.dbeaver.model/plugin.xml b/plugins/org.jkiss.dbeaver.model/plugin.xml
index 49f7dc7047a6063b607ccf4a048a492602b3a75e..43c0efad400b5d6c8d66457a436ce43c05c8d359 100644
--- a/plugins/org.jkiss.dbeaver.model/plugin.xml
+++ b/plugins/org.jkiss.dbeaver.model/plugin.xml
@@ -21,6 +21,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/org.jkiss.dbeaver.core/schema/org.jkiss.dbeaver.dataFormatter.exsd b/plugins/org.jkiss.dbeaver.model/schema/org.jkiss.dbeaver.dataFormatter.exsd
similarity index 96%
rename from plugins/org.jkiss.dbeaver.core/schema/org.jkiss.dbeaver.dataFormatter.exsd
rename to plugins/org.jkiss.dbeaver.model/schema/org.jkiss.dbeaver.dataFormatter.exsd
index ca5b3fa781c1247d6eefb9cecdc0fbb6a8409759..89ea99f5ecea7b26d474b7c452e9f115be63d540 100644
--- a/plugins/org.jkiss.dbeaver.core/schema/org.jkiss.dbeaver.dataFormatter.exsd
+++ b/plugins/org.jkiss.dbeaver.model/schema/org.jkiss.dbeaver.dataFormatter.exsd
@@ -1,223 +1,223 @@
-
-
-
-
-
-
-
-
- [Enter description of this extension point.]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- [Enter the first release in which this extension point appears.]
-
-
-
-
-
-
-
-
- [Enter extension point usage example here.]
-
-
-
-
-
-
-
-
- [Enter API information here.]
-
-
-
-
-
-
-
-
- [Enter information about supplied implementation of this extension point.]
-
-
-
-
-
+
+
+
+
+
+
+
+
+ [Enter description of this extension point.]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [Enter the first release in which this extension point appears.]
+
+
+
+
+
+
+
+
+ [Enter extension point usage example here.]
+
+
+
+
+
+
+
+
+ [Enter API information here.]
+
+
+
+
+
+
+
+
+ [Enter information about supplied implementation of this extension point.]
+
+
+
+
+
diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/formatter/DataFormatterDescriptor.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/registry/formatter/DataFormatterDescriptor.java
similarity index 87%
rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/formatter/DataFormatterDescriptor.java
rename to plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/registry/formatter/DataFormatterDescriptor.java
index a6b0b52ed344a5da3ae08b6f015df41d014c2906..704f902eb959fec127c14a115e2812737adc9dac 100644
--- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/formatter/DataFormatterDescriptor.java
+++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/registry/formatter/DataFormatterDescriptor.java
@@ -1,102 +1,101 @@
-/*
- * DBeaver - Universal Database Manager
- * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.jkiss.dbeaver.registry.formatter;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.jkiss.dbeaver.Log;
-import org.jkiss.dbeaver.model.data.DBDDataFormatter;
-import org.jkiss.dbeaver.model.data.DBDDataFormatterSample;
-import org.jkiss.dbeaver.model.impl.AbstractDescriptor;
-import org.jkiss.dbeaver.model.impl.PropertyDescriptor;
-import org.jkiss.dbeaver.model.preferences.DBPPropertyDescriptor;
-import org.jkiss.dbeaver.registry.RegistryConstants;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * DataFormatterDescriptor
- */
-public class DataFormatterDescriptor extends AbstractDescriptor
-{
- private static final Log log = Log.getLog(DataFormatterDescriptor.class);
-
- public static final String EXTENSION_ID = "org.jkiss.dbeaver.dataFormatter"; //$NON-NLS-1$
-
- private String id;
- private String name;
- private String description;
- private List properties = new ArrayList<>();
- private DBDDataFormatterSample sample;
- private ObjectType formatterType;
-
- public DataFormatterDescriptor(IConfigurationElement config)
- {
- super(config);
-
- this.id = config.getAttribute(RegistryConstants.ATTR_ID);
- this.formatterType = new ObjectType(config.getAttribute(RegistryConstants.ATTR_CLASS));
- this.name = config.getAttribute(RegistryConstants.ATTR_LABEL);
- this.description = config.getAttribute(RegistryConstants.ATTR_DESCRIPTION);
-
- IConfigurationElement[] propElements = config.getChildren(PropertyDescriptor.TAG_PROPERTY_GROUP);
- for (IConfigurationElement prop : propElements) {
- properties.addAll(PropertyDescriptor.extractProperties(prop));
- }
- Class> objectClass = getObjectClass(config.getAttribute(RegistryConstants.ATTR_SAMPLE_CLASS));
- try {
- sample = (DBDDataFormatterSample)objectClass.newInstance();
- } catch (Exception e) {
- log.error("Can't instantiate data formatter '" + getId() + "' sample");
- }
- }
-
- public String getId()
- {
- return id;
- }
-
- public String getName()
- {
- return name;
- }
-
- public String getDescription()
- {
- return description;
- }
-
- public DBDDataFormatterSample getSample()
- {
- return sample;
- }
-
- public List getProperties() {
- return properties;
- }
-
- public DBDDataFormatter createFormatter() throws IllegalAccessException, InstantiationException
- {
- Class extends DBDDataFormatter> clazz = formatterType.getObjectClass(DBDDataFormatter.class);
- if (clazz == null) {
- return null;
- }
- return clazz.newInstance();
- }
-
-}
+/*
+ * DBeaver - Universal Database Manager
+ * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.jkiss.dbeaver.registry.formatter;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.jkiss.dbeaver.Log;
+import org.jkiss.dbeaver.model.data.DBDDataFormatter;
+import org.jkiss.dbeaver.model.data.DBDDataFormatterSample;
+import org.jkiss.dbeaver.model.impl.AbstractDescriptor;
+import org.jkiss.dbeaver.model.impl.PropertyDescriptor;
+import org.jkiss.dbeaver.model.preferences.DBPPropertyDescriptor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * DataFormatterDescriptor
+ */
+public class DataFormatterDescriptor extends AbstractDescriptor
+{
+ private static final Log log = Log.getLog(DataFormatterDescriptor.class);
+
+ public static final String EXTENSION_ID = "org.jkiss.dbeaver.dataFormatter"; //$NON-NLS-1$
+
+ private String id;
+ private String name;
+ private String description;
+ private List properties = new ArrayList<>();
+ private DBDDataFormatterSample sample;
+ private ObjectType formatterType;
+
+ public DataFormatterDescriptor(IConfigurationElement config)
+ {
+ super(config);
+
+ this.id = config.getAttribute("id");
+ this.formatterType = new ObjectType(config.getAttribute("class"));
+ this.name = config.getAttribute("label");
+ this.description = config.getAttribute("description");
+
+ IConfigurationElement[] propElements = config.getChildren(PropertyDescriptor.TAG_PROPERTY_GROUP);
+ for (IConfigurationElement prop : propElements) {
+ properties.addAll(PropertyDescriptor.extractProperties(prop));
+ }
+ Class> objectClass = getObjectClass(config.getAttribute("sampleClass"));
+ try {
+ sample = (DBDDataFormatterSample)objectClass.newInstance();
+ } catch (Exception e) {
+ log.error("Can't instantiate data formatter '" + getId() + "' sample");
+ }
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public String getDescription()
+ {
+ return description;
+ }
+
+ public DBDDataFormatterSample getSample()
+ {
+ return sample;
+ }
+
+ public List getProperties() {
+ return properties;
+ }
+
+ public DBDDataFormatter createFormatter() throws IllegalAccessException, InstantiationException
+ {
+ Class extends DBDDataFormatter> clazz = formatterType.getObjectClass(DBDDataFormatter.class);
+ if (clazz == null) {
+ return null;
+ }
+ return clazz.newInstance();
+ }
+
+}
diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/formatter/DataFormatterProfile.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/registry/formatter/DataFormatterProfile.java
similarity index 97%
rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/formatter/DataFormatterProfile.java
rename to plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/registry/formatter/DataFormatterProfile.java
index ca8a9f47294976796f5875af4edfbfce87a36786..cbcf1ff61f8074571368e424ce890f75c550e706 100644
--- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/formatter/DataFormatterProfile.java
+++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/registry/formatter/DataFormatterProfile.java
@@ -1,231 +1,231 @@
-/*
- * DBeaver - Universal Database Manager
- * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jkiss.dbeaver.registry.formatter;
-
-import org.jkiss.dbeaver.model.data.DBDDataFormatter;
-import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile;
-import org.jkiss.dbeaver.model.impl.preferences.SimplePreferenceStore;
-import org.jkiss.dbeaver.model.preferences.DBPPreferenceListener;
-import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore;
-import org.jkiss.dbeaver.model.preferences.DBPPropertyDescriptor;
-import org.jkiss.dbeaver.model.struct.DBSTypedObject;
-import org.jkiss.dbeaver.utils.PrefUtils;
-import org.jkiss.utils.CommonUtils;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Locale;
-import java.util.Map;
-
-/**
- * DataFormatterProfile
- */
-public class DataFormatterProfile implements DBDDataFormatterProfile, DBPPreferenceListener {
-
- private static final String PROP_LANGUAGE = "dataformat.profile.language"; //$NON-NLS-1$
- private static final String PROP_COUNTRY = "dataformat.profile.country"; //$NON-NLS-1$
- private static final String PROP_VARIANT = "dataformat.profile.variant"; //$NON-NLS-1$
- public static final String DATAFORMAT_PREFIX = "dataformat."; //$NON-NLS-1$
- public static final String DATAFORMAT_TYPE_PREFIX = DATAFORMAT_PREFIX + "type."; //$NON-NLS-1$
-
- private DBPPreferenceStore store;
- private String name;
- private Locale locale;
-
- public DataFormatterProfile(String profileName, DBPPreferenceStore store)
- {
- this.name = profileName;
- this.store = store;
- loadProfile();
- }
-
- private void loadProfile()
- {
- {
- String language = store.getString(PROP_LANGUAGE);
- String country = store.getString(PROP_COUNTRY);
- String variant = store.getString(PROP_VARIANT);
- if (CommonUtils.isEmpty(language)) {
- this.locale = Locale.getDefault();
- } else if (CommonUtils.isEmpty(country)) {
- this.locale = new Locale(language);
- } else if (CommonUtils.isEmpty(variant)) {
- this.locale = new Locale(language, country);
- } else {
- this.locale = new Locale(language, country, variant);
- }
- }
- }
-
- @Override
- public void saveProfile() throws IOException
- {
- store.setValue(PROP_LANGUAGE, locale.getLanguage());
- store.setValue(PROP_COUNTRY, locale.getCountry());
- store.setValue(PROP_VARIANT, locale.getVariant());
-
- PrefUtils.savePreferenceStore(store);
- }
-
- @Override
- public DBPPreferenceStore getPreferenceStore()
- {
- return store;
- }
-
- @Override
- public String getProfileName()
- {
- return name;
- }
-
- @Override
- public void setProfileName(String name)
- {
- this.name = name;
- }
-
- @Override
- public Locale getLocale()
- {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale)
- {
- this.locale = locale;
- }
-
- @Override
- public Map
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/org.jkiss.dbeaver.core/schema/org.jkiss.dbeaver.aggregateFunction.exsd b/plugins/org.jkiss.dbeaver.ui.editors.data/schema/org.jkiss.dbeaver.aggregateFunction.exsd
similarity index 100%
rename from plugins/org.jkiss.dbeaver.core/schema/org.jkiss.dbeaver.aggregateFunction.exsd
rename to plugins/org.jkiss.dbeaver.ui.editors.data/schema/org.jkiss.dbeaver.aggregateFunction.exsd
diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/functions/AggregateFunctionDescriptor.java b/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/registry/functions/AggregateFunctionDescriptor.java
similarity index 79%
rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/functions/AggregateFunctionDescriptor.java
rename to plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/registry/functions/AggregateFunctionDescriptor.java
index e4f596283a589913daf51254ac9e3e3ff1a7435e..629583fb4a0d757c89727bdb067896d5d7b78dd6 100644
--- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/functions/AggregateFunctionDescriptor.java
+++ b/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/registry/functions/AggregateFunctionDescriptor.java
@@ -22,7 +22,6 @@ import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.DBPImage;
import org.jkiss.dbeaver.model.data.aggregate.IAggregateFunction;
import org.jkiss.dbeaver.model.impl.AbstractContextDescriptor;
-import org.jkiss.dbeaver.registry.RegistryConstants;
import org.jkiss.utils.CommonUtils;
/**
@@ -43,13 +42,13 @@ public class AggregateFunctionDescriptor extends AbstractContextDescriptor {
public AggregateFunctionDescriptor(IConfigurationElement config)
{
super(config);
- this.id = config.getAttribute(RegistryConstants.ATTR_ID);
- this.label = config.getAttribute(RegistryConstants.ATTR_LABEL);
- this.description = config.getAttribute(RegistryConstants.ATTR_DESCRIPTION);
- this.implClass = new ObjectType(config.getAttribute(RegistryConstants.ATTR_CLASS));
- this.icon = iconToImage(config.getAttribute(RegistryConstants.ATTR_ICON));
- this.type = config.getAttribute(RegistryConstants.ATTR_TYPE);
- this.isDefault = CommonUtils.toBoolean(config.getAttribute(RegistryConstants.ATTR_DEFAULT));
+ this.id = config.getAttribute("id");
+ this.label = config.getAttribute("label");
+ this.description = config.getAttribute("description");
+ this.implClass = new ObjectType(config.getAttribute("class"));
+ this.icon = iconToImage(config.getAttribute("icon"));
+ this.type = config.getAttribute("type");
+ this.isDefault = CommonUtils.toBoolean(config.getAttribute("default"));
}
public String getId() {
diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/functions/FunctionsRegistry.java b/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/registry/functions/FunctionsRegistry.java
similarity index 100%
rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/functions/FunctionsRegistry.java
rename to plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/registry/functions/FunctionsRegistry.java