세계화가 발전함에 따라 점점 더 많은 웹사이트와 애플리케이션에서 다국어 지원과 국제화 기능을 제공해야 합니다. 개발자에게 이러한 기능을 구현하는 것은 언어 번역, 날짜, 시간, 통화 형식 등 여러 측면을 고려해야 하기 때문에 쉬운 작업이 아닙니다. 그러나 Spring Boot 프레임워크를 사용하면 다국어 지원과 국제 애플리케이션을 쉽게 구현할 수 있습니다.
먼저 Spring Boot에서 제공하는 LocaleResolver 인터페이스를 이해해보자. LocaleResolver 인터페이스는 Locale 객체를 구문 분석하고 반환하는 데 사용되는 인터페이스입니다. Locale 객체는 사용자가 사용하는 언어, 지역 및 관련 정보를 나타냅니다. Spring Boot에서 LocaleResolver 인터페이스에는 CookieLocaleResolver와 AcceptHeaderLocaleResolver라는 두 가지 구현이 있습니다.
CookieLocaleResolver는 브라우저 쿠키를 통해 Locale 개체를 구문 분석합니다. 사용자가 언어를 선택하면 Locale 개체가 브라우저에 설정되고 쿠키에 저장됩니다. 따라서 다음에 사용자가 웹사이트를 방문하면 CookieLocaleResolver는 쿠키에서 Locale 개체를 읽을 수 있습니다.
AcceptHeaderLocaleResolver는 HTTP 요청 헤더의 Accept-Language 필드를 통해 Locale 개체를 확인합니다. 사용자가 Accept-Language 헤더가 포함된 요청을 보내면 AcceptHeaderLocaleResolver는 Locale 객체를 구문 분석하여 반환합니다.
LocaleResolver 인터페이스 외에도 Spring Boot는 MessageSource 인터페이스도 제공합니다. MessageSource 인터페이스는 다국어 메시지를 구문 분석하고 처리하는 데 사용됩니다. Spring Boot에서 MessageSource 인터페이스에는 ResourceBundleMessageSource와 ReloadableResourceBundleMessageSource라는 두 가지 구현이 있습니다.
ResourceBundleMessageSource는 제공된 속성 파일에서 다중 언어 메시지를 구문 분석하는 간단한 구현입니다. 특성 파일에는 키-값 쌍이 포함되어 있습니다. 여기서 키는 메시지 식별자이고 값은 메시지 자체입니다. 예를 들어, 영어 및 중국어 메시지의 경우 속성 파일은 다음과 같습니다.
# messages_en_US.properties hello=Hello world! # messages_zh_CN.properties hello=你好,世界!
사용자에게 메시지를 표시해야 하는 경우 MessageSource 인터페이스를 사용하여 해당 메시지를 얻은 다음 이를 사용자에게 표시할 수 있습니다.
ReloadableResourceBundleMessageSource는 ResourceBundleMessageSource와 매우 유사하지만 애플리케이션이 실행되는 동안 속성 파일을 다시 로드할 수 있습니다. 이는 자주 업데이트되는 메시지가 필요한 애플리케이션에 유용합니다.
다국어 지원 및 국제 애플리케이션을 구현할 때 일반적으로 날짜, 시간 및 통화 형식 문제를 고려해야 합니다. Spring Boot는 이러한 문제를 해결하기 위해 FormattingConversionServiceFactoryBean 클래스를 제공합니다. 이를 사용하여 날짜, 시간 및 통화 형식을 정의하고 다국어 응용 프로그램에서 유효하게 만들 수 있습니다.
다음은 날짜, 시간 및 통화 형식을 정의하기 위해 FormattingConversionServiceFactoryBean 클래스를 사용하는 예입니다.
@Configuration public class AppConfig { @Bean public FormattingConversionServiceFactoryBean formattingConversionServiceFactoryBean() { FormattingConversionServiceFactoryBean factoryBean = new FormattingConversionServiceFactoryBean(); factoryBean.setRegisterDefaultFormatters(false); factoryBean.setFormatters(Set.of(dateTimeFormatter(), dateFormatter(), numberFormatter())); return factoryBean; } private DateTimeFormatter dateTimeFormatter() { return DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM).withLocale(LocaleContextHolder.getLocale()); } private DateTimeFormatter dateFormatter() { return DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM).withLocale(LocaleContextHolder.getLocale()); } private NumberFormatter numberFormatter() { return new NumberFormatter(NumberFormat.getCurrencyInstance(LocaleContextHolder.getLocale())); } }
위 코드에서는 날짜, 시간 및 통화 형식을 정의하기 위해 FormattingConversionServiceFactoryBean을 생성합니다. DateTimeFormatter 및 NumberFormatter를 사용하여 날짜 시간 및 통화 형식을 정의하고 LocaleContextHolder.getLocale() 메서드를 사용하여 현재 사용자의 Locale 객체를 가져옵니다.
마지막으로 여러 언어를 지원하려면 애플리케이션에 LocaleResolver 및 MessageSource를 설정해야 합니다. Spring Boot에서 제공하는 @EnableWebMvc 및 @Configuration 주석을 사용하여 이를 달성할 수 있습니다. 다음은 샘플 구성 클래스입니다.
@Configuration @EnableWebMvc public class WebConfig implements WebMvcConfigurer { @Bean public LocaleResolver localeResolver() { AcceptHeaderLocaleResolver resolver = new AcceptHeaderLocaleResolver(); resolver.setDefaultLocale(Locale.US); return resolver; } @Bean public MessageSource messageSource() { ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); messageSource.setBasenames("messages"); messageSource.setFallbackToSystemLocale(false); return messageSource; } @Override public void addInterceptors(InterceptorRegistry registry) { LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor(); localeChangeInterceptor.setParamName("lang"); registry.addInterceptor(localeChangeInterceptor); } }
위 코드에서는 WebConfig 구성 클래스를 생성하고 @EnableWebMvc 주석을 사용하여 Spring MVC 기능을 활성화했습니다. LocaleResolver() Bean과 messageSource() Bean을 사용하여 LocaleResolver와 MessageSource를 설정합니다. 또한 addInterceptors() 메소드를 사용하여 LocaleChangeInterceptor를 추가했으며 이 인터셉터에서는 "lang" 매개변수를 사용하여 사용자 언어를 전환했습니다.
결론적으로 Spring Boot에서 제공하는 LocaleResolver 인터페이스, MessageSource 인터페이스, FormattingConversionServiceFactoryBean 클래스를 통해 다국어 지원 및 국제 애플리케이션을 쉽게 구현할 수 있습니다. 위의 방법을 사용하면 사용자의 다양한 언어, 문화 및 지역 요구 사항을 충족하는 글로벌 애플리케이션을 보다 쉽고 편리하게 구축할 수 있습니다.
위 내용은 Spring Boot를 통해 다국어 지원 및 국제 애플리케이션 달성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!