From 855a5b426badc326ef4e7c41be51c1a9b7cf176b Mon Sep 17 00:00:00 2001 From: HF Date: Tue, 5 Apr 2022 15:17:01 +0200 Subject: [PATCH 1/3] also send cache-control --- src/routes/chunks.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/routes/chunks.js b/src/routes/chunks.js index 6eba181..f74d289 100644 --- a/src/routes/chunks.js +++ b/src/routes/chunks.js @@ -45,9 +45,10 @@ export default async (req: Request, res: Response, next) => { let curEtag = chunkEtags.get(etagKey); const preEtag = req.headers['if-none-match']; - if (curEtag && preEtag === curEtag) { + if (curEtag && preEtag && preEtag === curEtag) { res.set({ ETag: curEtag, + 'Cache-Control': `public, s-maxage=${60}, max-age=${40}`, // seconds }); res.status(304).end(); return; @@ -69,10 +70,12 @@ export default async (req: Request, res: Response, next) => { res.set({ 'Cache-Control': `public, s-maxage=${60}, max-age=${40}`, // seconds - 'Content-Type': 'application/octet-stream', }); if (!chunk) { + res.set({ + 'Content-Type': 'application/octet-stream', + }); res.status(200).end(); return; } From d75e65efecd77e67932ee0db22f9a4aa3b37c35f Mon Sep 17 00:00:00 2001 From: HF Date: Tue, 5 Apr 2022 19:05:41 +0200 Subject: [PATCH 2/3] send cache-control also on 503 for reasons --- src/routes/chunks.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/routes/chunks.js b/src/routes/chunks.js index f74d289..34c9217 100644 --- a/src/routes/chunks.js +++ b/src/routes/chunks.js @@ -45,10 +45,13 @@ export default async (req: Request, res: Response, next) => { let curEtag = chunkEtags.get(etagKey); const preEtag = req.headers['if-none-match']; + res.set({ + 'Cache-Control': `public, s-maxage=${60}, max-age=${40}`, // seconds + }); + if (curEtag && preEtag && preEtag === curEtag) { res.set({ ETag: curEtag, - 'Cache-Control': `public, s-maxage=${60}, max-age=${40}`, // seconds }); res.status(304).end(); return; @@ -68,10 +71,6 @@ export default async (req: Request, res: Response, next) => { return; } - res.set({ - 'Cache-Control': `public, s-maxage=${60}, max-age=${40}`, // seconds - }); - if (!chunk) { res.set({ 'Content-Type': 'application/octet-stream', From 0e1c1a42b506bed8e9aaf49ee2f553e258a84935 Mon Sep 17 00:00:00 2001 From: HF Date: Wed, 6 Apr 2022 19:48:39 +0200 Subject: [PATCH 3/3] update languages, add turkish --- i18n/ssr-tr.po | 442 ++++++++++++ i18n/tr.po | 1364 ++++++++++++++++++++++++++++++++++++++ src/core/ChatProvider.js | 16 +- src/utils/location.js | 10 +- 4 files changed, 1819 insertions(+), 13 deletions(-) create mode 100644 i18n/ssr-tr.po create mode 100644 i18n/tr.po diff --git a/i18n/ssr-tr.po b/i18n/ssr-tr.po new file mode 100644 index 0000000..6f9116d --- /dev/null +++ b/i18n/ssr-tr.po @@ -0,0 +1,442 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.0.1\n" + +#: src/core/ChatProvider.js:370 +msgid "You can not send chat messages with proxy" +msgstr "Proxy ile sohbete mesaj atamazsın." + +#: src/core/ChatProvider.js:384 +#, javascript-format +msgid "You are sending messages too fast, you have to wait ${ waitTime }s :(" +msgstr "" +"Çok hızlı mesaj gönderiyorsun, ${ waitTime } saniye beklemen gerekiyor." + +#: src/core/ChatProvider.js:388 +msgid "You don't have access to this channel" +msgstr "" + +#: src/core/ChatProvider.js:404 +msgid "Your mail has to be verified in order to chat" +msgstr "" + +#: src/core/ChatProvider.js:409 +msgid "You are permanently muted, join our guilded to apppeal the mute" +msgstr "" + +#: src/core/ChatProvider.js:414 +#, javascript-format +msgid "You are muted for another ${ timeMin } minutes" +msgstr "" + +#: src/core/ChatProvider.js:416 +msgid "You are muted for another ${ muted } seconds" +msgstr "" + +#: src/core/ChatProvider.js:424 +msgid "Ow no! Spam protection decided to mute you" +msgstr "" + +#: src/core/ChatProvider.js:435 +msgid "You can't send a message this long :(" +msgstr "" + +#: src/core/ChatProvider.js:439 +msgid "Please use int channel" +msgstr "" + +#: src/core/ChatProvider.js:443 +msgid "Your country is temporary muted from chat" +msgstr "" + +#: src/core/ChatProvider.js:451 +msgid "Stop flooding." +msgstr "" + +#: src/routes/reset_password.js:40 +msgid "You sent an empty password or invalid data :(" +msgstr "" + +#: src/routes/reset_password.js:52 +msgid "This password-reset link isn't valid anymore :(" +msgstr "" + +#: src/routes/reset_password.js:63 +msgid "Your passwords do not match :(" +msgstr "" + +#: src/routes/reset_password.js:78 +msgid "User doesn't exist in our database :(" +msgstr "" + +#: src/routes/reset_password.js:90 +msgid "Passowrd successfully changed." +msgstr "" + +#: src/routes/reset_password.js:109 +msgid "Invalid url :( Please check your mail again." +msgstr "" + +#: src/routes/reset_password.js:122 +msgid "" +"This passwort reset link is wrong or already expired, please request a new " +"one (Note: you can use those links just once)" +msgstr "" + +#: src/ssr-components/Globe.jsx:44 +msgid "Double click on globe to go back." +msgstr "" + +#: src/ssr-components/Globe.jsx:45 +msgid "Loading..." +msgstr "" + +#: src/ssr-components/Globe.jsx:51 +msgid "PixelPlanet.Fun 3DGlobe" +msgstr "" + +#: src/ssr-components/Globe.jsx:52 +msgid "A 3D globe of our whole map" +msgstr "" + +#: src/ssr-components/Main.jsx:70 +msgid "PixelPlanet.fun" +msgstr "" + +#: src/ssr-components/Main.jsx:72 +msgid "Place color pixels on an map styled canvas with other players online" +msgstr "" + +#: src/core/mail.js:65 +#, javascript-format +msgid "" +"We already sent you a verification mail, you can request another one in " +"${ minLeft } minutes." +msgstr "" + +#: src/core/mail.js:75 +msgid "Welcome ${ name } to PixelPlanet, plese verify your mail" +msgstr "" + +#: src/core/mail.js:77 +#, javascript-format +msgid "Hello ${ name }" +msgstr "" + +#: src/core/mail.js:78 +msgid "" +"welcome to our little community of pixelplacers, to use your account, you " +"have to verify your mail. You can do that here: " +msgstr "" + +#: src/core/mail.js:78 +msgid "Click to Verify" +msgstr "" + +#: src/core/mail.js:78 src/core/mail.js:128 +msgid "Or by copying following url:" +msgstr "" + +#: src/core/mail.js:79 +msgid "" +"Have fun and don't hesitate to contact us if you encouter any problems :)" +msgstr "" + +#: src/core/mail.js:80 src/core/mail.js:130 +msgid "Thanks" +msgstr "" + +#: src/core/mail.js:98 +msgid "" +"We already sent you a mail with instructions. Please wait before requesting " +"another mail." +msgstr "" + +#: src/core/mail.js:106 +msgid "Couldn't find this mail in our database" +msgstr "" + +#: src/core/mail.js:125 +msgid "You forgot your password for PixelPlanet? Get a new one here" +msgstr "" + +#: src/core/mail.js:127 +msgid "Hello" +msgstr "" + +#: src/core/mail.js:128 +msgid "" +"You requested to get a new password. You can change your password within the " +"next 30min here: " +msgstr "" + +#: src/core/mail.js:128 src/ssr-components/PasswordReset.jsx:19 +#: src/ssr-components/PasswordReset.jsx:28 +msgid "Reset Password" +msgstr "" + +#: src/core/mail.js:129 +#, javascript-format +msgid "" +"If you did not request this mail, please just ignore it (the ip that " +"requested this mail was ${ ip })." +msgstr "" + +#: src/ssr-components/PasswordReset.jsx:21 +#: src/ssr-components/RedirectionPage.jsx:15 +msgid "Click here" +msgstr "" + +#: src/ssr-components/PasswordReset.jsx:22 +msgid "to go back to pixelplanet" +msgstr "" + +#: src/ssr-components/PasswordReset.jsx:29 +#, javascript-format +msgid "Hello ${ name }, you can set your new password here:" +msgstr "" + +#: src/ssr-components/PasswordReset.jsx:33 +msgid "New Password" +msgstr "" + +#: src/ssr-components/PasswordReset.jsx:41 +msgid "Confirm New Password" +msgstr "" + +#: src/ssr-components/PasswordReset.jsx:47 +msgid "Submit" +msgstr "" + +#: src/ssr-components/PasswordReset.jsx:52 +msgid "PixelPlanet.fun Password Reset" +msgstr "" + +#: src/ssr-components/PasswordReset.jsx:53 +msgid "Reset your password here" +msgstr "" + +#: src/routes/api/captcha.js:22 +msgid "No captcha text given" +msgstr "" + +#: src/routes/api/captcha.js:27 +msgid "No captcha id given" +msgstr "" + +#: src/routes/api/auth/register.js:61 src/routes/api/captcha.js:41 +msgid "You took too long, try again." +msgstr "" + +#: src/routes/api/auth/register.js:64 src/routes/api/captcha.js:47 +msgid "You failed your captcha" +msgstr "" + +#: src/routes/api/auth/register.js:67 src/routes/api/captcha.js:53 +msgid "Unknown Captcha Error" +msgstr "" + +#: src/routes/api/captcha.js:60 +msgid "Server error occured" +msgstr "" + +#: src/routes/api/modtools.js:52 +msgid "You are not logged in" +msgstr "" + +#: src/routes/api/modtools.js:64 +msgid "You are not allowed to access this page" +msgstr "" + +#: src/routes/api/modtools.js:166 +msgid "Just admins can do that" +msgstr "" + +#: src/utils/validation.js:18 +msgid "Email can't be empty." +msgstr "" + +#: src/utils/validation.js:19 +msgid "Email should be at least 5 characters long." +msgstr "" + +#: src/utils/validation.js:20 +msgid "Email can't be longer than 40 characters." +msgstr "" + +#: src/utils/validation.js:21 +msgid "Email should at least contain a dot" +msgstr "" + +#: src/utils/validation.js:23 +msgid "Email should contain a @" +msgstr "" + +#: src/utils/validation.js:30 +msgid "Name can't be empty." +msgstr "" + +#: src/utils/validation.js:31 +msgid "Name must be at least 2 characters long" +msgstr "" + +#: src/utils/validation.js:32 +msgid "Name must be shorter than 26 characters" +msgstr "" + +#: src/utils/validation.js:39 +msgid "Name contains invalid character like @, /, \\ or #" +msgstr "" + +#: src/utils/validation.js:54 +msgid "No password given." +msgstr "" + +#: src/utils/validation.js:57 +msgid "Password must be at least 6 characters long." +msgstr "" + +#: src/utils/validation.js:60 +msgid "Password must be shorter than 60 characters." +msgstr "" + +#: src/routes/api/auth/register.js:33 +msgid "No Captcha given" +msgstr "" + +#: src/routes/api/auth/register.js:36 +msgid "E-Mail already in use." +msgstr "" + +#: src/routes/api/auth/register.js:38 +msgid "Username already in use." +msgstr "" + +#: src/routes/api/auth/register.js:91 +msgid "Failed to create new user :(" +msgstr "" + +#: src/routes/api/auth/register.js:106 +msgid "Failed to establish session after register :(" +msgstr "" + +#: src/routes/api/auth/logout.js:13 +msgid "You are not even logged in." +msgstr "" + +#: src/routes/api/auth/change_mail.js:41 +#: src/routes/api/auth/change_passwd.js:37 +#: src/routes/api/auth/delete_account.js:38 +msgid "You are not authenticated." +msgstr "" + +#: src/routes/api/auth/change_mail.js:50 +#: src/routes/api/auth/change_passwd.js:46 +#: src/routes/api/auth/delete_account.js:48 +msgid "Incorrect password!" +msgstr "" + +#: src/routes/api/auth/verify.js:25 src/routes/api/auth/verify.js:32 +msgid "Mail verification" +msgstr "" + +#: src/routes/api/auth/verify.js:26 +msgid "You are now verified :)" +msgstr "" + +#: src/routes/api/auth/verify.js:32 +msgid "" +"Your mail verification code is invalid or already expired :(, please request " +"a new one." +msgstr "" + +#: src/ssr-components/RedirectionPage.jsx:20 +msgid "You will be automatically redirected after 15s" +msgstr "" + +#: src/ssr-components/RedirectionPage.jsx:21 +#, javascript-format +msgid "Or ${ clickHere } to go back to pixelplanet" +msgstr "" + +#: src/ssr-components/RedirectionPage.jsx:25 +msgid "PixelPlanet.fun Accounts" +msgstr "" + +#: src/canvasesDesc.js:18 +msgid "Earth" +msgstr "" + +#: src/canvasesDesc.js:19 +msgid "Moon" +msgstr "" + +#: src/canvasesDesc.js:20 +msgid "3D Canvas" +msgstr "" + +#: src/canvasesDesc.js:21 +msgid "Coronavirus" +msgstr "" + +#: src/canvasesDesc.js:22 +msgid "PixelZone" +msgstr "" + +#: src/canvasesDesc.js:23 +msgid "PixelCanvas" +msgstr "" + +#: src/canvasesDesc.js:24 +msgid "1bit" +msgstr "" + +#: src/canvasesDesc.js:25 +msgid "Top10" +msgstr "" + +#: src/canvasesDesc.js:28 +msgid "Our main canvas, a huge map of the world. Place everywhere you like" +msgstr "" + +#: src/canvasesDesc.js:29 +msgid "" +"Moon canvas. Safe space for art. No flags or large text (unless part of art) " +"or art larger than 1.5k x 1.5k pixels." +msgstr "" + +#: src/canvasesDesc.js:30 +msgid "Place Voxels on a 3D canvas with others" +msgstr "" + +#: src/canvasesDesc.js:31 +msgid "Special canvas to spread awareness of SARS-CoV2" +msgstr "" + +#: src/canvasesDesc.js:32 +msgid "Mirror of PixelZone" +msgstr "" + +#: src/canvasesDesc.js:33 +msgid "Mirror of PixelCanvas" +msgstr "" + +#: src/canvasesDesc.js:34 +msgid "Black and White canvas" +msgstr "" + +#: src/canvasesDesc.js:35 +msgid "" +"A canvas for the most active players from the the previous day. Daily " +"ranking updates at 00:00 UTC." +msgstr "" diff --git a/i18n/tr.po b/i18n/tr.po new file mode 100644 index 0000000..26532f8 --- /dev/null +++ b/i18n/tr.po @@ -0,0 +1,1364 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.0.1\n" + +#: src/controls/keypress.js:41 +#, javascript-format +msgid "Switched to ${ canvasName }" +msgstr "${ canvasName } tuvaline geçildi" + +#: src/controls/keypress.js:64 +msgid "Grid ON" +msgstr "Izgara Açık" + +#: src/controls/keypress.js:65 +msgid "Grid OFF" +msgstr "Izgara Kapalı" + +#: src/controls/keypress.js:75 +msgid "Pixel Notify ON" +msgstr "Piksel Bildirimi Açık" + +#: src/controls/keypress.js:76 +msgid "Pixel Notify OFF" +msgstr "Piksel Bildirimi Kapalı" + +#: src/controls/keypress.js:81 +msgid "Muted Sound" +msgstr "Ses Kapatıldı" + +#: src/controls/keypress.js:82 +msgid "Unmuted Sound" +msgstr "Ses Açıldı" + +#: src/components/CoordinatesBox.jsx:29 src/controls/keypress.js:88 +msgid "Copied!" +msgstr "Kopyalandı!" + +#: src/controls/keypress.js:94 +msgid "Show Hidden Canvases" +msgstr "Gizli Tuvalleri Göster" + +#: src/controls/keypress.js:95 +msgid "Hide Hidden Canvases" +msgstr "Gizli Tuvalleri Sakla" + +#: src/ui/renderer.js:36 +msgid "Canvas Error" +msgstr "Tuval Hatası" + +#: src/ui/renderer.js:37 +msgid "Can't render 3D canvas, do you have WebGL2 disabled?" +msgstr "3 boyutlu tuval işlenemedi, WebGL2 devre dışı mı?" + +#: src/ui/placePixel.js:53 +msgid "Error :(" +msgstr "Hata :(" + +#: src/ui/placePixel.js:54 +msgid "Didn't get an answer from pixelplanet. Maybe try to refresh?" +msgstr "Pixelplanet'den yanıt alınamadı. Sayfayı yenilemeyi deneyebilirsin?" + +#: src/ui/placePixel.js:56 src/ui/placePixel.js:237 src/ui/placePixel.js:260 +msgid "OK" +msgstr "Tamam" + +#: src/ui/placePixel.js:197 +msgid "Invalid Canvas" +msgstr "Geçersiz Tuval" + +#: src/ui/placePixel.js:198 +msgid "This canvas doesn't exist" +msgstr "Böyle bir tuval yok" + +#: src/ui/placePixel.js:201 src/ui/placePixel.js:205 src/ui/placePixel.js:209 +msgid "Invalid Coordinates" +msgstr "Geçersiz Koordinatlar" + +#: src/ui/placePixel.js:202 +msgid "x out of bounds" +msgstr "x sınırların dışında" + +#: src/ui/placePixel.js:206 +msgid "y out of bounds" +msgstr "y sınıralrın dışında" + +#: src/ui/placePixel.js:210 +msgid "z out of bounds" +msgstr "z sınırların dışında" + +#: src/ui/placePixel.js:213 +msgid "Wrong Color" +msgstr "Yanlış Renk" + +#: src/ui/placePixel.js:214 +msgid "Invalid color selected" +msgstr "Geçersiz renk seçildi" + +#: src/ui/placePixel.js:217 +msgid "Just for registered Users" +msgstr "Sadece giriş yapmış üyeler için" + +#: src/ui/placePixel.js:218 +msgid "You have to be logged in to place on this canvas" +msgstr "Bu tuvalde piksel atabilmek için giriş yapman gerekiyor" + +#: src/ui/placePixel.js:221 +msgid "Place more :)" +msgstr "Biraz daha piksel at :)" + +#: src/ui/placePixel.js:223 +msgid "You can not access this canvas yet. You need to place more pixels" +msgstr "Henüz bu canvasa erişimin " + +#: src/ui/placePixel.js:226 +msgid "Pixel protected!" +msgstr "Piksel korunuyor!" + +#: src/ui/placePixel.js:235 +msgid "Please prove that you are human" +msgstr "Lütfen insan olduğunu kanıtla" + +#: src/ui/placePixel.js:242 +msgid "No Proxies Allowed :(" +msgstr "" + +#: src/ui/placePixel.js:243 +msgid "You are using a Proxy." +msgstr "Proxy kullanıyorsun." + +#: src/ui/placePixel.js:246 +msgid "Not allowed" +msgstr "İzin yok" + +#: src/ui/placePixel.js:247 +msgid "Just the Top10 of yesterday can place here" +msgstr "Sadece dünün en iyi 10 oyuncusu buraya piksel atabilir" + +#: src/ui/placePixel.js:250 +msgid "Weird" +msgstr "Garip" + +#: src/ui/placePixel.js:251 +msgid "Couldn't set Pixel" +msgstr "Piksel ayarlanamadı" + +#: src/ui/placePixel.js:257 +#, javascript-format +msgid "Error ${ retCode }" +msgstr "Hata ${ retCode }" + +#: src/actions/index.js:628 +msgid "Register New Account" +msgstr "Yeni Hesap Oluştur" + +#: src/actions/index.js:635 +msgid "Restore my Password" +msgstr "Şifremi Yenile" + +#: src/actions/index.js:642 +msgid "Welcome to PixelPlanet.fun" +msgstr "PixelPlanet.fun'a Hoş Geldin" + +#: src/actions/index.js:648 +msgid "Look at past Canvases" +msgstr "Geçmiş tuvallere bak" + +#: src/components/Converter.jsx:559 src/components/CoordinatesBox.jsx:32 +msgid "Copy to Clipboard" +msgstr "Panoya kopyala" + +#: src/components/OnlineBox.jsx:41 +msgid "Online Users on Canvas" +msgstr "Tuvaldeki çevrimiçi oyuncular" + +#: src/components/OnlineBox.jsx:48 +msgid "Total Online Users" +msgstr "Toplam Çevrimiçi Oyuncu" + +#: src/components/OnlineBox.jsx:56 +msgid "Pixels placed" +msgstr "Atılan Pikseller" + +#: src/components/ModalRoot.jsx:69 src/components/Modtools.jsx:318 +#: src/components/Window.jsx:138 +#: src/components/contextmenus/ChannelContextMenu.jsx:67 +msgid "Close" +msgstr "Kapat" + +#: src/components/ModalRoot.jsx:78 +msgid "Restore" +msgstr "Yenile" + +#: src/actions/fetch.js:39 +msgid "You made too many requests" +msgstr "Çok fazla istek gönderdin" + +#: src/actions/fetch.js:43 +#, javascript-format +msgid "try again after ${ ti }min" +msgstr "${ ti }min sonra tekrar deneyin" + +#: src/actions/fetch.js:54 +msgid "Connection error ${ code } :(" +msgstr "Bağlantı hatası ${ code } :(" + +#: src/actions/fetch.js:79 src/actions/fetch.js:98 +msgid "Could not connect to server, please try again later :(" +msgstr "Sunucuya bağlanılamadı, lütfen tekrar deneyin :(" + +#: src/actions/fetch.js:120 src/actions/fetch.js:139 src/actions/fetch.js:158 +#: src/actions/fetch.js:177 +msgid "Unknown Error" +msgstr "Bilinmeyen Hata" + +#: src/actions/fetch.js:187 +msgid "Server answered with gibberish :(" +msgstr "Sunucu anlamsız cevap verdi :(" + +#: src/components/buttons/ChatButton.jsx:92 +msgid "Close Chat" +msgstr "Sohbeti Kapat" + +#: src/components/buttons/ChatButton.jsx:92 +msgid "Open Chat" +msgstr "Sohbeti Aç" + +#: src/components/buttons/ExpandMenuButton.jsx:23 +msgid "Close Menu" +msgstr "Menüyü Kapat" + +#: src/components/buttons/ExpandMenuButton.jsx:23 +msgid "Open Menu" +msgstr "Menüyü Aç" + +#: src/components/buttons/CanvasSwitchButton.jsx:22 +#: src/components/windows/index.js:19 +msgid "Canvas Selection" +msgstr "Tuval Seçimi" + +#: src/components/HistorySelect.jsx:144 +msgid "Loading" +msgstr "Yükleniyor" + +#: src/components/HistorySelect.jsx:145 +msgid "Select Date above" +msgstr "Yukarıya Tarih Giriniz" + +#: src/components/Window.jsx:117 +msgid "Clone" +msgstr "Klon" + +#: src/components/Window.jsx:124 +msgid "Move" +msgstr "Taşı" + +#: src/components/Window.jsx:131 +msgid "Maximize" +msgstr "Maksimize Et" + +#: src/components/Window.jsx:145 +msgid "Resize" +msgstr "Yeniden Boyutlandır" + +#: src/components/buttons/HelpButton.jsx:23 src/components/windows/index.js:13 +msgid "Help" +msgstr "Yardım" + +#: src/components/buttons/SettingsButton.jsx:23 +#: src/components/windows/index.js:14 +msgid "Settings" +msgstr "Ayarlar" + +#: src/components/buttons/LogInButton.jsx:23 src/components/windows/index.js:15 +msgid "User Area" +msgstr "Kullanıcı Alanı" + +#: src/components/buttons/DownloadButton.jsx:37 +msgid "Make Screenshot" +msgstr "Ekran Görüntüsü Al" + +#: src/components/buttons/GlobeButton.jsx:35 +msgid "Globe View" +msgstr "Küresel Görünüm" + +#: src/components/buttons/PalselButton.jsx:31 +msgid "Close Palette" +msgstr "Paleti Kapat" + +#: src/components/buttons/PalselButton.jsx:31 +msgid "Open Palette" +msgstr "Paleti Aç" + +#: src/components/contextmenus/UserContextMenu.jsx:55 +msgid "Ping" +msgstr "Ping" + +#: src/components/contextmenus/UserContextMenu.jsx:80 +msgid "DM" +msgstr "DM" + +#: src/components/contextmenus/UserContextMenu.jsx:90 +msgid "Block" +msgstr "Engelle" + +#: src/components/contextmenus/ChannelContextMenu.jsx:55 +msgid "Mute" +msgstr "Sustur" + +#: src/components/windows/index.js:16 +msgid "Registration" +msgstr "Üyelik" + +#: src/components/windows/index.js:17 +msgid "Forgot Password" +msgstr "Şifreyi Unut" + +#: src/components/windows/index.js:18 +msgid "Chat" +msgstr "Sohbet" + +#: src/components/windows/index.js:20 +msgid "Canvas Archive" +msgstr "Tuval Arşivi" + +#: src/components/Captcha.jsx:77 src/components/ChangeMail.jsx:72 +#: src/components/ChangeName.jsx:58 src/components/ChangePassword.jsx:80 +#: src/components/DeleteAccount.jsx:55 src/components/GlobalCaptcha.jsx:38 +#: src/components/LogInForm.jsx:69 src/components/windows/ForgotPassword.jsx:75 +#: src/components/windows/Register.jsx:87 +msgid "Error" +msgstr "Hata" + +#: src/components/ChangeMail.jsx:93 src/components/ChangeName.jsx:70 +#: src/components/ChangePassword.jsx:116 src/components/DeleteAccount.jsx:68 +#: src/components/GlobalCaptcha.jsx:48 +#: src/components/windows/ForgotPassword.jsx:88 +#: src/components/windows/Register.jsx:131 +msgid "Cancel" +msgstr "İptal Et" + +#: src/components/GlobalCaptcha.jsx:55 +msgid "Send" +msgstr "Gönder" + +#: src/components/windows/Help.jsx:36 +msgid "your IP" +msgstr "IP adresin" + +#: src/components/windows/Help.jsx:42 +msgid "Place color pixels on a large canvas with other players online!" +msgstr "Diğer oyuncular ile beraber büyük tuvallerde renkli pikseller atın!" + +#: src/components/windows/Help.jsx:43 +msgid "" +"Our main canvas is a huge worldmap, you can place wherever you like, but you " +"will have to wait a specific Cooldown between pixels. You can check out the " +"cooldown and requirements on the Canvas Selection menu (globe button on " +"top). Some canvases have a different cooldown for replacing a user-set " +"pixels than placing on a unset pixel. i.e. 4s/7s means 4s on fresh pixels " +"and 7s on already set pixels." +msgstr "" +"Ana tuvalimiz kocaman bir dünya haritası, istediğiniz yere piksel " +"atabilirsiniz, ama belirli bir bekleme süresini beklemeniz gerekiyor. " +"Bekleme süresini ve gereklilikleri Tuval Seçim menüsünde kontrol " +"edebilirsiniz. (yukarıdaki Küresel Görünüm butonu). Bazı tuvallerde bekleme " +"süresi daha önce piksel atılmış piksellerde daha önce piksel atılmamış " +"piksellere göre farkı olabilir. Örneğin 4s/7s daha önce piksel atılmamış " +"piksellere 4, daha önce piksel atılmış piksellere 7 saniye demektir." + +#: src/components/windows/Help.jsx:47 +msgid "" +"Higher zoomlevels take some time to update, the 3D globe gets updated at " +"least once per day." +msgstr "" +"Yüksek uzaklıkların güncellenmesi uzun sürebilir, 3 boyutlu görünüm günde " +"bir kere güncellenir." + +#: src/components/windows/Help.jsx:48 +msgid "Have fun!" +msgstr "İyi eğlenceler!" + +#: src/components/windows/Help.jsx:50 +msgid "recommended" +msgstr "tavsiye edilir" + +#: src/components/windows/Help.jsx:51 +msgid "Source on " +msgstr "Kaynak yeri" + +#: src/components/windows/Help.jsx:52 +msgid "Map Data" +msgstr "Harita Datası" + +#: src/components/windows/Help.jsx:53 +msgid "" +"The bare map data that we use, together with converted OpenStreetMap tiles " +"for orientation, can be downloaded from mega.nz here: " +msgstr "" +"Kullandığımız sade harita datası OpenStreetMap fayansları ile oryantasyon " +"için dönüştürüldü, mega.nz ile indirilebilir:" + +#: src/components/windows/Help.jsx:55 +msgid "Detected as Proxy?" +msgstr "Proxy olarak mı belirlendin?" + +#: src/components/windows/Help.jsx:57 +#, javascript-format +msgid "" +"If you got detected as proxy, but you are none, please go to our " +"${ guildedLink } or send us an e-mail with ${ getIPLink } to ${ mailLink }. " +"Do not post your IP anywhere else. We are sorry for the inconvenience." +msgstr "" +"Proxy olarak belirlendiysen ve değilsen lütfen ${ guildedLink }'imize gir " +"veya bize ${ getIPLink } ile ${ mailLink }'a e-posta gönder. IP adresini " +"hiçbir yerde paylaşma. Rahatsızlıktan dolayı üzgünüz." + +#: src/components/windows/Help.jsx:59 src/components/windows/Help.jsx:76 +msgid "Controls" +msgstr "Kontroller" + +#: src/components/windows/Help.jsx:61 +msgid "Click a color in palette to select it" +msgstr "Paletteki bir rengi seçmek için renge tıkla." + +#: src/components/windows/Help.jsx:62 +#, javascript-format +msgid "Press ${ bindG } to toggle grid" +msgstr "Izgara görünümüne geçmek için ${ bindG } tuşuna basın" + +#: src/components/windows/Help.jsx:63 +msgid "Press ${ bindX } to toggle showing of pixel activity" +msgstr "" +"Diğer kullanıcıların attığı pikselleri görebilmek için ${ bindX } tuşuna " +"basın" + +#: src/components/windows/Help.jsx:64 +#, javascript-format +msgid "Press ${ bindH } to toggle historical view" +msgstr "Tuvalin geçmiş hallerini görüntülemek için ${ bindH } tuşuna basın" + +#: src/components/windows/Help.jsx:65 +msgid "Press ${ bindR } to copy coordinates" +msgstr "Koordinatları kopyalamak için ${ bindR } tuşuna basın" + +#: src/components/windows/Help.jsx:66 +#, javascript-format +msgid "Press ${ bindQ } or ${ bindE } to zoom" +msgstr "" +"${ bindQ } veya ${ bindE } tuşuna basarak ekranı uzaklaştır veya yakınlaştır" + +#: src/components/windows/Help.jsx:67 src/components/windows/Help.jsx:78 +#, javascript-format +msgid "Press ${ bindW }, ${ bindA }, ${ bindS }, ${ bindD } to move" +msgstr "${ bindW }, ${ bindA }, ${ bindS }, ${ bindD } tuşları ile gezinin" + +#: src/components/windows/Help.jsx:68 src/components/windows/Help.jsx:79 +#, javascript-format +msgid "" +"Press ${ bindAUp }, ${ bindALeft }, ${ bindADown }, ${ bindARight } to move" +msgstr "" +"${ bindAUp }, ${ bindALeft }, ${ bindADown }, ${ bindARight } tuşları ile " +"gezinin" + +#: src/components/windows/Help.jsx:69 +msgid "Drag ${ mouseSymbol } mouse or ${ touchSymbol } pan to move" +msgstr "" +"Farenizi sürükleyerek ${ mouseSymbol } veya ${ touchSymbol } basılı tutup " +"hareket ederek gezinin" + +#: src/components/windows/Help.jsx:70 +#, javascript-format +msgid "Scroll ${ mouseSymbol } mouse wheel or ${ touchSymbol } pinch to zoom" +msgstr "" +"Farenizin ${ mouseSymbol } tekerleğini döndürerek veya ${ touchSymbol } " +"parmaklarınızı genişleterek veya daraltarak yaklaştırın." + +#: src/components/windows/Help.jsx:71 +msgid "Hold left ${ bindShift } for placing while moving mouse" +msgstr "" +"Sol ${ bindShift } tuşuna basılı tutarken farenizi hareket ettirerek piksel " +"atın" + +#: src/components/windows/Help.jsx:72 +#, javascript-format +msgid "" +"Hold right ${ bindShift } for placing while moving mouse according to " +"historical view" +msgstr "" +"Sağ ${ bindShift } tuşuna basılı tutarken farenizi hareket ettirerek geçmiş " +"görünümüne göre piksel atın" + +#: src/components/windows/Help.jsx:73 src/components/windows/Help.jsx:84 +#, javascript-format +msgid "${ mouseSymbol } Left click or ${ touchSymbol } tap to place a pixel" +msgstr "" +"${ mouseSymbol } Farenizin sol tuşu ile veya ${ touchSymbol } ekrana " +"tıklayarak piksel atın" + +#: src/components/windows/Help.jsx:74 src/components/windows/Help.jsx:86 +msgid "" +"Click ${ mouseSymbol } middle mouse button or ${ touchSymbol } long-tap to " +"select current hovering color" +msgstr "" +"Farenizin tekerleğine ${ mouseSymbol } tıklayarak veya ${ touchSymbol } " +"ekrana basılı tutarak orada bulunan pikselin rengini seçin" + +#: src/components/windows/Help.jsx:80 +msgid "Press ${ bindE } and ${ bindC } to fly up and down" +msgstr "${ bindE } veya ${ bindC }'ye tıklayarak yükselin ve alçalın" + +#: src/components/windows/Help.jsx:81 +#, javascript-format +msgid "${ mouseSymbol } Hold left mouse button and drag mouse to rotate" +msgstr "" +"${ mouseSymbol } Farenizin sol tuşuna basılı tutup farenizi kaydırarak " +"gezinin" + +#: src/components/windows/Help.jsx:82 +#, javascript-format +msgid "" +"${ mouseSymbol } Scroll mouse wheel or hold ${ mouseSymbol } middle mouse " +"button and drag to zoom" +msgstr "" +"${ mouseSymbol } Fare tekerleğini döndürerek ya da ${ mouseSymbol } orta " +"fare tuşuna basıp hareket ettirerek uzaklaştırın veya yakınlaştırın" + +#: src/components/windows/Help.jsx:83 +msgid "${ mouseSymbol } Right click and drag mouse to pan" +msgstr "${ mouseSymbol } Sağ tuşuna basılı tutup farenizi kaydırarak kaydırın" + +#: src/components/windows/Help.jsx:85 +#, javascript-format +msgid "" +"${ mouseSymbol } Right click or ${ touchSymbol } double-tap to remove a pixel" +msgstr "" +"${ mouseSymbol } Farenizin sağ tuşuyla veya ${ touchSymbol } çift tıklayarak " +"bir pikseli kaldırın" + +#: src/components/windows/Help.jsx:90 +msgid "" +"We thanks those artists very much, they offered their palettes to the public " +"on" +msgstr "" +"Buradaki sanatçılara çok teşekkür ederiz, paletlerinin kamuya açık olmasını " +"talep ettiler" + +#: src/components/windows/Help.jsx:93 +#, javascript-format +msgid "Credit for the Palette of the Moon goes to ${ starhouseLink }." +msgstr "Ay paletinin yapımı ${ starhouseLink } kişisine aittir." + +#: src/components/windows/Help.jsx:96 +msgid "Credit for the Palette of the Top10 canvas goes to ${ vinikLink }." +msgstr "Top10 tuvalinin paletinin yapımı ${ vinikLink } kişisine aittir." + +#: src/components/windows/Settings.jsx:133 +msgid "Show Grid" +msgstr "Izgarayı Göster" + +#: src/components/windows/Settings.jsx:138 +msgid "Turn on grid to highlight pixel borders." +msgstr "Piksel sınırlarını görmek için ızgarayı aç" + +#: src/components/windows/Settings.jsx:141 +msgid "Show Pixel Activity" +msgstr "Piksel Aktifliğini Gör" + +#: src/components/windows/Settings.jsx:146 +msgid "Show circles where pixels are placed." +msgstr "Piksel atılan yerlerde daireler yayılır." + +#: src/components/windows/Settings.jsx:149 +msgid "Disable Game Sounds" +msgstr "Oyun Seslerini Kapat" + +#: src/components/windows/Settings.jsx:155 +msgid "All sound effects will be disabled." +msgstr "Tüm ses efektleri devre dışı bırakılacaktır." + +#: src/components/windows/Settings.jsx:159 +msgid "" +"Your Browser doesn't allow us to use AudioContext to play sounds. Do you " +"have some privacy feature blocking us?" +msgstr "" +"Tarayıcınız ses oynatmamız için AudioContext'i kullanmamıza izin vermiyor. " +"Bizi engelleyen bir gizlilik özelliğiniz mi var?" + +#: src/components/windows/Settings.jsx:165 +msgid "Enable chat notifications" +msgstr "Sohbet bildirimlerini aç" + +#: src/components/windows/Settings.jsx:169 +msgid "Play a sound when new chat messages arrive" +msgstr "Yeni mesaj geldiği zaman bir ses çalar" + +#: src/components/windows/Settings.jsx:172 +msgid "Auto Zoom In" +msgstr "Otomatik Yakınlaştırma" + +#: src/components/windows/Settings.jsx:177 +msgid "" +"Zoom in instead of placing a pixel when you tap the canvas and your zoom is " +"small." +msgstr "" +"Uzaklaşmışken tuvale tıkladığınız zaman piksel atmak yerine yakınlaştırır" + +#: src/components/windows/Settings.jsx:180 +msgid "Compact Palette" +msgstr "Sıkı Palet" + +#: src/components/windows/Settings.jsx:185 +msgid "Display Palette in a compact form that takes less screen space." +msgstr "Paleti ekranda daha küçük alan kullanması için sıkılaştırır." + +#: src/components/windows/Settings.jsx:188 +msgid "Potato Mode" +msgstr "Patates Modu" + +#: src/components/windows/Settings.jsx:192 +msgid "For when you are playing on a potato." +msgstr "Eğer patates ile oynuyorsanız seçin" + +#: src/components/Converter.jsx:374 src/components/windows/Settings.jsx:195 +msgid "Light Grid" +msgstr "Beyaz Izgara" + +#: src/components/windows/Settings.jsx:199 +msgid "Show Grid in white instead of black." +msgstr "Izgarayı siyah yerine beyaz olarak gösterir" + +#: src/components/windows/Settings.jsx:203 +msgid "Historical View" +msgstr "Geçmiş Görünümü" + +#: src/components/windows/Settings.jsx:208 +msgid "Check out past versions of the canvas." +msgstr "Tuvalin geçmişteki görünümlerine bak" + +#: src/components/windows/Settings.jsx:213 +msgid "Themes" +msgstr "Temalar" + +#: src/components/windows/Settings.jsx:218 +msgid "How pixelplanet should look like." +msgstr "Pixelplanet'in nasıl görüneceğini ayarlar." + +#: src/components/windows/Settings.jsx:225 +msgid "Select Language" +msgstr "Dil Seç" + +#: src/components/windows/UserArea.jsx:27 +msgid "Profile" +msgstr "Profil" + +#: src/components/windows/UserArea.jsx:30 +msgid "Ranking" +msgstr "Sıralama" + +#: src/components/windows/UserArea.jsx:33 +msgid "Converter" +msgstr "Dönüştürücü" + +#: src/components/windows/UserArea.jsx:39 +msgid "Modtools" +msgstr "Mod Araçları" + +#: src/components/windows/UserArea.jsx:40 +msgid "Loading..." +msgstr "Yükleniyor..." + +#: src/components/windows/UserArea.jsx:47 +msgid "Consider joining us on Guilded:" +msgstr "Eğer Guilded üzerinden bize katılmak isterseniz:" + +#: src/components/windows/Register.jsx:85 +msgid "Register new account here" +msgstr "Yeni Hesap Oluşturun" + +#: src/components/windows/Register.jsx:90 +#: src/components/windows/Register.jsx:96 +msgid "Name" +msgstr "Kullanıcı Adı" + +#: src/components/windows/ForgotPassword.jsx:82 +#: src/components/windows/Register.jsx:98 +#: src/components/windows/Register.jsx:104 +msgid "Email" +msgstr "E-Posta Adresi" + +#: src/components/ChangeMail.jsx:80 src/components/DeleteAccount.jsx:62 +#: src/components/LogInForm.jsx:83 src/components/windows/Register.jsx:106 +#: src/components/windows/Register.jsx:112 +msgid "Password" +msgstr "Şifre" + +#: src/components/windows/Register.jsx:114 +#: src/components/windows/Register.jsx:120 +msgid "Confirm Password" +msgstr "Şifreyi Onayla" + +#: src/components/windows/Register.jsx:122 +msgid "Captcha" +msgstr "Captcha" + +#: src/components/Modtools.jsx:405 src/components/Modtools.jsx:486 +#: src/components/Modtools.jsx:561 src/components/Modtools.jsx:653 +#: src/components/Modtools.jsx:715 src/components/Modtools.jsx:798 +#: src/components/windows/ForgotPassword.jsx:86 +#: src/components/windows/Register.jsx:125 +msgid "Submit" +msgstr "Onayla" + +#: src/components/windows/CanvasSelect.jsx:33 +msgid "" +"Select the canvas you want to use. Every canvas is unique and has different " +"palettes, cooldown and requirements. Archive of closed canvases can be " +"accessed here:" +msgstr "" +"Kullanmak istediğin tuvali seç. Her tuval özeldir ve değişik paletleri, " +"bekleme süreleri ve gereklilikleri vardır. Arşivlenmiş tuvallerin erişimi " +"buradan sağlanmaktadır:" + +#: src/components/windows/CanvasSelect.jsx:41 +msgid "Archive" +msgstr "Arşiv" + +#: src/components/windows/Archive.jsx:20 +msgid "" +"While we tend to not delete canvases, some canvases are started for fun or " +"as a request by users who currently like a meme. Those canvases can get " +"boring after a while and after weeks of no major change and if they really " +"aren't worth being kept active, we decide to remove them." +msgstr "" +"Tuvalleri silmeyi tercih etmeyiz, bazı tuvaller eğlence amaçlı başlar ve " +"kullanıcılar tarafından bir meme gibi istenilir. Bu tuvaller bir süre sonra " +"sıkıcı hale gelir ve haftalar boyunca büyük değişikliklere uğramazsa ve " +"aktif tutmaya değmez ise onları kaldırmaya karar veririz." + +#: src/components/windows/Archive.jsx:22 +msgid "" +"Here we collect those canvases to archive them in a proper way (which is " +"currently just one)." +msgstr "" +"İşte burada bu tuvalleri düzgün bir biçimde arşivleriz (şu anlık sadece bir " +"tane)." + +#: src/components/windows/Archive.jsx:24 +msgid "Political Compass Canvas" +msgstr "Siyasi Pusula Tuvali" + +#: src/components/windows/Archive.jsx:31 +msgid "" +"This canvas got requested during a time of political conflicts on the main " +"Earth canvas. It was a 1024x1024 representation of the political compass " +"with a 5s cooldown and 60s stacking. It got launched on May 11th and " +"remained active for months till it got shut down on November 30th." +msgstr "" +"Bu tuval Dünya tuvalinde siyasi tartışmaların çok yaşandığı zamanda talep " +"edildi. Siyasi pusulanın 1024x1024 bir temsiliydi ve 60 saniye boyunca " +"biriktirilebilir 5 saniyelerden bekleme süresi oluşuyordu. 11 Mayısta " +"başladı ve 30 Kasım'a kadar aylarca aktif olarak kaldı." + +#: src/components/windows/Archive.jsx:32 +msgid "" +"We decided to archive it as a timelapse with lossless encoded webm. Taking a " +"screenshot from the timelapse results in a perfect 1:1 representation of how " +"the canvas was at that time." +msgstr "" +"Bunu encode edilmiş kayıpsız webm halinde hızlandırılmış olarak arşivlemeye " +"karar verdik. Bundan bir ekran görüntüsü almak size tuvalin o anki halinin " +"muhteşem 1:1 temsilini verir." + +#: src/components/windows/Chat.jsx:133 +msgid "Channel settings" +msgstr "Kanal ayarları" + +#: src/components/windows/Chat.jsx:150 +msgid "Start chatting here" +msgstr "Buradan sohbete katılın" + +#: src/components/windows/Chat.jsx:192 +msgid "Chat here" +msgstr "Burada sohbet edilin" + +#: src/components/windows/Chat.jsx:214 +msgid "You must be logged in to chat" +msgstr "Sohbete katılmak için giriş yapmalısınız" + +#: src/components/windows/ForgotPassword.jsx:60 +msgid "Sent you a mail with instructions to reset your password." +msgstr "Şifrenizi değiştirmeniz için talimatlar içeren bir e-posta gönderildi" + +#: src/components/windows/ForgotPassword.jsx:71 +msgid "Enter your mail address and we will send you a new password:" +msgstr "E-Posta adresinizi giriniz, ardından size yeni bir şifre göndereceğiz" + +#: src/components/Captcha.jsx:50 src/components/Captcha.jsx:105 +msgid "Could not load captcha" +msgstr "Captcha yüklenilemedi" + +#: src/components/Captcha.jsx:68 +msgid "Type the characters from the following image:" +msgstr "Resimdeki harfleri yazınız" + +#: src/components/Captcha.jsx:71 +msgid "Tip: Not case-sensitive; I and l are the same" +msgstr "Tavsiye: Büyük/küçük harfe duyarlı değil. l ve I aynı" + +#: src/components/Captcha.jsx:114 +msgid "Load Captcha" +msgstr "Captcha Yükle" + +#: src/components/Captcha.jsx:119 +msgid "Click to Load Captcha" +msgstr "Captcha Yüklemek İçin Tıklayınız" + +#: src/components/Captcha.jsx:124 +msgid "Can't read? Reload:" +msgstr "Okuyamıyor musun? Yenile:" + +#: src/components/Captcha.jsx:128 +msgid "Reload" +msgstr "Yenile" + +#: src/components/Captcha.jsx:138 +msgid "Enter Characters" +msgstr "Harfleri Gir" + +#: src/utils/validation.js:18 +msgid "Email can't be empty." +msgstr "E-Posta boş olamaz" + +#: src/utils/validation.js:19 +msgid "Email should be at least 5 characters long." +msgstr "E-Posta en az 5 harften oluşmalıdır" + +#: src/utils/validation.js:20 +msgid "Email can't be longer than 40 characters." +msgstr "E-Posta 40 harften uzun olamaz" + +#: src/utils/validation.js:21 +msgid "Email should at least contain a dot" +msgstr "E-Posta içerisinde en az bir nokta bulundurur" + +#: src/utils/validation.js:23 +msgid "Email should contain a @" +msgstr "E-Posta içerisinde @ bulundurur" + +#: src/utils/validation.js:30 +msgid "Name can't be empty." +msgstr "Kullanıcı adı boş bırakılamaz" + +#: src/utils/validation.js:31 +msgid "Name must be at least 2 characters long" +msgstr "Kullanıcı adı en az 2 harften oluşmalıdır" + +#: src/utils/validation.js:32 +msgid "Name must be shorter than 26 characters" +msgstr "Kullanıcı adı en fazla 26 harften oluşmak zorundadır" + +#: src/utils/validation.js:39 +msgid "Name contains invalid character like @, /, \\ or #" +msgstr "Kullanıcı adı @, /, \\ veya # gibi geçersiz bir karakter kullanıyor" + +#: src/utils/validation.js:54 +msgid "No password given." +msgstr "Şifre girilmedi" + +#: src/utils/validation.js:57 +msgid "Password must be at least 6 characters long." +msgstr "Şifre en az 6 harften oluşmalıdır" + +#: src/utils/validation.js:60 +msgid "Password must be shorter than 60 characters." +msgstr "Şifreler 60 harften uzun olamaz" + +#: src/components/ChangeMail.jsx:91 src/components/ChangeName.jsx:68 +#: src/components/ChangePassword.jsx:110 src/components/LanguageSelect.jsx:73 +msgid "Save" +msgstr "Kaydet" + +#: src/components/LogInArea.jsx:21 +msgid "Login to access more features and stats." +msgstr "Daha fazla özellik ve istatistik için giriş yapın" + +#: src/components/LogInArea.jsx:23 +msgid "Login with Name or Mail:" +msgstr "Kullanıcı adı veya E-Posta ile giriş yap" + +#: src/components/LogInArea.jsx:30 +msgid "I forgot my Password." +msgstr "Şifremi Unuttum" + +#: src/components/LogInArea.jsx:31 +msgid "or login with:" +msgstr "veya bunlar ile giriş yap" + +#: src/components/LogInArea.jsx:72 +msgid "or register here:" +msgstr "veya buradan kayıt ol" + +#: src/components/LogInArea.jsx:79 +msgid "Register" +msgstr "Kayıt Ol" + +#: src/components/UserAreaContent.jsx:63 +msgid "Todays Placed Pixels" +msgstr "Bugün Atılan Pikseller" + +#: src/components/UserAreaContent.jsx:67 +msgid "Daily Rank" +msgstr "Günlük Sıralama" + +#: src/components/UserAreaContent.jsx:72 +msgid "Placed Pixels" +msgstr "Atılan Pikseller" + +#: src/components/UserAreaContent.jsx:76 +msgid "Total Rank" +msgstr "Toplam Sıralama" + +#: src/components/UserAreaContent.jsx:81 +#, javascript-format +msgid "Your name is: ${ name }" +msgstr "Kullanıcı adın: ${ name }" + +#: src/components/UserAreaContent.jsx:87 +msgid "Log out" +msgstr "Çıkış Yap" + +#: src/components/UserAreaContent.jsx:93 +msgid "Change Username" +msgstr "Kullanıcı Adı Değiştir" + +#: src/components/UserAreaContent.jsx:102 +msgid "Change Mail" +msgstr "E-Posta Adresi Değiştir" + +#: src/components/UserAreaContent.jsx:110 +msgid "Change Password" +msgstr "Şifre Değiştir" + +#: src/components/UserAreaContent.jsx:116 +msgid "Delete Account" +msgstr "Hesabı Sil" + +#: src/components/UserAreaContent.jsx:123 +msgid "Social Settings" +msgstr "Sosyal Ayarlar" + +#: src/components/Rankings.jsx:28 +msgid "Total" +msgstr "Toplam" + +#: src/components/Rankings.jsx:36 +msgid "Daily" +msgstr "Günlük" + +#: src/components/Rankings.jsx:40 +msgid "Ranking updates every 5 min. Daily rankings get reset at midnight UTC." +msgstr "" +"Sıralama her 5 dakikada bir güncellenir. Günlük sıralama UTC gece yarısında " +"sıfırlanır." + +#: src/components/Modtools.jsx:246 +msgid "Build image on canvas." +msgstr "Tuvalde resim yarat." + +#: src/components/Modtools.jsx:249 +msgid "Build image and set it to protected." +msgstr "Resim yarat ve koruma altına al" + +#: src/components/Modtools.jsx:252 +msgid "Build image, but reset cooldown to unset-pixel cd." +msgstr "Resim yarat, ama piksel sürelerini sıfırla" + +#: src/components/Modtools.jsx:262 +msgid "Clean spare pixels that are surrounded by unset pixels" +msgstr "Dokunulmamış pikseller ile kaplı olan spare pikselleri temizle." + +#: src/components/Modtools.jsx:266 +msgid "" +"Clean spare pixels that are surrounded by unset pixels and up to 1 other set " +"pixels" +msgstr "" +"Dokunulmamış pikseller ile kaplı olan spare pikselleri temizle ve bire kadar " +"pikselleri ayarla" + +#: src/components/Modtools.jsx:270 +msgid "" +"Clean spare pixels that are surrounded by a single other color or unset " +"pixels (VERY AGGRESSIVE ON CANVASES THAT ALLOW UNSET PIXELS (where there are " +"two cooldowns)!)" +msgstr "" +"Farklı bir renkteki veya dokunulmamış pikseller ile kaplı olan spare " +"pikselleri temizle (FAZLA AGRESİF TUVALLERDE DOKUNULLMAMIŞ PİKSELLERE İZİN " +"VERİR (iki tane bekleme süresi olanlardan)!)" + +#: src/components/Modtools.jsx:292 +msgid "Status: Not running" +msgstr "Statüler: Çalışmıyor" + +#: src/components/Modtools.jsx:347 +msgid "Image Upload" +msgstr "Resim Yükle" + +#: src/components/Modtools.jsx:348 +msgid "Upload images to canvas" +msgstr "Tuvale Resim Yükle" + +#: src/components/Modtools.jsx:350 +msgid "File" +msgstr "Dosya" + +#: src/components/Modtools.jsx:370 +msgid "Coordinates in X_Y format:" +msgstr "X_Y Formatında Koordinatlar" + +#: src/components/Modtools.jsx:410 +msgid "Pixel Protection" +msgstr "Piksel Koruması" + +#: src/components/Modtools.jsx:412 +msgid "" +"Set protection of areas (if you need finer grained control, " +"use protect with image upload and alpha layers)" +msgstr "" +"Koruma alanlarını ayarla (eğer daha iyi tanelenmiş kontrole " +"ihtiyacın varsa, resim yükleme ve alfa katmanlarla koruma kullan)" + +#: src/components/Modtools.jsx:432 src/components/Modtools.jsx:507 +#: src/components/Modtools.jsx:591 +msgid "Top-left corner" +msgstr "Sol üst köşe" + +#: src/components/Modtools.jsx:450 src/components/Modtools.jsx:525 +#: src/components/Modtools.jsx:609 +msgid "Bottom-right corner" +msgstr "Sağ alt köşe" + +#: src/components/Modtools.jsx:492 +msgid "Rollback to Date" +msgstr "Tarihe rollbackle" + +#: src/components/Modtools.jsx:494 +msgid "Rollback an area of the canvas to a set date (00:00 UTC)" +msgstr "Alanı belirli bir tuval tarihine rollbackle (00:00 UTC)" + +#: src/components/Modtools.jsx:567 +msgid "Canvas Cleaner" +msgstr "Tuval Temizleyicisi" + +#: src/components/Modtools.jsx:569 +msgid "Apply a filter to clean trash in large canvas areas." +msgstr "Büyük tuval alanlarındaki çöpleri temizlemek için filtre uygula" + +#: src/components/Modtools.jsx:671 +msgid "Stop Cleaner" +msgstr "Temizleyiciyi Durdur" + +#: src/components/Modtools.jsx:678 +msgid "IP Actions" +msgstr "IP Hareketleri" + +#: src/components/Modtools.jsx:680 +msgid "Do stuff with IPs (one IP per line)" +msgstr "IP'ler ile bir şeyler yap (her satıra bir IP)" + +#: src/components/Modtools.jsx:719 +msgid "Manage Moderators" +msgstr "Moderatörleri Düzenle" + +#: src/components/Modtools.jsx:721 +msgid "Remove Moderator" +msgstr "Moderatörü Kaldır" + +#: src/components/Modtools.jsx:753 +msgid "There are no mods" +msgstr "Moderatör yok" + +#: src/components/Modtools.jsx:758 +msgid "Assign new Mod" +msgstr "Yeni Bir Moderatör Al" + +#: src/components/Modtools.jsx:761 +msgid "Enter UserName of new Mod" +msgstr "Yeni Moderatörün İsmini Gir" + +#: src/components/Modtools.jsx:770 +msgid "User Name" +msgstr "Kullanıcı Adı" + +#: src/components/Converter.jsx:190 +msgid "Choose Canvas" +msgstr "Tuval Seç" + +#: src/components/Converter.jsx:216 +msgid "Palette Download" +msgstr "Palet İndir" + +#: src/components/Converter.jsx:218 +#, javascript-format +msgid "Palette for ${ gimpLink }" +msgstr "${ gimpLink } için palet" + +#: src/components/Converter.jsx:236 +msgid "Image Converter" +msgstr "Resim Dönüştürücüsü" + +#: src/components/Converter.jsx:237 +msgid "Convert an image to canvas colors" +msgstr "Bir resmi tuvalin renklerine dönüştür" + +#: src/components/Converter.jsx:256 +msgid "Choose Strategy" +msgstr "Strateji seç" + +#: src/components/Converter.jsx:293 +msgid "Serpentine" +msgstr "Serpantine" + +#: src/components/Converter.jsx:295 +msgid "Minimum Color Distance" +msgstr "Minimum Renk Farkı" + +#: src/components/Converter.jsx:322 +msgid "Calculate like GIMP" +msgstr "GIMP Gibi Hesapla" + +#: src/components/Converter.jsx:326 +msgid "Choose Color Mode" +msgstr "Renk Modu Seç" + +#: src/components/Converter.jsx:354 +msgid "Add Grid (uncheck if you need a 1:1 template)" +msgstr "Izgara ekle (eğer 1:1 bir şablon istiyorsanız bu seçeneği kapatın)" + +#: src/components/Converter.jsx:376 src/components/Converter.jsx:392 +msgid "Offset" +msgstr "Pay" + +#: src/components/Converter.jsx:421 +msgid "Scale Image" +msgstr "Resim Ölçüsü" + +#: src/components/Converter.jsx:432 +msgid "Width" +msgstr "Genişlik" + +#: src/components/Converter.jsx:463 +msgid "Height" +msgstr "Yükseklik" + +#: src/components/Converter.jsx:502 +msgid "Keep Ratio" +msgstr "Oranı Koru" + +#: src/components/Converter.jsx:515 +msgid "Anti Aliasing" +msgstr "Anti Aliasing" + +#: src/components/Converter.jsx:529 +msgid "Reset" +msgstr "Sıfırla" + +#: src/components/Converter.jsx:547 +msgid "Download Template" +msgstr "Şablonu İndir" + +#: src/components/CanvasItem.jsx:30 +msgid "Online Users" +msgstr "Çevrimiçi Kullanıcılar" + +#: src/components/CanvasItem.jsx:35 +msgid "Cooldown" +msgstr "Bekleme Süresi" + +#: src/components/CanvasItem.jsx:41 +msgid "Stacking till" +msgstr "Biriktirilen Süre" + +#: src/components/CanvasItem.jsx:43 +msgid "Ranked" +msgstr "Sıralama" + +#: src/components/CanvasItem.jsx:45 +msgid "Yes" +msgstr "Evet" + +#: src/components/CanvasItem.jsx:45 +msgid "No" +msgstr "Hayır" + +#: src/components/CanvasItem.jsx:51 +msgid "Requirements" +msgstr "Gereklilikler" + +#: src/components/CanvasItem.jsx:54 +msgid "User Account" +msgstr "Kullanıcı Hesabı" + +#: src/components/CanvasItem.jsx:56 +#, javascript-format +msgid "and ${ canvas.req } Pixels set" +msgstr "ve ${ canvas.req } piksel" + +#: src/components/CanvasItem.jsx:59 +msgid "Top 10 Daily Ranking" +msgstr "Günlük Top10 Sıralaması" + +#: src/components/CanvasItem.jsx:65 +msgid "Dimensions" +msgstr "Boyutlar" + +#: src/components/LogInForm.jsx:76 +msgid "Name or Email" +msgstr "Kullanıcı Adı veya E-Posta" + +#: src/components/LogInForm.jsx:87 +msgid "LogIn" +msgstr "Giriş Yap" + +#: src/components/UserMessages.jsx:28 +msgid "" +"Please verify your mail address \n" +"or your account could get deleted after a few days." +msgstr "" +"Lütfen E-Posta adresini doğrular \n" +"yoksa hesabın birkaç gün içerisinde silinebilir." + +#: src/components/UserMessages.jsx:49 +msgid "A new verification mail is getting sent to you." +msgstr "Sana yeni bir doğrulama postası gönderdik" + +#: src/components/UserMessages.jsx:53 +msgid "Click here to request a new verification mail." +msgstr "Yeni bir doğrulama postası için buraya tıkla" + +#: src/components/ChangePassword.jsx:22 +msgid "Passwords do not match." +msgstr "Şifreler uyuşmuyor" + +#: src/components/ChangePassword.jsx:45 +msgid "Changed Password successfully." +msgstr "Şifre başarılı bir şekilde değiştirildi" + +#: src/components/ChangePassword.jsx:89 +msgid "Old Password" +msgstr "Eski Şifre" + +#: src/components/ChangePassword.jsx:97 +msgid "New Password" +msgstr "Yeni Şifre" + +#: src/components/ChangePassword.jsx:104 +msgid "Confirm New Password" +msgstr "Yeni Şifreyi Doğrula" + +#: src/components/DeleteAccount.jsx:66 +msgid "Yes, Delete My Account!" +msgstr "Evet, Hesabımı Silé" + +#: src/components/ChangeName.jsx:64 +msgid "New Username" +msgstr "Yeni Kullanıcı Adı" + +#: src/components/ChangeMail.jsx:59 +msgid "" +"Changed Mail successfully. We sent you a verification mail, " +"please verify your new mail address." +msgstr "" +"E-Posta başarılı bir şekilde değiştirildi. Sana bir doğrulama postası " +"gönderdik, lütfen yeni E-Posta adresin ile doğrula." + +#: src/components/ChangeMail.jsx:87 +msgid "New Mail" +msgstr "Yeni Posta" + +#: src/components/SocialSettings.jsx:38 +msgid "Block all Private Messages" +msgstr "Tüm Gizli Mesajları Engelle" + +#: src/components/SocialSettings.jsx:56 +msgid "Unblock Users" +msgstr "Kullanıcıların Engelini Kaldır" + +#: src/components/SocialSettings.jsx:80 +msgid "You have no users blocked" +msgstr "Engellediğin kullanıcı yok" + +#: src/components/windows/Help.jsx:14 src/components/windows/Settings.jsx:134 +msgctxt "keybinds" +msgid "G" +msgstr "G" + +#: src/components/windows/Help.jsx:15 src/components/windows/Settings.jsx:142 +msgctxt "keybinds" +msgid "X" +msgstr "X" + +#: src/components/windows/Help.jsx:16 src/components/windows/Settings.jsx:205 +msgctxt "keybinds" +msgid "H" +msgstr "H" + +#: src/components/windows/Help.jsx:17 +msgctxt "keybinds" +msgid "R" +msgstr "R" + +#: src/components/windows/Help.jsx:18 +msgctxt "keybinds" +msgid "Q" +msgstr "Q" + +#: src/components/windows/Help.jsx:19 +msgctxt "keybinds" +msgid "E" +msgstr "E" + +#: src/components/windows/Help.jsx:20 +msgctxt "keybinds" +msgid "W" +msgstr "W" + +#: src/components/windows/Help.jsx:21 +msgctxt "keybinds" +msgid "A" +msgstr "A" + +#: src/components/windows/Help.jsx:22 +msgctxt "keybinds" +msgid "S" +msgstr "S" + +#: src/components/windows/Help.jsx:23 +msgctxt "keybinds" +msgid "D" +msgstr "D" + +#: src/components/windows/Help.jsx:30 +msgctxt "keybinds" +msgid "Shift" +msgstr "Shift" + +#: src/components/windows/Help.jsx:31 +msgctxt "keybinds" +msgid "C" +msgstr "C" + +#: src/components/windows/Settings.jsx:150 +msgctxt "keybinds" +msgid "M" +msgstr "M" diff --git a/src/core/ChatProvider.js b/src/core/ChatProvider.js index a9b6025..15f276c 100644 --- a/src/core/ChatProvider.js +++ b/src/core/ChatProvider.js @@ -1,4 +1,6 @@ -/* @flow */ +/* + * class for chat communications + */ import { Op } from 'sequelize'; import logger from './logger'; import redis from '../data/redis'; @@ -310,7 +312,7 @@ export class ChatProvider { this.mutedCountries.push(cc); this.broadcastChatMessage( 'info', - `Country ${cc} has been muted by ${initiator}`, + `Country ${cc} has been muted from en by ${initiator}`, channelId, this.infoUserId, ); @@ -328,7 +330,7 @@ export class ChatProvider { this.mutedCountries = this.mutedCountries.filter((c) => c !== cc); this.broadcastChatMessage( 'info', - `Country ${cc} has been unmuted by ${initiator}`, + `Country ${cc} has been unmuted from en by ${initiator}`, channelId, this.infoUserId, ); @@ -337,7 +339,7 @@ export class ChatProvider { if (this.mutedCountries.length) { this.broadcastChatMessage( 'info', - `Countries ${this.mutedCountries} unmuted by ${initiator}`, + `Countries ${this.mutedCountries} unmuted from en by ${initiator}`, channelId, this.infoUserId, ); @@ -449,8 +451,10 @@ export class ChatProvider { return t`Please use int channel`; } - if (this.mutedCountries.includes(country)) { - return t`Your country is temporary muted from chat`; + if (channelId === this.enChannelId + && this.mutedCountries.includes(country) + ) { + return t`Your country is temporary muted from this chat channel`; } if (user.last_message && user.last_message === message) { diff --git a/src/utils/location.js b/src/utils/location.js index 9e079e3..91391c9 100644 --- a/src/utils/location.js +++ b/src/utils/location.js @@ -1,5 +1,5 @@ /* - * @flow + * provide location and lang specific features */ import ccCoords from '../data/countrycode-coords-array.json'; @@ -11,7 +11,7 @@ import ccCoords from '../data/countrycode-coords-array.json'; * @param cc Two letter country code * @return coords X/Y coordinates of the country on the canvas */ -export function ccToCoords(cc: string) { +export function ccToCoords(cc) { if (!cc) { return [0, 0]; } @@ -56,16 +56,12 @@ export function languageFromLocalisation(localisation) { */ const lang2CC = { en: 'gb', - de: 'de', dz: 'bt', hy: 'am', uk: 'ua', - ru: 'ru', - fr: 'fr', - es: 'es', ca: 'ct', }; -export function langCodeToCC(lang: string) { +export function langCodeToCC(lang) { return lang2CC[lang] || lang; }