Laravel mangrupikeun aplikasi anu dirarancang janten lokal, pikeun adaptasi kana sababaraha basa sareng budaya. Lokalisasi nyaluyukeun aplikasi internasionalisasi kana basa khusus ngaliwatan tarjamahan.
localhost
. Lamun henteu, ngaganti localhost
nganggo nami domain atanapi alamat IP anjeun nyalira (gumantung kana pamasangan anjeun).Dina Laravel, sapertos dina seueur kerangka sanés, urang tiasa nyimpen tarjamahan pikeun basa anu béda dina file anu kapisah. Aya dua cara pikeun ngatur file tarjamahan Laravel:
resources/lang/{en,fr,ru}/{myfile.php}
;resources/lang/{fr.json, ru.json}
;Pikeun basa anu béda-béda dumasar daérah, anjeun kedah namina directory/file
tina basa numutkeun ISO 15897. Contona, pikeun Inggris Inggris Anjeun bakal make en_GB
sabalikna en-gb
. Dina artikel ieu, urang bakal difokuskeun pendekatan kadua, tapi sarua lumaku pikeun kahiji (iwal kumaha konci tarjamahan ngaranna tur dipulut).
Ayeuna, hayu urang angkat ka resources/views/welcome.blade.php
file jeung ngaganti eusi nu body
tag sareng urang, sapertos kieu:
<body class="antialiased">
<div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center py-4 sm:pt-0">
<div class="max-w-6xl mx-auto sm:px-6 lg:px-8">
<div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
Welcome to our website
</div>
</div>
</div>
</body>
Urang mimitian ku nyiapkeun pesen wilujeng sumping lokalisasi kami, anu gampang pisan dina Laravel. Sadaya anu anjeun kedah laksanakeun nyaéta ngagentos téks "Wilujeng sumping di halaman wéb kami" kalayan kode ieu: {{ __('Welcome to our website') }}
. Ieu bakal ngalatih Laravel pikeun nampilkeun "Wilujeng sumping di halaman wéb kami" sacara standardefiwengi sareng milarian tarjamahan tina string ieu upami aya basa sanés ti Inggris disetél (urang bakal terang éta engké). Inggris bakal disetel salaku basa standardefinish tina aplikasi urang, jadi ku setelan standardefiDina tungtungna urang ngan saukur bakal nembongkeun téks "Wilujeng sumping di ramatloka kami". Upami lokalna béda, urang bakal nyobian milarian tarjamahan anu cocog sareng éta bakal didamel sakedap.
Tapi kumaha Laravel terang mana basa ayeuna atanapi basa mana anu sayogi dina aplikasi? Éta ngalakukeun ieu ku ningali konfigurasi lokal dina aplikasi config/app.php
. Buka file ieu sareng milarian dua konci array asosiatif ieu:
/*
|--------------------------------------------------------------------------
| Application Locale Configuration
|--------------------------------------------------------------------------
|
| The application locale determines the default locale that will be used
| by the translation service provider. You are free to set this value
| to any of the locales which will be supported by the application.
|
*/
'locale' => 'en',
/*
|--------------------------------------------------------------------------
| Application Fallback Locale
|--------------------------------------------------------------------------
|
| The fallback locale determines the locale to use when the current one
| is not available. You may change the value to correspond to any of
| the language folders that are provided through your application.
|
*/
'fallback_locale' => 'en',
The déskripsi ditémbongkeun di luhur konci kudu timer explanatory, tapi pondokna, konci locale
ngandung pre lokaldefinish tina aplikasi Anjeun (sahenteuna, lamun euweuh Lokalisasi sejenna geus diatur dina kode). Jeung fallback_locale
eta diaktipkeun bisi urang nyetel lokal non-existent dina aplikasi urang.
Sanaos file ieu dibuka, hayu urang tambahkeun konci énggal pikeun genah urang daptar sadaya tempat anu bakal dirojong ku aplikasi urang. Urang bakal ngagunakeun ieu engké nalika nambahkeun switcher lokal. Nanging, ieu mangrupikeun tugas opsional sabab Laravel henteu ngabutuhkeun urang pikeun ngalakukeunana.
/*
|--------------------------------------------------------------------------
| Available locales
|--------------------------------------------------------------------------
|
| List all locales that your application works with
|
*/
'available_locales' => [
'English' => 'en',
'Italian' => 'it',
'French' => 'fr',
],
Ayeuna aplikasi kami ngadukung tilu basa: Inggris, Italia sareng Perancis.
Ayeuna urang parantos netepkeun sadaya daérah anu bakal urang garap, urang tiasa teraskeun sareng teraskeun narjamahkeun pesen sateuacana wilujeng sumping.defipeuting.
Hayu urang mimitian ku nambahkeun file lokalisasi anyar kana polder resources/lang
. Mimiti, jieun file resources/lang/it.json
sareng tambahkeun tarjamahan anu saluyu, sapertos kieu:
{
"Welcome to our website": "Benvenuto nel nostro sito web"
}
Salajengna, jieun file resources/lang/fr.json
:
{
"Wilujeng sumping di situs wéb kami": "Wilujeng sumping di situs kami"
}
Sakumaha anjeun tiasa tingali, urang sok ngarujuk kana pesen sateuacannadefiieu anu kami tambahkeun dina file welcome.blade.php
(anu éta {{ __('Welcome to our website') }}
). Alesan naha urang teu kudu nyieun file en.json
Éta sabab Laravel parantos terang pesen mana anu kami lebet ku pra-setelandefiréngsé dina fungsi __()
aranjeunna keur pre lokal urangdefiieu en.
Dina titik ieu, Laravel teu terang kumaha carana ngarobah lokal, jadi pikeun ayeuna, hayu urang ngalakukeun tarjamahan langsung di jero jalur. Ngaropea jalur wilujeng sumping predefiditingalikeun saperti ieu di handap:
Route::get('/{locale?}', function ($locale = null) {
if (isset($locale) && in_array($locale, config('app.available_locales'))) {
app()->setLocale($locale);
}
return view('welcome');
});
Urang ayeuna tiasa nganjang ka halaman wéb urang, netepkeun salah sahiji basa anu sayogi salaku bagéan jalur munggaran: contona, localhost/ru
o localhost/fr
. Anjeun kudu ningali eusi localized. Upami anjeun netepkeun lokal anu henteu didukung atanapi henteu netepkeun lokalitas pisan, Laravel bakal ngagunakeun en
sacara standardefinita.
Ngalihkeun lokal pikeun tiap link situs bisa jadi teu naon rék, sarta eta bisa jadi teu kasampak sakumaha bersih aesthetically. Éta pisan sababna naha urang bakal ngalakukeun setelan basa ngaliwatan switcher basa husus tur make sesi pamaké pikeun mintonkeun eusi tarjamah. Ku alatan éta, nyieun middleware anyar di jero app/Http/Middleware/Localization.php
file atawa ku ngajalankeun artisan make:middleware Localization
.
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Session;
class Localization
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
if (Session::has('locale')) {
App::setLocale(Session::get('locale'));
}
return $next($request);
}
}
middleware ieu bakal maréntahkeun Laravel ngagunakeun lokal dipilih pamaké lamun pilihan ieu hadir dina rintakan.
Kusabab urang peryogi ieu dilakukeun dina unggal pamundut, urang ogé kedah nambihan kana tumpukan pre middlewaredefiréngsé di app/http/Kernel.php
per il web
grup middleware:
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\Localization::class, /* <--- add this */
],
Salajengna, urang kedah nambihan jalur pikeun ngarobih lokal. Kami nganggo jalur panutupanana, tapi anjeun tiasa nganggo kode anu sami di jero controller anjeun upami anjeun resep:
Route::get('language/{locale}', function ($locale) {
app()->setLocale($locale);
session()->put('locale', $locale);
return redirect()->back();
});
Oge, tong hilap miceun togél lokal anu saacanna ditambahkeun dina jalur pre welcome kamidefipeuting:
Route::get('/', function () {
return view('welcome');
});
Sakali ieu rengse, hiji-hijina jalan pikeun pamaké pikeun ngarobah basa ayeuna diatur ku cara nuliskeun localhost/language/{locale}
. The locale
Pilihan bakal disimpen dina sési sareng bakal alihan pangguna ka tempat asalna (parios file Localization
middleware). Pikeun nyobaan, buka localhost/language/ru
(salami cookie sési anjeun aya dina panyungsi anjeun) sareng anjeun bakal ningali eusi anu ditarjamahkeun. Anjeun tiasa ngalih ka halaman wéb sacara bébas atanapi nyobian nga-refresh halaman sareng ningali yén basa anu dipilih dilestarikan.
Ayeuna urang kedah nyiptakeun hal anu tiasa diklik ku pangguna pikeun ngarobih basa sanés sacara manual ngalebetkeun kode lokal kana URL. Jang ngalampahkeun ieu, kami bakal nambihan pamariksaan basa anu saderhana pisan. Ku alatan éta, nyieun anyar resources/views/partials/language_switcher.blade.php
file kalawan kode handap:
<div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
@foreach($available_locales as $locale_name => $available_locale)
@if($available_locale === $current_locale)
<span class="ml-2 mr-2 text-gray-700">{{ $locale_name }}</span>
@else
<a class="ml-1 underline ml-2 mr-2" href="language/{{ $available_locale }}">
<span>{{ $locale_name }}</span>
</a>
@endif
@endforeach
</div>
Asupkeun switcher nu anyar dijieun dina pintonan "wilujeng sumping":
<body class="antialiased">
<div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center py-4 sm:pt-0">
<div class="max-w-6xl mx-auto sm:px-6 lg:px-8">
@include('partials/language_switcher')
<div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
{{ __('Welcome to our website') }}
</div>
</div>
</div>
</body>
Buka na app/Providers/AppServiceProvider.php
file sareng tambahkeun kodeu pikeun dibagikeun nalika pamilih basa urang bakal diwangun. Husus, urang bakal ngabagikeun lokal ayeuna anu tiasa diaksés salaku file {{ $current_locale }}
.
Urang utamana bakal dianggo kalayan resources/views/welcome.blade.php
, ku kituna sagalana kudu lumangsung dina pintonan wilujeng sumping kami iwal disebutkeun béda.
Contona, hayu urang ngucapkeun salam ka pamaké imajinér urang (Amanda) tinimbang ngan mintonkeun pesen generik:
{{ __('Welcome to our website, :Name', ['name' => 'caroline']) }}
Catet yén kami nganggo nami nganggo hurup kahiji dina hurup leutik, tapi pananda tempat nganggo hurup kahiji dina hurup ageung. Ku cara ieu, Laravel tiasa ngabantosan anjeun sacara otomatis ngamodalan kecap anu saleresna. Ieu bakal kajadian upami pananda tempat dimimitian ku hurup ageung, contona, :Name
ngahasilkeun "Caroline" atanapi kecap kapital pinuh, :NAME
, ngahasilkeun "CAROLINE".
Urang ogé ngapdet file tarjamahan urang resources/lang/fr.json
e resources/lang/it.json
, sabab ayeuna urang ngan ukur ningali versi Inggris dimana waé sabab konci tarjamahan henteu cocog sareng tarjamahan.
Perancis:
{
"Welcome to our website, :Name": "Bienvenue sur notre site, :Name"
}
Italio:
{
"Welcome to our website, :Name": "Benvenuto sul nostro sito web, :Name"
}
Pikeun ningali aksi pluralisasi, hayu urang tambahkeun paragraf téks énggal.
Pikeun ngalakukeun pluralisasi, anjeun kedah nganggo fungsi trans_choice
sabalikna __()
, salaku conto:
{{ __('Welcome to our website, :Name', ['name' => 'caroline']) }}
<br>
{{ trans_choice('There is one apple|There are many apples', 2) }}
Sakumaha anjeun tiasa tingali, bentuk jamak dipisahkeun ku a |
.
Ayeuna, kumaha upami urang peryogi sababaraha bentuk jamak?
Ieu ogé mungkin:
{{ trans_choice('{0} There :form no apples|{1} There :form just :count apple|[2,19] There :form :count apples', 24) }}
Dina hal ieu, urang ngidinan angka 0
, 1
, sareng ti 2
a 19
, sarta tungtungna ti 20 saterusna. Tangtosna, anjeun tiasa nambihan saloba aturan anu anjeun peryogikeun.
Janten kumaha upami urang hoyong pananda tempat dina bentuk jamak urang?
{{ trans_choice('{0} There :form no apples|{1} There :form just :count apple|[2,19] There :form :count apples', 24, ['form' => 'is']) }}
Urang ogé bisa ngagunakeun count diliwatan dina `trans_choice` lamun diperlukeun maké placeholder a :count
husus:
{{ trans_choice('{0} There :form no apples|{1} There :form just :count apple|[2,19] There :form :count apples', 1, ['form' => 'is']) }}
Tungtungna, tong hilap pikeun ngapdet file tarjamahan anjeun kalayan sagala parobihan anu anjeun lakukeun kana tarjamahan dasar.
Italio:
{
"Welcome to our website, :Name": "Benvenuto nel nostro sito, :Name",
"{0} There :form no apples|{1} There :form just :count apple|[2,19] There :form :count apples": "{0} Nessuna mela|{1} C'è:count mela|[2,19] Ci sono :count mele"
}
Perancis:
{
"Welcome to our website, :Name": "Bienvenue sur notre site, :Name",
"{0} There :form no apples|{1} There :form just :count apple|[2,19] There :form :count apples": "{0} Il n'y a pas de pommes|{1} Il n'y :form :count pomme|[2,19] Il y :form :count pommes"
}
Pikeun maluruh tanggal, urang bakal abah kakuatan tina karbon , nu hadir kalawan Laravel sacara standardefinita. Pariksa Dokuméntasi karbon ; Anjeun tiasa ngalakukeun loba hal metot. Salaku conto, urang tiasa nyetél lokal sareng aturan tanggal sareng waktos.
Pikeun conto saderhana, urang bakal nunjukkeun tanggal ayeuna anu dilokalkeun pikeun basa anu dipilih. Di urang routes/web.php
, urang ngamutahirkeun jalur kaca wilujeng sumping tur lulus pesen tanggal localized ka ours view
wilujeng sumping:
<?php
Route::get('/', function () {
$today = \Carbon\Carbon::now()
->settings(
[
'locale' => app()->getLocale(),
]
);
// LL is macro placeholder for MMMM D, YYYY (you could write same as dddd, MMMM D, YYYY)
$dateMessage = $today->isoFormat('dddd, LL');
return view('welcome', [
'date_message' => $dateMessage
]);
});
Hayu urang ngamutahirkeun resources/views/welcome.blade.php
nambahkeun tampilan tanggal, kawas kieu:
{{ __('Welcome to our website, :Name', ['name' => 'amanda']) }}
<br>
{{ trans_choice('{0} There :form :count apples|{1} There :form just :count apple|[2,19] There :form :count apples', 1, ['form' => 'is']) }}
<br>
{{ $date_message }}
Nyobian ngarobah basa dina kaca imah tina localhost
, urang bakal ningali yén tanggal ayeuna dilokalkeun, contona:
Di nagara béda, jalma ngagunakeun format béda pikeun ngagambarkeun angka, contona:
Janten, pikeun ngagambarkeun bédana ieu dina aplikasi Laravel anjeun, anjeun tiasa nganggo NumberFormatter ku cara kieu:
<?php
$num = NumberFormatter::create('en_US', NumberFormatter::DECIMAL);
$num2 = NumberFormatter::create('fr', NumberFormatter::DECIMAL);
Anjeun ogé tiasa nyerat nomer dina basa anu khusus sareng nunjukkeun sapertos "saratus dua puluh tilu rébu saratus dua puluh tilu koma hiji dua":
<?php
$num = NumberFormatter::create('en_US', NumberFormatter::SPELLOUT);
$num2 = NumberFormatter::create('fr', NumberFormatter::SPELLOUT);
Salaku tambahan, NumberFormatter ngamungkinkeun anjeun gampang mendakan mata uang, contona:
<?php
$currency1 = NumberFormatter::create('fr', NumberFormatter::CURRENCY);
$currency2 = NumberFormatter::create('en_US', NumberFormatter::CURRENCY);
Ku kituna pikeun fr
anjeun bakal nempo Euro, bari keur en_US
mata uang bakal dina dollar AS.
Ercole Palmeri
Ngembangkeun kaahlian motorik halus ngaliwatan ngawarnaan nyiapkeun barudak pikeun kaahlian leuwih kompleks kawas nulis. Pikeun ngawarnaan…
Sektor angkatan laut mangrupikeun kakuatan ékonomi global anu leres, anu nuju ka arah pasar 150 milyar ...
Senén kamari, Financial Times ngumumkeun deal sareng OpenAI. FT ngalisensikeun jurnalisme kelas dunya na…
Jutaan jalma mayar jasa streaming, mayar biaya langganan bulanan. Pendapat umum yén anjeun…