بیشتر

Laravel ځایی کولو ګام په ګام لارښود، د مثالونو سره درس

د لاراویل پروژې ځایی کولو څرنګوالی، څنګه په لارویل کې پروژه رامینځته کول او په څو ژبو کې د کارولو وړ کول. په دې مقاله کې موږ وګورو چې څنګه د ژباړې فایلونو سره کار وکړو، د ژبې بدلونکي جوړ کړئ او نور د مثالونو سره.

لاراویل یو غوښتنلیک دی چې د ځایی کیدو لپاره ډیزاین شوی ، ترڅو مختلف ژبو او کلتورونو سره تطابق وکړي. ځایی کول د ژباړې له لارې یوې ځانګړې ژبې ته نړیوال شوي غوښتنلیکونه تنظیموي.

لازم شرطونه

  • پدې مقاله کې به موږ ورته اشاره وکړو Laravel نسخه 8.x;
  • د دې ټیوټوریل په بریالیتوب سره تعقیبولو لپاره، تاسو اړتیا لرئ د PHP پروګرام کولو ژبې او لارویل چوکاټ اړین پوهه ولرئ.
  • ستاسو ډومین دی localhost. که نه، بدل کړئ localhost ستاسو د خپل ډومین نوم یا IP پتې سره (ستاسو د نصب کولو پورې اړه لري).

د ژباړې فایلونو سره کار کول

په لارویل کې، لکه د ډیری نورو چوکاټونو په څیر، موږ کولی شو د مختلفو ژبو ژباړې په جلا فایلونو کې ذخیره کړو. د 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>

موږ به د خپل ځایی کولو د ښه راغلاست پیغام چمتو کولو سره پیل وکړو، کوم چې په لارویل کې واقعیا اسانه دی. ټول هغه څه چې تاسو یې باید وکړئ د لاندې کوډ سره "زموږ ویب پا toې ته ښه راغلاست" متن بدل کړئ: {{ __('Welcome to our website') }}. دا به لاراول ته لارښوونه وکړي چې "زموږ ویب پا toې ته ښه راغلاست" په ډیفالټ ډول ښکاره کړي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 دا په هغه صورت کې فعال کیږي چې موږ په خپل غوښتنلیک کې غیر موجود ځای ټاکلو.

پداسې حال کې چې موږ دا فایل خلاص کړی، راځئ چې زموږ د اسانتیا لپاره یو نوی کیلي اضافه کړو چې ټول هغه ځایونه لیست کړئ چې زموږ غوښتنلیک به یې ملاتړ وکړي. موږ به دا وروسته وکاروو کله چې ځایی سویچر اضافه کړو. په هرصورت، دا یو اختیاري دنده ده ځکه چې لارویل موږ ته اړتیا نلري چې دا ترسره کړو.

/*
|--------------------------------------------------------------------------
| 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 دا ځکه چې لارویل لا دمخه پوهیږي چې کوم پیغامونه موږ د مخکینۍ ترتیب سره تیر کوو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/rulocalhost/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.phpper 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']) }}

په یاد ولرئ چې موږ نوم د لومړي توري سره په کوچنیو حروف کې کارولی، مګر ځای لرونکی د لومړي توري سره په لوی لاس کې. په دې توګه، لارویل کولی شي تاسو سره مرسته وکړي په اتوماتيک ډول د اصلي کلمې پانګونه وکړي. دا به واقع شي که چیرې ځای لرونکی د لوی توری سره پیل شي، د بیلګې په توګه، :Name"کیرولین" یا په بشپړ ډول لوی کلمه تولیدوي،  :NAME، "کارولین" تولیدوي.

موږ زموږ د ژباړې فایلونه هم تازه کوو resources/lang/fr.jsonresources/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) }}

په دې حالت کې، موږ شمیرو ته اجازه ورکوو 01، او له 219، او په پای کې د 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، موږ به وګورو چې نیټې اوس ځایی شوي ، د مثال په توګه:

د نمبر فارمیټر سره د شمیرو او اسعارو فارمیټ کول

په مختلفو هیوادونو کې، خلک د شمیرو استازیتوب کولو لپاره مختلف شکلونه کاروي، د بیلګې په توګه:

  • متحده ایالات → 123.123,12
  • فرانسه → 123 123,12

له همدې امله ، ستاسو په لارویل ایپ کې د دې توپیرونو منعکس کولو لپاره ، تاسو کولی شئ وکاروئ د شمیرې بڼه په لاندې ډول:

<?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

د نوښت خبر پاڼه
د نوښت په اړه خورا مهم خبرونه له لاسه مه ورکوئ. د بریښنالیک له لارې دوی ترلاسه کولو لپاره لاسلیک وکړئ.

وروستي مقالې

د ګوګل نوی مصنوعي استخبارات کولی شي DNA، RNA او "د ژوند ټول مالیکولونه" ماډل کړي

ګوګل ډیپ مائنډ د خپل مصنوعي استخباراتو ماډل یوه پرمختللې نسخه معرفي کوي. نوی پرمختللي ماډل نه یوازې چمتو کوي ...

9 د 2024 ماین

د لارویل ماډلر معمارۍ سپړنه

لارویل، د خپل ښکلي نحو او ځواکمنو ځانګړتیاو لپاره مشهور، د ماډلر معمارۍ لپاره یو پیاوړی بنسټ هم چمتو کوي. هلته…

9 د 2024 ماین

د سیسکو هایپرشیلډ او د سپلنک استملاک د امنیت نوی دور پیل کیږي

سیسکو او سپلنک د پیرودونکو سره مرسته کوي چې د راتلونکي امنیت عملیاتو مرکز (SOC) ته خپل سفر ګړندي کړي ...

8 د 2024 ماین

د اقتصادي اړخ هاخوا: د ransomware غیر څرګند لګښت

Ransomware د تیرو دوه کلونو راهیسې په خبرونو تسلط لري. ډیری خلک ښه پوهیږي چې بریدونه ...

6 د 2024 ماین

په Augmented Reality کې نوښتګره مداخله، د کاتانیا پولی کلینیک کې د ایپل لیدونکي سره

د ایپل ویژن پرو سوداګریز لیدونکي په کارولو سره د سترګو د سترګو عملیات په کاتانیا پولی کلینیک کې ترسره شوي ...

3 د 2024 ماین

د ماشومانو لپاره د رنګینګ پاڼو ګټې - د هر عمر لپاره د جادو نړۍ

د رنګ کولو له لارې د موټرو ښه مهارتونو رامینځته کول ماشومان د نورو پیچلو مهارتونو لکه لیکلو لپاره چمتو کوي. رنګولو…

2 د 2024 ماین

راتلونکی دلته دی: د بار وړلو صنعت څنګه د نړیوال اقتصاد انقلاب کوي

سمندري سکتور یو ریښتینی نړیوال اقتصادي ځواک دی ، کوم چې د 150 ملیارد بازار په لور حرکت کړی ...

1 د 2024 ماین

خپرونکي او OpenAI تړونونه لاسلیک کوي ترڅو د مصنوعي استخباراتو لخوا پروسس شوي معلوماتو جریان تنظیم کړي

تیره دوشنبه، فایننشل ټایمز د OpenAI سره یوه معامله اعلان کړه. FT د نړۍ په کچه ژورنالیزم جواز ورکوي ...

30 اپریل 2024

نوښت په خپله ژبه ولولئ

د نوښت خبر پاڼه
د نوښت په اړه خورا مهم خبرونه له لاسه مه ورکوئ. د بریښنالیک له لارې دوی ترلاسه کولو لپاره لاسلیک وکړئ.

مونږ سره په