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") |