@@ -90,12 +90,13 @@ APP_ENV=dev
|
|||||||
APP_SECRET=some_random_secret_string_for_your_installation
|
APP_SECRET=some_random_secret_string_for_your_installation
|
||||||
```
|
```
|
||||||
|
|
||||||
Now create the database schemas:
|
Now create the database schemas and warm up the cache:
|
||||||
```bash
|
```bash
|
||||||
$ bin/console doctrine:schema:create
|
$ bin/console doctrine:schema:create
|
||||||
|
$ bin/console cache:warmup --env=prod
|
||||||
```
|
```
|
||||||
|
|
||||||
And finally create your first user:
|
Finally create your first user:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ bin/console kimai:create-user username password admin@example.com ROLE_SUPER_ADMIN
|
$ bin/console kimai:create-user username password admin@example.com ROLE_SUPER_ADMIN
|
||||||
|
|||||||
28
composer.lock
generated
28
composer.lock
generated
@@ -2508,24 +2508,24 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/flex",
|
"name": "symfony/flex",
|
||||||
"version": "v1.0.61",
|
"version": "v1.0.66",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/flex.git",
|
"url": "https://github.com/symfony/flex.git",
|
||||||
"reference": "f872f8faccf5ff95678e1e428f460a333ba1e5d0"
|
"reference": "b366e902710c8dc8d8be97ed8d64ef574d9bffcb"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/flex/zipball/f872f8faccf5ff95678e1e428f460a333ba1e5d0",
|
"url": "https://api.github.com/repos/symfony/flex/zipball/b366e902710c8dc8d8be97ed8d64ef574d9bffcb",
|
||||||
"reference": "f872f8faccf5ff95678e1e428f460a333ba1e5d0",
|
"reference": "b366e902710c8dc8d8be97ed8d64ef574d9bffcb",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"composer-plugin-api": "^1.1",
|
"composer-plugin-api": "^1.0",
|
||||||
"php": "^7.0"
|
"php": "^7.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"composer/composer": "^1.4",
|
"composer/composer": "^1.0.2",
|
||||||
"symfony/phpunit-bridge": "^3.2.8"
|
"symfony/phpunit-bridge": "^3.2.8"
|
||||||
},
|
},
|
||||||
"type": "composer-plugin",
|
"type": "composer-plugin",
|
||||||
@@ -2550,7 +2550,7 @@
|
|||||||
"email": "fabien.potencier@gmail.com"
|
"email": "fabien.potencier@gmail.com"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2018-01-12T13:09:44+00:00"
|
"time": "2018-01-21T09:15:48+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/form",
|
"name": "symfony/form",
|
||||||
@@ -3984,21 +3984,21 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/thanks",
|
"name": "symfony/thanks",
|
||||||
"version": "v1.0.1",
|
"version": "v1.0.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/thanks.git",
|
"url": "https://github.com/symfony/thanks.git",
|
||||||
"reference": "b637913a92664571afd1067fc645ecb30c9cf5b2"
|
"reference": "8c12bbe4baabcb8e640efaaaab40e3a4497c9fb4"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/thanks/zipball/b637913a92664571afd1067fc645ecb30c9cf5b2",
|
"url": "https://api.github.com/repos/symfony/thanks/zipball/8c12bbe4baabcb8e640efaaaab40e3a4497c9fb4",
|
||||||
"reference": "b637913a92664571afd1067fc645ecb30c9cf5b2",
|
"reference": "8c12bbe4baabcb8e640efaaaab40e3a4497c9fb4",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"composer-plugin-api": "^1.1",
|
"composer-plugin-api": "^1.0",
|
||||||
"php": "^5.5.9|^7.0.8"
|
"php": "^5.5.9|^7.0.0"
|
||||||
},
|
},
|
||||||
"type": "composer-plugin",
|
"type": "composer-plugin",
|
||||||
"extra": {
|
"extra": {
|
||||||
@@ -4023,7 +4023,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "Give thanks (in the form of a GitHub ⭐) to your fellow PHP package maintainers (not limited to Symfony components)!",
|
"description": "Give thanks (in the form of a GitHub ⭐) to your fellow PHP package maintainers (not limited to Symfony components)!",
|
||||||
"time": "2018-01-03T09:30:52+00:00"
|
"time": "2018-01-19T16:12:41+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/translation",
|
"name": "symfony/translation",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
_errors:
|
_errors:
|
||||||
resource: '@TwigBundle/Resources/config/routing/errors.xml'
|
resource: '@TwigBundle/Resources/config/routing/errors.xml'
|
||||||
prefix: /_error
|
prefix: /{_locale}/_error
|
||||||
requirements:
|
requirements:
|
||||||
_locale: '%app_locales%'
|
_locale: '%app_locales%'
|
||||||
defaults:
|
defaults:
|
||||||
|
|||||||
@@ -161,7 +161,7 @@ class CustomerController extends AbstractController
|
|||||||
protected function getToolbarForm(CustomerQuery $query)
|
protected function getToolbarForm(CustomerQuery $query)
|
||||||
{
|
{
|
||||||
return $this->createForm(CustomerToolbarForm::class, $query, [
|
return $this->createForm(CustomerToolbarForm::class, $query, [
|
||||||
'action' => $this->generateUrl('admin_customer_paginated', [
|
'action' => $this->generateUrl('admin_customer', [
|
||||||
'page' => $query->getPage(),
|
'page' => $query->getPage(),
|
||||||
]),
|
]),
|
||||||
'method' => 'GET',
|
'method' => 'GET',
|
||||||
|
|||||||
@@ -165,7 +165,7 @@ class ProjectController extends AbstractController
|
|||||||
protected function getToolbarForm(ProjectQuery $query)
|
protected function getToolbarForm(ProjectQuery $query)
|
||||||
{
|
{
|
||||||
return $this->createForm(ProjectToolbarForm::class, $query, [
|
return $this->createForm(ProjectToolbarForm::class, $query, [
|
||||||
'action' => $this->generateUrl('admin_project_paginated', [
|
'action' => $this->generateUrl('admin_project', [
|
||||||
'page' => $query->getPage(),
|
'page' => $query->getPage(),
|
||||||
]),
|
]),
|
||||||
'method' => 'GET',
|
'method' => 'GET',
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ class UserController extends AbstractController
|
|||||||
protected function getToolbarForm(UserQuery $query)
|
protected function getToolbarForm(UserQuery $query)
|
||||||
{
|
{
|
||||||
return $this->createForm(UserToolbarForm::class, $query, [
|
return $this->createForm(UserToolbarForm::class, $query, [
|
||||||
'action' => $this->generateUrl('admin_user_paginated', [
|
'action' => $this->generateUrl('admin_user', [
|
||||||
'page' => $query->getPage(),
|
'page' => $query->getPage(),
|
||||||
]),
|
]),
|
||||||
'method' => 'GET',
|
'method' => 'GET',
|
||||||
|
|||||||
@@ -54,6 +54,10 @@ class NavbarShowUserSubscriber implements EventSubscriberInterface
|
|||||||
*/
|
*/
|
||||||
public function onShowUser(ShowUserEvent $event)
|
public function onShowUser(ShowUserEvent $event)
|
||||||
{
|
{
|
||||||
|
if ($this->storage->getToken() === null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* @var $myUser User */
|
/* @var $myUser User */
|
||||||
$myUser = $this->storage->getToken()->getUser();
|
$myUser = $this->storage->getToken()->getUser();
|
||||||
|
|
||||||
|
|||||||
@@ -7,22 +7,33 @@
|
|||||||
your application from some errors.
|
your application from some errors.
|
||||||
See http://symfony.com/doc/current/cookbook/controller/error_pages.html
|
See http://symfony.com/doc/current/cookbook/controller/error_pages.html
|
||||||
#}
|
#}
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="{{ _charset }}" />
|
||||||
|
<title>{{ 'http_error.title'|trans({}, 'exceptions') }}: {{ status_text }}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
{% extends 'base.html.twig' %}
|
{% set errorTitleKey = "http_error_#{status_code}.description" %}
|
||||||
|
{% set errorTitleTrans = errorTitleKey|trans({ '%status_code%': status_code }, 'exceptions') %}
|
||||||
|
{% if errorTitleKey == errorTitleTrans %}
|
||||||
|
{% set errorTitleKey = 'http_error.description' %}
|
||||||
|
{% set errorTitleTrans = errorTitleKey|trans({ '%status_code%': status_code }, 'exceptions') %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% block body_id 'error' %}
|
{% set errorMessageKey = "http_error_#{status_code}.suggestion" %}
|
||||||
|
{% set errorMessageTrans = errorMessageKey|trans({ '%status_code%': status_code }, 'exceptions') %}
|
||||||
|
{% if errorMessageKey == errorMessageTrans %}
|
||||||
|
{% set errorMessageKey = 'http_error.suggestion' %}
|
||||||
|
{% set errorMessageTrans = errorMessageKey|trans({ '%status_code%': status_code }, 'exceptions') %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% block main %}
|
<h1>{{ errorTitleTrans }}</h1>
|
||||||
<h1 class="text-danger">{{ 'http_error.name'|trans({ '%status_code%': status_code }) }}</h1>
|
<h2>{{ status_code }}: {{ status_text }}</h2>
|
||||||
|
|
||||||
<p class="lead">
|
<div>
|
||||||
{{ 'http_error.description'|trans({ '%status_code%': status_code }) }}
|
{{ errorMessageTrans }}
|
||||||
</p>
|
</div>
|
||||||
<p>
|
</body>
|
||||||
{{ 'http_error.suggestion'|trans({ '%url%': path('homepage') })|raw }}
|
</html>
|
||||||
</p>
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block sidebar %}
|
|
||||||
{{ parent() }}
|
|
||||||
{% endblock %}
|
|
||||||
@@ -1,28 +1,31 @@
|
|||||||
{#
|
|
||||||
This template is used to render errors of type HTTP 403 (Forbidden)
|
|
||||||
|
|
||||||
This is the simplest way to customize error pages in Symfony applications.
|
|
||||||
In case you need it, you can also hook into the internal exception handling
|
|
||||||
made by Symfony. This allows you to perform advanced tasks and even recover
|
|
||||||
your application from some errors.
|
|
||||||
See http://symfony.com/doc/current/cookbook/controller/error_pages.html
|
|
||||||
#}
|
|
||||||
|
|
||||||
{% extends 'base.html.twig' %}
|
{% extends 'base.html.twig' %}
|
||||||
|
{% block page_title %}{{ 'http_error.title'|trans({}, 'exceptions') }}{% endblock %}
|
||||||
{% block body_id 'error' %}
|
{% block page_subtitle %}{{ status_code }}{% endblock %}
|
||||||
|
|
||||||
{% block main %}
|
{% block main %}
|
||||||
<h1 class="text-danger"><i class="fa fa-unlock-alt"></i> {{ 'http_error.name'|trans({ '%status_code%': 403 }) }}</h1>
|
{% set errorTitleKey = "http_error_#{status_code}.description" %}
|
||||||
|
{% set errorTitleTrans = errorTitleKey|trans({ '%status_code%': status_code }, 'exceptions') %}
|
||||||
|
{% if errorTitleKey == errorTitleTrans %}
|
||||||
|
{% set errorTitleKey = 'http_error.description' %}
|
||||||
|
{% set errorTitleTrans = errorTitleKey|trans({ '%status_code%': status_code }, 'exceptions') %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
<p class="lead">
|
{% set errorMessageKey = "http_error_#{status_code}.suggestion" %}
|
||||||
{{ 'http_error_403.description'|trans }}
|
{% set errorMessageTrans = errorMessageKey|trans({ '%status_code%': status_code }, 'exceptions') %}
|
||||||
</p>
|
{% if errorMessageKey == errorMessageTrans %}
|
||||||
<p>
|
{% set errorMessageKey = 'http_error.suggestion' %}
|
||||||
{{ 'http_error_403.suggestion'|trans }}
|
{% set errorMessageTrans = errorMessageKey|trans({ '%status_code%': status_code }, 'exceptions') %}
|
||||||
</p>
|
{% endif %}
|
||||||
|
|
||||||
|
<div class="error-page">
|
||||||
|
<h2 class="headline text-yellow"> {{ status_code }}</h2>
|
||||||
|
|
||||||
|
<div class="error-content">
|
||||||
|
<h3><i class="fa fa-unlock-alt text-yellow"></i> {{ errorTitleTrans }}</h3>
|
||||||
|
<p>{{ errorMessageTrans }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block sidebar %}
|
{% block avanzu_control_sidebar %}{% endblock %}
|
||||||
{{ parent() }}
|
{% block avanzu_navbar_control_sidebar_toggle %}{% endblock %}
|
||||||
{% endblock %}
|
|
||||||
|
|||||||
@@ -1,28 +1,31 @@
|
|||||||
{#
|
|
||||||
This template is used to render errors of type HTTP 404 (Not Found)
|
|
||||||
|
|
||||||
This is the simplest way to customize error pages in Symfony applications.
|
|
||||||
In case you need it, you can also hook into the internal exception handling
|
|
||||||
made by Symfony. This allows you to perform advanced tasks and even recover
|
|
||||||
your application from some errors.
|
|
||||||
See http://symfony.com/doc/current/cookbook/controller/error_pages.html
|
|
||||||
#}
|
|
||||||
|
|
||||||
{% extends 'base.html.twig' %}
|
{% extends 'base.html.twig' %}
|
||||||
|
{% block page_title %}{{ 'http_error.title'|trans({}, 'exceptions') }}{% endblock %}
|
||||||
{% block body_id 'error' %}
|
{% block page_subtitle %}{{ status_code }}{% endblock %}
|
||||||
|
|
||||||
{% block main %}
|
{% block main %}
|
||||||
<h1 class="text-danger">{{ 'http_error.name'|trans({ '%status_code%': 404 }) }}</h1>
|
{% set errorTitleKey = "http_error_#{status_code}.description" %}
|
||||||
|
{% set errorTitleTrans = errorTitleKey|trans({ '%status_code%': status_code }, 'exceptions') %}
|
||||||
|
{% if errorTitleKey == errorTitleTrans %}
|
||||||
|
{% set errorTitleKey = 'http_error.description' %}
|
||||||
|
{% set errorTitleTrans = errorTitleKey|trans({ '%status_code%': status_code }, 'exceptions') %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
<p class="lead">
|
{% set errorMessageKey = "http_error_#{status_code}.suggestion" %}
|
||||||
{{ 'http_error_404.description'|trans }}
|
{% set errorMessageTrans = errorMessageKey|trans({ '%status_code%': status_code }, 'exceptions') %}
|
||||||
</p>
|
{% if errorMessageKey == errorMessageTrans %}
|
||||||
<p>
|
{% set errorMessageKey = 'http_error.suggestion' %}
|
||||||
{{ 'http_error_404.suggestion'|trans({ '%url%': path('homepage') })|raw }}
|
{% set errorMessageTrans = errorMessageKey|trans({ '%status_code%': status_code }, 'exceptions') %}
|
||||||
</p>
|
{% endif %}
|
||||||
|
|
||||||
|
<div class="error-page">
|
||||||
|
<h2 class="headline text-yellow"> {{ status_code }}</h2>
|
||||||
|
|
||||||
|
<div class="error-content">
|
||||||
|
<h3><i class="fa fa-unlock-alt text-yellow"></i> {{ errorTitleTrans }}</h3>
|
||||||
|
<p>{{ errorMessageTrans }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block sidebar %}
|
{% block avanzu_control_sidebar %}{% endblock %}
|
||||||
{{ parent() }}
|
{% block avanzu_navbar_control_sidebar_toggle %}{% endblock %}
|
||||||
{% endblock %}
|
|
||||||
|
|||||||
@@ -7,22 +7,4 @@
|
|||||||
your application from some errors.
|
your application from some errors.
|
||||||
See http://symfony.com/doc/current/cookbook/controller/error_pages.html
|
See http://symfony.com/doc/current/cookbook/controller/error_pages.html
|
||||||
#}
|
#}
|
||||||
|
{% extends '@Twig/Exception/error.html.twig' %}
|
||||||
{% extends 'base.html.twig' %}
|
|
||||||
|
|
||||||
{% block body_id 'error' %}
|
|
||||||
|
|
||||||
{% block main %}
|
|
||||||
<h1 class="text-danger">{{ 'http_error.name'|trans({ '%status_code%': 500 }) }}</h1>
|
|
||||||
|
|
||||||
<p class="lead">
|
|
||||||
{{ 'http_error_500.description'|trans }}
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
{{ 'http_error_500.suggestion'|trans({ '%url%': path('homepage') })|raw }}
|
|
||||||
</p>
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block sidebar %}
|
|
||||||
{{ parent() }}
|
|
||||||
{% endblock %}
|
|
||||||
|
|||||||
@@ -6,6 +6,48 @@
|
|||||||
<source>access.denied</source>
|
<source>access.denied</source>
|
||||||
<target>Der Zugriff wurde verweigert</target>
|
<target>Der Zugriff wurde verweigert</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="stacktrace">
|
||||||
|
<source>stacktrace</source>
|
||||||
|
<target>Das Problem ist hier passiert</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="http_error.title">
|
||||||
|
<source>http_error.title</source>
|
||||||
|
<target>Fehler</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="http_error.description">
|
||||||
|
<source>http_error.description</source>
|
||||||
|
<target>Oops! Ein Fehler ist aufgetreten.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="http_error.suggestion">
|
||||||
|
<source>http_error.suggestion</source>
|
||||||
|
<target>
|
||||||
|
Ein unerwarteter Fehler ist aufgetreten.
|
||||||
|
Möglicherweise haben Sie einen Bug gefunden, daher kontaktieren Sie bitte ihren Administrator
|
||||||
|
wenn der Fehler nach einem erneuten Versuch immer noch vorhanden sein sollte.
|
||||||
|
</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="http_error_404.description">
|
||||||
|
<source>http_error_404.description</source>
|
||||||
|
<target>Oops! Seite wurde nicht gefunden.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="http_error_404.suggestion">
|
||||||
|
<source>http_error_404.suggestion</source>
|
||||||
|
<target>
|
||||||
|
Wir konnten die angeforderte Seite leider nicht finden.
|
||||||
|
Bitte wechseln Sie zurück zu ihrem Dashboard und starten von vorne.
|
||||||
|
</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="http_error_403.description">
|
||||||
|
<source>http_error_403.description</source>
|
||||||
|
<target>Diese Seite ist geschützt.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="http_error_403.suggestion">
|
||||||
|
<source>http_error_403.suggestion</source>
|
||||||
|
<target>
|
||||||
|
Entschuldigung, Sie haben nicht genügend Berechtigungen um diese Seite zu sehen.
|
||||||
|
Bitte sprechen Sie mit ihrem Administrator wenn Sie dies für einen Fehler halten.
|
||||||
|
</target>
|
||||||
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
</xliff>
|
</xliff>
|
||||||
|
|||||||
@@ -6,6 +6,48 @@
|
|||||||
<source>access.denied</source>
|
<source>access.denied</source>
|
||||||
<target>Access was denied</target>
|
<target>Access was denied</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="stacktrace">
|
||||||
|
<source>stacktrace</source>
|
||||||
|
<target>The problem occured here</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="http_error.title">
|
||||||
|
<source>http_error.title</source>
|
||||||
|
<target>Error</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="http_error.description">
|
||||||
|
<source>http_error.description</source>
|
||||||
|
<target>Oops! An error occured.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="http_error.suggestion">
|
||||||
|
<source>http_error.suggestion</source>
|
||||||
|
<target>
|
||||||
|
An unexpected error occured, please try again.
|
||||||
|
You may have found a bug, so please contact your administrator if the problem
|
||||||
|
doesn't go away after you tried it again.
|
||||||
|
</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="http_error_404.description">
|
||||||
|
<source>http_error_404.description</source>
|
||||||
|
<target>Oops! Page not found.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="http_error_404.suggestion">
|
||||||
|
<source>http_error_404.suggestion</source>
|
||||||
|
<target>
|
||||||
|
We could not find the page you were looking for.
|
||||||
|
Meanwhile, you may return to your dashboard and start over.
|
||||||
|
</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="http_error_403.description">
|
||||||
|
<source>http_error_403.description</source>
|
||||||
|
<target>This page is restricted.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="http_error_403.suggestion">
|
||||||
|
<source>http_error_403.suggestion</source>
|
||||||
|
<target>
|
||||||
|
Sorry, but you do not have sufficient permissions to see this page.
|
||||||
|
Please talk to your administrator if you think this is an error.
|
||||||
|
</target>
|
||||||
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
</xliff>
|
</xliff>
|
||||||
|
|||||||
Reference in New Issue
Block a user