Wie man nginx verwendet, um mehrsprachige I18N Angular-UIs mit @angular/localize bereitzustellen
Dies ist meine nginx-Konfiguration, die automatisch eine de- und en-mehrsprachig internationalisierte Angular-UI über Docker bereitstellt.
Wenn der Benutzer nicht bereits eine sprachspezifische Version der Site aufgerufen hat, wird er auf die Version umgeleitet, die den Spracheinstellungen seines Browsers entspricht (oder einem Standard von de).
Beim Hinzufügen zusätzlicher Sprachen müssen Sie die nginx.conf-Datei aktualisieren, indem Sie einen neuen Location-Block für die zusätzliche Sprache kopieren, plus die $accept_language-Zeile, um eine neue Sprache automatisch zu akzeptieren.
Nginx-Konfigurationsdatei
nginx_i18n_conf.conf
map $http_accept_language $accept_language {
~*^de de;
~*^en en;
default de;
}
server {
listen 80 default_server;
root /app/browser;
index index.html;
# Disable access & error logs
access_log off;
error_log /var/log/nginx/error.log;
# Redirect "/" to Angular application in the preferred language of the browser
add_header Cache-Control "public, max-age=180";
# Serve individual languages
location /en/ {
try_files $uri$args /en/index.html?$args;
}
location /de/ {
try_files $uri$args /de/index.html?$args;
}
# Redirect to default language
location = / {
return 302 /$accept_language/;
}
# Redirect other URLs to default language
location / {
return 302 /$accept_language/$uri$args;
}
}Angular-Buildskript
Rufen Sie dieses Shell-Skript direkt vor dem Erstellen des Docker-Images auf
build_angular_i18n.sh
ng build --aot --named-chunks=true --optimization --output-hashing=all --stats-json $@Dockerfile
Dockerfile
FROM nginx:1.27.5-alpine-slim
WORKDIR /app
# Copy config
COPY nginx.conf /etc/nginx/conf.d/default.conf
# Copy dist files to /app
COPY dist/mytheme/. ./If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow