Rehber PHP ile veritabanı kullanmadan çoklu dil seçeneği sunun!

Katılım
8 Nisan 2020
Mesajlar
6.569
Makaleler
7
Çözümler
63
Yer
Mile Marker LN 29.5, 51 Area.
Selam forum üyeleri. Bazı PHP yazarları projelerine çoklu dil seçeneği eklemek istiyor fakat veritabanı ile uğraşmak istemediğinden dolayı zor olduğunu düşünüyor.
Sizlere veritabanı olmadan çoklu dil seçeneği sunmanın ne kadar basit olacağından bahsedeceğim!

Projeye şuradan da ulaşabilirsiniz: GitHub - vFurky/language-option-no-db: PHP ile veritabanına gerek kalmadan, Composer yardımıyla, kullanıcılarınıza dil seçeneği sunun!

Öncelikle, cihazınıza Composer kurun.
Şu adresten kurabilirsiniz: Composer

Devamında, bir proje dosyası oluşturun.

Oluşturduğunuz proje dosyasında PowerShell'i açın.

Composer yardımıyla symfony/translation ve symfony/yaml paketlerini kurun:
Kod:
composer require symfony/translation
composer require symfony/yaml

Oluşturduğunuz proje dosyasında dil dosyalarınızın bulunacağı klasörü oluşturun. Ben, languages ismine sahip bir klasör oluşturdum.
Proje klasöründe ek bir PHP dosyası oluşturun ve içerisine şu kodları yapıştırın:

PHP:
<?php

require_once 'vendor/autoload.php';

use Symfony\Component\Translation\Loader\YamlFileLoader;
use Symfony\Component\Translation\Translator;
use Symfony\Component\Translation\Exception\LogicException;

$userLanguage = "tr";
$translator = new Translator($userLanguage);
$translator -> addLoader('yaml', new YamlFileLoader());
$translator -> addResource('yaml', './languages/messages.' . $userLanguage . '.yml', $userLanguage); // Dil dosyasını seçiyor ve çekiyoruz.

$userLanguage şeklinde belirttiğimiz değişken, kullanıcının seçim yaptığı dildir. Kısaltma olarak kullanmanız en sağlıklısı olur.

Kullanım:

PHP:
<?php require("./language.php"); ?>

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title><?php echo $translator -> trans('main-page-title'); ?></title>
</head>
<body>
    <p><?php echo $translator -> trans('whats-this'); ?></p>
    <p><?php echo $translator -> trans('welcome-message'); ?></p>
    <p><?php echo $translator -> trans('goodbye-message'); ?></p>
</body>
</html>

"whats-this" veya "welcome-message" nedir? Onlar ise dil dosyalarındaki bizim belirlediğimiz dil değişkenleri diyelim. Şu şekilde:

YAML:
# Aşağıdaki seçenekler messages.en.yml dosyasına aittir, İngilizce dil dosyasıdır.
welcome-message: Welcome.
goodbye-message: Goodbye.
whats-this: Whats This?
main-page-title: Language Selections with No DB

# Aşağıdaki seçenekler messages.tr.yml dosyasına aittir, Türkçe dil dosyasıdır.
welcome-message: Hoşgeldiniz.
goodbye-message: Güle güle.
whats-this: Nedir?
main-page-title: PHP ile DB Olmadan Dil Sistemi

Her iki dil dosyasına da kendiniz bir değişken yazıp, karşısına çevirilerini yazarak örnekteki kullanım gibi kullanabilirsiniz. Herhangi bir hatanın çıkması durumunda yazarsanız yardımcı olabilirim. İyi forumlar.
 
Son düzenleme:

Geri
Yukarı