Partage de technologie

Résoudre les problèmes d'internationalisation et de localisation dans Spring Boot

2024-07-12

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

Résoudre les problèmes d'internationalisation et de localisation dans Spring Boot

Bonjour à tous, je suis l'éditeur de Weizhuan Taoke System 3.0, et je suis aussi un programmeur qui ne porte pas de caleçon long en hiver, mais qui doit quand même être au frais par temps froid !

Présentation de l'internationalisation et de la localisation

L'internationalisation (i18n en abrégé) et la localisation (l10n en abrégé) sont des considérations très importantes lors du développement d'applications pour des utilisateurs mondiaux. L'internationalisation fait référence à la conception et à la mise en œuvre de produits logiciels afin qu'ils puissent s'adapter aux besoins de différentes langues et habitudes culturelles ; la localisation est basée sur l'internationalisation et l'adaptation en fonction de régions ou d'habitudes linguistiques spécifiques pour offrir une expérience plus conviviale.

1. Configuration de l'internationalisation dans Spring Boot

Dans Spring Boot, l'internationalisation et la localisation sont principalement réalisées via des fichiers de ressources et le support associé fourni par Spring. Voyons d'abord comment configurer et utiliser ces fonctionnalités.

1.1. Configurer les fichiers de ressources

Dans un projet Spring Boot, vous pouvez utiliser des fichiers de propriétés (*.properties) ou des fichiers YAML pour définir des informations textuelles dans différentes langues. Normalement, nous créerons un fichier de ressources correspondant pour chaque langue, tel que messages.properties (fichier par défaut), messages_en.properties (anglais), messages_zh_CN.properties (chinois simplifié), etc.

Exemple de fichier de ressources messages.properties :

greeting.message=Welcome to our application!
button.submit=Submit
label.username=Username
label.password=Password
  • 1
  • 2
  • 3
  • 4
1.2. Utiliser des ressources internationales dans Spring Boot

Dans Spring Boot, passezMessageSourceetLocaleResolverPour charger et analyser les fichiers de ressources dans différentes langues, et les adapter en fonction des paramètres régionaux de l'utilisateur.

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. Utiliser des ressources internationales

Dans un contrôleur ou un service, passezMessageSourcePour obtenir des informations textuelles sous une langue spécifique.

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. Bonnes pratiques en matière d'internationalisation et de localisation

Outre la configuration et l'utilisation de base, les effets d'internationalisation et de localisation peuvent être encore optimisés des manières suivantes :

  • Prend en charge plus de langues: Ajoutez des fichiers de ressources dans plus de langues en fonction des besoins des utilisateurs.
  • Changer de langue dynamiquement: Aide les utilisateurs à changer de langue sur l'interface, par exemple via les paramètres de demande ou les paramètres utilisateur.
  • Date, heure et devise localisées: utilisez les outils de formatage fournis par Spring pour localiser la date, l'heure et la devise.
  • Informations sur les exceptions d'internationalisation: Internationalisez les informations sur les exceptions des applications pour améliorer l’expérience utilisateur.

en conclusion

Cet article explique comment résoudre les problèmes d'internationalisation et de localisation dans les projets Spring Boot et réaliser une adaptation multilingue et régionale en configurant des fichiers de ressources, en utilisant la prise en charge de l'internationalisation fournie par Spring et les meilleures pratiques. Ces technologies et méthodes aident les développeurs à créer des applications conviviales et professionnelles pour les utilisateurs du monde entier.

Produit par l'éditeur de Micro-earning Taoke System 3.0, il doit s'agir d'un produit de haute qualité. Veuillez indiquer la source lors de la réimpression !