diff --git a/frontend/app/locales/tr.json b/frontend/app/locales/tr.json
new file mode 100644
index 00000000..a3472141
--- /dev/null
+++ b/frontend/app/locales/tr.json
@@ -0,0 +1,170 @@
+{
+ "anonymousLoginForm.length-limit": "Kullanıcı adı en az 3 karakter olmalı",
+ "anonymousLoginForm.log-in": "Giriş yap",
+ "anonymousLoginForm.symbol-limit": "Kullanıcı adı harf ile başlayıp; yalnızca harf, rakam, alt çizgi veya boşluk içerebilir",
+ "anonymousLoginForm.user-name": "Kullanıcı adı",
+ "authPanel.anonymous-provider": "Anonim",
+ "authPanel.disable-comments": "Yorumları devre dışı bırak",
+ "authPanel.disabled-cookies": "Giriş yapabilmek ve yorum yapabilmek için çerezleri etkinleştirmeniz gerekmekte",
+ "authPanel.enable-comments": "Yorumları etkinleştir",
+ "authPanel.enable-cookies": "Giriş yapmak ve yorum yazmak için çerezleri etkinleştir",
+ "authPanel.hide-settings": "Ayarları gizle",
+ "authPanel.logged-as": "Kullanıcı adınız",
+ "authPanel.login": "Giriş:",
+ "authPanel.logout": "Çıkış yap?",
+ "authPanel.new-page": "yeni sayfa",
+ "authPanel.or-provider": "veya",
+ "authPanel.other-provider": "Diğer",
+ "authPanel.read-only": "Yazmaya kapalı",
+ "authPanel.request-to-delete-data": "Bilgilerimi sil",
+ "authPanel.show-settings": "Ayarları göster",
+ "blockingDuration.day": "bir günlük",
+ "blockingDuration.month": "bir aylık",
+ "blockingDuration.permanently": "Kalıcı olarak",
+ "blockingDuration.week": "bir haftalık",
+ "comment.block": "Engelle",
+ "comment.block-user": "{userName} kullanıcısı {duration} engellensin mi?",
+ "comment.blocked-user": "Engellendi",
+ "comment.blocking-period": "Engelleme süresi",
+ "comment.cancel": "İptal",
+ "comment.controversy": "Tartışma: {value}",
+ "comment.copied": "Kopyalandı!",
+ "comment.copy": "Kopyala",
+ "comment.delete": "Sil",
+ "comment.delete-message": "Bu yorumu silmek istediğinize emin misiniz?",
+ "comment.deleted-comment": "Yorum silindi",
+ "comment.deleted-user": "Silindi",
+ "comment.edit": "Düzenle",
+ "comment.expired-time": "Düzenleme zamanı aşıldı.",
+ "comment.go-to-parent": "Üst yoruma git",
+ "comment.hide": "Gizle",
+ "comment.hide-user-comment": "{userName} kullanıcısının yorumları gizlensin mi?",
+ "comment.pin": "Sabitle",
+ "comment.pin-comment": "Bu yorum sabitlensin mi?",
+ "comment.reply": "Yanıtla",
+ "comment.time": "{day} günü {time}",
+ "comment.toggle-verification": "Onayı aç/kapa",
+ "comment.unblock": "Engeli kaldır",
+ "comment.unblock-user": "Bu kullanıcının engelini kaldırmak istiyor musunuz?",
+ "comment.unpin": "Sabitlemeyi kaldır",
+ "comment.unpin-comment": "Bu yorumun sabitliğini kaldırmak istiyor musunuz?",
+ "comment.unverified-user": "Onaylanmamış kullanıcı",
+ "comment.unverify-user": "{userName} kullanıcısının onayı kaldırılsın mı?",
+ "comment.verified-user": "Onaylanmış kullanıcı",
+ "comment.verify-user": "{userName} kullanıcısı onaylansın mı?",
+ "comment.vote-error": "Oylama hatası: {voteErrorMessage}",
+ "commentForm.anonymous-uploading-disabled": "Anonim kullanıcılar resim yükleme özelliğini kullanamazlar, lütfen resim ekleyebilmek için giriş yapın.",
+ "commentForm.exceeded-size": "{fileName} dosyası boyut limitini ({maxImageSize}) aşıyor",
+ "commentForm.input-placeholder": "Bir yorum yazın",
+ "commentForm.new-comment": "Yeni yorum",
+ "commentForm.notice-about-styling": "Markdown ile şekillendirebilirsiniz",
+ "commentForm.preview": "Önizleme",
+ "commentForm.reply": "Yanıtla",
+ "commentForm.save": "Kaydet",
+ "commentForm.send": "Gönder",
+ "commentForm.subscribe-by": "Abone ol:",
+ "commentForm.subscribe-or": "veya",
+ "commentForm.unauthorized-uploading-disabled": "Yetkisiz kullanıcılar resim yükleme özelliğini kullanamazlar, lütfen resim ekleyebilmek için giriş yapın.",
+ "commentForm.unexpected-error": "Bir hata oluştu. Lütfen daha sonra tekrar deneyin.",
+ "commentForm.upload-file-fail": "{fileName} yüklemesi başarısız: \"{errorMessage}\"",
+ "commentForm.uploading": "Yükleniyor...",
+ "commentForm.uploading-file": "{fileName} yükleniyor...",
+ "commentSort.sort-by": "Sıralama ölçütü",
+ "commentsSort.best": "En iyiler",
+ "commentsSort.least-controversial": "En az tartışılan",
+ "commentsSort.least-recently-updated": "En eski güncellenen",
+ "commentsSort.most-controversial": "En çok tartışılan",
+ "commentsSort.newest": "En yeniler",
+ "commentsSort.oldest": "En eskiler",
+ "commentsSort.recently-updated": "En son güncellenen",
+ "commentsSort.worst": "En kötüler",
+ "emailLoginForm.back": "Geri",
+ "emailLoginForm.confirm": "Onayla",
+ "emailLoginForm.email-address": "E-posta adresi",
+ "emailLoginForm.empty-token": "Parola bölümü boş olamaz",
+ "emailLoginForm.expired-token": "Parola eski",
+ "emailLoginForm.invalid-email": "Adres geçerli bir e-posta adresi olmalı",
+ "emailLoginForm.loading": "Yükleniyor...",
+ "emailLoginForm.send-verification": "Onayı gönder",
+ "emailLoginForm.token": "Parola",
+ "emailLoginForm.user-not-found": "Kullanıcı bulunamadı",
+ "errors.0": "Bir hata oluştu. Lütfen daha sonra tekrar deneyin.",
+ "errors.1": "Yorum bulunamadı. Lütfen sayfayı yenileyip tekrar deneyin.",
+ "errors.10": "Yorumu düzenlemek için artık çok geç.",
+ "errors.11": "Yoruma yanıt yazılmış, artık düzenlenemez.",
+ "errors.12": "Oylama sonucu kaydedilemedi. Lütfen daha sonra tekrar deneyin.",
+ "errors.13": "Kendi yorumunuzu oylayamazsınız.",
+ "errors.14": "Yorumu zaten oyladınız.",
+ "errors.15": "Yorum için çok fazla oy var.",
+ "errors.16": "Yorum için en alt skora ulaşıldı.",
+ "errors.17": "Eylem reddedildi. Lütfen daha sonra tekrar deneyin.",
+ "errors.18": "İstenilen dosya bulunamadı.",
+ "errors.2": "Failed to unmarshal incoming request.",
+ "errors.3": "Bu işlemi yapmak için yetkiniz yok.",
+ "errors.4": "Yorum verisi geçersiz.",
+ "errors.5": "Yorum bulunamadı. Lütfen sayfayı yenileyip tekrar deneyin.",
+ "errors.6": "Site bulunamadı. Lütfen sayfayı yenileyip tekrar deneyin.",
+ "errors.7": "Kullanıcı engellendi.",
+ "errors.8": "Kullanıcı engellendi.",
+ "errors.9": "Yorum değiştirilemedi. Lütfen daha sonra tekrar deneyin.",
+ "errors.failed-fetch": "İçerik yüklenemedi. Lütfen internet bağlantınızı kontrol edin veya daha sonra tekrar deneyin.",
+ "errors.forbidden": "İzin yok.",
+ "errors.not-authorized": "Yetki yetersiz.",
+ "errors.to-many-request": "Maksimum talep limitine ulaştınız.",
+ "errors.unexpected-error": "Bir hata oluştu.",
+ "root.pinned-comments": "Sabitlenmiş yorumlar",
+ "root.powered-by": "Remark42 ile üretildi",
+ "root.show-more": "Daha fazla göster",
+ "settings.block": "engelle",
+ "settings.block-time": "{day} günü {time}'a kadar",
+ "settings.block-user": "{userName} kullanıcısını engellemek istediğinize emin misiniz?",
+ "settings.blocked-users-header": "Engellenen kullanıcılar:",
+ "settings.blocked-users-title": "Engellenen kullanıcılar",
+ "settings.hidden-user-header": "Gizlenmiş kullanıcılar:",
+ "settings.hidden-users-title": "Gizlenmiş kullanıcılar",
+ "settings.hide": "gizle",
+ "settings.no-blocked-users": "Engellenmiş kullanıcı yok.",
+ "settings.no-hidden-users": "Gizlenmiş kullanıcı yok.",
+ "settings.permanently": "kalıcı olarak",
+ "settings.show": "göster",
+ "settings.unblock": "engeli kaldır",
+ "settings.unblock-user": "{userName} kullanıcısının engeli kaldırılsın mı?",
+ "settings.unknown": "bilinmeyen",
+ "subscribeByEmail.back": "Geri",
+ "subscribeByEmail.close": "Kapat",
+ "subscribeByEmail.email": "E-posta",
+ "subscribeByEmail.expired-token": "Eski parola",
+ "subscribeByEmail.have-been-subscribed": "Güncellemelere e-posta ile abone oldunuz",
+ "subscribeByEmail.have-been-unsubscribed": "Güncellemelere e-posta aboneliğiniz kaldırıldı",
+ "subscribeByEmail.only-registered-users": "Yalnızca kayıtlı kullanıcılar erişebilir",
+ "subscribeByEmail.submit": "Gönder",
+ "subscribeByEmail.subscribe": "Abone ol",
+ "subscribeByEmail.subscribe-by-email": "E-posta ile abone ol",
+ "subscribeByEmail.subscribe-to-replies": "Yanıtlara abone ol",
+ "subscribeByEmail.subscribed": "Güncellemelere e-posta ile abone oldunuz",
+ "subscribeByEmail.token": "Parola",
+ "subscribeByEmail.unsubscribe": "Aboneliği kaldır",
+ "subscribeByRSS.button-title": "RSS ile abone ol",
+ "subscribeByRSS.replies": "Yanıtlar",
+ "subscribeByRSS.site": "Site",
+ "subscribeByRSS.thread": "Başlık",
+ "subscribeByRSS.title": "RSS",
+ "toolbar.attach-image": "Resim ekleyin, sürükleyip-bıraın veya kopyaladığınız resmi yapıştırın",
+ "toolbar.bold": "Kalın yazı ekle ",
+ "toolbar.code": "Kod ekle",
+ "toolbar.header": "Başlık ekle",
+ "toolbar.italic": "Eğik yazı ekle ",
+ "toolbar.link": "Bağlantı ekle ",
+ "toolbar.ordered-list": "Sıralı liste ekle",
+ "toolbar.quote": "Alıntı ekle",
+ "toolbar.unordered-list": "Liste ekle",
+ "user-info.last-comments": "{userName} tarafından son yorumlar",
+ "user-info.unexpected-error": "Bir hata oluştu",
+ "vote.anonymous": "Anonim kullanıcılar oy kullanamaz",
+ "vote.deleted": "Silinmiş yorum oylanamaz",
+ "vote.guest": "Oy vermek için giriş yapın",
+ "vote.only-positive": "Sadece pozitif oy verilebilir",
+ "vote.only-post-page": "Yalnızca gönderinin sayfasında oylama yapılabilir",
+ "vote.own-comment": "Kendi yorumunuza oy veremezsiniz",
+ "vote.readonly": "Yazmaya kapalı başlıklarda oy veremezsiniz"
+}
diff --git a/frontend/app/utils/loadLocale.ts b/frontend/app/utils/loadLocale.ts
index aaee4429..3f1b9f28 100644
--- a/frontend/app/utils/loadLocale.ts
+++ b/frontend/app/utils/loadLocale.ts
@@ -28,6 +28,11 @@ export async function loadLocale(locale: string): Promise
.then(res => res.default)
.catch(() => enMessages);
}
+ if (locale === 'tr') {
+ return import(/* webpackChunkName: "tr" */ '../locales/tr.json')
+ .then(res => res.default)
+ .catch(() => enMessages);
+ }
return enMessages;
}
diff --git a/frontend/tasks/supportedLocales.json b/frontend/tasks/supportedLocales.json
index 4cdf4433..34cb8030 100644
--- a/frontend/tasks/supportedLocales.json
+++ b/frontend/tasks/supportedLocales.json
@@ -1 +1 @@
-["en", "ru", "de", "fi", "es", "zh"]
+["en", "ru", "de", "fi", "es", "zh", "tr"]