PHP 에서 지역 언어 로 정 보 를 표시 하 는 동작
현재 지역 언어 정보 가 져 오기 및 설정
우선,우 리 는 해당 지역 의 언어 정 보 를 동태 적 으로 얻 고 설정 할 수 있다.
// # echo $LANG;
// en_US.UTF-8
// php.ini
// intl.default_locale => no value => no value
echo Locale::getDefault(), PHP_EOL; // en_US_POSIX
ini_set('intl.default_locale', 'zh_CN');
echo Locale::getDefault(), PHP_EOL; // zh_CN
Locale::setDefault('fr');
echo Locale::getDefault(), PHP_EOL; // fr
기본적으로 getDefault()방법 으로 php.ini 파일 의 intl.default 를 얻 을 수 있 습 니 다.locale 설정 내용 입 니 다.php.ini 에 도 설정 되 어 있 지 않 으 면 운영 체제 의$LANG 값 에 있 는 내용 을 가 져 옵 니 다.즉,위의 예 에서 출력 한 en 입 니 다.US_POSIX,POSIX 는 운영 체제 에서 온 설정 을 나타 낸다.사용 iniset()는 ini 의 설정 을 직접 수정 하거나 setDefault()방법 을 사용 하면 현재 지역 언어 설정 을 동적 으로 수정 할 수 있 습 니 다.
언어 태그 에 대한 규칙
아래 의 내용 을 계속 공부 하기 전에 우 리 는 먼저 언어 표기 의 규범 을 배 워 보 자.대부분의 사람들 에 게 en 만 접 해 봤 을 수도 있 습 니 다.US 、 zh_CN 과 같은 표 시 는 사실 그것 의 완전한 정 의 는 매우 길다.다만 우리 가 이런 약자 방식 을 사용 할 때 많은 내용 이 기본 적 인 형식 으로 제공 된다.전체 태그 규칙 은:
language-extlang-script-region-variant-extension-privateuse
언어 문자 종류-확장 언어 문자 종류-쓰기 형식-국가 와 지역-변형-확장-사유
그 러 니까 우리 zhCN 은 이렇게 쓸 수 있다.
zh-cmn-Hans-CN-Latn-pinyin
대표 적 인 것 은 zh 언어 문자 종류,Hans 쓰기 형식 은 간 체 중국어,cmn 표준어,CN 국가 와 지역,Latn 변체 라틴 자모,pinyin 변체 병 음 이다.
갑자기 이렇게 쉬 운 게 커 진 것 같 지 않 아 요?또한,zh-이 접 두 사 는 현재 추천 하 는 것 이 아 닙 니 다.zh-지금 은 언어 code 가 아니 라 macrolang 즉 매크로 언어 입 니 다.우 리 는 cmn,yue(광 둥 어),wuu(오 어),hsn(상 어,호 남 어)같은 것 을 직접 사용 하면 language 로 사용 할 수 있 습 니 다.그래서 위의 단락 도 이렇게 쓸 수 있다.
cmn-Hans-CN-Latn-pinyin
지난 글 에서 우 리 는 NumberFormatter 를 말 할 때 중국어 의 디지털 형식의 출력 을 직접 얻 을 수 있다 고 말 했 습 니 다.지금 우 리 는 번 체 의 결 과 를 원 합 니까?간단 합 니 다.게다가 Hant 표 지 는 번 체 중국어 로 작성 하면 됩 니 다.
언어 표기 규칙 의 내용 에 대해 여러분 은 문장 끝 에 알 고 있 는 참고 링크 를 보고 더욱 상세 하 게 소개 할 수 있 습 니 다.
$fmt = new NumberFormatter('zh-Hant', NumberFormatter::SPELLOUT);
echo $fmt->format(1234567.891234567890000), PHP_EOL;
// f c
지정 한 언어 태그 규칙 의 각종 정 보 를 가 져 옵 니 다.언어 표기 의 규칙 을 배 워 서 무엇 을 할 수 있 습 니까?Locale 류 의 가장 주요 한 기능 은 이러한 속성 정 보 를 분석 하고 얻 는 데 있다.
각종 속성 정보 단독 획득
echo Locale::getDisplayLanguage('cmn-Hans-CN-Latn-pinyin', 'zh_CN'), PHP_EOL; // cmn
echo Locale::getDisplayLanguage('zh-Hans-CN-Latn-pinyin', 'zh_CN'), PHP_EOL; //
echo Locale::getDisplayName('cmn-Hans-CN-Latn-pinyin', 'zh_CN'), PHP_EOL; // cmn( , ,LATN_PINYIN)
echo Locale::getDisplayName('zh-Hans-CN-Latn-pinyin', 'zh_CN'), PHP_EOL; // ( , ,LATN_PINYIN)
echo Locale::getDisplayRegion('cmn-Hans-CN-Latn-pinyin', 'zh_CN'), PHP_EOL; //
echo Locale::getDisplayRegion('zh-Hans-CN-Latn-pinyin', 'zh_CN'), PHP_EOL; //
echo Locale::getDisplayScript('cmn-Hans-CN-Latn-pinyin', 'zh_CN'), PHP_EOL; //
echo Locale::getDisplayScript('zh-Hans-CN-Latn-pinyin', 'zh_CN'), PHP_EOL; //
echo Locale::getDisplayVariant('cmn-Hans-Latn-pinyin', 'zh_CN'), PHP_EOL; // LATN_PINYIN
echo Locale::getDisplayVariant('zh-Hans-CN-Latn-pinyin', 'zh_CN'), PHP_EOL; // LATN_PINYIN
우 리 는 각각 두 가지 표기 방식 을 사용 하여 코드 를 테스트 하면 결과 의 대 비 를 볼 수 있다.물론 우 리 는 언어 와 관련 된 정 보 를 대량으로 얻 을 수 있다.
$arr = Locale::parseLocale('zh-Hans-CN-Latn-pinyin');
if ($arr) {
foreach ($arr as $key => $value) {
echo "$key : $value ", PHP_EOL;
}
}
// language : zh
// script : Hans
// region : CN
// variant0 : LATN
// variant1 : PINYIN
parseLocale()방법 을 사용 하면 언어 표시 에 있 는 각종 정 보 를 얻 고 배열 에 저장 할 수 있 습 니 다.키 는 규칙 명 을 표시 하고 값 은 해당 하 는 내용 입 니 다.우리 가 위 에서 소개 한 내용 과 같 는 지 확인 하 십시오.모든 변형 정보 가 져 오기
위의 코드 에서 알 수 있 듯 이 우 리 는 두 개의 변형 정 보 를 가지 고 있 습 니 다.이것 은 getAllVariants()방법 으로 언어 표시 에 있 는 모든 변형 정 보 를 직접 얻 을 수 있 는 배열 입 니 다.
$arr = Locale::getAllVariants('zh-Hans-CN-Latn-pinyin');
var_export($arr);
echo PHP_EOL;
// array (
// 0 => 'LATN',
// 1 => 'PINYIN',
// )
문자 집합 정보 가 져 오기
echo Locale::canonicalize('zh-Hans-CN-Latn-pinyin'), PHP_EOL; // zh_Hans_CN_LATN_PINYIN
$keywords_arr = Locale::getKeywords('zh-cn@currency=CMY;collation=UTF-8');
if ($keywords_arr) {
foreach ($keywords_arr as $key => $value) {
echo "$key = $value", PHP_EOL;
}
}
// collation = UTF-8
// currency = CMY
canonicalize()방법 은 언어 표기 정 보 를 규범화 하 는 데 사용 되 며,우리 의 밑줄 을 밑줄 로 바 꾸 고 뒤의 각종 속성 을 대문자 로 바 꾸 는 것 을 볼 수 있 습 니 다.이것 이 바로 규범 화 된 쓰기 입 니 다.그러나 우리 의 응용 프로그램 과 웹 페이지 에 있어 서 는 밑줄 과 대소 문자 가 모두 지원 된다.물론 여러분 은 표준적 인 문법 에 따라 정 의 를 내 리 는 것 이 좋 습 니 다.getKeywords()는@기호 에서 언어 와 관련 된 정보 속성 을 가 져 오 는 데 사 용 됩 니 다.예 를 들 어 우리 가 정의 한 이 zh-cn 과 같은 화 폐 는 CMY 이 고 문자 집합 은 UTF-8 이 며 getKeywords()를 통 해 화폐 와 문자 집합 속성 을 가 져 올 수 있 는 배열 입 니 다.
일치 판단 언어 태그 정보
언어 태그 에 있어 서 우 리 는 주어진 두 태그 가 서로 일치 하 는 지 판단 할 수 있 습 니 다.예 를 들 어:
echo (Locale::filterMatches('cmn-CN', 'zh-CN', false)) ? "Matches" : "Does not match", PHP_EOL;
echo (Locale::filterMatches('zh-CN-Latn', 'zh-CN', false)) ? "Matches" : "Does not match", PHP_EOL;
물론,우 리 는 다른 lookup()방법 을 사용 하여 주어진 일련의 언어 표시 중 어느 것 이 지정 한 태그 와 가장 가 까 운 지 확인 할 수 있 습 니 다.
$arr = [
'zh-hans',
'zh-hant',
'zh',
'zh-cn',
];
echo Locale::lookup($arr, 'zh-Hans-CN-Latn-pinyin', true, 'en_US'), PHP_EOL; // zh_hans
표준 규칙 의 언어 표 시 를 생 성 합 니 다.각종 언어 표기 의 속성 정 보 를 얻 을 수 있 는 이상 우 리 는 표준 언어 표기 내용 을 생 성 할 수 있 습 니까?
$arr = [
'language' => 'en',
'script' => 'Hans',
'region' => 'CN',
'variant2' => 'rozaj',
'variant1' => 'nedis',
'private1' => 'prv1',
'private2' => 'prv2',
];
echo Locale::composeLocale($arr), PHP_EOL; // en_Hans_CN_nedis_rozaj_x_prv1_prv2
맞 아,copose Locale()방법 은 하나의 배열 형식의 내용 에 따라 완전한 표준 언어 표기 형식 내용 을 생 성 할 수 있어.물론 이 테스트 코드 는 낙서 로 en 에 해당 합 니 다.CN 의 표 시 는 정상적으로 이렇게 쓰 지 않 을 것 이다.acceptFromHttp 요청 헤더 에서 언어 정 보 를 읽 습 니 다.
또한 Locale 클래스 에 서 는 헤더 의 Accept Language 에서 클 라 이언 트 브 라 우 저 언어 정 보 를 얻 는 방법 도 제공 합 니 다.
// Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
echo Locale::acceptFromHttp('en_US'), PHP_EOL; // en_US
echo Locale::acceptFromHttp('en_AU'), PHP_EOL; // en_AU
echo Locale::acceptFromHttp('zh_CN'), PHP_EOL; // zh
echo Locale::acceptFromHttp('zh_TW'), PHP_EOL; // zh
그러나 테스트 결과 에 따 르 면 문자열 매개 변수 만 있 으 면 되 기 때문에 명령 행 에서 도 테스트 할 수 있 습 니 다.주의해 야 할 것 은 중국어 에 있어 서 지역 정 보 를 되 돌려 줄 수 없고 language 정보 만 되 돌려 줄 수 있다 는 것 이다.총결산
이 Locale 류 와 관련 된 내용 은 필자 의 일상적인 개발 에서 거의 접 해 본 적 이 없 지만 다 국적 프로젝트 를 하 는 많은 학생 들 이 그들 에 대해 어느 정도 알 고 있 을 것 이 라 고 믿는다.업무 가 접촉 되 지 않 는 다 고 말 할 수 밖 에 없다.그러면 먼저 간단하게 공부 해 볼 수 밖 에 없다.마찬가지 로 앞으로 여러분 이 관련 업무 수 요 를 만 날 때 그들의 존 재 를 잊 지 마 세 요!
테스트 코드:
참고 문서:
https://www.php.net/manual/zh/class.locale.php
https://www.zhihu.com/question/20797118/answer/63480740
PHP 에서 지역 언어 표기 정 보 를 다 루 는 동작 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 PHP 지역 언어 표기 정보 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 지원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.