2013-04-22 13 views
5

Mam zamiar utworzyć wielojęzyczną witrynę, w której angielski będzie używany do publicznych stron, a następnie arabski dla administratora. Nigdy wcześniej nie pracowałem nad tym i nie jestem pewien, od czego zacząć. Może ci, którzy wcześniej robili witryny wielojęzyczne, mogą mi odpowiedzieć na kilka pytań.Uruchamianie witryny wielojęzycznej w Laravel

  1. Czy w tym samym stole można zapisać język angielski i arabski? Jeśli tak, to mój układ zawsze był utf-8 Unicode, czy to oznacza, że ​​nie mogę już używać utf8?
  2. Czy części arabskie mojej witryny wymagają osobnego stołu? Jeśli tak, to jakie sortowanie?
  3. W moich widokach, co mam wpisać w zastępstwie dla <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />?
  4. Czy jest coś, co powinienem wiedzieć o założeniu strony wielojęzycznej?

Z góry dziękuję! Naprawdę jestem trochę zagubiony, od czego zacząć.

Odpowiedz

5
  1. Tak, można użyć utf8
  2. Nie można używać zarówno arabskim i angielskim w tej samej tabeli
  3. arabski charset jest iso-8859-6, więc trzeba zmienić atrybut charset w admin widoki
  4. prawdopodobnie chcesz użyć body { direction: rtl; } w css dla stron arabskich

można znaleźć te linki przydatne:

Gdy chcesz sprawdzić poprawność pól formularza za pomocą plików tłumaczeniowe laravel'S (application/language/XX/validation.php), można stwierdzić, że :attribute zastępczy wykorzystuje atrybutu pola formularza za name, w wyniku najczęściej tłumaczony komunikat o błędzie ze słowem "email" (lub czymkolwiek innym) w języku angielskim. Możesz obejść ten problem, używając atrybutu Validation Attributes, aby połączyć angielskie nazwy pól z arabskim odpowiednikiem. Jeśli uważasz, że już przetłumaczono je w innym pliku językowym, możesz użyć następującego kodu:

'attributes' => array_merge(
    Lang::file('application', 'ar', 'filename_without_extension'), 
    Lang::file('application', 'ar', 'another_file') 
), 
0

Domyślnie Laravel używa pola e-mail do uwierzytelnienia. Jeśli chcesz to zmienić, możesz zdefiniować metodę nazwy użytkownika na swoim kontrolerze LoginController:

public function username() 
{ 
    return 'username'; 
}