TR
Başlangıç

Dil ve çeviri

Bu sayfa arayüzün dilinin nasıl seçildiğini, dil seçiciyi ve metinleri çevirmeyi anlatır.

Acun UI Türkçe ve İngilizce arayüzle gelir. Uygulama hangi dildeyse bileşenler o dilde görünür. Sayılar (1.234,5 / 1,234.5) ve kısa tarihler (05.10.2026 / 10/05/2026) de dile uyar.

En kısa örnek

// bootstrap/app.php
use Acun\Ui\Http\Middleware\SetLocale;

->withMiddleware(function (Middleware $middleware): void {
    $middleware->web(append: SetLocale::class);
})
{{-- resources/views/layouts/admin/sections/navbar.blade.php --}}
<acun:slot:actions><acun:locale-switcher /></acun:slot:actions>

Temada ikisi de hazırdır. Ara katman her isteğin dilini seçer; ziyaretçi dili üst çubuktaki seçiciden değiştirir. Livewire güncellemeleri de web grubundan geçtiği için aynı dili kullanır.

Ziyaretçinin dili

SetLocale dili şu sırayla seçer:

  1. Kayıtlı tercih: Giriş yapmış kullanıcının hesabındaki alan, yoksa dil seçicinin çerezi.
  2. Tarayıcının dili: Tarayıcı dillerinden sunulan ilk dil. en-US gibi bir değer en sayılır.
  3. Ülke: countries listesindeki ülke kendi dilini alır, örneğin Türkiye Türkçe. Bilinen başka bir ülke yedek dili alır.
  4. Yedek dil: Hiçbiri karar vermezse fallback, varsayılan olarak İngilizce.

Ülke bilgisinin nereden geldiği sayfanın sonunda, İleri düzey bölümünde.

Sık kullanılan seçenekler

Dil ayarları config/acun-ui.php dosyasının locale bloğundadır. Yazmadığınız anahtarlar paketin varsayılanını kullanır:

'locale' => [
    'supported' => ['tr', 'en'],
    'fallback' => 'en',
    'countries' => ['TR' => 'tr'],
    'user_attribute' => 'dil_tercihi',   // null: yalnızca çerez
],
Seçenek Ne yapar Varsayılan
supported Sunulan diller; seçici bunları listeler. ['tr', 'en']
fallback Hiçbir kural karar vermezse kullanılan dil. 'en'
countries Ülke kodu → dil eşleşmesi. ['TR' => 'tr']
user_attribute Seçimin saklandığı hesap tablosu alanı. null (yalnızca çerez)
cookie Seçimin saklandığı çerezin adı. 'acun_locale'
names Seçicide görünen adlar, her biri kendi dilinde. Türkçe, English
flags Her dilin bayrağı, ülke kodu olarak. tr → tr, en → gb
country_headers Ülke kodunu taşıyan istek başlıkları. Cloudflare, CloudFront, Vercel

Dil seçici

<acun:locale-switcher /> üst çubuğa konur. Sunulan dilleri kendi adları ve bayraklarıyla listeler: Türkçe, English.

  • Seçim acun-ui.locale rotasına gönderilir ve 400 gün geçerli bir çerezde saklanır. Sayfa yeni dilde yeniden açılır.
  • user_attribute bir alan adı verirse seçim giriş yapmış kullanıcının hesabına da yazılır. Bu alan çerezden önce gelir; tercih cihazlar arasında korunur.
  • Bayraklar ülke kodlarıdır: tr, gb, us, de, fr, es, it, nl, ru. İngilizce için ABD bayrağını isterseniz 'flags' => ['en' => 'us'] yazın. Bayrağı olmayan dilde bayrak gösterilmez.
  • Yalnızca bir dil sunuluyorsa seçici görünmez. align="start" listeyi sola hizalar; varsayılan end.

Paketin metinlerini değiştirmek

Bileşenlerin iki tür metni vardır:

Metin türü Örnek Nasıl değiştirilir
Çeviri anahtarı "Clear selection", "Close", "Change theme" Uygulamanın lang/*.json dosyası
Prop title, label, placeholder, cancel-text Bileşeni kullanırken kendi metninizi verin

Paketin anahtarı metnin İngilizcesidir; Türkçesi paketin lang/tr.json dosyasındadır. Uygulamanızın lang/tr.json dosyasına aynı anahtarı yazarsanız sizinki kullanılır. İngilizceyi değiştirmek için lang/en.json dosyasını kullanın:

// lang/tr.json
{ "Clear selection": "Seçimi kaldır" }

// lang/en.json
{ "Could not copy": "Copy failed" }

Paketin bütün anahtarları vendor/acunsoft/acun-ui-free/lang/tr.json ve vendor/acunsoft/acun-ui-pro/lang/tr.json dosyalarındadır. Başka bir dil eklemek için anahtarları o dilin dosyasına çevirin ve dili supported listesine ekleyin.

Uygulamanın kendi metinleri

Başlık, etiket, açıklama ve boş durum metinleri bileşene sizin verdiğiniz değerlerdir. Çok dilli bir uygulamada bunları __() ile verin. Uygulamanız Türkçe yazılıyorsa anahtar Türkçe olabilir; İngilizcesi lang/en.json dosyasına gider:

<acun:confirmation-dialog name="user-delete" :title="__('Kullanıcıyı sil')">
    <acun:button variant="danger" wire:click="delete">{{ __('Sil') }}</acun:button>
</acun:confirmation-dialog>
// lang/en.json
{ "Kullanıcıyı sil": "Delete user", "Sil": "Delete" }

JSON menüdeki başlıklar ve bölüm adları da çeviri anahtarıdır. Livewire sayfasının #[Title] değerini düzen çevirir. Çevirisi olmayan metin olduğu gibi görünür.

Çoğul metinler

trans_choice() metni yalnızca anahtar o dilin JSON dosyasında varsa o dilde arar. Yoksa yedek dile geçer. Türkçe anahtar lang/tr.json dosyasında yoksa Türkçe sayfada İngilizce metin görünür.

Dikkat

Türkçe anahtarlı bir uygulamada trans_choice() ile kullandığınız her anahtarı lang/tr.json dosyasına kendisiyle eşleyerek yazın.

{{ trans_choice(':count ürün|:count ürün', $sayi, ['count' => $sayi]) }}
// lang/tr.json
{ ":count ürün|:count ürün": ":count ürün|:count ürün" }

// lang/en.json
{ ":count ürün|:count ürün": ":count product|:count products" }

__() bu şekilde davranmaz: anahtar bulunmazsa anahtarın kendisini gösterir.

Sayı ve tarih biçimi

{{ \Acun\Ui\Support\Localization::number(1234.5, 1) }}   {{-- 1.234,5 · 1,234.5 --}}
{{ \Acun\Ui\Support\Localization::date($siparis->created_at) }}   {{-- 05.10.2026 · 10/05/2026 --}}

number() ikinci değerde ondalık basamak sayısını alır. İkisi de sayfanın o anki dilini kullanır.

İleri düzey

Ülke bilgisi

Ülke kodu şu istek başlıklarından okunur: CF-IPCountry (Cloudflare), CloudFront-Viewer-Country (CloudFront), X-Vercel-IP-Country (Vercel) ve X-Country-Code (kendi vekil sunucunuz). Liste country_headers ile değiştirilir. Cloudflare'in XX (bilinmiyor) ve T1 (Tor) değerleri bilinmiyor sayılır.

Bu başlıkların olmadığı bir sunucuda kendi GeoIP aramanızı bağlayabilirsiniz. Fonksiyon iki harfli ülke kodu ya da null döner:

// AppServiceProvider::boot()
use Acun\Ui\Support\Localization;

Localization::countryUsing(fn (Request $request) => GeoIp::country($request->ip()));

Paket ziyaretçinin IP adresini hiçbir dış servise göndermez.

Önbellek

Sayfa dile göre değiştiği için ara katman yanıta Vary: Accept-Language, Cookie ekler. Böylece bir önbellek her dil için ayrı kopya tutar.

Arama ve Türkçe karakterler

DataTable ve WithListing araması (->searchable(), applySearch()) büyük/küçük harfe ve Türkçe karakterlere duyarsızdır. ı, İ, I ve i aynı harf sayılır; ş/s, ç/c, ğ/g, ö/o, ü/u eşleşir. Kullanıcı "ayse" yazsa da "Ayşe" bulunur. Bu eşleştirme veritabanında, üretilen bir arama sütununda yapılır; ayrıntılar Arama sayfasında.

acun:combobox'ın tarayıcıdaki araması da aynı kuralla çalışır. Komut paleti sayfanın dilinin büyük/küçük harf kurallarını uygular: Türkçe sayfada "İSTANBUL" ile "istanbul" eşleşir.

Daha fazlası

  • Menü: menü başlıklarını çevirmek.
  • Arama: Türkçe karakterlere duyarsız arama.
  • Yapılandırma: locale bloğunun bütün anahtarları.
Acun UIİnsanlar için tasarlandı.