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:
Libor M 2020-04-10 14:52:41 +05:30 committed by Akshay Joshi
parent e238ecf182
commit 6a9af07f7a
81 changed files with 231 additions and 269 deletions

View File

@ -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)

View File

@ -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(

View File

@ -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 \

View File

@ -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(

View File

@ -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)

View File

@ -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']),

View File

@ -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(

View File

@ -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:

View File

@ -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:

View File

@ -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 {

View File

@ -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:

View File

@ -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 {

View File

@ -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 {

View File

@ -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:

View File

@ -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)

View File

@ -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(

View File

@ -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 = []

View File

@ -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 = []

View File

@ -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

View File

@ -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(

View File

@ -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."
)
)

View File

@ -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']),

View File

@ -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':

View File

@ -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

View File

@ -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)):

View File

@ -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:

View File

@ -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}
)

View File

@ -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

View File

@ -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,

View File

@ -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%' },
},{

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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]

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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(

View File

@ -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

View File

@ -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%' },
},{

View File

@ -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

View File

@ -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);

View File

@ -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)

View File

@ -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;
},

View File

@ -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')

View File

@ -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');

View File

@ -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

View File

@ -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 {

View File

@ -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

View File

@ -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.'));
}
});
},

View File

@ -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:

View File

@ -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();

View File

@ -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>
`);

View File

@ -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) {

View File

@ -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">&times;</span></button>
{{ message|safe }}
</div>

View File

@ -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
)
)

View File

@ -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;
}
},

View File

@ -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>

View File

@ -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

View File

@ -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'];

View File

@ -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);

View File

@ -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;
}

View File

@ -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) { %>',

View File

@ -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'],
}, {

View File

@ -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

View File

@ -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);

View File

@ -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 {

View File

@ -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);

View File

@ -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 */

View File

@ -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
);

View File

@ -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);
}
);

View File

@ -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.'
)
}
)

View File

@ -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.

View File

@ -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>

View File

@ -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',

View File

@ -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);

View File

@ -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(

View File

@ -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);

View File

@ -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)

View File

@ -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>

View File

@ -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:

View File

@ -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