mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
i18n support.
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
"""Integration hooks for server groups."""
|
||||
|
||||
from flask import render_template, url_for
|
||||
from flask.ext.babel import gettext
|
||||
from flask.ext.security import current_user
|
||||
|
||||
from pgadmin.settings.settings_model import db, ServerGroup
|
||||
@@ -30,17 +31,17 @@ def get_file_menu_items():
|
||||
"""Return a (set) of dicts of file menu items, with name, priority, URL,
|
||||
target and onclick code."""
|
||||
return [
|
||||
{'name': 'mnu_add_server_group', 'label': 'Add a server group...', 'priority': 10, 'url': '#', 'onclick': 'add_server_group()'},
|
||||
{'name': 'mnu_delete_server_group', 'label': 'Delete server group', 'priority': 20, 'url': '#', 'onclick': 'delete_server_group()'},
|
||||
{'name': 'mnu_rename_server_group', 'label': 'Rename server group...', 'priority': 30, 'url': '#', 'onclick': 'rename_server_group()'}
|
||||
{'name': 'mnu_add_server_group', 'label': gettext('Add a server group...'), 'priority': 10, 'url': '#', 'onclick': 'add_server_group()'},
|
||||
{'name': 'mnu_delete_server_group', 'label': gettext('Delete server group'), 'priority': 20, 'url': '#', 'onclick': 'delete_server_group()'},
|
||||
{'name': 'mnu_rename_server_group', 'label': gettext('Rename server group...'), 'priority': 30, 'url': '#', 'onclick': 'rename_server_group()'}
|
||||
]
|
||||
|
||||
|
||||
def get_context_menu_items():
|
||||
"""Return a (set) of dicts of content menu items with name, label, priority and JS"""
|
||||
return [
|
||||
{'name': 'delete', 'label': 'Delete server group', 'priority': 100, 'onclick': 'delete_server_group(item);'},
|
||||
{'name': 'rename', 'label': 'Rename server group...', 'priority': 200, 'onclick': 'rename_server_group(item);'}
|
||||
{'name': 'delete', 'label': gettext('Delete server group'), 'priority': 100, 'onclick': 'delete_server_group(item);'},
|
||||
{'name': 'rename', 'label': gettext('Rename server group...'), 'priority': 200, 'onclick': 'rename_server_group(item);'}
|
||||
]
|
||||
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// Add a server group
|
||||
function add_server_group() {
|
||||
var alert = alertify.prompt(
|
||||
'Add a server group',
|
||||
'Enter a name for the new server group',
|
||||
'{{ _('Add a server group') }}',
|
||||
'{{ _('Enter a name for the new server group') }}',
|
||||
'',
|
||||
function(evt, value) {
|
||||
$.post("{{ url_for('NODE-server-group.add') }}", { name: value })
|
||||
@@ -34,8 +34,8 @@ function add_server_group() {
|
||||
// Delete a server group
|
||||
function delete_server_group(item) {
|
||||
alertify.confirm(
|
||||
'Delete server group?',
|
||||
'Are you sure you wish to delete the server group "{0}"?'.replace('{0}', tree.getLabel(item)),
|
||||
'{{ _('Delete server group?') }}',
|
||||
'{{ _('Are you sure you wish to delete the server group "{0}"?') }}'.replace('{0}', tree.getLabel(item)),
|
||||
function() {
|
||||
var id = tree.getId(item)
|
||||
$.post("{{ url_for('NODE-server-group.delete') }}", { id: id })
|
||||
@@ -62,8 +62,8 @@ function delete_server_group(item) {
|
||||
// Rename a server group
|
||||
function rename_server_group(item) {
|
||||
alertify.prompt(
|
||||
'Rename server group',
|
||||
'Enter a new name for the server group',
|
||||
'{{ _('Rename server group') }}',
|
||||
'{{ _('Enter a new name for the server group') }}',
|
||||
tree.getLabel(item),
|
||||
function(evt, value) {
|
||||
var id = tree.getId(item)
|
||||
|
||||
@@ -15,6 +15,7 @@ NODE_PATH = '/browser/' + NODE_NAME
|
||||
|
||||
import traceback
|
||||
from flask import Blueprint, Response, current_app, request
|
||||
from flask.ext.babel import gettext
|
||||
from flask.ext.security import current_user, login_required
|
||||
|
||||
from utils.ajax import make_json_response
|
||||
@@ -44,7 +45,7 @@ def add():
|
||||
|
||||
else:
|
||||
success = 0
|
||||
errormsg = "No server group name was specified"
|
||||
errormsg = gettext('No server group name was specified')
|
||||
|
||||
if success == 1:
|
||||
data['id'] = servergroup.id
|
||||
@@ -69,7 +70,7 @@ def delete():
|
||||
|
||||
if servergroup is None:
|
||||
success = 0
|
||||
errormsg = 'The specified server group could not be found.'
|
||||
errormsg = gettext('The specified server group could not be found.')
|
||||
else:
|
||||
try:
|
||||
db.session.delete(servergroup)
|
||||
@@ -80,7 +81,7 @@ def delete():
|
||||
|
||||
else:
|
||||
success = 0
|
||||
errormsg = "No server group was specified."
|
||||
errormsg = gettext('No server group was specified.')
|
||||
|
||||
return make_json_response(success=success,
|
||||
errormsg=errormsg,
|
||||
@@ -100,7 +101,7 @@ def rename():
|
||||
|
||||
if servergroup is None:
|
||||
success = 0
|
||||
errormsg = 'The specified server group could not be found.'
|
||||
errormsg = gettext('The specified server group could not be found.')
|
||||
else:
|
||||
try:
|
||||
servergroup.name = request.form['name']
|
||||
@@ -111,9 +112,10 @@ def rename():
|
||||
|
||||
else:
|
||||
success = 0
|
||||
errormsg = "No server group was specified."
|
||||
errormsg = gettext('No server group was specified.')
|
||||
|
||||
return make_json_response(success=success,
|
||||
errormsg=errormsg,
|
||||
info=traceback.format_exc(),
|
||||
result=request.form)
|
||||
result=request.form)
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
function report_error(message, info) {
|
||||
|
||||
text = '<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">\
|
||||
<div class="panel panel-default">\
|
||||
<div class="panel-heading" role="tab" id="headingOne">\
|
||||
<h4 class="panel-title">\
|
||||
<a data-toggle="collapse" data-parent="#accordion" href="#collapseOne" aria-expanded="true" aria-controls="collapseOne">\
|
||||
Error message\
|
||||
</a>\
|
||||
</h4>\
|
||||
</div>\
|
||||
<div id="collapseOne" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingOne">\
|
||||
<div class="panel-body" style="overflow: scroll;">' + message + '</div>\
|
||||
</div>\
|
||||
</div>'
|
||||
|
||||
if (info != '') {
|
||||
text += '<div class="panel panel-default">\
|
||||
<div class="panel-heading" role="tab" id="headingTwo">\
|
||||
<h4 class="panel-title">\
|
||||
<a class="collapsed" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">\
|
||||
Additional info\
|
||||
</a>\
|
||||
</h4>\
|
||||
</div>\
|
||||
<div id="collapseTwo" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingTwo">\
|
||||
<div class="panel-body" style="overflow: scroll;">' + info + '</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>'
|
||||
}
|
||||
|
||||
text += '</div>'
|
||||
|
||||
alertify.alert(
|
||||
'An error has occurred',
|
||||
text
|
||||
)
|
||||
}
|
||||
@@ -8,11 +8,11 @@
|
||||
<div class="pane ui-layout-center browser-inner-pane" id="outer-center">
|
||||
<div class="pane ui-layout-center browser-center-pane" id="inner-center">
|
||||
<ul class="nav nav-tabs browser-tab-bar" role="tablist">
|
||||
<li role="presentation" class="active"><a href="#dashboard" aria-controls="home" role="tab" data-toggle="tab">Dashboard</a></li>
|
||||
<li role="presentation"><a href="#properties" aria-controls="profile" role="tab" data-toggle="tab">Properties</a></li>
|
||||
<li role="presentation"><a href="#statistics" aria-controls="messages" role="tab" data-toggle="tab">Statistics</a></li>
|
||||
<li role="presentation"><a href="#dependencies" aria-controls="settings" role="tab" data-toggle="tab">Dependencies</a></li>
|
||||
<li role="presentation"><a href="#dependents" aria-controls="settings" role="tab" data-toggle="tab">Dependents</a></li>
|
||||
<li role="presentation" class="active"><a href="#dashboard" aria-controls="home" role="tab" data-toggle="tab">{{ _('Dashboard') }}</a></li>
|
||||
<li role="presentation"><a href="#properties" aria-controls="profile" role="tab" data-toggle="tab">{{ _('Properties') }}</a></li>
|
||||
<li role="presentation"><a href="#statistics" aria-controls="messages" role="tab" data-toggle="tab">{{ _('Statistics') }}</a></li>
|
||||
<li role="presentation"><a href="#dependencies" aria-controls="settings" role="tab" data-toggle="tab">{{ _('Dependencies') }}</a></li>
|
||||
<li role="presentation"><a href="#dependents" aria-controls="settings" role="tab" data-toggle="tab">{{ _('Dependents') }}</a></li>
|
||||
</ul>
|
||||
<div class="tab-content browser-tab-panes">
|
||||
<div role="tabpanel" class="tab-pane browser-tab-pane active" id="dashboard">
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<div class="container-fluid">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-menu">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="sr-only">{{ _('Toggle navigation') }}</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
@@ -18,35 +18,35 @@
|
||||
<ul class="nav navbar-nav">
|
||||
|
||||
{% if file_items is defined and file_items|count > 0 %}<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">File <span class="caret"></span></a>
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">{{ _('File') }} <span class="caret"></span></a>
|
||||
<ul class="dropdown-menu" role="menu">{% for file_item in file_items %}
|
||||
<li><a id="{{ file_item.name }}" href="{{ file_item.url }}" target="{{ file_item.target }}" onclick="{{ file_item.onclick|safe }}">{{ file_item.label }}</a></li>{% endfor %}
|
||||
</ul>
|
||||
</li>{% endif %}
|
||||
|
||||
{% if edit_items is defined and edit_items|count > 0 %}<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Edit <span class="caret"></span></a>
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">{{ _('Edit') }} <span class="caret"></span></a>
|
||||
<ul class="dropdown-menu" role="menu">{% for edit_item in edit_items %}
|
||||
<li><a id="{{ edit_item.name }}" href="{{ edit_item.url }}" target="{{ edit_item.target }}" onclick="{{ edit_item.onclick|safe }}">{{ edit_item.label }}</a></li>{% endfor %}
|
||||
</ul>
|
||||
</li>{% endif %}
|
||||
|
||||
{% if tools_items is defined and tools_items|count > 0 %}<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Tools <span class="caret"></span></a>
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">{{ _('Tools') }} <span class="caret"></span></a>
|
||||
<ul class="dropdown-menu" role="menu">{% for tools_item in tools_items %}
|
||||
<li><a id="{{ tools_item.name }}" href="{{ tools_item.url }}" target="{{ tools_item.target }}" onclick="{{ tools_item.onclick|safe }}">{{ tools_item.label }}</a></li>{% endfor %}
|
||||
</ul>
|
||||
</li>{% endif %}
|
||||
|
||||
{% if management_items is defined and management_items|count > 0 %}<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Management <span class="caret"></span></a>
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">{{ _('Management') }} <span class="caret"></span></a>
|
||||
<ul class="dropdown-menu" role="menu">{% for management_item in management_items %}
|
||||
<li><a id="{{ management_item.name }}" href="{{ management_item.url }}" target="{{ management_item.target }}" onclick="{{ management_item.onclick|safe }}">{{ management_item.label }}</a></li>{% endfor %}
|
||||
</ul>
|
||||
</li>{% endif %}
|
||||
|
||||
{% if help_items is defined and help_items|count > 0 %}<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Help <span class="caret"></span></a>
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">{{ _('Help') }} <span class="caret"></span></a>
|
||||
<ul class="dropdown-menu" role="menu">{% for help_item in help_items %}
|
||||
<li><a id="{{ help_item.name }}" href="{{ help_item.url }}" target="{{ help_item.target }}" onclick="{{ help_item.onclick|safe }}">{{ help_item.label }}</a></li>{% endfor %}
|
||||
</ul>
|
||||
@@ -58,9 +58,9 @@
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"><img src="{{ username | gravatar }}" width="18" height="18" alt="Gravatar image for {{ username }}"> {{ username }} <span class="caret"></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="{{ url_for('security.change_password') }}">Change Password</a></li>
|
||||
<li><a href="{{ url_for('security.change_password') }}">{{ _('Change Password') }}</a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="{{ url_for('security.logout') }}">Logout</a></li>
|
||||
<li><a href="{{ url_for('security.logout') }}">{{ _('Logout') }}</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -35,25 +35,25 @@ $(document).ready(function(){
|
||||
center__maskContents: true,
|
||||
center__onresize: "storeLayout",
|
||||
south__maskContents: true,
|
||||
south__size: {{ layout_settings.sql_size }},
|
||||
south__size: {{ layout_settings.sql_size }},
|
||||
south__initClosed: {{ layout_settings.sql_closed }},
|
||||
south__spacing_closed: 22,
|
||||
south__spacing_closed: 22,
|
||||
south__togglerLength_closed: 140,
|
||||
south__togglerAlign_closed: "right",
|
||||
south__togglerContent_closed: 'SQL Pane',
|
||||
south__togglerTip_closed: "Open & Pin SQL Pane",
|
||||
south__sliderTip: "Slide Open SQL Pane",
|
||||
south__togglerContent_closed: "{{ _('SQL Pane') }}",
|
||||
south__togglerTip_closed: "{{ _('Open & Pin SQL Pane') }}",
|
||||
south__sliderTip: "{{ _('Slide Open SQL Pane') }}",
|
||||
south__slideTrigger_open: "mouseover",
|
||||
}],
|
||||
west__maskContents: true,
|
||||
west__size: {{ layout_settings.browser_size }},
|
||||
west__size: {{ layout_settings.browser_size }},
|
||||
west__initClosed: {{ layout_settings.browser_closed }},
|
||||
west__spacing_closed: 22,
|
||||
west__spacing_closed: 22,
|
||||
west__togglerLength_closed: 140,
|
||||
west__togglerAlign_closed: "top",
|
||||
west__togglerContent_closed: 'B<br />r<br />o<br />w<br />s<br />e<br />r',
|
||||
west__togglerTip_closed: "Open & Pin Browser",
|
||||
west__sliderTip: "Slide Open Browser",
|
||||
west__togglerContent_closed: "{{ _('B<br />r<br />o<br />w<br />s<br />e<br />r') }}",
|
||||
west__togglerTip_closed: "{{ _('Open & Pin Browser') }}",
|
||||
west__sliderTip: "{{ _('Slide Open Browser') }}",
|
||||
west__slideTrigger_open: "mouseover",
|
||||
};
|
||||
|
||||
@@ -126,3 +126,43 @@ $(document).ready(function(){
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function report_error(message, info) {
|
||||
|
||||
text = '<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">\
|
||||
<div class="panel panel-default">\
|
||||
<div class="panel-heading" role="tab" id="headingOne">\
|
||||
<h4 class="panel-title">\
|
||||
<a data-toggle="collapse" data-parent="#accordion" href="#collapseOne" aria-expanded="true" aria-controls="collapseOne">\
|
||||
{{ _('Error message') }}\
|
||||
</a>\
|
||||
</h4>\
|
||||
</div>\
|
||||
<div id="collapseOne" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingOne">\
|
||||
<div class="panel-body" style="overflow: scroll;">' + message + '</div>\
|
||||
</div>\
|
||||
</div>'
|
||||
|
||||
if (info != '') {
|
||||
text += '<div class="panel panel-default">\
|
||||
<div class="panel-heading" role="tab" id="headingTwo">\
|
||||
<h4 class="panel-title">\
|
||||
<a class="collapsed" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">\
|
||||
{{ _('Additional info') }}\
|
||||
</a>\
|
||||
</h4>\
|
||||
</div>\
|
||||
<div id="collapseTwo" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingTwo">\
|
||||
<div class="panel-body" style="overflow: scroll;">' + info + '</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>'
|
||||
}
|
||||
|
||||
text += '</div>'
|
||||
|
||||
alertify.alert(
|
||||
'{{ _('An error has occurred') }}',
|
||||
text
|
||||
)
|
||||
}
|
||||
@@ -59,7 +59,6 @@ def index():
|
||||
# Add browser scripts
|
||||
scripts.append(url_for('static', filename='js/codemirror/codemirror.js'))
|
||||
scripts.append(url_for('static', filename='js/codemirror/mode/sql.js'))
|
||||
scripts.append(url_for('browser.static', filename='js/utils.js'))
|
||||
scripts.append(url_for('browser.static', filename='js/aciTree/jquery.aciPlugin.min.js'))
|
||||
scripts.append(url_for('browser.static', filename='js/aciTree/jquery.aciTree.dom.js'))
|
||||
scripts.append(url_for('browser.static', filename='js/aciTree/jquery.aciTree.min.js'))
|
||||
|
||||
Reference in New Issue
Block a user