Skip to content
Snippets Groups Projects
Commit c0e2c151 authored by brenko's avatar brenko
Browse files

feat: translation files

parent 524990a9
No related tags found
1 merge request!1feat: adding templates
No preview for this file type
import json import json
from flask import Flask, render_template, request, redirect, make_response, jsonify from flask import Flask, render_template, request, redirect, make_response, jsonify, session
from flask_babel import Babel, get_locale, gettext from flask_babel import Babel, get_locale, gettext
from jwcrypto import jwk, jwt from jwcrypto import jwk, jwt
from jwcrypto.jwk import JWKSet, JWK from jwcrypto.jwk import JWKSet, JWK
...@@ -12,17 +12,15 @@ babel = Babel(app) ...@@ -12,17 +12,15 @@ babel = Babel(app)
with open("config_templates/config-template.yaml", "r") as ymlfile: with open("config_templates/config-template.yaml", "r") as ymlfile:
cfg = yaml.safe_load(ymlfile) cfg = yaml.safe_load(ymlfile)
CSS_FRAMEWORK = cfg.get('css_framework', 'bootstrap') if 'css_framework' not in cfg:
MUNI_FACULTY = cfg.get('MUNI_faculty', None) cfg['css_framework'] = 'bootstrap'
app.secret_key = cfg["secret_key"]
TOKEN_ALG = cfg['token_alg'] TOKEN_ALG = cfg['token_alg']
KEY_ID = cfg['key_id'] KEY_ID = cfg['key_id']
KEYSTORE = cfg['keystore'] KEYSTORE = cfg['keystore']
FOOTER = cfg.get('footer', None) REDIRECT_URL = cfg['redirect_url']
LANGUAGES = cfg.get('languages', None)
LOGO = cfg.get('logo', None)
NAME = cfg.get('name', None)
def import_keys(file_path: str) -> JWKSet: def import_keys(file_path: str) -> JWKSet:
...@@ -42,14 +40,21 @@ def verify_jwt(token): ...@@ -42,14 +40,21 @@ def verify_jwt(token):
return jwt.JWT(jwt=token, key=jwk_key).claims return jwt.JWT(jwt=token, key=jwk_key).claims
@app.context_processor
def inject_conf_var():
return dict(cfg=cfg, lang=get_locale())
@babel.localeselector @babel.localeselector
def select_locale(): def get_locale():
return request.accept_languages.best_match(["en", "cs"]) if request.args.get('lang'):
session['lang'] = request.args.get('lang')
return session.get('lang', 'en')
@app.route('/') @app.route('/')
def index(): def index():
return redirect('/IsTestingSP?language=en') return redirect('/IsTestingSP')
@app.route('/authorization/<message>') @app.route('/authorization/<message>')
...@@ -57,48 +62,36 @@ def authorization(message): ...@@ -57,48 +62,36 @@ def authorization(message):
message = json.load(verify_jwt(message)) message = json.load(verify_jwt(message))
email = message.get('email') email = message.get('email')
service = message.get('service') service = message.get('service')
registration_url = message.get('registration_url')
if not email or not service: if not email or not service:
return make_response(jsonify({"fail": "Missing request parameter"}), 400) return make_response(jsonify({gettext("fail"): gettext("Missing request parameter")}), 400)
return render_template( return render_template(
"authorization.html", "authorization.html",
email=email, email=email,
service=service, service=service,
css_framework=CSS_FRAMEWORK, registration_url=registration_url,
faculty=MUNI_FACULTY,
locale=get_locale()
) )
@app.route('/SPAuthorization/<message>') @app.route('/SPAuthorization/<message>')
def sp_authorization(message): def sp_authorization(message):
message = json.load(verify_jwt(message)) message = json.load(verify_jwt(message))
email = message.get('email')
service = message.get('service')
registration_url = message.get('registration_url') registration_url = message.get('registration_url')
return render_template( return render_template(
"SPAuthorization.html", "SPAuthorization.html",
email=email,
service=service,
registration_url=registration_url, registration_url=registration_url,
css_framework=CSS_FRAMEWORK,
faculty=MUNI_FACULTY,
locale=get_locale()
) )
@app.route('/IsTestingSP') @app.route('/IsTestingSP')
def is_testing_sp(): def is_testing_sp():
language = request.args.get('language', get_locale())
return render_template( return render_template(
"IsTestingSP.html", "IsTestingSP.html",
css_framework=CSS_FRAMEWORK, redirect_url=REDIRECT_URL
faculty=MUNI_FACULTY,
locale=language,
footer=FOOTER,
sections=FOOTER['sections'],
format=FOOTER['format'],
current_section=FOOTER['sections'][str(language)],
languages=LANGUAGES,
current_language=LANGUAGES[str(language)],
logo=LOGO,
name=NAME,
queryParams=dict()
) )
......
[python: **.py]
[jinja2: **/templates/**.html]
\ No newline at end of file
css_framework: MUNI css_framework: bootstrap
MUNI_faculty: MUNI_faculty:
keystore: path keystore: path
key_id: id key_id: id
...@@ -7,13 +7,19 @@ footer: ...@@ -7,13 +7,19 @@ footer:
format: HTML format: HTML
sections: sections:
cs: cs:
- Zprava - Máte problém s přihlášením?
- Zprava2 - Službu Autentizační brána zajišťuje Ústav výpočetní techniky.
en: en:
- message - Having trouble logging in?
- message2 - The Authentication Gateway service is provided by the Institute of Computer Science.
de:
- de1
- de2
languages: languages:
cs: Cestina cs: Čeština
en: English en: English
logo: de: Deutsch
logo: static/MuniWeb/img/favicon.ico
name: MUNI name: MUNI
secret_key: secret
redirect_url: url
\ No newline at end of file
...@@ -7,6 +7,10 @@ setup( ...@@ -7,6 +7,10 @@ setup(
description="Module with gui for perun proxy", description="Module with gui for perun proxy",
packages=find_packages(), packages=find_packages(),
install_requires=[ install_requires=[
"setuptools" "setuptools",
"PyYAML>=6.0<7",
"Flask>=2.2.2<3",
"jwcrypto>=1.3.1<2",
"Flask-Babel>=2.0.0<3",
], ],
) )
{% extends 'base.html' %} {% extends 'base.html' %}
{% block head %} {% block head %}
<title>Authorization page</title> <title></title>
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<div class="content"> <div class="content">
<h1 style="text-align: center">IsTestingSp page</h1> <h1 style="text-align: center"><span>{{ _("You are about to access service, which is in testing environment.") }}</span></h1>
<h1 style="text-align: center"> <a href="{{ redirect_url }}"><span>{{ _("Continue") }}</span></a></h1>
</div> </div>
{% endblock %} {% endblock %}
\ No newline at end of file
...@@ -4,9 +4,10 @@ ...@@ -4,9 +4,10 @@
<title>Authorization page</title> <title>Authorization page</title>
{% endblock %} {% endblock %}
{% block body %} {% block content %}
<div class="content"> <div class="content">
<h1 style="text-align: center">SPAuthorization page</h1> <h1 style="text-align: center"><span>{{ _("You are not authorized to access the service ") }}</span> {{ _("service") }}</h1>
<h1 style="text-align: center"> <a href="{{ registration_url }}">register here</a></h1> <h1 style="text-align: center"><span>{{ _('We will now redirect you to a registration page, where you will apply for the access.') }}</span></h1>
<h1 style="text-align: center"> <a href="{{ registration_url }}"><span>{{ _("Proceed to registration") }}</span></a></h1>
</div> </div>
{% endblock %} {% endblock %}
\ No newline at end of file
<!DOCTYPE html> <!DOCTYPE html>
{% if footer is not none and sections is not none %} {% if cfg.footer is not none and cfg.footer.sections is not none %}
{% if css_framework == 'MUNI' %} {% if cfg.css_framework == 'MUNI' %}
{% if current_section is not none %} {% if cfg.footer.sections[lang] is not none %}
{% set colSize = 4 / current_section | length %} {% set colSize = 4 / cfg.footer.sections[lang] | length %}
{% else %} {% else %}
{% set colSize = 4 / sections | length %} {% set colSize = 4 / cfg.sections | length %}
{% endif %} {% endif %}
{% else %} {% else %}
{% if current_section is not none %} {% if cfg.footer.sections[lang] is not none %}
{% set colSize = 12 / current_section | length %} {% set colSize = 12 / cfg.footer.sections[lang] | length %}
{% else %} {% else %}
{% set colSize = 12 / sections | length %} {% set colSize = 12 / cfg.footer.sections | length %}
{% endif %} {% endif %}
{% endif %} {% endif %}
<footer class="footer text-left{% if not css_framework == 'MUNI' %} bg-secondary secondary-contrast-color{% endif %}"> <footer class="footer text-left{% if not cfg.css_framework == 'MUNI' %} bg-secondary secondary-contrast-color{% endif %}">
<div class="{% if css_framework == 'MUNI' %}grid{% else %}row{% endif%} footer-margin"> <div class="{% if cfg.css_framework == 'MUNI' %}grid{% else %}row{% endif%} footer-margin">
{% if current_section is not none %} {% if cfg.footer.sections[lang] is not none %}
{% for block in current_section %} {% for block in cfg.footer.sections[lang] %}
{% if format is not none and (format == 'HTML' or format == 'markdown') %} {% if cfg.footer.format is not none and (cfg.footer.format == 'HTML' or cfg.footer.format == 'markdown') %}
<div class="{% if css_framework == 'MUNI' %}grid__cell size--m--{{ colSize }}-4{% else %}col-padding-0 col-md-{{ colSize }}{% endif %}"> <div class="{% if cfg.css_framework == 'MUNI' %}grid__cell size--m--{{ colSize }}-4{% else %}col-padding-0 col-md-{{ colSize }}{% endif %}">
{{ block }} {{ block |safe}}
</div> </div>
{% else %} {% else %}
<div class="{% if css_framework == 'MUNI' %}grid__cell size--m--{{ colSize }}-4{% else %}col-padding-0 col-md-{{ colSize }}{% endif %}"> <div class="{% if cfg.css_framework == 'MUNI' %}grid__cell size--m--{{ colSize }}-4{% else %}col-padding-0 col-md-{{ colSize }}{% endif %}">
{{ block }} {{ block }}
</div> </div>
{% endif %} {% endif %}
{% endfor %} {% endfor %}
{% else %} {% else %}
{% for block in sections %} {% for block in cfg.footer.sections %}
{% if format is not none and (format == 'HTML' or format == 'markdown') %} {% if cfg.footer.format is not none and (cfg.footer.format == 'HTML' or cfg.footer.format == 'markdown') %}
<div class="{% if css_framework == 'MUNI' %}grid__cell size--m--{{ colSize }}-4{% else %}col-padding-0 col-md-{{ colSize }}{% endif %}"> <div class="{% if cfg.css_framework == 'MUNI' %}grid__cell size--m--{{ colSize }}-4{% else %}col-padding-0 col-md-{{ colSize }}{% endif %}">
{{ block }} {{ block |safe}}
</div> </div>
{% else %} {% else %}
<div class="{% if css_framework == 'MUNI'%}grid__cell size--m--{{ colSize }}-4{% else %}col-padding-0 col-md-{{ colSize }}{% endif %}"> <div class="{% if cfg.css_framework == 'MUNI'%}grid__cell size--m--{{ colSize }}-4{% else %}col-padding-0 col-md-{{ colSize }}{% endif %}">
{{ block }} {{ block }}
</div> </div>
{% endif %} {% endif %}
......
<!DOCTYPE html> <!DOCTYPE html>
{% if css_framework == 'MUNI' %} {% if cfg.css_framework == 'MUNI' %}
<header class="header"> <header class="header">
<div class="row-main header__wrap"> <div class="row-main header__wrap">
<div class="grid"> <div class="grid">
<div class="grid__cell size--m--2-4 push--m--2-4 center"> <div class="grid__cell size--m--2-4 push--m--2-4 center">
<div class="header__side"> <div class="header__side">
{% if languages | length > 2 %} {% if cfg.languages | length > 2 %}
<nav class="menu-lang menu-lang--select" aria-label="{{ _('lang_selection') }}"> <nav class="menu-lang menu-lang--select" aria-label="{{ _('lang_selection') }}">
<p class="menu-lang__selected"> <p class="menu-lang__selected">
{% if current_language is not none %} {% if lang in cfg.languages %}
<a href="#" class="menu-lang__selected__link"> <a href="#" class="menu-lang__selected__link">
{{ current_language }} {{ cfg.languages[lang] }}
</a> </a>
{% endif %} {% endif %}
</p> </p>
<p class="menu-lang__popup"> <p class="menu-lang__popup">
{% for langKey, langName in languages.items() %} {% for langKey, langName in cfg.languages.items() %}
{% if langName != current_language and currentUrl ~ "&language=" ~ langKey %} {% if langName != cfg.languages[lang] and request.base_url ~ "&lang=" ~ langKey %}
<a href="{{ currentUrl ~ "?language=" ~ langKey }}{%- for name, value in queryParams.items() %}{{ "&" ~ name ~ "=" ~ value }}{%- endfor %}" <a href="{{ request.base_url ~ "?lang=" ~ langKey }}{%- for name, value in request.args.items() %}{{ '' if name == "lang" else "&" ~ name ~ "=" ~ value }}{%- endfor %}"
rel="alternate" hreflang="{{ langKey }}" lang="{{ langKey }}" class="menu-lang__popup__link"> rel="alternate" hreflang="{{ langKey }}" lang="{{ langKey }}" class="menu-lang__popup__link">
{{ langName }} {{ langName }}
</a> </a>
{% endif %} {% endif %}
{% endfor %} {% endfor %}
</p> b </p>
</nav> </nav>
{% else %} {% else %}
<nav class="menu-lang" aria-label="{{ _('lang_selection') }}"> <nav class="menu-lang" aria-label="{{ _('lang_selection') }}">
<p class="menu-lang__selected"> <p class="menu-lang__selected">
{% for langKey, langName in languages.items() %} {% for langKey, langName in cfg.languages.items() %}
{% if langName != current_language and currentUrl ~ "&language=" ~ langKey %} {% if langName != cfg.languages[lang] and request.base_url ~ "&lang=" ~ langKey %}
<a href="{{ currentUrl ~ "?language=" ~ langKey }}{%- for name, value in queryParams.items() %}{{ "&" ~ name ~ "=" ~ value }}{%- endfor %}" <a href="{{ request.base_url ~ "?lang=" ~ langKey }}{%- for name, value in request.args.items() %}{{ '' if name == "lang" else "&" ~ name ~ "=" ~ value }}{%- endfor %}"
rel="alternate" hreflang="{{ langKey }}" lang="{{ langKey }}" class="menu-lang__selected__link"> rel="alternate" hreflang="{{ langKey }}" lang="{{ langKey }}" class="menu-lang__selected__link">
{{ langName }} {{ langName }}
</a> </a>
...@@ -44,10 +44,10 @@ ...@@ -44,10 +44,10 @@
<div class="row-main"> <div class="row-main">
<ul class="menu-mobile__list"> <ul class="menu-mobile__list">
{% set counter = 0 %} {% set counter = 0 %}
{% for langKey, langName in languages.items() %} {% for langKey, langName in cfg.languages.items() %}
{% if counter < 5 and langName != current_language and currentUrl ~ "&language=" ~ langKey %} {% if counter < 5 and langName != cfg.languages[lang] and request.base_url ~ "&lang=" ~ langKey %}
<li class="menu-mobile__item"> <li class="menu-mobile__item">
<a href="{{ currentUrl ~ "?language=" ~ langKey }}{%- for name, value in queryParams.items() %}{{ "&" ~ name ~ "=" ~ value }}{%- endfor %}" <a href="{{ request.base_url ~ "?lang=" ~ langKey }}{%- for name, value in request.args.items() %}{{ '' if name == "lang" else "&" ~ name ~ "=" ~ value }}{%- endfor %}"
rel="alternate" hreflang="{{ langKey }}" lang="{{ langKey }}" class="menu-mobile__link menu-mobile__link--lang"> rel="alternate" hreflang="{{ langKey }}" lang="{{ langKey }}" class="menu-mobile__link menu-mobile__link--lang">
{{ langKey|upper }} {{ langKey|upper }}
</a> </a>
...@@ -62,7 +62,7 @@ ...@@ -62,7 +62,7 @@
</div> </div>
</div> </div>
<div class="grid__cell size--m--2-4 pull--m--2-4 center"> <div class="grid__cell size--m--2-4 pull--m--2-4 center">
<img src="{% if logo is not none %}{{ logo }}{% endif %}" class="header-img" alt="{% if name is not none %}{{ name }}{% endif %}"/> <img src="{% if cfg.logo is not none %}{{ cfg.logo }}{% endif %}" class="header-img" alt="{% if cfg.name is not none %}{{ cfg.name }}{% endif %}"/>
</div> </div>
</div> </div>
</div> </div>
...@@ -72,20 +72,20 @@ ...@@ -72,20 +72,20 @@
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-md-6 order-md-last text-md-end"> <div class="col-md-6 order-md-last text-md-end">
{% if languages | length > 2 %} {% if cfg.languages | length > 2 %}
<div class="dropdown language-bar mt-3"> <div class="dropdown language-bar mt-3">
<a id="dropdown-language" class="btn btn-secondary dropdown-toggle text-primary bg-white border-0" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> <a id="dropdown-language" class="btn btn-secondary dropdown-toggle text-primary bg-white border-0" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
{% if current_language is not none %} {% if lang in cfg.languages %}
<span class="d-md-none">{{ current_language | upper }}</span><span class="d-none d-md-inline">{{ attribute(languages, current_language) }}</span> <span class="d-md-none">{{ cfg.languages[lang] | upper }}</span><span class="d-none d-md-inline">{{ cfg.languages[lang] }}</span>
{% else %} {% else %}
{{ current_language | upper }} {{ current_language | upper }}
{% endif %} {% endif %}
</a> </a>
<ul class="dropdown-menu" aria-labelledby="dropdown-language"> <ul class="dropdown-menu" aria-labelledby="dropdown-language">
{% for langKey, langName in languages.items() %} {% for langKey, langName in cfg.languages.items() %}
{% if langName != current_language %} {% if langName != cfg.languages[lang] %}
<li> <li>
<a class="dropdown-item text-primary" href="{{ currentUrl ~ "?language=" ~ langKey }}{%- for name, value in queryParams.items() %}{{ "&" ~ name ~ "=" ~ value }}{%- endfor %}"> <a class="dropdown-item text-primary" href="{{ request.base_url ~ "?lang=" ~ langKey }}{%- for name, value in request.args.items() %}{{ '' if name == "lang" else "&" ~ name ~ "=" ~ value }}{%- endfor %}">
<span class="d-md-none">{{ langKey | upper }}</span><span class="d-none d-md-inline">{{ langName }}</span> <span class="d-md-none">{{ langKey | upper }}</span><span class="d-none d-md-inline">{{ langName }}</span>
</a> </a>
</li> </li>
...@@ -95,9 +95,9 @@ ...@@ -95,9 +95,9 @@
</div> </div>
{% else %} {% else %}
<p class="language-bar mt-3"> <p class="language-bar mt-3">
{% for langKey, langName in languages.items() %} {% for langKey, langName in cfg.languages.items() %}
{% if langName != current_language and currentUrl ~ "&language=" ~ langKey %} {% if langName != cfg.languages[lang] and request.base_url ~ "&lang=" ~ langKey %}
<a href="{{ currentUrl ~ "?language=" ~ langKey }}{%- for name, value in queryParams.items() %}{{ "&" ~ name ~ "=" ~ value }}{%- endfor %}" <a href="{{ request.base_url ~ "?lang=" ~ langKey }}{%- for name, value in request.args.items() %}{{ '' if name == "lang" else "&" ~ name ~ "=" ~ value }}{%- endfor %}"
rel="alternate" hreflang="{{ langKey }}" lang="{{ langKey }}" class="text-decoration-none text-primary"> rel="alternate" hreflang="{{ langKey }}" lang="{{ langKey }}" class="text-decoration-none text-primary">
<span class="d-md-none">{{ langKey | upper }}</span><span class="d-none d-md-inline">{{ langName }}</span> <span class="d-md-none">{{ langKey | upper }}</span><span class="d-none d-md-inline">{{ langName }}</span>
</a> </a>
...@@ -107,7 +107,7 @@ ...@@ -107,7 +107,7 @@
{% endif %} {% endif %}
</div> </div>
<div class="col-md-6 order-md-first text-md-start"> <div class="col-md-6 order-md-first text-md-start">
<img src="{% if logo is not none %}{{ logo }}{% endif %}" class="header-img mt-3" alt="{% if name is not none %}{{ name }}{% endif %}"/> <img src="{% if cfg.logo is not none %}{{ cfg.logo }}{% endif %}" class="header-img mt-3" alt="{% if cfg.name is not none %}{{ cfg.name }}{% endif %}"/>
</div> </div>
</div> </div>
</div> </div>
......
...@@ -4,10 +4,10 @@ ...@@ -4,10 +4,10 @@
<title>Authorization page</title> <title>Authorization page</title>
{% endblock %} {% endblock %}
{% block body %} {% block content %}
<div class="content"> <div class="content">
<h1 style="text-align: center">Authorization page</h1> <h1 style="text-align: center"><span>{{ _("You are not authorized to access the service ") }}</span> <span>{{ _("service") }}</span></h1>
<h1 style="text-align: center"><span>{{ _('service') }}</span>: {{service}}</h1> <h1 style="text-align: center"><span>{{ _('We will now redirect you to a registration page, where you will apply for the access.') }}</span></h1>
<h1 style="text-align: center">email: {{email}}</h1> <h1 style="text-align: center"> <a href="{{ registration_url }}"><span>{{ _("Proceed to registration") }}</span></a></h1>
</div> </div>
{% endblock %} {% endblock %}
\ No newline at end of file
...@@ -8,14 +8,14 @@ ...@@ -8,14 +8,14 @@
{# skip default CSS, favicon and JavaScript #} {# skip default CSS, favicon and JavaScript #}
<meta name="robots" content="noindex, nofollow"> <meta name="robots" content="noindex, nofollow">
{% block preload %} {% block preload %}
{% if css_framework == 'MUNI' %} {% if cfg.css_framework == 'MUNI' %}
<link rel="stylesheet" type="text/css" href="/static/MuniWeb/css/style{% if faculty is not none%}-{{ faculty }}{% endif %}.css" /> <link rel="stylesheet" type="text/css" href="/static/MuniWeb/css/style{% if cfg.MUNI_faculty is not none%}-{{ cfg.MUNI_faculty }}{% endif %}.css" />
{% else %} {% else %}
<link href="/static/bootstrap/css/bootstrap.min.css" rel="stylesheet"> <link href="/static/bootstrap/css/bootstrap.min.css" rel="stylesheet">
{% endif %} {% endif %}
{% endblock %} {% endblock %}
</head> </head>
<body id="{{ templateId }}" class="{% if css_framework == 'MUNI' %}framework_muni{% else %}framework_bootstrap5{% endif %}"> <body id="{{ templateId }}" class="{% if cfg.css_framework == 'MUNI' %}framework_muni{% else %}framework_bootstrap5{% endif %}">
<div id="layout"> <div id="layout">
{% block header %}{% include "_header.html" %}{% endblock %} {% block header %}{% include "_header.html" %}{% endblock %}
{% block contentwrapper %} {% block contentwrapper %}
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
{% block footer %}{% include "_footer.html" %}{% endblock %} {% block footer %}{% include "_footer.html" %}{% endblock %}
</div> </div>
{% block postload %} {% block postload %}
{% if css_framework == 'MUNI' %} {% if cfg.css_framework == 'MUNI' %}
<script src="/static/jquery-3.6.0.min.js"></script> <script src="/static/jquery-3.6.0.min.js"></script>
<script src="/static/MuniWeb/js/app.js"></script> <script src="/static/MuniWeb/js/app.js"></script>
<script src="/static/campus-idp-muni.js"></script> <script src="/static/campus-idp-muni.js"></script>
......
# Czech translations for PROJECT.
# Copyright (C) 2022 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2022.
#
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-09-19 01:27+0200\n"
"PO-Revision-Date: 2022-09-12 21:11+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: cs\n"
"Language-Team: cs <LL@li.org>\n"
"Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.10.3\n"
#: app.py:67
msgid "fail"
msgstr "selhání"
#: app.py:67
msgid "Missing request parameter"
msgstr "Chybí požadovaný parametr"
#: templates/IsTestingSP.html:9
msgid "You are about to access service, which is in testing environment."
msgstr "Přistupujete ke službě, která je v testovacím režimu."
#: templates/IsTestingSP.html:10
msgid "Continue"
msgstr "Pokračovat"
#: templates/SPAuthorization.html:9 templates/authorization.html:9
msgid "You are not authorized to access the service "
msgstr "Nesplňujete autorizační pravidla pro přístup ke službě "
#: templates/SPAuthorization.html:9 templates/authorization.html:9
msgid "service"
msgstr "služba"
#: templates/SPAuthorization.html:10 templates/authorization.html:10
msgid ""
"We will now redirect you to a registration page, where you will apply for"
" the access."
msgstr "Budete přesmerován(a) na stránku, kde můžete o p%rístup na službu zažádat."
#: templates/SPAuthorization.html:11 templates/authorization.html:11
msgid "Proceed to registration"
msgstr "Pokračovat na registrační stránk"
#: templates/_header.html:9 templates/_header.html:29
msgid "lang_selection"
msgstr ""
#: templates/_header.html:42
msgid "mobile_lang_selection"
msgstr ""
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment