CakePHP - Uluslararasılaştırma

Diğer birçok çerçeve gibi, CakePHP de Uluslararasılaştırmayı destekler. Tek dilden birden çok dile geçmek için bu adımları izlememiz gerekiyor.

Aşama 1

Ayrı bir yerel ayarlar dizini kaynakları oluşturun \locales.

Adım 2

Src \ Locale dizini altında her dil için alt dizin oluşturun. Alt dizinin adı, dilin iki harfli ISO kodu veya en_US, fr_FR vb. Gibi tam yerel ad olabilir.

Aşama 3

Ayrı oluştur default.poher dil alt dizini altındaki dosya Bu dosya şu şekilde giriş içerirmsgid ve msgstraşağıdaki programda gösterildiği gibi.

msgid "msg"
msgstr "CakePHP Internationalization example."

Burada msgid Görünüm şablon dosyasında kullanılacak anahtardır ve msgstr çeviriyi depolayan değerdir.

4. adım

Görünüm şablon dosyasında yukarıdakileri kullanabiliriz msgid, aşağıda gösterildiği gibi, yerel ayar değerine göre çevrilecek.

<?php echo __('msg'); ?>

Varsayılan yerel ayar, config/app.php aşağıdaki satıra göre dosya.

'defaultLocale' => env('APP_DEFAULT_LOCALE', 'en_US')

Çalışma zamanında local'ı değiştirmek için aşağıdaki satırları kullanabiliriz.

use Cake\I18n\I18n;
I18n::locale('de_DE');

Misal

Aşağıdaki programda gösterildiği gibi config / route.php dosyasında değişiklikler yapın.

config/routes.php

<?php
use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
   $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
      'httpOnly' => true,
   ]));
   $builder->applyMiddleware('csrf');
   //$builder->connect('/pages',
      ['controller'=>'Pages','action'=>'display', 'home']);
   $builder->connect('locale',
      ['controller'=>'Localizations','action'=>'index']);
   $builder->fallbacks();
});

Oluşturmak LocalizationsController.php dosya src/Controller/LocalizationsController.php. Aşağıdaki kodu denetleyici dosyasında kopyalayın.

src/Controller/LocalizationsController.php

<?php
   namespace App\Controller;
   use App\Controller\AppController;
   use Cake\I18n\I18n;
   class LocalizationsController extends AppController {
      public function index() {
         if($this->request->is('post')) {
            $locale = $this->request->getData('locale');
            I18n::setLocale($locale);
         }
      }
   }
?>

Oluşturmak locales kaynaklardaki dizin \locales. Adlı 3 dizin oluşturunen_US, fr_FR, de_DEyerel ayarlar dizini altında. Adlı her dizinin altında bir dosya oluşturundefault.po. Aşağıdaki kodu ilgili dosyaya kopyalayın.

resources/locales/en_US/default.po

msgid "msg"
msgstr "CakePHP Internationalization example."

resources/locales/fr_FR/default.po

msgid "msg"
msgstr "Exemple CakePHP internationalisation."

resources/locales/de_DE/default.po

msgid "msg"
msgstr "CakePHP Internationalisierung Beispiel."

Bir dizin oluşturun Localizations -de src/Template ve bu dizinin altında bir View dosya çağrıldı index.php. Aşağıdaki kodu o dosyaya kopyalayın.

src/Template/Localizations/index.php

<?php
   echo $this->Form->create(NULL,array('url'=>'/locale'));
   echo $this->Form->radio("locale",
      [
         ['value'=>'en_US','text'=>'English'],
         ['value'=>'de_DE','text'=>'German'],
         ['value'=>'fr_FR','text'=>'French'],
      ]
   );
   echo $this->Form->button('Change Language');
   echo $this->Form->end();
?>
<?php echo __('msg'); ?>

Aşağıdaki URL'yi ziyaret ederek yukarıdaki örneği yürütün. http: // localhost / cakephp4 / locale

Çıktı

Yürütme üzerine aşağıdaki çıktıyı alacaksınız.

E-posta adresi

CakePHP, e-posta ile ilgili işlevleri yönetmek için E-posta sınıfı sağlar. Herhangi bir denetleyicide e-posta işlevini kullanmak için, önce aşağıdaki satırı yazarak E-posta sınıfını yüklememiz gerekir.

use Cake\Mailer\Email;

E-posta sınıfı, aşağıda açıklanan çeşitli yararlı yöntemler sağlar.

Sözdizimi

From (string | array | null $ email null, string | null $ isim null)

Parametreler
  • E-posta ile dize

  • Name

İadeler

dizi | $ this

Açıklama

Hangi e-posta adresinden geldiğini belirtir; e-posta gönderilecek

Sözdizimi

Kime (string | array | null $ email null, string | null $ isim null)

Parametreler
  • E-posta ile dize

  • Name

İadeler

dizi | $ this

Açıklama

E-postanın kime gönderileceğini belirtir

Sözdizimi

Gönder (dize | dizi | null $ içerik null)

Parametreler
  • Mesaj içeren dizge veya mesaj içeren dizi.

İadeler dizi
Açıklama

Belirtilen içeriği, şablonu ve düzeni kullanarak bir e-posta gönderin

Sözdizimi

Konu (dize | null $ konu null)

Parametreler
  • Konu dizesi

İadeler

dizi | $ this

Açıklama

Konu Al / Ayarla

Sözdizimi

Ekler (string | array | null $ attachment snull)

Parametreler
  • Dosya adıyla veya dosya adlarıyla diziyle dize

İadeler

dizi | $ this

Açıklama

E-posta mesajına ekler ekleyin

Sözdizimi

Bcc (dize | dizi | null $ e-posta null, dize | null $ isim boş)

Parametreler
  • E-posta ile dize

  • Name

İadeler

dizi | $ this

Açıklama

Bcc

Sözdizimi

cc (string | array | null $ email null, string | null $ isim null)

Parametreler
  • E-posta ile dize

  • Name

İadeler

dizi | $ this

Açıklama

Cc

Misal

Aşağıdaki programda gösterildiği gibi config / route.php dosyasında değişiklikler yapın.

config/routes.php

<?php
use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
   $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
      'httpOnly' => true,
   ]));
   $builder->applyMiddleware('csrf');
   //$builder->connect('/pages',['controller'=>'Pages','action'=>'display', 'home']);
   $builder->connect('/email',['controller'=>'Emails','action'=>'index']);
   $builder->fallbacks();
});

Oluşturduğunuz bir EmailsController.php dosya src/Controller/EmailsController.php. Aşağıdaki kodu denetleyici dosyasında kopyalayın.

src/Controller/EmailsController.php

<?php
   namespace App\Controller;
   use App\Controller\AppController;
   use Cake\Mailer\Email;
   class EmailsController extends AppController{
      public function index(){
         $email = new Email('default');
         $email->to('[email protected]')
            ->subject('About')
            ->send('My message');
      }
   }
?>

Bir dizin oluşturun Emails -de src/Template ve bu dizinin altında, adlı bir View dosyası oluşturun. index.php. Aşağıdaki kodu o dosyaya kopyalayın.

src/Template/Emails/index.php

Email Sent.

Herhangi bir e-posta göndermeden önce onu yapılandırmamız gerekiyor. Aşağıdaki ekran görüntüsünde, varsayılan ve Gmail olmak üzere iki aktarım olduğunu görebilirsiniz. Gmail taşımayı kullandık.

"GMAIL KULLANICI ADI" kısmını Gmail kullanıcı adınızla ve "UYGULAMA ŞİFRESİ" ile uygulama şifrenizi değiştirmeniz gerekir. E-posta göndermek için Gmail'de 2 adımlı doğrulamayı açmanız ve yeni bir APP şifresi oluşturmanız gerekir.

config/app.php

Aşağıdaki URL'yi ziyaret ederek yukarıdaki örneği yürütün - http: // localhost / cakephp / email

Çıktı

Yürütme üzerine aşağıdaki çıktıyı alacaksınız.