Translate login page

This commit is contained in:
JonnyWong16 2021-06-05 00:01:39 -07:00
commit 89cde72f98
No known key found for this signature in database
GPG key ID: B1F1F9807184697A
6 changed files with 173 additions and 92 deletions

View file

@ -151,11 +151,11 @@
<li><a href="#" id="nav-restart"><i class="fa fa-fw fa-refresh"></i> ${_('base.nav.restart')}</a></li>
<li><a href="#" id="nav-shutdown"><i class="fa fa-fw fa-power-off"></i> ${_('base.nav.shutdown')}</a></li>
% else:
<li><a href="#" data-target="#admin-login-modal" data-toggle="modal"><i class="fa fa-fw fa-lock"></i> ${_('base.nav.admin_login')}</a></li>
<li><a href="#" data-target="#admin-login-modal" data-toggle="modal"><i class="fa fa-fw fa-lock"></i> ${_('login.admin_login')}</a></li>
<li role="separator" class="divider"></li>
% endif
% if _session['exp']:
<li><a href="${http_root}auth/logout"><i class="fa fa-fw fa-sign-out"></i> ${_('base.nav.sign_out')}</a></li>
<li><a href="${http_root}auth/logout"><i class="fa fa-fw fa-sign-out"></i> ${_('login.sign_out')}</a></li>
% endif
</ul>
</li>
@ -180,19 +180,19 @@ ${next.modalIncludes()}
<form id="login-form">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"><i class="fa fa-remove"></i></button>
<h4 class="modal-title">${_('base.nav.admin_login')}</h4>
<h4 class="modal-title">${_('login.admin_login')}</h4>
</div>
<div class="modal-body">
<div class="col-md-6" style="margin: auto;">
<div class="form-group">
<label for="username" class="control-label">
Username
${_('login.username')}
</label>
<input type="text" id="username" name="username" class="form-control" autocorrect="off" autocapitalize="off">
</div>
<div class="form-group">
<label for="password" class="control-label">
Password
${_('login.password')}
</label>
<input type="password" id="password" name="password" class="form-control">
</div>
@ -287,15 +287,15 @@ ${next.modalIncludes()}
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"><i class="fa fa-remove"></i></button>
<h4 class="modal-title">Confirm</h4>
<h4 class="modal-title">${_('global.confirm')}</h4>
</div>
<div class="modal-body">
<div id="confirm-message" style="text-align: center; margin-top: 20px; margin-bottom: 20px;">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-dark" data-dismiss="modal">Cancel</button>
<button type="button" class="btn btn-danger btn-ok" data-dismiss="modal" id="confirm-button">Confirm</button>
<button type="button" class="btn btn-dark" data-dismiss="modal">${_('global.cancel')}</button>
<button type="button" class="btn btn-danger btn-ok" data-dismiss="modal" id="confirm-button">${_('global.confirm')}</button>
</div>
</div>
</div>

View file

@ -54,16 +54,16 @@
% if plex_login:
<li class="open">
<div class="link login-method-header">
Sign In with Plex
${_('login.sign_in_plex')}
</div>
<ul class="submenu login-button-plex" style="display: block;">
<li>
<div>
<button id="sign-in-plex" class="btn btn-bright login-button"><i class="fa fa-sign-in"></i>&nbsp; Sign In</button>
<button id="sign-in-plex" class="btn btn-bright login-button"><i class="fa fa-sign-in"></i>&nbsp; ${_('login.sign_in')}</button>
</div>
<div class="remember-group">
<label class="control-label">
<input type="checkbox" id="remember_me_plex" name="remember_me_plex" title="for 30 days" value="1" checked="checked" /> Remember me
<input type="checkbox" id="remember_me_plex" name="remember_me_plex" title="for 30 days" value="1" checked="checked" /> ${_('login.remember_me')}
</label>
</div>
</li>
@ -72,30 +72,30 @@
% endif
<li class="${'open' if not plex_login else ''}">
<div class="link login-method-header">
Sign In with Tautulli
${_('login.sign_in_tautulli')}
</div>
<ul class="submenu" style="${'display: block;' if not plex_login else ''}">
<li>
<form id="login-form">
<div class="form-group">
<label for="username" class="control-label">
Username
${_('login.username')}
</label>
<input type="text" id="username" name="username" class="form-control" autocorrect="off" autocapitalize="off" autofocus>
</div>
<div class="form-group">
<label for="password" class="control-label">
Password
${_('login.password')}
</label>
<input type="password" id="password" name="password" class="form-control">
</div>
<div class="form-group">
<span class="remember-group">
<label class="control-label">
<input type="checkbox" id="remember_me" name="remember_me" title="for 30 days" value="1" checked="checked" /> Remember me
<input type="checkbox" id="remember_me" name="remember_me" title="for 30 days" value="1" checked="checked" /> ${_('login.remember_me')}
</label>
</span>
<button id="sign-in" type="submit" class="btn btn-bright login-button"><i class="fa fa-sign-in"></i>&nbsp; Sign In</button>
<button id="sign-in" type="submit" class="btn btn-bright login-button"><i class="fa fa-sign-in"></i>&nbsp; ${_('login.sign_in')}</button>
</div>
</form>
</li>
@ -119,7 +119,7 @@
signIn(true, authToken);
}
function OAuthErrorCallback() {
$('#sign-in-alert').text('Error communicating with Plex.tv.').show();
$('#sign-in-alert').text('${_("login.error_plex_communication")}').show();
}
$('#sign-in-plex').click(function() {
@ -134,9 +134,9 @@
function signIn(plex, token) {
$('.login-container button').prop('disabled', true);
if (plex) {
$('#sign-in-plex').html('<i class="fa fa-refresh fa-spin"></i>&nbsp; Sign In');
$('#sign-in-plex').html('<i class="fa fa-refresh fa-spin"></i>&nbsp; ${_("login.sign_in")}');
} else {
$('#sign-in').html('<i class="fa fa-refresh fa-spin"></i>&nbsp; Sign In');
$('#sign-in').html('<i class="fa fa-refresh fa-spin"></i>&nbsp; ${_("login.sign_in")}');
}
const username = plex ? null : $('#username').val();
@ -164,23 +164,23 @@
},
401: function(xhr, status) {
if (plex) {
$('#sign-in-alert').text('Invalid Plex Login.').show();
$('#sign-in-alert').text('${_("login.error_plex_invalid")}').show();
} else {
$('#sign-in-alert').text('Incorrect username or password.').show();
$('#sign-in-alert').text('${_("login.error_tautulli_invalid")}').show();
$('#username').focus();
}
},
429: function(xhr, status) {
var retry = Math.ceil(xhr.getResponseHeader('Retry-After') / 60)
$('#sign-in-alert').text('Too many login attempts. Try again in ' + retry + ' minute(s).').show();
$('#sign-in-alert').text(${_("login.error_retry")}).show();
}
},
complete: function() {
$('.login-container button').prop('disabled', false);
if (plex) {
$('#sign-in-plex').html('<i class="fa fa-sign-in"></i>&nbsp; Sign In');
$('#sign-in-plex').html('<i class="fa fa-sign-in"></i>&nbsp; ${_("login.sign_in")}');
} else {
$('#sign-in').html('<i class="fa fa-sign-in"></i>&nbsp; Sign In');
$('#sign-in').html('<i class="fa fa-sign-in"></i>&nbsp; ${_("login.sign_in")}');
}
}
});

View file

@ -1,2 +1,2 @@
pybabel extract -F babel.cfg -o tautulli.pot ../..
pybabel extract -F babel.cfg -o tautulli.pot --charset=utf-8 --sort-output --copyright-holder=Tautulli ../..
pybabel compile -D tautulli -d . -l en

View file

@ -14,50 +14,80 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.7-dev\n"
msgid "base.nav.libraries"
msgstr "Libraries"
msgid "base.nav.users"
msgstr "Users"
msgid "base.nav.history"
msgstr "History"
msgid "base.nav.graphs"
msgstr "Graphs"
msgid "base.nav.synced_items"
msgstr "Synced Items"
msgid "base.nav.settings"
msgstr "Settings"
msgid "base.nav.view_logs"
msgstr "View Logs"
msgid "base.nav.support"
msgstr "Support"
msgid "base.nav.check_for_updates"
msgstr "Check for Updates"
msgid "base.nav.donate"
msgstr "Donate"
msgid "base.nav.check_for_updates"
msgstr "Check for Updates"
msgid "base.nav.graphs"
msgstr "Graphs"
msgid "base.nav.history"
msgstr "History"
msgid "base.nav.libraries"
msgstr "Libraries"
msgid "base.nav.restart"
msgstr "Restart"
msgid "base.nav.settings"
msgstr "Settings"
msgid "base.nav.shutdown"
msgstr "Shutdown"
msgid "base.nav.admin_login"
msgid "base.nav.support"
msgstr "Support"
msgid "base.nav.synced_items"
msgstr "Synced Items"
msgid "base.nav.users"
msgstr "Users"
msgid "base.nav.view_logs"
msgstr "View Logs"
msgid "global.cancel"
msgstr "Cancel"
msgid "global.confirm"
msgstr "Confirm"
msgid "login.admin_login"
msgstr "Admin Login"
msgid "base.nav.sign_out"
msgstr "Sign Out"
msgid "login.error_plex_communication"
msgstr "Error communicating with Plex.tv."
msgid "login.error_plex_invalid"
msgstr "Invalid Plex login."
msgid "login.error_retry"
msgstr "`Too many login attempts. Try again in ${retry} minute(s).`"
msgid "login.error_tautulli_invalid"
msgstr "Incorrect username or password."
msgid "login.password"
msgstr "Password"
msgid "login.remember_me"
msgstr "Remember me"
msgid "login.sign_in"
msgstr "Sign In"
msgid "login.sign_in_plex"
msgstr "Sign In with Plex"
msgid "login.sign_in_tautulli"
msgstr "Sign In with Tautulli"
msgid "login.sign_out"
msgstr "Sign Out"
msgid "login.username"
msgstr "Username"

View file

@ -1,5 +1,5 @@
# Translations template for PROJECT.
# Copyright (C) 2021 ORGANIZATION
# Copyright (C) 2021 Tautulli
# This file is distributed under the same license as the PROJECT project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2021.
#
@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2021-06-04 21:44-0700\n"
"POT-Creation-Date: 2021-06-05 00:01-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -17,19 +17,12 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.9.0\n"
#: ../../data/interfaces/default/base.html:107
#: ../../data/interfaces/default/base.html:109
msgid "base.nav.libraries"
#: ../../data/interfaces/default/base.html:149
msgid "base.nav.check_for_updates"
msgstr ""
#: ../../data/interfaces/default/base.html:112
#: ../../data/interfaces/default/base.html:114
msgid "base.nav.users"
msgstr ""
#: ../../data/interfaces/default/base.html:117
#: ../../data/interfaces/default/base.html:119
msgid "base.nav.history"
#: ../../data/interfaces/default/base.html:146
msgid "base.nav.donate"
msgstr ""
#: ../../data/interfaces/default/base.html:122
@ -37,53 +30,111 @@ msgstr ""
msgid "base.nav.graphs"
msgstr ""
#: ../../data/interfaces/default/base.html:127
#: ../../data/interfaces/default/base.html:129
msgid "base.nav.synced_items"
#: ../../data/interfaces/default/base.html:117
#: ../../data/interfaces/default/base.html:119
msgid "base.nav.history"
msgstr ""
#: ../../data/interfaces/default/base.html:140
msgid "base.nav.settings"
msgstr ""
#: ../../data/interfaces/default/base.html:142
msgid "base.nav.view_logs"
msgstr ""
#: ../../data/interfaces/default/base.html:144
msgid "base.nav.support"
msgstr ""
#: ../../data/interfaces/default/base.html:146
msgid "base.nav.donate"
msgstr ""
#: ../../data/interfaces/default/base.html:149
msgid "base.nav.check_for_updates"
#: ../../data/interfaces/default/base.html:107
#: ../../data/interfaces/default/base.html:109
msgid "base.nav.libraries"
msgstr ""
#: ../../data/interfaces/default/base.html:151
msgid "base.nav.restart"
msgstr ""
#: ../../data/interfaces/default/base.html:140
msgid "base.nav.settings"
msgstr ""
#: ../../data/interfaces/default/base.html:152
msgid "base.nav.shutdown"
msgstr ""
#: ../../data/interfaces/default/base.html:154
#: ../../data/interfaces/default/base.html:183
msgid "base.nav.admin_login"
#: ../../data/interfaces/default/base.html:144
msgid "base.nav.support"
msgstr ""
#: ../../data/interfaces/default/base.html:158
msgid "base.nav.sign_out"
#: ../../data/interfaces/default/base.html:127
#: ../../data/interfaces/default/base.html:129
msgid "base.nav.synced_items"
msgstr ""
#: ../../data/interfaces/default/base.html:112
#: ../../data/interfaces/default/base.html:114
msgid "base.nav.users"
msgstr ""
#: ../../data/interfaces/default/base.html:142
msgid "base.nav.view_logs"
msgstr ""
#: ../../data/interfaces/default/base.html:297
msgid "global.cancel"
msgstr ""
#: ../../data/interfaces/default/base.html:290
#: ../../data/interfaces/default/base.html:298
msgid "global.confirm"
msgstr ""
#: ../../data/interfaces/default/base.html:154
#: ../../data/interfaces/default/base.html:183
msgid "login.admin_login"
msgstr ""
#: ../../data/interfaces/default/login.html:122
msgid "login.error_plex_communication"
msgstr ""
#: ../../data/interfaces/default/login.html:167
msgid "login.error_plex_invalid"
msgstr ""
#: ../../data/interfaces/default/login.html:175
msgid "login.error_retry"
msgstr ""
#: ../../data/interfaces/default/login.html:169
msgid "login.error_tautulli_invalid"
msgstr ""
#: ../../data/interfaces/default/base.html:195
#: ../../data/interfaces/default/login.html:88
msgid "login.password"
msgstr ""
#: ../../data/interfaces/default/base.html:202
#: ../../data/interfaces/default/login.html:66
#: ../../data/interfaces/default/login.html:95
msgid "login.remember_me"
msgstr ""
#: ../../data/interfaces/default/base.html:210
#: ../../data/interfaces/default/login.html:62
#: ../../data/interfaces/default/login.html:98
#: ../../data/interfaces/default/login.html:137
#: ../../data/interfaces/default/login.html:139
#: ../../data/interfaces/default/login.html:181
#: ../../data/interfaces/default/login.html:183
msgid "login.sign_in"
msgstr ""
#: ../../data/interfaces/default/login.html:57
msgid "login.sign_in_plex"
msgstr ""
#: ../../data/interfaces/default/login.html:75
msgid "login.sign_in_tautulli"
msgstr ""
#: ../../data/interfaces/default/base.html:158
msgid "login.sign_out"
msgstr ""
#: ../../data/interfaces/default/base.html:189
#: ../../data/interfaces/default/login.html:82
msgid "login.username"
msgstr ""