mirror of https://github.com/abpframework/abp
				
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							195 lines
						
					
					
						
							5.8 KiB
						
					
					
				
			
		
		
	
	
							195 lines
						
					
					
						
							5.8 KiB
						
					
					
				# Localização
 | 
						|
 | 
						|
O sistema de localização da ABP é perfeitamente integrado ao `Microsoft.Extensions.Localization`pacote e compatível com a [documentação de localização da Microsoft](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/localization) . 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:
 | 
						|
 | 
						|
```csharp
 | 
						|
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](Module-Development-Basics.md) geralmente define seu próprio recurso de localização. O recurso de localização é apenas uma classe simples. Exemplo:
 | 
						|
 | 
						|
```csharp
 | 
						|
public class TestResource
 | 
						|
{
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
Em seguida, deve ser adicionado usando `AbpLocalizationOptions`como mostrado abaixo:
 | 
						|
 | 
						|
```csharp
 | 
						|
[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](Virtual-File-System.md) ).
 | 
						|
 | 
						|
Os arquivos JSON estão localizados na pasta do projeto "/ Localização / Recursos / Teste", como mostrado abaixo:
 | 
						|
 | 
						|

 | 
						|
 | 
						|
Um conteúdo do arquivo de localização JSON é mostrado abaixo:
 | 
						|
 | 
						|
```json
 | 
						|
{
 | 
						|
  "culture": "en",
 | 
						|
  "texts": {
 | 
						|
    "HelloWorld": "Hello World!"
 | 
						|
  }
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
- Todo arquivo de localização deve definir o `culture`có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:
 | 
						|
 | 
						|
```csharp
 | 
						|
[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:
 | 
						|
 | 
						|
```csharp
 | 
						|
[InheritResource(typeof(AbpValidationResource))]
 | 
						|
public class TestResource
 | 
						|
{
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
Herança alternativa configurando o `AbpLocalizationOptions`:
 | 
						|
 | 
						|
```csharp
 | 
						|
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:
 | 
						|
 | 
						|
```csharp
 | 
						|
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
 | 
						|
 | 
						|
```csharp
 | 
						|
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
 | 
						|
 | 
						|
```csharp
 | 
						|
@inject IHtmlLocalizer<TestResource> Localizer
 | 
						|
 | 
						|
<h1>@Localizer["HelloWorld"]</h1>
 | 
						|
```
 | 
						|
 | 
						|
Consulte a [documentação de localização da Microsoft](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/localization) 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:
 | 
						|
 | 
						|
```js
 | 
						|
var testResource = abp.localization.getResource('Test');
 | 
						|
```
 | 
						|
 | 
						|
Localize uma sequência:
 | 
						|
 | 
						|
```js
 | 
						|
var str = testResource('HelloWorld');
 | 
						|
```
 | 
						|
 | 
						|
 | 
						|
   |