Versão
Idioma

Localização

O sistema de localização da ABP é perfeitamente integrado ao Microsoft.Extensions.Localizationpacote e compatível com a documentação de localização da Microsoft . Ele adiciona alguns recursos e aprimoramentos úteis para facilitar o uso em cenários de aplicativos da vida real.

Pacote Volo.Abp.Localization

Este pacote já está instalado por padrão com o modelo de inicialização. Portanto, na maioria das vezes, você não precisa instalá-lo manualmente.

Volo.Abp.Localization é o pacote principal do sistema de localização. Instale-o no seu projeto usando o console do gerenciador de pacotes (PMC):

Install-Package Volo.Abp.Localization

Em seguida, você pode adicionar a dependência AbpLocalizationModule ao seu módulo:

using Volo.Abp.Modularity;
using Volo.Abp.Localization;

namespace MyCompany.MyProject
{
    [DependsOn(typeof(AbpLocalizationModule))]
    public class MyModule : AbpModule
    {
        //...
    }
}

Criando um recurso de localização

Um recurso de localização é usado para agrupar cadeias de localização relacionadas e separá-las de outras cadeias de localização do aplicativo. Um módulo geralmente define seu próprio recurso de localização. O recurso de localização é apenas uma classe simples. Exemplo:

public class TestResource
{
}

Em seguida, deve ser adicionado usando AbpLocalizationOptionscomo mostrado abaixo:

[DependsOn(typeof(AbpLocalizationModule))]
public class MyModule : AbpModule
{
    public override void ConfigureServices(ServiceConfigurationContext context)
    {
        Configure<AbpVirtualFileSystemOptions>(options =>
        {
            options.FileSets.AddEmbedded<MyModule>();
        });

        Configure<AbpLocalizationOptions>(options =>
        {
            //Define a new localization resource (TestResource)
            options.Resources
                .Add<TestResource>("en")
                .AddVirtualJson("/Localization/Resources/Test");
        });
    }
}

Neste exemplo;

  • Adicionado um novo recurso de localização com "en" (inglês) como a cultura padrão.
  • Arquivos JSON usados para armazenar as sequências de localização.
  • Os arquivos JSON são incorporados ao assembly usando AbpVirtualFileSystemOptions(consulte sistema de arquivos virtual ).

Os arquivos JSON estão localizados na pasta do projeto "/ Localização / Recursos / Teste", como mostrado abaixo:

localization-resource-json-files

Um conteúdo do arquivo de localização JSON é mostrado abaixo:

{
  "culture": "en",
  "texts": {
    "HelloWorld": "Hello World!"
  }
}
  • Todo arquivo de localização deve definir o culturecódigo para o arquivo (como "en" ou "en-US").
  • texts A seção contém apenas a coleção de valores-chave das sequências de localização (as chaves também podem ter espaços).

Nome Curto do Recurso de Localização

Os recursos de localização também estão disponíveis no lado do cliente (JavaScript). Portanto, definir um nome abreviado para o recurso de localização facilita o uso de textos de localização. Exemplo:

[LocalizationResourceName("Test")]
public class TestResource
{
}

Consulte a seção Obtendo teste localizado / lado do cliente abaixo.

Herdar de outros recursos

Um recurso pode herdar de outros recursos, o que possibilita reutilizar cadeias de localização existentes sem fazer referência ao recurso existente. Exemplo:

[InheritResource(typeof(AbpValidationResource))]
public class TestResource
{
}

Herança alternativa configurando o AbpLocalizationOptions:

services.Configure<AbpLocalizationOptions>(options =>
{
    options.Resources
        .Add<TestResource>("en") //Define the resource by "en" default culture
        .AddVirtualJson("/Localization/Resources/Test") //Add strings from virtual json files
        .AddBaseTypes(typeof(AbpValidationResource)); //Inherit from an existing resource
});
  • Um recurso pode herdar de vários recursos.
  • Se o novo recurso definir a mesma sequência localizada, ele substituirá a sequência.

Estendendo o Recurso Existente

Herdar de um recurso cria um novo recurso sem modificar o existente. Em alguns casos, convém não criar um novo recurso, mas estender diretamente um recurso existente. Exemplo:

services.Configure<AbpLocalizationOptions>(options =>
{
    options.Resources
        .Get<TestResource>()
        .AddVirtualJson("/Localization/Resources/Test/Extensions");
});
  • Se um arquivo de extensão define a mesma sequência localizada, ele substitui a sequência.

Obtendo textos localizados

Lado do servidor

Obter o texto localizado no lado do servidor é bastante padrão.

Uso mais simples de uma classe

public class MyService
{
    private readonly IStringLocalizer<TestResource> _localizer;

    public MyService(IStringLocalizer<TestResource> localizer)
    {
        _localizer = localizer;
    }

    public void Foo()
    {
        var str = _localizer["HelloWorld"];
    }
}

Uso mais simples em uma vista / página do Razor

@inject IHtmlLocalizer<TestResource> Localizer

<h1>@Localizer["HelloWorld"]</h1>

Consulte a documentação de localização da Microsoft para obter detalhes sobre o uso da localização no lado do servidor.

Lado do Cliente

A ABP fornece serviços JavaScript para usar os mesmos textos localizados no lado do cliente.

Obtenha um recurso de localização:

var testResource = abp.localization.getResource('Test');

Localize uma sequência:

var str = testResource('HelloWorld');
Esta página foi útil?
Por favor, faça uma seleção.
Obrigado pelo seu valioso feedback!

Observe que, embora não possamos responder aos comentários, nossa equipe usará seus comentários para melhorar a experiência.

Neste documento
Mastering ABP Framework Book
Dominando a estrutura ABP

Este livro o ajudará a obter uma compreensão completa da estrutura e das técnicas modernas de desenvolvimento de aplicativos da web.