mirror of https://github.com/abpframework/abp.git
1 changed files with 195 additions and 0 deletions
@ -0,0 +1,195 @@ |
|||||
|
# 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<VirtualFileSystemOptions>(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 `VirtualFileSystemOptions`(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'); |
||||
|
``` |
||||
|
|
||||
|
|
||||
|
|
||||
Loading…
Reference in new issue