Laravel हे स्थानिक, विविध भाषा आणि संस्कृतींशी जुळवून घेण्यासाठी डिझाइन केलेले अॅप्लिकेशन आहे. स्थानिकीकरण भाषांतराद्वारे विशिष्ट भाषेसाठी आंतरराष्ट्रीयीकृत अनुप्रयोग तयार करते.
localhost
. नसल्यास, बदला localhost
तुमच्या स्वतःच्या डोमेन नाव किंवा IP पत्त्यासह (तुमच्या स्थापनेवर अवलंबून).Laravel मध्ये, इतर अनेक फ्रेमवर्क प्रमाणेच, आम्ही वेगळ्या फायलींमध्ये वेगवेगळ्या भाषांसाठी भाषांतरे संचयित करू शकतो. Laravel भाषांतर फाइल्स व्यवस्थापित करण्याचे दोन मार्ग आहेत:
resources/lang/{en,fr,ru}/{myfile.php}
;resources/lang/{fr.json, ru.json}
;प्रदेशानुसार भिन्न असलेल्या भाषांसाठी, तुम्ही त्यांना नाव द्यावे directory/file
ISO 15897 नुसार भाषेची. उदाहरणार्थ, यूके इंग्रजीसाठी तुम्ही वापराल 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आमच्या अॅपचे nish, त्यामुळे डीफॉल्ट सेटिंगनुसारdefiशेवटी आम्ही फक्त “आमच्या वेबसाइटवर स्वागत आहे” असा मजकूर प्रदर्शित करू. लोकॅल भिन्न असल्यास, आम्ही जुळणारे भाषांतर शोधण्याचा प्रयत्न करू आणि ते एका क्षणात तयार केले जाईल.
परंतु लारावेलला सध्याची भाषा कोणती आहे किंवा अनुप्रयोगात कोणत्या भाषा उपलब्ध आहेत हे कसे कळेल? हे अॅपमधील स्थानिक कॉन्फिगरेशन पाहून हे करते 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तुमच्या अर्जाचा nish (किमान, कोडमध्ये इतर कोणतेही लोकेल सेट केले नसल्यास). आणि ते 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
:
{
"आमच्या वेबसाइटवर स्वागत आहे": "आमच्या साइटवर आपले स्वागत आहे"
}
तुम्ही बघू शकता, आम्ही नेहमी पूर्व संदेशाचा संदर्भ घेतोdefinito जे आम्ही फाइलमध्ये जोडले आहे welcome.blade.php
(जे होते {{ __('Welcome to our website') }}
). आम्हाला फाइल तयार करण्याची गरज नाही याचे कारण en.json
कारण Laravel ला आधीच माहित आहे की आम्ही प्री सेटिंगद्वारे कोणते संदेश पास करतोdefiसमारंभ संपला __()
ते आमच्या स्थानिक प्री साठी आहेतdefinito en.
या क्षणी, Laravel ला लोकॅल कसे बदलावे हे माहित नाही, म्हणून आत्तासाठी, भाषांतरे थेट मार्गाच्या आत करूया. स्वागत मार्ग पूर्व सुधारित कराdefiखाली दर्शविल्याप्रमाणे nished:
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
प्रति आयएल 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 अॅपमध्ये हे फरक प्रतिबिंबित करण्यासाठी, तुम्ही वापरू शकता क्रमांक स्वरूप खालील प्रकारे:
<?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
नौदल क्षेत्र ही एक खरी जागतिक आर्थिक शक्ती आहे, ज्याने 150 अब्जांच्या बाजारपेठेकडे नेव्हिगेट केले आहे...
गेल्या सोमवारी, फायनान्शिअल टाईम्सने OpenAI सह करार जाहीर केला. FT ने त्याच्या जागतिक दर्जाच्या पत्रकारितेचा परवाना…
लाखो लोक स्ट्रीमिंग सेवांसाठी पैसे देतात, मासिक सदस्यता शुल्क भरतात. असे सामान्य मत आहे की आपण…
Veeam द्वारे Coveware सायबर खंडणी घटना प्रतिसाद सेवा प्रदान करणे सुरू ठेवेल. Coveware फॉरेन्सिक आणि उपाय क्षमता प्रदान करेल…