ላራቬል ከተለያዩ ቋንቋዎች እና ባህሎች ጋር ለመላመድ አካባቢያዊ እንዲሆን የተቀየሰ መተግበሪያ ነው። አካባቢያዊነት አለምአቀፍ መተግበሪያዎችን በትርጉም ወደ አንድ የተወሰነ ቋንቋ ያዘጋጃል።
localhost
. ካልሆነ ይተኩ localhost
በራስዎ የጎራ ስም ወይም የአይፒ አድራሻ (በመጫንዎ ላይ በመመስረት)።በላራቬል ውስጥ፣ ልክ እንደሌሎች ብዙ ማዕቀፎች፣ ለተለያዩ ቋንቋዎች ትርጉሞችን በተለየ ፋይሎች ውስጥ ማከማቸት እንችላለን። የላራቬል የትርጉም ፋይሎችን ለማደራጀት ሁለት መንገዶች አሉ።
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>
በላራቬል ውስጥ በጣም ቀላል የሆነውን የአካባቢያችንን የእንኳን ደህና መጣችሁ መልእክት በማዘጋጀት እንጀምራለን። እርስዎ ማድረግ የሚጠበቅብዎት "እንኳን ወደ ድረ-ገጻችን በደህና መጡ" የሚለውን ጽሁፍ በሚከተለው ኮድ መተካት ብቻ ነው። {{ __('Welcome to our website') }}
. ይህ ላራቬል "እንኳን ወደ ድረ-ገፃችን በደህና መጡ" በነባሪነት እንዲያሳይ ያስተምራል።defiከእንግሊዝኛ ሌላ ቋንቋ ከተቀናበረ የዚህን ሕብረቁምፊ ትርጉሞች ፈልጉ (በኋላ ላይ እንረዳለን)። እንግሊዝኛ እንደ ነባሪ ቋንቋ ይዘጋጃል።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
በእኛ መተግበሪያ ውስጥ የማይገኝ አካባቢያዊ ካዘጋጀን ነው የሚነቃው።
ይህ ፋይል ክፍት ሆኖ ሳለ፣ መተግበሪያችን የሚደግፋቸውን ሁሉንም አከባቢዎች በመዘርዘር ለምቾት የሚሆን አዲስ ቁልፍ እንጨምር። የአካባቢ መቀየሪያን ስንጨምር ይህንን በኋላ እንጠቀማለን። ሆኖም፣ ላራቬል እንድንሠራው ስለማይፈልግ ይህ አማራጭ አማራጭ ነው።
/*
|--------------------------------------------------------------------------
| 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
ምክንያቱም ላራቬል በቅድመ ዝግጅት የትኞቹን መልዕክቶች እንደምናስተላልፍ አስቀድሞ ስለሚያውቅ ነው።defiበተግባሩ ላይ ተጠናቅቋል __()
ለአካባቢያችን ቅድመ ሁኔታ ናቸውdefinito en.
በዚህ ጊዜ ላራቬል አከባቢዎችን እንዴት መቀየር እንዳለበት አያውቅም, ስለዚህ ለአሁን, ትርጉሞቹን በቀጥታ በመንገዱ ውስጥ እናድርግ. የእንኳን ደህና መጣችሁ መንገድን አስቀድመው ያስተካክሉ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
. አካባቢያዊ የተደረገውን ይዘት ማየት አለብህ። የማይደገፍ አካባቢን ከገለጹ ወይም ጨርሶ ካልገለጹ፣ ላራቬል ይጠቀማል። 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);
}
}
ይህ መሃከለኛ ዌር ይህ ምርጫ በክፍለ-ጊዜው ውስጥ ካለ በተጠቃሚ የተመረጠውን አካባቢ እንዲጠቀም ላራቬል ያስተምራል።
ይህ በእያንዳንዱ ጥያቄ ላይ እንዲደረግ ስለሚያስፈልገን ወደ ቅድመ መካከለኛ ዌር ቁልል ማከልም አለብን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']) }}
ስሙን የተጠቀምነው በትንንሽ ሆሄያት የመጀመሪያ ፊደል ነው፣ ነገር ግን ቦታ ያዢው የመጀመሪያው ፊደል በአቢይ ሆሄ ነው። በዚህ መንገድ, ላራቬል ትክክለኛውን ቃል በራስ-ሰር እንዲያደርጉ ይረዳዎታል. ይህ የሚሆነው ቦታ ያዢው በአቢይ ሆሄያት ከጀመረ ለምሳሌ፡- :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
፣ ኢ ዳ 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']) }}
ቦታ ያዥን በመጠቀም አስፈላጊ ከሆነ በ`ትራንስ_ምርጫ` ውስጥ ያለፈውን ቆጠራ መጠቀም እንችላለን :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"
}
ቀኖችን ለማግኘት ኃይሉን እንጠቀማለን። ካርቦን በነባሪ ከላራቬል ጋር አብሮ ይመጣል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
Coveware by Veeam የሳይበር ዘረፋ የአደጋ ምላሽ አገልግሎቶችን መስጠቱን ይቀጥላል። Coveware የፎረንሲክስ እና የማገገሚያ ችሎታዎችን ያቀርባል…
የመተንበይ ጥገና የዘይት እና ጋዝ ዘርፉን አብዮት እያደረገ ነው፣ ለዕፅዋት አስተዳደር ፈጠራ እና ንቁ አቀራረብ።…
የዩኬ ሲኤምኤ ስለ ቢግ ቴክ ባህሪ በአርቴፊሻል ኢንተለጀንስ ገበያ ላይ ማስጠንቀቂያ ሰጥቷል። እዚያ…
የሕንፃዎችን ኢነርጂ ውጤታማነት ለማሳደግ በአውሮፓ ህብረት የተቀረፀው የ"ኬዝ አረንጓዴ" ድንጋጌ የህግ አውጭ ሂደቱን በ…