현지화
- 번역 문자열의 매개변수 바꾸기
- 확장팩의 언어 파일을 다시 작성합니다.
소개
Laravel 현지화 기능은 다양한 언어 파일에서 문자열을 검색하는 간단한 방법을 제공하여 애플리케이션이 다국어 개발을 더 잘 지원할 수 있도록 해줍니다. 언어 파일은 기본적으로
resources/lang
디렉터리에 있습니다. 이 디렉터리에서 해당 언어 파일은 해당 하위 디렉터리에 저장됩니다. 예:resources/lang
目录中。在此目录中,相应的语言文件存放在相应的子目录下,例如:/resources /lang /en messages.php /es messages.php
所有的语言文件都返回一个键值对数组,例如:
<?php return [ 'welcome' => 'Welcome to our application' ];
区域设置
应用的默认语言设置保存在
config/app.php
配置文件中。你可以根据需要修改当前设置,还可以使用App
Facade 的setLocale
方法动态地更改应用运行过程中使用的语言:Route::get('welcome/{locale}', function ($locale) { App::setLocale($locale); // });
你也可以设置『备用语言』,它会在当前语言不包含给定的翻译字符串时被使用。像默认语言一样,备用语言也可以在
config/app.php
配置文件中设置:'fallback_locale' => 'en',
确定当前语言环境
你可以使用
App
Facade 的getLocale
和isLocale
方法确定当前的区域设置或者检查语言环境是否为给定值:$locale = App::getLocale();if (App::isLocale('en')) { // }
定义翻译字符串
使用短键
通常,翻译字符串都存放在
resources/lang
目录下的文件里。在此目录中,但凡应用支持的每种语言都应该有一个对应的子目录:/resources /lang /en messages.php /es messages.php
所有语言文件都返回键值对数组,例如:
<?php // resources/lang/en/messages.php return [ 'welcome' => 'Welcome to our application' ];
使用翻译字符串作为键
对于有大量翻译需求的应用,如果每条翻译语句都要一一使用 『短键』 来定义,那么当你在视图中尝试去引用这些 『短键』 的时候,很容易变得混乱。因此, Laravel 也支持使用字符串 『默认』 翻译作为关键字来定义翻译字符串。
使用翻译字符串作为键的翻译文件以 JSON 格式存储在
resources/lang
目录中。例如,如果你的应用中有西班牙语翻译,你应该在该目录下新建一个resources/lang/es.json
{ "I love programming.": "Me encanta programar." }
모든 언어 파일은 키-값 쌍의 배열을 반환합니다. 예:echo __('messages.welcome'); echo __('I love programming.');
애플리케이션의 기본 언어 설정은로케일
config/app.php
구성 파일 중간. 필요에 따라 현재 설정을 수정할 수 있으며,App
Facade의setLocale
메서드를 사용하여 애플리케이션 실행 중에 사용되는 언어를 동적으로 변경할 수도 있습니다. 🎜{{ __('messages.welcome') }} @lang('messages.welcome')
🎜다음과 같이 할 수 있습니다. 또한 현재 언어에 지정된 번역 문자열이 포함되어 있지 않을 때 사용되는 "대체 언어"를 설정합니다. 기본 언어와 마찬가지로 백업 언어도config/app.php
구성 파일에서 설정할 수 있습니다: 🎜'welcome' => 'Welcome, :name',
🎜현재 로케일 결정
🎜App
Facade의getLocale
및isLocale
메소드를 사용하여 현재 로케일을 결정하거나 로케일이 고정 값: 🎜echo __('messages.welcome', ['name' => 'dayle']);
🎜🎜🎜🎜🎜defining Translation strings🎜🎜🎜🎜🎜단축키 사용
🎜보통 번역 문자열은resources/에 저장됩니다. lang
파일을 디렉토리에 넣으세요. 이 디렉터리에는 애플리케이션에서 지원하는 각 언어에 해당하는 하위 디렉터리가 있어야 합니다. 🎜'welcome' => 'Welcome, :NAME', // Welcome, DAYLE 'goodbye' => 'Goodbye, :Name', // Goodbye, Dayle
🎜모든 언어 파일은 키-값 쌍의 배열을 반환합니다. 예: 🎜'apples' => 'There is one apple|There are many apples',
🎜🎜🎜🎜번역 문자열을 키로 사용
🎜번역 요구 사항이 큰 애플리케이션의 경우 각 번역 문이 다음과 같아야 합니다. "단축 키"를 사용하여 하나씩 정의하므로 뷰에서 이러한 "단축 키"를 참조하려고 하면 쉽게 혼란스러울 수 있습니다. 따라서 라라벨은 번역 문자열을 정의하기 위한 키워드로 "default" 번역 문자열을 사용하는 것을 지원합니다. 🎜🎜번역 문자열을 키로 사용하는 번역 파일은resources/lang
디렉터리에 JSON 형식으로 저장됩니다. 예를 들어 앱에 스페인어 번역이 있는 경우 다음 디렉터리에 새resources/lang/es.json
파일을 만들어야 합니다. 🎜'apples' => '{0} There are none|[1,19] There are some|[20,*] There are many',
🎜🎜🎜🎜🎜🎜번역 문자열 검색
보조 함수
__
를 사용하여 언어 파일에서 검색할 수 있습니다.__
함수는 파일 이름과 번역 문자열의 키 이름을 허용합니다. 첫 번째 매개변수로 사용됩니다. 예를 들어,resources/lang/messages.php
언어 파일에서 번역 문자열welcome
을 검색하려고 합니다.__
从语言文件中检索,__
函数接受翻译字符串所在的文件名加键名作为其第一个参数。例如,我们要检索resources/lang/messages.php
语言文件中的翻译字符串welcome
:echo trans_choice('messages.apples', 10);
如果你正使用 Blade 模板引擎 ,你可以在视图文件中使用
{{ }}
语法或者使用@lang
指令来打印翻译字符串:'minutes_ago' => '{1} :value minute ago|[2,*] :value minutes ago', echo trans_choice('time.minutes_ago', 5, ['value' => 5]);
如果指定的翻译字符串不存在,那么
__
函数会直接返回该翻译字符串的键名。所以,如果上述示例中的翻译字符串对应的键值对不存在,__
函数将会直接返回messages.welcome
。{note}
@lang
指令不会对任何输出进行转义。当你使用这个指令时,你必须 完全由自己承担 对输出内容的转义工作。翻译字符串中的参数替换
如果需要,你可以在翻译字符串中定义占位符。所有的占位符都有一个
:
前缀。例如,你可以使用占位符 name 定义欢迎消息:'apples' => '{0} There are none|{1} There is one|[2,*] There are :count',
你可以在
rrreee__
函数中传递一个数组作为第二个参数,它会将数组中的值替换到翻译字符串的占位符中:如果你的占位符中包含了首字母大写或者全部为大写,翻译过来的内容也会做相应的大写处理:
rrreee复数
复数是一个复杂的问题,因为不同的语言对复数有不同的规则, 使用 『管道符』
rrreee|
,可以区分字符串的单复数形式:你甚至可以创建更复杂的复数规则,为多个数字范围指定翻译字符串:
rrreee在定义具有复数选项的翻译字符串之后,你可以使用
rrreeetrans_choice
函数来检索给定『数量』 的内容。例如,设置 『总数』 为 10 ,符合数量范围 1 至 19 ,所以会得到 There are some 这条复数语句:你也可以在复数字符串中插入占位符。
rrreeetrans_choice
函数第三个参数所传递数组将会替换占位符:如果你想让传递给
Blade 템플릿 엔진을 사용하는 경우 파일에서trans_choice
函数的 『数量』 参数显示在翻译字符串中,你可以使用:count
rrreee{{ }}
구문을 사용하거나@lang
지시문을 사용하여 번역 문자열을 인쇄할 수 있습니다.{note}
@lang
지시문은 출력을 이스케이프하지 않습니다. 이 지시문을 사용할 때 출력을 이스케이프 처리하는 데 대한 책임은 전적으로 사용자에게 있습니다. 🎜🎜🎜번역 문자열의 매개변수 교체 h3>🎜필요한 경우 번역 문자열에 자리 표시자를 정의할 수 있습니다. 모든 자리 표시자에는
:
접두사가 있습니다. 예를 들어, 자리 표시자 이름을 사용하여 환영 메시지를 정의할 수 있습니다: 🎜rrreee🎜__
함수의 두 번째 매개변수로 배열을 전달할 수 있습니다. 그러면 배열의 값이 다음으로 대체됩니다. 번역 문자열 자리 표시자: 🎜rrreee🎜자리 표시자에 첫 글자가 대문자이거나 모두 대문자로 포함되어 있는 경우 번역된 콘텐츠도 그에 따라 대문자로 표시됩니다. 🎜rrreee🎜🎜 🎜🎜🎜복수
🎜복수는 언어마다 복수에 대한 규칙이 다르기 때문에 복잡한 문제입니다. "파이프 문자" < code>| , 문자열의 단수형과 복수형을 구별할 수 있습니다: 🎜rrreee🎜 여러 숫자 범위에 대한 번역 문자열을 지정하여 더 복잡한 복수화 규칙을 만들 수도 있습니다: 🎜rrreee🎜 복수화 옵션으로 번역을 정의할 때 문자열 뒤에,trans_choice
함수를 사용하여 주어진 "수량"의 내용을 검색할 수 있습니다. 예를 들어 "총 개수"를 10으로 설정하면 수량 범위 1~19에 해당하므로 복수형 문이 표시됩니다. 🎜rrreee🎜복수형 문자열에 자리 표시자를 삽입할 수도 있습니다.trans_choice
함수의 세 번째 매개변수로 전달된 배열은 자리 표시자를 대체합니다: 🎜rrreee🎜trans_choice
함수에 전달된 "숫자" 매개변수를 표시하려면 번역 문자 문자열에서:count
자리 표시자를 사용할 수 있습니다: 🎜rrreee🎜🎜🎜🎜🎜🎜확장팩의 언어 파일을 다시 작성하세요
일부 확장팩에는 자체 언어 파일이 함께 제공될 수 있습니다. 확장 패키지의 핵심 파일을 직접 수정하는 대신
resources/lang/vendor/{package}/{locale}
디렉터리에 파일을 배치하여 이를 재정의할 수 있습니다.resources/lang/vendor/{package}/{locale}
目录放置文件来重写它们,而不要直接修改扩展包的核心文件。例如,当你需要重写
예를 들어skyrim/hearthfire
扩展包的英语语言文件messages.php
,则需要把文件存放为resources/lang/vendor/hearthfire/en/messages.php
skyrim/hearthfire
확장팩의 영어 파일messages.php
를 다시 작성해야 하는 경우 해당 파일을리소스로 저장해야 합니다. /lang/vendor /hearthfire/en/messages.php
. 이 파일에서는 수정하려는 번역 문자열만 정의하면 됩니다. 재정의되지 않은 번역 문자열은 확장 팩의 원래 언어 파일에서 계속 로드됩니다. 웹사이트에 처음 게시되었습니다.