Stiùireadh ceum air cheum sgìreachadh Laravel, oideachadh le eisimpleirean
Mar a nì thu pròiseact Laravel gu h-ionadail, mar a leasaicheas tu pròiseact ann an Laravel agus mar as urrainn dhut a chleachdadh ann an grunn chànanan.
San artaigil seo chì sinn mar as urrainn dhut faidhlichean eadar-theangachaidh a ghnàthachadh, taghadh cànain a chruthachadh, agus barrachd le eisimpleirean.
Is e aplacaid a th’ ann an Laravel a chaidh a dhealbhadh gus a bhith ionadail, gus atharrachadh gu diofar chànanan is chultaran. An sin ionadail atharraich tagraidhean eadar-nàiseanta gu cànan sònraichte tro eadar-theangachadh.
- Prerequisites
- Ag obair le faidhlichean eadar-theangachaidh
- Eadar-theangachaidhean sìmplidh
- Ionadail Laravel
- Faidhlichean eadar-theangachaidh
- Ag atharrachadh sgìreachadh ann an Laravel
- Middleware
- Atharraich slighean
- An commutator
- Roghainnean eadar-theangachaidh adhartach ann am PHP Laravel
- Iomarraidheachd
- Ag obair le cinn-latha ionadail ann an Laravel
- Cruthachadh àireamhan agus airgeadan le NumberFormatter
- Leughaidhean Co-cheangailte
Prerequisites
- San artaigil seo bheir sinn iomradh Laravel dreach 8.x;
- Gus an oideachadh seo a leantainn gu soirbheachail, feumaidh an eòlas riatanach a bhith agad air cànan prògramadh PHP agus frèam Laravel.
- Tha an àrainn agad
localhost
. Mura h-eil, cuir na àitelocalhost
leis an ainm fearainn no an seòladh IP agad fhèin (a rèir an stàlaidh agad).
Ag obair le faidhlichean eadar-theangachaidh
Ann an Laravel, dìreach mar ann an iomadh frèam eile, is urrainn dhuinn eadar-theangachaidhean airson diofar chànanan a stòradh ann am faidhlichean fa leth. Tha dà dhòigh air faidhlichean eadar-theangachaidh Laravel a chuir air dòigh:
- Dòigh-obrach nas sine a bhios a’ stòradh fhaidhlichean san àite a leanas:
resources/lang/{en,fr,ru}/{myfile.php}
; - Dòigh-obrach ùr a bhios a’ stòradh fhaidhlichean san àite a leanas:
resources/lang/{fr.json, ru.json}
;
Airson cànanan a tha eadar-dhealaichte a rèir sgìre, bu chòir dhut an ainmeachadh directory/file
den chànan a rèir ISO 15897. Mar eisimpleir, airson Beurla na RA a bhiodh tu a’ cleachdadh en_GB
An àite en-gb
. San artaigil seo, cuiridh sinn fòcas air an dàrna dòigh-obrach, ach tha an aon rud a 'dol airson a' chiad fhear (ach a-mhàin mar a tha iuchraichean eadar-theangachaidh air an ainmeachadh agus air an toirt air ais).
Eadar-theangachaidhean sìmplidh
Nì sinn sgrùdadh air an fhaidhle resources/views/welcome.blade.php
agus cuir an àite susbaint an taga body
leinn, mar so :
<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>
Tòisichidh sinn le bhith ag ullachadh ar teachdaireachd fàilte ionadail, a tha gu math furasta ann an Laravel. Chan eil agad ach an còd a leanas a chuir an àite an teacsa “Fàilte chun làrach-lìn againn”: {{ __('Welcome to our website') }}
. Bheir seo stiùireadh do Laravel “Fàilte don làrach-lìn againn” a thaisbeanadh gu bunaiteach agus coimhead airson eadar-theangachaidhean den t-sreang seo ma tha cànan eile seach Beurla air a shuidheachadh (gheibh sinn sin nas fhaide air adhart). Bidh Beurla air a shuidheachadh mar chànan bunaiteach na h-aplacaid againn, agus mar sin gu gnàthach bidh sinn dìreach a’ taisbeanadh an teacsa “Fàilte chun làrach-lìn againn”. Ma tha an sgìreachadh eadar-dhealaichte, feuchaidh sinn ris an eadar-theangachadh co-fhreagarrach a lorg a thèid a chruthachadh ann am mionaid.
Ionadail Laravel
Ach ciamar a tha fios aig Laravel dè an cànan a th’ ann an-dràsta no dè na cànanan a tha rim faighinn san tagradh?
Bidh e a’ dèanamh seo le bhith a’ suidheachadh an rèiteachadh ionadail san aplacaid config/app.php
. Fosglaidh sinn am faidhle seo agus coimhead airson fiosrachadh anns a’ mhaitris cheangail:
/*
|--------------------------------------------------------------------------
| 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',
Na tuairisgeulan a tha air thoiseach air sònrachadh iuchraichean locale
e fallback_locale
tha iad fèin-mhìneachaidh. Co-dhiù, an iuchair locale
anns a bheil sgìreachadh bunaiteach an tagraidh agad (co-dhiù, mura h-eil duine eile locale
air a shuidheachadh sa chòd). Agus an fallback_locale
air a ghnìomhachadh ma shuidhicheas sinn a locale
nach eil ann san tagradh againn.
Fhad 's a tha am faidhle seo againn fosgailte, cuiridh sinn an iuchair ùr 'available_locales
' airson ar goireasachd, a’ liostadh a h-uile sgìre a bheir an tagradh againn taic. Cleachdaidh sinn seo nas fhaide air adhart nuair a chuireas sinn switcher ionadail ris. Ach, is e gnìomh roghainneil a tha seo leis nach eil Laravel ag iarraidh oirnn a dhèanamh.
/*
|--------------------------------------------------------------------------
| Available locales
|--------------------------------------------------------------------------
|
| List all locales that your application works with
|
*/
'available_locales' => [
'English' => 'en',
'Italian' => 'it',
'French' => 'fr',
],
A-nis tha an tagradh againn a’ toirt taic do thrì cànanan: Beurla, Eadailtis agus Fraingis.
Faidhlichean eadar-theangachaidh
A-nis gu bheil sinn air a h-uile sgìre a stèidheachadh leis am bi sinn ag obair, is urrainn dhuinn gluasad air adhart, ag atharrachadh eadar-theangachadh ar teachdaireachd fàilte bunaiteach.
Feuch an tòisich sinn le bhith a’ cur fhaidhlichean ionadail ùra ris a’ phasgan resources/lang
. Bidh sinn an uairsin a’ cruthachadh am faidhle resources/lang/it.json
agus cuir ris na h-eadar-theangachaidhean co-fhreagarrach, mar a leanas:
{
"Welcome to our website": "Benvenuto nel nostro sito web"
}
Mar sin, cruthaichidh sinn am faidhle resources/lang/fr.json
:
{
“Fàilte don làrach-lìn againn”: “Fàilte don làrach-lìn againn”
}
Mar a chì thu, bidh sinn an-còmhnaidh a’ toirt iomradh air an teachdaireachd bhunaiteach a chuir sinn ris san fhaidhle welcome.blade.php
(a bha {{ __('Welcome to our website') }}
). Is e an adhbhar nach fheum sinn faidhle a chruthachadh en.json
tha e air sgàth gu bheil fios aig Laravel mu thràth air na teachdaireachdan a bheir sinn chun ghnìomh gu bunaiteach __()
tha iad airson ar locale bunaiteach en.
Ag atharrachadh sgìreachadh ann an Laravel
Aig an ìre seo, chan eil fios aig Laravel mar a dh’ atharraicheas sinn sgìreachadh, agus mar sin airson a-nis bidh sinn a’ dèanamh na h-eadar-theangachaidhean gu dìreach taobh a-staigh na slighe. Atharraich an t-slighe fàilte bunaiteach mar a chithear gu h-ìosal:
Route::get('/{locale?}', function ($locale = null) {
if (isset($locale) && in_array($locale, config('app.available_locales'))) {
app()->setLocale($locale);
}
return view('welcome');
});
Faodaidh sinn a-nis tadhal air an làrach-lìn againn, a’ sònrachadh gin de na cànanan a tha rim faighinn mar a’ chiad earrann slighe: mar eisimpleir, localhost/it
o localhost/fr
. Bu chòir dhut susbaint ionadail fhaicinn. Air eagal ‘s gun sònraich thu locale gun taic no nach sònraich thu locale idir, cleachdaidh Laravel en
a ghnàth.
Middleware
Is dòcha nach bi e nas fheàrr àiteachan atharrachadh airson gach ceangal làraich, agus is dòcha nach bi iad a’ coimhead cho glan a thaobh bòidhchead. Sin as coireach gun dèan sinn an suidheachadh cànain tro switcher cànain sònraichte agus cleachdaidh sinn an seisean cleachdaiche gus an susbaint eadar-theangaichte a thaisbeanadh.
Gus seo a dhèanamh tha sinn a’ dol a chruthachadh fear ùr middleware
, agus canaidh sinn e app/Http/Middleware/Localization.php
, a 'ruith na loidhne-àithne artisan make:middleware Localization
.
Às deidh dhuinn an àithne a chuir an gnìomh, fosgladh am faidhle Localization.php, chì sinn am mìneachadh air a’ chlas Ionadachadh:
<?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);
}
}
Bheir am bathar-meadhain seo stiùireadh do Laravel an locale taghte cleachdaiche a chleachdadh ma tha an taghadh seo an làthair san t-seisean.
Leis gu feum sinn an obair seo a dhèanamh air a h-uile iarrtas, feumaidh sinn cuideachd a chuir ris a’ chruach meadhan-bathair bunaiteach a-steach app/http/Kernel.php
agus gu h-àraidh anns an raon cheangail $middlewareGroups
:
* 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 */
],
Atharraich an route
An ath rud, feumaidh sinn slighe a chuir ris gus an locale atharrachadh. Tha sinn a’ cleachdadh slighe dùnaidh, ach faodaidh tu an aon chòd a chleachdadh taobh a-staigh do rianadair ma thogras tu:
Route::get('language/{locale}', function ($locale) {
app()->setLocale($locale);
session()->put('locale', $locale);
return redirect()->back();
});
Cuideachd, na dìochuimhnich an tionndadh locale a chaidh a chur ris roimhe seo a thoirt air falbh san t-slighe fàilte àbhaisteach againn:
Route::get('/', function () {
return view('welcome');
});
Aon uair ‘s gu bheil seo air a dhèanamh, is e an aon dòigh anns am faod an neach-cleachdaidh an cànan a tha stèidhichte an-dràsta atharrachadh le bhith a’ dol a-steach localhost/language/{locale}
. An taghadh locale
thèid a stòradh taobh a-staigh an t-seisein agus bheir e ath-stiùireadh do luchd-cleachdaidh air ais chun àite às an tàinig iad (thoir sùil air a’ bhathar-meadhain Localization
). Gus feuchainn air, rachaibh gu localhost/language/ru
(cho fad 's a tha do bhriosgaid seisean an làthair sa bhrobhsair agad) agus chì thu an t-susbaint eadar-theangaichte. Faodaidh tu gluasad timcheall an làrach-lìn gu saor no feuchainn ris an duilleag ùrachadh agus faicinn gu bheil an cànan taghte glèidhte.
An commutator
A-nis feumaidh sinn rudeigin a chruthachadh as urrainn don neach-cleachdaidh cliogadh gus an cànan atharrachadh an àite a bhith a’ cuir a-steach còdan locale a-steach don URL le làimh. Gus seo a dhèanamh, cuiridh sinn sgrùdadh cànain gu math sìmplidh ris. Mar sin, cruthaichidh sinn faidhle ùr resources/views/partials/language_switcher.blade.php
leis a’ chòd a leanas:
<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>
Cuir a-steach an switcher a chaidh a chruthachadh às ùr san t-sealladh “fàilte”:
<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>
Fosgail am faidhle app/Providers/AppServiceProvider.php
agus cuir ris a’ chòd airson a roinn nuair a bhios an switcher cànain againn gnìomhach. Gu sònraichte, roinnidh sinn na roghainnean locale gnàthach a gheibhear thuige mar fhaidhle {{ $current_locale }}
.
Roghainnean eadar-theangachaidh adhartach ann am PHP Laravel
Bidh sinn ag obair gu ìre mhòr le resources/views/welcome.blade.php
, mar sin feumaidh a h-uile càil tachairt nar sealladh fàilte.
Parameters ann an sreathan eadar-theangachaidh
Mar eisimpleir, canamaid hello ris an neach-cleachdaidh mac-meanmnach againn (Amanda) an àite dìreach a bhith a’ taisbeanadh teachdaireachd coitcheann:
{{ __('Welcome to our website, :Name', ['name' => 'caroline']) }}
Thoir an aire gun do chleachd sinn an t-ainm leis a’ chiad litir ann an litrichean beaga, ach an neach-àite leis a’ chiad litir ann an litrichean mòra. San dòigh seo, faodaidh Laravel do chuideachadh le bhith a’ cleachdadh an fhìor fhacal gu fèin-ghluasadach. Tachraidh seo ma thòisicheas an neach-àite le litir mhòr, mar eisimpleir, :Name
a’ toirt a-mach “Caroline” no facal làn calpa, :NAME
, a 'dèanamh "CAROLINE".
Bidh sinn cuideachd ag ùrachadh ar faidhlichean eadar-theangachaidh resources/lang/fr.json
e resources/lang/it.json
.
Frangach:
{
"Welcome to our website, :Name": "Bienvenue sur notre site, :Name"
}
Eadailteach:
{
"Welcome to our website, :Name": "Benvenuto sul nostro sito web, :Name"
}
Iomarraidheachd
Gus iomadachadh fhaicinn ann an gnìomh, leig dhuinn paragraf ùr de theacsa a chuir ris.
Gus iomadachadh a dhèanamh, feumaidh tu an gnìomh a chleachdadh trans_choice
An àite __()
, Mar eisimpleir:
{{ __('Welcome to our website, :Name', ['name' => 'caroline']) }}
<br>
{{ trans_choice('There is one apple|There are many apples', 2) }}
Mar a chì thu, tha foirmean iolra air an sgaradh le a |
.
A-nis, dè ma tha feum againn air iomadh foirm iolra?
Tha seo comasach cuideachd:
{{ trans_choice('{0} There :form no apples|{1} There :form just :count apple|[2,19] There :form :count apples', 24) }}
Anns a 'chùis seo, tha sinn a' ceadachadh àireamhan 0
, 1
, agus bho 2
a 19
, agus mu dheireadh bho 20 air adhart. Gu dearbh, faodaidh tu na h-uimhir de riaghailtean a tha a dhìth ort a chur ris.
Mar sin dè ma tha sinn ag iarraidh an luchd-àite anns na cruthan iolra againn?
{{ trans_choice('{0} There :form no apples|{1} There :form just :count apple|[2,19] There :form :count apples', 24, ['form' => 'is']) }}
Faodaidh sinn cuideachd an cunntas a chaidh seachad ann an `trans_choice` a chleachdadh ma tha feum air le bhith a’ cleachdadh neach-àite :count
sònraichte:
{{ trans_choice('{0} There :form no apples|{1} There :form just :count apple|[2,19] There :form :count apples', 1, ['form' => 'is']) }}
Mu dheireadh, na dìochuimhnich na faidhlichean eadar-theangachaidh agad ùrachadh le atharrachadh sam bith a rinn thu air a’ bhun-eadar-theangachadh.
Eadailteach:
{
"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"
}
Frangach:
{
"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"
}
Ag obair le cinn-latha ionadail ann an Laravel
Gus cinn-latha a lorg, cleachdaidh sinn cumhachd Carbon , a thig le Laravel gu bunaiteach. Thoir sùil air an Sgrìobhainnean carbon ; faodaidh tu tòrr rudan inntinneach a dhèanamh. Mar eisimpleir, is urrainn dhuinn ar locale a shuidheachadh le ceann-latha agus riaghailtean ùine.
Airson an eisimpleir shìmplidh againn, seallaidh sinn an ceann-latha làithreach ionadail airson a’ chànan a thagh sinn. Anns an routes/web.php
, bidh sinn ag ùrachadh slighe na duilleige fàilte agus a’ toirt seachad an teachdaireachd ceann-latha ionadail chun fhear againn view
Fàilte:
<?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
]);
});
Leig leinn ùrachadh resources/views/welcome.blade.php
cuir taisbeanadh ceann-latha ris, mar seo:
{{ __('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 }}
A' feuchainn ris a' chànan atharrachadh air duilleag-dhachaigh na localhost
, chì sinn gu bheil na cinn-latha a-nis ionadail, mar eisimpleir:
Cruthachadh àireamhan agus airgeadan le NumberFormatter
Ann an diofar dhùthchannan, bidh daoine a’ cleachdadh diofar chruthan airson àireamhan a riochdachadh, mar eisimpleir:
- Na Stàitean Aonaichte → 123.123,12
- An Fhraing → 123 123,12
Mar sin, gus na h-eadar-dhealachaidhean sin anns an app Laravel agad a nochdadh, faodaidh tu a chleachdadh Cruth-àireamh anns an dòigh a leanas:
<?php
$num = NumberFormatter::create('en_US', NumberFormatter::DECIMAL);
$num2 = NumberFormatter::create('fr', NumberFormatter::DECIMAL);
Faodaidh tu cuideachd an àireamh a sgrìobhadh ann an cànan sònraichte agus rudeigin mar “ceud fichead trì mìle ceud fichead trì puing a dhà” a thaisbeanadh:
<?php
$num = NumberFormatter::create('en_US', NumberFormatter::SPELLOUT);
$num2 = NumberFormatter::create('fr', NumberFormatter::SPELLOUT);
A bharrachd air an sin, leigidh NumberFormatter leat airgeadan a lorg gu furasta, mar eisimpleir:
<?php
$currency1 = NumberFormatter::create('fr', NumberFormatter::CURRENCY);
$currency2 = NumberFormatter::create('en_US', NumberFormatter::CURRENCY);
Mar sin airson fr
chì thu Euros, fhad 's a tha en_US
bidh an airgead ann an dolairean na SA.
Leughaidhean Co-cheangailte
Ercole Palmeri