Jak zlokalizować aplikację ASP.NET MVC?

121

Jaka byłaby najlepsza praktyka w celu zlokalizowania aplikacji ASP.NET MVC?

Chciałbym omówić dwie sytuacje:

  • jedno wdrożenie aplikacji w usługach IIS, które obsługuje wiele języków
  • wdrożenie jednego języka / aplikacji.

W pierwszej sytuacji powinieneś wybrać coś w rodzaju widoku, takiego jak ~ / View / EN, ~ / View / FI, ~ / View / SWE czy coś innego?

A co z drugim przypadkiem, tylko konfiguracją opartą na aplikacji za pośrednictwem Web.config i wskazaniem tym różnym językom różnych adresów URL?

pirho
źródło
Alternatywnie do zduplikowanych widoków można użyć standardowych plików ResX do przechowywania ciągów specyficznych dla kultury. Niestety zarządzanie tymi plikami i ich edycja, zwłaszcza przez tłumaczy, jest nieco niewygodna i trudna. Można to uprościć, przechowując zasoby w bazie danych i używając zewnętrznego narzędzia lokalizacyjnego. Możesz spojrzeć na tę bezpłatną bibliotekę dostarczającą dostawcę zasobów bazy danych: globsite.net/GlobsiteGlobalizationLibrary
Kryszal

Odpowiedzi:

72

Możesz również zajrzeć tutaj Kompletny przewodnik po lokalizacji ASP.NET MVC 2 i Walidacja modelu ASP.NET MVC 2 z lokalizacją. Te wpisy pomogą Ci, jeśli pracujesz z ASP.NET MVC 2.

fyasar
źródło
Dziękuję za tę zaktualizowaną odpowiedź! Rok temu zastosowałem podejście Matta Hawleya, ale napotkałem poważne problemy z testami jednostkowymi. Próbowałem kpić z kontekstu kontrolera, ale czegoś jeszcze brakowało i poddałem się. Przejdę przez ten sposób MVC2 i mam nadzieję, że to rozgryzli.
Lauri Larjo
Stosowałem to podejście w moich projektach, powinienem powiedzieć, że takie podejście jest lepsze.
fyasar
@fyasar cześć, mamy stronę zakupów w asp mvc, więc gdy użytkownik wybierze język arabski, chcemy, aby cała witryna była arabska, czy możemy użyć Microsoft Bing Translator lub Microsoft Translator API, czy też powinienem kupić localize.js, aby osiągnąć to szybko ?
shaijut
22

Aplikację ASP.NET MVC należy zlokalizować w taki sam sposób, jak klasyczną aplikację ASP.NET Web Form.

Nie użyjesz różnych stron / widoków dla każdego języka, ale każda strona będzie obsługiwać wiele języków przy użyciu zestawów satelickich.

Możesz spojrzeć na wpis na blogu Matta Hawleya, aby uzyskać więcej wyjaśnień i przykładów.

Elijah Manor
źródło
2

Nigdy nie byłem przekonany do obsługi lokalizacji w formie, jak sugeruje Elijah - różne długości i kierunki mogą prowadzić do bardzo złożonych lub różnie wyglądających form.

Dopiero zaczynam od MVC, ale przyjmując metodę odsprzęgania, chciałbyś użyć tego samego kontrolera niezależnie od języka (traktując język tylko jako widok) - to dałoby ci / Kontroler / Akcja / język / formularz

Ian T.
źródło
2

Istnieje dobry samouczek z ostatnią aktualizacją dotyczącą lokalizacji aplikacji mvc asp.net obejmującej wszystkie aspekty, w tym lokalizację DisplayName, walidację, używanie routingu (przechowywanie nazwy kultury w adresie URL), problemy z pamięcią podręczną danych wyjściowych i tak dalej ... Alex Adamyan Blog - While moja klawiatura cicho płacze

user405803
źródło
1

W rzeczywistości poszliśmy zupełnie inaczej, zastępując DataAnnotationsMetadaDataProvider . Tam możesz upewnić się, że wartości DisplayNameAttribute są tłumaczone na właściwy język. Właściwie możesz nawet pozbyć się tego atrybutu i rozstrzygnąć na podstawie nazw pól tylko wtedy, gdy byłoby to pomocne.

Michael Sander
źródło
0

Napisałem ten artykuł jakiś czas temu. Używa niestandardowego silnika widoku. http://blog.oimae.com/2011/02/20/cultured-view-engine-for-mvc/

Vlad
źródło
1
Chociaż Twój artykuł może w rzeczywistości odpowiadać na pytanie, lepiej byłoby zawrzeć tutaj zasadnicze części odpowiedzi i podać link do odniesienia. Przepełnienie stosu jest tak przydatne, jak jego pytania i odpowiedzi, a jeśli Twój host bloga przestanie działać lub Twoje adresy URL zostaną przeniesione, ta odpowiedź stanie się bezużyteczna. Dzięki!
sarnold