Avatar
Adam Gajdečka:11. března 10:15

Ahoj, prosím o radu. Mám aplikaci ve více jazycích, každý uživatel si nastaví svůj jazyk.Takže po nastavení, aplikace používá všude vybraný jazyk.

Problémem je, když uživatel provede nějakou akci (třeba pozvat kamaráda emailem), tak potřebuji tento email poslat v jiném jazyce.

Používám resources pro jazyky.

Klasicky pro uživatele měním jazyk takto:

public ActionResult Change(String LanguageAbbrevation)
        {
            if (LanguageAbbrevation!=null)
            {
                Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(LanguageAbbrevation);
                Thread.CurrentThread.CurrentUICulture = new CultureInfo(LanguageAbbrevation);
            }

            HttpCookie cookie = new HttpCookie("Language");
            cookie.Value = LanguageAbbrevation;
            Response.Cookies.Add(cookie);
            return Redirect(Request.UrlReferrer.ToString());
        }

Mám nějakou metodu, kde odesílám email. Mohu tedy před ní napsat

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en");
           Thread.CurrentThread.CurrentUICulture = new CultureInfo("en");

a nakonec metody opět to samé, jen změním jazyk. Ovšem toto mi připadá dost škaredé řešení. Jde to nějak pěkněji udělat? Díky

 
Odpovědět 11. března 10:15
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na Adam Gajdečka
vajkuba1234:12. března 2:13

Muzes to udelat treba GetGlobalResou­rce(string, string) a nebo Resources.Glo­balniResource­.Nazev. Hlavne musis mit resource v asp slozce (right click: Add App_GlobalResou­rces).

Nahoru Odpovědět 12. března 2:13
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
Avatar
vajkuba1234
Člen
Avatar
Nahoru Odpovědět 4. dubna 3:34
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
Avatar
Odpovídá na vajkuba1234
Adam Gajdečka:4. dubna 7:08

Zatím se mi to nepodařilo dořešit. Já mám ty resources mimo můj projekt v knihovně, protože to potřebuji používat pro více aplikaci

 
Nahoru Odpovědět  -1 4. dubna 7:08
Avatar
Adam Gajdečka:19. května 0:33
public static string GetTranslationByLanguage(string name, int languageId)
       {
           return MyLibrary.Resources.Lang.Basic.ResourceManager.GetString(name,
          GetCultureInfo(languageId));
       }

       public static CultureInfo GetCultureInfo(int languageId)
       {
           try
           {
               string abb = GetLanguageList().Where(s => s.Id == languageId).Single().Abbreviation;
               return System.Globalization.CultureInfo.GetCultureInfo(abb);
           }
           catch (Exception)
           {

               return null;
           }

       }
Editováno 19. května 0:34
Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět 19. května 0:33
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.