Wiele języków w ASP.NET aplikacja MVC?

Jaki jest najlepszy sposób obsługi wielu języków interfejsu w ASP.NET aplikacja MVC? Widziałem, jak ludzie używają plików zasobów do innych aplikacji. Czy to nadal najlepszy sposób?

Author: Erik Funkenbusch, 2008-08-07

6 answers

Jeśli używasz domyślnych silników widoków, wtedy lokalne zasoby działają w widokach. Jeśli jednak chcesz pobrać ciągi zasobów w ramach akcji kontrolera, nie możesz uzyskać zasobów lokalnych i musisz użyć zasobów globalnych.

Ma to sens, gdy o tym pomyślisz, ponieważ zasoby lokalne są lokalne dla strony aspx, a w kontrolerze nawet nie wybrałeś widoku.

 40
Author: Haacked,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-07 03:04:04

Znalazłem ten zasób jest bardzo pomocny

Jest owijarką wokół HttpContext.Aktualne.GetGlobalResourceString i HttpContext.Aktualne.GetLocalResourceString , który pozwala na wywołanie zasobów w ten sposób...

// default global resource
Html.Resource("GlobalResource, ResourceName")

// global resource with optional arguments for formatting
Html.Resource("GlobalResource, ResourceName", "foo", "bar")

// default local resource
Html.Resource("ResourceName")

// local resource with optional arguments for formatting
Html.Resource("ResourceName", "foo", "bar")

Jedyny problem jaki znalazłem to to, że kontrolery nie mają dostępu do lokalnych łańcuchów resouce.

 21
Author: user10479,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-18 12:17:17

Tak zasoby są nadal najlepszym sposobem na obsługę wielu języków w środowisku. NET. Ponieważ są łatwe do odwołania i jeszcze łatwiejsze do dodania nowych języków.

Site.resx
Site.en.resx
Site.en-US.resx
Site.fr.resx
etc...

Więc masz rację nadal używać plików zasobów.

 3
Author: Nick Berardi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-06 21:48:20

Projekt Orchard używa metody skrótu o nazwie "T" do wykonywania wszystkich tłumaczeń ciągów na stronie. Więc zobaczysz tagi z @T ("ciąg do przetłumaczenia").

Zamierzam przyjrzeć się, jak to jest realizowane za kulisami i potencjalnie wykorzystać go w przyszłych projektach. Skrócona nazwa zachowuje czystość kodu, ponieważ będzie on używany dużo .

To, co lubię w tym podejściu, to oryginalny ciąg znaków (w tym przypadku angielski) jest nadal łatwo widoczny w kodzie i nie wymaga wyszukaj w narzędziu zasobów lub w innej lokalizacji, aby zdekodować, jaki powinien być rzeczywisty ciąg znaków.

Zobacz http://orchardproject.net aby uzyskać więcej informacji.

 2
Author: Brady Moritz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-13 18:44:31

Niektóre z innych rozwiązań wymienionych jako answer Nie działają dla wydanej wersji MVC (współpracowały z poprzednimi wersjami alpha/beta).

Oto dobry artykuł opisujący sposób implementacji lokalizacji, która będzie mocno wpisana i nie złamie testów jednostkowych kontrolerów i widoków: localization guide for MVC v1

 1
Author: ADB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-09 14:24:50

Jest to kolejna opcja, a w kontrolerze będziesz miał dostęp do bieżącej informacji:

Sprawdź MVC3-multi-language

 0
Author: datajohnson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-29 05:59:27