Laravel යනු විවිධ භාෂා සහ සංස්කෘතීන්ට අනුවර්තනය වීමට දේශීය වීමට නිර්මාණය කර ඇති යෙදුමකි. ප්රාදේශීයකරණය පරිවර්තනය හරහා ජාත්යන්තරකරණය වූ යෙදුම් නිශ්චිත භාෂාවකට ගැලපේ.
localhost
. එසේ නොවේ නම්, ප්රතිස්ථාපනය කරන්න localhost
ඔබගේම ඩොමේන් නාමය හෝ IP ලිපිනය සමඟ (ඔබගේ ස්ථාපනය මත පදනම්ව).Laravel හි, වෙනත් බොහෝ රාමු වල මෙන්, අපට විවිධ භාෂා සඳහා පරිවර්තන වෙනම ගොනු වල ගබඩා කළ හැකිය. Laravel පරිවර්තන ගොනු සංවිධානය කිරීමට ක්රම දෙකක් තිබේ:
resources/lang/{en,fr,ru}/{myfile.php}
;resources/lang/{fr.json, ru.json}
;භූමිය අනුව වෙනස් වන භාෂා සඳහා, ඔබ ඒවා නම් කළ යුතුය directory/file
ISO 15897 අනුව භාෂාවේ. උදාහරණයක් ලෙස, UK ඉංග්රීසි සඳහා ඔබ භාවිතා කරනු ඇත en_GB
වෙනුවට en-gb
. මෙම ලිපියේදී, අපි දෙවන ප්රවේශය කෙරෙහි අවධානය යොමු කරන්නෙමු, නමුත් පළමු ප්රවේශය සඳහාද එයම වේ (පරිවර්තන යතුරු නම් කර ලබා ගන්නා ආකාරය හැර).
දැන්, අපි යමු resources/views/welcome.blade.php
ගොනු කර අන්තර්ගතය ප්රතිස්ථාපනය කරන්න body
අපේ එකත් එක්ක ටැග් කරන්න, මේ වගේ:
<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>
Laravel හි ඇත්තෙන්ම පහසු වන අපගේ දේශීයකරණ පිළිගැනීමේ පණිවිඩය සකස් කිරීමෙන් අපි ආරම්භ කරමු. ඔබ කළ යුත්තේ "අපගේ වෙබ් අඩවියට සාදරයෙන් පිළිගනිමු" යන පාඨය පහත කේතය සමඟ ප්රතිස්ථාපනය කිරීමයි. {{ __('Welcome to our website') }}
. මෙය පෙරනිමියෙන් “අපගේ වෙබ් අඩවියට සාදරයෙන් පිළිගනිමු” ප්රදර්ශනය කිරීමට Laravel වෙත උපදෙස් දෙනු ඇතdefinite සහ ඉංග්රීසි හැර වෙනත් භාෂාවක් සකසා ඇත්නම් මෙම තන්තුවෙහි පරිවර්තන සොයන්න (අපි එය පසුව ලබා ගනිමු). ඉංග්රීසි පෙරනිමි භාෂාව ලෙස සකසනු ඇතdefiඅපගේ යෙදුම නිෂ්, එබැවින් පෙරනිමි සැකසුම මගින්defiඅවසානයේ අපි සරලව "අපගේ වෙබ් අඩවියට සාදරයෙන් පිළිගනිමු" යන පාඨය පෙන්වනු ඇත. පෙදෙසිය වෙනස් නම්, අපි ගැළපෙන පරිවර්තනය සොයා ගැනීමට උත්සාහ කරන අතර එය මොහොතකින් නිර්මාණය වනු ඇත.
නමුත් වර්තමාන භාෂාව කුමක්ද හෝ යෙදුමේ ඇති භාෂා මොනවාදැයි Laravel දන්නේ කෙසේද? එය යෙදුමේ දේශීය වින්යාසය දෙස බැලීමෙන් මෙය සිදු කරයි config/app.php
. මෙම ගොනුව විවෘත කර මෙම ආශ්රිත අරා යතුරු දෙක සොයන්න:
/*
|--------------------------------------------------------------------------
| 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',
යතුරු ඉහත පෙන්වා ඇති විස්තර ස්වයං-පැහැදිලි විය යුතුය, නමුත් කෙටියෙන්, යතුර locale
දේශීය පෙර අඩංගු වේdefiඔබගේ යෙදුම නිශ්ශබ්ද කරන්න (අවම වශයෙන්, කේතයේ වෙනත් ස්ථාන සකසා නොමැති නම්). සහ fallback_locale
අප අපගේ යෙදුමේ නොපවතින පෙදෙසක් සකසා ඇත්නම් එය සක්රිය වේ.
අපි මෙම ගොනුව විවෘත කර ඇති අතර, අපගේ පහසුව සඳහා අපගේ යෙදුම සහාය දක්වන සියලුම ස්ථාන ලැයිස්තුගත කරමින් නව යතුරක් එක් කරමු. දේශීය ස්විචරයක් එක් කරන විට අපි මෙය පසුව භාවිතා කරන්නෙමු. කෙසේ වෙතත්, Laravel අපට එය කිරීමට අවශ්ය නොවන බැවින් මෙය විකල්ප කාර්යයකි.
/*
|--------------------------------------------------------------------------
| Available locales
|--------------------------------------------------------------------------
|
| List all locales that your application works with
|
*/
'available_locales' => [
'English' => 'en',
'Italian' => 'it',
'French' => 'fr',
],
දැන් අපගේ යෙදුම භාෂා තුනකට සහය දක්වයි: ඉංග්රීසි, ඉතාලි සහ ප්රංශ.
දැන් අපි අප සමඟ වැඩ කරන සියලුම ස්ථාන ස්ථාපිත කර ඇති බැවින්, අපට ඉදිරියට ගොස් අපගේ පෙර පිළිගැනීමේ පණිවිඩය පරිවර්තනය කිරීමට ඉදිරියට යා හැකිය.defiරාත්රී.
ෆෝල්ඩරයට නව දේශීයකරණ ගොනු එකතු කිරීමෙන් ආරම්භ කරමු resources/lang
. පළමුව, ගොනුවක් සාදන්න resources/lang/it.json
සහ පහත පරිදි අනුරූප පරිවර්තන එකතු කරන්න:
{
"Welcome to our website": "Benvenuto nel nostro sito web"
}
ඊළඟට, ගොනුවක් සාදන්න resources/lang/fr.json
:
{
"අපගේ වෙබ් අඩවියට සාදරයෙන් පිළිගනිමු": "අපගේ අඩවියට සාදරයෙන් පිළිගනිමු"
}
ඔබට පෙනෙන පරිදි, අපි සෑම විටම පූර්ව පණිවිඩය වෙත යොමු කරමුdefiඅපි ගොනුවට එකතු කළ nito welcome.blade.php
(එය විය {{ __('Welcome to our website') }}
) අපිට ෆයිල් එකක් හදන්න ඕන නැති හේතුව en.json
එයට හේතුව Laravel දැනටමත් පෙර සැකසුම මගින් අප ලබා දෙන පණිවිඩ මොනවාදැයි දන්නා බැවිනිdefiඋත්සවයේදී අවසන් විය __()
ඒවා අපේ දේශීය පෙර සඳහා යdefinito en.
මේ වෙලාවේ Laravel ලොකේල් වෙනස් කරන්නේ කොහොමද කියලා දන්නේ නැති නිසා දැනට අපි කෙලින්ම පාත් එක ඇතුලේ පරිවර්තන කරමු. පෙර පිළිගැනීමේ මාර්ගය වෙනස් කරන්නdefiපහත පෙන්වා ඇති පරිදි නිශ්ශබ්ද කර ඇත:
Route::get('/{locale?}', function ($locale = null) {
if (isset($locale) && in_array($locale, config('app.available_locales'))) {
app()->setLocale($locale);
}
return view('welcome');
});
අපට දැන් අපගේ වෙබ් අඩවියට පිවිසිය හැක, පවතින ඕනෑම භාෂාවක් පළමු මාර්ග කොටස ලෙස සඳහන් කරයි: උදාහරණයක් ලෙස, localhost/ru
o localhost/fr
. ඔබ දේශීයකරණය කළ අන්තර්ගතය දැකිය යුතුය. ඔබ සහාය නොදක්වන පෙදෙසියක් සඳහන් කළහොත් හෝ පෙදෙසක් සඳහන් නොකරන්නේ නම්, Laravel භාවිතා කරනු ඇත en
පෙරනිමියෙන්defiනීටා
එක් එක් අඩවි සබැඳිය සඳහා පෙදෙසිය මාරු කිරීම ඔබට අවශ්ය දේ නොවිය හැකි අතර, එය සෞන්දර්යාත්මකව පිරිසිදු ලෙස නොපෙනේ. ඒ නිසා අපි විශේෂ භාෂා ස්විචරයක් හරහා භාෂා සැකසුම සිදු කර පරිවර්තිත අන්තර්ගතය පෙන්වීමට පරිශීලක සැසිය භාවිතා කරන්නෙමු. එමනිසා, ඇතුළත නව මිඩ්ල්වෙයාර් එකක් සාදන්න app/Http/Middleware/Localization.php
ගොනුව හෝ ධාවනය කිරීමෙන් 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);
}
}
මෙම මිඩ්ල්වෙයාර් විසින් මෙම තේරීම සැසියේ තිබේ නම් පරිශීලක තෝරාගත් පෙදෙසිය භාවිතා කරන ලෙස Laravel වෙත උපදෙස් දෙනු ඇත.
සෑම ඉල්ලීමකදීම මෙය සිදු කිරීමට අපට අවශ්ය බැවින්, අපි එය පූර්ව මිඩ්ල්වෙයාර් ස්ටැක් එකට එකතු කළ යුතුයdefiඅවසන් app/http/Kernel.php
il ට web
මිඩ්ල්වෙයාර් කණ්ඩායම:
* 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 */
],
ඊළඟට, අපි පෙදෙසිය වෙනස් කිරීමට මාර්ගයක් එක් කළ යුතුය. අපි භාවිතා කරන්නේ වසා දැමීමේ මාර්ගයකි, නමුත් ඔබ කැමති නම් ඔබට ඔබේ පාලකය තුළ එකම කේතය භාවිතා කළ හැක:
Route::get('language/{locale}', function ($locale) {
app()->setLocale($locale);
session()->put('locale', $locale);
return redirect()->back();
});
එසේම, අපගේ පෙර පිළිගැනීමේ මාවතේ කලින් එක් කළ පෙදෙසි ටොගල ඉවත් කිරීමට අමතක නොකරන්නdefiරාත්රී:
Route::get('/', function () {
return view('welcome');
});
මෙය සිදු කළ පසු, දැනට සකසා ඇති භාෂාව වෙනස් කිරීමට පරිශීලකයාට ඇති එකම ක්රමය වන්නේ ඇතුල් වීමයි localhost/language/{locale}
. එම locale
තේරීම සැසිය තුළ ගබඩා කරනු ලබන අතර පරිශීලකයින් ඔවුන් පැමිණි ස්ථානයට හරවා යවනු ඇත (පරීක්ෂා කරන්න Localization
මිඩ්ල්වෙයාර්). එය උත්සාහ කිරීමට, යන්න localhost/language/ru
(ඔබේ සැසි කුකිය ඔබගේ බ්රවුසරයේ පවතින තාක්) සහ ඔබ පරිවර්තනය කළ අන්තර්ගතය දකිනු ඇත. ඔබට නිදහසේ වෙබ් අඩවිය වටා ගමන් කිරීමට හෝ පිටුව නැවුම් කිරීමට උත්සාහ කර තෝරාගත් භාෂාව සංරක්ෂණය කර ඇති බව බලන්න.
දැන් අපි URL එකට දේශීය කේත හස්තීයව ඇතුළු කරනවා වෙනුවට භාෂාව වෙනස් කිරීමට පරිශීලකයාට ක්ලික් කළ හැකි යමක් නිර්මාණය කළ යුතුයි. මෙය සිදු කිරීම සඳහා, අපි ඉතා සරල භාෂා පරීක්ෂකයක් එක් කරන්නෙමු. එබැවින්, නව එකක් සාදන්න resources/views/partials/language_switcher.blade.php
පහත කේතය සහිත ගොනුව:
<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>
"සාදරයෙන් පිළිගනිමු" දර්ශනය තුළ අලුතින් සාදන ලද ස්විචරය ඇතුළත් කරන්න:
<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>
විවෘත කරන්න app/Providers/AppServiceProvider.php
ගොනු කර අපගේ භාෂා ස්විචරය රචනා කරන විට බෙදා ගැනීමට කේතය එක් කරන්න. විශේෂයෙන්, අපි ගොනුවක් ලෙස ප්රවේශ විය හැකි වත්මන් පෙදෙසිය බෙදා ගනිමු {{ $current_locale }}
.
අපි ප්රධාන වශයෙන් වැඩ කරන්නෙමු resources/views/welcome.blade.php
, එබැවින් වෙනත් ආකාරයකින් දක්වා නොමැති නම් සියල්ල අපගේ පිළිගැනීමේ දර්ශනය තුළ සිදු විය යුතුය.
උදාහරණයක් ලෙස, සාමාන්ය පණිවිඩයක් පෙන්වීම වෙනුවට අපගේ පරිකල්පනීය පරිශීලකයාට (ඇමන්ඩා) ආයුබෝවන් කියමු:
{{ __('Welcome to our website, :Name', ['name' => 'caroline']) }}
අපි නම කුඩා අකුරින් පළමු අකුරින් භාවිතා කළ නමුත්, ලොකු අකුරින් පළමු අකුරු සහිත තැන් දරණ බව සලකන්න. මේ ආකාරයෙන්, Laravel ඔබට සැබෑ වචනය ස්වයංක්රීයව විශාලනය කිරීමට උදවු කරයි. තැන් දරන්නා විශාල අකුරකින් ආරම්භ වුවහොත් මෙය සිදුවනු ඇත, උදාහරණයක් ලෙස, :Name
"කැරොලයින්" හෝ සම්පූර්ණයෙන් ලොකු අකුරක් යෙදූ වචනයක් නිපදවයි, :NAME
, "කැරොලින්" නිෂ්පාදනය කරයි.
අපි අපගේ පරිවර්තන ගොනු ද යාවත්කාලීන කරන්නෙමු resources/lang/fr.json
e resources/lang/it.json
, පරිවර්තන යතුරු පරිවර්තනවලට නොගැලපෙන බැවින් අපි දැනට ඕනෑම තැනක ඉංග්රීසි අනුවාදය පමණක් දකිමු.
ප්රංශ:
{
"Welcome to our website, :Name": "Bienvenue sur notre site, :Name"
}
ඉතාලි:
{
"Welcome to our website, :Name": "Benvenuto sul nostro sito web, :Name"
}
බහුවිධකරණය ක්රියාවෙන් බැලීමට, අපි නව පෙළ ඡේදයක් එකතු කරමු.
බහුත්වකරණය සිදු කිරීම සඳහා, ඔබ කාර්යය භාවිතා කළ යුතුය trans_choice
වෙනුවට __()
, උදාහරණ වශයෙන්:
{{ __('Welcome to our website, :Name', ['name' => 'caroline']) }}
<br>
{{ trans_choice('There is one apple|There are many apples', 2) }}
ඔබට පෙනෙන පරිදි, බහු වචන ආකෘති a වලින් වෙන් කරනු ලැබේ |
.
දැන්, අපට බහු බහු ආකාර අවශ්ය නම් කුමක් කළ යුතුද?
මෙය ද හැකි ය:
{{ trans_choice('{0} There :form no apples|{1} There :form just :count apple|[2,19] There :form :count apples', 24) }}
මෙම අවස්ථාවේදී, අපි අංකවලට ඉඩ දෙන්නෙමු 0
, 1
, සහ සිට 2
a 19
, සහ අවසානයේ 20 සිට. ඇත්ත වශයෙන්ම, ඔබට අවශ්ය තරම් නීති එකතු කළ හැකිය.
ඉතින් අපට අපගේ බහු වචන ආකාරවලින් ස්ථාන දරන්නන් අවශ්ය නම් කුමක් කළ යුතුද?
{{ trans_choice('{0} There :form no apples|{1} There :form just :count apple|[2,19] There :form :count apples', 24, ['form' => 'is']) }}
අවශ්ය නම් තැන් දරන්නා භාවිතයෙන් අපට `trans_choice` හි සම්මත වූ ගණන ද භාවිත කළ හැක :count
විශේෂ:
{{ trans_choice('{0} There :form no apples|{1} There :form just :count apple|[2,19] There :form :count apples', 1, ['form' => 'is']) }}
අවසාන වශයෙන්, ඔබ මූලික පරිවර්තනයට කළ ඕනෑම වෙනස්කමක් සමඟින් ඔබේ පරිවර්තන ගොනු යාවත්කාලීන කිරීමට අමතක නොකරන්න.
ඉතාලි:
{
"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"
}
ප්රංශ:
{
"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"
}
දිනයන් සොයා ගැනීමට, අපි බලය භාවිතා කරන්නෙමු කාබන් , පෙරනිමියෙන් Laravel සමඟ එනdefiනීටා පරීක්ෂා කරන්න කාබන් ලියකියවිලි ; ඔබට රසවත් දේවල් ගොඩක් කරන්න පුළුවන්. උදාහරණයක් ලෙස, අපට අපගේ පෙදෙසිය දිනය සහ වේලාව රීති සමඟ සැකසිය හැක.
අපගේ සරල උදාහරණය සඳහා, අපි තෝරාගත් භාෂාව සඳහා දේශීයකරණය කළ වත්මන් දිනය පෙන්වමු. අපේ routes/web.php
, අපි පිළිගැනීමේ පිටු මාර්ගය යාවත්කාලීන කර දේශීයකරණය කළ දින පණිවිඩය අපගේ වෙත යවන්නෙමු view
සාදරයෙන් පිළිගනිමු:
<?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
]);
});
අපි යාවත්කාලීන කරමු resources/views/welcome.blade.php
දින දර්ශනය එකතු කිරීම, වැනි:
{{ __('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 }}
හි මුල් පිටුවේ භාෂාව වෙනස් කිරීමට උත්සාහ කරමින් localhost
, දින දැන් දේශීයකරණය වී ඇති බව අපට පෙනෙනු ඇත, උදාහරණයක් ලෙස:
විවිධ රටවල, මිනිසුන් සංඛ්යා නියෝජනය කිරීමට විවිධ ආකෘති භාවිතා කරයි, උදාහරණයක් ලෙස:
එමනිසා, ඔබගේ Laravel යෙදුමේ මෙම වෙනස්කම් පිළිබිඹු කිරීමට, ඔබට භාවිතා කළ හැක NumberFormatter පහත ආකාරයෙන්:
<?php
$num = NumberFormatter::create('en_US', NumberFormatter::DECIMAL);
$num2 = NumberFormatter::create('fr', NumberFormatter::DECIMAL);
ඔබට නිශ්චිත භාෂාවකින් අංකය ලිවිය හැකි අතර "එක්ලක්ෂ විසිතුන්දහස් එකසිය විසිතුන් ලක්ෂ්ය එක දෙක" වැනි දෙයක් පෙන්විය හැක:
<?php
$num = NumberFormatter::create('en_US', NumberFormatter::SPELLOUT);
$num2 = NumberFormatter::create('fr', NumberFormatter::SPELLOUT);
ඊට අමතරව, NumberFormatter ඔබට පහසුවෙන් මුදල් සොයා ගැනීමට ඉඩ සලසයි, උදාහරණයක් ලෙස:
<?php
$currency1 = NumberFormatter::create('fr', NumberFormatter::CURRENCY);
$currency2 = NumberFormatter::create('en_US', NumberFormatter::CURRENCY);
ඒ නිසා සඳහා fr
ඔබ යුරෝ දකිනු ඇත, සඳහා en_US
මුදල් එක්සත් ජනපද ඩොලර් වලින් වනු ඇත.
Ercole Palmeri
Apple Vision Pro වාණිජ නරඹන්නා භාවිතයෙන් අක්ෂි ශල්යකර්මයක් Catania Polyclinic හි සිදු කරන ලදී.
වර්ණ ගැන්වීම හරහා සියුම් මෝටර් කුසලතා වර්ධනය කිරීම ලිවීම වැනි වඩාත් සංකීර්ණ කුසලතා සඳහා දරුවන් සූදානම් කරයි. වර්ණ ගැන්වීමට...
නාවික අංශය සැබෑ ගෝලීය ආර්ථික බලවතෙකු වන අතර එය බිලියන 150 ක වෙළඳපලක් කරා ගමන් කර ඇත.
පසුගිය සඳුදා ෆිනෑන්ෂල් ටයිම්ස් OpenAI සමඟ ගිවිසුමක් නිවේදනය කළේය. FT එහි ලෝක මට්ටමේ පුවත්පත් කලාවට බලපත්ර ලබා දෙයි…