mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
Fixed gettext usage:
- fixed gettext usage with .format() only for original text with %s - fixed typos - fixed translation yes/no buttons in the dialog. - improved translating sentences without "connecting" words (eg. see web/pgadmin/dashboard/static/js/dashboard.js, word 'cancel' needs to be translated in the Czech language as 'zrušit' but in another sentence as 'zrušení') - added gettext for text translations.
This commit is contained in:
parent
e238ecf182
commit
6a9af07f7a
@ -503,15 +503,13 @@ def create_app(app_name=None):
|
||||
svr_discovery_id = inst_id
|
||||
svr_comment = gettext(
|
||||
"Auto-detected %s installation with the data "
|
||||
"directory at %s" % (
|
||||
"directory at %s") % (
|
||||
winreg.QueryValueEx(
|
||||
inst_key, 'Display Name'
|
||||
)[0],
|
||||
winreg.QueryValueEx(
|
||||
inst_key, 'Data Directory'
|
||||
)[0]
|
||||
)
|
||||
)
|
||||
)[0])
|
||||
|
||||
add_server(
|
||||
user_id, servergroup_id, svr_name,
|
||||
@ -560,11 +558,10 @@ def create_app(app_name=None):
|
||||
description = description.decode('utf-8')
|
||||
data_directory = data_directory.decode('utf-8')
|
||||
svr_comment = gettext(u"Auto-detected %s installation "
|
||||
u"with the data directory at %s" % (
|
||||
u"with the data directory at %s") % (
|
||||
description,
|
||||
data_directory
|
||||
)
|
||||
)
|
||||
)
|
||||
add_server(user_id, servergroup_id, svr_name,
|
||||
svr_superuser, svr_port, svr_discovery_id,
|
||||
svr_comment)
|
||||
|
@ -39,14 +39,14 @@ def register_browser_preferences(self):
|
||||
gettext("Browser tree state saving interval"), 'integer',
|
||||
30, category_label=gettext('Display'),
|
||||
help_str=gettext(
|
||||
'Browser tree state saving interval in seconds.'
|
||||
'Browser tree state saving interval in seconds. '
|
||||
'Use -1 to disable the tree saving mechanism.'
|
||||
)
|
||||
)
|
||||
|
||||
self.preference.register(
|
||||
'display', 'confirm_on_refresh_close',
|
||||
gettext("Confirm on close or refresh ?"), 'boolean',
|
||||
gettext("Confirm on close or refresh?"), 'boolean',
|
||||
True, category_label=gettext('Display'),
|
||||
help_str=gettext(
|
||||
'Confirm closure or refresh of the browser or browser tab is '
|
||||
@ -56,7 +56,7 @@ def register_browser_preferences(self):
|
||||
|
||||
self.preference.register(
|
||||
'display', 'confirm_on_properties_close',
|
||||
gettext("Confirm before Close/Reset in object properties dialog ?"),
|
||||
gettext("Confirm before Close/Reset in object properties dialog?"),
|
||||
'boolean',
|
||||
True, category_label=gettext('Display'),
|
||||
help_str=gettext(
|
||||
|
@ -741,8 +741,7 @@ class ServerNode(PGChildNodeView):
|
||||
status=410,
|
||||
success=0,
|
||||
errormsg=gettext(
|
||||
"Could not find the required parameter (%s)." % arg
|
||||
)
|
||||
"Could not find the required parameter (%s).") % arg
|
||||
)
|
||||
|
||||
if 'hostaddr' in data and data['hostaddr'] and data['hostaddr'] != '':
|
||||
@ -838,7 +837,7 @@ class ServerNode(PGChildNodeView):
|
||||
status=401,
|
||||
success=0,
|
||||
errormsg=gettext(
|
||||
u"Unable to connect to server:\n\n%s" % errmsg)
|
||||
u"Unable to connect to server:\n\n%s") % errmsg
|
||||
)
|
||||
else:
|
||||
if 'save_password' in data and data['save_password'] and \
|
||||
|
@ -175,7 +175,7 @@ class DatabaseView(PGChildNodeView):
|
||||
kwargs['sid']
|
||||
)
|
||||
if self.manager is None:
|
||||
return gone(errormsg="Could not find the server.")
|
||||
return gone(errormsg=_("Could not find the server."))
|
||||
|
||||
if action and action in ["drop"]:
|
||||
self.conn = self.manager.connection()
|
||||
@ -567,8 +567,7 @@ class DatabaseView(PGChildNodeView):
|
||||
status=410,
|
||||
success=0,
|
||||
errormsg=_(
|
||||
"Could not find the required parameter (%s)." % arg
|
||||
)
|
||||
"Could not find the required parameter (%s).") % arg
|
||||
)
|
||||
# The below SQL will execute CREATE DDL only
|
||||
SQL = render_template(
|
||||
|
@ -368,8 +368,7 @@ class CastView(PGChildNodeView):
|
||||
status=410,
|
||||
success=0,
|
||||
errormsg=gettext(
|
||||
"Could not find the required parameter (%s)." % arg
|
||||
)
|
||||
"Could not find the required parameter (%s).") % arg
|
||||
)
|
||||
try:
|
||||
sql = render_template("/".join([self.template_path, 'create.sql']),
|
||||
@ -668,8 +667,8 @@ class CastView(PGChildNodeView):
|
||||
|
||||
if res is None:
|
||||
return gone(gettext(
|
||||
"Could not generate reversed engineered SQL for the cast \
|
||||
node."
|
||||
"Could not generate reversed engineered SQL for the "
|
||||
"cast node."
|
||||
))
|
||||
|
||||
return ajax_response(response=res)
|
||||
|
@ -378,8 +378,7 @@ class EventTriggerView(PGChildNodeView):
|
||||
status=400,
|
||||
success=0,
|
||||
errormsg=gettext(
|
||||
"Could not find the required parameter %s." % err
|
||||
)
|
||||
"Could not find the required parameter %s.") % err
|
||||
)
|
||||
try:
|
||||
sql = render_template(
|
||||
@ -637,8 +636,7 @@ class EventTriggerView(PGChildNodeView):
|
||||
status=410,
|
||||
success=0,
|
||||
errormsg=gettext(
|
||||
"Could not find the required parameter %s." % err
|
||||
)
|
||||
"Could not find the required parameter %s.") % err
|
||||
)
|
||||
sql = render_template(
|
||||
"/".join([self.template_path, 'create.sql']),
|
||||
|
@ -262,8 +262,7 @@ class ExtensionView(PGChildNodeView):
|
||||
status=410,
|
||||
success=0,
|
||||
errormsg=gettext(
|
||||
"Could not find the required parameter (%s)." % arg
|
||||
)
|
||||
"Could not find the required parameter (%s).") % arg
|
||||
)
|
||||
|
||||
status, res = self.conn.execute_dict(
|
||||
|
@ -393,8 +393,7 @@ class ForeignDataWrapperView(PGChildNodeView):
|
||||
status=410,
|
||||
success=0,
|
||||
errormsg=gettext(
|
||||
"Could not find the required parameter (%s)." % arg
|
||||
)
|
||||
"Could not find the required parameter (%s).") % arg
|
||||
)
|
||||
|
||||
try:
|
||||
|
@ -388,8 +388,7 @@ class ForeignServerView(PGChildNodeView):
|
||||
status=410,
|
||||
success=0,
|
||||
errormsg=gettext(
|
||||
"Could not find the required parameter (%s)." % arg
|
||||
)
|
||||
"Could not find the required parameter (%s).") % arg
|
||||
)
|
||||
try:
|
||||
if 'fsrvacl' in data:
|
||||
|
@ -36,7 +36,7 @@ define('pgadmin.node.foreign_server', [
|
||||
if (_.isUndefined(this.get('fsrvoption')) ||
|
||||
_.isNull(this.get('fsrvoption')) ||
|
||||
String(this.get('fsrvoption')).replace(/^\s+|\s+$/g, '') == '') {
|
||||
var msg = 'Please enter an option name';
|
||||
var msg = gettext('Please enter an option name.');
|
||||
this.errorModel.set('fsrvoption', msg);
|
||||
return msg;
|
||||
} else {
|
||||
|
@ -396,8 +396,7 @@ class UserMappingView(PGChildNodeView):
|
||||
status=410,
|
||||
success=0,
|
||||
errormsg=gettext(
|
||||
"Could not find the required parameter (%s)." % arg
|
||||
)
|
||||
"Could not find the required parameter (%s).") % arg
|
||||
)
|
||||
|
||||
try:
|
||||
|
@ -39,7 +39,7 @@ define('pgadmin.node.user_mapping', [
|
||||
if (_.isUndefined(this.get('umoption')) ||
|
||||
_.isNull(this.get('umoption')) ||
|
||||
String(this.get('umoption')).replace(/^\s+|\s+$/g, '') == '') {
|
||||
var msg = 'Please enter an option name';
|
||||
var msg = gettext('Please enter an option name.');
|
||||
this.errorModel.set('umoption', msg);
|
||||
return msg;
|
||||
} else {
|
||||
|
@ -37,7 +37,7 @@ define('pgadmin.node.foreign_data_wrapper', [
|
||||
if (_.isUndefined(this.get('fdwoption')) ||
|
||||
_.isNull(this.get('fdwoption')) ||
|
||||
String(this.get('fdwoption')).replace(/^\s+|\s+$/g, '') == '') {
|
||||
var msg = 'Please enter an option name';
|
||||
var msg = gettext('Please enter an option name.');
|
||||
this.errorModel.set('fdwoption', msg);
|
||||
return msg;
|
||||
} else {
|
||||
|
@ -453,8 +453,7 @@ class LanguageView(PGChildNodeView):
|
||||
status=410,
|
||||
success=0,
|
||||
errormsg=gettext(
|
||||
"Could not find the required parameter (%s)." % arg
|
||||
)
|
||||
"Could not find the required parameter (%s).") % arg
|
||||
)
|
||||
|
||||
try:
|
||||
|
@ -136,7 +136,7 @@ def check_precondition(f):
|
||||
kwargs['sid']
|
||||
)
|
||||
if not self.manager:
|
||||
return gone(errormsg="Could not find the server.")
|
||||
return gone(errormsg=gettext("Could not find the server."))
|
||||
|
||||
self.conn = self.manager.connection(did=kwargs['did'])
|
||||
# Set the template path for the SQL scripts
|
||||
@ -570,9 +570,8 @@ It may have been removed by another user.
|
||||
status=410,
|
||||
success=0,
|
||||
errormsg=gettext(
|
||||
"Could not find the required parameter (%s)." %
|
||||
required_args[arg]
|
||||
)
|
||||
"Could not find the required parameter (%s).") %
|
||||
required_args[arg]
|
||||
)
|
||||
try:
|
||||
self.format_request_acls(data)
|
||||
|
@ -458,8 +458,7 @@ class CollationView(PGChildNodeView, SchemaDiffObjectCompare):
|
||||
status=410,
|
||||
success=0,
|
||||
errormsg=gettext(
|
||||
"Could not find the required parameter (%s)." % arg
|
||||
)
|
||||
"Could not find the required parameter (%s).") % arg
|
||||
)
|
||||
if self._check_definition(data):
|
||||
return make_json_response(
|
||||
|
@ -216,10 +216,8 @@ class DomainView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare):
|
||||
status=410,
|
||||
success=0,
|
||||
errormsg=gettext(
|
||||
"Could not find the required parameter (%s)." %
|
||||
arg
|
||||
)
|
||||
)
|
||||
"Could not find the required parameter (%s).")
|
||||
% arg)
|
||||
|
||||
try:
|
||||
list_params = []
|
||||
|
@ -260,10 +260,8 @@ class ForeignTableView(PGChildNodeView, DataTypeReader,
|
||||
status=410,
|
||||
success=0,
|
||||
errormsg=gettext(
|
||||
"Could not find the required parameter (%s)." %
|
||||
arg
|
||||
)
|
||||
)
|
||||
"Could not find the required parameter (%s).")
|
||||
% arg)
|
||||
|
||||
try:
|
||||
list_params = []
|
||||
|
@ -422,8 +422,7 @@ class FtsConfigurationView(PGChildNodeView, SchemaDiffObjectCompare):
|
||||
status=410,
|
||||
success=0,
|
||||
errormsg=_(
|
||||
"Could not find the required parameter (%s)." % arg
|
||||
)
|
||||
"Could not find the required parameter (%s).") % arg
|
||||
)
|
||||
|
||||
# Either copy config or parser must be present in data
|
||||
|
@ -431,7 +431,7 @@ class FtsDictionaryView(PGChildNodeView, SchemaDiffObjectCompare):
|
||||
status=410,
|
||||
success=0,
|
||||
errormsg=_(
|
||||
"Could not find the required parameter (%s)." % arg)
|
||||
"Could not find the required parameter (%s).") % arg
|
||||
)
|
||||
# Fetch schema name from schema oid
|
||||
sql = render_template(
|
||||
|
@ -379,8 +379,7 @@ class FtsParserView(PGChildNodeView, SchemaDiffObjectCompare):
|
||||
status=410,
|
||||
success=0,
|
||||
errormsg=_(
|
||||
"Could not find the required parameter (%s)." % arg
|
||||
)
|
||||
"Could not find the required parameter (%s).") % arg
|
||||
)
|
||||
# Fetch schema name from schema oid
|
||||
sql = render_template(
|
||||
@ -850,7 +849,7 @@ class FtsParserView(PGChildNodeView, SchemaDiffObjectCompare):
|
||||
return gone(
|
||||
_(
|
||||
"Could not generate reversed engineered query for "
|
||||
"FTS Parser node"
|
||||
"FTS Parser node."
|
||||
)
|
||||
)
|
||||
|
||||
|
@ -354,8 +354,7 @@ class FtsTemplateView(PGChildNodeView, SchemaDiffObjectCompare):
|
||||
status=410,
|
||||
success=0,
|
||||
errormsg=gettext(
|
||||
"Could not find the required parameter (%s)." % arg
|
||||
)
|
||||
"Could not find the required parameter (%s).") % arg
|
||||
)
|
||||
# Fetch schema name from schema oid
|
||||
sql = render_template("/".join([self.template_path, 'schema.sql']),
|
||||
|
@ -277,10 +277,8 @@ class FunctionView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare):
|
||||
status=410,
|
||||
success=0,
|
||||
errormsg=gettext(
|
||||
"Could not find the required parameter (%s)." %
|
||||
arg
|
||||
)
|
||||
)
|
||||
"Could not find the required parameter (%s).")
|
||||
% arg)
|
||||
|
||||
list_params = []
|
||||
if request.method == 'GET':
|
||||
|
@ -379,8 +379,7 @@ class PackageView(PGChildNodeView, SchemaDiffObjectCompare):
|
||||
status=400,
|
||||
success=0,
|
||||
errormsg=_(
|
||||
"Could not find the required parameter (%s)." % arg
|
||||
)
|
||||
"Could not find the required parameter (%s).") % arg
|
||||
)
|
||||
data['schema'] = self.schema
|
||||
|
||||
@ -557,9 +556,8 @@ class PackageView(PGChildNodeView, SchemaDiffObjectCompare):
|
||||
status=400,
|
||||
success=0,
|
||||
errormsg=_(
|
||||
"Could not find the required parameter (%s)." % arg
|
||||
)
|
||||
)
|
||||
"Could not find the required parameter (%s).")
|
||||
% arg)
|
||||
|
||||
SQL, name = self.getSQL(gid, sid, did, data, scid, pkgid)
|
||||
# Most probably this is due to error
|
||||
|
@ -381,8 +381,7 @@ class SequenceView(PGChildNodeView, SchemaDiffObjectCompare):
|
||||
status=400,
|
||||
success=0,
|
||||
errormsg=_(
|
||||
"Could not find the required parameter (%s)." % arg
|
||||
)
|
||||
"Could not find the required parameter (%s).") % arg
|
||||
)
|
||||
|
||||
try:
|
||||
@ -590,9 +589,8 @@ class SequenceView(PGChildNodeView, SchemaDiffObjectCompare):
|
||||
status=400,
|
||||
success=0,
|
||||
errormsg=_(
|
||||
"Could not find the required parameter (%s)." % arg
|
||||
)
|
||||
)
|
||||
"Could not find the required parameter (%s).")
|
||||
% arg)
|
||||
SQL, name = self.getSQL(gid, sid, did, data, scid, seid)
|
||||
# Most probably this is due to error
|
||||
if not isinstance(SQL, (str, unicode)):
|
||||
|
@ -450,8 +450,7 @@ class SynonymView(PGChildNodeView, SchemaDiffObjectCompare):
|
||||
status=410,
|
||||
success=0,
|
||||
errormsg=gettext(
|
||||
"Could not find the required parameter (%s)." % arg
|
||||
)
|
||||
"Could not find the required parameter (%s).") % arg
|
||||
)
|
||||
|
||||
try:
|
||||
|
@ -908,8 +908,7 @@ class TableView(BaseTableView, DataTypeReader, VacuumSettings,
|
||||
status=410,
|
||||
success=0,
|
||||
errormsg=gettext(
|
||||
"Could not find the required parameter (%s)." % arg
|
||||
)
|
||||
"Could not find the required parameter (%s).") % arg
|
||||
)
|
||||
|
||||
# Parse privilege data coming from client according to database format
|
||||
@ -1578,7 +1577,7 @@ class TableView(BaseTableView, DataTypeReader, VacuumSettings,
|
||||
|
||||
return make_json_response(
|
||||
status=200,
|
||||
info=gettext("Table rows counted: %s" % count),
|
||||
info=gettext("Table rows counted: %s") % count,
|
||||
data={'total_rows': count}
|
||||
)
|
||||
|
||||
|
@ -392,9 +392,8 @@ class ColumnsView(PGChildNodeView, DataTypeReader):
|
||||
status=410,
|
||||
success=0,
|
||||
errormsg=gettext(
|
||||
"Could not find the required parameter (%s)." %
|
||||
required_args[arg]
|
||||
)
|
||||
"Could not find the required parameter (%s).") %
|
||||
required_args[arg]
|
||||
)
|
||||
|
||||
# Parse privilege data coming from client according to database format
|
||||
|
@ -511,9 +511,8 @@ class CompoundTriggerView(PGChildNodeView, SchemaDiffObjectCompare):
|
||||
status=410,
|
||||
success=0,
|
||||
errormsg=gettext(
|
||||
"Could not find the required parameter (%s)." %
|
||||
required_args[arg]
|
||||
)
|
||||
"Could not find the required parameter (%s).") %
|
||||
required_args[arg]
|
||||
)
|
||||
|
||||
# Adding parent into data dict, will be using it while creating sql
|
||||
@ -904,8 +903,8 @@ class CompoundTriggerView(PGChildNodeView, SchemaDiffObjectCompare):
|
||||
if not status:
|
||||
return internal_server_error(errormsg=res)
|
||||
if len(res['rows']) == 0:
|
||||
return gone(gettext("""Could not find the compound
|
||||
trigger in the table."""))
|
||||
return gone(gettext("Could not find the compound "
|
||||
"trigger in the table."))
|
||||
|
||||
data = dict(res['rows'][0])
|
||||
# Adding parent into data dict,
|
||||
|
@ -194,10 +194,10 @@ define('pgadmin.node.compound_trigger', [
|
||||
return false;
|
||||
},
|
||||
options: [
|
||||
{label: 'Enable', value: 'O'},
|
||||
{label: 'Enable Replica', value: 'R'},
|
||||
{label: 'Enable Always', value: 'A'},
|
||||
{label: 'Disable', value: 'D'},
|
||||
{label: gettext('Enable'), value: 'O'},
|
||||
{label: gettext('Enable Replica'), value: 'R'},
|
||||
{label: gettext('Enable Always'), value: 'A'},
|
||||
{label: gettext('Disable'), value: 'D'},
|
||||
],
|
||||
control: 'select2', select2: { allowClear: false, width: '100%' },
|
||||
},{
|
||||
|
@ -476,8 +476,7 @@ class CheckConstraintView(PGChildNodeView):
|
||||
status=400,
|
||||
success=0,
|
||||
errormsg=_(
|
||||
"Could not find the required parameter (%s)." % arg
|
||||
)
|
||||
"Could not find the required parameter (%s).") % arg
|
||||
)
|
||||
|
||||
data['schema'] = self.schema
|
||||
|
@ -496,16 +496,14 @@ class ExclusionConstraintView(PGChildNodeView):
|
||||
status=400,
|
||||
success=0,
|
||||
errormsg=_(
|
||||
"Could not find required parameter (%s)." % str(arg)
|
||||
)
|
||||
"Could not find required parameter (%s).") % str(arg)
|
||||
)
|
||||
elif isinstance(data[arg], list) and len(data[arg]) < 1:
|
||||
return make_json_response(
|
||||
status=400,
|
||||
success=0,
|
||||
errormsg=_(
|
||||
"Could not find required parameter (%s)." % str(arg)
|
||||
)
|
||||
"Could not find required parameter (%s).") % str(arg)
|
||||
)
|
||||
|
||||
data['schema'] = self.schema
|
||||
|
@ -506,16 +506,14 @@ class ForeignKeyConstraintView(PGChildNodeView):
|
||||
status=400,
|
||||
success=0,
|
||||
errormsg=_(
|
||||
"Could not find required parameter (%s)." % str(arg)
|
||||
)
|
||||
"Could not find required parameter (%s).") % str(arg)
|
||||
)
|
||||
elif isinstance(data[arg], list) and len(data[arg]) < 1:
|
||||
return make_json_response(
|
||||
status=400,
|
||||
success=0,
|
||||
errormsg=_(
|
||||
"Could not find required parameter (%s)." % str(arg)
|
||||
)
|
||||
"Could not find required parameter (%s).") % str(arg)
|
||||
)
|
||||
|
||||
data['schema'] = self.schema
|
||||
|
@ -287,9 +287,10 @@ class IndexConstraintView(PGChildNodeView):
|
||||
return res
|
||||
|
||||
if len(res) == 0:
|
||||
return gone(_("""Could not find the {} in the table.""".format(
|
||||
"primary key" if self.constraint_type == "p" else "unique key"
|
||||
)))
|
||||
return gone(_("""Could not find the {} in the table.""").format(
|
||||
_("primary key") if self.constraint_type == "p"
|
||||
else _("unique key")
|
||||
))
|
||||
|
||||
result = res
|
||||
if cid:
|
||||
@ -386,9 +387,10 @@ class IndexConstraintView(PGChildNodeView):
|
||||
return internal_server_error(errormsg=rset)
|
||||
|
||||
if len(rset['rows']) == 0:
|
||||
return gone(_("""Could not find the {} in the table.""".format(
|
||||
"primary key" if self.constraint_type == "p" else "unique key"
|
||||
)))
|
||||
return gone(_("""Could not find the {} in the table.""").format(
|
||||
_("primary key") if self.constraint_type == "p"
|
||||
else _("unique key")
|
||||
))
|
||||
|
||||
res = self.blueprint.generate_browser_node(
|
||||
rset['rows'][0]['oid'],
|
||||
@ -533,8 +535,7 @@ class IndexConstraintView(PGChildNodeView):
|
||||
success=0,
|
||||
errormsg=_(
|
||||
"Could not find at least one required "
|
||||
"parameter (%s)." % str(param)
|
||||
)
|
||||
"parameter (%s).") % str(param)
|
||||
)
|
||||
|
||||
elif arg not in data:
|
||||
@ -542,8 +543,7 @@ class IndexConstraintView(PGChildNodeView):
|
||||
status=400,
|
||||
success=0,
|
||||
errormsg=_(
|
||||
"Could not find the required parameter (%s)." % arg
|
||||
)
|
||||
"Could not find the required parameter (%s).") % arg
|
||||
)
|
||||
|
||||
data['schema'] = self.schema
|
||||
@ -824,9 +824,10 @@ class IndexConstraintView(PGChildNodeView):
|
||||
if not status:
|
||||
return internal_server_error(errormsg=res)
|
||||
if len(res['rows']) == 0:
|
||||
return gone(_("""Could not find the {} in the table.""".format(
|
||||
"primary key" if self.constraint_type == "p" else "unique key"
|
||||
)))
|
||||
return gone(_("""Could not find the {} in the table.""").format(
|
||||
_("primary key") if self.constraint_type == "p"
|
||||
else _("unique key")
|
||||
))
|
||||
|
||||
data = res['rows'][0]
|
||||
data['schema'] = self.schema
|
||||
@ -916,10 +917,10 @@ class IndexConstraintView(PGChildNodeView):
|
||||
return internal_server_error(errormsg=res)
|
||||
if len(res['rows']) == 0:
|
||||
return gone(
|
||||
_("""Could not find the {} in the table.""".format(
|
||||
"primary key" if self.constraint_type == "p"
|
||||
else "unique key"
|
||||
))
|
||||
_("""Could not find the {} in the table.""").format(
|
||||
_("primary key") if self.constraint_type == "p"
|
||||
else _("unique key")
|
||||
)
|
||||
)
|
||||
|
||||
result = res['rows'][0]
|
||||
|
@ -649,7 +649,7 @@ define('pgadmin.node.primary_key', [
|
||||
|
||||
if ((_.isUndefined(index) || String(index).replace(/^\s+|\s+$/g, '') == '') &&
|
||||
(_.isUndefined(columns) || _.isNull(columns) || columns.length < 1)) {
|
||||
var msg = gettext('Please specify columns for %s', gettext('Primary key'));
|
||||
var msg = gettext('Please specify columns for %s.', gettext('Primary key'));
|
||||
this.errorModel.set('columns', msg);
|
||||
return msg;
|
||||
}
|
||||
|
@ -638,7 +638,7 @@ define('pgadmin.node.unique_constraint', [
|
||||
|
||||
if ((_.isUndefined(index) || String(index).replace(/^\s+|\s+$/g, '') == '') &&
|
||||
(_.isUndefined(columns) || _.isNull(columns) || columns.length < 1)) {
|
||||
var msg = gettext('Please specify columns for %s', gettext('Unique constraint'));
|
||||
var msg = gettext('Please specify columns for %s.', gettext('Unique constraint'));
|
||||
this.errorModel.set('columns', msg);
|
||||
return msg;
|
||||
}
|
||||
|
@ -576,11 +576,12 @@ class IndexesView(PGChildNodeView, SchemaDiffObjectCompare):
|
||||
for arg in required_args:
|
||||
err_msg = None
|
||||
if arg == 'columns' and len(data['columns']) < 1:
|
||||
err_msg = "You must provide one or more column to create index"
|
||||
err_msg = gettext("You must provide one or more column to "
|
||||
"create index.")
|
||||
|
||||
if arg not in data:
|
||||
err_msg = "Could not find the required parameter (%s)." % \
|
||||
required_args[arg]
|
||||
err_msg = gettext("Could not find the required parameter (%s)"
|
||||
".") % required_args[arg]
|
||||
# Check if we have at least one column
|
||||
if err_msg is not None:
|
||||
return make_json_response(
|
||||
|
@ -60,12 +60,12 @@ function(
|
||||
pgBrowser.add_menus([{
|
||||
name: 'truncate_table', node: 'partition', module: this,
|
||||
applies: ['object', 'context'], callback: 'truncate_table',
|
||||
category: 'Truncate', priority: 3, label: gettext('Truncate'),
|
||||
category: gettext('Truncate'), priority: 3, label: gettext('Truncate'),
|
||||
icon: 'fa fa-eraser', enable : 'canCreate',
|
||||
},{
|
||||
name: 'truncate_table_cascade', node: 'partition', module: this,
|
||||
applies: ['object', 'context'], callback: 'truncate_table_cascade',
|
||||
category: 'Truncate', priority: 3, label: gettext('Truncate Cascade'),
|
||||
category: gettext('Truncate'), priority: 3, label: gettext('Truncate Cascade'),
|
||||
icon: 'fa fa-eraser', enable : 'canCreate',
|
||||
},{
|
||||
// To enable/disable all triggers for the table
|
||||
|
@ -196,10 +196,10 @@ define('pgadmin.node.trigger', [
|
||||
return false;
|
||||
},
|
||||
options: [
|
||||
{label: 'Enable', value: 'O'},
|
||||
{label: 'Enable Replica', value: 'R'},
|
||||
{label: 'Enable Always', value: 'A'},
|
||||
{label: 'Disable', value: 'D'},
|
||||
{label: gettext('Enable'), value: 'O'},
|
||||
{label: gettext('Enable Replica'), value: 'R'},
|
||||
{label: gettext('Enable Always'), value: 'A'},
|
||||
{label: gettext('Disable'), value: 'D'},
|
||||
],
|
||||
control: 'select2', select2: { allowClear: false, width: '100%' },
|
||||
},{
|
||||
|
@ -946,9 +946,8 @@ class TypeView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare):
|
||||
status=410,
|
||||
success=0,
|
||||
errormsg=gettext(
|
||||
"Could not find the required parameter (%s)." %
|
||||
required_args[arg]
|
||||
)
|
||||
"Could not find the required parameter (%s).") %
|
||||
required_args[arg]
|
||||
)
|
||||
# Additional checks goes here
|
||||
# If type is range then check if subtype is defined or not
|
||||
|
@ -218,9 +218,9 @@ define('pgadmin.node.type', [
|
||||
else if (this.get('is_tlength')
|
||||
&& !_.isUndefined(this.get('tlength'))) {
|
||||
if (this.get('tlength') < this.get('min_val'))
|
||||
errmsg = gettext('Length/Precision should not be less than %s', this.get('min_val'));
|
||||
errmsg = gettext('Length/Precision should not be less than %s.', this.get('min_val'));
|
||||
if (this.get('tlength') > this.get('max_val') )
|
||||
errmsg = gettext('Length/Precision should not be greater than %s', this.get('max_val'));
|
||||
errmsg = gettext('Length/Precision should not be greater than %s.', this.get('max_val'));
|
||||
// If we have any error set then throw it to user
|
||||
if(errmsg) {
|
||||
this.errorModel.set('tlength', errmsg);
|
||||
@ -231,9 +231,9 @@ define('pgadmin.node.type', [
|
||||
else if (this.get('is_precision')
|
||||
&& !_.isUndefined(this.get('precision'))) {
|
||||
if (this.get('precision') < this.get('min_val'))
|
||||
errmsg = gettext('Scale should not be less than %s', this.get('min_val'));
|
||||
errmsg = gettext('Scale should not be less than %s.', this.get('min_val'));
|
||||
if (this.get('precision') > this.get('max_val'))
|
||||
errmsg = gettext('Scale should not be greater than %s', this.get('max_val'));
|
||||
errmsg = gettext('Scale should not be greater than %s.', this.get('max_val'));
|
||||
// If we have any error set then throw it to user
|
||||
if(errmsg) {
|
||||
this.errorModel.set('precision', errmsg);
|
||||
|
@ -493,8 +493,7 @@ class ViewNode(PGChildNodeView, VacuumSettings, SchemaDiffObjectCompare):
|
||||
status=410,
|
||||
success=0,
|
||||
errormsg=gettext(
|
||||
"Could not find the required parameter (%s)." % arg
|
||||
)
|
||||
"Could not find the required parameter (%s).") % arg
|
||||
)
|
||||
try:
|
||||
SQL, nameOrError = self.getSQL(gid, sid, did, scid, data)
|
||||
|
@ -190,7 +190,7 @@ define('pgadmin.node.database', [
|
||||
|
||||
Alertify.confirm(
|
||||
gettext('Disconnect the database'),
|
||||
pgadminUtils.sprintf(gettext('Are you sure you want to disconnect the database - %s?'), d.label),
|
||||
gettext('Are you sure you want to disconnect the database - %s?', d.label),
|
||||
function() {
|
||||
var data = d;
|
||||
$.ajax({
|
||||
@ -228,7 +228,11 @@ define('pgadmin.node.database', [
|
||||
t.unload(i);
|
||||
});
|
||||
},
|
||||
function() { return true; });
|
||||
function() { return true; }
|
||||
).set('labels', {
|
||||
ok: gettext('Yes'),
|
||||
cancel: gettext('No'),
|
||||
});
|
||||
|
||||
return false;
|
||||
},
|
||||
|
@ -284,8 +284,7 @@ SELECT EXISTS(
|
||||
status=410,
|
||||
success=0,
|
||||
errormsg=_(
|
||||
"Could not find the required parameter (%s)." % arg
|
||||
)
|
||||
"Could not find the required parameter (%s).") % arg
|
||||
)
|
||||
|
||||
status, res = self.conn.execute_void('BEGIN')
|
||||
|
@ -305,7 +305,7 @@ define('pgadmin.node.pga_jobstep', [
|
||||
!_.isUndefined(val) && !_.isNull(val) &&
|
||||
String(val).replace(/^\s+|\s+$/g, '') == ''
|
||||
) {
|
||||
msg = gettext('Please select valid on error option .');
|
||||
msg = gettext('Please select valid on error option.');
|
||||
this.errorModel.set('jstonerror', msg);
|
||||
} else {
|
||||
this.errorModel.unset('jstonerror');
|
||||
|
@ -363,8 +363,7 @@ class ResourceGroupView(NodeView):
|
||||
status=410,
|
||||
success=0,
|
||||
errormsg=gettext(
|
||||
"Could not find the required parameter (%s)." % arg
|
||||
)
|
||||
"Could not find the required parameter (%s).") % arg
|
||||
)
|
||||
try:
|
||||
# Below logic will create new resource group
|
||||
|
@ -203,7 +203,7 @@ function(gettext, _, $, Backbone, Backform, Backgrid, Alertify, pgAdmin, pgNode)
|
||||
} else if (_.isUndefined(this.get('value')) ||
|
||||
_.isNull(this.get('value')) ||
|
||||
String(this.get('value')).replace(/^\s+|\s+$/g, '') == '') {
|
||||
msg = ('Please enter a value for the parameter.');
|
||||
msg = gettext('Please enter a value for the parameter.');
|
||||
this.errorModel.set('value', msg);
|
||||
this.errorModel.unset('name');
|
||||
} else {
|
||||
|
@ -295,9 +295,8 @@ class TablespaceView(PGChildNodeView):
|
||||
status=410,
|
||||
success=0,
|
||||
errormsg=gettext(
|
||||
"Could not find the required parameter (%s)." %
|
||||
required_args[arg]
|
||||
)
|
||||
"Could not find the required parameter (%s).") %
|
||||
required_args[arg]
|
||||
)
|
||||
|
||||
# To format privileges coming from client
|
||||
|
@ -261,7 +261,7 @@ define('pgadmin.node.tablespace', [
|
||||
self.__internal.buttons[2].element.disabled = false;
|
||||
} else {
|
||||
self.__internal.buttons[2].element.disabled = true;
|
||||
this.errorModel.set('tblspc', gettext('Please select tablespace'));
|
||||
this.errorModel.set('tblspc', gettext('Please select tablespace.'));
|
||||
}
|
||||
});
|
||||
},
|
||||
|
@ -74,7 +74,7 @@ class ServerType(object):
|
||||
return self.spriority
|
||||
|
||||
def __str__(self):
|
||||
return "Type: {0}, Description:{1}, Priority: {2}".format(
|
||||
return _("Type: {0}, Description: {1}, Priority: {2}").format(
|
||||
self.stype, self.desc, self.spriority
|
||||
)
|
||||
|
||||
@ -115,9 +115,9 @@ class ServerType(object):
|
||||
res = 'psql'
|
||||
else:
|
||||
raise Exception(
|
||||
_("Could not find the utility for the operation '%s'".format(
|
||||
_("Could not find the utility for the operation '%s'").format(
|
||||
operation
|
||||
))
|
||||
)
|
||||
)
|
||||
bin_path = self.utility_path.get()
|
||||
if "$DIR" in bin_path:
|
||||
|
@ -623,7 +623,7 @@ define('pgadmin.browser', [
|
||||
|
||||
Alertify.confirm(gettext('Reset Master Password'),
|
||||
gettext('This will remove all the saved passwords. This will also remove established connections to '
|
||||
+ 'the server and you may need to reconnect again. Do you wish to continue ?'),
|
||||
+ 'the server and you may need to reconnect again. Do you wish to continue?'),
|
||||
function() {
|
||||
/* If user clicks Yes */
|
||||
self.reset_master_password();
|
||||
|
@ -179,7 +179,7 @@ define([
|
||||
<div class="custom-control custom-checkbox custom-checkbox-no-label">
|
||||
<input tabindex="-1" type="checkbox" class="custom-control-input" id="${id}" ${disabled?'disabled':''}/>
|
||||
<label class="custom-control-label" for="${id}">
|
||||
<span class="sr-only">Select<span>
|
||||
<span class="sr-only">` + gettext('Select') + `<span>
|
||||
</label>
|
||||
</div>
|
||||
`);
|
||||
|
@ -761,9 +761,7 @@ define('pgadmin.browser.node', [
|
||||
obj = pgBrowser.Nodes[d._type];
|
||||
var objName = d.label;
|
||||
|
||||
var msg, title, drop_label;
|
||||
|
||||
if (obj.dropAsRemove) drop_label = 'Remove'; else drop_label = 'Drop';
|
||||
var msg, title;
|
||||
|
||||
if (input.url == 'delete') {
|
||||
|
||||
@ -780,8 +778,13 @@ define('pgadmin.browser.node', [
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
msg = gettext('Are you sure you want to %s %s "%s"?', drop_label.toLowerCase(), obj.label.toLowerCase(), d.label);
|
||||
title = gettext('%s %s?', drop_label, obj.label);
|
||||
if (obj.dropAsRemove) {
|
||||
msg = gettext('Are you sure you want to remove %s "%s"?', obj.label.toLowerCase(), d.label);
|
||||
title = gettext('Remove %s?', obj.label);
|
||||
} else {
|
||||
msg = gettext('Are you sure you want to drop %s "%s"?', obj.label.toLowerCase(), d.label);
|
||||
title = gettext('Drop %s?', obj.label);
|
||||
}
|
||||
|
||||
if (!(_.isFunction(obj.canDrop) ?
|
||||
obj.canDrop.apply(obj, [d, i]) : obj.canDrop)) {
|
||||
@ -822,7 +825,11 @@ define('pgadmin.browser.node', [
|
||||
|
||||
});
|
||||
},
|
||||
null).show();
|
||||
null
|
||||
).set('labels', {
|
||||
ok: gettext('Yes'),
|
||||
cancel: gettext('No'),
|
||||
}).show();
|
||||
},
|
||||
// Callback for creating script(s) & opening them in Query editor
|
||||
show_script: function(args, item) {
|
||||
|
@ -3,7 +3,7 @@
|
||||
<div style="position: fixed; top: 70px; right: 20px; width: 400px; z-index: 9999">
|
||||
{% for category, message in messages %}
|
||||
<div class="alert alert-{{ category }} alert-dismissible" role="alert">
|
||||
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span
|
||||
<button type="button" class="close" data-dismiss="alert" aria-label="{{ _('Close') }}"><span
|
||||
aria-hidden="true">×</span></button>
|
||||
{{ message|safe }}
|
||||
</div>
|
||||
|
@ -303,8 +303,8 @@ class NodeView(with_metaclass(MethodViewType, View)):
|
||||
status=406,
|
||||
success=0,
|
||||
errormsg=gettext(
|
||||
'Unimplemented method ({0}) for this url ({1})'.format(
|
||||
meth, flask.request.path)
|
||||
'Unimplemented method ({0}) for this url ({1})').format(
|
||||
meth, flask.request.path
|
||||
)
|
||||
)
|
||||
|
||||
|
@ -1448,7 +1448,7 @@ define('pgadmin.dashboard', [
|
||||
pg_version = this.get('postgres_version') || null,
|
||||
cell_action = this.get('cell_action') || null,
|
||||
is_cancel_session = cell_action === 'cancel',
|
||||
txtAction = is_cancel_session ? gettext('cancel') : gettext('terminate');
|
||||
txtMessage;
|
||||
|
||||
// With PG10, We have background process showing on dashboard
|
||||
// We will not allow user to cancel them as they will fail with error
|
||||
@ -1456,20 +1456,22 @@ define('pgadmin.dashboard', [
|
||||
|
||||
// Background processes do not have database field populated
|
||||
if (pg_version && pg_version >= 100000 && !m.get('datname')) {
|
||||
Alertify.info(
|
||||
gettext('You cannot ') +
|
||||
txtAction +
|
||||
gettext(' background worker processes.')
|
||||
);
|
||||
if (is_cancel_session) {
|
||||
txtMessage = gettext('You cannot cancel background worker processes.');
|
||||
} else {
|
||||
txtMessage = gettext('You cannot terminate background worker processes.');
|
||||
}
|
||||
Alertify.info(txtMessage);
|
||||
return false;
|
||||
// If it is the last active connection on maintenance db then error out
|
||||
} else if (maintenance_database == m.get('datname') &&
|
||||
m.get('state') == 'active' && active_sessions.length == 1) {
|
||||
Alertify.error(
|
||||
gettext('You are not allowed to ') +
|
||||
txtAction +
|
||||
gettext(' the main active session.')
|
||||
);
|
||||
if (is_cancel_session) {
|
||||
txtMessage = gettext('You are not allowed to cancel the main active session.');
|
||||
} else {
|
||||
txtMessage = gettext('You are not allowed to terminate the main active session.');
|
||||
}
|
||||
Alertify.error(txtMessage);
|
||||
return false;
|
||||
} else if (is_cancel_session && m.get('state') == 'idle') {
|
||||
// If this session is already idle then do nothing
|
||||
@ -1485,11 +1487,12 @@ define('pgadmin.dashboard', [
|
||||
return true;
|
||||
} else {
|
||||
// Do not allow to cancel someone else session to non-super user
|
||||
Alertify.error(
|
||||
gettext('Superuser privileges are required to ') +
|
||||
txtAction +
|
||||
gettext(' another users query.')
|
||||
);
|
||||
if (is_cancel_session) {
|
||||
txtMessage = gettext('Superuser privileges are required to cancel another users query.');
|
||||
} else {
|
||||
txtMessage = gettext('Superuser privileges are required to terminate another users query.');
|
||||
}
|
||||
Alertify.error(txtMessage);
|
||||
return false;
|
||||
}
|
||||
},
|
||||
|
@ -87,7 +87,7 @@
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text fa fa-search" id="labelSearch"></span>
|
||||
</div>
|
||||
<input type="search" class="form-control" id="txtGridSearch" placeholder="{{ _('Search') }}" aria-label="Search" aria-describedby="labelSearch">
|
||||
<input type="search" class="form-control" id="txtGridSearch" placeholder="{{ _('Search') }}" aria-label="{{ _('Search') }}" aria-describedby="labelSearch">
|
||||
</div>
|
||||
<button id="btn_refresh" type="button" class="btn btn-secondary btn-navtab-inline" title="{{ _('Refresh') }}" aria-label="{{ _('Refresh') }}">
|
||||
<span class="fa fa-refresh" aria-hidden="true"></span>
|
||||
|
@ -367,23 +367,23 @@ class Filemanager(object):
|
||||
capabilities = ['select_file', 'rename', 'upload', 'create']
|
||||
files_only = True
|
||||
folders_only = False
|
||||
title = "Select File"
|
||||
title = gettext("Select File")
|
||||
elif fm_type == 'select_folder':
|
||||
capabilities = ['select_folder', 'rename', 'create']
|
||||
files_only = False
|
||||
folders_only = True
|
||||
title = "Select Folder"
|
||||
title = gettext("Select Folder")
|
||||
elif fm_type == 'create_file':
|
||||
capabilities = ['select_file', 'rename', 'create']
|
||||
files_only = True
|
||||
folders_only = False
|
||||
title = "Create File"
|
||||
title = gettext("Create File")
|
||||
elif fm_type == 'storage_dialog':
|
||||
capabilities = ['select_folder', 'select_file', 'download',
|
||||
'rename', 'delete', 'upload', 'create']
|
||||
files_only = True
|
||||
folders_only = False
|
||||
title = "Storage Manager"
|
||||
title = gettext("Storage Manager")
|
||||
|
||||
# get last visited directory, if not present then traverse in reverse
|
||||
# order to find closest parent directory
|
||||
@ -561,7 +561,7 @@ class Filemanager(object):
|
||||
Filemanager.check_access_permission(dir, path)
|
||||
except Exception as e:
|
||||
Filemanager.resume_windows_warning()
|
||||
err_msg = u"Error: {0}".format(e)
|
||||
err_msg = gettext(u"Error: {0}").format(e)
|
||||
files = {
|
||||
'Code': 0,
|
||||
'Error': err_msg
|
||||
@ -601,7 +601,7 @@ class Filemanager(object):
|
||||
Filemanager.resume_windows_warning()
|
||||
return {
|
||||
'Code': 0,
|
||||
'Error': gettext(u"'{0}' file does not exist.".format(path))
|
||||
'Error': gettext(u"'{0}' file does not exist.").format(path)
|
||||
}
|
||||
|
||||
user_dir = path
|
||||
@ -664,9 +664,9 @@ class Filemanager(object):
|
||||
Filemanager.resume_windows_warning()
|
||||
if (hasattr(e, 'strerror') and
|
||||
e.strerror == gettext('Permission denied')):
|
||||
err_msg = u"Error: {0}".format(e.strerror)
|
||||
err_msg = gettext(u"Error: {0}").format(e.strerror)
|
||||
else:
|
||||
err_msg = u"Error: {0}".format(e)
|
||||
err_msg = gettext(u"Error: {0}").format(e)
|
||||
files = {
|
||||
'Code': 0,
|
||||
'Error': err_msg
|
||||
@ -699,7 +699,7 @@ class Filemanager(object):
|
||||
# Do not allow user to access outside his storage dir in server mode.
|
||||
if not orig_path.startswith(dir):
|
||||
raise Exception(
|
||||
gettext(u"Access denied ({0})".format(path)))
|
||||
gettext(u"Access denied ({0})").format(path))
|
||||
return True
|
||||
|
||||
@staticmethod
|
||||
@ -759,7 +759,7 @@ class Filemanager(object):
|
||||
'Filename': split_path(path)[-1],
|
||||
'FileType': '',
|
||||
'Path': path,
|
||||
'Error': gettext(u"Error: {0}".format(e)),
|
||||
'Error': gettext(u"Error: {0}").format(e),
|
||||
'Code': 0,
|
||||
'Info': '',
|
||||
'Properties': {
|
||||
@ -791,8 +791,7 @@ class Filemanager(object):
|
||||
|
||||
if not path_exists(orig_path):
|
||||
thefile['Error'] = gettext(
|
||||
u"'{0}' file does not exist.".format(path)
|
||||
)
|
||||
u"'{0}' file does not exist.").format(path)
|
||||
thefile['Code'] = -1
|
||||
return thefile
|
||||
|
||||
@ -844,7 +843,7 @@ class Filemanager(object):
|
||||
Filemanager.check_access_permission(dir, new)
|
||||
except Exception as e:
|
||||
res = {
|
||||
'Error': gettext(u"Error: {0}".format(e)),
|
||||
'Error': gettext(u"Error: {0}").format(e),
|
||||
'Code': 0
|
||||
}
|
||||
return res
|
||||
@ -925,7 +924,7 @@ class Filemanager(object):
|
||||
os.remove(orig_path)
|
||||
except Exception as e:
|
||||
code = 0
|
||||
err_msg = u"Error: {0}".format(e.strerror)
|
||||
err_msg = gettext(u"Error: {0}").format(e.strerror)
|
||||
|
||||
result = {
|
||||
'Path': path,
|
||||
@ -969,14 +968,14 @@ class Filemanager(object):
|
||||
f.write(data)
|
||||
except Exception as e:
|
||||
code = 0
|
||||
err_msg = u"Error: {0}".format(
|
||||
e.strerror if hasattr(e, 'strerror') else u'Unknown')
|
||||
err_msg = gettext(u"Error: {0}").format(
|
||||
e.strerror if hasattr(e, 'strerror') else gettext(u'Unknown'))
|
||||
|
||||
try:
|
||||
Filemanager.check_access_permission(dir, path)
|
||||
except Exception as e:
|
||||
res = {
|
||||
'Error': gettext(u"Error: {0}".format(e)),
|
||||
'Error': gettext(u"Error: {0}").format(e),
|
||||
'Code': 0
|
||||
}
|
||||
return res
|
||||
@ -1013,9 +1012,9 @@ class Filemanager(object):
|
||||
except Exception as e:
|
||||
code = 0
|
||||
if hasattr(e, 'strerror'):
|
||||
err_msg = u"Error: {0}".format(e.strerror)
|
||||
err_msg = gettext(u"Error: {0}").format(e.strerror)
|
||||
else:
|
||||
err_msg = u"Error: {0}".format(e)
|
||||
err_msg = gettext(u"Error: {0}").format(e)
|
||||
|
||||
result = {
|
||||
'Path': path,
|
||||
@ -1098,13 +1097,13 @@ class Filemanager(object):
|
||||
# we don't want to expose real path of file
|
||||
# so only show error message.
|
||||
if ex.strerror == 'Permission denied':
|
||||
err_msg = u"Error: {0}".format(ex.strerror)
|
||||
err_msg = gettext(u"Error: {0}").format(ex.strerror)
|
||||
else:
|
||||
err_msg = u"Error: {0}".format(str(ex))
|
||||
err_msg = gettext(u"Error: {0}").format(str(ex))
|
||||
|
||||
except Exception as ex:
|
||||
status = False
|
||||
err_msg = u"Error: {0}".format(str(ex))
|
||||
err_msg = gettext(u"Error: {0}").format(str(ex))
|
||||
|
||||
# Remove root storage path from error message
|
||||
# when running in Server mode
|
||||
@ -1150,14 +1149,14 @@ class Filemanager(object):
|
||||
os.mkdir(newPath)
|
||||
except Exception as e:
|
||||
code = 0
|
||||
err_msg = u"Error: {0}".format(e.strerror)
|
||||
err_msg = gettext(u"Error: {0}").format(e.strerror)
|
||||
else:
|
||||
newPath, newName = self.getNewName(dir, path, name)
|
||||
try:
|
||||
os.mkdir(newPath)
|
||||
except Exception as e:
|
||||
code = 0
|
||||
err_msg = u"Error: {0}".format(e.strerror)
|
||||
err_msg = gettext(u"Error: {0}").format(e.strerror)
|
||||
|
||||
result = {
|
||||
'Parent': path,
|
||||
@ -1191,7 +1190,7 @@ class Filemanager(object):
|
||||
dir, u"{}{}".format(path, path)
|
||||
)
|
||||
except Exception as e:
|
||||
resp = Response(gettext(u"Error: {0}".format(e)))
|
||||
resp = Response(gettext(u"Error: {0}").format(e))
|
||||
resp.headers['Content-Disposition'] = \
|
||||
'attachment; filename=' + name
|
||||
return resp
|
||||
@ -1208,7 +1207,7 @@ class Filemanager(object):
|
||||
try:
|
||||
Filemanager.check_access_permission(dir, path)
|
||||
except Exception as e:
|
||||
err_msg = u"Error: {0}".format(e)
|
||||
err_msg = gettext(u"Error: {0}").format(e)
|
||||
res['Code'] = 0
|
||||
res['Error'] = err_msg
|
||||
return res
|
||||
|
@ -22,7 +22,7 @@ module.exports = Alertify.dialog('fileSelectionDlg', function() {
|
||||
// Set title and button name
|
||||
var self = this;
|
||||
if (_.isUndefined(params['dialog_title'])) {
|
||||
params['dialog_title'] = 'Select file';
|
||||
params['dialog_title'] = gettext('Select file');
|
||||
}
|
||||
self.dialog_type = params['dialog_type'];
|
||||
|
||||
|
@ -9,6 +9,7 @@
|
||||
|
||||
import $ from 'jquery';
|
||||
import Backbone from 'backbone';
|
||||
import gettext from 'sources/gettext';
|
||||
|
||||
// Backbone model for other statistics
|
||||
let StatisticsModel = Backbone.Model.extend({
|
||||
@ -34,7 +35,7 @@ let StatisticsModel = Backbone.Model.extend({
|
||||
});
|
||||
|
||||
if (Object.keys(jit_stats).length > 0){
|
||||
tooltip.append('<tr><td class="label explain-tooltip">JIT:</td></tr>');
|
||||
tooltip.append('<tr><td class="label explain-tooltip">' + gettext('JIT:') + '</td></tr>');
|
||||
_.each(jit_stats, function(value, key) {
|
||||
key = _.escape(key);
|
||||
value = _.escape(value);
|
||||
@ -48,7 +49,7 @@ let StatisticsModel = Backbone.Model.extend({
|
||||
}
|
||||
|
||||
if (Object.keys(triggers_stats).length > 0){
|
||||
tooltip.append('<tr><td class="label explain-tooltip">Triggers:</td></tr>');
|
||||
tooltip.append('<tr><td class="label explain-tooltip">' + gettext('Triggers:') + '</td></tr>');
|
||||
_.each(triggers_stats, function(triggers, key_id) {
|
||||
if (triggers instanceof Object) {
|
||||
_.each(triggers, function(value, key) {
|
||||
@ -87,7 +88,7 @@ let StatisticsModel = Backbone.Model.extend({
|
||||
}
|
||||
|
||||
if (Object.keys(summary).length > 0){
|
||||
tooltip.append('<tr><td class="label explain-tooltip">Summary:</td></tr>');
|
||||
tooltip.append('<tr><td class="label explain-tooltip">' + gettext('Summary:') + '</td></tr>');
|
||||
_.each(summary, function(value, key) {
|
||||
key = _.escape(key);
|
||||
value = _.escape(value);
|
||||
|
@ -8,7 +8,6 @@
|
||||
//////////////////////////////////////////////////////////////
|
||||
|
||||
import gettext from '../gettext';
|
||||
import {sprintf} from 'sources/utils';
|
||||
import {DialogFactory} from './dialog_factory';
|
||||
import Backform from '../backform.pgadmin';
|
||||
import {getTreeNodeHierarchyFromIdentifier} from '../tree/pgadmin_tree_node';
|
||||
@ -133,7 +132,7 @@ export class Dialog {
|
||||
} else {
|
||||
this.alertify.alert(
|
||||
gettext(this.errorAlertTitle),
|
||||
sprintf(gettext('Failed to load preference %s of module %s'), preference_name, module)
|
||||
gettext('Failed to load preference %s of module %s', preference_name, module)
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
@ -586,7 +586,7 @@ define([
|
||||
'<span class="<%=controlLabelClassName%>"><%=label%></span>',
|
||||
'<label class="sr-value sr-only" for="<%=cId%>"></label>',
|
||||
'<div class="<%=controlsClassName%> <%=extraClasses.join(\' \')%>">',
|
||||
' <input tabindex="-1" type="checkbox" aria-hidden="true" aria-label="Toggle button" data-style="quick" data-toggle="toggle"',
|
||||
' <input tabindex="-1" type="checkbox" aria-hidden="true" aria-label="' + gettext('Toggle button') + '" data-style="quick" data-toggle="toggle"',
|
||||
' data-size="<%=options.size%>" data-height="<%=options.height%>" ',
|
||||
' data-on="<%=options.onText%>" data-off="<%=options.offText%>" ',
|
||||
' data-onstyle="<%=options.onColor%>" data-offstyle="<%=options.offColor%>" data-width="<%=options.width%>" ',
|
||||
@ -2723,7 +2723,7 @@ define([
|
||||
'<div class="input-group">',
|
||||
'<input type="<%=type%>" id="<%=cId%>" class="form-control <%=extraClasses.join(\' \')%>" name="<%=name%>" min="<%=min%>" max="<%=max%>"maxlength="<%=maxlength%>" value="<%-value%>" placeholder="<%-placeholder%>" <%=disabled ? "disabled" : ""%> <%=readonly ? "readonly aria-readonly=true" : ""%> <%=required ? "required" : ""%> />',
|
||||
'<div class="input-group-append">',
|
||||
'<button class="btn btn-secondary fa fa-ellipsis-h select_item" <%=disabled ? "disabled" : ""%> <%=readonly ? "disabled" : ""%> aria-hidden="true" aria-label="Select file" title="Select file"></button>',
|
||||
'<button class="btn btn-secondary fa fa-ellipsis-h select_item" <%=disabled ? "disabled" : ""%> <%=readonly ? "disabled" : ""%> aria-hidden="true" aria-label="' + gettext('Select file') + '" title="' + gettext('Select file') + '"></button>',
|
||||
'</div>',
|
||||
'</div>',
|
||||
'<% if (helpMessage && helpMessage.length) { %>',
|
||||
|
@ -59,7 +59,7 @@ export function initialize(pgBrowser, gettext) {
|
||||
mode: ['properties'],
|
||||
}, {
|
||||
id: 'format_option',
|
||||
label: gettext('Format Optionos'),
|
||||
label: gettext('Format Options'),
|
||||
type: 'text',
|
||||
mode: ['properties'],
|
||||
}, {
|
||||
|
@ -9,7 +9,6 @@
|
||||
|
||||
import {calculateQueryRunTime} from './calculate_query_run_time';
|
||||
import gettext from '../gettext';
|
||||
import {sprintf} from 'sources/utils';
|
||||
|
||||
function hasResultsToDisplay(res) {
|
||||
return res.colinfo != null;
|
||||
@ -34,8 +33,7 @@ export function callRenderAfterPoll(sqlEditor, alertify, res) {
|
||||
sqlEditor.total_time = calculateQueryRunTime(
|
||||
sqlEditor.query_start_time,
|
||||
sqlEditor.query_end_time);
|
||||
const msg = sprintf(
|
||||
gettext('Query returned successfully in %s.'), sqlEditor.total_time);
|
||||
const msg = gettext('Query returned successfully in %s.', sqlEditor.total_time);
|
||||
if (res.result)
|
||||
res.result += '\n\n' + msg;
|
||||
else
|
||||
|
@ -198,7 +198,7 @@ class ExecuteQuery {
|
||||
}
|
||||
|
||||
initializeExecutionOnSqlEditor(sqlStatement) {
|
||||
this.loadingScreen.show('Running query...');
|
||||
this.loadingScreen.show(gettext('Running query...'));
|
||||
|
||||
$('#btn-flash').prop('disabled', true);
|
||||
$('#btn-download').prop('disabled', true);
|
||||
|
@ -390,7 +390,7 @@ function parseData(items, columns, columnIndex, GeometryLib) {
|
||||
}
|
||||
|
||||
if (mixedSRID) {
|
||||
infoList.push(gettext('Geometries with non-SRID') + selectedSRID + ' not rendered.');
|
||||
infoList.push(gettext('Geometries with non-SRID %s not rendered.', selectedSRID));
|
||||
}
|
||||
|
||||
return {
|
||||
|
@ -115,18 +115,10 @@ let queryToolNotifications = {
|
||||
for (let i in notify_messages) {
|
||||
let notify_msg = '';
|
||||
if (notify_messages[i].payload != '') {
|
||||
notify_msg = gettext('Asynchronous notification "')
|
||||
+ notify_messages[i].channel
|
||||
+ gettext('" with payload "')
|
||||
+ notify_messages[i].payload
|
||||
+ gettext('" received from server process with PID ')
|
||||
+ notify_messages[i].pid;
|
||||
notify_msg = gettext('Asynchronous notification "%s" with payload "%s" received from server process with PID %s', notify_messages[i].channel, notify_messages[i].payload, notify_messages[i].pid);
|
||||
}
|
||||
else {
|
||||
notify_msg = gettext('Asynchronous notification "')
|
||||
+ notify_messages[i].channel
|
||||
+ gettext('" received from server process with PID ')
|
||||
+ notify_messages[i].pid;
|
||||
notify_msg = gettext('Asynchronous notification "%s" received from server process with PID %s', notify_messages[i].channel, notify_messages[i].pid);
|
||||
}
|
||||
|
||||
Alertify.info(notify_msg);
|
||||
|
@ -90,7 +90,7 @@ function updateUIPreferences(sqlEditor) {
|
||||
.attr('accesskey', shortcut_key(preferences.btn_conn_status))
|
||||
.find('i')
|
||||
.attr('title',
|
||||
shortcut_accesskey_title('Connection status (click for details)',
|
||||
shortcut_accesskey_title(gettext('Connection status (click for details)'),
|
||||
preferences.btn_conn_status));
|
||||
|
||||
/* Accessed using ctrl,atl,shift and key */
|
||||
|
@ -15,7 +15,7 @@ import axios from 'axios/index';
|
||||
|
||||
export class BackupDialog extends Dialog {
|
||||
constructor(pgBrowser, $, alertify, BackupModel, backform = Backform) {
|
||||
super('Backup Error',
|
||||
super(gettext('Backup Error'),
|
||||
'<div class=\'backup_dialog\'></div>',
|
||||
pgBrowser, $, alertify, BackupModel, backform
|
||||
);
|
||||
|
@ -56,7 +56,7 @@ export function showDataGrid(
|
||||
|
||||
$.get(url_for('datagrid.filter'),
|
||||
function(data) {
|
||||
alertify.filterDialog(`Data Filter - ${queryToolTitle}`, data, validateUrl, preferences, okCallback)
|
||||
alertify.filterDialog(gettext('Data Filter - %s', queryToolTitle), data, validateUrl, preferences, okCallback)
|
||||
.resizeTo(pgBrowser.stdW.sm,pgBrowser.stdH.sm);
|
||||
}
|
||||
);
|
||||
|
@ -891,8 +891,8 @@ def start_debugger_listener(trans_id):
|
||||
data={
|
||||
'status': False,
|
||||
'result': gettext(
|
||||
'Not connected to server or connection with the server has'
|
||||
'been closed.'
|
||||
'Not connected to server or connection with the server '
|
||||
'has been closed.'
|
||||
)
|
||||
}
|
||||
)
|
||||
|
@ -1909,33 +1909,33 @@ define([
|
||||
|
||||
/* Update the shortcuts of the buttons */
|
||||
self.toolbarView.$el.find('#btn-step-into')
|
||||
.attr('title', keyboardShortcuts.shortcut_accesskey_title('Step into',self.preferences.btn_step_into))
|
||||
.attr('aria-label', keyboardShortcuts.shortcut_accesskey_title('Step into',self.preferences.btn_step_into))
|
||||
.attr('title', keyboardShortcuts.shortcut_accesskey_title(gettext('Step into'),self.preferences.btn_step_into))
|
||||
.attr('aria-label', keyboardShortcuts.shortcut_accesskey_title(gettext('Step into'),self.preferences.btn_step_into))
|
||||
.attr('accesskey', keyboardShortcuts.shortcut_key(self.preferences.btn_step_into));
|
||||
|
||||
self.toolbarView.$el.find('#btn-step-over')
|
||||
.attr('title', keyboardShortcuts.shortcut_accesskey_title('Step over',self.preferences.btn_step_over))
|
||||
.attr('aria-label', keyboardShortcuts.shortcut_accesskey_title('Step over',self.preferences.btn_step_over))
|
||||
.attr('title', keyboardShortcuts.shortcut_accesskey_title(gettext('Step over'),self.preferences.btn_step_over))
|
||||
.attr('aria-label', keyboardShortcuts.shortcut_accesskey_title(gettext('Step over'),self.preferences.btn_step_over))
|
||||
.attr('accesskey', keyboardShortcuts.shortcut_key(self.preferences.btn_step_over));
|
||||
|
||||
self.toolbarView.$el.find('#btn-continue')
|
||||
.attr('title', keyboardShortcuts.shortcut_accesskey_title('Continue/Start',self.preferences.btn_start))
|
||||
.attr('aria-label', keyboardShortcuts.shortcut_accesskey_title('Continue/Start',self.preferences.btn_start))
|
||||
.attr('title', keyboardShortcuts.shortcut_accesskey_title(gettext('Continue/Start'),self.preferences.btn_start))
|
||||
.attr('aria-label', keyboardShortcuts.shortcut_accesskey_title(gettext('Continue/Start'),self.preferences.btn_start))
|
||||
.attr('accesskey', keyboardShortcuts.shortcut_key(self.preferences.btn_start));
|
||||
|
||||
self.toolbarView.$el.find('#btn-toggle-breakpoint')
|
||||
.attr('title', keyboardShortcuts.shortcut_accesskey_title('Toggle breakpoint',self.preferences.btn_toggle_breakpoint))
|
||||
.attr('aria-label', keyboardShortcuts.shortcut_accesskey_title('Toggle breakpoint',self.preferences.btn_toggle_breakpoint))
|
||||
.attr('title', keyboardShortcuts.shortcut_accesskey_title(gettext('Toggle breakpoint'),self.preferences.btn_toggle_breakpoint))
|
||||
.attr('aria-label', keyboardShortcuts.shortcut_accesskey_title(gettext('Toggle breakpoint'),self.preferences.btn_toggle_breakpoint))
|
||||
.attr('accesskey', keyboardShortcuts.shortcut_key(self.preferences.btn_toggle_breakpoint));
|
||||
|
||||
self.toolbarView.$el.find('#btn-clear-breakpoint')
|
||||
.attr('title', keyboardShortcuts.shortcut_accesskey_title('Clear all breakpoints',self.preferences.btn_clear_breakpoints))
|
||||
.attr('aria-label', keyboardShortcuts.shortcut_accesskey_title('Clear all breakpoints',self.preferences.btn_clear_breakpoints))
|
||||
.attr('title', keyboardShortcuts.shortcut_accesskey_title(gettext('Clear all breakpoints'),self.preferences.btn_clear_breakpoints))
|
||||
.attr('aria-label', keyboardShortcuts.shortcut_accesskey_title(gettext('Clear all breakpoints'),self.preferences.btn_clear_breakpoints))
|
||||
.attr('accesskey', keyboardShortcuts.shortcut_key(self.preferences.btn_clear_breakpoints));
|
||||
|
||||
self.toolbarView.$el.find('#btn-stop')
|
||||
.attr('title', keyboardShortcuts.shortcut_accesskey_title('Stop',self.preferences.btn_stop))
|
||||
.attr('aria-label', keyboardShortcuts.shortcut_accesskey_title('Stop',self.preferences.btn_stop))
|
||||
.attr('title', keyboardShortcuts.shortcut_accesskey_title(gettext('Stop'),self.preferences.btn_stop))
|
||||
.attr('aria-label', keyboardShortcuts.shortcut_accesskey_title(gettext('Stop'),self.preferences.btn_stop))
|
||||
.attr('accesskey', keyboardShortcuts.shortcut_key(self.preferences.btn_stop));
|
||||
},
|
||||
// Register the panel with new debugger docker instance.
|
||||
|
@ -713,7 +713,7 @@ define([
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text fa fa-search" id="labelSearch"></span>
|
||||
</div>
|
||||
<input type="search" class="form-control" id="txtGridSearch" placeholder="` + gettext('Search') + `" aria-label="Search" aria-describedby="labelSearch">
|
||||
<input type="search" class="form-control" id="txtGridSearch" placeholder="` + gettext('Search') + '" aria-label="' + gettext('Search') + `" aria-describedby="labelSearch">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -201,7 +201,7 @@ define([
|
||||
multiple: true,
|
||||
allowClear: true,
|
||||
first_empty: false,
|
||||
placeholder: gettext('Colums for exporting...'),
|
||||
placeholder: gettext('Columns for exporting...'),
|
||||
preserveSelectionOrder: true,
|
||||
},
|
||||
visible: 'exporting',
|
||||
|
@ -8,7 +8,6 @@
|
||||
//////////////////////////////////////////////////////////////
|
||||
|
||||
import gettext from '../../../../static/js/gettext';
|
||||
import {sprintf} from 'sources/utils';
|
||||
import Backform from '../../../../static/js/backform.pgadmin';
|
||||
import {Dialog} from '../../../../static/js/alertify/dialog';
|
||||
import url_for from 'sources/url_for';
|
||||
@ -16,7 +15,7 @@ import axios from 'axios/index';
|
||||
|
||||
export class RestoreDialog extends Dialog {
|
||||
constructor(pgBrowser, $, alertify, RestoreModel, backform = Backform) {
|
||||
super('Restore Error',
|
||||
super(gettext('Restore Error'),
|
||||
'<div class=\'restore_dialog\'></div>',
|
||||
pgBrowser, $, alertify, RestoreModel, backform);
|
||||
}
|
||||
@ -66,7 +65,7 @@ export class RestoreDialog extends Dialog {
|
||||
if (!node)
|
||||
return;
|
||||
|
||||
let title = sprintf(gettext('Restore (%s: %s)'), node.label, data.label);
|
||||
let title = gettext('Restore (%s: %s)', node.label, data.label);
|
||||
that.createOrGetDialog(title, 'restore');
|
||||
that.alertify.pg_restore(title, aciTreeItem1, data, node)
|
||||
.resizeTo(width, height);
|
||||
|
@ -1296,10 +1296,10 @@ def save_file():
|
||||
else:
|
||||
output_file.write(file_content)
|
||||
except IOError as e:
|
||||
err_msg = "Error: {0}".format(e.strerror)
|
||||
err_msg = gettext("Error: {0}").format(e.strerror)
|
||||
return internal_server_error(errormsg=err_msg)
|
||||
except Exception as e:
|
||||
err_msg = "Error: {0}".format(e.strerror)
|
||||
err_msg = gettext("Error: {0}").format(e.strerror)
|
||||
return internal_server_error(errormsg=err_msg)
|
||||
|
||||
return make_json_response(
|
||||
@ -1371,7 +1371,7 @@ def start_query_download_tool(trans_id):
|
||||
|
||||
return r
|
||||
except Exception as e:
|
||||
err_msg = "Error: {0}".format(e.strerror)
|
||||
err_msg = gettext("Error: {0}").format(e.strerror)
|
||||
return internal_server_error(errormsg=err_msg)
|
||||
else:
|
||||
return internal_server_error(
|
||||
|
@ -3331,8 +3331,8 @@ define('tools.querytool', [
|
||||
return true;
|
||||
}
|
||||
).set('labels', {
|
||||
ok: 'Yes',
|
||||
cancel: 'No',
|
||||
ok: gettext('Yes'),
|
||||
cancel: gettext('No'),
|
||||
});
|
||||
} else {
|
||||
self._open_select_file_manager();
|
||||
@ -4275,7 +4275,7 @@ define('tools.querytool', [
|
||||
};
|
||||
});
|
||||
|
||||
let msg = gettext('The current transaction is not commited to the database.'
|
||||
let msg = gettext('The current transaction is not commited to the database. '
|
||||
+ 'Do you want to commit or rollback the transaction?');
|
||||
|
||||
alertify.confirmCommit(gettext('Commit transaction?'), msg, is_commit_disabled);
|
||||
|
@ -251,7 +251,7 @@ def create_user(data):
|
||||
if f in data and data[f] != '':
|
||||
continue
|
||||
else:
|
||||
return False, _("Missing field: '{0}'".format(f))
|
||||
return False, _("Missing field: '{0}'").format(f)
|
||||
|
||||
try:
|
||||
new_data = validate_user(data)
|
||||
|
@ -869,9 +869,9 @@ define([
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text fa fa-search" id="labelSearch"></span>
|
||||
</div>
|
||||
<input type="search" class="form-control" id="txtGridSearch" placeholder="` + gettext('Search') + `" aria-label="Search" aria-describedby="labelSearch" />
|
||||
<input type="search" class="form-control" id="txtGridSearch" placeholder="` + gettext('Search') + '" aria-label="' + gettext('Search') + `" aria-describedby="labelSearch" />
|
||||
</div>
|
||||
<button id="btn_refresh" type="button" class="btn btn-secondary btn-navtab-inline add" title="Add">
|
||||
<button id="btn_refresh" type="button" class="btn btn-secondary btn-navtab-inline add" title="` + gettext('Add') + `">
|
||||
<span class="fa fa-plus "></span>
|
||||
</button>
|
||||
</div>
|
||||
|
@ -1745,7 +1745,7 @@ Failed to reset the connection to the server due to following error:
|
||||
# Do not append if error starts with `ERROR:` as most pg related
|
||||
# error starts with `ERROR:`
|
||||
if not errmsg.startswith(u'ERROR:'):
|
||||
errmsg = u'ERROR: ' + errmsg + u'\n\n'
|
||||
errmsg = gettext(u'ERROR: ') + errmsg + u'\n\n'
|
||||
|
||||
if exception_obj.diag.severity is not None \
|
||||
and exception_obj.diag.message_primary is not None:
|
||||
|
@ -159,17 +159,17 @@ class ServerManager(object):
|
||||
def MajorVersion(self):
|
||||
if self.sversion is not None:
|
||||
return int(self.sversion / 10000)
|
||||
raise Exception("Information is not available.")
|
||||
raise Exception(gettext("Information is not available."))
|
||||
|
||||
def MinorVersion(self):
|
||||
if self.sversion:
|
||||
return int(int(self.sversion / 100) % 100)
|
||||
raise Exception("Information is not available.")
|
||||
raise Exception(gettext("Information is not available."))
|
||||
|
||||
def PatchVersion(self):
|
||||
if self.sversion:
|
||||
return int(int(self.sversion / 100) / 100)
|
||||
raise Exception("Information is not available.")
|
||||
raise Exception(gettext("Information is not available."))
|
||||
|
||||
def connection(
|
||||
self, database=None, conn_id=None, auto_reconnect=True, did=None,
|
||||
@ -492,8 +492,8 @@ WHERE db.oid = {0}""".format(did))
|
||||
|
||||
except Exception as e:
|
||||
current_app.logger.exception(e)
|
||||
return False, "Failed to decrypt the SSH tunnel " \
|
||||
"password.\nError: {0}".format(str(e))
|
||||
return False, gettext("Failed to decrypt the SSH tunnel "
|
||||
"password.\nError: {0}").format(str(e))
|
||||
|
||||
try:
|
||||
# If authentication method is 1 then it uses identity file
|
||||
@ -518,8 +518,8 @@ WHERE db.oid = {0}""".format(did))
|
||||
self.tunnel_created = True
|
||||
except BaseSSHTunnelForwarderError as e:
|
||||
current_app.logger.exception(e)
|
||||
return False, "Failed to create the SSH tunnel." \
|
||||
"\nError: {0}".format(str(e))
|
||||
return False, gettext("Failed to create the SSH tunnel.\n"
|
||||
"Error: {0}").format(str(e))
|
||||
|
||||
# Update the port to communicate locally
|
||||
self.local_bind_port = self.tunnel_object.local_bind_port
|
||||
|
Loading…
Reference in New Issue
Block a user