국제화, 즉 i18n이라고도 불리는데, 왜 이 이름이 붙었나요? 국제화 영어가 국제화되기 때문에 i와 n 사이에 18개의 글자가 있어 i18n이라고 부릅니다. 만약 우리의 애플리케이션이 국제화되어 있다면, 다양한 언어 환경에서 쉽게 전환할 수 있으며, 가장 흔한 것은 중국어와 영어 간 전환이며, 국제화 기능도 꽤 흔합니다.
예를 들어, 특정 요청을 보낼 때 헤더에 키-값 쌍인 "Accept-Language":"zh"를 설정하고, Accept-Language에 해당하는 값을 통해 서버가 사용할 지역 언어를 결정하고, 해당 리소스 파일을 찾아 포맷하여 클라이언트에게 반환할 수 있습니다.
새로운 Spring Boot 프로젝트를 생성하고, 리소스 폴더 아래에 i18n 파일을 만들고, 아래 그림과 같이 "언어 약어 표" 형식에 따라 새 구성 파일을 이 폴더 아래에 생성합니다:
message.properties.
message_en.속성
구성을 효과적으로 만들기 위해 application.properties 편집을 위한 구성 매개변수를 추가하는 것을 잊지 마세요:
스프링이 정의한다메시지소스국제화된 정보에 접근하는 인터페이스.
getMessage(문자열 코드, Object[] args, 문자열 defaultMessage, 로컬 로컬) getMessage(String code, Object[] args, Locale locale) getMessage(MessageSourceResolvable resolvevable, Locale locale)
새 컨트롤러를 만들고 다른 리소스 파일을 호출해 다음 코드가 포함된 프롬프트를 반환해 보세요:
이 프로젝트는 중국어로 된 윈도우 서버 하에 배포되며, 중국 사용자가 중국어에 접속하는 데 문제가 없습니다. 영어 버전 리눅스에 배포할 때, 중국 사용자는 영어 프롬프트(영어 리소스 파일의 구성 참조)를 프롬프트로 표시합니다.
그 이유는 우리 때문입니다새로운 중국어 .properties 파일은 전혀 없으며, 이 시점에서 프로그램은 현재 시스템 언어와 일치하는 리소스 파일을 읽고, 다시 읽을 수 없으면 식별된 속성 파일 구성을 읽을 수 없습니다。 프로젝트를 리눅스 영어 시스템에 게시할 때, 프로그램이 중국어 설정을 읽을 수는 없지만 _en.properties의 설정 파일을 읽기 때문에 인터페이스가 중국어 프롬프트를 반환합니다.
해결책, 설정FallbackToSystemLocalefalse, 코드는 다음과 같습니다:
(끝)
|