Widgets

TextTr

Giriş

TextTr widget'ı, Nylo Website'un yerelleştirme sistemini kullanarak içeriğini otomatik olarak çeviren Flutter'ın Text widget'ının üzerine kurulmuş pratik bir sarmalayıcıdır.

Şunu yazmak yerine:

Text("hello_world".tr())

Şunu yazabilirsiniz:

TextTr("hello_world")

Bu, özellikle çok sayıda çevrilmiş dizeyle çalışırken kodunuzu daha temiz ve okunabilir hale getirir.

Temel Kullanım

@override
Widget build(BuildContext context) {
  return Column(
    children: [
      TextTr("welcome_message"),

      TextTr(
        "app_title",
        style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
        textAlign: TextAlign.center,
      ),
    ],
  );
}

Widget, çeviri anahtarını dil dosyalarınızda (örn. /lang/en.json) arayacaktır:

{
  "welcome_message": "Welcome to our app!",
  "app_title": "My Application"
}

String İnterpolasyonu

Çevirilerinize dinamik değerler eklemek için arguments parametresini kullanın:

TextTr(
  "greeting",
  arguments: {"name": "John"},
)

Dil dosyanızda:

{
  "greeting": "Hello, {{name}}!"
}

Çıktı: Hello, John!

Birden Fazla Argüman

TextTr(
  "order_summary",
  arguments: {
    "item": "Coffee",
    "quantity": "2",
    "total": "\$8.50",
  },
)
{
  "order_summary": "You ordered {{quantity}}x {{item}} for {{total}}"
}

Çıktı: You ordered 2x Coffee for $8.50

Stillendirilmiş Yapıcılar

TextTr, temanızdan metin stillerini otomatik olarak uygulayan adlandırılmış yapıcılar sunar:

displayLarge

TextTr.displayLarge("page_title")

Theme.of(context).textTheme.displayLarge stilini kullanır.

headlineLarge

TextTr.headlineLarge("section_heading")

Theme.of(context).textTheme.headlineLarge stilini kullanır.

bodyLarge

TextTr.bodyLarge("paragraph_text")

Theme.of(context).textTheme.bodyLarge stilini kullanır.

labelLarge

TextTr.labelLarge("button_label")

Theme.of(context).textTheme.labelLarge stilini kullanır.

Stillendirilmiş Yapıcılar ile Örnek

@override
Widget build(BuildContext context) {
  return Column(
    crossAxisAlignment: CrossAxisAlignment.start,
    children: [
      TextTr.headlineLarge("welcome_title"),
      SizedBox(height: 16),
      TextTr.bodyLarge(
        "welcome_description",
        arguments: {"app_name": "MyApp"},
      ),
      SizedBox(height: 24),
      TextTr.labelLarge("get_started"),
    ],
  );
}

Parametreler

TextTr, standart Text widget'ının tüm parametrelerini destekler:

Parametre Tür Açıklama
data String Aranacak çeviri anahtarı
arguments Map<String, String>? String interpolasyonu için anahtar-değer çiftleri
style TextStyle? Metin stili
textAlign TextAlign? Metnin nasıl hizalanması gerektiği
maxLines int? Maksimum satır sayısı
overflow TextOverflow? Taşma nasıl yönetilecek
softWrap bool? Metnin yumuşak satır sonlarında sarılıp sarılmayacağı
textDirection TextDirection? Metnin yönü
locale Locale? Metin oluşturma için yerel ayar
semanticsLabel String? Erişilebilirlik etiketi

Karşılaştırma

Yaklaşım Kod
Geleneksel Text("hello".tr())
TextTr TextTr("hello")
Argümanlarla TextTr("hello", arguments: {"name": "John"})
Stillendirilmiş TextTr.headlineLarge("title")