add initial localization support for the front end #215

This commit is contained in:
jonaswinkler 2020-12-30 00:26:06 +01:00
parent d909010f08
commit 5395208b00
5 changed files with 26 additions and 5 deletions

View File

@ -13,6 +13,12 @@
"root": "", "root": "",
"sourceRoot": "src", "sourceRoot": "src",
"prefix": "app", "prefix": "app",
"i18n": {
"sourceLocale": "en-US",
"locales": {
"de": "src/locale/messages.de-DE.xlf"
}
},
"architect": { "architect": {
"build": { "build": {
"builder": "@angular-devkit/build-angular:browser", "builder": "@angular-devkit/build-angular:browser",
@ -23,6 +29,7 @@
"main": "src/main.ts", "main": "src/main.ts",
"polyfills": "src/polyfills.ts", "polyfills": "src/polyfills.ts",
"tsConfig": "tsconfig.app.json", "tsConfig": "tsconfig.app.json",
"localize": true,
"aot": true, "aot": true,
"assets": [ "assets": [
"src/favicon.ico", "src/favicon.ico",

View File

@ -12,11 +12,11 @@
<meta name="full_name" content="{{full_name}}"> <meta name="full_name" content="{{full_name}}">
<meta name="cookie_prefix" content="{{cookie_prefix}}"> <meta name="cookie_prefix" content="{{cookie_prefix}}">
<link rel="icon" type="image/x-icon" href="favicon.ico"> <link rel="icon" type="image/x-icon" href="favicon.ico">
<link rel="stylesheet" href="{% static 'frontend/styles.css' %}"></head> <link rel="stylesheet" href="{% static styles_css %}"></head>
<body> <body>
<app-root>Loading...</app-root> <app-root>Loading...</app-root>
<script src="{% static 'frontend/runtime.js' %}" defer></script> <script src="{% static runtime_js %}" defer></script>
<script src="{% static 'frontend/polyfills.js' %}" defer></script> <script src="{% static polyfills_js %}" defer></script>
<script src="{% static 'frontend/main.js' %}" defer></script> <script src="{% static main_js %}" defer></script>
</body> </body>
</html> </html>

View File

@ -7,6 +7,7 @@ from django.conf import settings
from django.db.models import Count, Max, Case, When, IntegerField from django.db.models import Count, Max, Case, When, IntegerField
from django.db.models.functions import Lower from django.db.models.functions import Lower
from django.http import HttpResponse, HttpResponseBadRequest, Http404 from django.http import HttpResponse, HttpResponseBadRequest, Http404
from django.utils.translation import get_language
from django.views.decorators.cache import cache_control from django.views.decorators.cache import cache_control
from django.views.generic import TemplateView from django.views.generic import TemplateView
from django_filters.rest_framework import DjangoFilterBackend from django_filters.rest_framework import DjangoFilterBackend
@ -61,6 +62,10 @@ class IndexView(TemplateView):
context['cookie_prefix'] = settings.COOKIE_PREFIX context['cookie_prefix'] = settings.COOKIE_PREFIX
context['username'] = self.request.user.username context['username'] = self.request.user.username
context['full_name'] = self.request.user.get_full_name() context['full_name'] = self.request.user.get_full_name()
context['styles_css'] = f"frontend/{get_language()}/styles.css"
context['runtime_js'] = f"frontend/{get_language()}/runtime.js"
context['polyfills_js'] = f"frontend/{get_language()}/polyfills.js"
context['main_js'] = f"frontend/{get_language()}/main.js"
return context return context

View File

@ -6,6 +6,8 @@ import re
from dotenv import load_dotenv from dotenv import load_dotenv
from django.utils.translation import gettext_lazy as _
# Tap paperless.conf if it's available # Tap paperless.conf if it's available
if os.path.exists("../paperless.conf"): if os.path.exists("../paperless.conf"):
load_dotenv("../paperless.conf") load_dotenv("../paperless.conf")
@ -117,6 +119,7 @@ MIDDLEWARE = [
'whitenoise.middleware.WhiteNoiseMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware', 'corsheaders.middleware.CorsMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware', 'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware',
@ -246,6 +249,11 @@ if os.getenv("PAPERLESS_DBHOST"):
LANGUAGE_CODE = 'en-us' LANGUAGE_CODE = 'en-us'
LANGUAGES = [
("en-us", _("English")),
("de", _("German"))
]
TIME_ZONE = os.getenv("PAPERLESS_TIME_ZONE", "UTC") TIME_ZONE = os.getenv("PAPERLESS_TIME_ZONE", "UTC")
USE_I18N = True USE_I18N = True

View File

@ -88,7 +88,8 @@ urlpatterns = [
# Frontend assets TODO: this is pretty bad, but it works. # Frontend assets TODO: this is pretty bad, but it works.
path('assets/<path:path>', path('assets/<path:path>',
RedirectView.as_view(url='/static/frontend/assets/%(path)s')), RedirectView.as_view(url='/static/frontend/en-us/assets/%(path)s')),
# TODO: with localization, this is even worse! :/
# login, logout # login, logout
path('accounts/', include('django.contrib.auth.urls')), path('accounts/', include('django.contrib.auth.urls')),