Compartilhamento de tecnologia

Resolvendo problemas de internacionalização e localização no Spring Boot

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Resolvendo problemas de internacionalização e localização no Spring Boot

Olá a todos, sou o editor do Weizhuan Taoke System 3.0 e também sou um programador que não usa ceroulas no inverno, mas ainda precisa estar fresco no frio!

Visão Geral da Internacionalização e Localização

A internacionalização (abreviadamente i18n) e a localização (abreviadamente l10n) são considerações muito importantes ao desenvolver aplicativos para usuários globais. A internacionalização refere-se à concepção e implementação de produtos de software para que possam se adaptar às necessidades de diferentes idiomas e hábitos culturais. A localização é baseada na internacionalização e adaptação de acordo com regiões ou hábitos linguísticos específicos para proporcionar uma experiência mais amigável;

1. Configuração de internacionalização no Spring Boot

No Spring Boot, a internacionalização e a localização são alcançadas principalmente por meio de arquivos de recursos e suporte relacionado fornecido pelo Spring. Vejamos primeiro como configurar e usar esses recursos.

1.1. Configurar arquivos de recursos

Em um projeto Spring Boot, você pode usar arquivos de propriedades (*.properties) ou arquivos YAML para definir informações de texto em diferentes idiomas. Normalmente, criaremos um arquivo de recursos correspondente para cada idioma, como messages.properties (arquivo padrão), messages_en.properties (inglês), messages_zh_CN.properties (chinês simplificado), etc.

Exemplo de arquivo de recurso messages.properties:

greeting.message=Welcome to our application!
button.submit=Submit
label.username=Username
label.password=Password
  • 1
  • 2
  • 3
  • 4
1.2. Usando recursos internacionais no Spring Boot

No Spring Boot, passeMessageSourceeLocaleResolverCarregar e analisar arquivos de recursos em diferentes idiomas e adaptá-los de acordo com a localidade do usuário.

package cn.juwatech.localization;

import cn.juwatech.Application;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver;

import java.util.Locale;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Bean
    public LocaleResolver localeResolver() {
        AcceptHeaderLocaleResolver resolver = new AcceptHeaderLocaleResolver();
        resolver.setDefaultLocale(Locale.US); // 设置默认Locale
        return resolver;
    }

    @Bean
    public MessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("classpath:messages");
        messageSource.setDefaultEncoding("UTF-8");
        return messageSource;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
1.3. Utilizar recursos internacionais

Em um controlador ou serviço, passeMessageSourcePara obter informações de texto em um local específico.

package cn.juwatech.localization;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class GreetingController {

    @Autowired
    private MessageSource messageSource;

    @GetMapping("/greeting")
    public String greeting() {
        Locale locale = LocaleContextHolder.getLocale();
        return messageSource.getMessage("greeting.message", null, locale);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

2. Melhores práticas de internacionalização e localização

Além da configuração e uso básicos, os efeitos de internacionalização e localização podem ser otimizados ainda mais das seguintes maneiras:

  • Suporta mais idiomas: Adicione arquivos de recursos em mais idiomas de acordo com as necessidades do usuário.
  • Alternar idiomas dinamicamente: oferece suporte aos usuários para alternar idiomas na interface, como por meio de parâmetros de solicitação ou configurações do usuário.
  • Data, hora e moeda localizadas: Use as ferramentas de formatação fornecidas pelo Spring para localizar data, hora e moeda.
  • Informações de exceção de internacionalização: internacionalize as informações de exceção do aplicativo para melhorar a experiência do usuário.

para concluir

Este artigo apresenta como resolver problemas de internacionalização e localização em projetos Spring Boot e obter adaptação multilíngue e regional configurando arquivos de recursos, usando o suporte de internacionalização fornecido pelo Spring e as melhores práticas. Essas tecnologias e métodos ajudam os desenvolvedores a criar aplicativos amigáveis ​​e profissionais para usuários globais.

Produzido pelo editor do Micro-earning Taoke System 3.0, deve ser um produto de alta qualidade. Indique a fonte ao reimprimir!