...
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Configuration.Localization.Languages.Add(new LanguageInfo("en", "English", "famfamfam-flag-england", true)); Configuration.Localization.Languages.Add(new LanguageInfo("pt-BR", "Português", "famfamfam-flags br")); |
...
Os textos de localização podem ser armazenados em diferentes fontes. Você pode usar mais de uma fonte na mesma aplicação (Se você tiver mais de um módulo, cada módulo pode definir uma fonte de localização separada, ou um módulo pode definir várias fontes). A interface ILocalizationSource deve ser implementada por uma fonte de localização. Em seguida, ela é registrada na configuração de localização do TNF.
...
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<?xml version="1.0" encoding="utf-8" ?> <localizationDictionary culture="en"> <texts> <text name="TaskSystem" value="Task System" /> <text name="TaskList" value="Task List" /> <text name="NewTask" value="New Task" /> <text name="Xtasks" value="{0} tasks" /> <text name="CompletedTasks" value="Completed tasks" /> <text name="EmailWelcomeMessage">Hi, Welcome to Simple Task System! This is a sample email content.</text> </texts> </localizationDictionary> |
Para distinção de cada arquivo e sua linguagem é usado a convenção através da linguagemsão usadas convenções. Seguindo o nosso exemplo acima onde temos duas linguagens (Inglês como padrão e português) teríamos dois arquivos xml:
...
Quando um texto é solicitado, o TNF obtém o texto do arquivo XML do idioma atual (usando Thread.CurrentThread.CurrentUICulture). Se ele não existe no idioma atual, obtém o texto do arquivo XML do idioma padrão.
...
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Configuration.Localization.Sources.Add( new DictionaryBasedLocalizationSource( "SimpleTaskSystem", new XmlFileLocalizationDictionaryProvider( HttpContext.Current.Server.MapPath("~/Localization/SimpleTaskSystem") ) ) ); |
Para arquivos XML tidos como embedded resources em nosso projetoincorporados ao nosso assembly, devemos marcar todos os arquivos XML XMLs de localização como resources do tipo embedded resources (Selecionar arquivos XMLXMLs, abrir a janela de propriedades (F4) e alterar o seu Build Action para Embedded resource). Em seguida, podemos registrar a fonte de localização como mostrado abaixo:
...
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{ "culture": "en", "texts": { "TaskSystem": "Task system", "Xtasks": "{0} tasks" } } |
Para distinção de cada arquivo e sua linguagem é usado a convenção através da linguagemsão usadas convenções. Seguindo o nosso exemplo acima onde temos duas linguagens (Inglês como padrão e português) teríamos dois arquivos json:
MySourceName.json
MySourceName-pt-BR.json
...
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Configuration.Localization.Sources.Add( new DictionaryBasedLocalizationSource( "MySourceName", new JsonFileLocalizationDictionaryProvider( HttpContext.Current.Server.MapPath("~/Localization/MySourceName") ) ) ); |
Para arquivos JSONs tidos como embedded resources em nosso projeto, JSON incorporados ao nosso assembly, devemos marcar todos os arquivos JSON JSONs de localização como resources do tipo como embedded resources (Selecionar arquivos JSON, abrir a janela de propriedades (F4) e alterar o seu Build Action para Embedded resource). Em seguida, podemos registrar a fonte de localização como mostrado abaixo:
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Configuration.Localization.Sources.Add( new DictionaryBasedLocalizationSource( "MySourceName", new JsonEmbeddedFileLocalizationDictionaryProvider( Assembly.GetExecutingAssembly(), "MyCompany.MyProject.Localization.Sources" ) ) ); |
...