Angular 部署多個語言環(huán)境

2022-07-08 11:13 更新

部署多個語言環(huán)境

如果 ?myapp ?是包含項目可分發(fā)文件的目錄,你通常會在語言環(huán)境目錄中為不同的語言環(huán)境提供不同的版本,比如法語版的 ?myapp/fr? 和西班牙語版的 ?myapp/es?。

帶有 ?href? 屬性的 HTML ?base ?標(biāo)簽指定了相對鏈接的基本 URI 或 URL。如果你將工作空間構(gòu)建配置文件 ?angular.json? 中的 ?"localize"? 選項設(shè)置為 ?true ?或語言環(huán)境 ID 數(shù)組,CLI 會為應(yīng)用程序的每個版本調(diào)整 base ?href?。要為應(yīng)用程序的每個版本調(diào)整 base ?href?,CLI 會將語言環(huán)境添加到配置的 ?"baseHref"? 中。在工作區(qū)配置文件 ?angular.json? 中為每個語言環(huán)境指定 ?"baseHref"?。以下示例展示了設(shè)置為空字符串的 ?"baseHref"?。

"projects": {
    "angular.io-example": {
      // ...
      "i18n": {
        "sourceLocale": "en-US",
        "locales": {
          "fr": {
            "translation": "src/locale/messages.fr.xlf",
            "baseHref": ""
          }
        }
      },
      "architect": {
        // ...
      }
    }
  }
  // ...
}

此外,要在編譯時聲明 base ?href?,請將在 CLI 中使用帶有 ?--baseHref? 選項的 ?ng build? 。

配置服務(wù)器

多語言的典型部署方式是為來自不同子目錄的每種語言提供服務(wù)。使用 ?Accept-Language? HTTP 標(biāo)頭將用戶重定向到瀏覽器中定義的首選語言。如果用戶未定義首選語言,或者首選語言不可用,則服務(wù)器將回退到默認(rèn)語言。要更改語言,就轉(zhuǎn)到另一個子目錄。 子目錄的更改通常使用應(yīng)用程序中實現(xiàn)的菜單進(jìn)行。

Nginx 范例

以下示例展示了 Nginx 配置。

http {
    # Browser preferred language detection (does NOT require
    # AcceptLanguageModule)
    map $http_accept_language $accept_language {
        ~*^de de;
        ~*^fr fr;
        ~*^en en;
    }
    # ...
}

server {
    listen 80;
    server_name localhost;
    root /www/data;

    # Fallback to default language if no preference defined by browser
    if ($accept_language ~ "^$") {
        set $accept_language "fr";
    }

    # Redirect "/" to Angular application in the preferred language of the browser
    rewrite ^/$ /$accept_language permanent;

    # Everything under the Angular application is always redirected to Angular in the
    # correct language
    location ~ ^/(fr|de|en) {
        try_files $uri /$1/index.html?$args;
    }
    # ...
}

Apache 范例

以下示例展示了 Apache 配置。

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot /www/data
    <Directory "/www/data">
        RewriteEngine on
        RewriteBase /
        RewriteRule ^../index\.html$ - [L]

        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule (..) $1/index.html [L]

        RewriteCond %{HTTP:Accept-Language} ^de [NC]
        RewriteRule ^$ /de/ [R]

        RewriteCond %{HTTP:Accept-Language} ^en [NC]
        RewriteRule ^$ /en/ [R]

        RewriteCond %{HTTP:Accept-Language} !^en [NC]
        RewriteCond %{HTTP:Accept-Language} !^de [NC]
        RewriteRule ^$ /fr/ [R]
    </Directory>
</VirtualHost>


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號