From 4ec3de0266bbb029ba5fd7b0fb64d12209bffa3d Mon Sep 17 00:00:00 2001 From: alibildir <84903907+alibildir@users.noreply.github.com> Date: Sun, 25 Feb 2024 15:59:28 +0300 Subject: [PATCH] Translate to turkish (#220) * translate is continue * translate complated but static * translating is completed * default languages restrored to en * Update App.cs --------- Co-authored-by: Sebastian Stehle --- .../Resources/Texts.tr.resx | 156 +++++ .../Resources/Texts.tr.resx | 426 +++++++++++++ .../src/Notifo.Domain/Resources/Texts.tr.resx | 210 +++++++ .../src/Notifo/Resources/AppResources.tr.resx | 585 ++++++++++++++++++ backend/src/Notifo/Startup.cs | 3 +- frontend/src/app/texts/index.ts | 3 +- frontend/src/app/texts/tr.ts | 432 +++++++++++++ frontend/src/sdk/shared/config.ts | 35 +- 8 files changed, 1846 insertions(+), 4 deletions(-) create mode 100644 backend/src/Notifo.Domain.Integrations.Abstractions/Resources/Texts.tr.resx create mode 100644 backend/src/Notifo.Domain.Integrations/Resources/Texts.tr.resx create mode 100644 backend/src/Notifo.Domain/Resources/Texts.tr.resx create mode 100644 backend/src/Notifo/Resources/AppResources.tr.resx create mode 100644 frontend/src/app/texts/tr.ts diff --git a/backend/src/Notifo.Domain.Integrations.Abstractions/Resources/Texts.tr.resx b/backend/src/Notifo.Domain.Integrations.Abstractions/Resources/Texts.tr.resx new file mode 100644 index 00000000..34c1de43 --- /dev/null +++ b/backend/src/Notifo.Domain.Integrations.Abstractions/Resources/Texts.tr.resx @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Alana bir değer atanamaz. + + + Geçerli bir mantıksal değer değil. + + + Geçerli bir sayı değil. + + + Değer {0} karakterden kısa olmalıdır. + + + Değer {0} değerinden küçük olmalıdır. + + + Değer {0} karakterden uzun olmalıdır. + + + Değer {0} değerinden büyük olmalıdır. + + + Alan mantıksal değil. + + + Alan sayısal değil. + + + Alan metin tipinde değil. + + + Alan formatı geçerli değil. + + + Alan zorunlu. + + \ No newline at end of file diff --git a/backend/src/Notifo.Domain.Integrations/Resources/Texts.tr.resx b/backend/src/Notifo.Domain.Integrations/Resources/Texts.tr.resx new file mode 100644 index 00000000..2b71d5e6 --- /dev/null +++ b/backend/src/Notifo.Domain.Integrations/Resources/Texts.tr.resx @@ -0,0 +1,426 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + E-posta göndermek için önceden yapılandırılmış Amazon Simple Email Service (SES).Preconfigured Amazon Simple Email Service (SES) to send emails. + + + Amazon SES (Entegre) + + + {0} e-posta adresi zaten başka bir uygulama tarafından kullanılıyor. + + + Ek e-posta adreslerinin virgül veya satırla ayrılmış listesi. + + + E-posta Adresleri + + + Gönderenin e-posta adresi. + + + Kimden e-posta + + + Gönderenin adı. + + + Kimden Adı + + + The credentials as JSON document. + + + Credentials + + + MessageBird kullanarak iOS ve Android cihazlara anlık bildirimler gönderin. + + + Kimlik bilgileri ayrıştırılamadı. + + + Firebase + + + Project ID + + + Android cihazlara sessiz mesaj gönder. + + + Sessiz (Android) + + + iOS cihazlara sessiz mesaj gönder. + + + Sessiz (iOS) + + + API Key + + + E-postaları Mailchimp üzerinden gönder. + + + '{0}' hedefine e-posta gönderimi başarısız oldu : {1}. + + + '{0}' hedefine e-posta gönderimi başarısız oldu : Hiç bir sonuç dönmedi. + + + Mailchimp + + + API Key + + + API Secret + + + E-postaları Mailjet üzerinden gönder. + + + '{0}' hedefine e-posta gönderimi başarısız oldu : {1}/{2}. + + + '{0}' hedefine e-posta gönderimi başarısız oldu : Hiç bir sonuç dönmedi. + + + Mailjet + + + SMS mesajları için önceden yapılandırılmış Messagebird entegrasyonu. + + + MessageBird (Entegre) + + + Messagebird WhatsApp + + + Access Key + + + Özel Access Key kullanan messagebird entegrasyonu. + + + '{0}' hedefine SMS gönderimi başarısız oldu: {1} + + + '{0}' hedefine SMS gönderimi başarısız oldu. + + + Messagebird SMS + + + Telefon Numarasına Alternatif Olarak Şirket Adı + + + Yaratıcı + + + Telefon Numarası + + + Ülkeye özgü telefon numaraları. Her satır bir telefon numarasıdır. + + + Telefon Numaraları + + + SMS Gönder + + + WhatsApp Gönder + + + The ID of the WhatsApp Channel. + + + WhatsApp Channel ID + + + Şablonun adı. Gerçek bildirim metni (genellikle konu) olacak bir parametreye sahip olmalıdır. + + + Şablon Adı + + + Şablon Alanadı. Facebook Business hesabınızın WhatsApp şablonları Yöneticisinde bulunabilir. + + + Şablon Alanadı + + + E-postaları özel bir e-posta sunucu kullanarak gönder. + + + SMTP kullanarak e-posta gönderimi başarısız oldu: {0} + + + Host + + + SMTP Sunucusu + + + SMTP sunucusu için şifre. + + + Şifre + + + Port + + + SMTP sunucusu için geçerli kullanıcı adı. + + + Kullanıcı Adı + + + Access Key + + + Botla sohbette kullanıcının kimliğini belirleyen kimlik. Otomatik olarak ayarlanacaktır. + + + Telegram Chat ID + + + Mesajları Telegram kullanarak gönder. + + + Telegram + + + Kullanıcınızı bulduk. Artık bildirim alacaksınız. + + + Kullanıcınızı bulamıyoruz. Lütfen bir kullanıcı adı oluşturun ve kullanıcı adını {0} hesabınızda yapılandırın. Bunu yaptığınızda bana bir /update komutu gönderin. + + + Telegram içindeki kullanıcı adı. + + + Telegram Kullanıcı Adı + + + {0} botuna hoş geldiniz. Bildirimlerinizi size göndereceğim. + + + Api Key + + + TelekoSMS mesajları göndermek için Telekom entegrasyonu.m integration for sending SMS messages. + + + '{0}' hedefine SMS gönderimi başarısız oldu: {1} + + + '{0}' hedefine SMS gönderimi başarısız oldu. + + + Telekom + + + Telefon Numarası + + + Telefon Numaraları + + + API Identity + + + API authentication secret + + + Threema'yı kullanarak sunucu tarafı şifreli mesajlar gönderin. + + + Threema + + + Account SID + + + Auth Token + + + SMS mesajları göndermek için Twilio entegrasyonu. + + + '{0}' hedefine SMS gönderimi başarısız oldu: {1} + + + Geçersiz yapılandırma. Kimlik doğrulanamıyor veya telefon numarası bulunamıyor. + + + '{0}' hedefine SMS gönderimi başarısız oldu. + + + Twilio + + + Telefon Numarası + + + Bir bildirim Kullanıcı tarafından onaylandığında sunucunuza bir HTTP isteği yapın. + + + HTTP metodu + + + Metod + + + Bir şablon tanımlarken opsiyonel isim. + + + İsim + + + Tüm bildirimler için bu webhook noktasını kullan. + + + Her Zaman Gönder + + + Onaylanmış bildirimleri bu webhook noktasına gönder. + + + Gönderim Onayı + + + Tüm bildirimleri bu webhook noktasına gönder. + + + Her Zaman Gönder + + + Sunucu uç noktanızın URL'si. + + + URL + + \ No newline at end of file diff --git a/backend/src/Notifo.Domain/Resources/Texts.tr.resx b/backend/src/Notifo.Domain/Resources/Texts.tr.resx new file mode 100644 index 00000000..4bb5b7bf --- /dev/null +++ b/backend/src/Notifo.Domain/Resources/Texts.tr.resx @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Kendi kendinizi kaldıramazsınız. + + + Kendi kendinizi güncelleyemezsiniz. + + + Uygulama yükseltilemedi. + + + Kullanıcı bulunamadı. + + + E-posta şablonu bildirim konusunu oluşturmaz, bildirimi döngüye almaz ve '{{ notification.subject }}' kullanmaz. + + + Metin için şablon veya html gövdesi tanımlanmalıdır. + + + E-posta şablonu bilinmeyenbir hata üretiyor. + + + {0} geçerli bir entegrasyon tipi değil. + + + Entegrasyon geçerli değil. + + + Geçerli bir sayı değil. + + + Değer {0} karakterden kısa olmalıdır. + + + Değer {0} değerinden küçük olmalıdır. + + + Değer {0} karakterden uzun olmalıdır. + + + Değer {0} değerinden büyük olmalıdır. + + + Alan formatı geçerli değil. + + + Alan zorunlu. + + + '{{app}}' uygulamasına yayıncı olarak '{{user}}' kullanıcısı eklendi. + + + '{{app}}' uygulamasından yayıncı olan '{{user}}' kullanıcısı kaldırıldı. + + + '{{app}}' uygulamasında yeni log mesajı: {{log}}. + + + Ayarlara Git + + + '{{app}}' uygulmasından '{{code}}' şablonu başarıyla kaldırıldı. + + + '{{app}}' uygulaması içinde '{{code}}' şablonu eklendi veya güncellendi. + + + Belirlenemeyen bir şablon hatası. + + + {PropertyName} geçerli bir dil olmalı. + + + {PropertyName} geçerli bir liquid şablonu olmalı + + + {PropertyName} geçerli bir telefon numarası olmalı. + + + {PropertyName} geçerli bir rol olmalı. + + + {PropertyName} geçerli bir zaman dilimi olmalı. + + + {PropertyName} geçerli bir başlık olmalı. + + + {PropertyName} geçerli bir URL olmalı. + + \ No newline at end of file diff --git a/backend/src/Notifo/Resources/AppResources.tr.resx b/backend/src/Notifo/Resources/AppResources.tr.resx new file mode 100644 index 00000000..af205c29 --- /dev/null +++ b/backend/src/Notifo/Resources/AppResources.tr.resx @@ -0,0 +1,585 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Hesap oluşturmak için gizlilik politikasını kabul etmelisiniz. + + + Hesap oluşturmak için hizmet şartlarını kabul etmeniz gerekir. + + + Giriş reddedildi. Hesabınızın kilidini açmak için lütfen uygulama yöneticisiyle iletişime geçin. + + + Erişim engellendi + + + <a href="{0}" target="_blank">Hizmet Şartları</a>'nı kabul ediyorum. + + + <a href="{0}" target="_blank">Gizlilik politikasını</a> kabul ediyorum. + + + Şifreyi değiştir + + + Şifre + + + Şifreyi değiştir + + + Kritik + + + Kaldır + + + Kaydet + + + Uyarı + + + E-posta adresinizi doğruladığınız için teşekkürler. + + + E-posta doğrulandı + + + Bildirim onaylandı + + + şifreyi doğrula + + + Şifreyi doğrula + + + Onayın alındığını doğruladığınız için teşekkür ederiz. Bu yalnızca acil veya önemli bildirimler için gereklidir. Artık bu pencereyi kapatabilirsiniz. + + + Bildirim onaylandı + + + Uygulamalar + + + Vazgeç + + + Kişisel bilgi + + + aşağıdaki izinleri istiyor + + + İzin + + + Vermek istemediğiniz izinlerin işaretini kaldırın. + + + İzin ver + + + E-posta + + + Bütün E-postalar + + + Bana doğrudan anlık bildirimler gibi başka e-postalar gönder. + + + E-posta Tercihleri + + + E-posta tercihleriniz başarıyla kaydedildi. E-posta aboneliğinizi iptal ettiyseniz gelecekte başka e-posta almayacaksınız. + + + Oturum başarıyla kapatıldı + + + E-posta tercihlerinizi güncelleyin ve belirli konularda e-postayla bildirim almak isteyip istemediğinize veya artık e-posta almak isteyip istemediğinize karar verin. + + + E-posta Tercihleri + + + E-posta E-posta Adresinin Değiştirilmesine Yardımcı Olacaktır. Bir Temanın Düşüşü, daha önce başka bir şeyle karşılaşmadan önce, çok hızlı bir şekilde gerçekleşti. E-postalar hızla siliniyor, daha sonra e-postalar daha fazla gönderiliyor. + + + Bu bir hatadır. + + + Üzgünüz, bir hata oluştu. Ekip zaten bunun üzerinde çalışıyor. + + + Hata oluştu + + + <strong>{0}</strong> ile başarıyla kimlik doğrulaması yaptınız. Lütfen aşağıya bu site için bir e-posta adresi girin ve oturum açmayı tamamlamak için Kayıt ol düğmesine tıklayın. + + + Bu e-posta adresine sahip bir kullanıcı zaten mevcut. Başka bir harici giriş eklemek için profil sayfanıza gidin. + + + Giriş sırasında hata oluştu: {0} + + + {0} ile giriş yap + + + Girişler + + + Harici girişler + + + Giriş yapmak için başka bir servis ekleyiniz. + + + Kaldır + + + Harici girişlerinizi yönetin + + + - Or - + + + E-posta Gönder + + + Size şifrenizi nasıl sıfırlayacağınızla ilgili talimatları içeren bir e-posta gönderdik. Lütfen e-posta istemcinize gidin ve size gönderdiğimiz e-postadaki bağlantıyı izleyin. + + + Kurtarma e-postası gönderildi + + + Şifrenizi unuttunuz mu? + + + E-posta adresinizi giriniz. Şifrenizi nasıl sıfırlayacağınızla ilgili talimatları size göndereceğiz. + + + Şifrenizi sıfırlayınız + + + Bildirimlerinizi tanımlayın. + + + Tercih ettiğiniz entegrasyonları kullanın. + + + MJML kullanarak e-posta tasarlayın. + + + Görüntüleri medya galerisine yükleyin. + + + Kullanıcıları ve ayarlarını yönetin. + + + Javascript SDK'sını sitenize ekleyin. + + + REST API'sinden yararlanın. + + + Birşeyler başarısız oldu. + + + Github e-posta adresiniz gizlenmiş. + + + Hoşgeldiniz + + + Geçersiz giriş denemesi. + + + Kullanıcı adı veya şifre hatalı. + + + Geçersiz formatta istek. + + + Geçersiz seçim. + + + Yasal + + + Hesabınız kilitlendi. Lütfen desteğe başvurunuz. + + + Hesap kilitlendi. + + + Giriş + + + Giriş + + + Henüz bir hesap oluşturmadınız mı?<br />Sadece sosyal hesabınızla giriş yaparak yeni bir hesap oluşturun. + + + Giriş + + + {0} ile giriş yap + + + Facebook ile giriş yap + + + Github ile giriş yap + + + Çıkış yap + + + Bir seçim yapmalısınız. + + + yeni şifre + + + Yeni şifre + + + Yöneticiniz ile görüşüp sizin için bir hesap açmasını talep ediniz. + + + Kayıt ol + + + Hesabın 30 gün sonra bile oturumunun açık kalmasına izin verin. + + + Çevrimdışı erişim. + + + eski şifre + + + Eski şifre + + + Şifre + + + şifreyi doğrula + + + Şifreyi doğrula + + + Şifre + + + Şifreler aynı değil + + + Notifo Yetkileri + + + Gizlilik kuralı + + + Profil + + + Profil + + + Bu e-posta daha önce bir veri ihlali olarak ortaya çıkmıştır ve asla kullanılmamalıdır. Daha önce herhangi bir yerde kullandıysanız değiştirin! + + + Bu şifre daha önce bir veri ihlalinde ortaya çıkmıştır ve asla kullanılmamalıdır. Daha önce herhangi bir yerde kullandıysanız değiştirin! + + + Kayıt ol + + + Kayıt ol + + + Hatırla + + + Beni Hatırla + + + Gerekli + + + Şifreyi değiştir + + + Şifreniz değiştirildi. + + + Şifre değiştirildi + + + Şifreyi sıfırla + + + Kaydet + + + Doğrulama e-postası gönder + + + Şifre Belirle + + + Bu site için yerel bir kullanıcı adınız/şifreniz yok. Harici bir giriş yapmadan giriş yapabilmek için yerel bir hesap ekleyin. + + + Şifre Belirle + + + Kullanıcı Oluştur + + + Şifreyi Doğrula + + + Ne şifre kimlik doğrulaması ne de Google gibi harici bir kimlik doğrulama sağlayıcısı yapılandırılmamıştır. Lütfen ayarlarınızı ve günlüklerinizi kontrol edin. + + + Yönetici Kullanıcısı + + + Yönetici Kullanıcısı Oluştur + + + Google gibi en az bir harici kimlik doğrulama sağlayıcısını yapılandırdınız. Yönetici olmak için giriş sayfasına gidin ve giriş yapın. + + + Giriş Sayfasına Git. + + + OR + + + Beklenmeyen bir istisna oluştu. + + + Kurulum + + + Henüz kullanıcı bulunmadığı için bu ekranı görüyorsunuz. Kullanıcı oluşturulduktan sonra bu ekranı tekrar kullanamazsınız. + + + Gururla yapan + + + Sebastian Stehle and Contributors, 2020-2022 + + + Tüm varlıkların dosya sisteminde depolandığı <strong>klasör varlık deposunu</strong> kullanıyorsunuz. Lütfen varlık klasörünü yedekleme stratejinize eklemeyi ve Docker kullanıyorsanız onu bir birimle eşlemeyi unutmayın. + + + <strong>FTP varlık deposunu</strong> kullanıyorsunuz. Kötü performans nedeniyle bu depolama türünün kullanılması önerilmez. + + + Siteye https üzerinden erişmiyorsunuz. Bu uyarı doğru değilse, örneğiniz nginx gibi bir ters proxy'nin arkasında olduğundan Notifo https modunu algılayamaz. http başlıklarının <code>X-Forwarded-*</code> başlıkları aracılığıyla düzgün şekilde iletildiğinden emin olun. + + + Tebrikler, Notifo kurulumunuza güvenli bir bağlantı (https) üzerinden erişiyorsunuz. + + + Notifo'ya yalnızca tek bir standart URL üzerinden erişmeli ve bu URL'yi <code>URLS__BASEURL</code> ortam değişkeniyle yapılandırmalısınız. Geçerli temel URL <code>{0}</code>, temel URL <code>{1}</code> ile eşleşmiyor. + + + Tebrikler, <code>URLS__BASEURL</code> ortam değişkeni doğru şekilde yapılandırıldı. + + + Sistem Kontrol Listesi + + + Kurulum + + + Çıkış yapmış oldunuz + + + Çıkış yapıldı + + + Kayıt Ol + + + {0} ile kayıt ol + + + kullanıcı adı + + + Kullanıcı adı + + + Giriş başarıyla eklendi. + + + Şifre Değiştir + + + Şifre başarıyla değiştirildi.. + + + Profil + + + Harici Girişler + + + Şifre + + + Kişisel Bilgilerim + + + Giriş başarıyla kaldırıldı. + + + Şifre Belirle + + + Şifre başarıyla belirlendi. + + + Profil + + + Profil başarıyla güncellendi. + + + Doğrulama hatası. + + + E-posta gönderildi. + + \ No newline at end of file diff --git a/backend/src/Notifo/Startup.cs b/backend/src/Notifo/Startup.cs index b13ceb90..1bcffd6c 100644 --- a/backend/src/Notifo/Startup.cs +++ b/backend/src/Notifo/Startup.cs @@ -181,7 +181,8 @@ public void Configure(IApplicationBuilder app) var cultures = new[] { new CultureInfo("en"), - new CultureInfo("de") + new CultureInfo("de"), + new CultureInfo("tr"), }; app.UseRequestLocalization(options => diff --git a/frontend/src/app/texts/index.ts b/frontend/src/app/texts/index.ts index 333eea33..db715d27 100644 --- a/frontend/src/app/texts/index.ts +++ b/frontend/src/app/texts/index.ts @@ -6,6 +6,7 @@ */ import { EN } from './en'; +import { TR } from './tr'; const navigatorAny = navigator as any; @@ -18,4 +19,4 @@ if (userLanguage) { userLanguage = userLanguage.substring(0, 2); } -export const texts = EN; +export const texts = userLanguage.startsWith('tr') ? TR : EN; diff --git a/frontend/src/app/texts/tr.ts b/frontend/src/app/texts/tr.ts new file mode 100644 index 00000000..25fc8546 --- /dev/null +++ b/frontend/src/app/texts/tr.ts @@ -0,0 +1,432 @@ +/* + * Notifo.io + * + * @license + * Copyright (c) Sebastian Stehle. All rights reserved. + * Author: alibildir + */ + +/* eslint sort-keys-fix/sort-keys-fix: "error" */ + +export const TR = { + app: { + allowEmail: 'E-postaları İzin Ver', + allowSms: 'SMS İzin Ver', + apiDetails: 'API Kimlik Bilgileriniz', + apiKey: 'API Anahtarı', + confirmUrl: 'Onay URL\'si', + emailSettings: 'E-posta Ayarları', + emailVerificationHint: 'E-posta adresinizi doğrulamak için Amazon\'dan kısa bir süre sonra bir e-posta alacaksınız. Lütfen e-postadaki linke tıklayın', + firebaseCredential: 'Kimlik Bilgisi', + firebaseProject: 'Proje', + firebaseSettings: 'Firebase Ayarları', + smsSettings: 'SMS Ayarları', + urls: 'URL Ayarları', + webhookUrl: 'Webhook URL\'si', + welcome: (app: string) => `Hoş Geldiniz ${app} Uygulamasına`, + }, + apps: { + createButton: 'Yeni Uygulama', + createHeader: 'Yeni Uygulama Oluştur', + createInfo: 'İsim, kullanıcı arayüzünde kullanılır ve daha sonra değiştirilebilir.', + header: 'Uygulamalar', + notFound: 'Uygulama Bulunamadı', + }, + code: 'tr', + common: { + actions: 'Eylemler', + add: 'Ekle', + admin: 'Yönetici', + after: 'sonra', + allowedModes: { + Allowed: 'İzinli', + NotAllowed: 'İzinli Değil', + }, + appId: 'Uygulama Kimliği', + apps: 'Uygulamalar', + attempt: 'Deneme', + back: 'Geri', + cancel: 'İptal', + channel: 'Kanal', + channels: 'Kanallar', + close: 'Kapat', + code: 'Kod', + conditionModes: { + Always: 'Her zaman', + IfNotConfirmed: 'Onaylanmamışsa', + IfNotSeen: 'Görülmemişse', + Inherit: '-', + }, + confirm: 'Onayla', + confirmLink: 'Onayla Bağlantısı', + confirmLinkHints: 'Düğmeye basıldıktan sonra açılacak URL.', + confirmMode: 'Onay Modu', + confirmModeHints: 'Açık modda bir bildirimi onaylamak için bir düğme gösterilecektir.', + confirmModes: { + Explicit: 'Açık', + None: 'Hiçbiri', + }, + confirmText: 'Onay Metni', + confirmTextHints: 'Onay düğmesinin varsayılan metnini geçersiz kıl.', + confirmed: 'Onaylandı', + contributors: 'Katkıda Bulunanlar', + count: 'Sayı', + create: 'Oluştur', + created: 'Oluşturuldu', + dangerZone: 'Tehlike Bölgesi', + dashboard: 'Anasayfa', + data: 'Veri', + dataHints: 'Kodunuzda kullanılabilecek isteğe bağlı veriler.', + date: 'Tarih', + delete: 'Sil', + delivered: 'Teslim Edildi', + demo: 'Demo', + description: 'Açıklama', + design: 'Tasarım', + device: 'Cihaz', + disabled: 'Devre Dışı Bırakıldı', + edit: 'Düzenle', + email: 'E-posta', + emailAddress: 'E-posta Adresi', + emailName: 'E-posta Adı', + emailPlaceholder: 'ad@web-sitem.com', + emailTemplate: 'E-posta Şablonu', + emailVerificationStatus: 'E-posta doğrulama durumu', + emails: 'E-postalar', + emoji: 'Emoji', + enabled: 'Etkin', + error: 'Hata oluştu', + failed: 'Başarısız', + feedback: 'Geri bildirim', + firstConfirmed: 'İlk Onaylanan', + firstDelivered: 'İlk Teslim Edilen', + firstSeen: 'İlk görülen', + formatting: 'Biçimlendirme', + fromEmail: 'Gönderen E-posta Adresi', + fromName: 'Gönderen Adı', + handled: 'İşlendi', + history: 'Geçmiş', + html: 'HTML', + id: 'Kimlik', + imageLarge: 'Büyük Resim', + imageSmall: 'Küçük Resim', + invite: 'Davet Et', + inviteByEmail: 'Katkıda bulunmak için e-posta adresini girin.', + language: 'Dil', + languages: 'Diller', + lastNotification: 'Son Bildirim', + lastSeen: 'Son görülen', + lastUpdate: 'Son Güncelleme', + lastWakeup: 'Son Uyanma', + linkText: 'Bağlantı Metni', + linkTextHints: 'Bir bağlantı görüntülendiğinde gösterilecek metni ayarlayın.', + linkUrl: 'Bağlantı URL\'si', + linkUrlHints: 'Bildirim veya bağlantı tıklandığında açılacak URL.', + loading: 'Yükleniyor', + logout: 'Çıkış Yap', + message: 'Mesaj', + messageBody: 'İçerik', + messageSubject: 'Konu', + mobilePush: 'Mobil', + mode: 'Mod', + more: 'Daha Fazla', + name: 'Ad', + no: 'Hayır', + noIntegration: 'Entegrasyon yapılandırılmamış.', + noName: '-İsimsiz-', + noTemplate: 'Adlandırılmış şablon bulunamadı.', + notAvailable: 'Mevcut değil', + notStarted: 'Başlamadı', + notYet: 'Henüz', + notificationSettings: 'Bildirim Ayarları', + notifications: 'Bildirimler', + overview: 'Genel Bakış', + pagination: (start: number, end: number, total: number) => `${start} ile ${end} arasında ${total}`, + password: 'Şifre', + passwordConfirm: 'Şifreyi Onayla', + passwordsDoNotMatch: 'Şifreler eşleşmiyor.', + pending: 'Bekleyen', + phoneNumber: 'Telefon Numarası', + preview: 'Önizleme', + primary: 'Birincil', + prio: 'Öncelik', + profile: 'Profil', + profileSettings: 'Ayarlarınız', + propability: 'Olasılık', + property: 'Özellik', + publish: 'Yayımla', + refresh: 'Yenile', + requiredModes: { + Inherit: '-', + NotRequired: 'Zorunlu değil', + Required: 'Zorunlu', + }, + roles: 'Roller', + rules: 'Kurallar', + sampleSubject: '-- Henüz Başlık Atanmadı --', + save: 'Kaydet', + secondsShort: 'sn.', + seen: 'Görüldü', + select: 'Seç', + send: 'Gönder', + sendModes: { + Inherit: '-', + NotAllowed: 'İzin verme', + NotSending: 'Gönderme', + Send: 'Gönder', + }, + sent: 'Gönderilen', + settings: 'Ayarlar', + showDetails: 'Detayları göster', + silent: 'Sessiz', + skipped: 'Atlandı', + sms: 'SMS', + smsTemplate: 'SMS Şablonu', + statisticsInfo: 'Her 5 saniyede güncellenir (yenileme gereklidir)', + statisticsLabelFn: (name: string) => `${name} (İşlenen / Deneme / Başarısız)`, + status: 'Durum', + subject: 'Konu', + system: 'Sistem', + template: 'Şablon', + templateCode: 'Şablon Kodu', + templateCodeHints: 'Bir şablon kullanılıyorsa tüm özellikler (konu, gövde vb.) şablondan alınır, ancak gerektiğinde geçersiz kılınabilir.', + templateMode: 'Şablon kullan?', + templates: 'Şablonlar', + text: 'Metin', + timeOfDay: 'Günün Zamanı', + timeToLive: 'Saniye cinsinden yaşam süresi', + timestamp: 'Zaman Damgası', + timezone: 'Zaman dilimi', + token: 'Anahtar', + topic: 'Konu', + topicPath: 'Konu Adı', + uploadButton: 'Dosya(lar) seç', + uploadText: 'Varolan öğenin üzerine yeni bir sürümle değiştirmek için dosyayı bırakın.', + urlPlaceholder: 'https://sitem.com/yol', + users: 'Kullanıcılar', + variants: 'Farklılar', + verified: 'Doğrulandı', + via: 'üzerinden', + webPlugin: 'Web Eklentisi', + webPluginHint: 'Web uygulamanıza Notifo\'yu entegre etmek için Pluginimizi kullanın', + webPush: 'Web Anlık İleti', + weekDay: 'Hafta Günü', + weekDays: { + friday: 'Cuma', + monday: 'Pazartesi', + saturday: 'Cumartesi', + sunday: 'Pazar', + thursday: 'Perşembe', + tuesday: 'Salı', + wednesday: 'Çarşamba', + }, + welcome: 'Hoşgeldiniz', + when: 'öyle ise', + with: 'ile', + yes: 'Evet', + }, + demo: { + featureButton: 'Varsayılan bildirim düğmesi.', + featureSubscribe: (topic: string, icon: string) => `\`${topic}\` konusuna \`${icon}\` simgesi ile abone olma.`, + title: 'Notifo Demo Sayfası', + }, + emailTemplates: { + bodyHtml: 'HTML Gövde', + bodyHtmlValid: 'HTML Gövdesi gerekli ve geçerli bir şablon olmalıdır', + bodyText: 'Metin Gövde', + bodyTextValid: 'Metin Gövdesi gerekli ve geçerli bir şablon olmalıdır', + confirmDelete: 'Şablonu gerçekten silmek istiyor musunuz?', + create: 'Oluştur', + createWithInterpolation: 'MJML (Eski)', + createWithLiquid: 'MJML + Liquid', + header: 'E-posta Şablonları', + name: 'Şablon Adı', + notFound: 'Hiçbir e-posta şablonu bulunamadı', + notFoundButton: 'Şablon oluştur', + notFoundLanguage: 'Bu dil için e-posta şablonu bulunamadı.', + subjectValid: 'Konu gerekli ve geçerli bir şablon olmalıdır', + }, + events: { + eventsNotFound: 'Eşleşen bir etkinlik bulunamadı', + header: 'Etkinlikler', + searchPlaceholder: 'Arama', + }, + integrations: { + condition: 'Koşul', + conditionHints: 'Entegrasyonun ne zaman kullanılması gerektiği.', + configured: 'Yapılandırıldı', + confirmDelete: 'Entegrasyonu gerçekten silmek istiyor musunuz?', + enabledHints: 'Entegrasyonu silmeden devre dışı bırakın.', + header: 'Entegrasyonlar', + modeProduction: 'PROD', + modeTest: 'TEST', + priority: 'Öncelik', + priorityHints: 'Aynı kanal için birden fazla entegrasyon yapılandırdığınızda bir öncelik belirleyin, örneğin MobilePush.', + supported: 'Desteklenen', + test: 'Test Modu', + testHints: 'Bu entegrasyonu yalnızca üretim veya geliştirme modu için kullanın.', + }, + log: { + header: 'Log', + logEntriesNotFound: 'Eşleşen günlük girişi bulunamadı', + searchPlaceholder: 'Arama', + userHeader: 'Kullanıcı Günlüğü', + }, + media: { + confirmDelete: 'Ortamı gerçekten silmek istiyor musunuz?', + header: 'Ortam', + mediaNotFound: 'Eşleşen ortam bulunamadı', + searchPlaceholder: 'Arama', + }, + messagingTemplates: { + confirmDelete: 'Şablonu gerçekten silmek istiyor musunuz?', + create: 'Oluştur', + header: 'Mesaj Şablonları', + name: 'Şablon Adı', + notFound: 'Hiçbir mesaj şablonu bulunamadı', + notFoundButton: 'Şablon oluştur', + singleHeader: 'Mesaj Şablonu', + }, + notificationSettings: { + channelGroupKey: 'Grup Anahtarı', + channelGroupKeyHints: 'Sadece bu belirli kanal için bildirimleri gruplamak için kullanılan paylaşılan bir anahtarı tanımlayın. Grup içindeki son bildirim saklanır ve diğer bildirimler çocuk bildirimler olarak eklenir ve biçimlendirme için kullanılabilir. Tüm bildirimler izlenir. Gruplama kullanmak için bir gecikme tanımlamanız gerekmektedir.', + delayInSeconds: 'Saniye cinsinden gecikme', + delayInSecondsHints: 'Bu zaman aralığında oluşturulan tüm bildirimler birlikte gönderilir.', + email: { + name: 'E-posta', + send: 'E-posta olarak gönder', + title: 'E-posta', + }, + fromEmailHints: 'Gönderen e-posta adresini geçersiz kıl.', + fromNameHints: 'Gönderen e-posta adını geçersiz kıl.', + groupKey: 'Grup Anahtarı', + groupKeyHints: 'Bildirimleri gruplamak için kullanılan paylaşılan bir anahtar tanımlayın. Grup içindeki son bildirim saklanır ve diğer bildirimler çocuk bildirimler olarak eklenir ve biçimlendirme için kullanılabilir. Bu bildirimler daha fazla izlenmez. Gruplama kullanmak için bir zamanlama tanımlamanız gerekmektedir.', + messaging: { + name: 'Mesajlaşma', + send: 'Mesajlaşma yoluyla gönder (Threema, ...)', + title: 'Mesajlaşma', + }, + mobilepush: { + name: 'Mobil Bildirim', + send: 'Mobil Bildirim olarak gönder', + title: 'Mobil Bildirim', + }, + required: 'Gerekli', + requiredHints: 'Bir kanal gereklidir ve (örneğin Mobil Token gibi) bir yapılandırma yoksa, bir günlük mesajı oluşturulur.', + scheduling: 'Zamanlama', + schedulingInfo: 'Ya net bir gün belirleyin ya da haftanın bir sonraki gününü belirleyin.', + schedulingToggle: 'Bildirimi belirli bir saatte gönderin', + schedulingTypes: { + userTime: 'Kullanıcı saat dilimi', + utc: 'UTC', + }, + settingsInfo: 'Bildirim ayarları aşağıdaki sırayla birleştirilecektir:\n\n1. Kullanıcı ayarları.\n2. Konu ayarları tarafından geçersiz kılınmıştır.\n3. Bildirim ayarları tarafından geçersiz kılınmıştır.', + sms: { + name: 'SMS', + send: 'SMS olarak gönder', + title: 'SMS', + }, + templateHints: 'Bu kanal için şablonu seçin. Burada yalnızca bir adı olan şablonlar görüntülenecektir. Eğer bir şablon tanımlanmamışsa birincil şablon kullanılır.', + web: { + name: 'Web', + send: 'Web Sayfası Üzerinden Gönder', + title: 'Web', + }, + webhook: { + name: 'Webhook', + send: 'Başka bir Sunucuya Gönder', + title: 'Webhook', + }, + webhookHints: 'Bu kanal için webhook entegrasyonunu seçin. Burada yalnızca bir adı olan webhooklar görüntülenecektir. Eğer bir webhook tanımlanmamışsa tüm webhooklar kullanılır.', + webpush: { + name: 'Web Push', + send: 'Web Push Olarak Gönder', + title: 'Web Push', + }, +}, + notifications: { + header: 'Bildirimler', + notificationsNotFound: 'Eşleşen bildirim bulunamadı', + searchPlaceholder: 'Ara', + }, + publish: { + header: 'Yayımla', + success: 'Etkinlik yayımlandı.', + }, + smsTemplates: { + confirmDelete: 'Şablonu gerçekten silmek istiyor musunuz?', + create: 'Oluştur', + header: 'SMS Şablonları', + name: 'Şablon Adı', + notFound: 'Hiçbir SMS şablonu bulunamadı', + notFoundButton: 'Şablon oluştur', + singleHeader: 'SMS Şablonu', + }, + subscriptions: { + confirmDelete: 'Aboneliği gerçekten silmek istiyor musunuz?', + createButton: 'Abone Ol', + createHeader: 'Yeni Abonelik Oluştur', + editHeader: 'Aboneliği Düzenle', + header: 'Abonelikler', + searchPlaceholder: 'Ara', + subscriptionsNotFound: 'Eşleşen abonelik bulunamadı', + }, + systemUsers: { + createHeader: 'Yeni Kullanıcı Oluştur', + editHeader: 'Kullanıcıyı Düzenle', + header: 'Sistem Kullanıcıları', + searchPlaceholder: 'Ara', + }, + templates: { + confirmDelete: 'Şablonu gerçekten silmek istiyor musunuz?', + createButton: 'Yeni', + header: 'Şablonlar', + templateEdit: 'Düzenle', + templateNew: 'Yeni Şablon', + templatesNotFound: 'Eşleşen şablon bulunamadı', + }, + topics: { + all: 'Tüm Konular', + createButton: 'Yeni Konu', + createHeader: 'Yeni Konu', + descriptionPlaceholder: 'Bu konunun amacını ve içeriğini açıklayın.', + explicit: 'Açık', + header: 'Konular', + implicit: 'Örtük', + namePlaceholder: 'Konuya bir isim verin.', + searchPlaceholder: 'Ara', + showAutomatically: 'Otomatik göster', + showAutomaticallyHints: 'Kullanıcıya frontend\'i ilk kez kullandığında abone olmasını isteyin.', + topicsNotFound: 'Eşleşen konu bulunamadı', + }, + users: { + confirmDelete: 'Kullanıcıyı gerçekten silmek istiyor musunuz?', + createButton: 'Yeni Kullanıcı', + createHeader: 'Yeni Kullanıcı Oluştur', + editHeader: 'Kullanıcıyı Düzenle', + header: 'Kullanıcılar', + lock: 'Kilitle', + logs: 'Kullanıcı Günlüğünü Görüntüle', + searchPlaceholder: 'Ara', + unlock: 'Kilidi Aç', + userDetails: 'Kullanıcı Detayları', + userNotFound: 'Kullanıcı bulunamadı', + usersNotFound: 'Eşleşen kullanıcı bulunamadı', + }, + validation: { + atLeastOnString: (p: { label?: string }) => `${p.label} en az bir değere sahip olmalıdır.`, + emailFn: (p: { label?: string }) => `${p.label} geçerli bir e-posta adresi olmalıdır.`, + lessThanFn: (p: { label?: string; less: number }) => `${p.label} ${p.less || 0}\`dan küçük olmalıdır.`, + maxFn: (p: { label?: string; max: number }) => `${p.label} ${p.max}\`dan büyük olmamalıdır.`, + maxItemsFn: (p: { label?: string; max: number }) => `${p.label} en fazla ${p.max} öğeye sahip olmalıdır.`, + maxLengthFn: (p: { label?: string; max: number }) => `${p.label} en fazla ${p.max} karakter olmalıdır.`, + minFn: (p: { label?: string; min: number }) => `${p.label} en az ${p.min} olmalıdır.`, + minItemsFn: (p: { label?: string; min: number }) => `${p.label} en az ${p.min || 0} öğeye sahip olmalıdır.`, + minLengthFn: (p: { label?: string; min: number }) => `${p.label} en az ${p.min} karakter olmalıdır.`, + moreThanFn: (p: { label?: string; more: number }) => `${p.label} ${p.more || 0}\`dan büyük olmalıdır.`, + patternFn: (p: { label?: string }) => `${p.label} geçerli bir formatta değil.`, + requiredFn: (p: { label?: string }) => `${p.label} zorunludur.`, + topicFn: (p: { label?: string }) => `${p.label} geçerli bir konu olmalıdır.`, + urlFn: (p: { label?: string }) => `${p.label} geçerli bir URL olmalıdır.`, + }, +}; diff --git a/frontend/src/sdk/shared/config.ts b/frontend/src/sdk/shared/config.ts index 016161b1..4f46e10c 100644 --- a/frontend/src/sdk/shared/config.ts +++ b/frontend/src/sdk/shared/config.ts @@ -5,134 +5,165 @@ * Copyright (c) Sebastian Stehle. All rights reserved. */ -import { de, enUS } from 'date-fns/locale'; +import { de, enUS, tr } from 'date-fns/locale'; import { isDev, isFunction, isNumber, isObject, isString, isUndefined, logWarn } from './utils'; export const SUPPORTED_LOCALES = { en: enUS, de, + tr, }; -const DefaultTexts: Texts<{ de: string; en: string }> = { +const DefaultTexts: Texts<{ de: string; en: string; tr: string }> = { allow: { de: 'Erlauben', en: 'Allow', + tr: 'İzin ver', }, archive: { de: 'Archiv', en: 'Archive', + tr: 'Arşiv', }, archiveLink: { de: 'Gelöschte Benachrichtungen', en: 'Deleted notifications', + tr: 'Silinmiş bildirimler', }, cancel: { de: 'Abbrechen', en: 'Cancel', + tr: 'Vazgeç', }, deny: { de: 'Nein, Danke', en: 'Deny', + tr: 'Engelle', }, email: { de: 'E-Mail', en: 'E-Mail', + tr: 'E-Posta', }, emailAddress: { de: 'E-Mail Adresse', en: 'E-Mail Address', + tr: 'E-posta adresi', }, fullName: { de: 'Name', en: 'Name', + tr: 'İsim', }, language: { de: 'Sprache', en: 'Language', + tr: 'Dil', }, loadingFailed: { de: 'Laden ist fehlgeschlagen', en: 'Loading has failed', + tr: 'Giriş başarısız', }, mobilepush: { de: 'Mobile Push', en: 'Mobile Push', + tr: 'Mobil Bildirim', }, messaging: { de: 'Messaging', en: 'Messaging', + tr: 'Mesajlaşma', }, notifications: { de: 'Nachrichten', en: 'Notifications', + tr: 'Bildirimler', }, notifyBeEmail: { de: 'Benachrichtige mich per Email', en: 'Notify me via Email', + tr: 'Beni E-posta ile bilgilendir', }, notifyBeWebPush: { de: 'Benachrichtige mich per Push Notification', en: 'Notify me via Push Notification', + tr: 'Beni anlık bildirim ile bilgilendir', }, notificationsEmpty: { de: 'Keine Benachrichtigungen vorhanden', en: 'You have no notifications yet.', + tr: 'Henüz hiç bildirim almadınız', }, okay: { de: 'Okay', en: 'Okay', + tr: 'Tamam', }, profile: { de: 'Profil', en: 'Profile', + tr: 'Profil', }, save: { de: 'Speichern', en: 'Save', + tr: 'Kaydet', }, savingFailed: { de: 'Speichern ist fehlgeschlagen', en: 'Saving has failed', + tr: 'Kaydedilemedi', }, settings: { de: 'Einstellungen', en: 'Settings', + tr: 'Ayarlar', }, sms: { de: 'SMS', en: 'SMS', + tr: 'SMS', }, subscribe: { de: 'Abbonnieren', en: 'Subscribe', + tr: 'Abone Ol', }, timezone: { de: 'Zeitzone', en: 'Timezone', + tr: 'Zaman dilimi', }, topics: { de: 'Themen', en: 'Topics', + tr: 'Başlıklar', }, unsubscribe: { de: 'Deabbonieren', en: 'Unsubscribe', + tr: 'Abonelikten ayrıl', }, webpush: { de: 'Web Push', en: 'Web Push', + tr: 'Web Anlık Bildirimi', }, webpushConfirmText: { de: 'Notifications können jederzeit in den Browser Einstellungen deaktiviert werden.', en: 'Notifications can be turned off anytime from browser settings.', + tr: 'Bildirimler tarayıcı ayarlarından istediğiniz zaman kapatılabilir.', }, webpushConfirmTitle: { de: 'Wir wollen dir Push Benachrichtigungen schenken', en: 'We want to send you push notifications.', + tr: 'Size anlık bildirimleri gönderebilmek istiyoruz.', }, webpushTopics: { de: 'Abonniere die folgenden Themen um auf dem neuesten Stand zu sein. Du kannst dich jederzeit von diesen Themen abmelden oder auch später anmelden.', en: 'Subscribe to the following topics to be always up to date. You can unsubscribe any time you want or subscribe to these topics later.', + tr: 'Her zaman güncel kalmak için aşağıdaki başlıklara abone olunuz. İstediğiniz zaman abonelikten ayrılabilir veya daha sonra abone olabilirsiniz.', }, };