penyetempatan


    • Pengenalan
    Konfigurasi wilayah
    • Tentukan rentetan terjemahan
    • Cara menggunakan kekunci pendek
    Cara menggunakan rentetan terjemahan sebagai Kunci
    • Gantikan rentetan terjemahan
    • jamak
  • Tulis semula fail bahasa pek pengembangan

Pengenalan

Ciri penyetempatan Laravel menyediakan cara mudah untuk mendapatkan semula rentetan daripada fail bahasa yang berbeza, membolehkan aplikasi anda menyokong pembangunan berbilang bahasa dengan lebih baik. Fail bahasa diletakkan dalam direktori resources/lang secara lalai. Dalam direktori ini, fail bahasa yang sepadan disimpan dalam subdirektori yang sepadan, contohnya: 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 的 getLocaleisLocale 方法确定当前的区域设置或者检查语言环境是否为给定值:

$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."
}

Semua fail bahasa mengembalikan tatasusunan pasangan nilai kunci, contohnya:

echo __('messages.welcome');
echo __('I love programming.');

Locale

Tetapan bahasa lalai aplikasi disimpan dalam config/app.php tengah fail konfigurasi. Anda boleh mengubah suai tetapan semasa mengikut keperluan, dan anda juga boleh menggunakan kaedah setLocale Fasad App untuk menukar bahasa yang digunakan secara dinamik semasa aplikasi berjalan: 🎜
{{ __('messages.welcome') }}
@lang('messages.welcome')
🎜Anda boleh juga tetapkan "Bahasa Ganti", yang digunakan apabila bahasa semasa tidak mengandungi rentetan terjemahan yang diberikan. Seperti bahasa lalai, bahasa sandaran juga boleh ditetapkan dalam fail konfigurasi config/app.php: 🎜
'welcome' => 'Welcome, :name',
🎜

Tentukan Tempat semasa

🎜Anda boleh menggunakan kaedah App Facade getLocale dan isLocale untuk menentukan tempat semasa atau menyemak sama ada tempat itu ialah nilai yang diberikan. ="using- short-keys">🎜🎜
🎜

Gunakan kekunci pendek

🎜Biasanya, rentetan terjemahan disimpan dalam resources/ lang fail dalam direktori. Dalam direktori ini, harus ada subdirektori yang sepadan untuk setiap bahasa yang disokong oleh aplikasi: 🎜
echo __('messages.welcome', ['name' => 'dayle']);
🎜Semua fail bahasa mengembalikan tatasusunan pasangan nilai kunci, contohnya: 🎜
'welcome' => 'Welcome, :NAME', 
// Welcome, DAYLE
'goodbye' => 'Goodbye, :Name', 
// Goodbye, Dayle
🎜🎜🎜
🎜

Gunakan rentetan terjemahan sebagai kunci

🎜Untuk aplikasi dengan keperluan terjemahan yang besar, jika setiap pernyataan terjemahan Ia mesti ditakrifkan satu demi satu menggunakan "kunci pendek", jadi apabila anda cuba merujuk "kunci pendek" ini dalam paparan, ia boleh menjadi mengelirukan dengan mudah. Oleh itu, Laravel juga menyokong penggunaan rentetan terjemahan "lalai" sebagai kata kunci untuk menentukan rentetan terjemahan. 🎜🎜Fail terjemahan menggunakan rentetan terjemahan kerana kunci disimpan dalam format JSON dalam direktori resources/lang. Contohnya, jika apl anda mempunyai terjemahan bahasa Sepanyol, anda harus membuat fail resources/lang/es.json baharu dalam direktori ini: 🎜
'apples' => 'There is one apple|There are many apples',
🎜🎜🎜🎜🎜🎜

Dapatkan rentetan terjemahan

Anda boleh menggunakan fungsi tambahan __ untuk mendapatkan semula daripada fail bahasa Fungsi __ menerima nama fail ditambah dengan nama kunci rentetan terjemahan sebagai parameter pertamanya. Sebagai contoh, kami ingin mendapatkan semula rentetan terjemahan selamat datang dalam fail bahasa resources/lang/messages.php: __ 从语言文件中检索, __ 函数接受翻译字符串所在的文件名加键名作为其第一个参数。例如,我们要检索 resources/lang/messages.php 语言文件中的翻译字符串 welcome

'apples' => '{0} There are none|[1,19] There are some|[20,*] There are many',

如果你正使用 Blade 模板引擎 ,你可以在视图文件中使用 {{ }} 语法或者使用 @lang 指令来打印翻译字符串:

echo trans_choice('messages.apples', 10);

如果指定的翻译字符串不存在,那么 __ 函数会直接返回该翻译字符串的键名。所以,如果上述示例中的翻译字符串对应的键值对不存在, __ 函数将会直接返回 messages.welcome

{note} @lang 指令不会对任何输出进行转义。当你使用这个指令时,你必须 完全由自己承担 对输出内容的转义工作。

翻译字符串中的参数替换

如果需要,你可以在翻译字符串中定义占位符。所有的占位符都有一个 : 前缀。例如,你可以使用占位符 name 定义欢迎消息:

'minutes_ago' => '{1} :value minute ago|[2,*] :value minutes ago',
echo trans_choice('time.minutes_ago', 5, ['value' => 5]);

你可以在 __ 函数中传递一个数组作为第二个参数,它会将数组中的值替换到翻译字符串的占位符中:

'apples' => '{0} There are none|{1} There is one|[2,*] There are :count',

如果你的占位符中包含了首字母大写或者全部为大写,翻译过来的内容也会做相应的大写处理:

rrreee

复数

复数是一个复杂的问题,因为不同的语言对复数有不同的规则, 使用 『管道符』 | ,可以区分字符串的单复数形式:

rrreee

你甚至可以创建更复杂的复数规则,为多个数字范围指定翻译字符串:

rrreee

在定义具有复数选项的翻译字符串之后,你可以使用 trans_choice 函数来检索给定『数量』 的内容。例如,设置 『总数』 为 10 ,符合数量范围 1 至 19 ,所以会得到 There are some 这条复数语句:

rrreee

你也可以在复数字符串中插入占位符。  trans_choice 函数第三个参数所传递数组将会替换占位符:

rrreee

如果你想让传递给 trans_choice 函数的 『数量』 参数显示在翻译字符串中,你可以使用 :countrrreee

Jika anda menggunakan enjin templat Blade, anda boleh Gunakan sintaks {{ }} dalam fail atau gunakan arahan @lang untuk mencetak rentetan terjemahan:

rrreeeJika rentetan terjemahan yang ditentukan tidak wujud, maka __ Fungsi ini akan mengembalikan nama kunci rentetan terjemahan secara langsung. Oleh itu, jika pasangan nilai kunci yang sepadan dengan rentetan terjemahan dalam contoh di atas tidak wujud, fungsi __ akan terus mengembalikan messages.welcome.

{note} Arahan @lang tidak terlepas daripada sebarang output. Apabila anda menggunakan arahan ini, anda mesti bertanggungjawab sepenuhnya untuk melepaskan output.
🎜🎜
🎜

Penggantian parameter dalam rentetan terjemahan 🎜Anda boleh menentukan ruang letak dalam rentetan terjemahan jika perlu. Semua ruang letak mempunyai awalan :. Sebagai contoh, anda boleh mentakrifkan mesej alu-aluan menggunakan nama pemegang tempat: 🎜rrreee🎜 Anda boleh menghantar tatasusunan sebagai parameter kedua dalam fungsi __, yang akan menggantikan nilai dalam tatasusunan ke dalam rentetan terjemahan Dalam pemegang tempat: 🎜rrreee🎜Jika pemegang tempat anda mengandungi huruf pertama dalam huruf besar atau semua huruf besar, kandungan yang diterjemahkan juga akan menggunakan huruf besar sewajarnya: 🎜rrreee🎜🎜 🎜
🎜

Nombor jamak

🎜Nombor jamak ialah isu yang kompleks kerana bahasa berbeza mempunyai peraturan yang berbeza untuk nombor jamak Gunakan "aksara paip" < kod>|
, boleh membezakan antara bentuk tunggal dan jamak bagi rentetan: 🎜rrreee🎜 Anda juga boleh mencipta peraturan pemajmukan yang lebih kompleks, menentukan rentetan terjemahan untuk julat berbilang nombor: 🎜rrreee🎜 Apabila mentakrifkan terjemahan dengan pilihan pemajmukan Selepas rentetan, anda boleh menggunakan fungsi trans_choice untuk mendapatkan semula kandungan "kuantiti" yang diberikan. Sebagai contoh, menetapkan "Jumlah Nombor" kepada 10 sepadan dengan julat kuantiti 1 hingga 19, jadi anda akan mendapat pernyataan jamak Terdapat beberapa: 🎜rrreee🎜Anda juga boleh memasukkan ruang letak dalam rentetan jamak. Tatasusunan yang diluluskan dalam parameter ketiga fungsi trans_choice akan menggantikan pemegang tempat: 🎜rrreee🎜Jika anda mahu parameter "nombor" dihantar ke fungsi trans_choice untuk dipaparkan dalam aksara terjemahan Dalam rentetan, anda boleh menggunakan :count pemegang tempat: 🎜rrreee🎜🎜🎜🎜🎜🎜

Tulis semula fail bahasa pek pengembangan

Sesetengah pek pengembangan mungkin disertakan dengan fail bahasa mereka sendiri. Anda boleh mengatasinya dengan meletakkan fail dalam direktori resources/lang/vendor/{package}/{locale} dan bukannya mengubah suai terus fail teras pakej sambungan. resources/lang/vendor/{package}/{locale} 目录放置文件来重写它们,而不要直接修改扩展包的核心文件。

例如,当你需要重写  skyrim/hearthfire 扩展包的英语语言文件 messages.php ,则需要把文件存放为 resources/lang/vendor/hearthfire/en/messages.php

Sebagai contoh, apabila anda perlu menulis semula fail bahasa Inggeris messages.php daripada pek pengembangan skyrim/hearthfire, anda perlu menyimpan fail sebagai sumber /lang/vendor /hearthfire/en/messages.php . Dalam fail ini, anda hanya perlu menentukan rentetan terjemahan yang ingin anda ubah suai. Sebarang rentetan terjemahan yang belum ditindih masih akan dimuatkan daripada fail bahasa asal pek pengembangan.
.
🎜