Uzyskaj wybranego języka hosting Drupal
Jest możliwe, aby dostosować proces negocjacji języka zarówno w jaki sposób możemy wykryć język użytkownika, a także od rodzaju danych, które są zainteresowanie.
Rokowania język API opiera się na dwóch głównych założeniach:
- Typy języku. które opisują możliwe rodzaje translacji treści
- dostawcy języku. które pozwalają wykryć Drupal, który język powinien służyć użytkownikowi (zauważ, że usługodawcy język nazywane są metody językowe w Drupal 8)
Ustawienia domyślne dostarczane przez Drupala
Typy języków
Drupal rdzeń definiuje trzy typy wbudowane językowych:
Język interfejsu jest głównym językiem na stronie. Jest on używany do przedstawienia elementów interfejsu użytkownika, takie jak przetłumaczone tytuły, etykiety, tekst pomocy i wiadomości. język zawartość służy do wyboru w jakim języku do wyświetlania treści, które są dostępne w więcej niż jednym języku (patrz wielojęzyczne możliwości nowego pola API dla szczegółów). URL język ten jest językiem związane z adresami URL. Podczas generowania adresów URL, wartość ta zostanie wykorzystana przez url () jako domyślny, jeśli nie jest wyraźna preferencja.
Różne typy językowe często podzielają te same wartości, ale potem może mieć niezależne wartości w razie potrzeby.
Dostawcy językowe
Rdzeń składa się z następujących dostawców:
- URL - Określ język w adresie URL (prefix ścieżki lub domeny).
- Sesja - Określić język z parametru żądanie / sesji.
- Użytkownik - Follow preferowany język użytkownika.
- Przeglądarka - Określić język z ustawień językowych twojej.
- Domyślny język - Użyj domyślnego języka witryny.
Oto obraz, który pokazuje zależność pomiędzy typami i dostawców:
Definiowanie typów językowych
Zaczynając w Drupal 7, API języka pozwala przyczyniły moduły zdefiniować dodatkowe typy językowych poprzez hook_language_types_info () i zmiany definicji istniejącego typu język poprzez hook_language_types_info_alter ().
Typ język może być konfigurowane lub naprawione. Konfigurowalny typ języka pojawia się w Konfiguracja> Regionalne i język> Języki> Wykrywanie i wybór strony, gdzie można skonfigurować dostawcy językowe dla tego typu języka. Są też trwałe rodzaje językowe, które z góry ustalone ustawienia negocjacyjne (moduł zdefiniowane), a zatem nie pojawiają się na stronie konfiguracji. Oto fragment kodu, który sprawia, że język zawartości (które domyślnie dziedziczy wartości język interfejsu użytkownika) konfigurowalne:
Każdy typ konfigurowalny język będzie mieć swój własny (niezależny) Język blok przełącznika. Oczywiście, jeśli dwa typy językowe są skonfigurowane w ten sam sposób, ich język blokuje Switcher będzie funkcjonalnie identyczne i będą działać na obu typach językowych.
W Drupal 6.x, istnieje tylko jeden rodzaj języka, nazwany właśnie język. Podczas inicjalizacji języka wybrane ustawienia negocjacyjne język są wykorzystywane do określenia jego wartości. W Drupala 7.x, ten sam proces dzieje się dla każdego określonego rodzaju języka, zobaczyć drupal_language_initialize () aby uzyskać szczegółowe informacje.
Definiowanie niestandardowych dostawców językowych
Każdy rodzaj języka może mieć różne ustawienia negocjacyjne język, to znaczy każdy rodzaj języka może mieć inny zestaw metod wykrywania języka. lub dostawców. przypisane do niego.
dostawcy językowe są proste funkcje zwrotne, które implementują szczególną logikę powrotu kod języka. Na przykład, locale_language_from_url () wyszukuje ważnego przedrostek ścieżki lub nazwy domeny w bieżącym adresie URL żądania. Jeśli dostawca język nie zwraca poprawny kod języka, kolejnym dostawcą związane z rodzajem języka (na podstawie wagi operatora) jest wywoływany. W ten sposób pojęcie awaryjnej jest uogólnione i niezwiązane z prefiksu ustalona path> preferencji użytkownika> Ustawienia przeglądarki> Default systemu językowego stosowanego w Drupal 6.x.
Również dostawcy językowe są definiowane przez moduł-hook_language_negotiation_info () i definicje dostawców językowe mogą być zmieniane przez hook_language_negotiation_info_alter (). Oto przykładowy fragment kodu, który pozwala prefiksy ścieżki być ignorowane ścieżek administracyjnych:
Aby powyższe zmiany mają być zrealizowane, „Wykrywanie i wybór języka” potrzebuje formularz należy złożyć.
definicje dostawcy język może zawierać dwa kolejne wywołania zwrotne oprócz języka samego dostawcy:
- Jeśli dostawca język mogą skorzystać z bloku język przełącznika, callback przełącznik pozwoli na powrót linki zmienić język dostosować swoją logikę, zobacz locale_language_switcher_url () na przykład.
- Jeśli dostawca język musi przepisać adresy URL, może określić url_rewrite zwrotnego, która zapewni logikę przepisywanie.