Çoklu dil site nasıl yapılır?

  • Konuyu başlatan Konuyu başlatan mertjr
  • Başlangıç Tarihi Başlangıç Tarihi
  • Mesaj Mesaj 15
  • Görüntüleme Görüntüleme 922
  • Etiketler Etiketler
    dil site

mertjr

Başarılı
Katılım
24 Şubat 2024
Mesajlar
381
Beğeniler
205
Selam, HTML CSS JS kullanarak bir internet sitesi yaptım. 2 adet de dil seçeneği butonu var. Nasıl tıkladığımda o dile çevrili halde gösterebilirim? Çeviriyi kendim yapacağım.
 
Merhaba,
Bu çözümü çok beğendim, pratik ve sadece iki dil ise kullanışlı. Bir sorum olacaktı navigasyon ile alakalı. Navigasyon linkleri nasıl olmalı sizce? Mesela başka bir sayfaya atlandığında aynı dil kalsın.
 
Son düzenleyen: Moderatör:

Merhaba, yorumunuz için sağ olun.

Bu çözümün beğenmediğim yanlarından biri, sayfa yüklenirken kısa süreliğine iki dildeki elementlerin de görülmesi. Sayfa yüklendikten sonra JavaScript'in devreye girmesi gerekiyor ki tercih edilmeyen dildeki elementler gizlenebilsin. Bunun üstesinden gelmek için mesela bir dildeki elementlerin tümüne HTML'de hidden sınıfını da eklemeyi düşündüm ama pek sıcak bakmadım. Aslında şu ankinden daha güzel bir sonuç verir gibi geliyor ama o tercih sizin olsun. (Alternatif çözüm olarak bunu da sona ekledim.)

Her ne kadar ben de sizin gibi kullanışlı olduğunu düşünsem de söz konusu sayfa dili olunca daha oturaklı çözümler kesin mevcuttur, ben araştırmadığım için bilmiyorum, yalnızca i18n kavramından söz edebilirim. Size önerim, bu çözüme pek bel bağlamamanız. Günü kurtarabilir ama proje büyüdükçe ne kadar sağlıklı kalır bilmiyorum. Fikir olsun diye sundum.

Navigasyon desteği için birtakım düzenlemeler yaptım (Umarım destekliyordur şimdi, test etmedim.), bir de kodu genel olarak biraz düzenlemeye çalıştım. Tercih edilen dilin hatırlanması adına localStorage'ı kullandım, "tarayıcı hafızası" olarak düşünebilirsiniz bunu. Site içinde başka sayfaya geçseniz de oraya kaydettiğiniz bilgiler korunuyor. Umarım işinize yarar:


İlk paragrafta bahsettiğim alternatif çözüm, İngilizce elementlere tek tek hidden sınıfını ekledim:

 
Kullanışsız ve hantal bir kod. Stabil çözüm için dil içeriğini JSON olarak depolayıp seçilen dile göre elementlere yazdırmanız gerekiyor. Her dil için aynı elementten birden fazla kez oluşturduğunuz için DOM gereksiz büyüyor. Bu da ram kullanımı ve yüklenme süresini olumsuz yönde etkiliyor.
 
Stringlerin her birini farklı dil dosyalarında tutup kullanıcı hangi dili seçtiyse o dil dosyasını çağırmak ve stringlerin o dil dosyalarından okunmasını sağlamak mantıklı bir çözüm olabilir. Örnek bir structure:

/languages/
-> en.php
-> tr.php
-> de.php


tr.php içeriği:

PHP:
<?php

return array(
    "homepage"    =>    "Ana Sayfa",
    "about"    =>    "Hakkımızda",
    "error"    =>    "Hata",
    ...
);

Daha sonra template üzerinden çağırılabilir

PHP:
<?php
    // Kullanıcının seçtiği dil, session veya cookie'de tutulabilir
    $selected_lang = "tr";

    // Seçilen dili çağır
    $lang = include __DIR__ . '/languages/'. $selected_lang .'.php';
?>
<html>
<head>
    <title>Techolay için dil desteği örneği</title>
</head>
<body>
    <div id="app">
        <?=$lang['homepage']?>
        // Dil TR ise "Ana Sayfa" yazar, dil İngilizce ise en.php içerisinde tanımlanan veriyi yazar
    </div>
</body>
</html>
 
İfadeler: 144
React kütüphanesinde i18n kullanıyorum bu gibi durumlar için müthiş kolaylık sağlıyor. Türkçe dosyasını yapay zeka ile istediğim dile çevirip siteye tek seferde istediğim dili ekliyorum. Buna geçmeden önce conditional rendering ile yapıyordum işkenceydi
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…