Laravel स्थानीय हुन, विभिन्न भाषाहरू र संस्कृतिहरू अनुकूलन गर्न डिजाइन गरिएको अनुप्रयोग हो। स्थानीयकरणले अनुवादको माध्यमबाट एक विशेष भाषामा अन्तर्राष्ट्रियकरण गरिएका अनुप्रयोगहरूलाई टेलर गर्दछ।
localhost
। यदि होइन भने, बदल्नुहोस् localhost
तपाईंको आफ्नै डोमेन नाम वा IP ठेगानाको साथ (तपाईंको स्थापनामा निर्भर गर्दै)।Laravel मा, धेरै अन्य फ्रेमवर्कहरूमा जस्तै, हामी फरक फाइलहरूमा विभिन्न भाषाहरूको लागि अनुवाद भण्डारण गर्न सक्छौं। Laravel अनुवाद फाइलहरू व्यवस्थित गर्न दुई तरिकाहरू छन्:
resources/lang/{en,fr,ru}/{myfile.php}
;resources/lang/{fr.json, ru.json}
;क्षेत्र अनुसार फरक हुने भाषाहरूको लागि, तपाईंले तिनीहरूलाई नाम दिनुपर्छ directory/file
आईएसओ 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अन्तमा हामी केवल "हाम्रो वेबसाइटमा स्वागत छ" पाठ प्रदर्शन गर्नेछौं। यदि लोकेल फरक छ भने, हामी मिल्दो अनुवाद खोज्ने प्रयास गर्नेछौं र यो एक क्षणमा सिर्जना हुनेछ।
तर 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तपाईको आवेदनको 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
, "CAROLINE" उत्पादन गर्दछ।
हामी हाम्रा अनुवाद फाइलहरू पनि अपडेट गर्छौं 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) }}
तपाईले देख्न सक्नुहुने रूपमा, बहुवचन रूपहरू ए द्वारा विभाजित छन् |
.
अब, यदि हामीलाई बहुवचन फारमहरू चाहिन्छ भने के हुन्छ?
यो पनि सम्भव छ:
{{ trans_choice('{0} There :form no apples|{1} There :form just :count apple|[2,19] There :form :count apples', 24) }}
यस अवस्थामा, हामी संख्याहरूलाई अनुमति दिन्छौं 0
, 1
, e दा 2
a 19
, र अन्तमा २० बाट। निस्सन्देह, तपाईंले आवश्यक रूपमा धेरै नियमहरू थप्न सक्नुहुन्छ।
त्यसोभए हामी हाम्रो बहुवचन रूपहरूमा प्लेसहोल्डरहरू चाहन्छौं भने के हुन्छ?
{{ 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 ले फोरेन्सिक र उपचार क्षमताहरू प्रदान गर्दछ ...