Detaylı Rehberler
Uluslararasılaştırma

Birden fazla yerel ayarı dağıtma

myapp projenizin dağıtılabilir dosyalarını içeren dizinse, genellikle farklı yerel ayarlar için farklı sürümleri yerel ayar dizinlerinde kullanılabilir hale getirirsiniz. Örneğin, Fransızca sürümünüz myapp/fr dizininde ve İspanyolca sürümünüz myapp/es dizininde bulunur.

href özniteliğine sahip HTML base etiketi, göreli bağlantılar için temel URI'yi veya URL'yi belirtir. angular.json çalışma alanı derleme yapılandırma dosyasında "localize" seçeneğini true veya bir yerel ayar kimlikleri dizisine ayarlarsanız, CLI her uygulama sürümü için temel href'i ayarlar. Her uygulama sürümü için temel href'i ayarlamak amacıyla CLI, yapılandırılmış "subPath"'e yerel ayarı ekler. angular.json çalışma alanı derleme yapılandırma dosyanızda her yerel ayar için "subPath" belirtin. Aşağıdaki örnek, boş bir dizeye ayarlanmış "subPath"'i gösterir.

angular.json

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

Sunucu yapılandırma

Birden fazla dilin tipik dağıtımı, her dili farklı bir alt dizinden sunar. Kullanıcılar, Accept-Language HTTP başlığı kullanılarak tarayıcıda tanımlanan tercih edilen dile yönlendirilir. Kullanıcı tercih edilen bir dil tanımlamamışsa veya tercih edilen dil mevcut değilse, sunucu varsayılan dile geri döner. Dili değiştirmek için mevcut konumunuzu başka bir alt dizine değiştirin. Alt dizin değişikliği genellikle uygulamada uygulanan bir menü aracılığıyla gerçekleşir.

Uygulamaları uzak bir sunucuya nasıl dağıtacağınız hakkında daha fazla bilgi için Dağıtım belgesine bakın.

IMPORTANT: Sunucu tarafı oluşturma ile outputMode server olarak ayarlanmışsa, Angular Accept-Language HTTP başlığına dayalı olarak yeniden yönlendirmeyi otomatik olarak dinamik şekilde yönetir. Bu, manuel sunucu veya yapılandırma ayarlamalarına olan ihtiyacı ortadan kaldırarak dağıtımı basitleştirir.

Nginx örneği

Aşağıdaki örnek bir Nginx yapılandırmasını gösterir.

http {
    # Browser preferred language detection (does NOT require
    # AcceptLanguageModule)
    map $http_accept_language $accept_language {
        ~*^de de;
        ~*^fr fr;
        ~*^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|$) {
        if ($accept_language = "") {
            try_files $uri /index.html?$args;
        }
        try_files $uri /$1/index.html?$args;
    }
    # ...
}

Apache örneği

Aşağıdaki örnek bir Apache yapılandırmasını gösterir.

# docregion
<VirtualHost *:80>
    ServerName localhost
    DocumentRoot /www/data

    <Directory "/www/data">
        # Enable rewrite engine for URL manipulation
        RewriteEngine on
        RewriteBase /

        # Serve 'index.html' for root-level access
        RewriteRule ^../index\.html$ - [L]

        # If the requested file or directory does not exist, redirect to 'index.html'
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule (..) $1/index.html [L]

        # Language-based redirection based on HTTP Accept-Language header

        # Redirect German users to the '/de/' directory
        RewriteCond %{HTTP:Accept-Language} ^de [NC]
        RewriteRule ^$ /de/ [R]

        # Redirect English-speaking users to the '/en/' directory
        RewriteCond %{HTTP:Accept-Language} ^en [NC]
        RewriteRule ^$ /en/ [R]

        # Redirect users with unsupported languages (not 'en' or 'de') to the '/fr/' directory
        RewriteCond %{HTTP:Accept-Language} !^en [NC]
        RewriteCond %{HTTP:Accept-Language} !^de [NC]
        RewriteRule ^$ /fr/ [R]
    </Directory>
</VirtualHost>