2016-04-25 12 views
12

Mam poniżej kod w moim kontrolerze.Brak wyskakującego okienka tłumaczenia językowego w przeglądarce DOM w przeglądarce: Laravel 5.2

public function AllCountries() { 
    $Countries = (new \App\DataAccess\CountryData())->GetAllCountries(); 
    app()->setLocale('fr'); 
    return view('Country.List')->with('Countries', $Countries->getData()->CountryList); 
} 

Określenie sposobu pobierane dane przedstawiono poniżej.

public function GetAllCountries() { 
    return response()->json(['CountryList' => \App\Models\CountryModel::all()]); 
} 

W pliku języka angielskiego Mam poniżej kodu.

return [ 
    'CountryName' => "E Country" 
]; 

W języku francuskim pliku językowego Mam poniżej kodu.

return [ 
    'CountryName' => "F Country" 
]; 

Biorąc pliku Mam poniżej kodu.

{!! trans('CountriesList.CountryName') !!} 

Normalnie, gdy odwiedza witrynę, która nie jest domyślny język ustawiony w naszej przeglądarce widzimy powiadomienie przetłumaczyć stronę na stronie obciążenia. Zobacz poniższy zrzut ekranu:

enter image description here

Jednak nie dzieje się na mojej stronie internetowej. Chociaż widzę język francuski, powiadomienie o tłumaczeniu nie pojawia się, więc mogę przetłumaczyć je w języku angielskim. Czemu?

+0

Po kliknięciu prawym przyciskiem myszy na swojej stronie widzisz opcję tłumaczenia? – Derek

+0

Prawym przyciskiem myszy kliknąłem stronę internetową, a następnie zobaczyłem opcję tłumaczenia, ale kiedy kliknąłem opcję Tłumacz, nie przetłumaczyłem klucza 'CountryName' i możesz sprawdzić mój kontroler, że zestaw językowy jest francuski. Inna sprawa: Dlaczego nie widzę opcji tłumaczenia przy ładowaniu strony? Dlaczego powinienem kliknąć prawym przyciskiem myszy na stronę, aby ją przetłumaczyć? – Pankaj

Odpowiedz

8

Tłumaczenie Chrome nie zmienia zmiennych szablonu ani nie informuje witryny, że powinien wyświetlać inny język. Używa go do przetłumaczenia go (innymi słowy: nie wyszuka pliku w języku angielskim na serwerze, aby przetłumaczyć "F Country" na "E Country", ale przetłumaczyłby "F Country" na google translate).

Aby otrzymać wiadomość, witryna musi zawierać słowa francuskie. Spróbuj zastąpić "F Country" w swoim pliku językowym prawdziwym francuskim słowem (lub może całe zdanie) lub po prostu umieść trochę francuskiej treści na stronie testowej.

Jeśli nie dostaniesz wiadomości, sprawdź ustawienia chrome ("Tłumaczenie strony oferty, gdy strona nie jest w ...") lub jeśli ją wyłączyłeś dla swojej witryny.

Następnie sprawdź, czy metadane witryny zawierają <meta name=”google” value=”notranslate”>, spowoduje to wyłączenie wiadomości dla Twojej witryny.

Twoja trans (...) może być wykorzystana do przetłumaczenia Twojej strony na końcu: Możesz np. ustaw zmienną języka lokalnego (sesję) przyciskiem "Jestem Francuzem", aby umożliwić użytkownikowi zmianę, używając ustawień językowych przeglądarki lub w inny sposób - ale to nie ma nic wspólnego z tłumaczeniem chrome, a zwłaszcza działałoby na inne przeglądarki.

Aktualizacja skoro pytasz co pliki językowe dla:

Są one używane podczas parsowania plików (na przykład podczas tworzenia strony na żądanie użytkownika); tworzy kod (który jest zwykle językiem nieprzyzwoitym) i zarządza treścią: aby dodać lub edytować język, nie trzeba zmieniać plików kodujących i ryzykować zniszczenie czegoś, wystarczy zmienić app()->setLocale w jednym punkcie. Ale to przetwarzanie odbywa się, zanim treść trafi do użytkownika: więc w zasadzie albo wyślesz to zdanie w języku francuskim, albo po angielsku do użytkownika, ale nie obie.

Możesz oczywiście użyć app() -> setLocale ze zmienną, która jest specyficzna dla użytkownika (lub "sesji"). W niektórych funkcji, które użytkownik może zadzwonić (np action jakiejś formie) używać

Session::put('language','fr'); 

Spowoduje to ustawienie sesji-zmiennej, można użyć tej zmiennej od teraz, aby ustawić język używany do analizowania swojej pliki (na swój koniec!) nie o stałej wartości, ale sesja zmiennej poprzez

app()->setLocale(Session::get('language',Config::get('app.locale')));  

Więc jeszcze raz: nadal wysyłać treści tylko w jednym języku dla użytkownika, ale czy użytkownik może wybrać, które taki powinien być. Ustawienie aktywnego języka zawsze musi być wykonane przed analizą żądania (np. Umieść je w klasie middleware, która działa (jest) dla każdego żądania).

Możesz ustawić zmienną sesji według ustawień językowych przeglądarki, adresu URL (np. 404 inne możliwości.

+0

Jeśli chrome użyje tłumacza Google, jaki jest pożytek z implementacji plików językowych? Chodziło mi o to, co jest pursosem folderu "Resource/lang" w architekturze Laravel? – Pankaj

1

Langelski język źródłowy nie ma nic wspólnego z tłumaczeniem w przeglądarce. Żądanie zawiera locale i laravel może uszanować to poprzez resource-lang. W wyniku tego laravel wyświetli tekst w lokalnych ustawieniach przeglądarki klienta poprzez napisany przez ciebie kod. Więcej informacji tutaj: content negotiation

4

Google używa różnych części witryny w celu określenia języka i (prawdopodobnie) oferuje wskazówkę dotyczącą tłumaczenia.

następujące rzeczy można spróbować, aby upewnić się, że są one prawidłowo ustawione i nadzieja, Chrome rozważa te:

  • HTML lang atrybut
    • Przykład: <html lang="fr-FR" dir="ltr">
    • ten wskazuje w jakim języku strona jest prezentowana.
  • hreflang linków
    • Przykład: <link rel="alternate" hreflang="fr" href="http://fr.example.com/" />
    • Jeśli masz linki do różnych językach na swojej stronie możesz pomóc Google w celu określenia, które łączą prowadzi do której wersji językowej witryny
    • Źródło: https://support.google.com/webmasters/answer/189077?hl=en
  • Usuń notranlate
    • Jak @Solarflare już zaproponował: Nie zawierają <meta name=”google” value=”notranslate”> na swojej stronie
  • Sprawdź swoje ustawienia językowe w Chrome
    • Via Settings > Show advanced settings należy sprawdzić "Języki" sekcja i zaznacz lub odznacz pole obok opcji Oferta, aby przetłumaczyć strony, które nie są w języku, który przeczytałeś. Opcjonalnie: Aby zmienić języki, które chcesz przetłumaczyć, kliknij Ustawienia języka i wprowadzania. Aby uzyskać szczegółowy przewodnik, jak to zrobić, sprawdź: Google help page.

Nie ma przewodnik 100% przez Google, a także nie ma 100% pewności, że Google Chrome wykryje poprawny język.

Powiązane problemy