From 433fdb38842d35e2aa4d00e6a43fbdb037be4942 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Mon, 18 Jan 2021 19:35:15 +0100 Subject: [PATCH 01/64] New Crowdin updates (#7930) * New translations: faq.xml (Azerbaijani) * New translations: faq.xml (Azerbaijani) * New translations: site.xml (Azerbaijani) * New translations: faq.xml (Azerbaijani) * New translations: site.xml (Japanese) * New translations: faq.xml (Azerbaijani) * New translations: faq.xml (Azerbaijani) * New translations: faq.xml (Azerbaijani) * New translations: faq.xml (Azerbaijani) * New translations: puzzle.xml (Portuguese) * New translations: puzzleTheme.xml (Swedish) * New translations: tfa.xml (Portuguese) * New translations: puzzle.xml (Portuguese) * New translations: puzzleTheme.xml (Portuguese) * New translations: puzzleTheme.xml (Swedish) * New translations: puzzleTheme.xml (Portuguese) * New translations: puzzleTheme.xml (Swedish) * New translations: team.xml (Portuguese) * New translations: preferences.xml (Portuguese) * New translations: faq.xml (Portuguese) * New translations: puzzleTheme.xml (Portuguese) * New translations: puzzleTheme.xml (Swedish) * New translations: site.xml (Portuguese) * New translations: puzzle.xml (Portuguese) * New translations: puzzleTheme.xml (Portuguese) * New translations: puzzleTheme.xml (Swedish) * New translations: puzzleTheme.xml (Portuguese) * New translations: puzzleTheme.xml (Swedish) * New translations: puzzleTheme.xml (Portuguese) * New translations: puzzleTheme.xml (Swedish) * New translations: puzzleTheme.xml (Portuguese) * New translations: puzzleTheme.xml (Swedish) * New translations: puzzleTheme.xml (Swedish) * New translations: puzzle.xml (Swedish) * New translations: puzzleTheme.xml (Swedish) * New translations: preferences.xml (Swedish) * New translations: puzzle.xml (Swedish) * New translations: puzzleTheme.xml (Swedish) * New translations: contact.xml (Swedish) * New translations: puzzleTheme.xml (Swedish) * New translations: site.xml (Chinese Traditional) * New translations: study.xml (Chinese Traditional) * New translations: puzzleTheme.xml (Chinese Traditional) * New translations: study.xml (Chinese Traditional) * New translations: team.xml (Swedish) * New translations: faq.xml (Spanish) * New translations: site.xml (Swedish) * New translations: faq.xml (Spanish) * New translations: puzzleTheme.xml (German) * New translations: site.xml (Portuguese, Brazilian) * New translations: preferences.xml (Portuguese, Brazilian) * New translations: puzzleTheme.xml (Portuguese, Brazilian) * New translations: faq.xml (Spanish) * New translations: contact.xml (Spanish) * New translations: contact.xml (Spanish) * New translations: puzzleTheme.xml (Esperanto) * New translations: puzzleTheme.xml (Esperanto) * New translations: puzzle.xml (Esperanto) * New translations: puzzle.xml (Esperanto) * New translations: puzzle.xml (Esperanto) * New translations: puzzle.xml (Esperanto) * New translations: puzzleTheme.xml (Esperanto) * New translations: puzzleTheme.xml (Esperanto) * New translations: puzzleTheme.xml (Esperanto) * New translations: puzzleTheme.xml (Esperanto) * New translations: site.xml (Azerbaijani) * New translations: study.xml (Azerbaijani) * New translations: coach.xml (Azerbaijani) * New translations: faq.xml (Azerbaijani) * New translations: study.xml (Azerbaijani) * New translations: perfStat.xml (Azerbaijani) * New translations: study.xml (Azerbaijani) * New translations: class.xml (Azerbaijani) * New translations: faq.xml (Azerbaijani) * New translations: emails.xml (Azerbaijani) * New translations: broadcast.xml (Azerbaijani) * New translations: streamer.xml (Azerbaijani) * New translations: lag.xml (Azerbaijani) * New translations: faq.xml (Azerbaijani) * New translations: coordinates.xml (Azerbaijani) * New translations: class.xml (Azerbaijani) * New translations: faq.xml (Azerbaijani) * New translations: arena.xml (Azerbaijani) * New translations: site.xml (Azerbaijani) * New translations: class.xml (Azerbaijani) * New translations: puzzle.xml (Azerbaijani) * New translations: contact.xml (Azerbaijani) * New translations: search.xml (Azerbaijani) * New translations: arena.xml (Azerbaijani) * New translations: site.xml (Azerbaijani) * New translations: learn.xml (Azerbaijani) * New translations: puzzleTheme.xml (Azerbaijani) * New translations: arena.xml (French) * New translations: site.xml (Azerbaijani) * New translations: learn.xml (Azerbaijani) * New translations: study.xml (Azerbaijani) * New translations: faq.xml (Azerbaijani) * New translations: activity.xml (Azerbaijani) * New translations: contact.xml (Azerbaijani) * New translations: preferences.xml (Azerbaijani) * New translations: site.xml (Azerbaijani) * New translations: learn.xml (Azerbaijani) * New translations: puzzleTheme.xml (Azerbaijani) * New translations: site.xml (Azerbaijani) * New translations: puzzleTheme.xml (Vietnamese) * New translations: site.xml (Vietnamese) * New translations: puzzleTheme.xml (Vietnamese) * New translations: lag.xml (Vietnamese) * New translations: tourname.xml (Vietnamese) * New translations: puzzle.xml (Portuguese, Brazilian) * New translations: site.xml (Irish) * New translations: site.xml (Irish) * New translations: site.xml (Irish) * New translations: site.xml (Irish) * New translations: site.xml (Azerbaijani) * New translations: site.xml (Azerbaijani) * New translations: learn.xml (Azerbaijani) * New translations: puzzleTheme.xml (Azerbaijani) * New translations: site.xml (Azerbaijani) * New translations: site.xml (Japanese) * New translations: team.xml (Faroese) * New translations: team.xml (Dutch) * New translations: study.xml (Vietnamese) * New translations: puzzle.xml (Vietnamese) * New translations: puzzleTheme.xml (Vietnamese) * New translations: puzzleTheme.xml (Greek) * New translations: puzzleTheme.xml (Greek) --- translation/dest/activity/az-AZ.xml | 4 +- translation/dest/arena/az-AZ.xml | 10 +-- translation/dest/arena/fr-FR.xml | 2 +- translation/dest/broadcast/az-AZ.xml | 2 +- translation/dest/class/az-AZ.xml | 20 +++--- translation/dest/coach/az-AZ.xml | 2 +- translation/dest/contact/az-AZ.xml | 6 +- translation/dest/contact/es-ES.xml | 6 +- translation/dest/contact/sv-SE.xml | 2 +- translation/dest/coordinates/az-AZ.xml | 2 +- translation/dest/emails/az-AZ.xml | 2 +- translation/dest/faq/az-AZ.xml | 61 +++++++++++------ translation/dest/faq/es-ES.xml | 4 +- translation/dest/faq/pt-PT.xml | 2 + translation/dest/lag/az-AZ.xml | 4 +- translation/dest/lag/vi-VN.xml | 3 + translation/dest/learn/az-AZ.xml | 14 ++-- translation/dest/perfStat/az-AZ.xml | 2 +- translation/dest/preferences/az-AZ.xml | 2 +- translation/dest/preferences/pt-BR.xml | 6 +- translation/dest/preferences/pt-PT.xml | 4 +- translation/dest/preferences/sv-SE.xml | 5 +- translation/dest/puzzle/az-AZ.xml | 4 +- translation/dest/puzzle/eo-UY.xml | 17 +++++ translation/dest/puzzle/pt-BR.xml | 4 +- translation/dest/puzzle/pt-PT.xml | 49 +++++++++++++- translation/dest/puzzle/sv-SE.xml | 9 ++- translation/dest/puzzle/vi-VN.xml | 1 + translation/dest/puzzleTheme/az-AZ.xml | 12 ++-- translation/dest/puzzleTheme/de-DE.xml | 4 +- translation/dest/puzzleTheme/el-GR.xml | 9 +++ translation/dest/puzzleTheme/eo-UY.xml | 14 ++++ translation/dest/puzzleTheme/pt-BR.xml | 8 +-- translation/dest/puzzleTheme/pt-PT.xml | 94 ++++++++++++++++++++++++++ translation/dest/puzzleTheme/sv-SE.xml | 62 ++++++++++++++++- translation/dest/puzzleTheme/vi-VN.xml | 14 ++++ translation/dest/puzzleTheme/zh-TW.xml | 1 + translation/dest/search/az-AZ.xml | 4 +- translation/dest/site/az-AZ.xml | 66 +++++++++--------- translation/dest/site/ga-IE.xml | 6 ++ translation/dest/site/ja-JP.xml | 4 +- translation/dest/site/pt-BR.xml | 2 +- translation/dest/site/pt-PT.xml | 6 ++ translation/dest/site/sv-SE.xml | 1 + translation/dest/site/vi-VN.xml | 5 +- translation/dest/site/zh-TW.xml | 6 ++ translation/dest/streamer/az-AZ.xml | 4 +- translation/dest/study/az-AZ.xml | 24 +++---- translation/dest/study/vi-VN.xml | 11 +++ translation/dest/study/zh-TW.xml | 23 +++++++ translation/dest/team/fo-FO.xml | 1 + translation/dest/team/nl-NL.xml | 4 +- translation/dest/team/pt-PT.xml | 6 ++ translation/dest/team/sv-SE.xml | 4 ++ translation/dest/tfa/pt-PT.xml | 2 + translation/dest/tourname/vi-VN.xml | 2 + 56 files changed, 506 insertions(+), 142 deletions(-) diff --git a/translation/dest/activity/az-AZ.xml b/translation/dest/activity/az-AZ.xml index 6aec3cf71b..bb062394c0 100644 --- a/translation/dest/activity/az-AZ.xml +++ b/translation/dest/activity/az-AZ.xml @@ -7,8 +7,8 @@ Lichess.org\'u %1$s aylığına %2$s olaraq dəstəklədi - %2$s mövzusunda %1$s mövqe məşq etdi - %2$s mövzusunda %1$s mövqe məşq etdi + %2$s mövzusunda %1$s pozisiya məşq etdi + %2$s mövzusunda %1$s pozisiya məşq etdi %s taktiki tapmaca həll etdi diff --git a/translation/dest/arena/az-AZ.xml b/translation/dest/arena/az-AZ.xml index defe0d7260..ab91b374ba 100644 --- a/translation/dest/arena/az-AZ.xml +++ b/translation/dest/arena/az-AZ.xml @@ -3,13 +3,13 @@ Arena turnirləri Reytinq hesablanırmı? Turnir başlayanda sizə xəbər veriləcəkdir, buna görə gözləyərkən başqa bir pəncərədə oynamaq təhlükəsizdir. - Bu turnir reytinqlidir və reytinqinizə tesir edəcək. - Bu turnir reytinqli deyil ve reytinqinizə təsir etməyəcək. - Bəzi turnirlər reytinqlidir ve reytinqinizə təsir edəcək. + Bu turnir reytinqlidir və reytinqinizə təsir edəcək. + Bu turnir reytinqli deyil və reytinqinizə təsir etməyəcək. + Bəzi turnirlər reytinqlidir və reytinqinizə təsir edəcək. Xallar necə hesablanır? Qazanılan bir oyun təməldə 2 xal, bərabərlik 1 xal dəyərindədir. Uduzulan bir oyun isə heçbir xal qazandırmır. Üst- üstə iki oyun qazandığınız təqdirdə alov ikonu ile təmsil olunan ikiqat xal seriyasına girirsiniz. -Məğlub olana vəya bərabərə qalana qədər oynanılan oyunlardan iki qatı xal qazanırsınız. Yəni seriyada ikən bir qalibiyyət 4 xal, bərabərlik 2 xal qazandırarkən uduzulan oyundan heçbir xal qazanılmaz. +Məğlub olana vəya bərabərə qalana qədər oynanılan oyunlardan iki qatı xal qazanırsınız. Yəni seriyada ikən bir qalibiyyət 4 xal, bərabərlik 2 xal qazandırarkən uduzulan oyundan heç bir xal qazanılmaz. Məsələn; üst-üstə qazanılan iki oyun və ardından alınan bir bərabərlik 6 xal dəyərindədir: 2 + 2 + (2 x 1) Çılğın Modu @@ -26,7 +26,7 @@ Berserk yalnız oyunda ən azı 7 gediş etsəniz əlavə bir xal verir. Qoşulma necə işləyir? Turnirin əvvəlində oyunçular reytinqlərinə görə qarşılaşırlar. -Bir oyunu bitirən kimi turnir lobbisinə qayıdın: daha sonra reytinqinizə yaxın bir oyunçu ilə qarşılaşacaqsınız. Beləliklə gözləmə müddətini ən aza edirilir, lakin turnirdəki bütün digər oyunçularla qarşılaşa bilməzsiniz. +Bir oyunu bitirən kimi turnir lobbisinə qayıdın: daha sonra reytinqinizə yaxın bir oyunçu ilə qarşılaşacaqsınız. Beləliklə gözləmə müddətini ən aza endirilir, lakin turnirdəki bütün digər oyunçularla qarşılaşa bilməzsiniz. Daha çox oyun oynamaq və daha çox xal qazanmaq üçün sürətli oynayın və lobbiyə qayıdın. Necə başa çatır? Turnirin başa çatma vaxtı var. Vaxt başa çatdıqda turnir sıralaması dondurulur və qalib elan edilir. Davam edən oyunlar başa çatmalıdır, lakin bu oyunlar turnirə daxil edilməz. diff --git a/translation/dest/arena/fr-FR.xml b/translation/dest/arena/fr-FR.xml index b3a3fdd254..a63b8ef572 100644 --- a/translation/dest/arena/fr-FR.xml +++ b/translation/dest/arena/fr-FR.xml @@ -36,6 +36,6 @@ Jouez vite et retournez à la page d\'accueil du tournoi pour jouer plus de part Ce tournoi est privé Partagez cette URL pour permettre aux personnes de rejoindre : %s - Séries de parties nulles : lorsqu\'un joueur fait des nulles consécutives dans une arène, seul la première nulle donnera un point, ou des nulles durant plus de %s coups. La série de nulles ne peut être interrompue que par une victoire, pas par une défaite ou une nulle. + Séries de parties nulles : lorsqu\'un joueur fait des nulles consécutives dans une arène ou une bataille d\'équipes, seule la première nulle donnera un point, ou des nulles durant plus de %s coups. La série de nulles ne peut être interrompue que par une victoire, pas par une défaite ou une nulle. Historique des tournois d\'arène diff --git a/translation/dest/broadcast/az-AZ.xml b/translation/dest/broadcast/az-AZ.xml index 957d4ecae5..5adf3cb1fa 100644 --- a/translation/dest/broadcast/az-AZ.xml +++ b/translation/dest/broadcast/az-AZ.xml @@ -13,7 +13,7 @@ Mənbə URL Lichess, verdiyiniz URL ilə PGN-i yeniləyəcək. URL, internetdə hamı tərəfindən əldə edilə bilən olmalıdır. Tur sayı - Öz vaxt qurşağınızdakı başlama tarixi + Öz saat qurşağınızdakı başlama tarixi İstəyə bağlı, tədbirin başlama vaxtını bilirsinizsə Mənbəyə bax Yayımı klonla diff --git a/translation/dest/class/az-AZ.xml b/translation/dest/class/az-AZ.xml index 2947a2ce20..b8506a7973 100644 --- a/translation/dest/class/az-AZ.xml +++ b/translation/dest/class/az-AZ.xml @@ -11,14 +11,14 @@ Hələki bir sinif yoxdur. Müəllimlər: %s Yeni sinif - Sinifi bağla + Sinfi bağla %s tərəfindən bağlanıb Yenidən aç Tələbəni sil Çıxarıldı Tələbəni yenidən dəvət edin Bütün tələbələrə mesaj göndərin. - Mesajın sonunda avtomatik olaraq sinifə keçid üçün bir link əlavə ediləcək, bu səbəbdən özünüz daxil etməyinizə ehtiyac yoxdur. + Mesajın sonunda avtomatik olaraq sinfə keçid üçün bir link əlavə ediləcək, bu səbəbdən özünüz daxil etməyinizə ehtiyac yoxdur. Sinif adı Sinif açıqlaması Həm müəllimlər, həm də sinif şagirdləri tərəfindən görünür @@ -29,7 +29,7 @@ Şifrəni kopyaladığınızdan və ya bir yerə yazdığınızdan əmin olun. Yenidən görə bilməyəcəksiniz! Şifrə: %s Tələbə üçün yeni bir şifrə yaradın - %2$s tərəfindən %1$s adlı sinifə dəvət + %2$s tərəfindən %1$s adlı sinfə dəvət Həqiqi ad Şəxsi. Yalnız sinif daxilində göstərilir. Tələbənin kim olduğunu xatırlamağa kömək edir. Tələbə əlavə et @@ -39,18 +39,18 @@ Şifrə: %3$s Bir Lichess hesabı dəvət edin Tələbənin Lichess hesabı varsa, onu dərsə dəvət edə bilərsiniz. - Lichess-də sinifə qoşulmaq üçün içində bir link olan əlaqə mesajı alacaqlar. - Önəmli: yalnız tanıdığınız və sinifə fəal bir şəkildə qoşulmaq istəyən tələbələri dəvət edin. + Lichessdə sinfə qoşulmaq üçün içində bir link olan əlaqə mesajı alacaqlar. + Önəmli: yalnız tanıdığınız və sinfə fəal bir şəkildə qoşulmaq istəyən tələbələri dəvət edin. Heç vaxt kimə gəldi istənilməyən dəvətlər göndərməyin. Yeni bir Lichess hesabı yaradın Tələbənin hələ bir Lichess hesabı yoxdursa, burada onun üçün bir hesab yarada bilərsiniz. - Elektron poçt ünvanı tələb olunmur. Bir şifrə yaradılacaq və onu tələbəyə ötürdükdən sonra, sinifə daxil ola bilər. + Elektron poçt ünvanı tələb olunmur. Bir şifrə yaradılacaq və onu tələbəyə ötürdükdən sonra, sinfə daxil ola bilər. Önəmli: bir tələbənin birdən çox hesabı olmamalıdır. - Əgərhesabları varsa, bunun əvəzinə dəvət formunu istifadə edin. + Əgər hesabları varsa, bunun əvəzinə dəvət formunu istifadə edin. Lichess istifadəçi adı Yeni bir istifadəçi adı yaradın - Sinifinizə xoş gəlmisiniz: %s. -Sinifə daxil olmaq üçün link. + Sinfinizə xoş gəlmisiniz: %s. +Sinfə daxil olmaq üçün link. Tələbə olaraq \"%s\" sinfinə dəvətlisiniz. Dəvətə baxmaq üçün linkə toxunun: @@ -66,7 +66,7 @@ Sinifə daxil olmaq üçün link. Azad et Hesabı tələbənin özbaşına idarə edə bilməsi üçün azad et. Azad edilmiş bir hesab yenidən idarə oluna bilməz. Tələbə uşaq rejimini dəyişə və şifrəni özü sıfırlaya biləcək. - Tələbələr, hesabları azad edildikdən sonra sonra sinifdə qalacaqlar. + Tələbələr, hesabları azad edildikdən sonra sinifdə qalacaqlar. Tələbənin həqiqi, unikal elektron poçt ünvanı. Hesabı azad etmək üçün bir keçid ilə birlikdə ona təsdiq emaili göndərəcəyik. Müəllimlər diff --git a/translation/dest/coach/az-AZ.xml b/translation/dest/coach/az-AZ.xml index 8ac64beb76..57cdc72793 100644 --- a/translation/dest/coach/az-AZ.xml +++ b/translation/dest/coach/az-AZ.xml @@ -1,7 +1,7 @@ Lichess məşqçiləri - Lichess məşçisi + Lichess məşqçisi %s sahibi istedadlı şahmat məşqçisisiniz? NM və ya FIDE titulu Titulunuzu buradan təsdiqləyin və müraciətinizi nəzərdən keçirək. diff --git a/translation/dest/contact/az-AZ.xml b/translation/dest/contact/az-AZ.xml index a09d5492c6..ea4d01cdcd 100644 --- a/translation/dest/contact/az-AZ.xml +++ b/translation/dest/contact/az-AZ.xml @@ -44,14 +44,14 @@ Lichess mobil tətbiqi problemləri GitHubda Lichessin Discord serverində Lütfən, xətanın necə göründüyünü, bunun əvəzində nə olacağını gözlədiyinizi və xətanı yaradan addımları təsvir edin. - Sehv piyada vurma + Səhv piyada vurma hərəkəti Buna \"keçiddə götürmə\" deyirlər və bu şahmatın qaydalarından biridir. \"Keçiddə götürmə\" haqqında daha çox məlumat əldə etmək üçün bu kiçik interaktiv oyunu sınayın. Qanunsuz və ya qeyri-mümkün qalaqurma - Yalnız şahın keçdiyi bir xananın hücum altinda olması qalaqurmaya mane ola bilər. + Yalnız şahın keçdiyi bir xananın hücum altında olması qalaqurmaya mane ola bilər. Qalaqurma qaydalarını başa düşdüyünüzdən əmin olun Şahmatda qalaqurma etmək üçün bu kiçik interaktiv oyunu sınayın - Oyunu daxil etmisinizsə və ya bir mövqedən başlamısınızsa, qalaqurma ayarlarını düzgün qurduğunuzdan əmin olun. + Oyunu daxil etmisinizsə və ya bir pozisiyadan başlamısınızsa, qalaqurma ayarlarını düzgün qurduğunuzdan əmin olun. Mat üçün yetərsiz fiqur FIDE Şahmat Qanunları §6.9-a görə, hər hansı bir qanuni gedişlər ardıcıllığı ilə mat mümkündürsə, oyun heç-heçə deyil Rəqibin lövhədə şahdan başqa digər bir fiquru varsa, yalnız bir at və ya bir fillə mat etmək mümkündür. diff --git a/translation/dest/contact/es-ES.xml b/translation/dest/contact/es-ES.xml index 0ca025a520..76f2ecb124 100644 --- a/translation/dest/contact/es-ES.xml +++ b/translation/dest/contact/es-ES.xml @@ -10,7 +10,7 @@ Olvidé mi nombre de usuario Puedes iniciar sesión con la dirección de correo electrónico con la que te registraste Perdí mis códigos de autenticación en dos pasos - Complete un restablecimiento de contraseña para eliminar tu segundo factor + Completa el formulario de restablecimiento de contraseña para eliminar tu segundo factor Necesito soporte de cuenta Quiero que mi título se muestre en Lichess Para mostrar tu título en tu perfil de Lichess y participar en los torneos que lo exijan, visita la página de verificación de títulos @@ -71,8 +71,8 @@ Monetizar Lichess Comprar Lichess Autorización para usar Lichess - Puede usar Lichess para su fin, incluso comercial. - Puede mostrarlo en vídeos, y puede tomar capturas de pantalla de Lichess en sus libros. + Puedes usar Lichess para tu fin particular, incluso comercial. + Puedes mostrarlo en vídeos y tomar capturas de pantalla de Lichess en tus libros. Se aprecia el crédito, pero no es necesario. Ninguna de las anteriores Envíanos un correo electrónico a %s. diff --git a/translation/dest/contact/sv-SE.xml b/translation/dest/contact/sv-SE.xml index 904514a1d8..51f6bfb943 100644 --- a/translation/dest/contact/sv-SE.xml +++ b/translation/dest/contact/sv-SE.xml @@ -25,7 +25,7 @@ Vi kan inte ändra mer än shiftläget. Av tekniska skäl är det rent ut sagt omöjligt. Du kan dock stänga ditt nuvarande konto och skapa ett nytt. Jag vill rensa min historia eller rating - Det är inte möjligt att rensa din partihistorik, pusselhistorik eller rating. + Det är inte möjligt att rensa din partihistorik, historik för schackproblem eller rating. Jag vill rapportera en spelare fusk manipulerar rating diff --git a/translation/dest/coordinates/az-AZ.xml b/translation/dest/coordinates/az-AZ.xml index 82083f7eff..74c62ee261 100644 --- a/translation/dest/coordinates/az-AZ.xml +++ b/translation/dest/coordinates/az-AZ.xml @@ -4,7 +4,7 @@ Koordinatlar məşğələsi Ağlar qismində orta xal: %s Qaralar qismində orta xal: %s - Şahmat ləvhəsinin koordinatlarını bilmək çox önəmlidir: + Şahmat lövhəsinin koordinatlarını bilmək çox önəmlidir: Bir çox şahmat dərs və məşğələlərində cəbri notasiyadan istifadə edilir. Hər ikiniz \"şahmat dilini\" bildikdə dostunla şahmat haqqında danışmaq asanlaşır. Xanaların adını bildikdə oyunu daha tez təhlil etdə bilərsən. diff --git a/translation/dest/emails/az-AZ.xml b/translation/dest/emails/az-AZ.xml index fec53dbc82..e002004467 100644 --- a/translation/dest/emails/az-AZ.xml +++ b/translation/dest/emails/az-AZ.xml @@ -2,7 +2,7 @@ Lichess.org hesabınızı təsdiqləyin, %s Lichess hesabınızı aktivləşdirmək üçün bu linkə klikləyin: - Lichess-də qeydiyyatdan keçməmisinizsə, bu mesaja əhəmiyyət verməyə bilərsiniz. + Lichessdə qeydiyyatdan keçməmisinizsə, bu mesaja əhəmiyyət verməyə bilərsiniz. Lichess.com şifrənizi sıfırlayın, %s Hesab şifrənizin sıfırlanması üçün bir sorğu aldıq. Bu sorğunu siz etmisinizsə, aşağıdakı bağlantıya klikləyin. Siz etməmisinizsə, bu emailə əhəmiyyət verməyin. diff --git a/translation/dest/faq/az-AZ.xml b/translation/dest/faq/az-AZ.xml index 0da892abbd..dd8478ae19 100644 --- a/translation/dest/faq/az-AZ.xml +++ b/translation/dest/faq/az-AZ.xml @@ -2,15 +2,15 @@ TSS Tez-tez Soruşulan Suallar - Lichess-ə niyə Lichess deyirlər? + Lichess niyə Lichess adlanır? Lichess, live/light/libre yəni canlı/yüngül/azad ilə chess (şahmat) sözlərinin kombinasiyasıdır. %1$s kimi tələffüz edilir. lii-chess Bir mütəxəssisin tələffüzünə qulaq asın. Canlı, çünki oyunlar real vaxt kəsiyində 24/7 oynanılır və izlənilir; Lichess açıq mənbəli bir sistem olduğu üçün ödənişsizdir, digər veb saytları narahat edən lazımsız tullantıları ehtiva etmədiyi üçün yüngüldür. Oxşar olaraq, Lichess üçün mənbə kodu, %1$s, li[chess in sca]la mənasını verir, Lichess intuitiv proqramlaşdırma dili olan %2$s üzərində yazılmışdır. - Lichess-ə necə töhfə verə bilərəm? + Lichessə necə töhfə verə bilərəm? Lichess, dəstəkçilərin ianələri və bir könüllü komandanın səyləri ilə təchiz edilmişdir. - %2$s da daxil olmaqla %1$s haqqında daha çox məlumat ala bilərsiniz. Əgər vaxtınız və bacarıqlarınızla Lichess-ə könüllü olaraq kömək etmək istəsəniz, burada çoxlu %3$s var. + %2$s da daxil olmaqla %1$s haqqında daha çox məlumat ala bilərsiniz. Əgər vaxtınız və bacarıqlarınızla Lichessə könüllü olaraq kömək etmək istəsəniz, burada çoxlu %3$s var. dəstəkçi olmaq xərclərimizin bölgüsü kömək etmək üçün digər yollar @@ -20,6 +20,8 @@ Niyə görə süni reytinq manipulyasiyası üçün (bilərək uduzma və başqalarından kömək almaq) və ya kompüterdən kömək alan biri olaraq işarələndim? Lichessin güclü aşkarlama metodları və bütün dəlilləri nəzərdən keçirmək və qərar qəbul etmək üçün hərtərəfli bir prosesi var. Proses tez-tez bir çox moderatoru əhatə edir və uzun müddət çəkə bilər. İşarənin özü xaricində, dəlillər və fərdi işlər üçün qərar qəbul etmə prosesi haqqında təfərrüatlara varmayacağıq. Bunu etmək gələcəkdə aşkarlanmanın qarşısını almağı asanlaşdıracaq və səmərəsiz mübahisələrə dəvət olacaqdır. Bu vaxt və səy daha vacib işlərə daha yaxşı xərclənir. İstifadəçilər %1$s ünvanına elektron poçt ilə müraciət edə bilərlər, lakin qərarlar nadir hallarda pozulur. Hiyləyə qarşı itirdiyim xalları nə vaxt geri ala biləcəm? + Bir oyunçu işarələndikdən bir dəqiqə sonra, son 3 gün ərzində oynadığı 40 reytinqli oyun geri alınır. Bu oyunlarda əgər onun rəqibi olsaz, reytinq xalı itirsəz (məğlubiyyət və heç-heçə səbəbilə) və reytinqiniz müvəqqəti deyilsə, geri ödəmə alacaqsız. Geri ödəmə, ən yüksək reytinqinizə və oyundan sonrakı reytinq yüksəlişinizə görə mədudlaşdırılır. +(Məsələn, bu oyunlardan sonra reytinqiniz çox artarsa, geri ödəmə və ya qismən geri ödəmə ala bilərsiniz.) Geri ödəmə heç vaxt 150 xaldan çox olmayacaq. Oyunçuların təslim olmadan oyunlarını tərk etmələri ilə bağlı nə edilir? Rəqibiniz tez-tez oyunlarını dayandırar/tərk edərsə, ona \"oynamağa qadağa qoyulur\", yəni müvəqqəti olaraq oyun oynamaq qadağan olunur. Bu, profilində açıq şəkildə göstərilmir. Lakin bu davranış davam edərsə, qadağanın vaxtı artırılır və bu xarakterli uzun müddətli davranış hesabın bağlanmasına səbəb ola bilir. Necə moderator ola bilərəm? @@ -37,7 +39,7 @@ Məsələn, 5+3 blitz oyununun təxmini vaxtı 5 × 60 + 40 × 3 = 420 saniyəy Lichess standart şahmatı və daha %1$s dəstəkləyir. 8 şahmat variantını Ortalama santipiyada itkisi nədir(OSPİ)? - Santipiyada şahmatda üstünlüyü təmsil edən ölçü vahididir. Bir santipiyada piyadanın 1/100 hissəsinə bərabərdir. Bu səbəbdən 100 santipiyada = 1 piyada. Bu dəyərlər oyunda heç bir rəsmi rol oynamır, ancaq oyunçular üçün faydalıdır və mövqeləri qiymətləndirmək üçün kompüter şahmatında vacibdir. + Santipiyada şahmatda üstünlüyü təmsil edən ölçü vahididir. Bir santipiyada piyadanın 1/100 hissəsinə bərabərdir. Bu səbəbdən 100 santipiyada = 1 piyada. Bu dəyərlər oyunda heç bir rəsmi rol oynamır, ancaq oyunçular üçün faydalıdır və pozisiyaları qiymətləndirmək üçün kompüter şahmatında vacibdir. Ən yaxşı kompüter mühərrikləri sıfır santipiyada itirəcək, amma daha az gediş santipiyadayla ölçülən vəziyyətin pisləşməsinə səbəb olacaq. @@ -45,32 +47,52 @@ Bu dəyər oyun keyfiyyətinin göstəricisi kimi istifadə edilə bilər. Bir g Lichess kompüter analizi Stockfish tərəfindən dəstəklənir. Vaxt azlığı, heç-heçə və yetərsiz fiqur - Bir oyunçunun vaxtı tükənməsi halında, həmin oyunçu əksər hallarda oyunu uduzacaqdır. Lakin, rəqib bu oyunçunuı hər hansı bir qanuni gediş ardıcıllığı ilə (%1$s) mat edə bilməyəcəyi vəziyyətdə oyun heç-heçə olur. + Bir oyunçunun vaxtı tükənməsi halında, həmin oyunçu əksər hallarda oyunu uduzacaqdır. Lakin, rəqib bu oyunçunu hər hansı bir qanuni gediş ardıcıllığı ilə (%1$s) mat edə bilməyəcəyi vəziyyətdə oyun heç-heçə olur. Nadir hallarda buna avtomatik qərar verməsi çətin ola bilər (məcburi gedişlər, qalalar). Varsayılan olaraq həmişə vaxtı tükənməyən oyunçunun tərəfindəyik. Diqqət yetirin ki, rəqibin şahının qarşısını ala biləcək bir fiqur varsa, tək bir at və ya fillə mat etmək mümkündür. FIDE qaydaları %s Nəyə görə rəqib piyadasını keçmiş bir piyada vurula bilər? (keçiddə götürmə) - yaxşı giriş - rəsmi qaydalar (PDF) + Bu, \"keçiddə götürmə\" kimi tanınan qanuni bir gedişdir. Vikipediya məqaləsi buna %1$s verir. + +%2$s 3.7 (d) bölməsində bu cür təsvir edilmişdir: + + +\"Başlanğıc xanasından bir gedişə iki xana irəli gedən piyada, rəqib piyadasına bitişik və eyni sırada olarsa, bu piyada, rəqib piyadasını sanki normal piyadayla fiqur vururmuş kimi vura bilər. Bu gediş yalnız piyada iki xana irəli getdikdən dərhal sonra oynanıla bilər və bu \'keçiddə götürmə \' adlanır. + +%3$s bölməsində bu gedişlə bağlı məşq edə bilərsiniz. + yaxşı izah + rəsmi qaydaların (PDF) Lichess məşqi - Üç dəfə təkrar - Əgər bir mövqe üç dəfə təkrarlanarsa, oyunçu %1$s vasitəsilə heç-heçə tələb edə bilər. Lichess %2$s-nin 9.2 (d) bəndində açıqlandığı kimi FIDE qaydalarına tam əməl edir. - üç dəfə təkrar - Gedişləri təkrarlamadıq. Nə üçün oyun gediş təkrarına görə heç-heçə bitti? - Üç dəfə təkrarlanma %1$s ilə əlaqəlidir, gedişlərlə yox. Təkrarlanma ardıcıl baş vermək məcburiyyətində deyil. - vəziyyətlər - Bir mövqeyi üç dəfə təkrarladıq. Oyun niyə heç-heçə olmadı? + Üçqat təkrar + Əgər bir pozisiya üç dəfə təkrarlanarsa, oyunçu %1$s vasitəsilə heç-heçə tələb edə bilər. Lichess %2$s 9.2 (d) bəndində açıqlandığı kimi FIDE qaydalarına tam əməl edir. + üçqat təkrar + Gedişləri təkrarlamadıq. Nə üçün oyun gediş təkrarına görə heç-heçə bitdi? + Üçqat təkrarlanma %1$s ilə əlaqəlidir, gedişlərlə yox. Təkrarlanma ardıcıl baş vermək məcburiyyətində deyil. + pozisiyalar + Bir pozisiyanı üç dəfə təkrarladıq. Oyun niyə heç-heçə olmadı? + Təkrarın oyunçulardan biri tərəfindən tələb edilməsi lazımdır. Bunu göstərilən düyməni basmaqla və ya son təkrar gedişinizdən əvvəl heç-heçə təklif etməklə edə bilərsiniz, rəqibinizin bu təklifini rədd etməsinin heç bir əhəmiyyəti olmayacaq, üçqat təkrar onsuz da tələb ediləcək. Avtomatik olaraq sizin adınıza təkrarlama tələb etmək üçün Lichessi %1$s edə bilərsiniz. Əlavə olaraq, beşqat təkrarlama həmişə oyunu dərhal bitirir. konfiqurasiya Hesablar Lichessdə hansı titullar var? Lichess bütün FİDE titullarını, o cümlədən lövhə üzərində qazanılmış titulları, həmçinin %1$s-nu. Bu da FIDE titullarının siyahısı: + Bir OTB titulunuz varsa, şəxsiyyəti təsdiq edən sənəd/kartın açıq bir şəkli və sənədi/kartı tutan yerdə bir selfi də daxil olmaqla %1$s-nu dolduraraq hesabınızda göstərilməsi üçün müraciət edə bilərsiniz. + +Lichessdə titullu bir oyunçu kimi təsdiqlənmək, Titullu Arena tədbirlərində oynamağa imkan verir. + +Nəhayət bir də fəxri %2$s adı var. bir çox milli usta titulları təsdiqləmə formu Lichess Ustası (LM) adını ala bilərəmmi? Xeyr. + Bu fəxri titul qeyri-rəsmidir və yalnız Lichessdə mövcuddur. + +Nadir hallarda təqdirəlayiq, yaxşı bir lichess üzvü olan yüksək səviyyəli oyunçularımıza öz qərarımıza uyğun mükafat veririk. LM titulunu almırsınız, LM titulu sizə gəlir. Əgər bu titula layiq görülsəniz, bizdən bir mesaj alacaqsınız və qəbul etmək və ya etməmək seçiminə sahib olacaqsız. + +LM titulunu bizdən istəməyin. İstifadəçi adım nə ola bilər? + Ümumiyyətlə, istifadəçi adları: təhqiramiz, başqasını təqlid edən və ya reklam məqsədli olmamalıdır. Bu haqda daha çox %1$s bölməsində məlumat ala bilərsiniz. təlimatlat İstifadəçi adımı dəyişə bilərəmmi? Xeyr, istifadəçi adları texniki və praktik səbəblərdən dəyişdirilə bilməz. İstifadəçi adları həddindən artıq yerdə istifadə edilir: verilənlər bazaları, yüklənmiş oyunlar, qeydlər və insanların düşüncələrində. İstifadəçi adlarındakı böyük və kiçik hərfləri yalnız bir dəfə dəyişdirə bilərsiniz. @@ -78,9 +100,10 @@ Diqqət yetirin ki, rəqibin şahının qarşısını ala biləcək bir fiqur va Bu kubok Lichess tarixində bənzərsizdir və %1$s xaric başqa heç kim ona sahib ola bilməz. Bunu qazanmaq üçün hiimgosu özünü berserk ilə sınadı və %s oyunlarında 100%% qalib gəldi. bir saatlıq Bullet turniri + ZugAddict canlı yayım açmışdı və son 2 saat ərzində A.I. 8-ci səviyyə kompüter mühərrikinə 1+0 oyununda qalib gəlməyə çalışırdı. Thibault, canlı yayımda buna nail olarsa, ona unikal bir kubok verəcəyini söylədi. Bir saat sonra, ZugAddict Stockfishi darmadağın etdi və Thibault vədini yerinə yetirdi. Lichess reytinqi Lichess hansı reytinq sistemindən istifadə edir? - Reytinqlər Mark Glickman tərəfindən hazırlanmış Glicko-2 qiymətləndirmə metodu ilə hesablanır. Bu, çox populyar bir reytinq metodudur və xeyli sayda şahmat təşkilatı tərəfindən istifadə olunur (FIDE hələ də tarixli Elo reytinq sistemini istifadə etdiyi üçün diqqətəlayiq bir əks nümunədir). + Reytinqlər Mark Glickman tərəfindən hazırlanmış Glicko-2 qiymətləndirmə metodu ilə hesablanır. Bu, çox populyar bir reytinq metodudur və xeyli sayda şahmat təşkilatı tərəfindən istifadə olunur (FIDE hələ də köhnə Elo reytinq sistemini istifadə etdiyi üçün diqqətəlayiq bir əks nümunədir). Əsasən, Glicko reytinqləri reytinqinizi hesablayarkən \"güvən intervalı\"ndan istifadə edir. Saytı ilk dəfə istifadə etməyə başladığınızda, reytinqiniz 1500 ± 700-dən başlayır. 1500, reytinqinizi, 700 isə güvən aralığını təmsil edir. @@ -107,15 +130,15 @@ Diqqət çəkən başqa bir məqam, zaman keçdikcə özünə inam aralığını Reytinqləri \"nisbi\" rəqəmlər (\"mütləq\" rəqəmlərdən fərqli olaraq) kimi düşünmək daha yaxşıdır: Bir oyunçu hövzəsində reytinqlərdəki nisbi fərqlər kimin nə qədər qazandığını / heç-heçə etdiyini / məğlub olduğunu təxmin etməyə kömək edəcəkdir. \"X reytinqim var\" demək, bu reytinqi müqayisə edəcək digər oyunçular olmasa, heç bir mənası yoxdur. Oynayarkən reytinqləri necə gizlətmək olar? %1$s ilə və ya oyun zamanı %2$s düyməsinə basaraq Zen rejimini aktivləşdir. - görüntü ayarları + görüntü tərcihləri Gecikmə/əlaqənin kəsilməsi səbəbindən bir oyun uduzdum. Reytinq xallarımı geri ala bilərəmmi? - Təəssüf ki, gecikmə və ya əlaqənin kəsilməsi səbəbi ilə itirilən oyunlar üçün reytinq xallarını geri qaytara bilmərik, problemin sizdən və ya bizdən qaynaqlı olmasından asılı olmayaraq. İkincisi çox nadirdir. Həm də unutmayın ki, Lichess yenidən başldıldığı zaman vaxtla uduzduğunuzda, haqsız bir itkinin qarşısını almaq üçün bu oyunu ləğv edirik. + Təəssüf ki, gecikmə və ya əlaqənin kəsilməsi səbəbi ilə itirilən oyunlar üçün reytinq xallarını geri qaytara bilmərik, problemin sizdən və ya bizdən qaynaqlı olmasından asılı olmayaraq. İkincisi çox nadirdir. Həm də unutmayın ki, Lichess yenidən başladıldığı zaman vaxtla uduzduğunuzda, haqsız bir itkinin qarşısını almaq üçün bu oyunu ləğv edirik. Necə... - Bildiriş popupları aktiv və ya deaktiv edilsin? + Bildiriş pəncərələri aktiv və ya deaktiv edilsin? Sayt haqqında məlumat pəncərəsinə baxın Lichess istəyə bağlı olaraq popup bildirişlər göndərə bilər, məsələn növbə sizin olduğunuzda və ya xüsusi bir mesaj aldığınız zaman. Brauzerinizin URL çubuğundakı lichess.org ünvanının yanındakı kilid işarəsini toxunun. -Sonra Lichess-dən gələn bildirişlərə icazə veriləcəyini və ya bloklanacağını seçin. +Sonra Lichessdən gələn bildirişlərə icazə veriləcəyini və ya bloklanacağını seçin. diff --git a/translation/dest/faq/es-ES.xml b/translation/dest/faq/es-ES.xml index 8ae2951367..10c87b7f46 100644 --- a/translation/dest/faq/es-ES.xml +++ b/translation/dest/faq/es-ES.xml @@ -94,7 +94,7 @@ No solicites el título de LM. En general, los nombres de usuario no deben: ser ofensivos, suplantar a alguien o hacer publicidad. Puedes leer más sobre las %1$s. pautas ¿Puedo cambiar mi nombre de usuario? - No, los nombres de usuario no pueden cambiarse por razones técnicas y prácticas. Los nombres de usuario se materializan en muchos lugares: bases de datos, exportaciones, registros y en la mente de las personas. Puedes ajustar las mayúsculas solo una vez. + No, los nombres de usuario no pueden cambiarse por razones técnicas y prácticas. Los nombres de usuario se materializan en muchos lugares: bases de datos, exportaciones, registros y en la mente de las personas. Puedes ajustar las mayúsculas/minúsculas solo una vez. Trofeos únicos Ese trofeo es único en la historia de Lichess, nadie más que %1$s lo tendrá jamás. Para obtenerlo, hiimgosu se desafió a sí mismo a berserk y ganó 100%% partidas de %s. @@ -128,7 +128,7 @@ Otro punto que cabe señalar es que, si pasa un tiempo sin jugar, el intervalo d Es mejor pensar en las puntuaciones como figuras \"relativas\" (a diferencia de las \"figuras absolutas\"): dentro de un conjunto de jugadores, sus diferencias relativas en las puntuaciones te ayudarán a estimar quién gana/empata/pierde, y con qué frecuencia. Decir \"tengo puntuación X\" significa nada a menos que haya otros jugadores a los que comparar esa puntuación. ¿Cómo ocultar mis puntuaciones durante las partidas? - Habilita el modo Zen en %1$so presionando %2$s durante una partida. + Habilita el modo Zen en %1$s o presionando %2$s durante una partida. preferencias de visualización He perdido un juego debido a un retraso/desconexión. ¿Puedo recuperar mis puntos? Desafortunadamente, no podemos devolver puntos en las partidas perdidas debido al retraso de red o desconexión, independientemente de si el problema estaba en tu lado o en el nuestro. Sin embargo, este último caso es muy extraño. También ten en cuenta que cuando Lichess se reinicia y pierdes por que se te haya acabado el tiempo debido a eso, abortamos el juego para prevenir una pérdida injusta. diff --git a/translation/dest/faq/pt-PT.xml b/translation/dest/faq/pt-PT.xml index e046b3264c..277172d831 100644 --- a/translation/dest/faq/pt-PT.xml +++ b/translation/dest/faq/pt-PT.xml @@ -96,6 +96,8 @@ Não perguntes pelo título LM. Podes ler mais sobre as %1$s. orientações + Posso mudar o meu nome de utilizador? + Não, os nomes de utilizador não podem ser alterador por razões técnicas e práticas. Os nomes de utilizador são materializados em demasiados lugares: bases de dados, exportações, registos e nas mentes das pessoas. Só podes ajustar as minúsculas e maiúsculas uma vez. Troféus únicos Este troféu é único na história do Lichess, ninguém para além de %1$s o terá. Para obtê-lo, hiimgosu desafiou-se a ganhar 100%% dos jogos de %s no modo frenético. diff --git a/translation/dest/lag/az-AZ.xml b/translation/dest/lag/az-AZ.xml index 7a37034573..2b77a3b7c0 100644 --- a/translation/dest/lag/az-AZ.xml +++ b/translation/dest/lag/az-AZ.xml @@ -1,6 +1,6 @@ - Lichess-də gecikmə var? + Lichessdə gecikmə var? Ölçmələr davam edir... Xeyr. Şəbəkəniz yaxşıdır. Xeyr. Şəbəkəniz zəifdir. @@ -10,7 +10,7 @@ Serverdə bir gedişi emal etmək üçün keçən vaxt. Bu hamı üçün eynidir və yalnız server yüklənməsindən asılıdır. Daha çox oyunçu olarsa gecikmə daha yüksək olur. Ancaq Lichess mühəndis proqramçıları gecikməni aşağı salmaq üçün əllərindən gələni edirlər. Nadir hallarda 10 ms-dan çox olur. Lichess və Sizin aranızdakı şəbəkə Kompüterinizdən bir gedişi Lichess serverinə göndərmək və cavabı geri almaq üçün keçən vaxt. Bu, Lichess (Fransa) ilə aranızdakı məsafədən və internet bağlantınızın keyfiyyətindən asılıdır. Lichess mühəndis proqramçıları wifi və ya internet sürətinizi düzəldə bilməz. - Üst sətirddəki istifadəçi adınıza klikləyərək istənilən vaxt bu dəyərləri tapa bilərsiniz. + Üst sətirdəki istifadəçi adınıza klikləyərək istənilən vaxt bu dəyərləri tapa bilərsiniz. Gecikmə kompensasiyası Lichess şəbəkə gecikməsini kompensasiya edir. Bu, davamlı və ara sıra yaranan gecikmələri ehtiva edir. Vaxt nəzarəti və kompensasiya edilmiş gecikməyə əsaslanan məhdudiyyətlər və evristika mövcuddur ki, nəticə də hər iki oyunçu üçün insaflı olsun. Nəticədə rəqibinizdən daha yüksək şəbəkə gecikməsinə sahib olmaq bir üstünlük deyil! diff --git a/translation/dest/lag/vi-VN.xml b/translation/dest/lag/vi-VN.xml index ce46ed33a5..fd6fda6407 100644 --- a/translation/dest/lag/vi-VN.xml +++ b/translation/dest/lag/vi-VN.xml @@ -1,5 +1,6 @@ + Lichess có bị treo không? Đang tiến hành đo đạc... Không. Và mạng của bạn tốt. Không. Và mạng của bạn không ổn định. @@ -10,4 +11,6 @@ Mạng giữa Lichess và bạn Thời gian cần để gửi một nước đi từ máy tính của bạn đến máy chủ của Lichess, và nhận phản hồi trở lại. Phụ thuộc cụ thể vào khoảng cách của bạn tới Lichess (Pháp), và vào chất lượng mạng Internet của bạn. Các nhà phát triển của Lichess không thể sửa mạng wifi của bạn hay khiến ánh sáng di chuyển nhanh hơn được. Bạn có thể thấy được hai giá trị này bất cứ lúc nào bằng cách nhấn vào tên của bạn ở thanh trên cùng. + Bù trễ + Lichess bù độ trễ mạng. Điều này bao gồm độ trễ liên tục và độ trễ không thường xuyên. Có giới hạn và kinh nghiệm dựa trên kiểm soát thời gian và độ trễ đã bù cho đến nay, do đó kết quả sẽ hợp lý cho cả hai người chơi. Do đó, việc mạng bị lag cao hơn đối thủ không phải là một điểm chấp! diff --git a/translation/dest/learn/az-AZ.xml b/translation/dest/learn/az-AZ.xml index f9f66556fb..a1f7ad08a2 100644 --- a/translation/dest/learn/az-AZ.xml +++ b/translation/dest/learn/az-AZ.xml @@ -81,7 +81,7 @@ ancaq sən müdafiə oluna bilərsən! Hər hansı müdafiəsiz fiquru götürmələrinə imkan verməyin! Döyüş - Fiqurları vur və müdfiə et + Fiqurları vur və müdafiə et Yaxşı bir döyüşçü həm hücumu, həm müdafiəni bilir! Təbriklər! Şahmat fiqurları ilə necə mübarizə aparacağınızı bilirsiniz! Şah vermə @@ -111,14 +111,14 @@ və ya hücumu blokla! müdafiə oluna bilməyəcək bir şəkildə! Təbriklər! Şahmat oyunları belə qazanılır! Orta - Fuqurların düzülüşü + Fiqurların düzülüşü Oyuna necə başlamalı İki ordu üz-üzə, döyüşə hazırdır. Bu hər bir şahmat oyunun -başlanğıc vəziyyətidir! +başlanğıc pozisisyasıdır! Davam etmək üçün istənilən bir gediş edin. İlk öncə topları yerləşdirin! -Onlar künclərdə yerəşir. +Onlar künclərdə yerləşir. Sonra atları yerləşdir! Onlar topların yanına gedir. Filləri yerləşdirin! @@ -129,7 +129,7 @@ Onlar atların yanına gedir. Düz vəzirin yanına. Piyadalar ön xətti təşkil edir. Davam etmək üçün bir gediş edir. - Təbrikl\'r! Artıq şahmat taxtasını necə quracağınızı bilirsiniz. + Təbriklər! Artıq şahmat lövhəsini necə quracağınızı bilirsiniz. Qalaqurma Xüsusi şah gedişi Şahı təhlükəsiz yerə gətirin və hücum üçün topu hazırlayın! @@ -167,7 +167,7 @@ piyadanız 5-ci horizontalda olanda mümkündür. Təbriklər! Artıq keçiddə piyada götürə bilərsiz. Pat Oyun heç-heçədir - Əgər bir oyunçuya şah verilməyibsə və oyanaya biləcəyi qanuni bir gedişi yoxdursa buna pat deyilir. Oyun heç-heçədir, qalib və məğlub yoxdur. + Əgər bir oyunçuya şah verilməyibsə və oynaya biləcəyi qanuni bir gedişi yoxdursa buna pat deyilir. Oyun heç-heçədir, qalib və məğlub yoxdur. Pat etmək üçün: - Qaralar gediş edə bilməməlidir - Şah vermək mümkün olmamalıdır. @@ -225,7 +225,7 @@ Piyada = 1 Bacardın. Bax belə! Mərhələ %s tamamlandı - Sizin reytqin: + Sizin reytinq Növbəti Menyuya qayıt Tapmaca həll olunmadı! diff --git a/translation/dest/perfStat/az-AZ.xml b/translation/dest/perfStat/az-AZ.xml index 4a3d875cb7..bb32294a2d 100644 --- a/translation/dest/perfStat/az-AZ.xml +++ b/translation/dest/perfStat/az-AZ.xml @@ -23,7 +23,7 @@ Qalibiyyət seriyası Məğlubiyyət seriyası Ən uzun seriya: %s - Hazırki seriya: %s + Hazırkı seriya: %s Ən yüksək reytinqli qələbələr Ən pis xallı məğlubiyyətlər Ardıcıl oynanılan oyunlar diff --git a/translation/dest/preferences/az-AZ.xml b/translation/dest/preferences/az-AZ.xml index 5bb60f6896..15e632dba1 100644 --- a/translation/dest/preferences/az-AZ.xml +++ b/translation/dest/preferences/az-AZ.xml @@ -13,7 +13,7 @@ Hərf (K, Q, R, B, N) Zen rejimi Lövhə ölçüləndirmə tutacağını göstər - Yalnız başlanğıc vəziyyətdə + Yalnız başlanğıc pozisiyada Gözübağli şahmat (görünməz fiqurlar) Şahmat saat Son 10 saniyə diff --git a/translation/dest/preferences/pt-BR.xml b/translation/dest/preferences/pt-BR.xml index 4134a85feb..dbc768aa81 100644 --- a/translation/dest/preferences/pt-BR.xml +++ b/translation/dest/preferences/pt-BR.xml @@ -21,7 +21,7 @@ Barras de progresso verdes horizontais Som ao atingir tempo crítico Dar mais tempo - Comportamento do jogo + Comportamento do jogo Como você move as peças? Clicar em duas casas Arrastar a peça @@ -41,7 +41,7 @@ Mova o rei duas casas Mova o Rei em direção a torre Inclua os lances com o teclado - Limitar setas a movimentos válidos - Diga \"Bom jogo\" após a derrota ou empate + Limitar setas a movimentos válidos + Diga \"Bom jogo\" após a derrota ou empate Suas preferências foram salvas. diff --git a/translation/dest/preferences/pt-PT.xml b/translation/dest/preferences/pt-PT.xml index bed6de38d0..74284ba511 100644 --- a/translation/dest/preferences/pt-PT.xml +++ b/translation/dest/preferences/pt-PT.xml @@ -21,7 +21,7 @@ Barras de progresso verdes horizontais Som ao atingir tempo crítico Dar mais tempo - Funcionamento do jogo + Funcionamento do jogo Como queres mexer as peças? Clicar em duas casas Arrastar a peça @@ -41,5 +41,7 @@ Mover o rei duas casas Mover o rei até à torre Lançar movimentos com o teclado + Alinhar as setas para sítios para onde as peças se podem mover + Dizer \"Good game, well played\" (Bom jogo, bem jogado) após uma derrota ou vitória As tuas preferências foram guardadas. diff --git a/translation/dest/preferences/sv-SE.xml b/translation/dest/preferences/sv-SE.xml index d51c835ece..f66ae228cc 100644 --- a/translation/dest/preferences/sv-SE.xml +++ b/translation/dest/preferences/sv-SE.xml @@ -21,7 +21,7 @@ Horisontella gröna förloppsindikatorer Ljud när tiden blir kritisk Ge mer tid - Spelbeteende + Spelbeteende Flytta pjäser Klicka två rutor Drag pjäs @@ -41,6 +41,7 @@ Flytta kungen två rutor Flytta kungen till tornet eller 2 steg Mata in drag via tangentbord - Säg \"Good game, well played\" vid förlust eller remi + Dra pilar för giltiga drag + Säg \"Bra parti, väl spelat\" vid förlust eller remi Dina inställningar har sparats. diff --git a/translation/dest/puzzle/az-AZ.xml b/translation/dest/puzzle/az-AZ.xml index cc93932dcf..4822b91bd7 100644 --- a/translation/dest/puzzle/az-AZ.xml +++ b/translation/dest/puzzle/az-AZ.xml @@ -13,7 +13,7 @@ Xüsusi gedişlər Bu tapmacanı bəyəndiniz? Sıradakına keçmək üçün səs verin! - Sizin tapmaca reytinginiz: %s + Sizin tapmaca reytinqiniz: %s Ağlar üçün ən yaxşı gedişi tapın. Qaralar üçün ən yaxşı gedişi tapın. Fərdiləşdirilmiş tapmacalar üçün: @@ -24,7 +24,7 @@ Ən yaxşı gediş! Davam edin… Uğurlu! - Tapmaca tamalandı! + Tapmaca tamamlandı! Düzgün gediş deyil! Başqa bir şey yoxlayın. Reytinq: %s diff --git a/translation/dest/puzzle/eo-UY.xml b/translation/dest/puzzle/eo-UY.xml index 6242692247..a306e07777 100644 --- a/translation/dest/puzzle/eo-UY.xml +++ b/translation/dest/puzzle/eo-UY.xml @@ -1,9 +1,15 @@ Puzloj + Puzlaj temoj Rekomendita Fazoj + Motivoj + Progresinta + Longecoj Matoj + Celoj + Originoj Specialaj movoj Ĉu vi ŝatis la puzlon? Voĉdonu por iri al la venonta puzlo! @@ -16,12 +22,18 @@ Bona movo Plej bona movo! Sukceso! + Puzlo kompletigita! Tiu ne estas la movo! Provu ion alian. Taksado: %s kaŝita + + Ludita %s foje + Ludita %s foje + El ludo %s Daŭrigi la trejnadon + Malfacileca nivelo Normale Facile Tre facile @@ -29,4 +41,9 @@ Tre malfacile Ekzamplo Aldonu novan temon + Tuj iri al la venonta puzlo + Puzla panelo + Puzla historio + solvita + malsukcesis diff --git a/translation/dest/puzzle/pt-BR.xml b/translation/dest/puzzle/pt-BR.xml index 2a6e248718..394c430e46 100644 --- a/translation/dest/puzzle/pt-BR.xml +++ b/translation/dest/puzzle/pt-BR.xml @@ -9,7 +9,7 @@ Distância Xeque-mates Objetivos - Origem + Origem Movimentos especiais Você gostou deste quebra-cabeças? Vote para carregar o próximo! @@ -43,7 +43,7 @@ Muito difícil Exemplo Adicionar um outro tema - Ir para o próximo quebra-cabeça imediatamente + Ir para o próximo problema automaticamente Painel do quebra-cabeça Áreas de aprimoramento Pontos fortes diff --git a/translation/dest/puzzle/pt-PT.xml b/translation/dest/puzzle/pt-PT.xml index 1c28dca47e..b32df21325 100644 --- a/translation/dest/puzzle/pt-PT.xml +++ b/translation/dest/puzzle/pt-PT.xml @@ -1,8 +1,53 @@ - Quebra-cabeças + Problemas + Temas de problemas Recomendado Fases + Temas Avançado - Comprimento + Comprimentos + Xeque-mates + Objetivos + Origem + Movimentos especiais + Gostaste deste problema? + Vota para carregares o próximo! + A tua pontuação em problemas: %s + Encontra a melhor jogada para as brancas. + Encontra a melhor jogada para as pretas. + Para obteres problemas personalizados: + Problema %s + Problema do dia + Clica para resolveres + Boa jogada + Melhor jogada! + Continua… + Sucesso! + Problema completo! + Não é esse movimento! + Tenta outra coisa. + Pontuação: %s + oculta + + Jogado %s vez + Jogado %s vezes + + Do jogo %s + Continuar o treino + Nível de dificuldade + Normal + Mais fáceis + Os mais fáceis + Mais difíceis + Os mais difíceis + Exemplo + Adicionar outro tema + Saltar imediatamente para o próximo problema + Painel de controlo dos problemas + Áreas a melhorar + Pontos fortes + Histórico de problemas + resolvido + falhado diff --git a/translation/dest/puzzle/sv-SE.xml b/translation/dest/puzzle/sv-SE.xml index 70cb40d19d..f3382183ba 100644 --- a/translation/dest/puzzle/sv-SE.xml +++ b/translation/dest/puzzle/sv-SE.xml @@ -1,6 +1,7 @@ Problem + Teman för schackproblem Rekommenderad Faser Motiv @@ -8,6 +9,7 @@ Längd Mattar Mål + Ursprung Speciella drag Gillade du det här problemet? Rösta för att ladda nästa! @@ -41,6 +43,11 @@ Svåraste Exempel Lägg till ett annat tema - Hoppa till nästa pussel omedelbart + Hoppa till nästa schackproblem direkt + Meny för schackproblem + Förbättringsområden + Styrkor + Historik för schackproblem löst + olöst diff --git a/translation/dest/puzzle/vi-VN.xml b/translation/dest/puzzle/vi-VN.xml index 8a41338ae9..3fa145e646 100644 --- a/translation/dest/puzzle/vi-VN.xml +++ b/translation/dest/puzzle/vi-VN.xml @@ -40,4 +40,5 @@ Ví dụ Thêm chủ đề khác Chuyển tới câu đố tiếp theo ngay lập tức + Bảng điều khiển câu đố diff --git a/translation/dest/puzzleTheme/az-AZ.xml b/translation/dest/puzzleTheme/az-AZ.xml index ba36ebc1bc..0f8c47abe5 100644 --- a/translation/dest/puzzleTheme/az-AZ.xml +++ b/translation/dest/puzzleTheme/az-AZ.xml @@ -4,7 +4,7 @@ Çevrilən və ya çevrilməyə yaxın bir piyada taktikanın açarıdır. Üstünlük Həlledici üstünlük əldə etmək üçün fürsətdən istifadə edin. (200-600sp arası) - f2 və ya f7 Hücumu + f2 və ya f7 hücumu Qızardılmış qaraciyər (feqatello) hücumunda olduğu kimi, f2-f7 piyadasına hədəflənmiş hücum. Cəlbetmə Rəqib fiqurunu müxtəlif taktikalara imkan verən xanaya getməyə məcbur edən, dəyişmə və ya qurban. @@ -19,11 +19,11 @@ Əzici üstünlük Əzici üstünlük əldə etmək üçün rəqibin kobud səhvini müəyyənləşdirin. (600sp və ondan yüksək) Bərabərləşmə - İtirilmiş bir vəziyyətdən çıxın, heç-heçə və ya balanslı bir mövqe əldə edin. (200sp və daha az) + İtirilmiş bir pozisiyadan çıxın, heç-heçə və ya balanslı bir mövqe əldə edin. (200sp və daha az) Şah cinahında hücum Qısa qalaqurma edən rəqib şahına hücum. Xətt açmaq - Bir xananı veya bir xətti qarşıdan gələn bir taktika üçün açan, əksər hallarda tempo qazandıran gedişlər. + Bir xananı və ya bir xətti qarşıdan gələn bir taktika üçün açan, əksər hallarda tempo qazandıran gedişlər. Müdafiə gedişi Material və ya başqa bir üstünlüyü itirməmək üçün lazım olan dəqiq bir gediş və ya gedişlər ardıcıllığı. Yayındırma @@ -44,7 +44,7 @@ Yolukəsmə Bir və ya hər iki rəqib fiqurunu müdafiəsiz buraxmaq üçün iki rəqib fiquru arasına öz fiqurunu qoymaq, məsələn, iki top arasındakı müdafiə olunan bir xanaya bir at qoymaq. İntermezzo - Gözlənilən bir gedişi oynamaq əvəzinə əvvəlcə rəqibin cavab verməyə məcbur olduğu, dbaşqa bir gediş edin. Buna \"Zwischenzug\" və ya \"Ara gediş\" deyilir. + Gözlənilən bir gedişi oynamaq əvəzinə əvvəlcə rəqibin cavab verməyə məcbur olduğu, başqa bir gediş edin. Buna \"Zwischenzug\" və ya \"Ara gediş\" deyilir. At sonluğu Yalnız atlar və piyadalardan ibarət oyun sonu. Uzun tapmaca @@ -106,7 +106,7 @@ Rentgen hücumu Fiqur, bir xanaya rəqib fiquru üzərindən hücum edir və ya müdafiə edir. Suqsvanq - Rəqib edə biləcəti gediş sayı məhduddur və istənilən gediş vəziyyəti daha da pisləşdirir. + Rəqibin edə biləcəyi gediş sayı məhduddur və istənilən gediş vəziyyəti daha da pisləşdirir. Həftəbecər - Hər şeydən bir az. Nə gözləyəcəyini bilmirsən, ona görə hər şeyə hazır oursan! Eynilə həqiqi oyunlarda olduğu kimi. + Hər şeydən bir az. Nə gözləyəcəyini bilmirsən, ona görə hər şeyə hazır olursan! Eynilə həqiqi oyunlarda olduğu kimi. diff --git a/translation/dest/puzzleTheme/de-DE.xml b/translation/dest/puzzleTheme/de-DE.xml index 8515fb7199..718f21cd4c 100644 --- a/translation/dest/puzzleTheme/de-DE.xml +++ b/translation/dest/puzzleTheme/de-DE.xml @@ -23,7 +23,7 @@ Angriff auf den Königsflügel Ein Angriff auf den gegnerischen König, nachdem dieser auf den Königsflügel rochiert hat. Öffnung - Ein Zug, oft mit Tempo, der ein Feld, eine Linie oder Diagonale für eine nachfolgende taktische Idee öffnet. + Ein Zug, oft mit Tempo, der ein Feld, eine Linie oder Diagonale für ein nachfolgendes taktisches Motiv öffnet. Verteidigungszug Ein präziser Zug oder eine Zugfolge, die benötigt wird, um kein Material oder einen anderen Vorteil zu verlieren. Ablenkung @@ -66,7 +66,7 @@ Matt in 5 oder mehr Finde eine lange, mattsetzende Zugfolge. Mittelspiel - Eine Taktik in der mittleren Phase des Spiels, dem Mittelspiel. + Eine Taktik in der zweiten Phase des Spiels. Einzügige Aufgabe Eine Aufgabe, die nur einen Zug erfordert. Eröffnung diff --git a/translation/dest/puzzleTheme/el-GR.xml b/translation/dest/puzzleTheme/el-GR.xml index 5dcb5e0641..52f0ee279a 100644 --- a/translation/dest/puzzleTheme/el-GR.xml +++ b/translation/dest/puzzleTheme/el-GR.xml @@ -15,10 +15,14 @@ Pοκέ Εξασφαλίστε την ασφάλεια του βασιλιά και αναπτύξτε τον πύργο για επίθεση. Αιχμαλωτίστε τον αμυνόμενο + Σύνθλιψη + Ισότητα + Επιστρέψτε από μια χαμένη θέση και ασφαλίστε μια κλήρωση ή μια ισορροπημένη θέση. (eval ≤ 200cp) Επίθεση στην πλευρά του βασιλιά Επίθεση στον αντίπαλο βασιλιά, μετά από μικρό ροκέ. Αμυντική κίνηση Μια ακριβής κίνηση ή ακολουθία κινήσεων που απαιτείται για να αποφευχθεί η απώλεια υλικού ή άλλου πλεονεκτήματος. + Εκτροπή Επίθεση με αποκάλυψη Διπλό σαχ Διπλό σαχ ως αποτέλεσμα μίας επίθεσης με αποκάλυψη, όπου και το μετακινούμενο κομμάτι δίνει σαχ. @@ -36,6 +40,8 @@ Ένα τέλος παρτίδας μόνο με ίππους και πιόνια. Μεγάλος γρίφος Τρεις κινήσεις για να κερδίσετε. + Master παιχνίδια + Master vs Master παιχνίδια Ματ Κερδίστε το παιχνίδι με στυλ. Ματ σε 1 @@ -66,6 +72,7 @@ Ένα τέλος παρτίδας μόνο με βασίλισσες, πύργους και πιόνια. Επίθεση στην πλευρά της βασίλισσας Επίθεση στον αντίπαλο βασιλιά, μετά από μεγάλο ροκέ. + Ήσυχη κίνηση Φινάλε Πύργων Ένα τέλος παρτίδας μόνο με πύργους και πιόνια. Θυσία @@ -76,12 +83,14 @@ Ένα μοτίβο όπου ένα κομμάτι υψηλής αξίας δέχεται επίθεση, κάνει στην άκρη, και επιτρέπει την επίθεση ή το πάρσιμο ενός κομματιού μικρότερης αξίας πίσω από αυτό, το αντίστροφο δηλαδή του καρφώματος. Ματ αποπνιγμού Ένα ματ που γίνεται από έναν ίππο σε έναν βασιλιάς ο οποίος δεν μπορεί να μετακινηθεί όντας περιτριγυρισμένος (ή πνιγμένος) από δικά του κομμάτια. + Παιχνίδια Super GM Παγιδευμένο κομμάτι Ένα κομμάτι δεν μπορεί να αποφύγει το πάρσιμο, καθώς έχει περιορισμένες κινήσεις. Προαγωγή σε κομμάτι μικρότερης αξίας Προώθηση σε ιππότη, αξιωματικό ή πύργο. Πολύ μεγάλος γρίφος Τέσσερις κινήσεις ή περισσότερα για να κερδίσετε. + Επίθεση ακτίνας Χ Τσούγκτσβανγκ Ο αντίπαλος είναι περιορισμένος στις κινήσεις που μπορεί να κάνεί και οποιαδήποτε κίνηση επιλέξει επιδεινώνει την θέση του. Προτεινόμενο μίγμα diff --git a/translation/dest/puzzleTheme/eo-UY.xml b/translation/dest/puzzleTheme/eo-UY.xml index f7e485ce58..a86f1411d7 100644 --- a/translation/dest/puzzleTheme/eo-UY.xml +++ b/translation/dest/puzzleTheme/eo-UY.xml @@ -8,20 +8,34 @@ Egaligi Atako al la reĝa flanko Defenda movo + Malkovrita atako Duobla ŝako Finludo + Neprotektita reĝo Forko Interfero Ĉevala finludo Longa puzlo Tri movoj por venki. + Majstraj ludoj + Majstro kontraŭ Majtro ludoj + Puzloj el ludoj inter du titolitaj ŝakistoj. Mato + Mato en 1 + Mato en 2 + Mato en 3 + Mato en 4 + Mato en 5 aŭ pli + Mezludo + Unumova puzlo + Malfermo Peona finludo Damigo Dama finludo Damo kaj Turo Atako al la dama flanko Tura finludo + Ofero Mallonga puzlo Du movoj por venki. Damigi al ĉevalo, kuriero aŭ turo. diff --git a/translation/dest/puzzleTheme/pt-BR.xml b/translation/dest/puzzleTheme/pt-BR.xml index 2fe9ddd87b..54ced8430c 100644 --- a/translation/dest/puzzleTheme/pt-BR.xml +++ b/translation/dest/puzzleTheme/pt-BR.xml @@ -49,9 +49,9 @@ Um final jogado apenas com cavalos e peões. Quebra-cabeças longo Vitória em três movimentos. - Partidas de mestres + Partidas de mestres Quebra-cabeças de partidas jogadas por jogadores titulados. - Partidas de Mestre vs Mestre + Partidas de Mestre vs Mestre Quebra-cabeças de partidas entre dois jogadores titulados. Xeque-mate Vença o jogo com estilo. @@ -93,9 +93,9 @@ Vitória em dois lances. Raio X Um movimento que envolve uma peça de alto valor sendo atacada fugindo do ataque e permitindo que uma peça de menor valor seja capturada ou atacada, o inverso de cravada. - Mate de Philidor + Mate de Philidor (mate sufocado) Um xeque-mate dado por um cavalo onde o rei é incapaz de mover-se porque está cercado (ou sufocado) pelas próprias peças. - Super partidas de GMs + Super partidas de GMs Quebra-cabeças de partidas jogadas pelos melhores jogadores do mundo. Peça presa Uma peça é incapaz de escapar da captura, pois tem movimentos limitados. diff --git a/translation/dest/puzzleTheme/pt-PT.xml b/translation/dest/puzzleTheme/pt-PT.xml index 4f3e028ac9..8b2dbc069f 100644 --- a/translation/dest/puzzleTheme/pt-PT.xml +++ b/translation/dest/puzzleTheme/pt-PT.xml @@ -15,4 +15,98 @@ Roque Proteger o rei e trazer a torre para o ataque. Capturar o defensor + Remove uma peça que seja crítica para a defesa de outra peça, permitindo que esta seja capturada na próxima jogada. + Esmagar + Descobre um erro grave do oponente e obtém uma vantagem esmagadora. (avaliação ≥ 600cp) + Igualdade + Recupera de uma posição perdedora e garante um empate ou uma posição de equilíbrio. (avaliação ≤ 200cp) + Ataque no lado do rei + Um ataque ao rei do adversário, depois de este ter feito roque menor (para o lado do rei). + Limpeza + Uma jogada, com tempo, que limpa uma casa, fila, coluna ou diagonal para uma ideia tática subsequente. + Movimento defensivo + Um movimento ou sequência de movimentos precisos, necessários para evitar uma desvantagem, como por exemplo perda de material. + Desvio + Uma jogada que distrai uma peça do adversário de outra função, como por exemplo, proteger uma casa chave. Às vezes também é chamado de sobrecarga. + Ataque descoberto + Mover uma peça que estava a bloquear um ataque de uma peça de longo alcance, como por exemplo um cavalo que sai da frente de uma torre. + Xeque duplo + Fazer xeque com duas peças ao mesmo tempo, como consequência de um ataque descoberto em que tanto a peça que move como a peça que é descoberta atacam o rei do adversário. + Final de jogo + Uma tática durante a última fase do jogo. + Uma tática que envolve a regra de \"en passant\", onde um peão pode capturar um peão adversário que o ignorou usando o seu primeiro movimento de duas casas. + Rei exposto + Uma tática que envolve um rei com poucos defensores ao seu redor, muitas vezes levando a xeque-mate. + Garfo + Uma jogada em que uma peça ataca duas peças do adversário simultaneamente. + Peça desprotegida + Uma tática que envolve uma peça do adversário que não está suficientemente defendida e por isso pode ser capturada. + Interferência + Jogar uma peça para uma casa entre duas peças do adversário deixando pelo menos uma delas desprotegia, como por exemplo um cavalo numa casa defendida entre duas torres. + Intermezzo + Em vez de jogares o movimento esperado, primeiro interpõe outro movimento colocando uma ameaça imediata à qual o oponente deve responder. Também conhecido como \"Zwischenzug\" ou jogada intermédia. + Final de cavalo + Um final de jogo com apenas cavalos e peões. + Problema longo + Três movimentos para ganhar. + Jogos de mestres + Problemas de partidas jogadas por jogadores titulados. + Jogos de Mestre vs Mestre + Partidas jogadas entre dois jogadores titulados. + Xeque-mate + Vence a partida com estilo. + Mate em 1 + Faz xeque-mate num movimento. + Mate em 2 + Faz xeque-mate em dois movimentos. + Mate em 3 + Faz xeque-mate em três movimentos. + Mate em 4 + Faz xeque-mate em quatro movimentos. + Mate em 5 ou mais + Descobre uma longa sequência que leva ao xeque-mate. + Meio-jogo + Uma tática durante a segunda fase do jogo. + Problema de um movimento + Um problema que é resolvido com apenas um movimento. + Abertura + Uma tática durante a primeira fase do jogo. + Final de peões + Um final de jogo só com peões. + Cravada + Uma tática que envolve cravadas, onde uma peça é incapaz de se mover sem revelar um ataque a uma peça de valor superior. + Promoção + A promoção ou ameaça de promoção de um peão é a chave desta tática. + Final de rainha + Um final de jogo com apenas rainhas e peões. + Rainha e torre + Um final de jogo só com rainhas, torres e peões. + Ataque no lado da rainha + Um ataque ao rei do adversário, depois de este ter feito roque maior (para o lado da rainha). + Jogada subtil + Um movimento que não faz uma cheque nem captura, mas prepara uma ameaça inevitável. + Final de torre + Um final de jogo com apenas torres e peões. + Sacrifício + Uma tática que involve abdicar de material a curto prazo, para ganhar uma vantagem após uma sequência forçada de movimentos. + Problema curto + Duas jogadas para ganhar. + Cravada inversa + Uma tática que envolve uma peça de alto valor que está ser atacada, mas ao afastar-se, permite que uma peça de menor valor, que estava atrás dela, seja capturada ou atacada. É o inverso da cravada. + Mate de Philidor + Uma xeque-mate feito por um cavalo em que o rei não se pode mover porque está rodeado pelas suas próprias peças. Também conhecido como mate sufocado. + Jogos de Super GM + Problemas de partidas jogadas pelos melhores jogadores do mundo. + Peça encurralada + Uma peça não consegue escapar à captura, pois tem movimentos limitados. + Subpromoção + Promoção para um cavalo, bispo ou torre. + Problema muito longo + Quatro jogadas para ganhar. + Ataque raio-X + Uma peça ataque ou defende uma casa através de uma peça inimiga. + Zugzwang + O adversário está limitado quanto aos seus movimentos, e todas as jogadas pioram a sua posição. + Mistura saudável + Um pouco de tudo. Não sabes o que esperar, então ficas pronto para qualquer coisa! Exatamente como em jogos de verdade. diff --git a/translation/dest/puzzleTheme/sv-SE.xml b/translation/dest/puzzleTheme/sv-SE.xml index de4de4ca58..601e4e9f24 100644 --- a/translation/dest/puzzleTheme/sv-SE.xml +++ b/translation/dest/puzzleTheme/sv-SE.xml @@ -26,8 +26,33 @@ Ett drag, ofta med tempo, som rensar en ruta, linje eller diagonal för en uppföljande taktisk idé. Defensiva drag Ett exakt drag eller sekvens av drag som är nödvändiga behövs för att undvika att förlora material eller annan fördel. + Avledande drag + Ett drag som avleder en motståndarpjäs från en annan uppgift, såsom att bevaka en viktig ruta. Kallas Ibland också \"överbelastning\". + Avdragsattack + Flytta en pjäs som tidigare blockerade en attack från en annan pjäs med lång räckvidd, såsom en springare ur vägen för ett torn. + Dubbelschack + Schack med två pjäser i samma drag, som ett resultat av avdragsattack (avdragsschack) där både den rörliga pjäsen och den avtäckta pjäsen attackerar motståndarens kung. Slutspel + En taktik under spelets sista fas. + En taktik som involverar \"en passant\"-regeln, där en bonde kan slå en bonde som har passerat den med ett tvåstegsdrag. + Oskyddad kung + En taktik som involverar en kung med få försvarare runt omkring sig, leder ofta till schack matt. + Gaffel + Ett drag där den rörda pjäsen attackerar två motståndarpjäser samtidigt. + Ogarderad pjäs + En taktik som drar fördel av att en motståndares pjäs är oförsvarad eller otillräckligt försvarad och fri att slå. + Interference + Placerar en pjäs mellan två motståndares pjäser för att lämna en eller båda motståndarpjäserna ogarderade, till exempel springare på en garderad ruta mellan två torn. + Mellandrag + Istället för att spela det förväntade draget, görs ett annat drag som utgör ett omedelbart hot som motståndaren måste svara på. Även känt som \"Zwischenzug\" eller \"Intermezzo\". + Springare-slutspel + Ett slutspel med bara springare och bönder. + Långa schackproblem Tre drag för att vinna. + Mästarpartier + Schackproblem från partier som spelats av spelare med mästartitel. + Mästare mot Mästare-partier + Schackproblem från partier som spelats av två spelare med mästartitel. Matt Vinn partiet med stil. Matt i 1 drag @@ -40,13 +65,48 @@ Gör schackmatt i fyra drag. Matt i 5 eller fler drag Räkna ut en lång schackmattsekvens. + Mittspel + En taktik under spelets andra fas. + Schackproblem med bara ett drag + Ett schackproblem som bara är ett drag långt. + Öppning + En taktik under spelets första fas. Bondeslutspel Ett slutspel med endast bönder. + Fastlåsning + En taktik som involverar fastlåsning, där en attackerad pjäs inte kan flyttas utan att exponera en mer värdefull pjäs. Promovering + En taktik som bygger på en bonde som förvandlas eller hotar att förvandlas. + Dam-slutspel + Ett slutspel med endast dam och bönder. Dam och torn Ett slutspel med endast damer, torn och bönder. + Attack på damsidan + En attack mot motståndarens kung, efter att motståndaren gjort kort rockad. + Tyst drag + Ett drag som inte gör en schackar eller slår, men förbereder ett oundvikligt hot för ett senare drag. Tornslutspel Ett slutspel med endast torn och bönder. - Kort pussel + Offer + En taktik som innebär att man ger upp material på kort sikt, för att vinna en fördel efter en tvingande sekvens av drag. + Kort schackproblem Två drag för att vinna. + Dolk + En taktik som innebär att en värdefull pjäs attackeras för att tvinga bort den från en pjäs bakom som då kan slås eller attackeras. Motsatsen till fastlåsning. + Kvävmatt + Schack matt av en springare där den schackade kungen inte kan röra sig eftersom den är instängd (eller kvävd) av sina egna pjäser. + Super GM-partier + Schackproblem från partier spelade av de bästa spelarna i världen. + Fångad pjäs + En pjäs kan inte komma undan eftersom den inte kan flytta till någon bra ruta. + Underförvandling + Förvandling till springare, löpare eller torn. + Mycket långa schackproblem + Fyra eller fler drag för att vinna. + Röntgenattack + En pjäs attackerar eller försvarar en ruta, genom en motståndarpjäs. + Zugzwang + Motspelaren har begränsat antal möjliga drag, och alla möjliga drag förvärrar motspelarens position. + Blandad kompott + Lite av varje. Du vet inte vad som kommer, så du behöver vara redo för allt! Precis som i riktiga partier. diff --git a/translation/dest/puzzleTheme/vi-VN.xml b/translation/dest/puzzleTheme/vi-VN.xml index 1e25dacc0b..57319d518f 100644 --- a/translation/dest/puzzleTheme/vi-VN.xml +++ b/translation/dest/puzzleTheme/vi-VN.xml @@ -41,12 +41,20 @@ Một nước đi mà một quân cờ tấn công hai quân cờ của đối phương cùng lúc. Quân cờ không được bảo vệ Một chiến thuật liên quan đến quân cờ của đối phương không được phòng thủ hoặc phòng thủ không đủ dẫn tới việc có thể ăn quân cờ đấy. + Giao thoa + Di chuyển một quân cờ giữa hai quân cờ đối thủ để một hoặc cả hai quân cờ đối thủ không bị cản trở, chẳng hạn như một quân Mã trên ô vuông được bảo vệ giữa hai quân Xe. Intermezzo + Thay vì chơi nước đi dự kiến, trước tiên hãy xen vào một nước đi khác gây ra mối đe dọa ngay lập tức mà đối thủ phải trả lời. Còn được gọi là \"Zwischenzug\" hoặc \"Ở giữa\". Tàn cuộc với Mã Một thế cờ tàn chỉ có mã và tốt. Câu đố dài Thắng trong ba nước cờ. + Ván đấu cao cấp + Câu đố từ các trò chơi do người chơi có tiêu đề (GM, IM, NM, FM) chơi. + Ván đấu giữa 2 kiện tướng + Câu đố từ các trò chơi giữa người chơi có tiêu đề (GM, IM, NM, FM) chơi. Chiếu hết + Chiến thắng trò chơi với phong cách. Chiếu hết trong 1 nước Chiếu hết trong một nước cờ. Chiếu hết trong 2 nước @@ -75,17 +83,22 @@ Một thế cờ tàn chỉ có hậu, xe và tốt. Tấn công cánh hậu Tấn công vua đối phương sau khi họ nhập thành cánh hậu. + Nước đi tĩnh lặng Một nước cờ không chiếu hay ăn quân của đối phương, nhưng lại tạo ra một sự đe dọa không tránh khỏi cho một nước đi sau. Tàn cuộc với Xe Một thế cờ tàn chỉ có xe và tốt. Hy sinh + Một chiến thuật liên quan đến việc từ bỏ vật liệu trong thời gian ngắn, để giành lại lợi thế sau một chuỗi di chuyển bắt buộc. Câu đố ngắn Thắng trong hai nước cờ. Đòn xiên Một mô típ liên quan tới việc một quân cờ có giá trị cao bị tấn công buộc phải di chuyển khỏi vị trí, dẫn tới một quân cờ giá trị thấp hơn ở phía sau bị tấn công hoặc ăn, ngược lại so với ghim. Một nước chiếu hết với quân mã mà trong đó vua đối phương không thể di chuyển vì bị bao vây bởi chính các quân cờ khác của họ. + Ván đấu từ Siêu Đại Kiện Tướng + Câu đố từ những ván đấu đã được chơi bởi những kì thủ giỏi nhất trên thế giới. Quân bị kẹt Một quân cờ không thể thoát khỏi việc bị ăn vì nó bị giới hạn các nước đi. + Phong cấp thấp Phong cấp thành mã, tượng hoặc xe. Câu đố rất dài Bốn nước cờ hoặc hơn để chiến thắng. @@ -93,5 +106,6 @@ Một quân cờ tấn công hoặc phòng thủ một ô bàn cờ thông qua một quân cờ khác của đối phương. Zugzwang Đối phương bị giới hạn các nước mà họ có thể đi và tất cả các nước đi đấy đều khiến vị trị của họ tệ hơn. + Một sự kết hợp nhẹ nhàng Mỗi thứ một chút. Bạn không biết phải chờ đợi gì cả, vậy nên bạn sẽ sẵn sàng cho mọi thứ! Như một ván cờ thật vậy. diff --git a/translation/dest/puzzleTheme/zh-TW.xml b/translation/dest/puzzleTheme/zh-TW.xml index 498f69c35d..27cd40455a 100644 --- a/translation/dest/puzzleTheme/zh-TW.xml +++ b/translation/dest/puzzleTheme/zh-TW.xml @@ -49,6 +49,7 @@ 只剩車和兵的殘局 短題目 兩步獲勝 + 來自世界各地優秀玩家對局的戰術題 升變 升變成騎士、象或車 非常長的題目 diff --git a/translation/dest/search/az-AZ.xml b/translation/dest/search/az-AZ.xml index fe93f2449a..01ab207270 100644 --- a/translation/dest/search/az-AZ.xml +++ b/translation/dest/search/az-AZ.xml @@ -14,10 +14,10 @@ Məğlub olan Bu tarixdə: Bu tarixə qədər: - Oyunçunun rəqibi insan mı yoxsa kompüterdimi + Oyunçunun rəqibi insanmı yoxsa kompüterdirmi Zorluq səviyyəsi Qaynaq - Gediş sayısı + Gediş sayı Nəticə Qalibin rəngi Tarix diff --git a/translation/dest/site/az-AZ.xml b/translation/dest/site/az-AZ.xml index 92f18076c7..306e221da1 100644 --- a/translation/dest/site/az-AZ.xml +++ b/translation/dest/site/az-AZ.xml @@ -22,8 +22,8 @@ Bir oyun yarat Ağlar qalib gəldi Qaralar qalib gəldi - Ağlarla oynuyursunuz - Qaralarla oynuyursunuz + Ağlarla oynayırsınız + Qaralarla oynayırsınız Sizin növbənizdir! Şah mərkəzdə Üç şah @@ -57,7 +57,7 @@ Təhlil lövhəsi Dərinlik %s Server analizi edilir - Mühəriik yüklənir ... + Mühərrik yüklənir ... Bulud təhlili Daha dərinə get Təhdidi göstər @@ -93,7 +93,7 @@ Növbəti vurma və ya piyada gedişi %s yarımgediş sonra (50 gediş qaydasının sıfırlanmasına qalan məsafə) Oyun tapılmadı - Bəlkə seçimlər menyusunda daha çox oyun daxil edilməsini seçəsiniz? + Bəlkə tərcihlər menyusunda daha çox oyunun daxil edilməsini seçəsiniz? Debüt tədqiqatçısı %s debüt bazası Qələbə 50 gediş qaydasına görə hesaba alınmadı @@ -121,9 +121,9 @@ Qeyri-dəqiqlik Qeyri-dəqiqliklər Gediş müddəti - Lövhəni firlat - Üç dəfə təkrar - Heç-heçəyə iddia + Lövhəni fırlat + Üçqat təkrar + Heç-heçə tələb et Heç-heçə təklif et Heç-heçə @@ -175,7 +175,7 @@ Reytinq statistikaları İstifadəçi adı İstifadəçi adı və ya email - İstidadəçi adını dəyiş + İstifadəçi adını dəyiş Sadəcə istifadəçi adınızdakı böyük/kiçik hərfləri dəyişdirə bilərsiniz. Məsələn \"johndoe\" ilə \"JohnDoe\" kimi. İstifadəçi adınızı dəyişdirin. Bu prosesi sadəcə 1 (bir) dəfə gərçəkləşdirə bilərsiniz və sadəcə mövcud istifadəçi adınızdakı hərfləri (\"johndoe\", \"JohnDoe\") dəyiştirə bilərsiniz. Şifrə @@ -183,7 +183,7 @@ Emaili dəyiş Email Şifrəni yenilə - Şifrəni unutmsuz? + Şifrəni unutmusuz? Sıralama Sıralama: %s @@ -225,7 +225,7 @@ Reytinqsiz Reytinqli Reytinqsiz - Reytingli + Reytinqli Bu, reytinqli oyundur Revanş Revanş təklifi göndərildi @@ -277,7 +277,7 @@ %s saniyə ver %s saniyə ver - Bu hesap Lichess İstifadə Şərtlərini pozdu + Bu hesab Lichess İstifadə Şərtlərini pozmuşdur Bu oyunçu öz reytinqini süni şəklidə artırıb azaldır Debüt & endşpil bazası Dala qaytarma @@ -300,7 +300,7 @@ %s çalışma Turnirə baxmaq - Turnire qayıt + Turnirə qayıt Tematik ≥ %s reytinqli oyun @@ -338,13 +338,13 @@ Tətbiq et Saxla Liderlik cədvəli - FEN mətnini bura yapıştırın + FEN mətnini bura yapışdırın PGN mətnini bura yapışdırın - Özəl mövqedən + Pozisiyadan Buradan davam edin Çalışma Oyun daxil edin - Göz gəzdiriləbilən bir oyun təkrarı, kompüter analizi, oyun söhbəti ve paylaşılabilən bir URL əldə etmək üçün bir oyun PGN\'si daxil edin. + Göz gəzdiriləbilən bir oyun təkrarı, kompüter analizi, oyun söhbəti və paylaşılabilən bir URL əldə etmək üçün bir oyun PGN-si daxil edin. %s oyun daxil edildi %s oyun daxil edildi @@ -358,7 +358,7 @@ Yenidən sına Yenidən qoşulur - %s dost onlayn + %s onlayn dost %s dost onlayn Onlayn dost yoxdur @@ -401,7 +401,7 @@ Qatılma şərtləri: Ətraflı tənzimləmələr Turnir üçün çox etibarlı bir ad seçin. - Her hansı uyğunsuz bir ad, hesabınızın bağlanmasına yol aça bilər. + Hər hansı uyğunsuz bir ad, hesabınızın bağlanmasına yol aça bilər. Turnirə görkəmli bir şahmatçının adını vermək üçün boş buraxın. Bunlara toxunmamağınızı məsləhət görürük. Giriş tələbləri qoysanız, turnirinizə daha az oyunçu qoşulacaq. @@ -432,10 +432,10 @@ Lövhə redaktoru Lövhəni tənzimlə Məşhur debütlər - Başlanğıc vəziyyəti + Başlanğıc pozisiyası Lövhəni təmizlə - Mövqeni yadda saxla - Mövqeni yüklə + Pozisiyanı yadda saxla + Pozisiyanı yüklə Özəl %s haqqında moderatorlara şikayət bildir. Profil tamamlama: %s @@ -448,7 +448,7 @@ Soyad Özü haqqında Ölkə - Təşşəkkürlər! + Təşəkkürlər! Sosial media bağlantıları Sətirarası notasiya Lichess TV izlə @@ -520,8 +520,8 @@ Sürətli Normal Yavaş - Lövhənin daxilində - Taxtanın xaricində + Lövhə daxilində + Lövhə xaricində Yavaş oyunlarda Həmişə Heç vaxt @@ -580,7 +580,7 @@ Bu email artıq istifadə edilir Bu sizin inidiki email ünvanınızdır Əgər reytinq ± %s olarsa - Yanlız dostlar + Yalnız dostlar Menyu Qalaqurma Ağlar O-O @@ -601,7 +601,7 @@ %s haqqında %1$s ödənişsiz (%2$s), sərbəst, reklamsız, açıq mənbəli şahmat serveridir. həqiqətən - Töhvə ver + Töhfə ver Xidmət şərtləri Mənbə kodu Sinxron seanslar @@ -619,7 +619,7 @@ Sinxron seanslar adətən reytinqsizdir. Revanşlar, dala qaytarmalar və əlavə vaxt qadağan edilmişdir. Yarat Bir Seans yaratdığınızda eyni anda bir neçə oyunçu ilə oynamağa başlayırsınız. - Əgər bir neçə oyun variantı seçsəniz, hər bir oyunçu oynaqmaq istədiyi variantı seçə biləcək. + Əgər bir neçə oyun variantı seçsəniz, hər bir oyunçu oynamaq istədiyi variantı seçə biləcək. Fişer Saatını quraşdırma. Daha çox oyunçu götürsəniz, daha çox vaxta ehtiyacınız ola bilər. Sinxron seansla başa çıxmaq üçün öz saatınıza əlavə vaxtlar artıra bilərsiniz. Ev sahibinin əlavə vaxtı @@ -634,13 +634,13 @@ Rəyləri göstər/gizlə giriş/çıxış variasiyası Yeni turnir - Müxtəlif zaman kontrollu və variantlı şahmat turnurləri + Müxtəlif zaman kontrollu və variantlı şahmat turnirləri Sürətli şahmat turnirləri oyna! Rəsmi təyin olunmuş turnirlərə qoşul və ya özün turnir yarat. Bullet, Blitz, Klassik, Chess960, King of the Hill, Threecheck və digər sonsuz şahmat əyləncəsi. Turnir tapılmadı Bu turnir mövcud deyil Əgər turnir başlamadan öncə bütün oyunçular turniri tərk edərsə, turnir ləğv oluna bilər. Turnirin ana səhifəsinə qayıt - Həftəlik %s reytinq dağılımı + Həftəlik %s reytinq əyrisi Bu həftə %1$s %2$s oyunçusu. Bu həftə %1$s %2$s oyunçusu. @@ -648,17 +648,17 @@ Sənin %1$s reytinqin %2$s-dir Sən %1$s oyunçulardan %2$s daha yaxşısan. %1$s %3$s oyunçularından %2$s daha yaxşıdır. - Sən müəyyən olunmuş %s reytinqə malik deyilsən. + Sən müəyyən olunmuş %s reytinqinə malik deyilsən. Sizin reytinq Məcmu Glicko-2 reytinqi Emailini yoxla Biz sənə email göndərdik. Hesabını aktivləşdirmək üçün linkə kliklə. - Əgər emaili görmürsünzsə, onun ola biləçəyi digər yerləri, məsələn, zibil qutusu, spam, sosial və digər qovluqları nəzərdən keçirin. + Əgər emaili görmürsünzsə, onun ola biləcəyi digər yerləri, məsələn, zibil qutusu, spam, sosial və digər qovluqları nəzərdən keçirin. Biz %s ünvanına email göndərdik. Şifrəni yeniləmək üçün emailinizdəki linkə klikləyin. Qeydiyyatdan keçməklə siz, bizim %s ilə razılaşırsınız. %s haqqında oxuyun. - Siz və lichess arasında şəbəkə geçikməsi + Siz və lichess arasında şəbəkə gecikməsi Lichess serverində gedişi emal etmə zamanı Annotasiyanı endir. Annotasiyasız endir @@ -692,7 +692,7 @@ Bullet, blitz, klassik Yazışmalı şahmat Onlayn və oflayn oyun - Həlli bax + Həllə bax Dostlarını izlə və oyuna çağır %s dildə mövcuddur! @@ -841,7 +841,7 @@ %1$s komandası Hələ forumlarda yazı göndərə bilməzsiniz. Biraz oyun oynayın! Abunə ol - Abunəlikdən çıx + Abunəlikdən çıxın Çağırış rədd edildi Çağırış qəbul edildi! Çağırışdan imtina edildi. diff --git a/translation/dest/site/ga-IE.xml b/translation/dest/site/ga-IE.xml index 4c471be691..75a1efc064 100644 --- a/translation/dest/site/ga-IE.xml +++ b/translation/dest/site/ga-IE.xml @@ -9,6 +9,7 @@ Do shealsa %1$s leibhéal %2$s Leibhéal + Caighdeán imeartha Scoránú comhrá Scoránú fuaime Comhrá @@ -210,6 +211,7 @@ Ábhar Faighteoir Seol + Méadú i soicindí Ficheall Shaor in Aisce Ar Líne Lucht féachana: @@ -273,6 +275,9 @@ ≥ %1$s cluichí rátáilte %2$s ≥ %1$s cluichí rátáilte %2$s + Tá rátáil %s sealadach agat + Tá do rátáil %1$s (%2$s) ró-ard + Tá an rátáil seachtainiúil %1$s is fearr agat (%2$s) ró-ard Caithfidh tú a bheith i bhfoireann %s Níl tú sa bhfoireann %s Ar ais don chluiche @@ -353,6 +358,7 @@ Seasamh Cruthaigh comórtas nua Féilire na gcomórtas + Riachtanais iontrála: Socruithe níos casta Pioc ainm an-sábhailte don chomórtas. D\'fhéatfadh go bhfhaighidhfeá aon rud atá neamhoiriúineach in aon chaoi do chuntas dúnta. diff --git a/translation/dest/site/ja-JP.xml b/translation/dest/site/ja-JP.xml index 8fc772788a..b76ab6d9e9 100644 --- a/translation/dest/site/ja-JP.xml +++ b/translation/dest/site/ja-JP.xml @@ -7,7 +7,7 @@ 相手を待っています 待機中 あなたの手番です - %1$s レべル %2$s + %1$s レベル %2$s レベル チャットのオン・オフ 音声のオン・オフ @@ -666,7 +666,7 @@ 棋譜解析 %1$sが %2$s を作成しました - %1$sが %2$s に参加しました + %1$sが %2$s に参加 %1$s が %2$s に「いいね」しました。 %1$s が研究 %2$s を作成 自動ペアリング diff --git a/translation/dest/site/pt-BR.xml b/translation/dest/site/pt-BR.xml index 8b94cd4f52..821fd7fc49 100644 --- a/translation/dest/site/pt-BR.xml +++ b/translation/dest/site/pt-BR.xml @@ -726,7 +726,7 @@ Ajude Lichess diretamente Jogue com estilo Básicos do xadrez - Tutores + Professores PGN inválido FEN inválido O mínimo de caracteres é %s diff --git a/translation/dest/site/pt-PT.xml b/translation/dest/site/pt-PT.xml index fda0aef631..c53f4d3f76 100644 --- a/translation/dest/site/pt-PT.xml +++ b/translation/dest/site/pt-PT.xml @@ -9,6 +9,7 @@ É a tua vez %1$s nível %2$s Nível + Nível Ativar/Desativar o chat Ativar/desativar o som Chat @@ -511,6 +512,7 @@ análise de computador, sala de chat do jogo e link de partilha. Tempo inicial no relógio Incremento no relógio Privacidade + Política de privacidade Permitir que outros jogadores te sigam Permitir que outros jogadores te desafiem Permitir que outros jogadores te convidem para estudos @@ -656,6 +658,7 @@ análise de computador, sala de chat do jogo e link de partilha. Se você não vires o e-mail, verifica outros locais onde este possa estar, como pastas de lixo, spam, social ou outras. Enviámos-te um e-mail para %s. Clica no link nesse e-mail para redefinires a tua palavra-passe. Ao criares uma conta, concordas comprometeres-te com os nossos %s. + Lê sobre a nossa %s. Atraso na rede entre ti e o Lichess Tempo para processar um movimento no servidor do Lichess Descarregar a anotação @@ -840,4 +843,7 @@ análise de computador, sala de chat do jogo e link de partilha. Ainda não podes publicar nos fóruns. Joga alguns jogos! Subscrever-se Cancelar a subscrição + Desafio recusado + Desafio aceite! + Desafio cancelado. diff --git a/translation/dest/site/sv-SE.xml b/translation/dest/site/sv-SE.xml index 705cf3de82..293b3bc58e 100644 --- a/translation/dest/site/sv-SE.xml +++ b/translation/dest/site/sv-SE.xml @@ -9,6 +9,7 @@ Din tur %1$s nivå %2$s Nivå + Styrka Dölj/visa chattrutan Ljud av/på Chatta diff --git a/translation/dest/site/vi-VN.xml b/translation/dest/site/vi-VN.xml index 1d605c032d..c48410c5a4 100644 --- a/translation/dest/site/vi-VN.xml +++ b/translation/dest/site/vi-VN.xml @@ -9,7 +9,7 @@ Lượt của bạn %1$s cấp độ %2$s Cấp độ - Độ mạnh + Độ mạnh Bật/tắt chat Bật/Tắt âm thanh Trò chuyện @@ -805,4 +805,7 @@ Bạn bây giờ chưa thể đăng bài lên diễn đàng được. Chơi vài trận đi! Đăng kí Hủy đăng ký + Thử thách đấu bị từ chối + Lời thách đấu được chấp nhận! + Lời thách đấu bị hủy bỏ. diff --git a/translation/dest/site/zh-TW.xml b/translation/dest/site/zh-TW.xml index f34a152783..53a08decad 100644 --- a/translation/dest/site/zh-TW.xml +++ b/translation/dest/site/zh-TW.xml @@ -9,6 +9,7 @@ 輪到您了 %1$s 難度 %2$s 難度 + 強度 聊天開關 聲音開關 聊天 @@ -481,6 +482,7 @@ 棋鐘起始時間 加秒 隱私 + 隱私條款 允许其他玩家关注 允许其他玩家挑战 允許其他棋手邀請你參加研討 @@ -622,6 +624,7 @@ 若您沒收到郵件,請檢查您的其他收件箱,例如垃圾箱、促銷、社交等。 我們發送了一封郵件到 %s。點擊郵件中的連結來重置您的密碼。 您一登记,我们就假设您同意尊重我们的使用规则(%s)。 + 閱讀我們的%s 您和 lichess 之間的網絡時滯 lichess 伺服器上處理走棋的時間 下载带笔记的记录 @@ -802,4 +805,7 @@ 您目前不能發表文章在論壇裡,先下幾盤棋吧! 訂閱 取消訂閱 + 發起的對弈已拒絕 + 發起的對弈已接受 + 發起的對弈已撤銷 diff --git a/translation/dest/streamer/az-AZ.xml b/translation/dest/streamer/az-AZ.xml index 5c69f85921..c715488180 100644 --- a/translation/dest/streamer/az-AZ.xml +++ b/translation/dest/streamer/az-AZ.xml @@ -15,7 +15,7 @@ Yayımçı dəstini endir %s yayımdadır Yayım qaydaları - Lichess-də yayım qoşarkən, yayım başlığına \"lichess.org\" açar sözünü daxil edin və Şahmat kateqoriyasını seçin. + Lichessdə yayım qoşarkən, yayım başlığına \"lichess.org\" açar sözünü daxil edin və Şahmat kateqoriyasını seçin. Lichess ilə əlaqəsi olmayan bir yayım edərkən bu açar sözü çıxardın. Lichess, yayımınızı avtomatik aşkarlayacaq və bu üstünlükləri aktivləşdirəcək: Açar söz ilə yayım aparmağın üstünlükləri @@ -35,7 +35,7 @@ Bunu Lichess yayım tənzimləmələrində yox, YouTube və ya Twitch səhifəni Twitch istifadəçi adınız və ya URL-niz İstəyə bağlı. Yoxdursa boş buraxın YouTube kanal kimliyiniz və ya URL-niz - Lichess-dəki yayımçı adınız + Lichess yayımçı adınız Qısa saxlayın: ən çox %s simvol Qısa saxlayın: ən çox %s simvol diff --git a/translation/dest/study/az-AZ.xml b/translation/dest/study/az-AZ.xml index 2d8836eb0b..49e04b951a 100644 --- a/translation/dest/study/az-AZ.xml +++ b/translation/dest/study/az-AZ.xml @@ -41,14 +41,14 @@ PGN etiketləri Bəyən Yeni etiket - Bu mövqeyə rəy bildirin + Bu pozisiyaya rəy bildirin Bu gedişə rəy bildirin Simvol ilə izah et Fəsil təhlil edilməsi üçün çox qısadır. Yalnız çalışma iştirakçıları kompüter təhlili tələb edə bilər. Ana variant üçün serverdən hərtərəfli kompüter təhlilini alın. - Fəsilin tamamlandığına əmin olun. Yalnız bir dəfə təhlil tələbi edə bilərsiniz. - EYNİLƏŞDİRİLMİŞ bütün üzvlər eyni mövqedə qalır + Fəslin tamamlandığına əmin olun. Yalnız bir dəfə təhlil tələbi edə bilərsiniz. + EYNİLƏŞDİRİLMİŞ bütün üzvlər eyni pozisiyada qalır Dəyişiklikləri tamaşaçılarla paylaşın və onları serverdə saxlayın Oynanılan İlk @@ -64,9 +64,9 @@ Çalışma URL-i Yayım URL-i Cari fəsil URL-ii - Hazırki oyun URL-si + Hazırkı oyun URL-i Pərçimləmək üçün bunu forumda paylaşa bilərsiniz - Başlanğıc mövqedə başlasın + Başlanğıc pozisiyada başlasın buradan başla: %s Veb sayt və ya bloqunuzda pərçimləyin Pərçimləmə haqqında daha ətraflı @@ -74,14 +74,14 @@ %2$s sizə %1$s tərəfindən gətirildi Çalışma tapılmadı - Fəsilə düzəliş et + Fəslə düzəliş et Yeni fəsil İstiqamət Təhlil rejimi Sancaqlanmış fəsil rəyləri - Fəsili yadda saxla + Fəsli yadda saxla İzahları təmizlə - Fəsili sil + Fəsli sil Bu fəsil silinsin? Bunun geri dönüşü yoxdur! Bu fəsildəki bütün rəylər, simvollar və çəkilmiş formalar təmizlənsin? Lövhənin altında @@ -91,11 +91,11 @@ İnteraktiv dərs %s. Fəsil Boş - Başlanğıc mövqedən başlasın + Başlanğıc pozisiyadan başlasın Redaktor - Özəl mövqedən başlasın + Özəl pozisiyadan başlasın URL ilə oyun yüklə - FEN ilə mövqe yüklə + FEN ilə pozisiya yüklə PGN ilə oyun yüklə Avtomatik @@ -119,7 +119,7 @@ Üzvlər Hamı Eyniləşdirməni aktivləşdir - Bəli: hər kəsi eyni mövqedə saxla + Bəli: hər kəsi eyni pozisiyada saxla Xeyr: sərbəst gəzməyə icazə ver Sancaqlanmış çalışma rəyləri Başlat diff --git a/translation/dest/study/vi-VN.xml b/translation/dest/study/vi-VN.xml index ef0f78046f..1e528409f2 100644 --- a/translation/dest/study/vi-VN.xml +++ b/translation/dest/study/vi-VN.xml @@ -1,7 +1,18 @@ Riêng tư + Khóa học của tôi + Các nghiên cứu tôi đóng góp + Nghiên cứu công khai của tôi + Nghiên cứu cá nhân của tôi + Nghiên cứu yêu thích của tôi + Nghiên cứu là gì? + Tất cả các nghiên cứu + Các nghiên cứu được tạo ra bởi%s Chưa có gì cả. + Nóng + Ngày thêm (mới nhất) + Ngày thêm (cũ nhất) Cập nhật gần đây Phổ biến nhất Thêm một chương mới diff --git a/translation/dest/study/zh-TW.xml b/translation/dest/study/zh-TW.xml index de438624c6..221573bcf4 100644 --- a/translation/dest/study/zh-TW.xml +++ b/translation/dest/study/zh-TW.xml @@ -2,6 +2,7 @@ 私人的 我的研究 + 我有貢獻的研究 我的公開研究 我的私人研究 我最愛的研究 @@ -10,13 +11,35 @@ %s創建的研究 暫時沒有... 熱門的 + 新增日期(由新到舊) + 新增日期(由舊到新) 最近更新 最受歡迎 + 加入新章節 + + 第%s章 + + + %s對局 + + 新增成員 %s位成員 + 邀請加入研究 + 只邀請你所認識的人,以及願意積極投入的人來共同研究 + 透過暱稱搜尋 + 旁觀者 + 共同研究者 踢出 + 退出研究 + 你現在是一位研究者了 + 你現在是一位旁觀者了 + PGN標籤 喜歡 + 新標籤 + 對於目前局面的評論 + 對於此棋步的評論 第一個 上一個 下一個 diff --git a/translation/dest/team/fo-FO.xml b/translation/dest/team/fo-FO.xml index 5c7f67c5e1..d296e3fc11 100644 --- a/translation/dest/team/fo-FO.xml +++ b/translation/dest/team/fo-FO.xml @@ -12,6 +12,7 @@ Einki lið funnið Kom upp í liðið Far úr liðnum + Met um umsóknir um upptøku manuelt Liðleiðari Liðleiðarar diff --git a/translation/dest/team/nl-NL.xml b/translation/dest/team/nl-NL.xml index 44d72d5ab6..12d19c62bd 100644 --- a/translation/dest/team/nl-NL.xml +++ b/translation/dest/team/nl-NL.xml @@ -43,8 +43,8 @@ Spelers die je berichten niet willen ontvangen kunnen het team verlaten.Teamleiderschat Team sluiten Sluit het team voor altijd. - Teamwachtwoord + Wachtwoord voor het team (Optioneel) Een wachtwoord dat nieuwe leden moeten weten om lid te worden van het team. Onjuist wachtwoord. - Deze naam bestaat al. + Deze teamnaam bestaat al. diff --git a/translation/dest/team/pt-PT.xml b/translation/dest/team/pt-PT.xml index 5d6d4920cb..c78315b3f3 100644 --- a/translation/dest/team/pt-PT.xml +++ b/translation/dest/team/pt-PT.xml @@ -12,6 +12,8 @@ Nenhuma equipa encontrada Juntar-se à equipa Abandonar equipa + Rever pedidos de admissão manualmente + Se selecionado, os jogadores vão precisar de escrever um pedido de adesão para se juntarem à equipa, que tu podes aceitar ou recusar. Líder da equipa Líderes da equipa @@ -41,4 +43,8 @@ Os jogadores que não gostam de receber as tuas mensagens podem sair da equipa.< Chat dos líderes Encerrar a equipa Encerrar a equipa para sempre. + Palavra-passe da equipa + (Opcional) Uma palavra-passe de que os novos membros necessitam para se juntarem a esta equipa. + Palavra-passe da equipa incorreta. + Esta equipa já existe. diff --git a/translation/dest/team/sv-SE.xml b/translation/dest/team/sv-SE.xml index 8492aaddc9..accb29dd9d 100644 --- a/translation/dest/team/sv-SE.xml +++ b/translation/dest/team/sv-SE.xml @@ -43,4 +43,8 @@ Spelare som inte gillar att ta emot dina meddelanden kan komma att lämna laget. Lagledarchatt Avsluta lag Stänger laget för evigt. + Lag-lösenord + (Valfritt) Ett lösenord som nya medlemmar måste veta för att gå med i detta lag. + Felaktigt lag-lösenord. + Det här lag-namnet finns redan. diff --git a/translation/dest/tfa/pt-PT.xml b/translation/dest/tfa/pt-PT.xml index f3d9b60e01..4eebeaf99d 100644 --- a/translation/dest/tfa/pt-PT.xml +++ b/translation/dest/tfa/pt-PT.xml @@ -5,6 +5,7 @@ Obtém um aplicativo para autenticação de dois fatores, por exemplo, o \"Google Authenticator\" para %1$s ou %2$s. Escaneie o código QR com a aplicação. Insire a tua palavra-passe e o código de autenticação gerado pelo aplicativo para concluir a configuração. Precisarás de um código de autenticação por cada vez que iniciares sessão. + Se não consegues fazer scan do código, insere o código %s na tua aplicação. Código de autenticação Nota: Se perderes o acesso aos teus códigos de autenticação de dois fatores, podes redefinir a palavra-passe por e-mail. Ativar a autenticação de dois fatores @@ -12,4 +13,5 @@ Autenticação de dois fatores ativada Precisas da tua palavra-passe e de um código de autenticação do teu aplicativo autenticador para desativar a autenticação de dois fatores. Se perdeste o acesso aos teus códigos de autenticação, também podes redefinir a palavra-passe por e-mail. + Abre a aplicação de autenticação de dois fatores no teu dispositivo para veres o código de autenticação e verificares a tua identidade. diff --git a/translation/dest/tourname/vi-VN.xml b/translation/dest/tourname/vi-VN.xml index 153970608a..e0d180e1a2 100644 --- a/translation/dest/tourname/vi-VN.xml +++ b/translation/dest/tourname/vi-VN.xml @@ -34,5 +34,7 @@ Cờ chậm hàng năm Đấu trường %s hàng năm %s hàng năm + Giải đấu Lá chắn Cờ nhanh + Lá chắn Cờ nhanh Đấu trường %s From 0c38c5fd6ebc0f05b00417dcb44352f9ca2a0677 Mon Sep 17 00:00:00 2001 From: Scala Steward Date: Mon, 18 Jan 2021 21:14:32 +0100 Subject: [PATCH 02/64] Update specs2-core to 4.10.6 --- project/Dependencies.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 944c901445..eddbba7e80 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -22,7 +22,7 @@ object Dependencies { val autoconfig = "io.methvin.play" %% "autoconfig-macros" % "0.3.2" % "provided" val scalatest = "org.scalatest" %% "scalatest" % "3.1.0" % Test val uaparser = "org.uaparser" %% "uap-scala" % "0.11.0" - val specs2 = "org.specs2" %% "specs2-core" % "4.10.5" % Test + val specs2 = "org.specs2" %% "specs2-core" % "4.10.6" % Test val apacheText = "org.apache.commons" % "commons-text" % "1.9" object flexmark { From c937eabe6a3561b93be1ded40e691426b3a0b4ac Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Tue, 19 Jan 2021 07:46:07 +0100 Subject: [PATCH 03/64] New Crowdin updates (#7946) * New translations: contact.xml (Swedish) * New translations: site.xml (Icelandic) * New translations: preferences.xml (Icelandic) --- translation/dest/contact/sv-SE.xml | 4 ++-- translation/dest/preferences/is-IS.xml | 3 ++- translation/dest/site/is-IS.xml | 2 ++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/translation/dest/contact/sv-SE.xml b/translation/dest/contact/sv-SE.xml index 51f6bfb943..ca178b1b34 100644 --- a/translation/dest/contact/sv-SE.xml +++ b/translation/dest/contact/sv-SE.xml @@ -10,7 +10,7 @@ Jag har glömt mitt användarnamn Du kan logga in med den e-postadress du registrerade dig med Jag har förlorat åtkomst till mina tvåfaktorsautentiseringskoder - Gör en lösenordsåterställning för att ta bort din andra faktor + Återställ ditt lösenord för att ta bort din andra faktor Jag behöver kontosupport Jag vill att min titel visas på Lichess För att visa din titel på din Lichess-profil, och delta i Titled Arenas, besök titelns bekräftelsesida @@ -24,7 +24,7 @@ Besök denna sida för att ändra gemener till versaler eller versaler till gemener i ditt användarnamn Vi kan inte ändra mer än shiftläget. Av tekniska skäl är det rent ut sagt omöjligt. Du kan dock stänga ditt nuvarande konto och skapa ett nytt. - Jag vill rensa min historia eller rating + Jag vill rensa min historik eller rating Det är inte möjligt att rensa din partihistorik, historik för schackproblem eller rating. Jag vill rapportera en spelare fusk diff --git a/translation/dest/preferences/is-IS.xml b/translation/dest/preferences/is-IS.xml index f482f33a1f..40a40c49dd 100644 --- a/translation/dest/preferences/is-IS.xml +++ b/translation/dest/preferences/is-IS.xml @@ -21,7 +21,7 @@ Lárétt framvindustika Hljóð þegar lítill tími er eftir Gefa meiri tíma - Framkoma við skákborðið + Framkoma við skákborðið Hvernig hreyfirðu menn? Veldu tvo reiti Dragðu taflmann @@ -41,5 +41,6 @@ Færa kóng um tvo reiti Færa kóng á hrókinn Leika með lyklaborðinu + Segja \"Good game, well played\" sjálfkrafa eftir tapi eða jafntefli Stillingar þínar voru vistaðar diff --git a/translation/dest/site/is-IS.xml b/translation/dest/site/is-IS.xml index 0bbf8bbaea..c544183d4e 100644 --- a/translation/dest/site/is-IS.xml +++ b/translation/dest/site/is-IS.xml @@ -782,4 +782,6 @@ Þú mátt ekki pósta enn. Spilaðu nokkra leiki! Gerast áskrifandi Taka úr áskrift + Áskorun hafnað + Hætt við áskorun. From 9046ab1b332e4ef6e29413fa6f0e36a42b6c8f8c Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Tue, 19 Jan 2021 10:16:36 +0100 Subject: [PATCH 04/64] add anastasia's mate --- modules/i18n/src/main/I18nKeys.scala | 2 ++ modules/puzzle/src/main/PuzzleTheme.scala | 6 ++++-- translation/source/puzzleTheme.xml | 2 ++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/modules/i18n/src/main/I18nKeys.scala b/modules/i18n/src/main/I18nKeys.scala index f161394ac4..7729ef9819 100644 --- a/modules/i18n/src/main/I18nKeys.scala +++ b/modules/i18n/src/main/I18nKeys.scala @@ -1844,6 +1844,8 @@ val `advancedPawn` = new I18nKey("puzzleTheme:advancedPawn") val `advancedPawnDescription` = new I18nKey("puzzleTheme:advancedPawnDescription") val `advantage` = new I18nKey("puzzleTheme:advantage") val `advantageDescription` = new I18nKey("puzzleTheme:advantageDescription") +val `anastasiaMate` = new I18nKey("puzzleTheme:anastasiaMate") +val `anastasiaMateDescription` = new I18nKey("puzzleTheme:anastasiaMateDescription") val `attackingF2F7` = new I18nKey("puzzleTheme:attackingF2F7") val `attackingF2F7Description` = new I18nKey("puzzleTheme:attackingF2F7Description") val `attraction` = new I18nKey("puzzleTheme:attraction") diff --git a/modules/puzzle/src/main/PuzzleTheme.scala b/modules/puzzle/src/main/PuzzleTheme.scala index da70a07097..2fa7a46380 100644 --- a/modules/puzzle/src/main/PuzzleTheme.scala +++ b/modules/puzzle/src/main/PuzzleTheme.scala @@ -14,6 +14,7 @@ object PuzzleTheme { val mix = PuzzleTheme(Key("mix"), i.healthyMix, i.healthyMixDescription) val advancedPawn = PuzzleTheme(Key("advancedPawn"), i.advancedPawn, i.advancedPawnDescription) val advantage = PuzzleTheme(Key("advantage"), i.advantage, i.advantageDescription) + val anastasiaMate = PuzzleTheme(Key("anastasiaMate"), i.anastasiaMate, i.anastasiaMateDescription) val attackingF2F7 = PuzzleTheme(Key("attackingF2F7"), i.attackingF2F7, i.attackingF2F7Description) val attraction = PuzzleTheme(Key("attraction"), i.attraction, i.attractionDescription) val backRankMate = PuzzleTheme(Key("backRankMate"), i.backRankMate, i.backRankMateDescription) @@ -118,8 +119,9 @@ object PuzzleTheme { mateIn3, mateIn4, mateIn5, - smotheredMate, - backRankMate + anastasiaMate, + backRankMate, + smotheredMate ), trans.puzzle.specialMoves -> List( castling, diff --git a/translation/source/puzzleTheme.xml b/translation/source/puzzleTheme.xml index d9f93da268..f987d42dfd 100644 --- a/translation/source/puzzleTheme.xml +++ b/translation/source/puzzleTheme.xml @@ -4,6 +4,8 @@ A pawn promoting or threatening to promote is key to the tactic. Advantage Seize your chance to get a decisive advantage. (200cp ≤ eval ≤ 600cp) + Anastasia's mate + A knight and rook or queen team up to trap the opposing king between the side of the board and a friendly piece. Attacking f2 or f7 An attack focusing on the f2 or f7 pawn, such as in the fried liver opening. Attraction From f952d265ce3d99fa108140a86e7ac935a0c19195 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Tue, 19 Jan 2021 10:44:44 +0100 Subject: [PATCH 05/64] fix data export --- modules/api/src/main/PersonalDataExport.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/api/src/main/PersonalDataExport.scala b/modules/api/src/main/PersonalDataExport.scala index f160c54e53..91a9285ca1 100644 --- a/modules/api/src/main/PersonalDataExport.scala +++ b/modules/api/src/main/PersonalDataExport.scala @@ -66,7 +66,7 @@ final class PersonalDataExport( List( textTitle(s"${sessions.size} Connections"), sessions.map { s => - s"${s.ip} ${s.date.map(textDate)}\n${s.ua}" + s"${s.ip} ${s.date.??(textDate)}\n${s.ua}" } mkString "\n\n" ) From d0906e5b738355ec6bc3da8692701ba6f9e2228f Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Tue, 19 Jan 2021 11:39:31 +0100 Subject: [PATCH 06/64] add hook mate --- modules/i18n/src/main/I18nKeys.scala | 2 ++ modules/puzzle/src/main/PuzzleTheme.scala | 2 ++ translation/source/puzzleTheme.xml | 2 ++ 3 files changed, 6 insertions(+) diff --git a/modules/i18n/src/main/I18nKeys.scala b/modules/i18n/src/main/I18nKeys.scala index 7729ef9819..88e8b80d15 100644 --- a/modules/i18n/src/main/I18nKeys.scala +++ b/modules/i18n/src/main/I18nKeys.scala @@ -1883,6 +1883,8 @@ val `fork` = new I18nKey("puzzleTheme:fork") val `forkDescription` = new I18nKey("puzzleTheme:forkDescription") val `hangingPiece` = new I18nKey("puzzleTheme:hangingPiece") val `hangingPieceDescription` = new I18nKey("puzzleTheme:hangingPieceDescription") +val `hookMate` = new I18nKey("puzzleTheme:hookMate") +val `hookMateDescription` = new I18nKey("puzzleTheme:hookMateDescription") val `interference` = new I18nKey("puzzleTheme:interference") val `interferenceDescription` = new I18nKey("puzzleTheme:interferenceDescription") val `intermezzo` = new I18nKey("puzzleTheme:intermezzo") diff --git a/modules/puzzle/src/main/PuzzleTheme.scala b/modules/puzzle/src/main/PuzzleTheme.scala index 2fa7a46380..0860cfea1a 100644 --- a/modules/puzzle/src/main/PuzzleTheme.scala +++ b/modules/puzzle/src/main/PuzzleTheme.scala @@ -35,6 +35,7 @@ object PuzzleTheme { val exposedKing = PuzzleTheme(Key("exposedKing"), i.exposedKing, i.exposedKingDescription) val fork = PuzzleTheme(Key("fork"), i.fork, i.forkDescription) val hangingPiece = PuzzleTheme(Key("hangingPiece"), i.hangingPiece, i.hangingPieceDescription) + val hookMate = PuzzleTheme(Key("hookMate"), i.hookMate, i.hookMateDescription) val interference = PuzzleTheme(Key("interference"), i.interference, i.interferenceDescription) val intermezzo = PuzzleTheme(Key("intermezzo"), i.intermezzo, i.intermezzoDescription) val kingsideAttack = PuzzleTheme(Key("kingsideAttack"), i.kingsideAttack, i.kingsideAttackDescription) @@ -121,6 +122,7 @@ object PuzzleTheme { mateIn5, anastasiaMate, backRankMate, + hookMate, smotheredMate ), trans.puzzle.specialMoves -> List( diff --git a/translation/source/puzzleTheme.xml b/translation/source/puzzleTheme.xml index f987d42dfd..c6234a6569 100644 --- a/translation/source/puzzleTheme.xml +++ b/translation/source/puzzleTheme.xml @@ -43,6 +43,8 @@ A move where the moved piece attacks two opponent pieces at once. Hanging piece A tactic involving an opponent piece being undefended or insufficiently defended and free to capture. + Hook mate + Checkmate with a rook, knight, and pawn along with one enemy pawn to limit the enemy king's escape. Interference Moving a piece between two opponent pieces to leave one or both opponent pieces undefended, such as a knight on a defended square between two rooks. Intermezzo From 29bea617c2e556c00fa13017a73d985052eb64c9 Mon Sep 17 00:00:00 2001 From: kraktus <56031107+kraktus@users.noreply.github.com> Date: Tue, 19 Jan 2021 13:20:53 +0000 Subject: [PATCH 07/64] Translate "I want to report a player for" in contact page Chose to rewrite the sentences instead of combinating sentences, as words could be arranged in an other way for certain languages. --- app/views/site/contact.scala | 12 ++++++------ modules/i18n/src/main/I18nKeys.scala | 10 +++++----- translation/source/contact.xml | 10 +++++----- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/app/views/site/contact.scala b/app/views/site/contact.scala index aa1189f9f4..eae93342f8 100644 --- a/app/views/site/contact.scala +++ b/app/views/site/contact.scala @@ -153,15 +153,15 @@ object contact { "report", wantReport(), List( - "cheating" -> cheating(), - "sandbagging" -> sandbagging(), - "trolling" -> trolling(), - "insults" -> insults(), - "some other reason" -> otherReason() + "cheating" -> reportCheating, + "sandbagging" -> reportSandbagging, + "trolling" -> reportTrolling, + "insults" -> reportInsults, + "some other reason" -> reportOtherReason ).map { case (reason, name) => Leaf( reason, - frag("Report a player for ", name), + name(), frag( p( a(href := routes.Report.form())(toReportAPlayer(name)), diff --git a/modules/i18n/src/main/I18nKeys.scala b/modules/i18n/src/main/I18nKeys.scala index 7bd1a82c74..e5ecbabfec 100644 --- a/modules/i18n/src/main/I18nKeys.scala +++ b/modules/i18n/src/main/I18nKeys.scala @@ -1220,11 +1220,11 @@ val `orCloseAccount` = new I18nKey("contact:orCloseAccount") val `wantClearHistory` = new I18nKey("contact:wantClearHistory") val `cantClearHistory` = new I18nKey("contact:cantClearHistory") val `wantReport` = new I18nKey("contact:wantReport") -val `cheating` = new I18nKey("contact:cheating") -val `sandbagging` = new I18nKey("contact:sandbagging") -val `trolling` = new I18nKey("contact:trolling") -val `insults` = new I18nKey("contact:insults") -val `otherReason` = new I18nKey("contact:otherReason") +val `reportCheating` = new I18nKey("contact:reportCheating") +val `reportSandbagging` = new I18nKey("contact:reportSandbagging") +val `reportTrolling` = new I18nKey("contact:reportTrolling") +val `reportInsults` = new I18nKey("contact:reportInsults") +val `reportOtherReason` = new I18nKey("contact:reportOtherReason") val `toReportAPlayer` = new I18nKey("contact:toReportAPlayer") val `youCanAlsoReachReportPage` = new I18nKey("contact:youCanAlsoReachReportPage") val `doNotReportInForum` = new I18nKey("contact:doNotReportInForum") diff --git a/translation/source/contact.xml b/translation/source/contact.xml index 61a33af813..b1b5bb453e 100644 --- a/translation/source/contact.xml +++ b/translation/source/contact.xml @@ -27,11 +27,11 @@ I want to clear my history or rating It's not possible to clear your game history, puzzle history, or ratings. I want to report a player - cheating - sandbagging - trolling - insults - some other reason + Report a player for cheating + Report a player for sandbagging + Report a player for trolling + Report a player for insults + Report a player for some other reason To report a player for %s, use the report form You can also reach that page by clicking the %s report button on a profile page. Do not report players in the forum. From be25c26075b44322578bb6612032d1c02170146d Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Tue, 19 Jan 2021 19:38:01 +0100 Subject: [PATCH 08/64] replace mongodb mapReduce with aggregation $function fixes study multiboard view since mongodb 4.4 --- modules/db/src/main/PaginatorAdapter.scala | 42 ------- modules/study/src/main/StudyMultiBoard.scala | 116 +++++++++++-------- 2 files changed, 65 insertions(+), 93 deletions(-) diff --git a/modules/db/src/main/PaginatorAdapter.scala b/modules/db/src/main/PaginatorAdapter.scala index 37a289e70c..698a9b3f1e 100644 --- a/modules/db/src/main/PaginatorAdapter.scala +++ b/modules/db/src/main/PaginatorAdapter.scala @@ -46,48 +46,6 @@ final class Adapter[A: BSONDocumentReader]( .list(length) } -/* - * because mongodb mapReduce doesn't support `skip`, slice requires two queries. - * The first one gets the IDs with `skip`. - * The second one runs the mapReduce on these IDs. - * This avoid running mapReduce on many unnecessary docs. - * NOTE: Requires string ID. - */ -final class MapReduceAdapter[A: BSONDocumentReader]( - collection: Coll, - selector: Bdoc, - sort: Bdoc, - runCommand: RunCommand, - command: Bdoc, - readPreference: ReadPreference = ReadPreference.primary -)(implicit ec: ExecutionContext) - extends AdapterLike[A] { - - def nbResults: Fu[Int] = collection.secondaryPreferred.countSel(selector) - - def slice(offset: Int, length: Int): Fu[List[A]] = - collection - .find(selector, $id(true).some) - .sort(sort) - .skip(offset) - .cursor[Bdoc](readPreference) - .list(length) - .dmap { _ flatMap { _.getAsOpt[BSONString]("_id") } } - .flatMap { ids => - runCommand( - $doc( - "mapreduce" -> collection.name, - "query" -> $inIds(ids), - "sort" -> sort, - "out" -> $doc("inline" -> 1) - ) ++ command, - readPreference - ) map { res => - res.getAsOpt[List[Bdoc]]("results").??(_ flatMap implicitly[BSONDocumentReader[A]].readOpt) - } - } -} - final class StaticAdapter[A](results: Seq[A])(implicit ec: ExecutionContext) extends AdapterLike[A] { def nbResults = fuccess(results.size) diff --git a/modules/study/src/main/StudyMultiBoard.scala b/modules/study/src/main/StudyMultiBoard.scala index 762b37e4ba..0ba4f3fa8e 100644 --- a/modules/study/src/main/StudyMultiBoard.scala +++ b/modules/study/src/main/StudyMultiBoard.scala @@ -1,26 +1,27 @@ package lila.study -import com.github.blemale.scaffeine.AsyncLoadingCache -import play.api.libs.json._ -import reactivemongo.api.bson._ -import scala.concurrent.duration._ - +import BSONHandlers._ import chess.Color import chess.format.pgn.Tags import chess.format.{ FEN, Uci } - -import BSONHandlers._ +import com.github.blemale.scaffeine.AsyncLoadingCache import JsonView._ +import play.api.libs.json._ +import reactivemongo.api.bson._ +import reactivemongo.api.ReadPreference +import scala.concurrent.duration._ + import lila.common.config.MaxPerPage +import lila.common.paginator.AdapterLike import lila.common.paginator.{ Paginator, PaginatorJson } import lila.db.dsl._ -import lila.db.paginator.MapReduceAdapter final class StudyMultiBoard( runCommand: lila.db.RunCommand, chapterRepo: ChapterRepo, cacheApi: lila.memo.CacheApi )(implicit ec: scala.concurrent.ExecutionContext) { + private val maxPerPage = MaxPerPage(9) import StudyMultiBoard._ @@ -37,57 +38,70 @@ final class StudyMultiBoard( .expireAfterAccess(10 minutes) .buildAsyncFuture[Study.Id, Paginator[ChapterPreview]] { fetch(_, 1, playing = false) } - private def fetch(studyId: Study.Id, page: Int, playing: Boolean): Fu[Paginator[ChapterPreview]] = { + private val playingSelector = $doc("tags" -> "Result:*", "root.n.0" $exists true) - val selector = $doc("studyId" -> studyId) ++ playing.??(playingSelector) - - /* If players are found in the tags, - * return the last mainline node. - * Else, return the root node without its children. - */ - Paginator( - adapter = new MapReduceAdapter[ChapterPreview]( - collection = chapterRepo.coll, - selector = selector, - sort = $sort asc "order", - runCommand = runCommand, - command = $doc( - "map" -> """var node = this.root, child, tagPrefixes = ['White','Black','Result'], result = {name:this.name,orientation:this.setup.orientation,tags:this.tags.filter(t => tagPrefixes.find(p => t.startsWith(p)))}; -if (result.tags.length > 1) { while(child = node.n[0]) { node = child }; } -result.fen = node.f; -result.uci = node.u; -emit(this._id, result)""", - "reduce" -> """function() {}""", - "jsMode" -> true - ) - )(previewBSONReader, ec), + def fetch(studyId: Study.Id, page: Int, playing: Boolean): Fu[Paginator[ChapterPreview]] = + Paginator[ChapterPreview]( + new ChapterPreviewAdapter(studyId, playing), currentPage = page, maxPerPage = maxPerPage ) + + final private class ChapterPreviewAdapter(studyId: Study.Id, playing: Boolean) + extends AdapterLike[ChapterPreview] { + + private val selector = $doc("studyId" -> studyId) ++ playing.??(playingSelector) + + def nbResults: Fu[Int] = chapterRepo.coll.secondaryPreferred.countSel(selector) + + def slice(offset: Int, length: Int): Fu[Seq[ChapterPreview]] = + chapterRepo.coll + .aggregateList(length, readPreference = ReadPreference.secondaryPreferred) { framework => + import framework._ + Match(selector) -> List( + Sort(Ascending("order")), + Skip(offset), + Limit(length), + Project( + $doc( + "comp" -> $doc( + "$function" -> $doc( + "lang" -> "js", + "args" -> $arr("$root", "$tags"), + "body" -> """function(node, tags) { tags = tags.filter(t => t.startsWith('White') || t.startsWith('Black') || t.startsWith('Result')); if (tags.length) while(child = node.n[0]) { node = child }; return {node:{fen:node.f,uci:node.u},tags} }""" + ) + ), + "orientation" -> "$setup.orientation", + "name" -> true + ) + ) + ) + } + .map { r => + r.map(lila.db.BSON.debug).foreach(println) + for { + doc <- r + id <- doc.getAsOpt[Chapter.Id]("_id") + name <- doc.getAsOpt[Chapter.Name]("name") + comp <- doc.getAsOpt[Bdoc]("comp") + node <- comp.getAsOpt[Bdoc]("node") + fen <- node.getAsOpt[FEN]("fen") + lastMove = node.getAsOpt[Uci]("uci") + tags = comp.getAsOpt[Tags]("tags") + } yield ChapterPreview( + id = id, + name = name, + players = tags flatMap ChapterPreview.players, + orientation = doc.getAsOpt[Color]("orientation") | Color.White, + fen = fen, + lastMove = lastMove, + playing = lastMove.isDefined && tags.flatMap(_(_.Result)).has("*") + ) + } } - private val playingSelector = $doc("tags" -> "Result:*", "root.n.0" $exists true) - private object handlers { - implicit val previewBSONReader = new BSONDocumentReader[ChapterPreview] { - def readDocument(result: BSONDocument) = - for { - value <- result.getAsTry[List[Bdoc]]("value") - doc <- value.headOption toTry "No mapReduce value?!" - tags = doc.getAsOpt[Tags]("tags") - lastMove = doc.getAsOpt[Uci]("uci") - } yield ChapterPreview( - id = result.getAsOpt[Chapter.Id]("_id") err "Preview missing id", - name = doc.getAsOpt[Chapter.Name]("name") err "Preview missing name", - players = tags flatMap ChapterPreview.players, - orientation = doc.getAsOpt[Color]("orientation") getOrElse Color.White, - fen = doc.getAsOpt[FEN]("fen") err "Preview missing FEN", - lastMove = lastMove, - playing = lastMove.isDefined && tags.flatMap(_(_.Result)).has("*") - ) - } - implicit val previewPlayerWriter: Writes[ChapterPreview.Player] = Writes[ChapterPreview.Player] { p => Json .obj("name" -> p.name) From 6a87357fdafba42ffe6a561d3bce54874ed19c42 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Tue, 19 Jan 2021 19:40:07 +0100 Subject: [PATCH 09/64] more puzzle mates --- modules/i18n/src/main/I18nKeys.scala | 8 ++++++++ modules/puzzle/src/main/PuzzleTheme.scala | 12 +++++++++++- translation/source/puzzleTheme.xml | 8 ++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/modules/i18n/src/main/I18nKeys.scala b/modules/i18n/src/main/I18nKeys.scala index 3a08caf3f0..1ef48b71bb 100644 --- a/modules/i18n/src/main/I18nKeys.scala +++ b/modules/i18n/src/main/I18nKeys.scala @@ -1846,6 +1846,8 @@ val `advantage` = new I18nKey("puzzleTheme:advantage") val `advantageDescription` = new I18nKey("puzzleTheme:advantageDescription") val `anastasiaMate` = new I18nKey("puzzleTheme:anastasiaMate") val `anastasiaMateDescription` = new I18nKey("puzzleTheme:anastasiaMateDescription") +val `arabianMate` = new I18nKey("puzzleTheme:arabianMate") +val `arabianMateDescription` = new I18nKey("puzzleTheme:arabianMateDescription") val `attackingF2F7` = new I18nKey("puzzleTheme:attackingF2F7") val `attackingF2F7Description` = new I18nKey("puzzleTheme:attackingF2F7Description") val `attraction` = new I18nKey("puzzleTheme:attraction") @@ -1854,12 +1856,18 @@ val `backRankMate` = new I18nKey("puzzleTheme:backRankMate") val `backRankMateDescription` = new I18nKey("puzzleTheme:backRankMateDescription") val `bishopEndgame` = new I18nKey("puzzleTheme:bishopEndgame") val `bishopEndgameDescription` = new I18nKey("puzzleTheme:bishopEndgameDescription") +val `bodenMate` = new I18nKey("puzzleTheme:bodenMate") +val `bodenMateDescription` = new I18nKey("puzzleTheme:bodenMateDescription") val `castling` = new I18nKey("puzzleTheme:castling") val `castlingDescription` = new I18nKey("puzzleTheme:castlingDescription") val `capturingDefender` = new I18nKey("puzzleTheme:capturingDefender") val `capturingDefenderDescription` = new I18nKey("puzzleTheme:capturingDefenderDescription") val `crushing` = new I18nKey("puzzleTheme:crushing") val `crushingDescription` = new I18nKey("puzzleTheme:crushingDescription") +val `doubleBishopMate` = new I18nKey("puzzleTheme:doubleBishopMate") +val `doubleBishopMateDescription` = new I18nKey("puzzleTheme:doubleBishopMateDescription") +val `dovetailMate` = new I18nKey("puzzleTheme:dovetailMate") +val `dovetailMateDescription` = new I18nKey("puzzleTheme:dovetailMateDescription") val `equality` = new I18nKey("puzzleTheme:equality") val `equalityDescription` = new I18nKey("puzzleTheme:equalityDescription") val `kingsideAttack` = new I18nKey("puzzleTheme:kingsideAttack") diff --git a/modules/puzzle/src/main/PuzzleTheme.scala b/modules/puzzle/src/main/PuzzleTheme.scala index 0860cfea1a..99cfd871cc 100644 --- a/modules/puzzle/src/main/PuzzleTheme.scala +++ b/modules/puzzle/src/main/PuzzleTheme.scala @@ -15,10 +15,12 @@ object PuzzleTheme { val advancedPawn = PuzzleTheme(Key("advancedPawn"), i.advancedPawn, i.advancedPawnDescription) val advantage = PuzzleTheme(Key("advantage"), i.advantage, i.advantageDescription) val anastasiaMate = PuzzleTheme(Key("anastasiaMate"), i.anastasiaMate, i.anastasiaMateDescription) + val arabianMate = PuzzleTheme(Key("arabianMate"), i.arabianMate, i.arabianMateDescription) val attackingF2F7 = PuzzleTheme(Key("attackingF2F7"), i.attackingF2F7, i.attackingF2F7Description) val attraction = PuzzleTheme(Key("attraction"), i.attraction, i.attractionDescription) val backRankMate = PuzzleTheme(Key("backRankMate"), i.backRankMate, i.backRankMateDescription) val bishopEndgame = PuzzleTheme(Key("bishopEndgame"), i.bishopEndgame, i.bishopEndgameDescription) + val bodenMate = PuzzleTheme(Key("bodenMate"), i.bodenMate, i.bodenMateDescription) val capturingDefender = PuzzleTheme(Key("capturingDefender"), i.capturingDefender, i.capturingDefenderDescription) val castling = PuzzleTheme(Key("castling"), i.castling, i.castlingDescription) @@ -28,7 +30,11 @@ object PuzzleTheme { val deflection = PuzzleTheme(Key("deflection"), i.deflection, i.deflectionDescription) val discoveredAttack = PuzzleTheme(Key("discoveredAttack"), i.discoveredAttack, i.discoveredAttackDescription) - val doubleCheck = PuzzleTheme(Key("doubleCheck"), i.doubleCheck, i.doubleCheckDescription) + val doubleBishopMate = + PuzzleTheme(Key("doubleBishopMate"), i.doubleBishopMate, i.doubleBishopMateDescription) + val doubleCheck = PuzzleTheme(Key("doubleCheck"), i.doubleCheck, i.doubleCheckDescription) + val dovetailMate = + PuzzleTheme(Key("dovetailMate"), i.dovetailMate, i.dovetailMateDescription) val equality = PuzzleTheme(Key("equality"), i.equality, i.equalityDescription) val endgame = PuzzleTheme(Key("endgame"), i.endgame, i.endgameDescription) val enPassant = PuzzleTheme(Key("enPassant"), new I18nKey("En passant"), i.enPassantDescription) @@ -121,7 +127,11 @@ object PuzzleTheme { mateIn4, mateIn5, anastasiaMate, + arabianMate, backRankMate, + bodenMate, + doubleBishopMate, + dovetailMate, hookMate, smotheredMate ), diff --git a/translation/source/puzzleTheme.xml b/translation/source/puzzleTheme.xml index c6234a6569..ee85ec8167 100644 --- a/translation/source/puzzleTheme.xml +++ b/translation/source/puzzleTheme.xml @@ -6,6 +6,8 @@ Seize your chance to get a decisive advantage. (200cp ≤ eval ≤ 600cp) Anastasia's mate A knight and rook or queen team up to trap the opposing king between the side of the board and a friendly piece. + Arabian mate + A knight and a rook team up to trap the opposing king on a corner of the board. Attacking f2 or f7 An attack focusing on the f2 or f7 pawn, such as in the fried liver opening. Attraction @@ -14,12 +16,18 @@ Checkmate the king on the home rank, when it is trapped there by its own pieces. Bishop endgame An endgame with only bishops and pawns. + Boden's mate + Two attacking bishops on criss-crossing diagonals deliver mate to a king obstructed by friendly pieces. Castling Bring the king to safety, and deploy the rook for attack. Capture the defender Removing a piece that is critical to defence of another piece, allowing the now undefended piece to be captured on a following move. Crushing Spot the opponent blunder to obtain a crushing advantage. (eval ≥ 600cp) + Double bishop mate + Two attacking bishops on adjacent diagonals deliver mate to a king obstructed by friendly pieces. + Dovetail mate + A queen delivers mate to an adjacent king, whose only two escape squares are obstructed by friendly pieces. Equality Come back from a losing position, and secure a draw or a balanced position. (eval ≤ 200cp) Kingside attack From 4d07a62014f0cbbf7ed520111c46402f614b5638 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Tue, 19 Jan 2021 19:48:37 +0100 Subject: [PATCH 10/64] remove nb bonuses from puzzle trust --- modules/puzzle/src/main/PuzzleTrust.scala | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/modules/puzzle/src/main/PuzzleTrust.scala b/modules/puzzle/src/main/PuzzleTrust.scala index cc8eac84f8..cd8f646619 100644 --- a/modules/puzzle/src/main/PuzzleTrust.scala +++ b/modules/puzzle/src/main/PuzzleTrust.scala @@ -38,8 +38,6 @@ final private class PuzzleTrustApi(colls: PuzzleColls)(implicit ec: scala.concur ratingBonus(user) + titleBonus(user) + patronBonus(user) + - nbGamesBonus(user) + - nbPuzzlesBonus(user) + modBonus(user) + lameBonus(user) }.toInt @@ -63,19 +61,6 @@ final private class PuzzleTrustApi(colls: PuzzleColls)(implicit ec: scala.concur private def patronBonus(user: User) = (~user.planMonths * 5) atMost 20 - // 0 games = 0 - // 200 games = 1 - // 400 games = 2.41 - // 2000 games = 3.16 - private def nbGamesBonus(user: User) = - nbBonus(user.count.game) - - private def nbPuzzlesBonus(user: User) = - nbBonus(user.perfs.puzzle.nb) / 2 - - private def nbBonus(nb: Int) = - math.sqrt(nb / 200) atMost 5 - private def modBonus(user: User) = if (user.roles.exists(_ contains "ROLE_PUZZLE_CURATOR")) 100 else if (user.isAdmin) 50 From 73c2f1c4f61cfadb2e48ee56718838f08a6a1ed7 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Tue, 19 Jan 2021 22:49:22 +0100 Subject: [PATCH 11/64] round robin lila-ws redis channels in both directions --- modules/round/src/main/RoundSocket.scala | 2 +- modules/socket/src/main/RemoteSocket.scala | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/modules/round/src/main/RoundSocket.scala b/modules/round/src/main/RoundSocket.scala index 1fb784be4c..82d5c0bafd 100644 --- a/modules/round/src/main/RoundSocket.scala +++ b/modules/round/src/main/RoundSocket.scala @@ -160,7 +160,7 @@ final class RoundSocket( private def finishRound(gameId: Game.Id): Unit = rounds.terminate(gameId.value, _ ! RoundDuct.Stop) - private lazy val send: String => Unit = remoteSocketApi.makeSender("r-out").apply _ + private lazy val send: String => Unit = remoteSocketApi.makeSender("r-out", parallelism = 8).apply _ remoteSocketApi.subscribeRoundRobin("r-in", Protocol.In.reader, parallelism = 8)( roundHandler orElse remoteSocketApi.baseHandler diff --git a/modules/socket/src/main/RemoteSocket.scala b/modules/socket/src/main/RemoteSocket.scala index 69f5551241..3a568787ab 100644 --- a/modules/socket/src/main/RemoteSocket.scala +++ b/modules/socket/src/main/RemoteSocket.scala @@ -121,7 +121,18 @@ final class RemoteSocket( def apply(msg: String): Unit = if (!stopping) conn.async.publish(channel, msg).unit } - def makeSender(channel: Channel): Sender = new StoppableSender(redisClient.connectPubSub(), channel) + final class RoundRobinSender( + conn: StatefulRedisPubSubConnection[String, String], + channel: Channel, + parallelism: Int + ) extends Sender { + def apply(msg: String): Unit = + if (!stopping) conn.async.publish(s"$channel:${msg.hashCode.abs % parallelism}", msg).unit + } + + def makeSender(channel: Channel, parallelism: Int = 1): Sender = + if (parallelism > 1) new RoundRobinSender(redisClient.connectPubSub(), channel, parallelism) + else new StoppableSender(redisClient.connectPubSub(), channel) private val send: Send = makeSender("site-out").apply _ From a9bc5e2f3099deb53b1bb99575c24a9cd42b1b9e Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Wed, 20 Jan 2021 08:11:27 +0100 Subject: [PATCH 12/64] New Crowdin updates (#7950) * New translations: puzzleTheme.xml (Portuguese, Brazilian) * New translations: puzzleTheme.xml (Basque) * New translations: puzzleTheme.xml (Polish) * New translations: puzzleTheme.xml (French) * New translations: puzzleTheme.xml (German) * New translations: puzzleTheme.xml (Hungarian) * New translations: puzzleTheme.xml (Russian) * New translations: puzzleTheme.xml (Kazakh) * New translations: puzzleTheme.xml (Latvian) * New translations: puzzleTheme.xml (German) * New translations: puzzleTheme.xml (Burmese) * New translations: puzzleTheme.xml (Vietnamese) * New translations: puzzleTheme.xml (Burmese) * New translations: puzzleTheme.xml (Swedish) * New translations: puzzleTheme.xml (Hindi) * New translations: puzzleTheme.xml (Dutch) * New translations: puzzleTheme.xml (Lithuanian) * New translations: puzzleTheme.xml (German) * New translations: puzzleTheme.xml (Swedish) * New translations: puzzleTheme.xml (Hungarian) * New translations: puzzleTheme.xml (Norwegian Nynorsk) * New translations: puzzleTheme.xml (German) * New translations: puzzleTheme.xml (Swedish) * New translations: puzzleTheme.xml (Norwegian Nynorsk) * New translations: puzzleTheme.xml (Hindi) * New translations: emails.xml (Chinese Traditional) * New translations: puzzleTheme.xml (Spanish) * New translations: puzzleTheme.xml (French) * New translations: puzzleTheme.xml (German) * New translations: puzzleTheme.xml (Lithuanian) * New translations: puzzleTheme.xml (Norwegian Nynorsk) * New translations: puzzleTheme.xml (Romanian) * New translations: puzzleTheme.xml (Norwegian Nynorsk) * New translations: puzzleTheme.xml (Russian) * New translations: puzzleTheme.xml (Turkish) * New translations: puzzleTheme.xml (Slovak) * New translations: puzzleTheme.xml (Slovak) * New translations: class.xml (Chinese Traditional) * New translations: contact.xml (Chinese Traditional) * New translations: puzzleTheme.xml (Danish) * New translations: puzzleTheme.xml (German) * New translations: puzzleTheme.xml (Japanese) * New translations: puzzleTheme.xml (Swedish) * New translations: puzzleTheme.xml (Vietnamese) * New translations: faq.xml (Chinese Traditional) * New translations: puzzleTheme.xml (Danish) * New translations: site.xml (Japanese) * New translations: puzzleTheme.xml (Japanese) * New translations: puzzle.xml (Danish) * New translations: puzzleTheme.xml (Latvian) * New translations: puzzleTheme.xml (Burmese) * New translations: puzzleTheme.xml (Norwegian Bokmal) * New translations: puzzleTheme.xml (Norwegian Bokmal) * New translations: puzzleTheme.xml (Norwegian Bokmal) * New translations: puzzleTheme.xml (Norwegian Bokmal) * New translations: puzzleTheme.xml (Slovak) * New translations: team.xml (Slovak) * New translations: tfa.xml (Slovak) * New translations: puzzleTheme.xml (Vietnamese) * New translations: perfStat.xml (Vietnamese) * New translations: perfStat.xml (Vietnamese) * New translations: tourname.xml (Vietnamese) * New translations: puzzle.xml (Vietnamese) * New translations: tfa.xml (Slovak) * New translations: tourname.xml (Vietnamese) * New translations: coach.xml (Vietnamese) * New translations: streamer.xml (Vietnamese) * New translations: site.xml (Slovak) * New translations: site.xml (Slovak) * New translations: site.xml (Slovak) * New translations: puzzleTheme.xml (Spanish) * New translations: puzzleTheme.xml (Spanish) * New translations: contact.xml (Swedish) * New translations: contact.xml (Thai) * New translations: contact.xml (Hindi) * New translations: contact.xml (Azerbaijani) * New translations: contact.xml (Latvian) * New translations: contact.xml (Kazakh) * New translations: contact.xml (Norwegian Nynorsk) * New translations: contact.xml (Croatian) * New translations: contact.xml (Indonesian) * New translations: contact.xml (Portuguese, Brazilian) * New translations: contact.xml (Galician) * New translations: contact.xml (Bosnian) * New translations: contact.xml (Breton) * New translations: contact.xml (Chinese Traditional) * New translations: contact.xml (Esperanto) * New translations: contact.xml (Faroese) * New translations: contact.xml (Welsh) * New translations: contact.xml (Vietnamese) * New translations: contact.xml (English, United States) * New translations: contact.xml (German) * New translations: contact.xml (Hungarian) * New translations: contact.xml (Hebrew) * New translations: contact.xml (Finnish) * New translations: contact.xml (Basque) * New translations: contact.xml (Greek) * New translations: contact.xml (Czech) * New translations: contact.xml (Italian) * New translations: contact.xml (Catalan) * New translations: contact.xml (Arabic) * New translations: contact.xml (Afrikaans) * New translations: contact.xml (Spanish) * New translations: contact.xml (French) * New translations: contact.xml (Romanian) * New translations: contact.xml (Chinese Simplified) * New translations: contact.xml (Danish) * New translations: contact.xml (Japanese) * New translations: contact.xml (Russian) * New translations: contact.xml (Ukrainian) * New translations: contact.xml (Turkish) * New translations: contact.xml (Albanian) * New translations: contact.xml (Slovenian) * New translations: contact.xml (Slovak) * New translations: contact.xml (Serbian (Cyrillic)) * New translations: contact.xml (Lithuanian) * New translations: contact.xml (Polish) * New translations: contact.xml (Dutch) * New translations: contact.xml (Macedonian) * New translations: contact.xml (Portuguese) * New translations: contact.xml (Korean) * New translations: contact.xml (Swedish) * New translations: contact.xml (Toki Pona) * New translations: contact.xml (French) * New translations: contact.xml (Spanish) * New translations: contact.xml (German) * New translations: contact.xml (Italian) * New translations: contact.xml (Lithuanian) * New translations: contact.xml (Russian) * New translations: contact.xml (Serbian (Cyrillic)) * New translations: contact.xml (Norwegian Nynorsk) * New translations: contact.xml (Hindi) * New translations: contact.xml (Aragonese) * New translations: contact.xml (Norwegian Bokmal) * New translations: contact.xml (Lithuanian) * New translations: contact.xml (Russian) * New translations: contact.xml (Dutch) * New translations: contact.xml (Romanian) * New translations: contact.xml (Dutch) * New translations: contact.xml (Romanian) * New translations: puzzleTheme.xml (Turkish) * New translations: puzzleTheme.xml (Turkish) * New translations: puzzleTheme.xml (Ukrainian) * New translations: contact.xml (Basque) * New translations: puzzleTheme.xml (Basque) * New translations: puzzleTheme.xml (Turkish) * New translations: puzzleTheme.xml (Ukrainian) * New translations: contact.xml (Turkish) * New translations: contact.xml (Russian) * New translations: puzzleTheme.xml (Norwegian Bokmal) * New translations: puzzleTheme.xml (Burmese) * New translations: puzzleTheme.xml (Spanish) * New translations: puzzleTheme.xml (Basque) * New translations: puzzleTheme.xml (Latvian) * New translations: puzzleTheme.xml (Turkish) * New translations: site.xml (Turkish) * New translations: puzzleTheme.xml (Vietnamese) * New translations: contact.xml (Polish) * New translations: puzzleTheme.xml (Danish) * New translations: puzzleTheme.xml (Italian) * New translations: puzzleTheme.xml (Russian) * New translations: puzzleTheme.xml (Norwegian Bokmal) * New translations: contact.xml (Danish) * New translations: puzzleTheme.xml (Danish) * New translations: puzzleTheme.xml (Italian) * New translations: puzzleTheme.xml (Russian) * New translations: puzzleTheme.xml (Turkish) * New translations: puzzleTheme.xml (Norwegian Bokmal) * New translations: contact.xml (Russian) * New translations: puzzleTheme.xml (Turkish) * New translations: puzzleTheme.xml (Turkish) * New translations: puzzleTheme.xml (Portuguese, Brazilian) * New translations: puzzleTheme.xml (Spanish) * New translations: puzzleTheme.xml (Turkish) * New translations: puzzleTheme.xml (Portuguese, Brazilian) * New translations: contact.xml (Portuguese, Brazilian) * New translations: puzzleTheme.xml (Spanish) * New translations: puzzleTheme.xml (French) * New translations: puzzleTheme.xml (Swedish) * New translations: puzzleTheme.xml (Portuguese, Brazilian) * New translations: puzzleTheme.xml (Norwegian Bokmal) * New translations: puzzleTheme.xml (French) * New translations: puzzleTheme.xml (Swedish) * New translations: puzzleTheme.xml (Norwegian Bokmal) * New translations: puzzleTheme.xml (German) * New translations: puzzleTheme.xml (Norwegian Bokmal) * New translations: puzzleTheme.xml (German) * New translations: puzzleTheme.xml (Dutch) * New translations: team.xml (Catalan) * New translations: puzzleTheme.xml (German) * New translations: puzzleTheme.xml (Dutch) * New translations: puzzleTheme.xml (Polish) * New translations: team.xml (Catalan) * New translations: puzzleTheme.xml (German) * New translations: puzzleTheme.xml (Polish) * New translations: contact.xml (German) * New translations: puzzleTheme.xml (German) * New translations: contact.xml (Spanish) * New translations: contact.xml (German) * New translations: faq.xml (Spanish) * New translations: contact.xml (Hungarian) * New translations: contact.xml (French) * New translations: puzzleTheme.xml (French) * New translations: puzzleTheme.xml (Serbian (Cyrillic)) * New translations: contact.xml (Hungarian) * New translations: puzzle.xml (Serbian (Cyrillic)) * New translations: puzzleTheme.xml (French) * New translations: coach.xml (Serbian (Cyrillic)) * New translations: puzzle.xml (German) * New translations: tourname.xml (German) * New translations: preferences.xml (German) * New translations: site.xml (Irish) * New translations: puzzleTheme.xml (German) * New translations: broadcast.xml (Serbian (Cyrillic)) * New translations: puzzleTheme.xml (German) * New translations: site.xml (Irish) * New translations: site.xml (Irish) * New translations: site.xml (Irish) * New translations: puzzleTheme.xml (German) * New translations: preferences.xml (Turkish) * New translations: preferences.xml (Azerbaijani) * New translations: team.xml (Azerbaijani) * New translations: search.xml (Azerbaijani) * New translations: puzzleTheme.xml (German) * New translations: preferences.xml (Turkish) * New translations: team.xml (Turkish) * New translations: search.xml (Turkish) * New translations: site.xml (Greek) * New translations: preferences.xml (Slovenian) * New translations: site.xml (Japanese) * New translations: puzzleTheme.xml (Japanese) * New translations: site.xml (Japanese) * New translations: puzzleTheme.xml (Japanese) * New translations: contact.xml (Japanese) * New translations: puzzleTheme.xml (Bosnian) * New translations: puzzleTheme.xml (English, United States) * New translations: contact.xml (English, United States) * New translations: puzzleTheme.xml (Burmese) * New translations: puzzleTheme.xml (Hindi) * New translations: puzzleTheme.xml (Hindi) * New translations: contact.xml (Hindi) * New translations: puzzleTheme.xml (Norwegian Nynorsk) * New translations: puzzleTheme.xml (Norwegian Nynorsk) * New translations: lag.xml (Hindi) * New translations: puzzleTheme.xml (Norwegian Nynorsk) * New translations: site.xml (German) * New translations: puzzleTheme.xml (Norwegian Nynorsk) * New translations: patron.xml (Hindi) * New translations: puzzleTheme.xml (Norwegian Nynorsk) * New translations: patron.xml (Hindi) --- translation/dest/broadcast/sr-SP.xml | 1 + translation/dest/class/zh-TW.xml | 2 ++ translation/dest/coach/sr-SP.xml | 10 +++++++++ translation/dest/coach/vi-VN.xml | 1 + translation/dest/contact/af-ZA.xml | 7 +----- translation/dest/contact/an-ES.xml | 7 +----- translation/dest/contact/ar-SA.xml | 7 +----- translation/dest/contact/az-AZ.xml | 7 +----- translation/dest/contact/br-FR.xml | 5 ----- translation/dest/contact/bs-BA.xml | 7 +----- translation/dest/contact/ca-ES.xml | 7 +----- translation/dest/contact/cs-CZ.xml | 7 +----- translation/dest/contact/cy-GB.xml | 3 --- translation/dest/contact/da-DK.xml | 12 +++++------ translation/dest/contact/de-DE.xml | 18 ++++++++-------- translation/dest/contact/el-GR.xml | 6 +----- translation/dest/contact/en-US.xml | 12 +++++------ translation/dest/contact/eo-UY.xml | 7 +----- translation/dest/contact/es-ES.xml | 16 +++++++------- translation/dest/contact/eu-ES.xml | 12 +++++------ translation/dest/contact/fi-FI.xml | 7 +----- translation/dest/contact/fo-FO.xml | 7 +----- translation/dest/contact/fr-FR.xml | 12 +++++------ translation/dest/contact/gl-ES.xml | 4 ---- translation/dest/contact/he-IL.xml | 7 +----- translation/dest/contact/hi-IN.xml | 16 +++++++------- translation/dest/contact/hr-HR.xml | 7 +----- translation/dest/contact/hu-HU.xml | 12 +++++------ translation/dest/contact/id-ID.xml | 7 +----- translation/dest/contact/it-IT.xml | 10 ++++----- translation/dest/contact/ja-JP.xml | 12 +++++------ translation/dest/contact/kk-KZ.xml | 7 +----- translation/dest/contact/ko-KR.xml | 4 ---- translation/dest/contact/lt-LT.xml | 12 +++++------ translation/dest/contact/lv-LV.xml | 7 +----- translation/dest/contact/mk-MK.xml | 7 +----- translation/dest/contact/nb-NO.xml | 14 ++++++------ translation/dest/contact/nl-NL.xml | 12 +++++------ translation/dest/contact/nn-NO.xml | 12 +++++------ translation/dest/contact/pl-PL.xml | 12 +++++------ translation/dest/contact/pt-BR.xml | 11 +++++----- translation/dest/contact/pt-PT.xml | 7 +----- translation/dest/contact/ro-RO.xml | 8 ++++--- translation/dest/contact/ru-RU.xml | 12 +++++------ translation/dest/contact/sk-SK.xml | 7 +----- translation/dest/contact/sl-SI.xml | 7 +----- translation/dest/contact/sq-AL.xml | 7 +----- translation/dest/contact/sr-SP.xml | 10 ++++----- translation/dest/contact/sv-SE.xml | 12 +++++------ translation/dest/contact/th-TH.xml | 5 ----- translation/dest/contact/tp-TP.xml | 3 --- translation/dest/contact/tr-TR.xml | 12 +++++------ translation/dest/contact/uk-UA.xml | 7 +----- translation/dest/contact/vi-VN.xml | 7 +----- translation/dest/contact/zh-CN.xml | 7 +----- translation/dest/contact/zh-TW.xml | 9 ++++---- translation/dest/emails/zh-TW.xml | 2 +- translation/dest/faq/es-ES.xml | 4 ++-- translation/dest/faq/zh-TW.xml | 1 + translation/dest/lag/hi-IN.xml | 2 +- translation/dest/patron/hi-IN.xml | 4 ++-- translation/dest/perfStat/vi-VN.xml | 11 ++++++++++ translation/dest/preferences/az-AZ.xml | 22 +++++++++---------- translation/dest/preferences/de-DE.xml | 6 +++--- translation/dest/preferences/sl-SI.xml | 4 ++-- translation/dest/preferences/tr-TR.xml | 30 +++++++++++++------------- translation/dest/puzzle/da-DK.xml | 2 +- translation/dest/puzzle/de-DE.xml | 2 +- translation/dest/puzzle/sr-SP.xml | 2 ++ translation/dest/puzzle/vi-VN.xml | 8 +++++++ translation/dest/puzzleTheme/af-ZA.xml | 6 +++--- translation/dest/puzzleTheme/az-AZ.xml | 7 +++--- translation/dest/puzzleTheme/bs-BA.xml | 4 +++- translation/dest/puzzleTheme/da-DK.xml | 18 +++++++++++++--- translation/dest/puzzleTheme/de-DE.xml | 18 +++++++++++++--- translation/dest/puzzleTheme/el-GR.xml | 6 +++--- translation/dest/puzzleTheme/en-US.xml | 18 +++++++++++++--- translation/dest/puzzleTheme/eo-UY.xml | 4 ++-- translation/dest/puzzleTheme/es-ES.xml | 18 +++++++++++++--- translation/dest/puzzleTheme/eu-ES.xml | 6 ++++++ translation/dest/puzzleTheme/fr-FR.xml | 12 +++++++++++ translation/dest/puzzleTheme/hi-IN.xml | 12 +++++++++++ translation/dest/puzzleTheme/hu-HU.xml | 2 ++ translation/dest/puzzleTheme/it-IT.xml | 18 +++++++++++++--- translation/dest/puzzleTheme/ja-JP.xml | 18 +++++++++++++--- translation/dest/puzzleTheme/kk-KZ.xml | 1 + translation/dest/puzzleTheme/lt-LT.xml | 4 ++++ translation/dest/puzzleTheme/lv-LV.xml | 10 ++++++--- translation/dest/puzzleTheme/my-MM.xml | 4 ++++ translation/dest/puzzleTheme/nb-NO.xml | 20 +++++++++++++---- translation/dest/puzzleTheme/nl-NL.xml | 12 ++++++++--- translation/dest/puzzleTheme/nn-NO.xml | 14 +++++++++++- translation/dest/puzzleTheme/pl-PL.xml | 12 +++++++++++ translation/dest/puzzleTheme/pt-BR.xml | 18 +++++++++++++--- translation/dest/puzzleTheme/pt-PT.xml | 6 +++--- translation/dest/puzzleTheme/ro-RO.xml | 2 ++ translation/dest/puzzleTheme/ru-RU.xml | 8 +++++++ translation/dest/puzzleTheme/sk-SK.xml | 7 ++++++ translation/dest/puzzleTheme/sr-SP.xml | 2 +- translation/dest/puzzleTheme/sv-SE.xml | 20 ++++++++++------- translation/dest/puzzleTheme/tr-TR.xml | 18 +++++++++++++--- translation/dest/puzzleTheme/uk-UA.xml | 2 ++ translation/dest/puzzleTheme/vi-VN.xml | 11 +++++++--- translation/dest/search/az-AZ.xml | 2 +- translation/dest/search/tr-TR.xml | 4 ++-- translation/dest/site/af-ZA.xml | 4 ++-- translation/dest/site/an-ES.xml | 2 +- translation/dest/site/az-AZ.xml | 2 +- translation/dest/site/cy-GB.xml | 2 +- translation/dest/site/de-DE.xml | 8 +++---- translation/dest/site/el-GR.xml | 4 ++-- translation/dest/site/eo-UY.xml | 2 +- translation/dest/site/es-ES.xml | 2 +- translation/dest/site/eu-ES.xml | 2 +- translation/dest/site/fa-IR.xml | 2 +- translation/dest/site/fi-FI.xml | 2 +- translation/dest/site/fo-FO.xml | 2 +- translation/dest/site/ga-IE.xml | 9 ++++++++ translation/dest/site/hi-IN.xml | 2 +- translation/dest/site/hu-HU.xml | 2 +- translation/dest/site/hy-AM.xml | 2 +- translation/dest/site/ia-IA.xml | 2 +- translation/dest/site/it-IT.xml | 2 +- translation/dest/site/ja-JP.xml | 5 +++-- translation/dest/site/kk-KZ.xml | 2 +- translation/dest/site/ko-KR.xml | 2 +- translation/dest/site/lt-LT.xml | 2 +- translation/dest/site/lv-LV.xml | 2 +- translation/dest/site/nb-NO.xml | 2 +- translation/dest/site/nl-NL.xml | 2 +- translation/dest/site/nn-NO.xml | 2 +- translation/dest/site/pl-PL.xml | 2 +- translation/dest/site/ru-RU.xml | 2 +- translation/dest/site/sk-SK.xml | 10 ++++----- translation/dest/site/sl-SI.xml | 2 +- translation/dest/site/sr-SP.xml | 2 +- translation/dest/site/tr-TR.xml | 4 ++-- translation/dest/site/uk-UA.xml | 2 +- translation/dest/streamer/vi-VN.xml | 3 +++ translation/dest/team/az-AZ.xml | 8 +++---- translation/dest/team/ca-ES.xml | 10 +++++++-- translation/dest/team/sk-SK.xml | 4 ++++ translation/dest/team/tr-TR.xml | 6 +++--- translation/dest/tfa/sk-SK.xml | 8 ++++--- translation/dest/tourname/de-DE.xml | 2 +- translation/dest/tourname/vi-VN.xml | 9 ++++++++ 146 files changed, 601 insertions(+), 462 deletions(-) diff --git a/translation/dest/broadcast/sr-SP.xml b/translation/dest/broadcast/sr-SP.xml index 0a6a502a53..9c431a9d52 100644 --- a/translation/dest/broadcast/sr-SP.xml +++ b/translation/dest/broadcast/sr-SP.xml @@ -9,6 +9,7 @@ Назив догађаја Кратак опис догађаја Цео опис догађаја + Изворни УРЛ Број рунде Датум почетка у твојој временској зони Клонирај емитовање diff --git a/translation/dest/class/zh-TW.xml b/translation/dest/class/zh-TW.xml index 416037df36..26edfc99d2 100644 --- a/translation/dest/class/zh-TW.xml +++ b/translation/dest/class/zh-TW.xml @@ -39,6 +39,8 @@ 進度 這個課程內還沒有學生 沒有被移除的學生 + 幾天來 + 奕棋時間 勝率 N/A 課程通知 diff --git a/translation/dest/coach/sr-SP.xml b/translation/dest/coach/sr-SP.xml index 6f1a835e95..16c20fd2ac 100644 --- a/translation/dest/coach/sr-SP.xml +++ b/translation/dest/coach/sr-SP.xml @@ -8,16 +8,26 @@ Локација Језици Рејтинг + Цена по сату Доступност Прихвата студенте Не прихвата студенте у овом тренутку + %s тренира ученике шаха Погледај %s Личес профил Пошаљи приватну поруку О мени + Играчко искуство + Искуство у подучавању + Остала искуства Најбоља умећа Методологија учења Јавне студије Јутјуб снимци + + %s рецензија ученика + %s рецензије ученика + %s рецензија ученика + Хвала вам на рецензији! Оцени овог тренера Опиши своје тренерско искуство са %s diff --git a/translation/dest/coach/vi-VN.xml b/translation/dest/coach/vi-VN.xml index e8cc46867d..c55c6d44f3 100644 --- a/translation/dest/coach/vi-VN.xml +++ b/translation/dest/coach/vi-VN.xml @@ -22,6 +22,7 @@ Kinh nghiệm khác Những kỹ năng tốt nhất Phương pháp giảng dạy + Khóa học công khai Các video trên YouTube %s đánh giá của học sinh diff --git a/translation/dest/contact/af-ZA.xml b/translation/dest/contact/af-ZA.xml index dbdb38bca9..810208813f 100644 --- a/translation/dest/contact/af-ZA.xml +++ b/translation/dest/contact/af-ZA.xml @@ -27,11 +27,6 @@ Ek wil my geskiedenis of my gradeering uitvee Dit is nie moontlik om jou spel geskiedenis, kopkrapper geskiedenis of gradeerings uit te vee nie. Ek wil \'n speler aankla - kroek - voorgee - boelie - beledigings - \'n ander rede Om \'n speler aan te kla vir %s, gebruik die rapporteringsvorm Jy kan ook daardie blad bereik deur die %s aanmeldingsblokkie op die profielblad te klik. Moet nie spelers in die forum aankla nie. @@ -59,7 +54,7 @@ Maak seker dat jy \'n gegradeerde spel gespeel het. Vriendskaplike wedstryde beïnvloed nie jou gradeering nie. Foutblad As daar \'n foutblad opduik kan jy dit rapporteer: - Appéleer vir \'n ban of IP beperking + Appéleer vir \'n ban of IP beperking Rekenaarhulp of vuilspel Jy kan appélleer by %s. Vals positiewe gebeur soms en ons vra onverskoning daarvoor. diff --git a/translation/dest/contact/an-ES.xml b/translation/dest/contact/an-ES.xml index 096713a44e..507bb760ad 100644 --- a/translation/dest/contact/an-ES.xml +++ b/translation/dest/contact/an-ES.xml @@ -27,11 +27,6 @@ Quiero borrar lo mío historial u puntuación No ye posible borrar lo tuyo historial de chuegos, historial de rompecabezas u qualificacions. Quiero reportar un chugador - fer trapazas - perder a exprés - estar molestoso - insultar - belatra razón Pa reportar a un chugador per %s, utiliza lo formulario de reporte Tamién puetz acceder a ixa pachina pretando lo botón %s en un perfil. No reportes chugadors en o foro. @@ -59,7 +54,7 @@ Asegura-te d\'haber chugau una partida per puntuación. Las partidas amistosas no afectan a las puntuacions d\'os chugadors. Pachina d\'error Si una pachina te da error, puetz reportar-la: - Apelar per un bloqueyo u una restricción d\'IP + Apelar per un bloqueyo u una restricción d\'IP Motor u marca de trapacería Puetz ninviar una apelación a %s. A vegadas ocurren falsos positivos, y lo lamentamos. diff --git a/translation/dest/contact/ar-SA.xml b/translation/dest/contact/ar-SA.xml index e875952cdb..9d7d1e0593 100644 --- a/translation/dest/contact/ar-SA.xml +++ b/translation/dest/contact/ar-SA.xml @@ -27,11 +27,6 @@ أريد مسح تاريخي أو تقييمي لا يمكن مسح تاريخ المباريات أو تاريخ الألغاز أو التقييم. أريد أن أبلغ عن لاعب - الغش - تعمد تقديم أداء ضعيف - التلاعب - إهانة - سبب آخر للإبلاغ عن لاعب لـ %s، استخدم نموذج التبليغ يمكنك أيضا الوصول إلى هذه الصفحة بالنقر على زر التبليغ %s في صفحة الملف الشخصي. لا تبلغ عن اللاعبين في المنتدى. @@ -58,7 +53,7 @@ تأكد من أنك لعبت لعبة مقيمة. الألعاب الاستعراضية لا تؤثر على تقييم اللاعبين. صفحة خطأ إذا واجهت صفحة خطأ، فيمكنك الإبلاغ عنها: - طلب لرفع حظر او تقييد على IP + طلب لرفع حظر او تقييد على IP علامة الغش او استخدام محرك يمكنك ارسال طلب الى %s. قد تحدث قرارات خاطئة في بعض الأحيان، ونحن نعتذر على ذلك. diff --git a/translation/dest/contact/az-AZ.xml b/translation/dest/contact/az-AZ.xml index ea4d01cdcd..8cd44330b6 100644 --- a/translation/dest/contact/az-AZ.xml +++ b/translation/dest/contact/az-AZ.xml @@ -27,11 +27,6 @@ Tarixçəmi və ya reytinqimi sıfırlamaq istəyirəm Oyun tarixçənizi, tapmaca tarixçənizi və ya reytinqlərinizi sıfırlamaq mümkün deyil. Bir oyunçunu bildirmək istəyirəm - hiylə - bilərək uduzma - trollama - təhqir - başqa bir səbəb %s üçün bir oyunçunu şikayət etmək üçün şikayət formunu istifadə edin Bir profil səhifəsindəki %s şikayət düyməsinə basaraq da həmin səhifəyə daxil ola bilərsiniz. Forumdakı oyunçuları şikayət etməyin. @@ -59,7 +54,7 @@ Reytinqli oyun oynadığınızdan əmin olun. Reytinqsiz oyunlar oyunçuların reytinqlərinə təsir etmir. Xəta səhifəsi Bir səhv səhifəsi ilə qarşılaşmısınızsa, bu barədə məlumat verə bilərsiniz: - Ban və ya IP məhdudlaşması üçün müraciət edin + Ban və ya IP məhdudlaşması üçün müraciət edin Şahmat mühərriki istifadəsi və ya hiylə işarəsi Buraya müraciət edə bilərsiniz: %s. Bəzən yanlış şeylər ola bilər və buna görə üzr istəyirik. diff --git a/translation/dest/contact/br-FR.xml b/translation/dest/contact/br-FR.xml index 0df5dd04ed..a96356e8e7 100644 --- a/translation/dest/contact/br-FR.xml +++ b/translation/dest/contact/br-FR.xml @@ -22,11 +22,6 @@ Padal e c\'hallit serriñ ar gont-mañ ha digeriñ unan all. C\'hoant am eus da ziverkañ roll-istor ma c\'hrogadoù Ne c\'haller ket diverkañ roll-istor ho krogadoù, pe hini ho poelladennoù pe ho renkadur. - truchañ - trucherezh e-keñver ar renkadur - trolling - kunujennoù - abegoù all War Lichess Discord server Paket eo bet ur pezh gwerin en un doare direizh \"En ur dremen\" a vez graet deus-se hag ur reolenn diazez eus ar c\'hoari an hini eo. diff --git a/translation/dest/contact/bs-BA.xml b/translation/dest/contact/bs-BA.xml index 927b50c1e3..9b9db7c301 100644 --- a/translation/dest/contact/bs-BA.xml +++ b/translation/dest/contact/bs-BA.xml @@ -27,11 +27,6 @@ Želim da obrišem moju istoriju ili rejting Nije moguće obrisati Vašu istoriju partija, istoriju problema ili rejting. Želim prijaviti igrača - varanje - namjerno obaranje rejtinga - provociranje - uvrede - neki drugi razlog Da biste prijavili igrača za %s, koristite formular za prijavu Možete doći do te stranice i klikom na %s report opciju na profilnoj stranici. Ne prijavljujte igrače na forumu. @@ -59,7 +54,7 @@ Potvrdite da ste igrali partiju za rejting bodove. Prijateljske partije na utiču na rejting igrača. Stranica u slučaju greške Ukoliko ste dobili stranicu u slučaju greške, možete je prijaviti: - Žalba na zabranu ili ograničenje IP adrese + Žalba na zabranu ili ograničenje IP adrese Oznaka za varalice ili za one koji koriste računar Možete poslati žalbu na %s. Ponekad lažni rezultat analize dovede do blokiranja računa, i izvinjavamo se zbog toga. diff --git a/translation/dest/contact/ca-ES.xml b/translation/dest/contact/ca-ES.xml index 36ec6e85f1..efa7b21236 100644 --- a/translation/dest/contact/ca-ES.xml +++ b/translation/dest/contact/ca-ES.xml @@ -27,11 +27,6 @@ Vull esborrar el meu historial o puntuació No és possible esborrar l\'historial de jocs, l\'historial de trencaclosques o les classificacions. Vull denunciar un jugador - fer trampes - perdre deliberadament - ser molest - insults - algun altre motiu Per denunciar un usuari per %s, fes servir el formulari de denucies També podeu arribar a aquesta pàgina si feu clic al botó de denuncies per %s en una pàgina de perfil. No denunciar jugadors al forum. @@ -59,7 +54,7 @@ Assegura\'t d\'haver jugat una partida puntuable. Les partides amistoses no afecten les puntuacions dels jugadors. Pàgina d\'error Si una pàgina et dóna error, la pots reportar: - Apel·lació per prohibició o restricció de IP + Apel·lació per prohibició o restricció de IP Motor o marca de trampa Pots enviar una apel·lació a %s. A vegades es detecten falsos positius i demanem disculpes per això. diff --git a/translation/dest/contact/cs-CZ.xml b/translation/dest/contact/cs-CZ.xml index bce1ac3271..d22b527433 100644 --- a/translation/dest/contact/cs-CZ.xml +++ b/translation/dest/contact/cs-CZ.xml @@ -27,11 +27,6 @@ Chci vymazat svou historii nebo rating Není možné vymazat Vaši historii her, historii taktických úloh nebo ratingy. Chci nahlásit hráče - podvádění - spřádání - trollení - urážky - jiný důvod Pro nahlášení hráče za %s použijte formulář pro nahlášení Na tuto stránku se můžete také dostat kliknutím na nahlašovací tlačítko %s na profilové stránce. Nenahlašujte hráče ve fóru. @@ -59,7 +54,7 @@ Ujistěte se, že jste hráli hodnocenou hru. Neformální hry neovlivňují hodnocení hráčů. Chybová stránka Pokud jste narazili na chybovou stránku, můžete ji nahlásit: - Žádost o zákaz nebo IP omezení + Žádost o zákaz nebo IP omezení Ozčnačení za engine nebo podvádění Můžete poslat odvolání na %s. Někdy dochází k falešným označením, a to je nám líto. diff --git a/translation/dest/contact/cy-GB.xml b/translation/dest/contact/cy-GB.xml index 6564663487..6491f9b1cb 100644 --- a/translation/dest/contact/cy-GB.xml +++ b/translation/dest/contact/cy-GB.xml @@ -1,7 +1,4 @@ Cysylltu - twyllo - trôlio - sarhadau diff --git a/translation/dest/contact/da-DK.xml b/translation/dest/contact/da-DK.xml index 5da8b36fdb..f85546316d 100644 --- a/translation/dest/contact/da-DK.xml +++ b/translation/dest/contact/da-DK.xml @@ -27,11 +27,11 @@ Jeg vil slette min historik eller rating Det er ikke muligt at slette din historik for partier, taktikopgaver eller ratinger. Jeg vil anmelde en spiller - snyd - tabe med vilje - trolle - fornærmelser - en anden grund + Anmeld en spiller for at snyde + Anmeld en spiller for at tabe med vilje + Anmeld en spiller for chikane + Anmeld en spiller for fornærmelser + Anmeld en spiller af en anden grund For at anmelde en spiller for %s, brug anmeldelsesformularen Du kan også komme frem til den side ved at klikke på %s anmeldelsesknappen på en profilside. Anmeld ikke spillere i forummet. @@ -59,7 +59,7 @@ Vær sikker på, at du spillede et ratet parti. Uformelle partier påvirker ikke spillernes rating. Fejlside Hvis du stødte på en fejlside, kan du anmelde det: - Appellere en udelukkelse eller IP-restriktion + Appellere en udelukkelse eller IP-restriktion Skakcomputer eller snyde-anmærkning Du kan sende en appel til %s. Falske positiver forekommer, hvilket vi beklager. diff --git a/translation/dest/contact/de-DE.xml b/translation/dest/contact/de-DE.xml index 907a2ba91e..215baa1596 100644 --- a/translation/dest/contact/de-DE.xml +++ b/translation/dest/contact/de-DE.xml @@ -2,10 +2,10 @@ Kontakt Lichess kontaktieren - Wobei können wir dir behilflich sein? + Wie können wir dir helfen? Besuche diese Seite, um das Problem zu lösen Ich kann mich nicht einloggen - Ich erhalte meine Bestätigungsmail nicht + Ich erhalte meine Bestätigungs-E-Mail nicht Ich habe mein Passwort vergessen Ich habe meinen Benutzernamen vergessen Du kannst dich mit der E-Mail-Adresse einloggen, mit der du dich angemeldet hast @@ -27,13 +27,13 @@ Ich möchte meinen Verlauf oder meine Wertung löschen Es ist nicht möglich deinen Spiel-, Puzzleverlauf oder deine Wertung zu löschen. Ich möchte einen Spieler melden - Betrügens - absichtlichen Verlierens - Trollens - Beleidigungen - ein anderer Grund + Melde einen Spieler wegen Betrugs + Melde einen Spieler wegen Tiefstapelei + Melde einen Spieler wegen bewusstem Provozierens + Melde einen Spieler wegen Beleidigungen + Melde einen Spieler aus einem anderen Grund Benutze das Meldeformular, um einen Spieler wegen %s zu melden - Du erreichst diese Seite ebenfalls mit dem Meldeknopf (%s) auf Profilseiten. + Du erreichst diese Seite ebenfalls, indem du den %s Meldeknopf auf einer Profilseite klickst. Melde keine Spieler im Forum. Sende uns keine Meldungen per E-Mail. Sende den Moderatoren keine direkten Nachrichten. @@ -59,7 +59,7 @@ Stelle sicher, dass du ein gewertetes Spiel spielst. Ungewertete Spiele beeinflussen nicht die Spielerwertungen. Fehlerseite Falls du eine Fehlerseite entdeckt hast kannst du sie melden: - Einspruch gegen einen Bann oder IP-Beschränkung + Einspruch gegen einen Bann oder IP-Beschränkung Markierung für Computerunterstützung/Betrug Du kannst deinen Einspruch an %s senden. Falsche Positivergebnisse können gelegentlich auftreten und dafür möchten wir uns entschuldigen. diff --git a/translation/dest/contact/el-GR.xml b/translation/dest/contact/el-GR.xml index 2a1ffb9563..655311f2d5 100644 --- a/translation/dest/contact/el-GR.xml +++ b/translation/dest/contact/el-GR.xml @@ -27,10 +27,6 @@ Επιθυμώ να διαγράψω το ιστορικό μου ή το rating Δεν είναι δυνατόν να διαγράψετε το ιστορικό παιχνιδιών σας, ιστορικό γρίφων, ή ratings. Επιθυμώ να αναφέρω έναν παίχτη - απάτη - τρολάρισμα - προσβολές - διαφορετικός λόγος Για να αναφέρετε έναν παίκτη για %s, χρησιμοποιήστε τη φόρμα αναφοράς Επίσης μπορείτε να επισκεφτείτε αυτή τη σελίδα με κλικ στο %s κουμπί στη σελίδα προφίλ. Μην αναφέρετε παίκτες στο φόρουμ. @@ -58,7 +54,7 @@ Σιγουρευτείτε ότι η παρτίδα ήταν με αξιολόγηση. Οι φιλικές παρτίδες δεν επηρεάζουν την αξιολόγηση των παικτών. Σελίδα λάθους Αν εμφανίστηκε σελίδα λάθους, μπορείτε να το αναφέρετε: - Ένσταση για αποκλεισμό ή περιορισμό σε IP + Ένσταση για αποκλεισμό ή περιορισμό σε IP Μηχανή ή σημάδι απάτης Μπορείτε να ασκήσετε ένσταση στο %s. Αν η ένστασή σας είναι νόμιμη, θα αποσύρουμε τον αποκλεισμό το συντομότερο δυνατόν. diff --git a/translation/dest/contact/en-US.xml b/translation/dest/contact/en-US.xml index ff204367a0..2f03fa04dc 100644 --- a/translation/dest/contact/en-US.xml +++ b/translation/dest/contact/en-US.xml @@ -27,11 +27,11 @@ I want to clear my history or rating It\'s not possible to clear your game history, puzzle history, or ratings. I want to report a player - cheating - sandbagging - trolling - insults - some other reason + Report a player for cheating + Report a player for sandbagging + Report a player for trolling + Report a player for insults + Report a player for some other reason To report a player for %s, use the report form You can also reach that page by clicking the %s report button on a profile page. Do not report players in the forum. @@ -59,7 +59,7 @@ Make sure you played a rated game. Casual games do not affect the players ratings. Error page If you faced an error page, you may report it: - Appeal for a ban or IP restriction + Appeal for a ban or IP restriction Engine or cheat mark You may send an appeal to %s. False positives do happen sometimes, and we\'re sorry about that. diff --git a/translation/dest/contact/eo-UY.xml b/translation/dest/contact/eo-UY.xml index 2244df5354..61923e5bf8 100644 --- a/translation/dest/contact/eo-UY.xml +++ b/translation/dest/contact/eo-UY.xml @@ -27,11 +27,6 @@ Mi volas forigi mian historion aŭ poentaron Ne eblas malplenigi vian ludan historion, puzlan historion aŭ poentaron. Mi volas raporti ludanton - trompo - sablokolono - trolado - insultoj - iu alia kialo Por raporti ludanton por %s, uzu la raportan formularon Vi ankaŭ povas atingi tiun paĝon alklakante la raportan butonon %s en profilpaĝo. Ne raportu ludantojn en la forumo. @@ -59,7 +54,7 @@ Certigu, ke vi ludis taksitan ludon. Kazaj ludoj ne influas la taksojn de ludantoj. Erara paĝo Se vi trovas eraran paĝon, vi povas raporti ĝin: - Apelacio por malpermeso aŭ IP limigo + Apelacio por malpermeso aŭ IP limigo Motoro aŭ trompmarko Vi povas sendi apelacion al %s. Falsaj pozitivoj kelkfoje okazas, kaj ni bedaŭras pro tio. diff --git a/translation/dest/contact/es-ES.xml b/translation/dest/contact/es-ES.xml index 76f2ecb124..2534bac2d5 100644 --- a/translation/dest/contact/es-ES.xml +++ b/translation/dest/contact/es-ES.xml @@ -10,7 +10,7 @@ Olvidé mi nombre de usuario Puedes iniciar sesión con la dirección de correo electrónico con la que te registraste Perdí mis códigos de autenticación en dos pasos - Completa el formulario de restablecimiento de contraseña para eliminar tu segundo factor + Completa el cuadro de restablecimiento de contraseña para eliminar tu segundo factor Necesito soporte de cuenta Quiero que mi título se muestre en Lichess Para mostrar tu título en tu perfil de Lichess y participar en los torneos que lo exijan, visita la página de verificación de títulos @@ -27,11 +27,11 @@ Quiero borrar mi historial o puntuación No puedes borrar tu historial de partidas, ejercicios o puntuaciones. Quiero denunciar a un jugador - hacer trampas - reducción intencionada de su puntuación - molestar - insultos - alguna otra razón + Denunciar a un jugador por hacer trampas + Denunciar a un jugador por reducción intencionada de su puntuación + Denunciar a un jugador por molestar + Denunciar a un jugador por insultos + Denunciar a un jugador por alguna otra razón Para denunciar a un jugador por %s, utiliza el formulario de denuncia También puedes acceder a esa página pulsando el botón de denuncia %s en un perfil. No denuncie a jugadores en el foro. @@ -59,11 +59,11 @@ Asegúrate de haber jugado una partida por puntuación. Las partidas amistosas no afectan a las puntuaciones de los jugadores. Página de error Si una página te da error, puedes reportarla: - Apelar por un bloqueo o una restricción de IP + Apelar por un bloqueo o una restricción de IP Motor o marca de trampa Puedes enviar una apelación a %s. A veces ocurren falsos positivos, y lo lamentamos. - Si su apelación es legítima, levantaremos la prohibición lo antes posible. + Si tu apelación es legítima, levantaremos la prohibición lo antes posible. Sin embargo, si realmente utilizó asistencia del motor, incluso una sola vez, su cuenta está lamentablemente perdida. No niegues haber hecho trampa. Si quieres que se te permita crear una nueva cuenta, sólo tienes que admitir lo que hiciste, y mostrar que has comprendido que se trataba de un error. Otra restricción diff --git a/translation/dest/contact/eu-ES.xml b/translation/dest/contact/eu-ES.xml index 302dd93c3e..c4cc7cafb7 100644 --- a/translation/dest/contact/eu-ES.xml +++ b/translation/dest/contact/eu-ES.xml @@ -27,11 +27,11 @@ Nire historikoa edo puntuazioa berrezarri nahi ditut Ezin da zure partiden historikoa, ariketena edo puntuazioa berrezarri. Erabiltzaile baten inguruko kexa jarri nahi dut - tranpak egiten ditu - nahita txartoago jokatzen du - traba egiten du - irainak botatzen ditu - beste arrazoiren bat + Jokalari bat tranpa egiten aritu dela salatu + Jokalari bat tranpa egiten aritu dela salatu + Jokalari bat troll bat bezala aritu dela salatu + Jokalari bat iseka egiten aritu dela salatu + Jokalari bat beste zerbaitegatik salatu Jokalari bati buruzko %s kexa egiteko, erabili kexa formularioa Orrialde horretara jokalariaren profilaren orrialdeko %s berri emateko botoian sakatuta hel zaitezke. Ez erabili foroa jokalarien inguruko kexa bidaltzeko. @@ -59,7 +59,7 @@ Ziurtatu puntuaziorako baliogarria den partida bat jokatu duzula. Lagunarteko partidek ez dute eraginik jokalarien puntuazioan. Errore orrialdea Errorea orrialdea agertu bazaizu, horren berri eman diezagukezu: - Debeku edo IP murriztapen baten aurka egitea + Debeku edo IP murriztapen baten aurka egitea Motore-erabilera edo tranpa marka Zure kexa honi bidali diezaiokezu: %s. Batzuetan positibo faltsuak gertatzen dira, barkatu. diff --git a/translation/dest/contact/fi-FI.xml b/translation/dest/contact/fi-FI.xml index ef15dd11c0..3c72c9fae1 100644 --- a/translation/dest/contact/fi-FI.xml +++ b/translation/dest/contact/fi-FI.xml @@ -27,11 +27,6 @@ Haluan tyhjentää historiani tai vahvuuslukuni Pelihistoriaasi, tehtävähistoriaasi tai vahvuuslukuja ei voi tyhjentää. Haluan ilmoittaa pelaajan - huijaamisesta - tahallisesta häviämisestä - trollaamisesta - loukkauksista - muusta syystä Ilmoittaaksesi pelaajan %s täytä tämä ilmoituslomake Pääset samalle sivulle myös klikkaamalla %s ilmoitusnappia pelaajan profiilisivulla. Älä ilmoita pelaajia foorumilla. @@ -59,7 +54,7 @@ Varmistu että pelasit pisteytetyn pelin. Rennot pelit eivät vaikuta pelaajien vahvuuslukuihin. Virhesivu Jos törmäsit virhesivuun, voit raportoida sen: - Valita porttikiellosta tai IP-estosta + Valita porttikiellosta tai IP-estosta Tietokone- tai huijarimerkinnästä Voit valittaa osoitteeseen %s. Vääriä positiivisia voi tulla joskus ja olemme pahoillamme siitä. diff --git a/translation/dest/contact/fo-FO.xml b/translation/dest/contact/fo-FO.xml index 9190118412..76425824a0 100644 --- a/translation/dest/contact/fo-FO.xml +++ b/translation/dest/contact/fo-FO.xml @@ -27,11 +27,6 @@ Eg vil strika mína hendingagongd ella mítt styrkital Tað er ikki møguligt at strika tínar talv- og uppgávuhendingagongdir ella styrkitøl tíni. Eg vil melda ein telvara - snýt - tapa við vilja - trølla - háðanir - aðra orsøk Til tess at melda ein telvara fyri %s, nýt fráboðanaroyðublaðið Tú røkkur eisini teirri síðuni við at klikkja %s fráboðanarknøttin á eini vangamyndssíðu. Ikki melda telvarar á torginum. @@ -59,7 +54,7 @@ Ver vísur í, at tú telvaði eitt talv, ið varð styrkismett. Óformell talv ávirka ikki styrkitalið hjá telvaranum. Skeivleikasíða Um tú barst við eina síðu við skeivleikum, kanst tú boða frá tí: - Bið um eitt bann ella eina IP-avmarking + Bið um eitt bann ella eina IP-avmarking Fráboðan um svik ella talvteldu Tú kanst senda eina áheitan til %s. Vit eru hørm um, at fólk viðhvørt kunnu verða bannað av órøttum. diff --git a/translation/dest/contact/fr-FR.xml b/translation/dest/contact/fr-FR.xml index eab460a356..6126d93f39 100644 --- a/translation/dest/contact/fr-FR.xml +++ b/translation/dest/contact/fr-FR.xml @@ -27,11 +27,11 @@ Je veux effacer mon historique ou mon classement Il n\'est pas possible d\'effacer votre historique de jeu, votre historique de problèmes ou vos classements. Je veux signaler un joueur - triche - manipulation du classement - trolling - insultes - une autre raison + Signaler un joueur pour tricherie + Signaler un joueur qui perd intentionnellement ses parties + Signaler un joueur pour trolling + Signaler un joueur pour des insultes + Signaler un joueur pour une autre raison Pour signaler un joueur pour %s, utilisez le formulaire de signalement Vous pouvez également atteindre cette page en cliquant sur le bouton de signalement %s sur une page de profil. Ne signalez pas les joueurs dans le forum. @@ -59,7 +59,7 @@ Seules les parties classées sont prises en compte dans le calcul du classement. Les parties amicales ne sont pas comptées. Page d\'erreur Si un message d\'erreur s\'est affiché, vous pouvez le signaler : - Demande d\'appel pour un bannissement ou une restriction IP + Demande d\'appel pour un bannissement ou une restriction IP Tricherie ou utilisation d\'un programme Vous pouvez soumettre une demande d\'appel à %s. De faux positifs se produisent parfois et nous en sommes désolés. diff --git a/translation/dest/contact/gl-ES.xml b/translation/dest/contact/gl-ES.xml index 37d1b914d5..1059e84d73 100644 --- a/translation/dest/contact/gl-ES.xml +++ b/translation/dest/contact/gl-ES.xml @@ -7,10 +7,6 @@ Esquecín o meu nome de usuario Quero cerrar a miña conta Quero reabrir miña conta - facer trampas - molestar - insultos - outra razón Quero informar dun erro Páxina de erro Ningún dos anteriores diff --git a/translation/dest/contact/he-IL.xml b/translation/dest/contact/he-IL.xml index 4cec4057b6..b79f8028c6 100644 --- a/translation/dest/contact/he-IL.xml +++ b/translation/dest/contact/he-IL.xml @@ -27,11 +27,6 @@ אני רוצה לנקות את ההיסטוריה או הדירוג שלי לא ניתן לנקות את היסטוריית המשחק, היסטוריית הפאזלים, או הדירוגים שלך. אני רוצה לדווח על שחקן - רמאות - אי ספורטיביות - הצקה - עלבונות - סיבות אחרות כדי לדווח על שחקן על %s, השתמש בטופס הדיווח אתה יכול גם להגיע לדף זה על ידי לחיצה על כפתור הדוח %s בדף הפרופיל. אל תדווחו על שחקנים בפורום. @@ -59,7 +54,7 @@ בדוק אם שיחקת משחק מדורג. משחק לא מדורג לא משפיע על מד הכושר. שגיאה בדף אם התמודדת עם שגיאה בדף, אתה יכול לדווח על זה: - ערער על איסור או על הגבלה בIP + ערער על איסור או על הגבלה בIP סימן מנוע או רמאות אתה יכול לשלוח ערעור ל%s. אבחנות שגויות קורות לפעמים, ואנחנו מצטערים על כך. diff --git a/translation/dest/contact/hi-IN.xml b/translation/dest/contact/hi-IN.xml index b4b8413ff0..d35e3ca48a 100644 --- a/translation/dest/contact/hi-IN.xml +++ b/translation/dest/contact/hi-IN.xml @@ -27,11 +27,11 @@ मैं अपना इतिहास या रेटिंग मिटाना चाहता हूं आपके खेल के इतिहास, पहेली इतिहास, या रेटिंग को मिटाना संभव नहीं है। मैं एक खिलाड़ी की रिपोर्ट करना चाहता हूं - छल किया गया - जानबूझकर हारना - मज़ाक उड़ाया गया - अपमान - कुछ और कारण + धोखाधड़ी के लिए एक खिलाड़ी की रिपोर्ट करें + सैंडबैगिंग के लिए एक खिलाड़ी की रिपोर्ट करें + ट्रोलिंग के लिए एक खिलाड़ी की रिपोर्ट करें + अपमान के लिए एक खिलाड़ी की रिपोर्ट करें + किसी अन्य कारण से किसी खिलाड़ी की रिपोर्ट करें किसी खिलाड़ी को %s के लिए रिपोर्ट करने के लिए, रिपोर्ट फ़ॉर्म का उपयोग करें आप प्रोफाइल पेज पर %s रिपोर्ट बटन पर क्लिक करके भी उस पृष्ठ पर पहुँच सकते हैं। मंच में खिलाड़ियों को रिपोर्ट न करें। @@ -40,8 +40,8 @@ केवल रिपोर्ट फॉर्म के माध्यम से रिपोर्ट करना ही प्रभावी हैं। मैं एक बग रिपोर्ट करना चाहता हूं फोरम के लिचेस फीडबैक सेक्शन में - GitHub पर Lichess website issue के रूप में - GitHub पर Lichess mobile app issue के रूप में + GitHub पर एक Lichess वेबसाइट के मुद्दे के रूप में + GitHub पर एक Lichess मोबाइल ऐप के मुद्दे के रूप में Lichess Discord सर्वर में कृपया वर्णन करें कि बग कैसा दिखता है, इसके बजाय की आपको क्या होने की उम्मीद है, और बग को पुन: उत्पन्न करने के लिए कदम। प्यादे की अवैध चाल @@ -59,7 +59,7 @@ सुनिश्चित करें कि आपने एक रेटेड गेम खेला है। आकस्मिक खेल खिलाड़ियों की रेटिंग को प्रभावित नहीं करते हैं। त्रुटि पृष्ठ यदि आपको कोई त्रुटि आई है, तो आप इसकी रिपोर्ट कर सकते हैं: - प्रतिबंध या आईपी प्रतिबंध के लिए अपील + प्रतिबंध या आईपी प्रतिबंध के लिए अपील इंजन या धोखा चिह्न आप %s पर अपील भेज सकते हैं। झूठी सकारात्मकता कभी-कभी होती है, और हमें इस पर खेद है diff --git a/translation/dest/contact/hr-HR.xml b/translation/dest/contact/hr-HR.xml index eb868b1648..a01a010084 100644 --- a/translation/dest/contact/hr-HR.xml +++ b/translation/dest/contact/hr-HR.xml @@ -27,11 +27,6 @@ Želim izbrisati svoju povijest ili ocjenu Nije moguće izbrisati svoju povijest igara, povijest zagonetka ili ocjenu. Želim prijaviti igrača - varanje - namjerno igranje ispod svojih sposobnosti - provociranje - vrijeđanje - neki drugi razlog Da prijevite igrača za %s koristite obrazac za prijavljivanje Do te stranice možete doći i klikom na %s gumb za izvještaj na stranici profila. Nemojte prijavljivati igrače na forumu. @@ -59,7 +54,7 @@ Potvrdite da ste igrali partiju za rejting bodove. Prijateljske partije na utiču na rejting igrača. Stranica u slučaju greške Ukoliko ste dobili stranicu u slučaju greške, možete je prijaviti: - Žalba na zabranu ili ograničenje IP adrese + Žalba na zabranu ili ograničenje IP adrese Oznaka za varalice ili za one koji koriste računar Možete poslati žalbu na %s. Ponekad lažni rezultat analize dovede do blokiranja računa, i izvinjavamo se zbog toga. diff --git a/translation/dest/contact/hu-HU.xml b/translation/dest/contact/hu-HU.xml index 18142e9b0c..5092e4e41b 100644 --- a/translation/dest/contact/hu-HU.xml +++ b/translation/dest/contact/hu-HU.xml @@ -27,11 +27,11 @@ Szeretném törölni az előzményeket vagy az értékszámom Nincs lehetőség a játékelőzményed, feladványaid és értékszámod törlésére. Jelentenék egy felhasználót - csalás - félrevezetés - trollkodás - sértegetés - más ok miatt + Játékos jelentése csalás miatt + Játékos jelentése félrevezetés (sandbagging) miatt + Játékos jelentése trollkodás miatt + Játékos jelentése sértegetés miatt + Játékos jelentése egyéb okból kifolyólag Játékos jelentéséhez %s miatt használd a bejelentő lapot Amit ugyancsak elérhetsz, ha a %s jelentése gombra kattintasz a profil oldalon. Ne jelents játékosokat a fórumban. @@ -59,7 +59,7 @@ Ellenőrizd, hogy rangsorolt játszmát játszol. Nem rangsorolt játékok nincsenek hatással az értékszámra. Hibaoldal Ha hibaoldallal találkoztál, itt jelentheted: - Fellebbezés kitiltás vagy IP cím korlátozás miatt + Fellebbezés kitiltás vagy IP cím korlátozás miatt Sakkprogram használat vagy csalás A fellebbezést a %s címre küldheted. Téves ítéletek születhetnek néha, amit nagyon sajnálunk. diff --git a/translation/dest/contact/id-ID.xml b/translation/dest/contact/id-ID.xml index 1cb3960d03..f759814c49 100644 --- a/translation/dest/contact/id-ID.xml +++ b/translation/dest/contact/id-ID.xml @@ -27,11 +27,6 @@ Saya ingin menghapus riwayat atau rating Sangat mustahil dapat menghapus riwayat permainan, riwayat teka-teki, atau rating Anda. Saya ingin melaporkan pemain - berbuat curang - sandbagging - memancing kemarahan - penghinaan - alasan lainnya Untuk melaporkan pemain terkait %s, gunakan kolom lapor Anda juga dapat mencapai halaman itu dengan mengeklik tombol laporan terkait %s pada halaman profil. Jangan melaporkan pemain di dalam forum. @@ -59,7 +54,7 @@ Pastikan Anda memainkan permainan ber rating. Permainan santai tidak memengaruhi rating pemain. Halaman bermasalah Jika Anda menghadapi halaman bermasalah, Anda dapat melaporkannya: - Pertimbangan untuk larangan atau pembatasan IP + Pertimbangan untuk larangan atau pembatasan IP Engine atau tanda curang Anda dapat mengirim pertimbangan ke %s. Kesalahan positif kadang-kadang terjadi setiap saat, dan kami menyesal tentang itu. diff --git a/translation/dest/contact/it-IT.xml b/translation/dest/contact/it-IT.xml index e4a30835f5..462b60b354 100644 --- a/translation/dest/contact/it-IT.xml +++ b/translation/dest/contact/it-IT.xml @@ -27,11 +27,9 @@ Voglio cancellare la mia cronologia o il mio punteggio Non è possibile cancellare la cronologia delle partite, la cronologia delle tattiche né i punteggi. Voglio segnalare un giocatore - imbrogliare - Offendere intenzionalmente - Prendere in giro - insulti - altri motivi + Segnala un giocatore per imbrogli + Segnala un giocatore per insulti + Segnala un giocatore per qualche altro motivo Per segnalare un giocatore per %s, utilizza il modulo di segnalazione Puoi raggiungere quella pagina anche cliccando sul pulsante %s segnala in una pagina di profilo. Non segnalare i giocatori tramite il forum. @@ -59,7 +57,7 @@ Assicurati di aver giocato a un gioco classificato. Le partite occasionali non influenzano il rating dei giocatori. Pagina di errore Se hai riscontrato una pagina di errore, puoi segnalarla: - Reclamo per un ban o una restrizione IP + Reclamo per un ban o una restrizione IP Motore o cheat mark Puoi inviare una segnalazione a %s. Talvolta si verificano falsi positivi, e ce ne dispiace. diff --git a/translation/dest/contact/ja-JP.xml b/translation/dest/contact/ja-JP.xml index 0343c11e2c..30bced0bc8 100644 --- a/translation/dest/contact/ja-JP.xml +++ b/translation/dest/contact/ja-JP.xml @@ -27,11 +27,11 @@ 対局履歴やレーティングをリセットしたい 対局や問題の履歴、レーティングはリセットできません。 誰かを通報したい - 不正行為 - 過小レーティング - 荒らし - 侮辱 - その他 + プレイヤーを不正行為で通報する + プレイヤーを過小レートで通報する + プレイヤーを荒らし行為で通報する + プレイヤーを暴言行為で通報する + プレイヤーをその他の理由で通報する %s について他のプレイヤーを通報するには、通報用フォームを使ってください その人のプロフィールページの通報ボタン(右上 %s)からもできます。 他のプレイヤーをフォーラムに通報しないでください。 @@ -59,7 +59,7 @@ レート戦だったかどうか確かめてください。非レート戦ではレーティングは動きません。 エラーページ エラーページに出会ったら、以下で報告できます。 - アクセス禁止や IP 制限への異議申し立て + アクセス禁止や IP 制限への異議申し立て 不正行為の赤マーク 異議申し立てを %s に送ることができます。 申し訳ありませんが、時には間違った判定も起こり得ます。 diff --git a/translation/dest/contact/kk-KZ.xml b/translation/dest/contact/kk-KZ.xml index bab4e1902f..d908625016 100644 --- a/translation/dest/contact/kk-KZ.xml +++ b/translation/dest/contact/kk-KZ.xml @@ -27,11 +27,6 @@ Мен өзімнің ойын тарихымды не рейтингімді өшіргім келеді Ойын тарихын, жұмбақ шешу тарихын немесе рейтингті өшіру мүмкін емес. Мен бір ойыншыға шағым білдіргім келеді - алдап ойнау - бір артықшылық табу үшін әдейі жеңілу - арандату - қорлау, кемсіту - басқа себеп %s қатысты шағым жіберу үшін шағым үлгісін қолданыңыз Сонымен қатар, сіз сол парақшаны, куәлік парақшадағы %s шағым батырмасына басып, аша аласыз. Форумдағы ойыншыларға қарсы шағым жібермеңіз. @@ -59,7 +54,7 @@ Бағаланатын ойын екенін тексеріңіз. Қалыпты ойындар ойыншының рейтингіне әсер етпейді. Ақаулық парақшасы Ақаулық парақшасына тап болсаңыз, осында хабарлауыңызға болады: - Шектеуге не IP шектеуге қарсылық шағымы + Шектеуге не IP шектеуге қарсылық шағымы Програм не чит марк Сіз өтінішті %s жібере аласыз. Жалған әрекеттер кейде болып тұрады, ол үшін кешірім сұраймыз. diff --git a/translation/dest/contact/ko-KR.xml b/translation/dest/contact/ko-KR.xml index 9d8f7e36fd..b6e6228315 100644 --- a/translation/dest/contact/ko-KR.xml +++ b/translation/dest/contact/ko-KR.xml @@ -18,10 +18,6 @@ 이메일을 보내 계정 복구를 요청하지 마십시오. 사용자명을 변경하고 싶습니다 이용자 신고하기 - 부정 행위 - 트롤링 - 부적절한 발언 - 기타 포럼에서 이용자를 신고하지 마십시오. 이메일을 보내 신고하지 마십시오. 관리자에게 디렉트 메시지를 보내지 마십시오. diff --git a/translation/dest/contact/lt-LT.xml b/translation/dest/contact/lt-LT.xml index fcc4b8c4ed..e60fc18442 100644 --- a/translation/dest/contact/lt-LT.xml +++ b/translation/dest/contact/lt-LT.xml @@ -27,11 +27,11 @@ Noriu išvalyti savo istoriją ir reitingą Nėra galimybės išvalyti savo partijų istorijos, galvosūkių istorijos ar reitingų. Noriu pranešti apie žaidėją - sukčiavimo - tyčinio pralaimėjimo - erzinimo - įžeidinėjimo - kitos priežasties + Pranešti apie žaidėją už sukčiavimą + Pranešti apie žaidėją už reitingo manipuliaciją + Pranešti apie žaidėją už provokacijas + Pranešti apie žaidėją dėl įžeidimų + Pranešti apie žaidėją dėl kitos priežasties Norėdami pranešti apie žaidėją už %s, naudokite pranešimo formą Tą puslapį galite pasiekti spustelėdami %s pranešimo mygtuką profilio puslapyje. Nepraneškite apie žaidėjus forume. @@ -59,7 +59,7 @@ Įsitikinkite, kad žaidėte reitinguotą partiją. Nevertinamos partijos nedaro įtakos žaidėjų reitingams. Klaidos puslapis Jei susidūrėte su klaidos puslapiu galite apie jį pranešti: - Apeliuoti blokavimą ar IP adreso apribojimą + Apeliuoti blokavimą ar IP adreso apribojimą Variklio ar sukčiavimo žymė Apeliaciją galite siųsti %s. Kartais atvejus užfiksuojame neteisingai, labai dėl to atsiprašome. diff --git a/translation/dest/contact/lv-LV.xml b/translation/dest/contact/lv-LV.xml index 3c33a1c64a..e067d76202 100644 --- a/translation/dest/contact/lv-LV.xml +++ b/translation/dest/contact/lv-LV.xml @@ -27,11 +27,6 @@ Vēlos notīrīt savu vēsturi vai reitingu Nav iespējams notīrīt spēļu vēsturi, puzļu vēsturi vai reitingus. Vēlos ziņot par spēlētāju - šmaukšanās - tīša zaudēšana - āzēšana - apvainošana - kāds cits iemesls Lai ziņotu par spēlētāju dēļ %s, izmantojiet ziņojuma veidlapu Varat arī nonākt tajā lapā, klikšķinot uz %s pogas \"ziņot\" profila lapā. Neziņojiet par spēlētājiem forumā. @@ -59,7 +54,7 @@ Pārliecinieties, ka spēlējāt vērtētu spēli. Draudzīgas spēles nemaina spēlētāju reitingus. Kļūdas lapa Ja saskārāties ar kļūdas lapu, varat par to ziņot: - Pārsūdzēt liegumu vai IP ierobežojumu + Pārsūdzēt liegumu vai IP ierobežojumu Dzinēja vai šmaukšanās atzīme Varat iesniegt lūgumu %s. Viltus pozitīvi dažreiz notiek, atvainojamies par to. diff --git a/translation/dest/contact/mk-MK.xml b/translation/dest/contact/mk-MK.xml index c29a6ea8b3..7800ef725e 100644 --- a/translation/dest/contact/mk-MK.xml +++ b/translation/dest/contact/mk-MK.xml @@ -27,11 +27,6 @@ Сакам да ја избришам мојата историја или мојот рејтинг Не е возможно да ја избришете вашата историја на партии, загатки, или рејтинг. Сакам да пријавам играч - мамење - лажен низок рејтинг - провоцирање - навреди - друга причина За да пријавите играч за %s, користете го формуларот за пријава На страната можете да стигнете и преку кликање на %s копчето на нивниот профил. Не пријавувај играчи на форумот. @@ -59,7 +54,7 @@ Потврдете дека сте играле рангирана партија. Пријателските партии не влијаат на рејтингот на играчите. Страна за грешка Ако ја имате добиено страната за грешка, може да пријавите: - Жалба за забрана или ограничување на IP адресата + Жалба за забрана или ограничување на IP адресата Ознака за мамење или користење компјутерска помош Може да се пожалите на %s. Лажни резултати на нашата анализа понекогаш се случуваат, и ве молиме простете ни. diff --git a/translation/dest/contact/nb-NO.xml b/translation/dest/contact/nb-NO.xml index fdfeff7f82..5084a94045 100644 --- a/translation/dest/contact/nb-NO.xml +++ b/translation/dest/contact/nb-NO.xml @@ -26,12 +26,12 @@ Du kan likevel lukke kontoen din og opprette en ny. Jeg vil slette historikken eller ratingen min Det er ikke mulig å slette historikken din for partier, sjakknøtter eller ratinger. - Jeg vil melde en spiller - fusk - tape med vilje - trolling - fornærmelser - en annen årsak + Jeg vil rapportere en spiller + Rapporter en spiller for juks + Rapporter en spiller for å tape med vilje + Rapporter en spiller for trolling + Rapporter en spiller for fornærmelser + Rapporter en spiller for en annen grunn Bruk rapportskjemaet om du vil melde en spiller for %s Du kan også komme til den sida ved å klikke på %s meldingsknappen på ei brukerside. Ikke meld spillere i forumet. @@ -59,7 +59,7 @@ Forsikre deg om at du spilte et ratet parti. Uformelle partier påvirker ikke spillernes rating. Feilside Hvis du støtte på en feilside, kan du rapportere det: - Klage ved utestenging eller IP-restriksjon + Klage ved utestenging eller IP-restriksjon Anmerkning om juks eller maskinbruk Du kan klage til %s. Beklageligvis kan falske positiver forekomme. diff --git a/translation/dest/contact/nl-NL.xml b/translation/dest/contact/nl-NL.xml index 1b3f878d9d..42c33a2882 100644 --- a/translation/dest/contact/nl-NL.xml +++ b/translation/dest/contact/nl-NL.xml @@ -27,11 +27,11 @@ Ik wil mijn geschiedenis of rating wissen Het is niet mogelijk uw partijgeschiedenis, puzzelgeschiedenis of rating te wissen. Ik wil een speler rapporteren - valsspelen - doelbewust verliezen - zieken (trollen) - beledigen - een andere reden + Rapporteer een speler die valsspeelt + Rapporteer een speler die opzettelijk partijen verliest + Rapporteer een speler die bewust provoceert + Rapporteer een speler die beledigt + Rapporteer een speler om een andere reden Om een speler voor %s te rapporteren, gebruik het rapportformulier U kunt deze pagina ook bereiken door op de %s rapporteerknop op een profielpagina te klikken. Rapporteer geen spelers op het forum. @@ -59,7 +59,7 @@ Zorg ervoor dat je een partij met rating hebt gespeeld. Vrijblijvende partijen hebben geen invloed op de rating van de spelers. Foutpagina Als u te maken kreeg met een foutpagina, kunt u dat melden: - Vragen om een ban of IP beperking + Vragen om een ban of IP beperking Schaakcomputer of valsspel markering U kunt een verzoek sturen naar %s. Onterechte markeringen komen een enkele keer voor, en dat spijt ons. diff --git a/translation/dest/contact/nn-NO.xml b/translation/dest/contact/nn-NO.xml index bafd774924..a6ca23c438 100644 --- a/translation/dest/contact/nn-NO.xml +++ b/translation/dest/contact/nn-NO.xml @@ -27,11 +27,11 @@ Jeg vil slette historikken eller ratinga mi Det er ikkje mogleg å slette historikken din for parti, taktikkøvingar eller ratingar. Eg vil rapportere ein spelar - fusk - tape med vilje - trolling - ærekrenking - ein annan grunn + Rapporter ein spelar for fusking + Rapporter ein spelar for å tapa med forsett (\"sandbagging\") + Rapporter ein spelar for trolling + Rapporter ein spelar for trakassering + Rapporter ein spelar av andre årsaker Bruk rapportskjemaet om du vil rapportere ein spelar for %s Du kan også kome til den sida ved å klikke på %s meldingsknappen på ei brukerside. Ikkje rapporter spelarar i forumet. @@ -59,7 +59,7 @@ Forsikre deg om at partiet du spela var rangert. Uforpliktande parti påverkar ikkje ratinga til spelarane. Feilside Dersom du støtte på ei feilside kan du rapportere det: - Protest ved utestenging eller IP-restriksjon + Protest ved utestenging eller IP-restriksjon Merknad om juks eller bruk av sjakkcomputer Du kan sende ein appell til %s. Vi er lei for at falske positiv kan skje. diff --git a/translation/dest/contact/pl-PL.xml b/translation/dest/contact/pl-PL.xml index 9984b3fd90..89e1b56dac 100644 --- a/translation/dest/contact/pl-PL.xml +++ b/translation/dest/contact/pl-PL.xml @@ -27,11 +27,11 @@ Chcę wyczyścić swoją historię lub swój ranking Nie jest możliwe wyczyszczenie Twojej historii i rankingu. Chcę zgłosić gracza - oszustwo - zaniżanie swojego rankingu - niestosowne zachowanie - znieważanie - inny powód + Zgłoś gracza za oszukiwanie + Zgłoś gracza za zaniżanie swojego poziomu + Zgłoś gracza za trolowanie + Zgłoś gracza za obrażanie + Zgłoś gracza z innego powodu Aby zgłosić gracza za %s, użyj formularza Możesz również dotrzeć do tej strony klikając przycisk raportu %s na stronie profilowej. Nie zgłaszaj graczy na forum. @@ -59,7 +59,7 @@ Upewnij się, że grałeś partię rankingową. Zwykłe gry nie mają wpływu na ranking graczy. Strona błędu Jeśli znalazłeś się na stronie błędu, możesz to zgłosić: - Odwołanie od zablokowania konta lub ograniczenia IP + Odwołanie od zablokowania konta lub ograniczenia IP Silnik szachowy lub inne oszustwo Możesz wysłać odwołanie do %s. Niestety czasami zdarzają się fałszywe zgłoszenia i przykro nam z tego powodu. diff --git a/translation/dest/contact/pt-BR.xml b/translation/dest/contact/pt-BR.xml index fe6b8c2c6e..2cf64de0b2 100644 --- a/translation/dest/contact/pt-BR.xml +++ b/translation/dest/contact/pt-BR.xml @@ -27,11 +27,10 @@ Quero limpar meu histórico ou pontuação Não é possível limpar seu histórico de jogos, quebra-cabeças ou pontuações. Quero denunciar um jogador - trapacear - manipular pontuação - provocações (troll) - insultos - outra razão + Reportar um jogador por trapaça + Reportar um jogador por trollagem + Reportar um jogador por insultos + Reportar um jogador por algum outro motivo Para denunciar um jogador de %s, use o formulário de denúncia Você também pode chegar a essa página clicando no botão de denúncia %s em uma página de perfil. Não denuncie jogadores no fórum. @@ -59,7 +58,7 @@ Certifique-se de ter jogado uma partida por pontuação. Jogos casuais não alteram a pontuação dos jogadores. Página de erro Se você encontrou uma página de erro, você pode reportá-la: - Apelação de banimento ou restrição de IP + Apelação de banimento ou restrição de IP Assistência de software de xadrez Você pode enviar uma apelação para %s. Erros podem acontecer e lamentamos por isso. diff --git a/translation/dest/contact/pt-PT.xml b/translation/dest/contact/pt-PT.xml index 3960799c9b..7e1c41a2a0 100644 --- a/translation/dest/contact/pt-PT.xml +++ b/translation/dest/contact/pt-PT.xml @@ -27,11 +27,6 @@ Quero limpar o meu histórico ou pontuação Não é possível limpar o teu histórico de jogos, histórico de problemas ou pontuações. Quero denunciar um jogador - fazer batota - perder de propósito/manipular a pontuação de forma artificial - provocar/irritar - insultos - uma outra razão Para denunciar um jogador de %s, usa o formulário de denúncia Também podes aceder a essa página clicando no butão de denúncia %s numa página de perfil. Não denuncies jogadores no fórum. @@ -59,7 +54,7 @@ Certifica-te que jogaste uma partida a valer pontos. Jogos amigáveis não afetam as pontuações dos jogadores. Página de erro Se encontras uma página de erro, podes reportá-lo: - Apelar a um banimento ou restrição de IP + Apelar a um banimento ou restrição de IP Marcado por fazer batota ou usar a ajuda do computador Podes enviar um apelo para %s. Às vezes ocorrem marcações incorretas, e lamentamos que isso aconteça. diff --git a/translation/dest/contact/ro-RO.xml b/translation/dest/contact/ro-RO.xml index e6ca0466c7..d7a0775e07 100644 --- a/translation/dest/contact/ro-RO.xml +++ b/translation/dest/contact/ro-RO.xml @@ -26,9 +26,11 @@ Vreau să îmi sterg istoricul sau ratingul Nu se poate curăța istoricul jocurilor, istoricul puzzle-urilor sau evaluările. Vreau să raportez un jucător - trișare - insulte - alte motive + Raportați un jucător care trișează + Raportați un jucător care joacă mai slab în mod intenționat + Raportați un jucător care provoacă discuții inutile + Raportați un jucător pentru insulte + Raportează un jucător pentru un alt motiv Pentru a raporta un jucător pentru %s, folosiți formularul de raport De asemenea, poți ajunge la acea pagină dând click pe butonul %s pentru raport pe o pagină a profilului. Nu raportaţi jucătorii din forum. diff --git a/translation/dest/contact/ru-RU.xml b/translation/dest/contact/ru-RU.xml index 719178b329..d6e647ac10 100644 --- a/translation/dest/contact/ru-RU.xml +++ b/translation/dest/contact/ru-RU.xml @@ -27,11 +27,11 @@ Я хочу очистить свою историю или рейтинг Невозможно очистить историю игр, историю шахматных задач или рейтинг. Я хочу пожаловаться на игрока - читерство - манипуляции с рейтингом - троллинг - оскорбления - некую другую причину + Сообщить о мошенничестве игрока + Сообщить о манипуляциях с рейтингом + Сообщить о троллинге + Сообщить об оскорблениях + Сообщить об игроке по другой причине Чтобы пожаловаться на игрока за %s, используйте эту форму Также вы можете перейти на эту страницу, нажав %s \"Пожаловаться\" на странице профиля. Не пишите об игроках на форуме. @@ -59,7 +59,7 @@ Убедитесь, что вы играли рейтинговую игру. Пользовательские игры не влияют на рейтинг игроков. Сообщение об ошибке Если вы столкнулись с сообщением об ошибке, вы можете сообщить об этом: - Обжалование бана аккаунта или ограничения IP-адреса + Обжалование бана аккаунта или ограничения IP-адреса Отметка об использовании шахматных движков или читерстве Вы можете отправить апелляцию на %s. Иногда случаются ложные срабатывания, мы сожалеем об этом. diff --git a/translation/dest/contact/sk-SK.xml b/translation/dest/contact/sk-SK.xml index a7834c07ca..a0668ca3d0 100644 --- a/translation/dest/contact/sk-SK.xml +++ b/translation/dest/contact/sk-SK.xml @@ -27,11 +27,6 @@ Chcem vymazať svoju históriu alebo hodnotenie Nieje možné vymazať tvoju históriu hier, šachových rébusov či hodnotenia. Chcem nahlásiť hráča - podvádzanie - zavádzanie (sandbagging) - trolling - urážky - nejaký iný dôvod Pre nahlásenie hráča kvôli %s, použi ohlasovací formulár Môžeš tiež prejsť na danú stránku kliknutím na %s nahlasovacie tlačidlo na profilovej stránke. Nenahlasuj hráčov cez fórum. @@ -53,7 +48,7 @@ Je možné dať mat iba s jazdcom alebo strelcom, ak súper má viac figúr na šachovnici než len kráľa. Neboli udelené žiadne ratingové body Chybová stránka - Požiadať o zabanovanie hráča alebo obmedzenie IP adresy + Požiadať o zabanovanie hráča alebo obmedzenie IP adresy Iné obmedzenie Žiadne z uvedených Poslať nám email na %s. diff --git a/translation/dest/contact/sl-SI.xml b/translation/dest/contact/sl-SI.xml index f1be4968f4..bbc0389ba6 100644 --- a/translation/dest/contact/sl-SI.xml +++ b/translation/dest/contact/sl-SI.xml @@ -27,11 +27,6 @@ Hočem počistiti svojo zgodovino ali rating Ni možno pobrisati vaše zgodovine igranih iger, zgodovine ugank ali ratinga. Hočem prijaviti igralca - goljufanje - peskanje - trolanje - žalitev - nek drug razlog Za prijavo igralca zaradi %s, uporabi obrazec za prijavo Do te strani lahko pride tudi s klikom na gumb %s na strani profila uporabnika. Ne prijavite igralcev na forumu. @@ -59,7 +54,7 @@ Prepričajte se, da ste igrali rangirano igro. Običajne igre ne vplivajo na igralčeve ratinge. Stran z napako Če ste soočeni s stranjo z napako, jo lahko prijavite: - Pritožba na prepoved ali omejitev IP + Pritožba na prepoved ali omejitev IP Oznaka za goljufa oziroma uporabnika računalniške pomoči Pritožbo lahko pošljete na %s. Včasih se zgodijo lažni pozitivni rezultati in žal nam je zaradi tega. diff --git a/translation/dest/contact/sq-AL.xml b/translation/dest/contact/sq-AL.xml index 6b34eabfe1..e7f96d2f48 100644 --- a/translation/dest/contact/sq-AL.xml +++ b/translation/dest/contact/sq-AL.xml @@ -27,11 +27,6 @@ Dua të fshij historinë time ose rating-un Nuk është e mundur të fshini historinë e lojëve, historinë e taktikave, dhe as rating-ut. Dua të raportoj një lojtar - mashtrim - shtiret si i dobët - përqesh - ofendime - arsye tjetër Për të raportuar një lojtar për %s, përdorni formularin e raportimit Ju mund të shkoni në atë faqe edhe duke klikuar butonin e raportimit %s në një faqe profili. Mos raportoni lojtarët në forum. @@ -59,7 +54,7 @@ Sigurohu qe loze nje loje me pike. Lojet e rastit nuk jane me pike. Gabim faqe Nese u rastis nje faqe gabim, mund ta raportoni: - Apeloni per nje mbyllje llogarie ose restriktim IP + Apeloni per nje mbyllje llogarie ose restriktim IP Program ose shenje hileje Mund te dergoni nje apel tek %s. Ndonjehere bejme gabim, gjera qe ndodhin, ju kerkojme falje per kete. diff --git a/translation/dest/contact/sr-SP.xml b/translation/dest/contact/sr-SP.xml index 514f3e3b0f..7011330506 100644 --- a/translation/dest/contact/sr-SP.xml +++ b/translation/dest/contact/sr-SP.xml @@ -27,11 +27,11 @@ Желим да избришем своју историју и рејтинг Није могуће избрисати вашу историју парија ни проблема, као ни рејтинг. Желим да пријавим играча - варање - намерно губљење партија - троловање (слично као узнемиравање) - увреде - други разлози + Пријавите играча због варања + Пријавите играча због играња лошијег од назначеног + Пријавите играча због троловања + Пријавите играча због вријеђања + Пријавите играча због неког другог разлога Да бисте пријавили играча због %s, користите форму за пријављивање Такође можете доћи до те странице ако притиснете на %s пријави дугме на страници налога. Не пријављуј играче на форуму. diff --git a/translation/dest/contact/sv-SE.xml b/translation/dest/contact/sv-SE.xml index ca178b1b34..1f9b57c8c7 100644 --- a/translation/dest/contact/sv-SE.xml +++ b/translation/dest/contact/sv-SE.xml @@ -27,11 +27,11 @@ Jag vill rensa min historik eller rating Det är inte möjligt att rensa din partihistorik, historik för schackproblem eller rating. Jag vill rapportera en spelare - fusk - manipulerar rating - trolling - förolämpningar - någon annan anledning + Rapportera en spelare för fusk + Rapportera en spelare för manipulation av rating + Rapportera en spelare för trollning + Rapportera en spelare för förolämpningar + Rapportera en spelare av någon annan anledning För att rapportera en spelare för %s, använder du rapportformuläret Du kan också nå den sidan genom att klicka på knappen %s rapportera på en profilsida. Rapportera inte spelare i forumet. @@ -59,7 +59,7 @@ Försäkra dig om att du spelade ett rankat parti. Orankade partier påverkar inte spelarnas rating. Felsida Om du stöter på en felsida, kan du rapportera det: - Överklaga en avstängning eller IP-begränsning + Överklaga en avstängning eller IP-begränsning Schackmotor eller fuskstämpel Du kan skicka ett överklagande till %s. Falska positiva saker händer ibland, och vi beklagar det. diff --git a/translation/dest/contact/th-TH.xml b/translation/dest/contact/th-TH.xml index 513eb8225a..ccaf33f654 100644 --- a/translation/dest/contact/th-TH.xml +++ b/translation/dest/contact/th-TH.xml @@ -24,11 +24,6 @@ ฉันต้องการล้างประวัติหรือระดับคะแนนของฉัน เป็นไปไม่ได้ที่จะล้างประวัติเกม, ประวัติปริศนา หรือระดับคะแนนของคุณ ฉันต้องการร้องเรียนผู้เล่น - การโกง - การแสร้งว่าอ่อนหัด - การก่อกวน - การดูหมิ่น - เหตุผลอื่น เพื่อร้องเรียนผู้เล่นสำหรับ %s, ใช้แบบรายงาน คุณสามารถไปที่หน้านั้นได้โดยการคลิกปุ่มรายงาน %s บนหน้าโปรไฟล์ อย่าร้องเรียนผู้เล่นในห้องอภิปราย diff --git a/translation/dest/contact/tp-TP.xml b/translation/dest/contact/tp-TP.xml index c9a29d0d94..69c1dd725f 100644 --- a/translation/dest/contact/tp-TP.xml +++ b/translation/dest/contact/tp-TP.xml @@ -1,8 +1,5 @@ toki - musi ike - pakala e musi - toki ike lipu pakala diff --git a/translation/dest/contact/tr-TR.xml b/translation/dest/contact/tr-TR.xml index 5222d6eb11..8c18f95957 100644 --- a/translation/dest/contact/tr-TR.xml +++ b/translation/dest/contact/tr-TR.xml @@ -27,11 +27,11 @@ Oyun geçmişimi veya puanımı sıfırlamak istiyorum Oyun geçmişinizi, bulmaca geçmişinizi veya puanlarınızı sıfırlamamız maalesef mümkün değil. Bir oyuncuyu şikâyet etmek istiyorum - Hile - kasıtlı olarak puan düşürme - can sıkıcı davranışlar - Hakaret - başka bir sebep + Hile yapan bir oyuncuyu şikâyet et + Kasıtlı olarak puanını düşüren bir oyuncuyu şikâyet et + Can sıkıntısı veren bir oyuncuyu şikâyet et + Hakaret eden bir oyuncuyu şikâyet et + Farklı bir nedenden ötürü bir oyuncuyu şikâyet et %s sebebiyle şikâyette bulunmak için şikâyet formunu kullanın Ayrıca, oyuncunun profilindeki %s butonuna tıklayarak şikâyet formuna ulaşabilirsiniz. Forumdaki oyuncular için şikâyette bulunmayın. @@ -59,7 +59,7 @@ Puanlı bir oyun oynadığınızdan emin olun. Puansız oyunlar oyun puanınızı etkilemez. Hata sayfası Bir hata mesajı alırsanız lütfen bize bildirin: - Yasaklamaya itiraz et + Yasaklamaya itiraz et Satranç motoru ya da hile tespit edildi Başvurunuzu bu adrese gönderebilirsiniz: %s . Bazen yanlış şeyler olabilir, bunun için üzgünüz. diff --git a/translation/dest/contact/uk-UA.xml b/translation/dest/contact/uk-UA.xml index 4af23363f4..9dec745b3e 100644 --- a/translation/dest/contact/uk-UA.xml +++ b/translation/dest/contact/uk-UA.xml @@ -27,11 +27,6 @@ Я хочу очистити свою історію або рейтинг Неможливо очистити історію ігор, шахових задач або рейтинг. Я хочу поскаржитись на гравця - нечесна гра - маніпуляції з рейтингом - тролінг - образи - інша причина Щоб поскаржитись на гравця за %s, використовуйте форму звіту Ви також можете перейти на цю сторінку, натиснувши кнопку звіту %s на сторінці профілю. Не скаржтесь на гравців на форумі. @@ -59,7 +54,7 @@ Переконайтеся, що Ви зіграли рейтингову гру. Дружні ігри не впливають на рейтинги гравців. Сторінка помилки Якщо Ви зіткнулися з повідомленням про помилку, Ви можете повідомити про це: - Оскарження бану або обмеження за IP-адресою + Оскарження бану або обмеження за IP-адресою Відмітка про використання шахового рушія або нечесну гру Ви можете надіслати оскарження на %s. Іноді трапляються хибні спрацювання, нам шкода за це. diff --git a/translation/dest/contact/vi-VN.xml b/translation/dest/contact/vi-VN.xml index a91967fb59..d1dcc426da 100644 --- a/translation/dest/contact/vi-VN.xml +++ b/translation/dest/contact/vi-VN.xml @@ -27,11 +27,6 @@ Tôi muốn xóa lịch sử hoặc hệ số Bạn không thể xóa lịch sử các ván đấu, giải đố hay hệ số. Tôi muốn gửi báo cáo về một người chơi - gian lận - cố tình thua - phá rối - xúc phạm - lý do khác Để báo cáo một người chơi cho %s, sử dụng mẫu báo cáo Bạn cũng có thể truy cập trang đó bằng cách bấm vào nút báo báo %s trên một trang cá nhân. Vui lòng không báo cáo người chơi trong diên đàn. @@ -59,7 +54,7 @@ Xin hãy chắc việc bạn chơi ván cờ xếp hạng. Các ván đấu thường sẽ không ảnh hưởng đến hệ số của người chơi. Trang lỗi Nếu bạn gặp một trang lỗi, bạn có thẻ báo cáo nó: - Kháng cáo cho việc ban và chặn IP + Kháng cáo cho việc ban và chặn IP Đánh dấu gian lận hoặc dùng máy tính Bạn có thể gửi kháng cáo đến %s. Những giá trị dương do đánh giá sai đôi khi vẫn xảy ra, và chúng tôi xin thứ lỗi vì điều đó. diff --git a/translation/dest/contact/zh-CN.xml b/translation/dest/contact/zh-CN.xml index 7b20c770bf..10c001bdde 100644 --- a/translation/dest/contact/zh-CN.xml +++ b/translation/dest/contact/zh-CN.xml @@ -27,11 +27,6 @@ 我想要清除我的历史或积分 清除您的对局历史,训练题历史,或积分是不可能的。 我想要举报一个用户 - 作弊 - 操纵积分 - 喷子 - 侮辱 - 其他原因 想要因为%s而举报用户,请使用举报表单 您也可以在该用户的个人资料页单击 %s 举报按钮。 请不要在论坛举报。 @@ -59,7 +54,7 @@ 请确保您参加过积分赛。非积分赛将不会影响选手的积分。 错误页面 如果您遇到错误页面,您可以举报: - 申请禁令或限制IP + 申请禁令或限制IP 引擎或作弊标记 您可以向 %s 发出申诉。 误报有时会发生,我们对此表示歉意。 diff --git a/translation/dest/contact/zh-TW.xml b/translation/dest/contact/zh-TW.xml index df23ae57da..e88472f107 100644 --- a/translation/dest/contact/zh-TW.xml +++ b/translation/dest/contact/zh-TW.xml @@ -24,10 +24,6 @@ 我想要把我的評分紀錄刪除 我們無法將您的下棋歷史、解題歷史和評分消除 我想要舉報一位玩家 - 作弊 - 通過輸掉比賽來降低其評分 - 侮辱 - 其他原因 舉報玩家的%s行為,請填寫舉報表單 請不要在論壇中檢舉使用者 請不要使用電子郵件向我們舉報玩家 @@ -39,7 +35,7 @@ 不會得到評分 錯誤頁面 如果你遇到了錯誤頁面,你可以回報它: - 懲處上訴 + 懲處上訴 作弊或電腦操作記號 您可以將上訴寄到%s 如果你的上訴是合理的,我們會盡快撤除懲處。 @@ -49,6 +45,9 @@ 買下 Lichess Lichess 的使用授權 歡迎您使用 Lichess 進行活動,甚至用於商業活動。 + 我們感激您留一句致謝,但這不是必要的。 以上皆非 請傳送郵件到 %s + 請清楚的解釋您的請求。 +請提供您的Lichess用戶明和其他可以讓我們幫助您的資訊 diff --git a/translation/dest/emails/zh-TW.xml b/translation/dest/emails/zh-TW.xml index 0bb9cee25b..6884d2ae33 100644 --- a/translation/dest/emails/zh-TW.xml +++ b/translation/dest/emails/zh-TW.xml @@ -2,7 +2,7 @@ 確認您的 lichess.org 帳戶,%s 按一下連結以啟用您的 lichess 帳戶: - 如果您沒有向 lichess 註冊,則可以安全地忽略此消息。 + 如果您沒有向 Lichess 註冊,則可以安全地忽略此消息。 重設您的 lichess.org 密碼,%s 我們收到了重設您帳戶密碼的請求。 如果您提出此請求,請按一下下面的連結。如果沒有,您可以忽略此電子郵件。 diff --git a/translation/dest/faq/es-ES.xml b/translation/dest/faq/es-ES.xml index 10c87b7f46..cd7a77fc36 100644 --- a/translation/dest/faq/es-ES.xml +++ b/translation/dest/faq/es-ES.xml @@ -124,9 +124,9 @@ Otro punto que cabe señalar es que, si pasa un tiempo sin jugar, el intervalo d estar entre los 10 primeros de esta clasificación. El segundo requisito es que los jugadores que ya no usan sus cuentas dejen de poblar los tableros de liderazgo. ¿Por qué son más altas las puntuaciones en comparación con otras páginas y organizaciones como FIDE, USCF y el CIC? - Lo mejor es no considerar las puntuaciones como cifras absolutas ni compararlas con otras organizaciones. Diferentes organizaciones tienen diferentes niveles de jugadores, diferentes sistemas de puntuación (Elo, Glicko, Glicko-2 o una versión modificada de los primeros). Estos factores pueden afectar drásticamente los números absolutos (puntuaciones). + Lo mejor es no considerar las puntuaciones como cifras absolutas ni compararlas con otras organizaciones. Diferentes organizaciones tienen distintos niveles de jugadores y sistemas de puntuación (Elo, Glicko, Glicko-2 o una versión modificada de los primeros). Estos factores pueden afectar drásticamente los números absolutos (puntuaciones). - Es mejor pensar en las puntuaciones como figuras \"relativas\" (a diferencia de las \"figuras absolutas\"): dentro de un conjunto de jugadores, sus diferencias relativas en las puntuaciones te ayudarán a estimar quién gana/empata/pierde, y con qué frecuencia. Decir \"tengo puntuación X\" significa nada a menos que haya otros jugadores a los que comparar esa puntuación. + Es mejor pensar en las puntuaciones como figuras \"relativas\" (a diferencia de las \"figuras absolutas\"): dentro de un conjunto de jugadores, sus diferencias relativas en las puntuaciones te ayudarán a estimar quién gana/empata/pierde, y con qué frecuencia. Decir \"tengo puntuación X\" significa nada a menos que haya otros jugadores con los que comparar esa puntuación. ¿Cómo ocultar mis puntuaciones durante las partidas? Habilita el modo Zen en %1$s o presionando %2$s durante una partida. preferencias de visualización diff --git a/translation/dest/faq/zh-TW.xml b/translation/dest/faq/zh-TW.xml index a1d1dc79ec..ea57bbbff6 100644 --- a/translation/dest/faq/zh-TW.xml +++ b/translation/dest/faq/zh-TW.xml @@ -40,6 +40,7 @@ 有哪些變體是在Lichess上玩得到的? Lichess上有標準國際象棋和%1$s 8種變體 + 國際棋聯手冊 %s 好的自我介紹 官方規則 (PDF) Lichess 訓練 diff --git a/translation/dest/lag/hi-IN.xml b/translation/dest/lag/hi-IN.xml index 19edf64194..5e6c9bf3e3 100644 --- a/translation/dest/lag/hi-IN.xml +++ b/translation/dest/lag/hi-IN.xml @@ -1,6 +1,6 @@ - क्या लिगेसी पिछड़ रही है? + क्या Lichess पिछड़ रही है? प्रगति पर माप... नहीं और आपका नेटवर्क अच्छा है। नहीं और आपका नेटवर्क खराब है। diff --git a/translation/dest/patron/hi-IN.xml b/translation/dest/patron/hi-IN.xml index 160e1b12c9..11bd692ec8 100644 --- a/translation/dest/patron/hi-IN.xml +++ b/translation/dest/patron/hi-IN.xml @@ -1,7 +1,7 @@ दान करें - Lichess Patron + Lichess संरक्षक मुफ्त खाता Lichess संरक्षक बनें %s Lichess Patron बन गया @@ -44,7 +44,7 @@ क्या कुछ विशेषताएं संरक्षक के लिए आरक्षित हैं? नहीं, क्योंकि Lichess पूरी तरह से मुक्त है, हमेशा के लिए, और सभी के लिए। यह एक वादा है। हालाँकि, Patrons को एक नए आकर्षक प्रोफ़ाइल आइकन के साथ डींग मारने का अधिकार मिलता है। - See the detailed feature comparison + विस्तृत सुविधा तुलना देखें एक महीने के लिए लिचेस संरक्षक लिचेस संरक्षक %s महीनों के लिए diff --git a/translation/dest/perfStat/vi-VN.xml b/translation/dest/perfStat/vi-VN.xml index 2af7af5d79..aaf206979e 100644 --- a/translation/dest/perfStat/vi-VN.xml +++ b/translation/dest/perfStat/vi-VN.xml @@ -3,18 +3,29 @@ Thống kê %s Xem các ván cờ tạm thời + Không có đủ trò chơi được xếp hạng đã được chơi để thiết lập một xếp hạng đáng tin cậy. Sự tiến bộ qua %s ván cờ trước đây: + Độ lệch xếp hạng:%s. + Giá trị thấp hơn có nghĩa là xếp hạng ổn định hơn. Trên %s, xếp hạng được coi là tạm thời. Tổng số các ván cờ Các ván cờ xếp hạng + Trò chơi kiểu giải đấu + Trò chơi đã được berserk Thời gian đã chơi + Đối thủ trung bình Thắng Thua + Ngắt kết nối Chơi chưa đủ ván + Xếp hạng cao nhất: %s + Xếp hạng thấp nhất: %s từ %1$s đến %2$s Chuỗi thắng Chuỗi thua Chuỗi dài nhất: %s Chuỗi hiện tại: %s + Chiến thắng được đánh giá cao nhất + Trận thua được đánh giá tệ nhất Các ván cờ được chơi liên tục Ít hơn một giờ giữa các ván cờ Thời gian dài nhất đã chơi diff --git a/translation/dest/preferences/az-AZ.xml b/translation/dest/preferences/az-AZ.xml index 15e632dba1..dc7339b32f 100644 --- a/translation/dest/preferences/az-AZ.xml +++ b/translation/dest/preferences/az-AZ.xml @@ -4,17 +4,17 @@ Oyun ekranı Fiqur animasiyası Material fərqi - Taxta xəbərdarlıqları (son həmlə və şah çəkmə) - Daş istiqamətlərə (qaydalara uyğun hücumlar) + Lövhə xəbərdarlıqları (son gediş və şah vermə) + Fiqurun gedə biləcəyi xanalar (qanuni gediş və öngedişlər) Taxta kordinatları - Oynarken siyahısı keçin - Gediş qeydi - Şaxmat fiqur simvolu + Oyun zamanı notasiyanı göstər + Şahmat notasiyası + Şahmat fiqur simvolu Hərf (K, Q, R, B, N) Zen rejimi Lövhə ölçüləndirmə tutacağını göstər Yalnız başlanğıc pozisiyada - Gözübağli şahmat (görünməz fiqurlar) + Gözübağlı şahmat (görünməz fiqurlar) Şahmat saat Son 10 saniyə Qalan zaman < 10 saniyə @@ -26,16 +26,16 @@ İki xanaya klikləyərək Fiquru sürüşdürərək Hər ikisi - Ön hücumlar (Rəqib hücum etmədən hücum təyin) + Öngedişlər (oyun növbəsi rəqibdə olarkən oyna) Geri Alma (rəqib razılığı ilə) - Yalnız adi oyunlarda - Avtomatik Queen təşviq + Yalnız reytinqsiz oyunlarda + Avtomatik Vəzirə çıx Ön hücum edərkən Üç dəfə təkrarlanan oyunda avtomatik heç-heçə təklif et Qalan zaman < 30 saniyə Gediş təsdiqi - Qiyabi oyunlar - Müxbir və hədsiz + Yazışmalı oyunlar + Yazışmalı və vaxtsız Məğlubiyyət və heç-heçə təkliflərini təsdiqlə Qala qurma metodu Şahı iki xana hərəkət etdirərək diff --git a/translation/dest/preferences/de-DE.xml b/translation/dest/preferences/de-DE.xml index 7d0f88f623..3c6f339aac 100644 --- a/translation/dest/preferences/de-DE.xml +++ b/translation/dest/preferences/de-DE.xml @@ -21,7 +21,7 @@ Horizontale grüne Fortschrittsbalken Ton, wenn die Zeit knapp wird Mehr Zeit geben - Spielverhalten + Spielverhalten Wie möchtest du die Figuren bewegen? Zwei Felder anklicken Die Figur ziehen @@ -41,7 +41,7 @@ Ziehe den König zwei Felder weit Ziehe den König auf den Turm Züge mit der Tastatur eingeben - Pfeile markieren immer mögliche Züge - Sage \"Gute Partie, gut gespielt\" nach einer Niederlage oder einem Remis + Pfeile markieren immer mögliche Züge + Sage \"Gute Partie, gut gespielt\" nach einer Niederlage oder einem Remis Deine Einstellungen wurden gespeichert. diff --git a/translation/dest/preferences/sl-SI.xml b/translation/dest/preferences/sl-SI.xml index 0f32b0aca2..b57e6364b2 100644 --- a/translation/dest/preferences/sl-SI.xml +++ b/translation/dest/preferences/sl-SI.xml @@ -1,7 +1,7 @@ Nastavitve - Videz + Prikaz igre Animacija figur Materialna prednost Osvetlitev šahovnice (zadnja poteza in kralj v šahu) @@ -17,7 +17,7 @@ Slepi šah (nevidne figure) Šahovska ura Desetinke sekunde - Če je preostanek časa pod 10 sekundami + Če je preostanek časa pod 10 sekundami Vodoravna zelena prečka Zvočni signal ko čas postane kritičen Dajte več časa diff --git a/translation/dest/preferences/tr-TR.xml b/translation/dest/preferences/tr-TR.xml index f93f10371a..40d5f514cd 100644 --- a/translation/dest/preferences/tr-TR.xml +++ b/translation/dest/preferences/tr-TR.xml @@ -3,43 +3,43 @@ Seçenekler Oyun görünümü Hamle animasyonu - Taş farkı + Malzeme farkı Tahta uyarıları (son hamle ve şah çekme) - Taşın gidebileceği kareler (kurallara uygun hamleler) - Tahta kordinatları + Taşın gidebileceği kareler (geçerli hamleler ve ön hamleler) + Tahta kordinatları (A-H, 1-8) Oyun sırasında notasyonu göster Notasyon tut Satranç taşı sembolü Harf (Ş, V, K, A, F) - Zen modu + Odak modu Tahta büyüklüğünü ayarlama kolunu göster Sadece oyunun başında - Körleme Satranç (taşlar gözükmez) + Körleme satranç (taşlar gözükmez) Satranç saati Saniyenin Onda Biri - Kalan zaman 10 saniyeden az ise + Kalan zaman 10 saniye ise Yeşil yatay ilerleme çubuğu Zaman azaldığında sesle uyarı - Süre ver + Daha fazla süre ver Oyun Tercihleri - Taşları nasıl hareket ettirmek istersiniz? + Taşları nasıl hareket ettireceksin? İki kareye tıklayarak - Taşı sürükleyerek - Hem tıklayıp hem sürükleyerek + Taşı sürükle + İkiside Ön hamleler (hamle sırası rakipteyken oynama) Geri Alma (rakibin onayıyla) Sadece puansız oyunlarda Geçer piyonu otomatik olarak Vezir\'e terfi et Ön hamlelerde Üçlü tekrarda otomatik olarak beraberlik teklif et - Kalan zaman 30 saniyeden az ise + Kalan zaman 30 saniye ise Hamleyi onayla - Notasyonlu oyunlarda + Yazışmalı oyunlarda Yazışmalı ve sınırsız - Oyundan çekilme ve beraberlik tekliflerini kabul et - Rok atma şekli + Oyundan çekilme ve beraberlik tekliflerini onayla + Rok atma tarzı Şahı iki kare sürerek - Şahı kalenin üstüne getirerek + Şahı kalenin üstüne oynama Hamleleri klavye ile gir Okları geçerli hamlelere kaydır Beraberlik veya yenilgiyle biten maçların sonunda \"İyi oyundu, güzel oynadın\" mesajı gönder diff --git a/translation/dest/puzzle/da-DK.xml b/translation/dest/puzzle/da-DK.xml index a58d5fb75f..5fe623dadf 100644 --- a/translation/dest/puzzle/da-DK.xml +++ b/translation/dest/puzzle/da-DK.xml @@ -45,7 +45,7 @@ Tilføj et andet tema Spring straks videre til næste opgave Opgave-kontrolpanel - Plads til forbedring + Forbedringsområder Styrke Opgavehistorik løst diff --git a/translation/dest/puzzle/de-DE.xml b/translation/dest/puzzle/de-DE.xml index d5454d37b8..ba127f149b 100644 --- a/translation/dest/puzzle/de-DE.xml +++ b/translation/dest/puzzle/de-DE.xml @@ -9,7 +9,7 @@ Längen Matts Ziele - Herkunft + Herkunft Besondere Züge Hat dir diese Aufgabe gefallen? Stimme ab, um die nächste zu laden! diff --git a/translation/dest/puzzle/sr-SP.xml b/translation/dest/puzzle/sr-SP.xml index 1d1a61cc0e..30ba77a627 100644 --- a/translation/dest/puzzle/sr-SP.xml +++ b/translation/dest/puzzle/sr-SP.xml @@ -8,6 +8,7 @@ Дужина Матови Циљеви + Порекло Специјални потези Да ли вам се свиђа овај проблем? Оцените да би учитали следећу! @@ -46,4 +47,5 @@ Табла проблема Снага решено + неуспело diff --git a/translation/dest/puzzle/vi-VN.xml b/translation/dest/puzzle/vi-VN.xml index 3fa145e646..0203e6b76b 100644 --- a/translation/dest/puzzle/vi-VN.xml +++ b/translation/dest/puzzle/vi-VN.xml @@ -9,9 +9,11 @@ Độ dài Chiếu hết Mục tiêu + Nguồn gốc Nước đi đặc biệt Bạn có thích câu đố này? Bình chọn để mở câu đố tiếp theo! + Hệ số giải bài tập của bạn: %s Tìm nước tối ưu cho Trắng. Tìm nước tối ưu cho Đen. Để có được các câu đố dành riêng cho bạn: @@ -25,6 +27,7 @@ Hoàn thành câu đố! Đó chưa phải là nước đi tối ưu! Hãy thử nước đi khác. + Hệ số: %s ẩn Đã chơi %s lần @@ -41,4 +44,9 @@ Thêm chủ đề khác Chuyển tới câu đố tiếp theo ngay lập tức Bảng điều khiển câu đố + Khu vực cải thiện + Điểm mạnh + Lịch sử câu đố + đã giải quyết + thất bại diff --git a/translation/dest/puzzleTheme/af-ZA.xml b/translation/dest/puzzleTheme/af-ZA.xml index 1990eef60c..057af73c62 100644 --- a/translation/dest/puzzleTheme/af-ZA.xml +++ b/translation/dest/puzzleTheme/af-ZA.xml @@ -49,9 +49,9 @@ \'N Eindspel met net ridders en pionne. Lang legkaart Drie skofte om te wen. - Meester spelle + Meester spelle Kopkrappers uit spelle van getitelde spelers. - Meester vs Meester spelle + Meester vs Meester spelle Kopkrappers uit spelle tussen twee getitelde spelers. Mat Wen die spel met styl. @@ -95,7 +95,7 @@ \'N Motief waarby \'n waarde van \'n hoë waarde aangeval word, wat uit die weg beweeg en \'n laer waarde agter dit kan vasvang of aanval, die omgekeerde van \'n pen. Versmoorde mat \'N Skaakmat wat deur \'n ridder afgelewer word waarin die gepaste koning nie kan beweeg nie omdat dit deur sy eie stukke omring (of versmoor word). - Super GM spelle + Super GM spelle Kopkrappers uit spelle tussen die beste spelers in die wêreld. Vasgevang stuk \'N Stuk kan nie vang om te ontsnap nie, aangesien dit beperkte bewegings het. diff --git a/translation/dest/puzzleTheme/az-AZ.xml b/translation/dest/puzzleTheme/az-AZ.xml index 0f8c47abe5..90948aa0af 100644 --- a/translation/dest/puzzleTheme/az-AZ.xml +++ b/translation/dest/puzzleTheme/az-AZ.xml @@ -4,6 +4,7 @@ Çevrilən və ya çevrilməyə yaxın bir piyada taktikanın açarıdır. Üstünlük Həlledici üstünlük əldə etmək üçün fürsətdən istifadə edin. (200-600sp arası) + Anastasiya matı f2 və ya f7 hücumu Qızardılmış qaraciyər (feqatello) hücumunda olduğu kimi, f2-f7 piyadasına hədəflənmiş hücum. Cəlbetmə @@ -49,9 +50,9 @@ Yalnız atlar və piyadalardan ibarət oyun sonu. Uzun tapmaca 3 gedişə qələbə. - Usta oyunları + Usta oyunları Titullu oyunçuların oynadığı oyunlardan tapmacalar. - Usta vs Usta oyunları + Usta vs Usta oyunları İki titullu oyunçu arasındakı oyunlardan tapmacalar. Mat Oyunu üslubuyla qazanın. @@ -95,7 +96,7 @@ Dəyərli bir fiqurun hüuma məruz qaldığı, hərəkət edəcəyi halda daha az dəyərli bir fiqurun itiriləcəyi və ya təhlükəyə düşəcəyi motivlər. Bağlamanın tərsi. Boğma matı Öz fiqurları tərəfindən əhatələndiyi (və ya boğulduğu) üçün hərəkət edə bilməyən şahın at ilə mat edilməsi. - Super GM oyunları + Super GM oyunları Dünyanın ən yaxşı oyunçularının oynadığı oyunlardan tapmacalar. Tələyə düşmüş fiqur Gedəcək təhlükəsiz bir xanası olmadığı üçün fiqur vurulmaqdan qaça bilmir. diff --git a/translation/dest/puzzleTheme/bs-BA.xml b/translation/dest/puzzleTheme/bs-BA.xml index f311d919d5..2e69a606cb 100644 --- a/translation/dest/puzzleTheme/bs-BA.xml +++ b/translation/dest/puzzleTheme/bs-BA.xml @@ -1,5 +1,7 @@ + Anastasijin mat + Skakač se udružuje s topom ili damom kako bi zarobili protivničkog kralja između ivice table i prijateljske figure. Mat na posljednjem redu Matirajte kralja na njegovom početnom redu kad je zarobljen od vlastitih figura. Lovačka završnica @@ -45,7 +47,7 @@ Motiv u kojem se napada neka teška figura, čije sklanjanje od napada omogućuje uzimanje neke lahke figure koja je iza nje ili napad na nju; obratno od svezivanja. Ugušeni mat Mat skakačem u poziciji kad protivnički kralj nema slobodnih polja jer je okružen (ili ugušen) vlastitim figurama. - Supervelemajstorske partije + Supervelemajstorske partije Problemi iz partija najboljih svjetskih igrača. Zarobljena figura Figura ne može izbjeći da bude uzeta jer su joj potezi ograničeni. diff --git a/translation/dest/puzzleTheme/da-DK.xml b/translation/dest/puzzleTheme/da-DK.xml index c0c0211818..061d658555 100644 --- a/translation/dest/puzzleTheme/da-DK.xml +++ b/translation/dest/puzzleTheme/da-DK.xml @@ -4,6 +4,10 @@ En bonde, der forvandles eller truer med at forvandle, er nøglen til taktikken. Fordel Grib chancen for at få en afgørende fordel. (200cb ≤ eval ≤ 600cb) + Anastasias mat + En springer og et tårn eller en dronning går sammen om at fange modstanderens konge mellem side af brættet og en venligsindet brik. + Arabisk mat + En springer og et tårn samarbejder om at fange modstanderens konge i et af brættets hjørner. Angreb på f2 eller f7 Et angreb som er fokuseret på f2 eller f7 bonden, som det kendes fra Fegatello-angrebet (\"Fried Liver Attack\"). Lokkedue @@ -12,12 +16,18 @@ Sæt kongen skakmat på baglinjen, når den er fanget der af sine egne brikker. Løberslutspil Et slutspil med kun løbere og bønder. + Bodens mat + To angribende løbere på krydsende diagonaler giver mat til en konge, som er blokeret af egne brikker. Rokade Bring din konge i sikkerhed og gør dit tårn klar til angreb. Tag forsvaren Tag en brik som er kritisk i forsvaret af en anden brik, så det er muligt at tage den uforsvarede brik på et efterfølgende træk. Knusende Spot modstanderens brøler for at opnå en knusende fordel. (eval ≥ 600cb) + Dobbelt løbermat + To angribende løbere på tilstødende diagonaler giver mat til en konge, som er blokeret af egne brikker. + Duehale mat + En dronning sætter en tilstødende konge mat, da dennes eneste to felter til flugt er blokeret af egne brikker. Udligning Vend en tabende stilling til en remis eller en lige stilling. (eval ≤ 200cb) Angreb på kongesiden @@ -41,6 +51,8 @@ Et træk hvor den flyttede brik angriber to af modstanderens brikker på én gang. Hængende brik En taktik der indebærer, at en af modstanderens brikker, der ikke forsvares eller ikke forsvares tilstrækkeligt, frit kan tages. + Krog-mat + Skakmat med tårn, springer og bonde, som sammen med en fjendtlig bonde hindrer modstanderens konge i at undslippe. Obstruktion Flytte en brik ind mellem to af modstanderens brikker, så den ene eller begge er uden forsvar, såsom en springer på et forsvaret felt mellem to tårne. Intermezzo @@ -49,9 +61,9 @@ Et slutspil med kun springere og bønder. Lang opgave Tre træk for at vinde. - Mesterpartier + Mesterpartier Opgaver fra partier af spillere med titel. - Mester mod mester partier + Mester mod mester partier Opgaver fra partier mellem to spillere med titel. Mat Vind spillet med stil. @@ -95,7 +107,7 @@ En manøvre hvor en brik af høj værdi angribes og må flyttes, hvorved en brik af lavere værdi bagved kan tages eller trues. Det omvendte af en binding. Kvalt mat En skakmat leveret af en ridder, hvor den matte konge er ude af stand til at bevæge sig, fordi den er omgivet (eller kvalt) af sine egne brikker. - Superstormester-partier + Superstormester-partier Opgaver fra partier spillet af verdens bedste spillere. Fastlåste brikker En brik er ude af stand til at undslippe fangst, da den har begrænsede trækmuligheder. diff --git a/translation/dest/puzzleTheme/de-DE.xml b/translation/dest/puzzleTheme/de-DE.xml index 718f21cd4c..483b601aca 100644 --- a/translation/dest/puzzleTheme/de-DE.xml +++ b/translation/dest/puzzleTheme/de-DE.xml @@ -4,6 +4,10 @@ Ein Bauer, der umwandelt oder umzuwandeln droht, ist Schlüssel zur Taktik. Vorteil Nutze deine Chance, um einen entscheidenden Vorteil zu erlangen. (200 Hundertstel-Bauern ≤ Bewertung ≤ 600 Hundertstel-Bauern) + Anastasia-Matt + Ein Springer und ein Turm bzw. eine Dame arbeiten zusammen, um den gegnerischen König zwischen dem Brettrand und einer seiner eigenen Figuren einzuschließen. + Arabisches Matt + Ein Springer und ein Turm arbeiten zusammen, um den gegnerischen König in einer Ecke des Bretts matt zu setzen. Angriff auf f2 oder f7 Ein Angriff, der sich auf den Bauern auf f2 oder f7 konzentriert, wie z. B. bei der Fegatello-Variante. Hinlenkung oder \"Magnet\" @@ -12,12 +16,18 @@ Setze den König auf der Grundreihe matt, wenn er dort durch seine eigenen Figuren blockiert wird. Läuferendspiel Ein Endspiel nur mit Läufern und Bauern. + Bodens-Matt + Zwei angreifende Läufer auf sich kreuzenden (Neben-)Diagonalen setzen den König matt, der durch eigene Figuren behindert wird. Rochade Bringe deinen König in Sicherheit und den Turm in Angriffsposition. Schlage den Verteidiger Schlagen einer Figur, die für die Deckung einer anderen Figur von entscheidender Bedeutung ist, sodass die jetzt nicht mehr gedeckte Figur mit dem folgendem Zug geschlagen werden kann. Vernichtend Finde den gegnerischen Patzer, um einen vernichtenden Vorteil zu erhalten. (Bewertung ≥ 600 Hundertstel-Bauern) + Läuferpaarmatt + Zwei angreifende Läufer auf nebeneinander liegenden Diagonalen setzen einen - von eigenen Figuren behinderten - König matt. + Sternmatt + Eine Dame setzt den nebenstehenden König matt, dessen einzigen zwei Fluchtfelder durch eigene Figuren verstellt sind. Ausgleich Komme aus einer verlorenen Stellung zurück und sichere dir ein Remis oder eine ausgeglichene Stellung. (Bewertung ≤ 200 Hundertstel-Bauern) Angriff auf den Königsflügel @@ -41,6 +51,8 @@ Ein Zug, bei dem die gezogene Figur zwei gegnerische Figuren auf einmal angreift. Hängende Figur Eine Taktik, bei der eine gegnerische Figur nicht oder nur unzureichend gedeckt ist und deshalb mit Vorteil geschlagen werden kann. + Hakenmatt + Matt mit Turm, Springer und Bauer, zusammen mit einem gegnerischen Bauern, der dessen König ein Fluchtfeld nimmt. Unterbrechung Eine Figur zwischen zwei gegnerischen Figuren ziehen, um eine oder beide gegnerische Figuren ungedeckt zu lassen, wie etwa einen Springer auf einem gedeckten Feld zwischen zwei Türmen. Zwischenzug @@ -49,9 +61,9 @@ Ein Endspiel nur mit Springern und Bauern. Mehrzügige Aufgabe Drei Züge zum Sieg. - Meisterpartien + Meisterpartien Aufgaben aus Partien von Spielern mit Titel. - Meister gegen Meister Partien + Meister gegen Meister Partien Aufgaben aus Partien zwischen zwei Spielern mit Titel. Matt Gewinne die Partie mit Stil. @@ -95,7 +107,7 @@ Ein Motiv mit einer angegriffenen, hochwertigen Figur, deren Wegziehen erlaubt, dass eine niederwertige Figur hinter ihr geschlagen oder angegriffen werden kann, das Gegenteil einer Fesselung. Ersticktes Matt Ein Matt durch einen Springer, in dem der mattgesetzte König sich nicht bewegen kann, weil er von seinen eigenen Figuren umgeben (also erstickt) wird. - Super-Großmeister-Partien + Super-Großmeister-Partien Aufgaben aus Partien, die von den besten Spielern der Welt bestritten wurden. Gefangene Figur Eine Figur kann dem Schlagen nicht entgehen, weil ihre Zugmöglichkeiten begrenzt wurden. diff --git a/translation/dest/puzzleTheme/el-GR.xml b/translation/dest/puzzleTheme/el-GR.xml index 52f0ee279a..46f6439b89 100644 --- a/translation/dest/puzzleTheme/el-GR.xml +++ b/translation/dest/puzzleTheme/el-GR.xml @@ -40,8 +40,8 @@ Ένα τέλος παρτίδας μόνο με ίππους και πιόνια. Μεγάλος γρίφος Τρεις κινήσεις για να κερδίσετε. - Master παιχνίδια - Master vs Master παιχνίδια + Master παιχνίδια + Master vs Master παιχνίδια Ματ Κερδίστε το παιχνίδι με στυλ. Ματ σε 1 @@ -83,7 +83,7 @@ Ένα μοτίβο όπου ένα κομμάτι υψηλής αξίας δέχεται επίθεση, κάνει στην άκρη, και επιτρέπει την επίθεση ή το πάρσιμο ενός κομματιού μικρότερης αξίας πίσω από αυτό, το αντίστροφο δηλαδή του καρφώματος. Ματ αποπνιγμού Ένα ματ που γίνεται από έναν ίππο σε έναν βασιλιάς ο οποίος δεν μπορεί να μετακινηθεί όντας περιτριγυρισμένος (ή πνιγμένος) από δικά του κομμάτια. - Παιχνίδια Super GM + Παιχνίδια Super GM Παγιδευμένο κομμάτι Ένα κομμάτι δεν μπορεί να αποφύγει το πάρσιμο, καθώς έχει περιορισμένες κινήσεις. Προαγωγή σε κομμάτι μικρότερης αξίας diff --git a/translation/dest/puzzleTheme/en-US.xml b/translation/dest/puzzleTheme/en-US.xml index e4eccac6b9..84a2ca6a74 100644 --- a/translation/dest/puzzleTheme/en-US.xml +++ b/translation/dest/puzzleTheme/en-US.xml @@ -4,6 +4,10 @@ A pawn promoting or threatening to promote is key to the tactic. Advantage Seize your chance to get a decisive advantage. (200cp ≤ eval ≤ 600cp) + Anastasia\'s mate + A knight and rook or queen team up to trap the opposing king between the side of the board and a friendly piece. + Arabian mate + A knight and a rook team up to trap the opposing king on a corner of the board. Attacking f2 or f7 An attack focusing on the f2 or f7 pawn, such as in the fried liver opening. Attraction @@ -12,12 +16,18 @@ Checkmate the king on the home rank, when it is trapped there by its own pieces. Bishop endgame An endgame with only bishops and pawns. + Boden\'s mate + Two attacking bishops on criss-crossing diagonals deliver mate to a king obstructed by friendly pieces. Castling Bring the king to safety, and deploy the rook for attack. Capture the defender Removing a piece that is critical to defense of another piece, allowing the now undefended piece to be captured on a following move. Crushing Spot the opponent blunder to obtain a crushing advantage. (eval ≥ 600cp) + Double bishop mate + Two attacking bishops on adjacent diagonals deliver mate to a king obstructed by friendly pieces. + Dovetail mate + A queen delivers mate to an adjacent king, whose only two escape squares are obstructed by friendly pieces. Equality Come back from a losing position, and secure a draw or a balanced position. (eval ≤ 200cp) Kingside attack @@ -41,6 +51,8 @@ A move where the moved piece attacks two opponent pieces at once. Hanging piece A tactic involving an opponent piece being undefended or insufficiently defended and free to capture. + Hook mate + Checkmate with a rook, knight, and pawn along with one enemy pawn to limit the enemy king\'s escape. Interference Moving a piece between two opponent pieces to leave one or both opponent pieces undefended, such as a knight on a defended square between two rooks. Intermezzo @@ -49,9 +61,9 @@ An endgame with only knights and pawns. Long puzzle Three moves to win. - Master games + Master games Puzzles from games played by titled players. - Master vs Master games + Master vs Master games Puzzles from games between two titled players. Mate Win the game with style. @@ -95,7 +107,7 @@ A motif involving a high value piece being attacked, moving out the way, and allowing a lower value piece behind it to be captured or attacked, the inverse of a pin. Smothered mate A checkmate delivered by a knight in which the mated king is unable to move because it is surrounded (or smothered) by its own pieces. - Super GM games + Super GM games Puzzles from games played by the best players in the world. Trapped piece A piece is unable to escape capture as it has limited moves. diff --git a/translation/dest/puzzleTheme/eo-UY.xml b/translation/dest/puzzleTheme/eo-UY.xml index a86f1411d7..642e3853e1 100644 --- a/translation/dest/puzzleTheme/eo-UY.xml +++ b/translation/dest/puzzleTheme/eo-UY.xml @@ -17,8 +17,8 @@ Ĉevala finludo Longa puzlo Tri movoj por venki. - Majstraj ludoj - Majstro kontraŭ Majtro ludoj + Majstraj ludoj + Majstro kontraŭ Majtro ludoj Puzloj el ludoj inter du titolitaj ŝakistoj. Mato Mato en 1 diff --git a/translation/dest/puzzleTheme/es-ES.xml b/translation/dest/puzzleTheme/es-ES.xml index 45a7665ea8..a8e3d0a9d1 100644 --- a/translation/dest/puzzleTheme/es-ES.xml +++ b/translation/dest/puzzleTheme/es-ES.xml @@ -4,6 +4,10 @@ Un peón que se promociona o amenaza con promocionarse es clave para la táctica. Ventaja Aprovecha la oportunidad de obtener una ventaja decisiva. (200cp ≤ eval ≤ 600cp) + Mate de Anastasia + Un caballo y una torre o dama se unen para atrapar al rey contrario entre un extremo del tablero y una pieza de su bando. + Mate árabe + Un caballo y una torre se unen para atrapar al rey contrario en una esquina del tablero. Atacando f2 o f7 Un ataque centrado en el peón f2 o f7, como en la apertura Fried Liver. Atracción @@ -12,12 +16,18 @@ Jaque mate en la última fila, donde el rey se encuentra atrapado por sus propias piezas. Final de alfiles Un final solo con alfiles y peones. + Mate de Boden + Dos alfiles atacantes en diagonales cruzadas dan mate al rey obstruido por piezas de su bando. Enroque Coloca el rey a salvo y pone a la torre en juego para el ataque. Capturar al defensor Eliminar una pieza fundamental para la defensa de otra, permitiendo capturar la pieza ahora indefensa en el siguiente movimiento. Aplastante Detecta el error del oponente para obtener una ventaja decisiva. (eval ≥ 600cp) + Mate de dos alfiles + Dos alfiles atacantes en diagonales adyacentes dan mate al rey obstruido por piezas de su bando. + Mate de Cozio + Una dama da mate al rey adyacente, cuyas únicas dos casillas de escape están obstruidas por piezas de su bando. Igualdad Vuelve de una posición perdedora y asegura un empate o una posición equilibrada. (eval ≤ 200cp) Ataque en el flanco de rey @@ -41,6 +51,8 @@ Movimiento donde la pieza movida ataca a la vez a dos piezas del oponente. Pieza colgante Una táctica que implica que una pieza del oponente no sea defendida o suficientemente defendida y quede libre para ser capturada. + Mate del gancho + Jaque mate con una torre, un caballo y un peón junto con un peón enemigo para limitar el escape del rey adversario. Interferencia Mover una pieza entre dos piezas del oponente para dejar una o ambas piezas del oponente sin defensa, por ejemplo un caballo en una casilla entre dos torres. Jugada intermedia @@ -49,9 +61,9 @@ Un final solo con caballos y peones. Rompecabezas largo Tres movimientos para ganar. - Partidas de maestros + Partidas de maestros Rompecabezas de partidas de jugadores titulados. - Partidas entre maestros + Partidas entre maestros Rompecabezas de partidas entre jugadores titulados. Mate Gana la partida con estilo. @@ -95,7 +107,7 @@ Un motivo que implica el ataque de una pieza de alto valor, que se aparta del camino y permite capturar o atacar una pieza de menor valor detrás de ella, lo contrario de una clavada. Mate de la coz Un jaque mate en el que el caballo ataca al rey contrario, el cual no puede moverse al encontrarse rodeado (o ahogado) por sus propias piezas. - Partidas de super grandes maestros + Partidas de super grandes maestros Rompecabezas de partidas de los mejores jugadores del mundo. Pieza atrapada Una pieza no puede escapar de la captura porque tiene movimientos limitados. diff --git a/translation/dest/puzzleTheme/eu-ES.xml b/translation/dest/puzzleTheme/eu-ES.xml index d05aac361d..f12d3f1267 100644 --- a/translation/dest/puzzleTheme/eu-ES.xml +++ b/translation/dest/puzzleTheme/eu-ES.xml @@ -4,6 +4,8 @@ Sustatuko den edo sustatze-bidean dagoen peoia da ariketa honen muina. Abantaila Abantaila osoa lortzen saiatu (200cp ≤ ebaluazioa ≤ 600cp) + Anastasiaren matea + Zaldun bat eta gaztelua eta damak aurkariaren erregea taularen bazter baten eta bere pieza baten artean harrapatzen dute. f2 edo f7 erasotu f2 edo f7ko peoia helburu duen erasoa. Erakarmena @@ -41,6 +43,8 @@ Mugitzen den piezak aurkariaren bi pieza batera erasotzen dituenean. Defentsarik gabeko pieza Defentsarik ez duen edo defendatzaile gutxi dituen aurkariaren pieza baten ingurukoak. + Hooken matea + Gaztelua, zalduna eta peoi batekin ematen den matea aurkariaren peoi batek bere erregearen bidea oztopatzen duelarik. Tartean sartzea Aurkariaren bi piezaren artean pieza bat jartzea, horrela aurkariaren piezetako bat edo biak defentsarik gabe utziz. Tarteko-jokaldia @@ -95,6 +99,8 @@ Erasotua den balio handiko pieza bat mugitzea, erasotik kenduz eta bere atzean dagoen baina gutxiago balio duen pieza bat harrapatzen uztea, iltzaketaren aurkakoa. Ostikoaren matea Zaldiak ematen duen matea, aurkariaren erregea bere piezak oztopatzen dutenez ezin delako mugitu. + Super GMen partidak + Munduko jokalari onenek jokatutako partidetatik ateratako ariketak. Harrapatutako pieza Bere jokaldiak mugatuta dituelako ihes egin ezin duen pieza. Sustapen txikia diff --git a/translation/dest/puzzleTheme/fr-FR.xml b/translation/dest/puzzleTheme/fr-FR.xml index db5ebf8608..f0b00ef3f3 100644 --- a/translation/dest/puzzleTheme/fr-FR.xml +++ b/translation/dest/puzzleTheme/fr-FR.xml @@ -4,6 +4,10 @@ Un pion promouvant ou menaçant d\'être promu est essentiel à la tactique. Avantage Saisissez votre chance d\'obtenir un avantage décisif. (200cp ≤ évaluation ≤ 600cp) + Mat d\'Anastasie + Un cavalier et une tour ou une dame s\'associent pour piéger le roi adverse entre le bord de l\'échiquier et une pièce amie. + Mat des Arabes + Un cavalier et une tour s\'associent pour piéger le roi adverse sur un coin de l\'échiquier. Attaque en f2 ou f7 Une attaque sur le pion f2 ou f7, comme dans l\'attaque fegatello/Fried Liver. Attraction @@ -12,12 +16,18 @@ Matez le roi sur le dernier rang, lorsqu\'il est piégé par ses propres pièces. Finale de fous Une finale avec seulement des fous et des pions. + Mat de Boden + Deux fous contrôlant des diagonales croisées matent un roi bloqué par ses propres pièces. Roque Mettez votre roi en sécurité et développez vos tours pour attaquer. Capturez le défenseur Retire une pièce essentielle à la défense d\'une autre pièce, permettant à la pièce non protégée d\'être capturée au coup suivant. Ecrasant Repérez la gaffe de l\'adversaire pour obtenir un avantage écrasant. (évaluation > 600cp) + Mat des deux fous + Deux fous contrôlant des diagonales adjacentes matent un roi bloqué par ses propres pièces. + Mat de Cozio + Une dame mate un roi placé sur une case adjacente, les deux seules cases de fuite étant occupées par des pièces amies. Égalité Revenir d\'une position perdante et assurer une nulle ou une position équilibrée. (évaluation ≤ 200cp) Attaque à l\'aile roi @@ -41,6 +51,8 @@ Un coup où la pièce déplacée attaque deux pièces de l\'adversaire à la fois. Pièce en prise Une tactique impliquant une pièce adverse non protégée ou insuffisamment défendue et libre d\'être capturée. + Mat du crochet + Mat avec une tour, un cavalier et un pion, avec un pion adverse qui empêche la fuite du roi ennemi. Interception Déplacer une pièce entre deux pièces adverses pour en laisser l\'une ou les deux non protégées, comme un cavalier sur une case défendue entre deux tours. Coup intermédiaire diff --git a/translation/dest/puzzleTheme/hi-IN.xml b/translation/dest/puzzleTheme/hi-IN.xml index 4a303bb78d..6aef76cafe 100644 --- a/translation/dest/puzzleTheme/hi-IN.xml +++ b/translation/dest/puzzleTheme/hi-IN.xml @@ -4,6 +4,10 @@ प्रचार करने या धमकी देने वाला पैदल रणनीति की कुंजी है। लाभ निर्णायक लाभ प्राप्त करने के लिए अपने अवसर को जब्त करें। (200cp al eval ≤ 600cp) + अनास्तासिया के मात + बोर्ड के किनारे और एक अनुकूल टुकड़े के बीच विरोधी राजा को फंसाने के लिए एक नाइट और रूक या रानी टीम। + अरेबियन मात + बोर्ड के एक कोने पर विरोधी राजा को फंसाने के लिए एक नाइट और एक रूक टीम। F2 या f7 पर हमला करना एक हमला f2 या f7 मोहरे पर ध्यान केंद्रित करता है, जैसे कि तले हुए लिवर को खोलना। आकर्षण @@ -12,12 +16,18 @@ होम पंक्ति पर राजा को मात दे, जब वह अपने टुकड़ों से वहां फंस गया हो। ऊँट का एंडगेम केवल ऊंट और प्यादे के साथ एक एंडगेम। + बोडेन का मात + क्राइस-क्रॉसिंग विकर्णों पर दो हमलावर बिशप मित्रवत टुकड़ों द्वारा बाधित एक राजा को चेकमेट वितरित करते हैं। कैसलिंग राजा को सुरक्षा के लिए लाएँ, और हमले के लिए हाथी तैनात करें। रक्षक को पकड़ना एक टुकड़े को निकालना जो दूसरे टुकड़े की रक्षा के लिए महत्वपूर्ण है, जिससे अब अपरिभाषित टुकड़ा को निम्नलिखित चाल पर कब्जा करने की अनुमति मिलती है। मुंहतोड़ एक कुचल लाभ प्राप्त करने के लिए प्रतिद्वंद्वी की बड़ी भूल को ढूंढे । (eval ≥ 600cp) + डबल बिशप मात + आसन्न विकर्णों पर दो हमलावर बिशप मित्रवत टुकड़ों द्वारा बाधित एक राजा को चेकमेट वितरित करते हैं। + डव्टेल मात + एक रानी एक समीपवर्ती राजा को चेकमेट वितरित करती है, जिसके केवल दो भागने वाले वर्ग मैत्रीपूर्ण टुकड़ों द्वारा बाधित होते हैं। समानता एक खोने की स्थिति से वापस आएँ, और एक ड्रॉ या संतुलित स्थिति को सुरक्षित करें। (eval ≤ 200cp) किंगसाइड का हमला @@ -41,6 +51,8 @@ एक चाल जहां स्थानांतरित टुकड़ा एक बार में दो प्रतिद्वंद्वी टुकड़ों पर हमला करता है। लटकता हुआ टुकड़ा किसी विरोधी टुकड़े को अपरिभाषित या अपर्याप्त रूप से संरक्षित करने और कब्जा करने के लिए स्वतंत्र होने वाली रणनीति। + हुक मात + शत्रु राजा के भागने को सीमित करने के लिए एक शत्रु प्यादा के साथ एक हाथी, घोड़ा और प्यादा के साथ चेकमेट। दखल अंदाजी दो प्रतिद्वंद्वी टुकड़ों के बीच एक टुकड़े को स्थानांतरित करना एक या दोनों प्रतिद्वंद्वी टुकड़ों को अपरिभाषित करना, जैसे कि दो बदमाशों के बीच बचाव चौक पर एक नाइट। इंटेरमेस्सो diff --git a/translation/dest/puzzleTheme/hu-HU.xml b/translation/dest/puzzleTheme/hu-HU.xml index 90fa6c49d2..d925af7b1f 100644 --- a/translation/dest/puzzleTheme/hu-HU.xml +++ b/translation/dest/puzzleTheme/hu-HU.xml @@ -4,6 +4,8 @@ Átváltozó vagy átváltozással fenyegető gyalog kulcsfontosságú taktika. Előny Ragadd meg a lehetőséget a döntő előny megszerzéséhez. (200cp ≤ eval ≤ 600cp) + Anasztázia mattja + Egy huszár és egy bástya vagy a vezér közösen csapdába ejtik az ellenfél királyát a tábla széle és egy figurája között. f2 vagy f7 támadása Az f2 vagy f7 gyalog ellen irányuló támadás, mint például a \"sültmáj\" megnyitás. Ráterelés diff --git a/translation/dest/puzzleTheme/it-IT.xml b/translation/dest/puzzleTheme/it-IT.xml index a0c4f50470..ca079f1d29 100644 --- a/translation/dest/puzzleTheme/it-IT.xml +++ b/translation/dest/puzzleTheme/it-IT.xml @@ -4,6 +4,10 @@ Un pedone che promuove o che minaccia di promuovere è la chiave della tattica. Vantaggio Cogli l\'occasione per guadagnare un vantaggio decisivo. (200cp ≤ valutazione ≤ 600cp) + Matto di Anastasia + Un cavallo e una torre o una donna si coordinano nell\'intrappolare il re avversario tra un suo pezzo e il bordo della scacchiera. + Matto arabo + Un cavallo e una torre si coordinano nell\'intrappolare il re avversario in un angolo della scacchiera. Attacco su f2 o f7 Un attacco incentrato sul pedone f2 o f7, come nell\'attacco Fegatello. Adescamento @@ -12,12 +16,18 @@ Matto al re sulla traversa di partenza, dove è intrappolato dai suoi stessi pezzi. Finale d\'alfiere Un finale con soli alfieri e pedoni. + Matto di Boden + Due alfieri danno matto lungo diagonali perpendicolari ad un re ostruito dai suoi stessi pezzi. Arrocco Porta il re al sicuro, e sviluppa la torre per attaccare. Cattura del difensore Rimozione di un pezzo essenziale per la difesa di un altro pezzo, che permette al pezzo ora indifeso di essere catturato con una mossa successiva. Posizione schiacciante Trova l\'errore grave del tuo avversario per ottenere un vantaggio schiacciante. (valutazione ≥ 600cp) + Matto dei due alfieri + Due alfieri danno matto lungo diagonali adiacenti ad un re ostruito dai suoi stessi pezzi. + Matto a coda di rondine + Una donna dà matto al re in una casa adiacente, mentre le due uniche case di fuga sono occupate da suoi pezzi. Eguaglianza Recupera una posizione persa e assicurati la patta o una posizione equa. (valutazione ≥ 200cp) Attacco sul lato di re @@ -41,6 +51,8 @@ Una mossa in cui un pezzo attacca due pezzi avversari contemporaneamente. Pezzo in presa Una tattica che coinvolge un pezzo indifeso o insufficientemente difeso, e che dunque può essere catturato. + Matto dell\'uncino + Matto con torre, cavallo e pedone, con un pedone avversario che ostruisce il suo re. Interposizione Spostamento di un pezzo tra due pezzi avversari per lasciare uno o entrambi i pezzi nemici senza difesa, come ad esempio un cavallo difeso tra due torri. Intermezzo @@ -49,9 +61,9 @@ Un finale con soli cavalli e pedoni. Tattica lunga Vittoria in tre mosse. - Partite di giocatori titolati + Partite di giocatori titolati Puzzle da partite giocate da giocatori intitolati. - Partite fra giocatori titolati + Partite fra giocatori titolati Puzzle da partite fra due giocatori titolati. Matto Vinci la partita con stile. @@ -95,7 +107,7 @@ Un tema che consiste in un pezzo di grande valore che viene attaccato e che si sposta, permettendo ad un pezzo dietro di esso di essere catturato o attaccato. Il contrario di un\'inchiodatura. Matto affogato Uno scacco matto eseguito con un cavallo, in cui il re sotto scacco è incapace di spostarsi poiché circondato (\"affogato\") dai suoi stessi pezzi. - Partite di Super GM + Partite di Super GM Puzzle da partite giocate dai migliori giocatori del mondo. Pezzo intrappolato Un pezzo che non può evitare la cattura a causa delle sue mosse limitate. diff --git a/translation/dest/puzzleTheme/ja-JP.xml b/translation/dest/puzzleTheme/ja-JP.xml index b756404b21..b5a8587d46 100644 --- a/translation/dest/puzzleTheme/ja-JP.xml +++ b/translation/dest/puzzleTheme/ja-JP.xml @@ -4,6 +4,10 @@ ポーンの昇格かその狙いがテーマの問題。 優位 決定的な優位を得てください。(評価値は 200cp 以上 600cp 以下) + アナスタシアのメイト + 盤端と味方の駒にはさまれたキングを、ナイトとルーク(またはクイーン)でメイトする形。 + アラビアのメイト + 盤の隅にいるキングを、ナイトとルークでメイトする形。 f2/f7への攻撃 f2 か f7 のポーンを狙う攻撃(フライド・リバー・アタックなど)。 アトラクション(引き寄せ) @@ -12,12 +16,18 @@ 一番下のランクで、上を自分の駒に塞がれたキングをメイトする。 ビショップ・エンドゲーム ビショップとポーンだけの終盤。 + ボーデンのメイト + 味方の駒にじゃまされたキングを、2 個のビショップが交差した効き筋でメイトする形。 キャスリング キングを安全にし、ルークを攻撃に活用する。 守り駒の除去 別の駒を守っている駒を消して、無防備になった駒を取る。 圧倒 相手の悪手をとがめて圧倒的な優位を築きます。(評価値は 600cp 以上) + ダブル・ビショップのメイト + 味方の駒にじゃまされたキングを、2 個のビショップが平行な効き筋でメイトする形。 + 燕尾のメイト + 斜め後ろを両方とも味方の駒に塞がれたキングを、クイーン1個でメイトする形。 互角 劣勢の局面から、ドローを確保するか互角の局面に戻します。(評価値は 200cp 以下) キングサイド攻撃 @@ -41,6 +51,8 @@ 動いた駒が相手の 2 つの駒を同時に攻撃する手。 浮き駒 守りのない駒、または守り駒の足りない駒をただで取る問題。 + 釣り針のメイト + ポーンの隣にいるキングを、ルーク、ナイト、ポーンでメイトする形。 インターフェア(干渉) 相手の 2 つの駒の間に駒を入れて浮き駒を作る問題。相手の 2 個のルークの間に守られたナイトを入れる、など。 ツヴィッシェンツーク(利かし) @@ -49,9 +61,9 @@ ナイトとポーンだけの終盤。 長手数問題 3 手で勝ちになります。 - マスターのゲーム + マスターのゲーム タイトル保持者の対局から採った問題。 - マスター同士のゲーム + マスター同士のゲーム 双方がタイトル保持者の対局から採った問題。 メイト きれいに勝ちを決める。 @@ -95,7 +107,7 @@ ラインピースで価値の高い駒を攻撃し、それが逃げた後で背後にある価値の低い駒を取るタクティクス。ピンの裏返し。 スマザード・メイト キングが味方の駒に囲まれて動けない時(スマザー=窒息している時)に、ナイト 1 個でかけるメイト。 - スーパー GM の対局 + スーパー GM の対局 世界の一流選手の対局から採った問題。 敵駒を殺す 相手の駒の動きを制限して、逃げられない状態にする問題。 diff --git a/translation/dest/puzzleTheme/kk-KZ.xml b/translation/dest/puzzleTheme/kk-KZ.xml index 5c2f06f2a8..4e0b0f2420 100644 --- a/translation/dest/puzzleTheme/kk-KZ.xml +++ b/translation/dest/puzzleTheme/kk-KZ.xml @@ -4,6 +4,7 @@ Айналуға ұмтылған не айналу қаупін төндіретін сарбаз – тактиканың өзегі. Артықшылық Шешуші артықшылық беретін сәтті жіберіп алмаңыз. (200-600 сп) + Анастасия маты f2 не f7-ге шабуылдау \"Қуырылған бүйрек\" бастауындағыдай f2 не f7 сарбазына бағытталған шабуыл. Тартымдылық diff --git a/translation/dest/puzzleTheme/lt-LT.xml b/translation/dest/puzzleTheme/lt-LT.xml index 114e652586..7b4dcfb0bc 100644 --- a/translation/dest/puzzleTheme/lt-LT.xml +++ b/translation/dest/puzzleTheme/lt-LT.xml @@ -4,6 +4,8 @@ Pėstininkas, kuris keičiamas kita figūra, ar tuoj tai darys, čia yra esminė taktika. Pranašumas Pasinaudokite proga įgauti esminį pranašumą. (200cp ≤ eval ≤ 600cp) + Anastasijos matas + Žirgas ir karalienė arba bokštas bendromis jėgomis įkalina priešininko karalių tarp lentos krašto ir kitos figūros. F2 ar f7 puolimas Puolimas, koncentruotas ties f2 ar f7 pėstininkais, panašiai kaip keptų kepenų debiute. Trauka @@ -41,6 +43,8 @@ Ėjimas, kurio metu perkelta figūra puola dvi ar daugiau priešininko figūrų vienu metu. Kabanti figūra Taktika, susijusi su neapginta ar nepakankamai apginta ir lengvai nukertama priešininko figūra. + Kablio matas + Matas su bokštu, žirgu ir pėstininku palei vieną iš priešininko pėstininkų, apribojančių priešininko karaliaus pabėgimą. Trukdymas Figūros perkėlimas tarp dviejų priešininko figūrų, paliekant vieną ar abi jų neapgintas. Pavyzdžiui: perkeliant žirgą į apgintą laukelį tarp dviejų bokštų. Tarpinis ėjimas diff --git a/translation/dest/puzzleTheme/lv-LV.xml b/translation/dest/puzzleTheme/lv-LV.xml index ad1d7cb298..728afbd518 100644 --- a/translation/dest/puzzleTheme/lv-LV.xml +++ b/translation/dest/puzzleTheme/lv-LV.xml @@ -4,6 +4,8 @@ Taktika balstās uz bandinieka paaugstināšanu vai paaugstināšanas draudu. Pārsvars Izmantojiet iespēju iegūt noteicošu pārsvaru. (200cp ≤ vērtējums ≤ 600cp) + Anastāsijas mats + Zirdziņš ar torni vai dāmu iesprosto pretinieka karali starp galdiņa malu un viņa paša figūru. Uzbrukums f2 vai f7 Uzbrukums, kas koncentrējas uz f2 vai f7 bandinieku, līdzīgi \"fried liver\" (angļ. val. \"cepto aknu\") atklātnei. Ievilkšana @@ -41,6 +43,8 @@ Gājiens, pēc kura kustinātā figūra uzbrūk diviem pretiniekiem reizē. Neapsargāta figūra Taktika, ar kuru var par brīvu nosist pretinieka figūru, kas ir neapsargāta vai nepietiekami apsargāta. + Āķa mats + Mats ar torni, zirdziņu un bandinieku, kurā iesaistīts viens pretinieka bandinieks, kas ierobežo karaļa izbēgšanu. Iejaukšanās Figūras novietošana starp divām pretinieka figūrām tā, lai vismaz viena no tām būtu neapsargāta — piemēram zirdziņa novietošana uz apsargāta lauciņa starp torņiem. Intermezzo @@ -49,9 +53,9 @@ Beigu spēle, kurā iesaistīti tikai zirdziņi un bandinieki. Gara puzle Trīs gājieni līdz uzvarai. - Meistaru spēles + Meistaru spēles Puzles no spēlēm, ko spēlējuši spēlētāji ar tituliem. - Meistaru spēles pret meistariem + Meistaru spēles pret meistariem Puzles no spēlēm, kurās abiem spēlētājiem ir tituli. Mats Uzvariet spēli ar stilu. @@ -95,7 +99,7 @@ Šis motīvs iesaista augstas vērtības figūru, kurai jāizkustās, lai izvairītos no uzbrukuma, atļaujot vai nu uzbrukumu mazākas vērtības figūrai, kas atrodas aiz tās, vai arī šīs figūras nosišanu – pretējais piespraušanai. Smacējošais mats Zirdziņa pieteikts mats karalim, kas nevar kustēties dēļ paša figūrām, kas to ielenkušas (nosmacējušas). - Super-Lielmeistaru spēles + Super-Lielmeistaru spēles Puzles no labāko pasaules spēlētāju spēlēm. Iesprostota figūra Figūra nevar izbēgt nosišanu, jo ierobežoti tās gājieni. diff --git a/translation/dest/puzzleTheme/my-MM.xml b/translation/dest/puzzleTheme/my-MM.xml index cf6a7e763d..c987dfbbf2 100644 --- a/translation/dest/puzzleTheme/my-MM.xml +++ b/translation/dest/puzzleTheme/my-MM.xml @@ -3,6 +3,8 @@ ရှေ့ရောက် ပွန်း ဤနည်းဗျူဟာတွင် ရာထူးတိုးသော သို့မဟုတ် တိုးရန် ခြိမ်းခြောက်နေသာ ပွန်းသည် သော့ချက် ဖြစ်သည် အဆုံးအဖြတ် ပေးနိုင်သော အသာစီးမှုကို ရယူပါ (200cp ≤ eval ≤ 600cp) + အန်နာတာရှား ပုံစံ အမိဖမ်းခြင်း + ကစားခုံ ဘောင် တစ်ဘက်မှာ ပြိုင်ဘက် ဘုရင်ကို သူ့ဘက် အရုပ် တစ်ခုနှင့် ညှပ်ပြီး မြင်းနှင့် ဘုရင်မ သို့မဟုတ် ရထားဖြင့် ပူးပေါင်းကာ အမိဖမ်းခြင်း။ f2 သို့မဟုတ် f7 အား ထိုးနှက်ခြင်း မျှားခေါ်ခြင်း နောက်ဆုံးတန်း၌ အသေဖမ်းခြင်း @@ -11,6 +13,8 @@ ဘစ်ရှော့များနှင့် ပွန်းများသာ ကျန်သော ပွဲသိမ်းပိုင်း ရထားပြောင်းခြင်း ဘုရင်အား လုံခြုံရာသို့ ပို့ပြီး ရထားအား ထိုးနှက်ရန် အဆင်သင့် ဖြစ်စေခြင်း + ချိတ်ကောက် အမိဖမ်းနည်း + ရန်သူ့ ဘုရင် လွတ်လမ်းကို ရန်သူ့ နယ်ရုပ် ကိုယ်တိုင် ပိတ်ထားစဉ် မိမိဘက် နယ်ရုပ်၊ မြင်း၊ ရထားတို့ဖြင့် အမိဖမ်းခြင်း။ သုံးလှည့်နှင့် အမိဖမ်းရန် လေးလှည့်နှင့် အမိဖမ်းရန် ငါးလှည့် သို့မဟုတ် အထက်နှင့် အမိဖမ်းရန် diff --git a/translation/dest/puzzleTheme/nb-NO.xml b/translation/dest/puzzleTheme/nb-NO.xml index 92007cf3c6..4df8d29d8c 100644 --- a/translation/dest/puzzleTheme/nb-NO.xml +++ b/translation/dest/puzzleTheme/nb-NO.xml @@ -4,6 +4,10 @@ En bondeforvandling eller en trussel om bondeforvandling er nøkkeltaktikken. Fordel Grip sjansen til en avgjørende fordel. (200cp ≤ eval ≤ 600cp) + Anastasias matt + Tårn eller dronning slår seg sammen med springer for å fange motstanderens konge mellom kanten av brettet og egen brikke. + Arabisk matt + Springer og tårn slår seg sammen for å fange motstanderens konge i hjørnet av brettet. Angrep mot f2 eller f7 Et angrep med fokus på bonden på f2 eller f7, slik som i fegatello-angrepet. Magnetoffer @@ -12,17 +16,23 @@ Sett kongen sjakk matt på sisteraden, når den er fanget der av egne brikker. Løpersluttspill Et sluttspill med kun løpere og bønder. + Bodens matt + To angripende løpere på kryssende diagonaler setter matt, da kongen er blokkert av egne brikker. Rokade Få kongen i sikkerhet og gjør tårnet klart for angrep. Slå forsvareren Ta en brikke som gir avgjørende dekning for en annen brikke, slik at den nå udekkede brikken kan slås senere. Knusende Oppdag motstanderens bukk og oppnå en knusende fordel. (eval ≥ 600cp) + Dobbeltløpermatt + To angripende løpere på tilstøtende diagonaler setter matt, da kongen er blokkert av egne brikker. + Halematt + Dronning setter tilstøtende konge matt, da de to eneste fluktfeltene er blokkert av egne brikker. Utligning Vend en tapt stilling til remis eller lik stilling. (eval ≤ 200cp) Angrep på kongefløyen Et angrep mot motstanderens konge etter kort rokade. - Feltrømning + Feltrømming Et trekk, gjerne med tempo, som åpner et felt, en linje eller en diagonal for en påfølgende taktisk idé. Forsvarstrekk Et trekk eller en trekkrekke som er nøyaktig det som trengs for å unngå å tape materiell eller en annen fordel. @@ -41,6 +51,8 @@ Et trekk der brikken som ble flyttet, angriper to av motstanderens brikker samtidig. Hengende brikke En taktikk som utnytter at en motstanderbrikke er udekket eller ikke tilstrekkelig dekket og kan slås. + Krokmatt + Tårn, springer og bonde setter sjakk matt i en stilling der motstanderens bonde avskjærer kongens flukt. Interferens Å flytte en brikke mellom to motstanderbrikker slik at en av eller begge motstanderbrikkene er udekket, for eksempel en springer på et dekket felt mellom to tårn. Mellomtrekk @@ -49,9 +61,9 @@ Et sluttspill med kun springere og bønder. Lang sjakknøtt Tre trekk til vinst. - Mesterpartier + Mesterpartier Sjakknøtter fra partier med spillere som har sjakktittel. - Mestermøter + Mestermøter Sjakknøtter fra partier mellom to spillere som har sjakktittel. Matt Vinn partiet med stil. @@ -95,7 +107,7 @@ Et motiv der en brikke med høy verdi er under angrep og må flyttes, noe som tillater at en brikke med lavere verdi som står bak den, blir slått eller angrepet, det motsatte av en binding. Kvelermatt En stilling der en springer setter sjakk matt, og kongen ikke kan flyttes fordi den er omgitt (eller kvalt) av egne brikker. - Super-GM-partier + Super-GM-partier Sjakknøtter fra partier med verdens beste spillere. Fanget brikke En brikke kan ikke unnslippe, siden den har få mulige trekk. diff --git a/translation/dest/puzzleTheme/nl-NL.xml b/translation/dest/puzzleTheme/nl-NL.xml index 2fa5011f0b..228da2deae 100644 --- a/translation/dest/puzzleTheme/nl-NL.xml +++ b/translation/dest/puzzleTheme/nl-NL.xml @@ -4,6 +4,9 @@ Een pion die promoveert of dreigt te promoveren is hier cruciaal. Voordeel Grijp je kans om een doorslaggevend voordeel te verkrijgen. (200cp ≤ eval ≤ 600 cp) + Anastasia\'s mat + Een paard werkt samen met een toren of dame om de koning van de tegenstander tussen de zijkant van het bord en een eigen stuk te vangen. + Arabisch mat f2 of f7 aanvallen Een aanval gericht op de f2 of de f7-pion, zoals in de Fegatello-opening. Lokken @@ -12,12 +15,15 @@ Zet de koning mat op de achterste rij, ingesloten door zijn eigen stukken. Lopereindspel Een eindspel met alleen lopers en pionnen. + Mat van Boden + Twee aanvallende lopers op kruisende diagonalen geven schaakmat aan een koning die wordt belemmerd door stukken van de eigen kleur. Rokade Breng de koning in veiligheid en zet de toren in voor een aanval. De verdediger slaan Een stuk slaan dat essentieel is voor de verdediging van een ander stuk, waardoor vervolgens het nu onverdedigde stuk met een volgende zet kan worden geslagen. Verpletteren Zie de blunder van de tegenstander om een verpletterend voordeel te verkrijgen. (eval ≥ 600cp) + Dubbele loper mat Evenwicht Terugkomen uit een verloren stelling en een remise veiligstellen of een gelijkwaardige stelling bereiken. (eval ≤ 200cp) Koningsaanval @@ -49,9 +55,9 @@ Een eindspel met alleen paarden en pionnen. Lange puzzel Winnen in drie zetten. - Partijen van meesters + Partijen van meesters Puzzels van partijen met één titelhouder. - Partijen van meesters onderling + Partijen van meesters onderling Puzzels van partijen met twee titelhouders. Mat De partij in stijl winnen. @@ -95,7 +101,7 @@ Een motief waarbij een waardevol stuk wordt aangevallen en vervolgens wordt verplaatst, waardoor een lichter stuk erachter kan worden geslagen of aangevallen. Het omgekeerde van een penning. Stikmat Schaakmat met een paard waarbij de aangevallen koning geen zet kan doen omdat hij ingesloten is (of verstikt) door zijn eigen stukken. - Partijen van topschakers + Partijen van topschakers Puzzels van partijen gespeeld door de beste schakers ter wereld. Ingesloten stuk Een stuk kan niet meer ontsnappen omdat het geen velden meer heeft. diff --git a/translation/dest/puzzleTheme/nn-NO.xml b/translation/dest/puzzleTheme/nn-NO.xml index 5c6ca70af9..7c3bd2ad9e 100644 --- a/translation/dest/puzzleTheme/nn-NO.xml +++ b/translation/dest/puzzleTheme/nn-NO.xml @@ -4,6 +4,10 @@ Ein bonde som blir forvandla eller trugar med å bli forvandla er ein taktisk nøkkel. Fordel Grip sjansen til å få eit avgjerande fortrinn. (200cp ≤ eval ≤ 600cp) + Anastasia-matt + Eit tårn eller ei dronning samarbeidar med ein springar om å fange motspelarens konge mellom brettkanten og ei av sine eigne brikker. + Arabisk matt + Springar og tårn samarbeider om å sette kongen matt inne i hjørnet av brettet. Gå til åtak på f2 eller f7 Eit åtak som konsentrerar seg om bøndene på f2 eller f7, som til dømes i prøyssisk opning, fegatellovarianten (\"Fried Liver Attack\"). Magnet @@ -12,12 +16,18 @@ Sjakkmatt på åttanderaden, ved at kongen til motspelaren blir innestengd av sine eigne brikker. Løparsluttspel Eit sluttspel med berre løparar og bønder. + Bodens matt + To angripande løparar på kryssande diagonalar set matt, hjelpt av at kongen er blokkert av eigne brikker. Rokade Få kongen din i tryggleik og gjer tårnet klårt for åtak. Slå ut forsvararen Slå ut ei brikke som er kritisk som dekning for ei anna brikke, slik at brikka som no står udekka kan fjernast i eit seinare trekk. Avgjerande fordel Finn motspelarens feil for å få ein avgjerande fordel. (eval ≥ 600 centibønder) + Dobbeltløparmatt + To angripande løparar på tilstøytande diagonalar mattar, hjelpt av at kongen er blokkert av eigne brikker. + Stjertmatt + Ei dronning plassert heilt inntil motstandarkongen set matt fordi dei to einaste fluktfelta til kongen er blokkert av eigne brikker. Utjamning Vend ei tapt stilling til remis eller utjamna stilling. (eval ≤ 200 centibønder) Åtak på kongefløyen @@ -41,6 +51,8 @@ Eit trekk der brikka som vart flytta går til åtak på meir enn ein motstandarbrikke på same tid. Hengande brikke Ein taktikk som inneber at ein udekka eller utilstrekkeleg dekka motstandarbrikke med fordel kan slås ut. + Krokmatt + Sjakkmatt med tårn, springar og bonde pluss ei motstandarbrikke som tek opp av eit felta kongen elles kunne flykta til. Hindring Flytte ei brikke mellom to motstandarbrikker for å oppnå at ei eller begge vert udekka. Til dømes ein springar til eit dekka felt mellom to tårn. Mellomtrekk @@ -91,7 +103,7 @@ Ein manøver der ei høgverdig brikke kjem under åtak og må flytte slik at ei brikke av lågare verde som står bak kan slås ut eller verte truga. Spidding kan utførast med løpar, dronning eller tårn. Spiddar vert rekna som motsatsen til binding. Kvelarmatt Ein sjakkmatt ved hjelp av ein springar der motspelarens konge er stengd inne (eller kjøvd) av eigne brikker. - Superstormeister-parti + Superstormeister-parti Oppgåver frå parti spela av verdas beste sjakkspelarar. Fanga brikke Ei brikke som ikkje kjem unna på grunn av mangel på utvegar. diff --git a/translation/dest/puzzleTheme/pl-PL.xml b/translation/dest/puzzleTheme/pl-PL.xml index 192cb10cb7..ef8ff605e1 100644 --- a/translation/dest/puzzleTheme/pl-PL.xml +++ b/translation/dest/puzzleTheme/pl-PL.xml @@ -4,6 +4,10 @@ Zaawansowany pion lub pion grożący przemianą jest kluczowy w taktyce. Przewaga Wykorzystaj szansę na uzyskanie decydującej przewagi. (200cp ≤ eval ≤ 600cp) + Mat Anastazji + Skoczek, wieża lub hetman łączą siły, aby złapać przeciwnego króla w pułapkę pomiędzy bandą szachownicy, a jego inną figurą. + Mat arabski + Skoczek i wieża współpracują razem, aby zaciągnąć króla w róg szachownicy. Atak na f2 lub f7 Atak koncentrujący się na pionach f2 lub f7, na przykład taki jak w szewskim macie. Przyciąganie @@ -12,12 +16,18 @@ Zamatuj króla uwięzionego w ostatnim rzędzie przez własne bierki. Końcówka gońcowa Gra końcowa wyłącznie z gońcami i pionami. + Mat Bodena + Dwa atakujące gońce na przeciwnych przekątnych matują króla ograniczonego przez własne bierki. Roszada Zabezpiecz swojego króla i wprowadź do gry wieżę. Zabicie obrońcy Usunięcie obrońcy który jest kluczowy do obrony innej figury, pozwalając na zbicie niebronionej figury w następnym ruchu. Zmiażdżenie Zauważ błąd przeciwnika, aby uzyskać miażdżącą przewagę (ocena pozycji: powyżej 600cp) + Mat dwoma gońcami + Dwa atakujące gońce na sąsiednich przekątnych matują króla ograniczonego przez własne bierki. + Jaskółczy ogon + Hetman matuje sąsiedniego króla, którego jedyne dwa pola ucieczki są zablokowane przez własne bierki. Równowaga Odzyskaj remis bądź równowagę wychodząc z przegrywającej pozycji. (ocena pozycji: poniżej 200cp) Atak skrzydłem królewskim @@ -41,6 +51,8 @@ Ruch w którym poruszona bierka atakuje jednocześnie dwie bierki przeciwnika. Wisząca figura Taktyka wykorzystująca możliwość zbicia niebronionej lub niedostatecznie bronionej bierki przeciwnika. + Mat haka + Mat wieżą, skoczkiem i pionkiem z wrogim pionem blokującym ucieczkę króla. Przesłona Ruch figurą pomiędzy dwie figury przeciwnika, tak, że jedna lub obydwie są niebronione. Na przykład ruch skoczkiem na bronione pole pomiędzy dwie wieże. Wtrącony ruch diff --git a/translation/dest/puzzleTheme/pt-BR.xml b/translation/dest/puzzleTheme/pt-BR.xml index 54ced8430c..d652ade6f9 100644 --- a/translation/dest/puzzleTheme/pt-BR.xml +++ b/translation/dest/puzzleTheme/pt-BR.xml @@ -4,6 +4,10 @@ Um peão prestes a ser promovido ou à beira da promoção é um tema tático. Vantagem Aproveite a sua chance de ter uma vantagem decisiva. (200cp ≤ eval ≤ 600cp) + Mate Anastasia + Um cavalo e uma torre se unem para prender o rei do oponente entre a lateral do tabuleiro e uma peça amiga. + Mate árabe + Um cavalo e uma torre se unem para prender o rei inimigo em um canto do tabuleiro. Atacando f2 ou f7 Um ataque focado no peão de f2 e no peão de f7, como na abertura frango frito. Atração @@ -12,12 +16,18 @@ Dê o xeque-mate no rei na última fileira, quando ele estiver bloqueado pelas próprias peças. Finais de bispo Final com somente bispos e peões. + Mate de Boden + Dois bispos atacantes em diagonais cruzadas dão um mate em um rei obstruído por peças amigas. Roque Traga o seu rei para a segurança, e prepare sua torre para o ataque. Capture o defensor Remover uma peça que seja importante na defesa de outra, permitindo que agora a peça indefesa seja capturada na jogada seguinte. Punindo Perceba a capivarada do oponente para obter uma vantagem decisiva. (vantagem ≥ 600cp) + Mate de dois bispos + Dois bispos atacantes em diagonais adjacentes dão um mate em um rei obstruído por peças amigas. + Mate da cauda de andorinha + Uma rainha dá um mate em um rei adjacente, cujos únicos dois quadrados de fuga estão obstruídos por peças amigas. Igualdade Saia de uma posição perdida, e assegure um empate ou uma posição equilibrada. (aval ≤ 200cp) Ataque na ala do Rei @@ -41,6 +51,8 @@ Um movimento onde a peça movida ataca duas peças de oponente de uma só vez. Peça pendurada Uma táctica que envolve uma peça indefesa do oponente ou insuficientemente defendida e livre para ser capturada. + Xeque gancho + Xeque-mate com uma torre, um cavalo e um peão, juntamente com um peão inimigo, para limitar a fuga do rei. Interferência Mover uma peça entre duas peças do oponente para deixar uma ou duas peças do oponente indefesas, como um cavalo em uma casa defendida por duas torres. Lance intermediário @@ -49,9 +61,9 @@ Um final jogado apenas com cavalos e peões. Quebra-cabeças longo Vitória em três movimentos. - Partidas de mestres + Partidas de mestres Quebra-cabeças de partidas jogadas por jogadores titulados. - Partidas de Mestre vs Mestre + Partidas de Mestre vs Mestre Quebra-cabeças de partidas entre dois jogadores titulados. Xeque-mate Vença o jogo com estilo. @@ -95,7 +107,7 @@ Um movimento que envolve uma peça de alto valor sendo atacada fugindo do ataque e permitindo que uma peça de menor valor seja capturada ou atacada, o inverso de cravada. Mate de Philidor (mate sufocado) Um xeque-mate dado por um cavalo onde o rei é incapaz de mover-se porque está cercado (ou sufocado) pelas próprias peças. - Super partidas de GMs + Super partidas de GMs Quebra-cabeças de partidas jogadas pelos melhores jogadores do mundo. Peça presa Uma peça é incapaz de escapar da captura, pois tem movimentos limitados. diff --git a/translation/dest/puzzleTheme/pt-PT.xml b/translation/dest/puzzleTheme/pt-PT.xml index 8b2dbc069f..45c65fa928 100644 --- a/translation/dest/puzzleTheme/pt-PT.xml +++ b/translation/dest/puzzleTheme/pt-PT.xml @@ -49,9 +49,9 @@ Um final de jogo com apenas cavalos e peões. Problema longo Três movimentos para ganhar. - Jogos de mestres + Jogos de mestres Problemas de partidas jogadas por jogadores titulados. - Jogos de Mestre vs Mestre + Jogos de Mestre vs Mestre Partidas jogadas entre dois jogadores titulados. Xeque-mate Vence a partida com estilo. @@ -95,7 +95,7 @@ Uma tática que envolve uma peça de alto valor que está ser atacada, mas ao afastar-se, permite que uma peça de menor valor, que estava atrás dela, seja capturada ou atacada. É o inverso da cravada. Mate de Philidor Uma xeque-mate feito por um cavalo em que o rei não se pode mover porque está rodeado pelas suas próprias peças. Também conhecido como mate sufocado. - Jogos de Super GM + Jogos de Super GM Problemas de partidas jogadas pelos melhores jogadores do mundo. Peça encurralada Uma peça não consegue escapar à captura, pois tem movimentos limitados. diff --git a/translation/dest/puzzleTheme/ro-RO.xml b/translation/dest/puzzleTheme/ro-RO.xml index bc116fc197..20bb977a82 100644 --- a/translation/dest/puzzleTheme/ro-RO.xml +++ b/translation/dest/puzzleTheme/ro-RO.xml @@ -4,6 +4,8 @@ Un pion care promovează sau amenință să promoveze e cheia acestei tactici. Avantaj Profită de șansa ta pentru a obține un avantaj decisiv. (200cp ≤ eval ≤ 600cp) + Matul Anastasiei + Un cal şi o tură sau o regină lucrează împreună pentru a prinde regele opus între marginea tablei şi o piesă de culoarea regelui. Atac pe f2 sau f7 Un atac concentrat pe pionul f2 sau f7, cum ar fi în deschiderea ficat prăjit (atacul Fegatello). Atragere diff --git a/translation/dest/puzzleTheme/ru-RU.xml b/translation/dest/puzzleTheme/ru-RU.xml index 5635bf53a4..e9d45d1cca 100644 --- a/translation/dest/puzzleTheme/ru-RU.xml +++ b/translation/dest/puzzleTheme/ru-RU.xml @@ -4,6 +4,10 @@ Пешка, готовая к превращению, имеет важное тактическое значение. Преимущество Используйте свой шанс получить решающее преимущество. (от 200 до 600 сантипешек) + Мат Анастасии + Конь и ладья (или ферзь) матуют короля противника между краем доски и другой фигурой противника. + Арабский мат + Конь и ладья матуют вражеского короля в углу доски. Атака f2 или f7 Атака, направленная на пешки f2 или f7, например, в дебюте жареной печени. Завлечение @@ -12,6 +16,8 @@ Матование короля на его горизонтали, когда он заблокирован своими же фигурами. Слоновый эндшпиль Эндшпиль, где присутствуют лишь слоны и пешки. + Мат Бодена + Два слона с пересекающихся диагоналей ставят мат вражескому королю, окружённому собственными фигурами. Рокировка Поместите короля в надёжное место и выведите в бой ладью. Уничтожение защитника @@ -41,6 +47,8 @@ Ход, при котором под удар попадают две фигуры противника. Висячая фигура Незащищённая или недостаточно защищённая фигура либо берётся сразу, либо становится объектом для атаки. + Хук-мат + Мат ладьёй и конём, защищённым пешкой, при том, что одна из пешек противника занимает единственное доступное поле для отхода его короля. Перекрытие Ход, перекрывающий линию взаимодействия дальнобойных фигур противника, в результате которого одна или обе фигуры становятся беззащитными. Например, конь встаёт на линию между двумя ладьями. Промежуточный ход diff --git a/translation/dest/puzzleTheme/sk-SK.xml b/translation/dest/puzzleTheme/sk-SK.xml index 8a278b32e3..f448aad4f3 100644 --- a/translation/dest/puzzleTheme/sk-SK.xml +++ b/translation/dest/puzzleTheme/sk-SK.xml @@ -41,6 +41,7 @@ Ťah, pri ktorom figúra útočí na dve nepriateľské figúry naraz. Visiaca figúra Taktika spojená so súperovou figúrou, ktorá je nekrytá alebo nedostatočne krytá a je možné ju vziať zadarmo. + Mat vežou, jazdcom alebo pešiakom spolu s jedným súperovým pešiakom, ktorý obmedzuje pohyb kráľa. Prekrytie Umiestnenie figúry medzi dve súperove figúry čím sa tieto dve stávajú nekrytými, napr. umiestnenie jazdca na kryté pole medzi dve veže. Medziťah @@ -49,6 +50,10 @@ Koncovka iba s jazdcami a pešiakmi. Troj-ťahové úlohy Tri ťahy do výhry. + Hry majstrov + Diagramy z partií hraných titulovanými hráčmi. + Hry majstrov proti majstrom + Diagramy z hier medzi dvoma titulovanými hráčmi. Mat Vyhrajte hru so štýlom. Mat 1. ťahom @@ -91,6 +96,8 @@ Motív spojený s napadnutím figúry vysokej hodnoty, po ktorej ustúpení je umožnené zobratie alebo napadnutie figúry nižšej hodnoty, opak väzby. Dusený mat Mat daný jazdcom, pri ktorom sa matovaný kráľ nemá kam pohnúť pretože je obkolesený (alebo zadusený) vlastnými figúrami. + Hry superveľmajstrov + Diagramy z partií hranými najlepšími hráčmi sveta. Chytená figúra Figúra neschopná ujsť vyhodeniu, pretože má limitované možnosti. Pod-premena diff --git a/translation/dest/puzzleTheme/sr-SP.xml b/translation/dest/puzzleTheme/sr-SP.xml index 5ae521d0e4..84040d6840 100644 --- a/translation/dest/puzzleTheme/sr-SP.xml +++ b/translation/dest/puzzleTheme/sr-SP.xml @@ -4,5 +4,5 @@ Пешак који се промовише или прети да се промовише је кључни мотив тактике. Предност Искористите шансу да стекнете одлучујућу предност. (200cp ≤ eval ≤ 600cp) - Napad na f2 ili f7 + Напад на f2 или на f7 diff --git a/translation/dest/puzzleTheme/sv-SE.xml b/translation/dest/puzzleTheme/sv-SE.xml index 601e4e9f24..e067f3526e 100644 --- a/translation/dest/puzzleTheme/sv-SE.xml +++ b/translation/dest/puzzleTheme/sv-SE.xml @@ -4,6 +4,8 @@ En bonde som promoverar eller hotar att promovera är nyckeln till taktiken. Fördel Ta chansen att få en avgörande fördel. (200cp ≤ eval ≤ 600cp) + Anastasias matt + En springare och ett torn samarbetar för att fånga motståndarkungen i ett hörn av brädet. Attackera f2 eller f7 En attack som fokuserar på f2 eller f7 bonden, som i stekt leveröppning. Attraktion @@ -18,6 +20,7 @@ Ta en pjäs som försvarar av en annan pjäs, så att du kan ta den nu oförsvarade pjäsen i nästa drag. Krossa Upptäck motståndare blunder för att få en förkrossande fördel. (eval ≥ 600cp) + En dam levererar matt till en närliggande kung, vars enda två flyktrutor blockeras av egna pjäser. Utjämning Kom tillbaka från en förlorad position och säkra en remi eller en utjämnad position. (eval ≤ 200cp) Kungsflygelattack @@ -41,17 +44,18 @@ Ett drag där den rörda pjäsen attackerar två motståndarpjäser samtidigt. Ogarderad pjäs En taktik som drar fördel av att en motståndares pjäs är oförsvarad eller otillräckligt försvarad och fri att slå. + Schackmatta med ett torn, en springare och en bonde tillsammans med en motståndarbonde för att begränsa motståndarkungens undanflykt. Interference Placerar en pjäs mellan två motståndares pjäser för att lämna en eller båda motståndarpjäserna ogarderade, till exempel springare på en garderad ruta mellan två torn. Mellandrag - Istället för att spela det förväntade draget, görs ett annat drag som utgör ett omedelbart hot som motståndaren måste svara på. Även känt som \"Zwischenzug\" eller \"Intermezzo\". - Springare-slutspel + Istället för att spela det förväntade draget, görs ett annat drag som utgör ett omedelbart hot som motståndaren måste svara på. Även känt som \"zwischenzug\" eller \"intermezzo\". + Springareslutspel Ett slutspel med bara springare och bönder. Långa schackproblem Tre drag för att vinna. - Mästarpartier + Mästarpartier Schackproblem från partier som spelats av spelare med mästartitel. - Mästare mot Mästare-partier + Mästare mot mästare partier Schackproblem från partier som spelats av två spelare med mästartitel. Matt Vinn partiet med stil. @@ -77,11 +81,11 @@ En taktik som involverar fastlåsning, där en attackerad pjäs inte kan flyttas utan att exponera en mer värdefull pjäs. Promovering En taktik som bygger på en bonde som förvandlas eller hotar att förvandlas. - Dam-slutspel + Damslutspel Ett slutspel med endast dam och bönder. Dam och torn Ett slutspel med endast damer, torn och bönder. - Attack på damsidan + Damflygelattack En attack mot motståndarens kung, efter att motståndaren gjort kort rockad. Tyst drag Ett drag som inte gör en schackar eller slår, men förbereder ett oundvikligt hot för ett senare drag. @@ -95,11 +99,11 @@ En taktik som innebär att en värdefull pjäs attackeras för att tvinga bort den från en pjäs bakom som då kan slås eller attackeras. Motsatsen till fastlåsning. Kvävmatt Schack matt av en springare där den schackade kungen inte kan röra sig eftersom den är instängd (eller kvävd) av sina egna pjäser. - Super GM-partier + Super GM-partier Schackproblem från partier spelade av de bästa spelarna i världen. Fångad pjäs En pjäs kan inte komma undan eftersom den inte kan flytta till någon bra ruta. - Underförvandling + Underpromovering Förvandling till springare, löpare eller torn. Mycket långa schackproblem Fyra eller fler drag för att vinna. diff --git a/translation/dest/puzzleTheme/tr-TR.xml b/translation/dest/puzzleTheme/tr-TR.xml index e2606ae514..99e455b4a8 100644 --- a/translation/dest/puzzleTheme/tr-TR.xml +++ b/translation/dest/puzzleTheme/tr-TR.xml @@ -4,6 +4,10 @@ Terfi eden veya terfi etmek üzere olan bir piyon taktik bilgisinin olmazsa olmazıdır. Avantaj yakala Mutlak bir üstünlük kazanma şansını yakala. (200sp ≤ analiz ≤ 600sp) + Anastasia matı + Bir atın yardımını alan kale veya vezir, rakip şahı kendi taşları ve tahtanın kenarı arasında tuzağa düşürür. + Arap matı + At ile kalenin, rakip şahı tahtanın köşesine sıkıştırdığı matlar. Saldırı: f2 ve f7 Kızarmış karaciğer açılışında olduğu gibi f2 veya f7 karesindeki piyonları hedef alan saldırılar. Tehlikeli sular @@ -12,12 +16,18 @@ Kendi taşları arkasında sıkışıp kalmış şaha koridorun kapısını göster. Fil oyunsonu Sadece fil ve piyon içeren oyunsonu. + Boden matı + İki fil, kendi taşları tarafından kısıtlanan şaha farklı açılardan girişerek onu mat eder. Rok Şahı güvene alırken kaleni saldırıya hazırla. Savunmayı baltala Bir taşı savunan diğer bir taşı ortadan kaldırarak savunmasız kalan taşı sonraki hamlede ele geçir. Ezici üstünlük Rakibin vahim hatasını yakalayarak ezici bir üstünlük elde et. (analiz ≥ 600sp) + İki fil matı + Yan yana konuşlanmış iki fil, kendi taşları tarafından kısıtlanmış şahı mat eder. + Kurtağzı matı + İki kaçış yolu da kendi taşlarınca kapalı olan şah, hemen çaprazına konuşlanan vezir tarafından mat edilir. Eşitlik Kaybeden bir durumdan paçayı kurtararak beraberlik veya dengeli bir pozisyon elde et. (analiz ≤ 200sp) Şah tarafına saldırı @@ -41,6 +51,8 @@ Bir taşın aynı anda iki rakip taşa saldırdığı hamleler. Taş düşürme Savunmasız veya yeterince korunmayan rakip taşların kol gezdiği taktikler. + Kanca matı + Kale, at ve piyonla birlikte rakip şahın kaçış yolunu kapatan düşman piyonla yapılan bir mat. Müdahale Rakip taşların arasına kendi taşını koyarak rakibin bir taşını ya da iki taşını da savunmasız bırak. Rakibin iki kalesinin arasındaki güvenli bir kareye atı oynamak gibi. Ara hamle @@ -49,9 +61,9 @@ Sadece at ve piyon içeren oyunsonu. Uzun bulmaca Üç hamlede kazanç. - Ustaların oyunları + Ustaların oyunları Unvanlı oyuncuların oyunlarından bulmacalar. - Ustaların ustalarla oynadığı oyunlar + Ustaların ustalarla oynadığı oyunlar Unvanlı iki oyuncunun oyunlarından bulmacalar. Mat Oyunu tarz ile kazanın. @@ -95,7 +107,7 @@ Değerli bir taşın saldırı altında olduğu, hareketi hâlinde ise arkasındaki daha düşük değerli bir taşın düşeceği ya da tehlikeye gireceği motifler. Bir nevi açmazın tersi. Boğmaca Matı Kendi taşları tarafından çevrelendiği (ya da boğulduğu) için hareket edemeyen şahın at ile mat edildiği pozisyonlar. - Süper GM\'lerin oyunları + Süper GM\'lerin oyunları Dünyanın en iyi oyuncularının oyunlarından bulmacalar. Tuzağa düşmüş taş Gidecek güvenli bir kare kalmadığı için kaçacak yerleri olmayan taşlar. diff --git a/translation/dest/puzzleTheme/uk-UA.xml b/translation/dest/puzzleTheme/uk-UA.xml index cabf2230d9..2e2ed86830 100644 --- a/translation/dest/puzzleTheme/uk-UA.xml +++ b/translation/dest/puzzleTheme/uk-UA.xml @@ -4,6 +4,8 @@ Пішак, що загрожує перетворенню, є ключовим для тактики. Перевага Скористайтесь шансом отримати вирішальну перевагу. (200cp ≤ eval ≤ 600cp) + Мат Анастасії + Кінь з турою або ферзем ловлять короля між краєм дошки та власною фігурою. Атака f2 або f7 Атака, спрямована на f2 або f7, наприклад, як у дебюті смаженої печінки. Заманювання diff --git a/translation/dest/puzzleTheme/vi-VN.xml b/translation/dest/puzzleTheme/vi-VN.xml index 57319d518f..a5600c1d68 100644 --- a/translation/dest/puzzleTheme/vi-VN.xml +++ b/translation/dest/puzzleTheme/vi-VN.xml @@ -4,6 +4,8 @@ Một quân tốt phong cấp hay đe dọa phong cấp là chìa khóa của chiến thuật. Lợi thế Sử dụng cơ hội của bạn để chiếm lấy lợi thế quyết định. (200cp ≤ đánh giá ≤ 600cp) + Chiếu hết kiểu Anastasia + Một quân mã phối hợp cùng quân xe hoặc quân hậu để bẫy quân vua đối phương vào thế kẹp giữa cạnh bàn cờ và một quân khác. Tấn công f2 hoặc f7 Một đòn tấn công nhằm vào quân tốt f2 hay f7, ví dụ như trong khai cuộc lá gan rán. Thu hút @@ -41,6 +43,8 @@ Một nước đi mà một quân cờ tấn công hai quân cờ của đối phương cùng lúc. Quân cờ không được bảo vệ Một chiến thuật liên quan đến quân cờ của đối phương không được phòng thủ hoặc phòng thủ không đủ dẫn tới việc có thể ăn quân cờ đấy. + Chiếu kiểu móc + Chiếu tướng hết cờ bằng quân xe, mã, và tốt cùng với một quân tốt đối phương làm chặn đường vua chạy. Giao thoa Di chuyển một quân cờ giữa hai quân cờ đối thủ để một hoặc cả hai quân cờ đối thủ không bị cản trở, chẳng hạn như một quân Mã trên ô vuông được bảo vệ giữa hai quân Xe. Intermezzo @@ -49,9 +53,9 @@ Một thế cờ tàn chỉ có mã và tốt. Câu đố dài Thắng trong ba nước cờ. - Ván đấu cao cấp + Ván đấu cao cấp Câu đố từ các trò chơi do người chơi có tiêu đề (GM, IM, NM, FM) chơi. - Ván đấu giữa 2 kiện tướng + Ván đấu giữa 2 kiện tướng Câu đố từ các trò chơi giữa người chơi có tiêu đề (GM, IM, NM, FM) chơi. Chiếu hết Chiến thắng trò chơi với phong cách. @@ -93,8 +97,9 @@ Thắng trong hai nước cờ. Đòn xiên Một mô típ liên quan tới việc một quân cờ có giá trị cao bị tấn công buộc phải di chuyển khỏi vị trí, dẫn tới một quân cờ giá trị thấp hơn ở phía sau bị tấn công hoặc ăn, ngược lại so với ghim. + Chiếu kiểu kẹt Một nước chiếu hết với quân mã mà trong đó vua đối phương không thể di chuyển vì bị bao vây bởi chính các quân cờ khác của họ. - Ván đấu từ Siêu Đại Kiện Tướng + Ván đấu từ Siêu Đại Kiện Tướng Câu đố từ những ván đấu đã được chơi bởi những kì thủ giỏi nhất trên thế giới. Quân bị kẹt Một quân cờ không thể thoát khỏi việc bị ăn vì nó bị giới hạn các nước đi. diff --git a/translation/dest/search/az-AZ.xml b/translation/dest/search/az-AZ.xml index 01ab207270..79133e7515 100644 --- a/translation/dest/search/az-AZ.xml +++ b/translation/dest/search/az-AZ.xml @@ -1,7 +1,7 @@ Axtar - Mütərəqqi axtarış + Ətraflı Axtarış %s şahmat oyunu içində axtar %s şahmat oyunu içində axtar diff --git a/translation/dest/search/tr-TR.xml b/translation/dest/search/tr-TR.xml index 8d0c1bb415..9e8943c07a 100644 --- a/translation/dest/search/tr-TR.xml +++ b/translation/dest/search/tr-TR.xml @@ -1,7 +1,7 @@ Ara - Detaylı Arama + Gelişmiş Arama %s satranç maçı içinde ara %s satranç maçı içinde ara @@ -23,5 +23,5 @@ Tarih Sıralama ölçütü Analiz - Sadece bilgisayar analizi müsait olan oyunlar + Sadece bilgisayar analizi yapılmış oyunları göster diff --git a/translation/dest/site/af-ZA.xml b/translation/dest/site/af-ZA.xml index 201331ed72..7b5167d6d8 100644 --- a/translation/dest/site/af-ZA.xml +++ b/translation/dest/site/af-ZA.xml @@ -38,7 +38,7 @@ Jou opponent het die spel verlaat. Jy kan die oorwinning in %s sekonde eis. Jou opponent het die spel verlaat. Jy kan die oorwinning in %s sekondes eis. - Ander speler het spel verlaat. Jy kan \'n oorwinning verklaar, gelykspel eis, of wag. + Ander speler het die spel verlaat. Jy kan ’n oorwinning verklaar, gelykspel eis, of wag. Laat teenstander oorgee Eis die oorwinning Eis \'n gelykop @@ -49,7 +49,7 @@ Wit het die spel verlaat Swart het die spel verlaat Deel die URL vir toeskouers - Die rekenaar analise het misluk + Die rekenaaranalise het misluk Beskou die rekenaar analise Versoek \'n rekenaar analise Rekenaar analise diff --git a/translation/dest/site/an-ES.xml b/translation/dest/site/an-ES.xml index 938908319a..301f1cddf3 100644 --- a/translation/dest/site/an-ES.xml +++ b/translation/dest/site/an-ES.xml @@ -9,7 +9,7 @@ Lo tuyo redolín %1$s libel %2$s Libel - Fuerza + Fuerza Amostrar/Amagar chat Activar/Desactivar sons Chat diff --git a/translation/dest/site/az-AZ.xml b/translation/dest/site/az-AZ.xml index 306e221da1..0c2deca88c 100644 --- a/translation/dest/site/az-AZ.xml +++ b/translation/dest/site/az-AZ.xml @@ -12,7 +12,7 @@ Güc Söhbəti aç/bağla Səsi aç/bağla - Söhbət + Mesaj göndər Tərk et Mat Pat diff --git a/translation/dest/site/cy-GB.xml b/translation/dest/site/cy-GB.xml index 771b4fa1f9..ce61cf990c 100644 --- a/translation/dest/site/cy-GB.xml +++ b/translation/dest/site/cy-GB.xml @@ -9,7 +9,7 @@ Dy dro di %1$s safon %2$s Safon - Cryfder + Cryfder Toglo sgwrs Toglo sain Sgwrsio diff --git a/translation/dest/site/de-DE.xml b/translation/dest/site/de-DE.xml index 87bcf17cf6..2583741bde 100644 --- a/translation/dest/site/de-DE.xml +++ b/translation/dest/site/de-DE.xml @@ -9,7 +9,7 @@ Du bist am Zug %1$s Stufe %2$s Stufe - Stärke + Stärke Chat ein-/ausblenden Ton ein-/ausschalten Chat @@ -328,9 +328,9 @@ Du bist nicht in Team %s Zurück zur Partie Kostenloser Online-Schach-Server. Spiele jetzt auf einer übersichtlichen Benutzeroberfläche Schach! Keine Registrierung und keine Plugins erforderlich, komplett ohne Werbung. Spiele gegen den Computer, Freunde oder zufällige Gegner! - %1$s trat der Gruppe %2$s bei + %1$s trat der Gruppe %2$s bei %1$s hat das Team %2$s gegründet - %s startete einen Stream + %s hat einen Stream gestartet Durchschnittswertung Ort Partien filtern @@ -449,7 +449,7 @@ Profiltext Land Vielen Dank! - Social-Media Links + Social-Media-Links Inline-Notation Lichess-TV anschauen Zuletzt auf Lichess TV diff --git a/translation/dest/site/el-GR.xml b/translation/dest/site/el-GR.xml index 7dc33fc298..f1b7029d98 100644 --- a/translation/dest/site/el-GR.xml +++ b/translation/dest/site/el-GR.xml @@ -9,7 +9,7 @@ Η σειρά σας %1$s επιπέδου %2$s Επίπεδο - Ισχύς + Ισχύς Εναλλαγή προβολής της συνομιλίας Εναλλαγή ήχου Συνομιλία @@ -328,7 +328,7 @@ Δεν είστε στην ομάδα %s Επιστρέψτε στο παιχνίδι Δωρεάν διαδικτυακό παιχνίδι Σκακιού. Παίξτε Σκάκι τώρα σε καθαρό γραφικό περιβάλλον. Χωρίς εγγραφές, χωρίς διαφημίσεις, χωρίς πρόσθετα. Παίξτε Σκάκι με τον υπολογιστή, με φίλους ή με τυχαίους αντιπάλους. - Ο %1$s έθεσε συμμετοχή στην ομάδα %2$s + Ο/Η %1$s έγινε μέλος της ομάδα %2$s Ο %1$s δημιούργησε την ομάδα %2$s %s ξεκίνησε να μεταδίδει Μέσος όρος βαθμολογίας diff --git a/translation/dest/site/eo-UY.xml b/translation/dest/site/eo-UY.xml index 2f47249c42..524e2a7d3a 100644 --- a/translation/dest/site/eo-UY.xml +++ b/translation/dest/site/eo-UY.xml @@ -9,7 +9,7 @@ Via vico %1$s nivelo %2$s Nivelo - Forto + Forto Baskuligi la babilejon (Mal)ŝalti sonon Babilejo diff --git a/translation/dest/site/es-ES.xml b/translation/dest/site/es-ES.xml index ba2c4e4582..62e70850b4 100644 --- a/translation/dest/site/es-ES.xml +++ b/translation/dest/site/es-ES.xml @@ -9,7 +9,7 @@ Tu turno %1$s nivel %2$s Nivel - Fuerza + Fuerza Mostrar/Ocultar chat Activar/Desactivar sonido Chat diff --git a/translation/dest/site/eu-ES.xml b/translation/dest/site/eu-ES.xml index 1ad56616d5..034cb11d10 100644 --- a/translation/dest/site/eu-ES.xml +++ b/translation/dest/site/eu-ES.xml @@ -9,7 +9,7 @@ Zure txanda %1$s, %2$s. maila Maila - Indarra + Indarra Txata agertu Soinua Txata diff --git a/translation/dest/site/fa-IR.xml b/translation/dest/site/fa-IR.xml index d141613cd1..0e03c31421 100644 --- a/translation/dest/site/fa-IR.xml +++ b/translation/dest/site/fa-IR.xml @@ -9,7 +9,7 @@ نوبت شماست %1$s سطح %2$s سطح - قدرت + قدرت گپ روشن/خاموش صدا روشن/خاموش گپ diff --git a/translation/dest/site/fi-FI.xml b/translation/dest/site/fi-FI.xml index eb98d4cf0c..ace05527e7 100644 --- a/translation/dest/site/fi-FI.xml +++ b/translation/dest/site/fi-FI.xml @@ -9,7 +9,7 @@ Sinun vuorosi %1$s taso %2$s Taso - Vahvuus + Vahvuus Keskustelu päälle / pois Ääni päälle / pois Keskustelu diff --git a/translation/dest/site/fo-FO.xml b/translation/dest/site/fo-FO.xml index 0da2124a37..2f93d67985 100644 --- a/translation/dest/site/fo-FO.xml +++ b/translation/dest/site/fo-FO.xml @@ -9,7 +9,7 @@ Tú eigur leik %1$s stig %2$s Stig - Styrki + Styrki Goym/Vís kjatt Slá ljóð til/frá Kjatta diff --git a/translation/dest/site/ga-IE.xml b/translation/dest/site/ga-IE.xml index 75a1efc064..286c3ce9ec 100644 --- a/translation/dest/site/ga-IE.xml +++ b/translation/dest/site/ga-IE.xml @@ -278,6 +278,7 @@ Tá rátáil %s sealadach agat Tá do rátáil %1$s (%2$s) ró-ard Tá an rátáil seachtainiúil %1$s is fearr agat (%2$s) ró-ard + Tá do rátáil %1$s (%2$s) ró-íseal Caithfidh tú a bheith i bhfoireann %s Níl tú sa bhfoireann %s Ar ais don chluiche @@ -389,6 +390,7 @@ An chéad chomórtas %s eile: Meanghrádú na gcéilí imeartha Baill amháin + Eagarthóir boird Oscailtí a bhfuil tóir orthu Suíomh tosaithe Sábhail suíomh @@ -583,6 +585,7 @@ Oscailt Lár an chluiche Cor deiridh + Ní ghlacann %s le dúshláin ach amháin ó chairde. Imir %s Tá brón orainn :( Bhí orainn thú a chur ar fionraí ar feadh tréimhse. @@ -593,9 +596,15 @@ Imir gach cluiche a chuireann tú tús leis. Déan iarracht gach cluiche a imríonn tú a bhuachaint (nó comhscór a fháil ar a laghad). Éirigh as cluichí caillte (ná lig don clog rith amach). + Aontaím nach nglacfaidh mé le cabhair ar bith i rith mo chluichí (ó ríomhaire fichille, ó leabhar, ó bhunachar sonraí nó ó dhuine eile). + Aontaím go léireoidh mé meas d\'imreoirí eile i gcónaí. Athraigh Clasaiceach Cluichí ar luas gan chiall; níos lú ná 30 soicind Tábhachtach sna CCana + Foireann %1$s + Níor glacadh leis an dúshlán + Glacadh leis an dúshlán! + Dúshlán curtha ar ceal. diff --git a/translation/dest/site/hi-IN.xml b/translation/dest/site/hi-IN.xml index fd49ce61b2..d69fb2564f 100644 --- a/translation/dest/site/hi-IN.xml +++ b/translation/dest/site/hi-IN.xml @@ -9,7 +9,7 @@ आपकी चाल %1$s स्तर %2$s वाला स्तर - ताक़त + ताक़त चैट को टोग्ल करें ध्वनि को टोग्ल करें बातचीत diff --git a/translation/dest/site/hu-HU.xml b/translation/dest/site/hu-HU.xml index 9fcff25cd4..a61f6d88ad 100644 --- a/translation/dest/site/hu-HU.xml +++ b/translation/dest/site/hu-HU.xml @@ -9,7 +9,7 @@ Te következel %1$s szint: %2$s Szint - Erősség + Erősség Csevegő ki-be Hang ki-be Csevegés diff --git a/translation/dest/site/hy-AM.xml b/translation/dest/site/hy-AM.xml index 463596855a..c409fdb2ec 100644 --- a/translation/dest/site/hy-AM.xml +++ b/translation/dest/site/hy-AM.xml @@ -9,7 +9,7 @@ Ձեր հերթն է %1$s, մակարդակ՝ %2$s Մակարդակ - Ուժ + Ուժ Թաքցնել/ցուցադրել չաթի պատուհանը Անջատել/Միացնել ձայնը Չաթ diff --git a/translation/dest/site/ia-IA.xml b/translation/dest/site/ia-IA.xml index 4366792c19..26cb599227 100644 --- a/translation/dest/site/ia-IA.xml +++ b/translation/dest/site/ia-IA.xml @@ -9,7 +9,7 @@ Tu torno %1$s nivello %2$s Nivello - Fortia + Fortia Activar/disactivar le chat Activar/disactivar sono Chat diff --git a/translation/dest/site/it-IT.xml b/translation/dest/site/it-IT.xml index a8cb489f1d..39fbb409be 100644 --- a/translation/dest/site/it-IT.xml +++ b/translation/dest/site/it-IT.xml @@ -9,7 +9,7 @@ Tocca a te %1$s livello %2$s Livello - Forza + Forza Attiva/disattiva la chat Attiva/disattiva audio Chat diff --git a/translation/dest/site/ja-JP.xml b/translation/dest/site/ja-JP.xml index b76ab6d9e9..a49ceff878 100644 --- a/translation/dest/site/ja-JP.xml +++ b/translation/dest/site/ja-JP.xml @@ -9,6 +9,7 @@ あなたの手番です %1$s レベル %2$s レベル + 強さ チャットのオン・オフ 音声のオン・オフ チャット @@ -106,7 +107,7 @@ 最善手を表示 評価値を表示 解析ライン数 - CPU数 + スレッド数 メモリ 無限解析 探索手数の制限をなくし最大限の解析を行なう @@ -304,7 +305,7 @@ チーム %s に入っていません ゲームに戻る 無料オンラインチェス。簡素なインターフェースですぐに対局を。登録不要、広告なし、プラグイン不要。AIと、友達と、知らない相手とも対局できます。 - %1$s がチーム %2$s に参加 + %1$s がチーム %2$s に参加 %1$s がチーム %2$s を作成 %s が配信を開始 平均レーティング diff --git a/translation/dest/site/kk-KZ.xml b/translation/dest/site/kk-KZ.xml index 4f1e3f4fd6..b126332151 100644 --- a/translation/dest/site/kk-KZ.xml +++ b/translation/dest/site/kk-KZ.xml @@ -9,7 +9,7 @@ Сіз жүресіз %1$s деңгейі: %2$s Деңгей - Күші + Күші Чат батырмасы Дыбыс батырмасы Чат diff --git a/translation/dest/site/ko-KR.xml b/translation/dest/site/ko-KR.xml index 87acb3ba38..c98d6c5ea6 100644 --- a/translation/dest/site/ko-KR.xml +++ b/translation/dest/site/ko-KR.xml @@ -9,7 +9,7 @@ 내 차례 %1$s 레벨 %2$s 레벨 - 강도 + 강도 채팅 끄기/켜기 음소거/음소거 해제 채팅 diff --git a/translation/dest/site/lt-LT.xml b/translation/dest/site/lt-LT.xml index eb433ccf48..887a5f1a24 100644 --- a/translation/dest/site/lt-LT.xml +++ b/translation/dest/site/lt-LT.xml @@ -9,7 +9,7 @@ Jūsų ėjimas %1$s lygis Nr. %2$s Lygis - Stiprumas + Stiprumas Įjungti / išjungti pokalbį Įjungti / išjungti garsus Pokalbis diff --git a/translation/dest/site/lv-LV.xml b/translation/dest/site/lv-LV.xml index 973ae24cab..6d5b005e0b 100644 --- a/translation/dest/site/lv-LV.xml +++ b/translation/dest/site/lv-LV.xml @@ -9,7 +9,7 @@ Jūsu gājiens %1$s %2$s. līmenis Līmenis - Stiprums + Stiprums Ieslēgt/izslēgt sarunu Ieslēgt/Izslēgt skaņu Saruna diff --git a/translation/dest/site/nb-NO.xml b/translation/dest/site/nb-NO.xml index 63ca29f5cf..6043f39788 100644 --- a/translation/dest/site/nb-NO.xml +++ b/translation/dest/site/nb-NO.xml @@ -9,7 +9,7 @@ Ditt trekk %1$s på nivå %2$s Nivå - Styrke + Styrke Chat av/på Lyd av/på Chat diff --git a/translation/dest/site/nl-NL.xml b/translation/dest/site/nl-NL.xml index aace2e45d8..7be1e417fb 100644 --- a/translation/dest/site/nl-NL.xml +++ b/translation/dest/site/nl-NL.xml @@ -9,7 +9,7 @@ U bent aan zet %1$s niveau %2$s Niveau - Sterkte + Sterkte Chat aan-/uitzetten Geluid aan-/uitzetten Chat diff --git a/translation/dest/site/nn-NO.xml b/translation/dest/site/nn-NO.xml index 343c2aae02..8bc06d96b5 100644 --- a/translation/dest/site/nn-NO.xml +++ b/translation/dest/site/nn-NO.xml @@ -9,7 +9,7 @@ Ditt trekk %1$s på nivå %2$s Nivå - Styrke + Styrke Chat av/på Lyd av/på Praterom diff --git a/translation/dest/site/pl-PL.xml b/translation/dest/site/pl-PL.xml index caac7268d8..7b6313d35c 100644 --- a/translation/dest/site/pl-PL.xml +++ b/translation/dest/site/pl-PL.xml @@ -9,7 +9,7 @@ Twój ruch %1$s poziom %2$s Poziom - Siła + Siła Pokaż/ukryj rozmowy Włącz/wyłącz dźwięk Czat diff --git a/translation/dest/site/ru-RU.xml b/translation/dest/site/ru-RU.xml index 34519ca62f..f3d6a9aaa9 100644 --- a/translation/dest/site/ru-RU.xml +++ b/translation/dest/site/ru-RU.xml @@ -9,7 +9,7 @@ Ваш ход %1$s уровня %2$s Уровень - Сложность + Сложность Показывать окно чата Вкл/выкл звук Отправить сообщение diff --git a/translation/dest/site/sk-SK.xml b/translation/dest/site/sk-SK.xml index 0b750056b8..115cc211c9 100644 --- a/translation/dest/site/sk-SK.xml +++ b/translation/dest/site/sk-SK.xml @@ -9,7 +9,7 @@ Ste na ťahu %1$s úrovne %2$s Úroveň - Sila + Sila Prepínač okna rozhovoru Prepínač zvuku Rozhovor @@ -683,7 +683,7 @@ Simultánky sú vždy nebodované. Odvety, vrátenie ťahu a \"pridávania času\" sú zakázané. Vytvoriť Po vytvorení simultánky, môžete hrať s niekoľkými hráčmi naraz. - Ak vyberiete viacero variantov, každý hráč si môže vybrať ktorý bude hrať. + Ak vyberiete viacero variantov, každý hráč si môže vybrať, ktorý bude hrať. Nastavenie (Fisherových) hodín. Čím viac súperov, tým viac času budete potrebovat. Môžete si pridať dodatočný čas k vašim hodinám pre zlepšenie behu simultánky. Dotatočný čas pre hostiteľa. @@ -712,9 +712,9 @@ Tento týždeň hralo %2$s %1$s hráčov. Vaše %1$s hodnotenie je %2$s. - Ste lepší než %1$s z %2$s hráčov + Ste lepší než %1$s z %2$s hráčov. %1$s je lepší ako %2$s z %3$s hráčov. - Nemáte určené %s hodnotenie. + Nemáte ustálené %s hodnotenie. Váš rating Kumulatívne Glicko-2 rating @@ -724,7 +724,7 @@ Poslali sme email na %s. Kliknite na link v emaili na obnovenie hesla. Registráciou súhlasíte aby ste boli viazaný s našimi %s. Prečítajte si o našej %s. - Internetové oneskorenie medzi Vami a lichess + Internetové oneskorenie medzi Vami a lichessom Čas na spracovanie ťahu na lichess serveri Stiahnuť s poznámkami Stiahnuť čisté PGN diff --git a/translation/dest/site/sl-SI.xml b/translation/dest/site/sl-SI.xml index 211fbf3836..301bdfcce7 100644 --- a/translation/dest/site/sl-SI.xml +++ b/translation/dest/site/sl-SI.xml @@ -9,7 +9,7 @@ Ti si na potezi %1$s, stopnja: %2$s Stopnja - Moč + Moč Preklopi klepet Preklopi zvok Klepet diff --git a/translation/dest/site/sr-SP.xml b/translation/dest/site/sr-SP.xml index c68787858c..613b8971da 100644 --- a/translation/dest/site/sr-SP.xml +++ b/translation/dest/site/sr-SP.xml @@ -9,7 +9,7 @@ Ваш потез %1$s ниво %2$s Ниво - Снага + Снага Укључи/искључи ћаскање Укључи/искључи звук Ћаскање diff --git a/translation/dest/site/tr-TR.xml b/translation/dest/site/tr-TR.xml index 9f87236f24..94dff48669 100644 --- a/translation/dest/site/tr-TR.xml +++ b/translation/dest/site/tr-TR.xml @@ -9,7 +9,7 @@ Sıra sizde %1$s seviye %2$s Seviye - Kuvvet + Kuvvet Sohbeti aç/kapat Sesi aç/kapat Sohbet @@ -482,7 +482,7 @@ Cevap yaz Mesaj Bildiri oluştur - Bu kullanıcıyı raporla + Kullanıcı ihbar et Kullanıcı Sebep Problem nedir? diff --git a/translation/dest/site/uk-UA.xml b/translation/dest/site/uk-UA.xml index a4026df8f4..d3a785aec0 100644 --- a/translation/dest/site/uk-UA.xml +++ b/translation/dest/site/uk-UA.xml @@ -9,7 +9,7 @@ Ваш хід %1$s рівень %2$s Рівень - Рівень + Рівень Вимк./увімк. чат Вимк./увімк. звук Чат diff --git a/translation/dest/streamer/vi-VN.xml b/translation/dest/streamer/vi-VN.xml index d5877ec5cc..0fe215e079 100644 --- a/translation/dest/streamer/vi-VN.xml +++ b/translation/dest/streamer/vi-VN.xml @@ -22,6 +22,7 @@ Nhận được biểu tượng streamer bốc lửa trong trang cá nhân Lichess của bạn. Được đẩy lên đầu tiên trong danh sách các streamer. Thông báo cho các người theo dõi Lichess của bạn. + Hiển thị stream của bạn trong trò chơi, giải đấu và nghiên cứu của bạn. Stream của bạn đã được phê duyệt. Stream của bạn đang được quản trị viên đánh giá. Hãy điền thông tin của bạn và tải lên một hình ảnh. @@ -49,4 +50,6 @@ Nếu stream của bạn dùng tiếng Anh, bạn không cần thêm thẻ ngôn Xóa hình ảnh Kích cỡ tối đa: %s Cài phần mềm chặn mã độc! + An toàn trước quảng cáo và trình theo dõi tấn công Twitch và YouTube. +Lichess đề xuất uBlock Origin miễn phí và mã nguồn mở. diff --git a/translation/dest/team/az-AZ.xml b/translation/dest/team/az-AZ.xml index 57630e2005..330a48ec15 100644 --- a/translation/dest/team/az-AZ.xml +++ b/translation/dest/team/az-AZ.xml @@ -4,13 +4,13 @@ Komandalar %s üzvləri - %s üzvləri + %s üzv Bütün komandalar Yeni komanda - Mənim komandalarım + Komandalarım Komanda tapılmadı - komandaya daxil ol + Komandaya qoşul komandadan ayrıl Qəbul istəklərini əl ilə nəzərdən keçirin İşarəlidirsə, oyunçuların komandaya qoşulmaq üçün bir tələb yazması lazımdır, bu təklifi rədd edə və ya qəbul edə bilərsiniz. @@ -18,7 +18,7 @@ Komanda lideri Komanda liderləri - Ən yaxşı oyunçular komandası + Ən yaxşı oyunçular Son qoşulan üzvlər Kimisə komandadan qov Kimi komandadan qovmaq istəyirsiniz? diff --git a/translation/dest/team/ca-ES.xml b/translation/dest/team/ca-ES.xml index 615bf9e61f..a2fbbf53a7 100644 --- a/translation/dest/team/ca-ES.xml +++ b/translation/dest/team/ca-ES.xml @@ -12,9 +12,11 @@ No s\'ha trobat cap equip Uneix-te a l\'equip Abandona l\'equip + Comprovar manualment peticions d\'admissió + Si està marcat, els jugadors necessitaran fer una petició per unirse a l\'equip, la qual pots acceptar o rebutjar. - Capità de l\'equip - Capitans de l\'equip + Líder de l\'equip + Líders de l\'equip Millors jugadors de l\'equip Membres recents de l\'equip @@ -41,4 +43,8 @@ Els jugadors que no els agrada rebre missatges podrien abandonar l\'equip.Xat de capitans Eliminar equip Elimina l\'equip definitivament. + Contrasenya de l\'equip + (Opcional) Una contrasenya que els nous membres han de saber per unirse a l\'equip. + Contrasenya d\'equip incorrecta. + Aquest equip ja existeix. diff --git a/translation/dest/team/sk-SK.xml b/translation/dest/team/sk-SK.xml index 6b9180ead4..cc9df323fb 100644 --- a/translation/dest/team/sk-SK.xml +++ b/translation/dest/team/sk-SK.xml @@ -47,4 +47,8 @@ Hráči, ktorí nemajú radi prijímanie vašich správ, môžu opustiť váš t Čet lídrov Rozpustiť tím Nevratne rozpustí tím. + Tímové heslo + (Voliteľné) Heslo, ktoré musia noví členovia vedieť, aby sa mohli pripojiť do tímu. + Nesprávne tímové heslo. + Tento tím už existuje. diff --git a/translation/dest/team/tr-TR.xml b/translation/dest/team/tr-TR.xml index fe137cb263..522d190c84 100644 --- a/translation/dest/team/tr-TR.xml +++ b/translation/dest/team/tr-TR.xml @@ -3,11 +3,11 @@ Takım Takımlar - %s üyeler - %s üye + %s üye + %s üyeler Tüm takımlar - Yeni Takım + Yeni takım Takımlarım Takım bulunamadı Takıma katıl diff --git a/translation/dest/tfa/sk-SK.xml b/translation/dest/tfa/sk-SK.xml index e315244b7b..a880003455 100644 --- a/translation/dest/tfa/sk-SK.xml +++ b/translation/dest/tfa/sk-SK.xml @@ -1,10 +1,11 @@ - Dvojfaktorové overovanie - Dvojfaktorové overenie pridá ďalšiu vrstvu bezpečnosti k vášmu účtu. - Stiahnite is aplikáciu pre dvojfaktorové overenie, napríklad Google Authenticator pre %1$s alebo %2$s. + Dvojstupňové overenie + Dvojstupňové overenie pridá ďalšiu vrstvu bezpečnosti k vášmu účtu. + Stiahnite is aplikáciu pre dvojstupňové overenie, napríklad Google Authenticator pre %1$s alebo %2$s. Oskenujte QR kód s aplikáciou. Zadajte vaše heslo a overovací kód vygenerovaný aplikáciou, na dokončenie nastavenia. Overovací kód budete potrebovať pre každé prihlásenie. + Ak nemôžete naskenovať kód, zadajte tajný %s do Vašej aplikácie. Overovací kód Poznámka: Ak stratíte prístup k vašim dvojfaktorovým overovacím kódom, môžete použiť obnovenie hesla cez email. Zapnúť dvojfaktorové overovanie @@ -12,4 +13,5 @@ Dvojfaktorové overovanie je zapnuté Potrebujete vaše heslo a overovací kód pre vašu overovaciu aplikáciu na vypnutie dvojfaktorového overovania. Ak stratíte prístup k vašim overovacím kódom, môžete tiež použiť obnovenie hesla cez email. + Otvorte aplikáciu na dvojstupňové overenie na Vašom zariadení, a zistite Váš overovací kód na overenie Vašej identity. diff --git a/translation/dest/tourname/de-DE.xml b/translation/dest/tourname/de-DE.xml index f271153799..f71eede888 100644 --- a/translation/dest/tourname/de-DE.xml +++ b/translation/dest/tourname/de-DE.xml @@ -37,7 +37,7 @@ Schnellschach Schild-Arena Schnellschach Schild Klassische Schild-Arena - Klassik Schild + Klassisches Schild %s Schild-Arena %s Schild %s Schnellschach-Arena diff --git a/translation/dest/tourname/vi-VN.xml b/translation/dest/tourname/vi-VN.xml index e0d180e1a2..2808238f01 100644 --- a/translation/dest/tourname/vi-VN.xml +++ b/translation/dest/tourname/vi-VN.xml @@ -36,5 +36,14 @@ %s hàng năm Giải đấu Lá chắn Cờ nhanh Lá chắn Cờ nhanh + Đấu trường Khiên Cổ điển + Khiên Cổ điển + %s Giải đấu Khiên + %s Khiên + %s Giải đấu cờ nhanh + %s Cờ nhanh + %s Giải đấu đội + Giải đấu %s chuyên nghiệp + Chuyên nghiệp %s Đấu trường %s From 5d065a4a947ff133e0d70ae8c8f0600e0e38ca2f Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Wed, 20 Jan 2021 08:30:25 +0100 Subject: [PATCH 13/64] remove debug --- modules/study/src/main/StudyMultiBoard.scala | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/study/src/main/StudyMultiBoard.scala b/modules/study/src/main/StudyMultiBoard.scala index 0ba4f3fa8e..b04cb8cf84 100644 --- a/modules/study/src/main/StudyMultiBoard.scala +++ b/modules/study/src/main/StudyMultiBoard.scala @@ -78,7 +78,6 @@ final class StudyMultiBoard( ) } .map { r => - r.map(lila.db.BSON.debug).foreach(println) for { doc <- r id <- doc.getAsOpt[Chapter.Id]("_id") From ae6532ce1b35fa70b7b0699a879dc98efbb33d52 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Wed, 20 Jan 2021 09:42:25 +0100 Subject: [PATCH 14/64] fix i18n in contact page --- app/views/site/contact.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/site/contact.scala b/app/views/site/contact.scala index eae93342f8..eef633814a 100644 --- a/app/views/site/contact.scala +++ b/app/views/site/contact.scala @@ -164,7 +164,7 @@ object contact { name(), frag( p( - a(href := routes.Report.form())(toReportAPlayer(name)), + a(href := routes.Report.form())(toReportAPlayer(name())), "." ), p( From 72c9f5943f78596ec124963d8f5b71fd553f0530 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Wed, 20 Jan 2021 09:44:41 +0100 Subject: [PATCH 15/64] puzzle dashboard api wip --- app/controllers/LilaController.scala | 5 ++--- app/controllers/Puzzle.scala | 11 +++++++++-- conf/routes | 2 ++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/app/controllers/LilaController.scala b/app/controllers/LilaController.scala index 54c256f864..0334f5510d 100644 --- a/app/controllers/LilaController.scala +++ b/app/controllers/LilaController.scala @@ -339,12 +339,11 @@ abstract private[controllers] class LilaController(val env: Env) protected def NoPlaybanOrCurrent(a: => Fu[Result])(implicit ctx: Context): Fu[Result] = NoPlayban(NoCurrentGame(a)) - protected def JsonOk[A: Writes](fua: Fu[A]) = + protected def JsonOk[A: Writes](fua: Fu[A]): Fu[Result] = fua map { a => Ok(Json toJson a) as JSON } - protected def JsonOk[A: Writes](a: A): Result = Ok(Json toJson a) as JSON - protected def JsonFuOk[A: Writes](fua: Fu[A]): Fu[Result] = fua map { JsonOk(_) } + protected def JsonOk[A: Writes](a: A): Result = Ok(Json toJson a) as JSON protected def JsonOptionOk[A: Writes](fua: Fu[Option[A]]) = fua flatMap { diff --git a/app/controllers/Puzzle.scala b/app/controllers/Puzzle.scala index 84c6739ebb..b1ecc1391f 100644 --- a/app/controllers/Puzzle.scala +++ b/app/controllers/Puzzle.scala @@ -1,5 +1,6 @@ package controllers +import play.api.data.Form import play.api.libs.json._ import scala.util.chaining._ import views._ @@ -9,10 +10,9 @@ import lila.api.Context import lila.app._ import lila.common.ApiVersion import lila.common.config.MaxPerSecond +import lila.puzzle.PuzzleForm.RoundData import lila.puzzle.PuzzleTheme import lila.puzzle.{ Result, PuzzleRound, PuzzleDifficulty, PuzzleReplay, Puzzle => Puz } -import play.api.data.Form -import lila.puzzle.PuzzleForm.RoundData final class Puzzle( env: Env, @@ -262,6 +262,13 @@ final class Puzzle( .fuccess } + def dashboard(days: Int) = + Scoped(_.Puzzle.Read) { _ => me => + JsonOk { + env.puzzle.dashboard(me, days) map env.puzzle.json.dashboardJson map + } + } + def dashboard(days: Int, path: String = "home") = Auth { implicit ctx => me => get("u") diff --git a/conf/routes b/conf/routes index 28958746cb..bf2acdde91 100644 --- a/conf/routes +++ b/conf/routes @@ -564,6 +564,8 @@ GET /stat/rating/distribution/:perf controllers.Stat.ratingDistribution(perf: GET /api controllers.Api.index POST /api/users controllers.Api.usersByIds GET /api/user/puzzle-activity controllers.Puzzle.activity +GET /api/puzzle/activity controllers.Puzzle.activity +GET /api/puzzle/dashboard controllers.Puzzle.dashboard GET /api/user/:name/tournament/created controllers.Api.tournamentsByOwner(name: String) GET /api/user/:name controllers.Api.user(name: String) GET /api/user/:name/activity controllers.Api.activity(name: String) From d4a136b724beb858da5084761c4c7954600797bc Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Wed, 20 Jan 2021 10:13:06 +0100 Subject: [PATCH 16/64] always send game messages on the same redis channel to avoid race conditions where lila-ws receives versioned game events on several channels and loses ordering --- modules/round/src/main/RoundSocket.scala | 14 ++++++++------ modules/socket/src/main/RemoteSocket.scala | 7 ++++++- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/modules/round/src/main/RoundSocket.scala b/modules/round/src/main/RoundSocket.scala index 82d5c0bafd..bb3390d35b 100644 --- a/modules/round/src/main/RoundSocket.scala +++ b/modules/round/src/main/RoundSocket.scala @@ -75,7 +75,7 @@ final class RoundSocket( val duct = new RoundDuct( dependencies = roundDependencies, gameId = id, - socketSend = send + socketSend = sendForGameId(id) )(ec, proxy) terminationDelay schedule Game.Id(id) duct.getGame dforeach { @@ -160,17 +160,19 @@ final class RoundSocket( private def finishRound(gameId: Game.Id): Unit = rounds.terminate(gameId.value, _ ! RoundDuct.Stop) - private lazy val send: String => Unit = remoteSocketApi.makeSender("r-out", parallelism = 8).apply _ + private lazy val send: Sender = remoteSocketApi.makeSender("r-out", parallelism = 8) + + private lazy val sendForGameId: Game.ID => String => Unit = gameId => msg => send.sticky(gameId, msg) remoteSocketApi.subscribeRoundRobin("r-in", Protocol.In.reader, parallelism = 8)( roundHandler orElse remoteSocketApi.baseHandler ) >>- send(P.Out.boot) Bus.subscribeFun("tvSelect", "roundSocket", "tourStanding", "startGame", "finishGame") { - case TvSelect(gameId, speed, json) => send(Protocol.Out.tvSelect(gameId, speed, json)) + case TvSelect(gameId, speed, json) => sendForGameId(gameId)(Protocol.Out.tvSelect(gameId, speed, json)) case Tell(gameId, e @ BotConnected(color, v)) => rounds.tell(gameId, e) - send(Protocol.Out.botConnected(gameId, color, v)) + sendForGameId(gameId)(Protocol.Out.botConnected(gameId, color, v)) case Tell(gameId, msg) => rounds.tell(gameId, msg) case TellIfExists(gameId, msg) => rounds.tellIfPresent(gameId, msg) case TellMany(gameIds, msg) => rounds.tellIds(gameIds, msg) @@ -179,11 +181,11 @@ final class RoundSocket( case TourStanding(tourId, json) => send(Protocol.Out.tourStanding(tourId, json)) case lila.game.actorApi.StartGame(game) if game.hasClock => game.userIds.some.filter(_.nonEmpty) foreach { usersPlaying => - send(Protocol.Out.startGame(usersPlaying)) + sendForGameId(game.id)(Protocol.Out.startGame(usersPlaying)) } case lila.game.actorApi.FinishGame(game, _, _) if game.hasClock => game.userIds.some.filter(_.nonEmpty) foreach { usersPlaying => - send(Protocol.Out.finishGame(game.id, game.winnerColor, usersPlaying)) + sendForGameId(game.id)(Protocol.Out.finishGame(game.id, game.winnerColor, usersPlaying)) } } diff --git a/modules/socket/src/main/RemoteSocket.scala b/modules/socket/src/main/RemoteSocket.scala index 3a568787ab..373d258c10 100644 --- a/modules/socket/src/main/RemoteSocket.scala +++ b/modules/socket/src/main/RemoteSocket.scala @@ -118,7 +118,8 @@ final class RemoteSocket( final class StoppableSender(conn: StatefulRedisPubSubConnection[String, String], channel: Channel) extends Sender { - def apply(msg: String): Unit = if (!stopping) conn.async.publish(channel, msg).unit + def apply(msg: String): Unit = if (!stopping) conn.async.publish(channel, msg).unit + def sticky(_id: String, msg: String): Unit = apply(msg) } final class RoundRobinSender( @@ -128,6 +129,9 @@ final class RemoteSocket( ) extends Sender { def apply(msg: String): Unit = if (!stopping) conn.async.publish(s"$channel:${msg.hashCode.abs % parallelism}", msg).unit + // use the ID to select the channel, not the entire message + def sticky(id: String, msg: String): Unit = + if (!stopping) conn.async.publish(s"$channel:${id.hashCode.abs % parallelism}", msg).unit } def makeSender(channel: Channel, parallelism: Int = 1): Sender = @@ -195,6 +199,7 @@ object RemoteSocket { trait Sender { def apply(msg: String): Unit + def sticky(_id: String, msg: String): Unit } object Protocol { From 7f4a9bdad7ae07756d7ead5e00d4e191a25fd2f6 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Wed, 20 Jan 2021 10:14:17 +0100 Subject: [PATCH 17/64] New translations: puzzleTheme.xml (Basque) (#7960) --- translation/dest/puzzleTheme/eu-ES.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/translation/dest/puzzleTheme/eu-ES.xml b/translation/dest/puzzleTheme/eu-ES.xml index f12d3f1267..858cbbf1e1 100644 --- a/translation/dest/puzzleTheme/eu-ES.xml +++ b/translation/dest/puzzleTheme/eu-ES.xml @@ -6,6 +6,8 @@ Abantaila osoa lortzen saiatu (200cp ≤ ebaluazioa ≤ 600cp) Anastasiaren matea Zaldun bat eta gaztelua eta damak aurkariaren erregea taularen bazter baten eta bere pieza baten artean harrapatzen dute. + Mate arabiarra + Zaldun eta gaztelu banak elkarrekin lan egiten dute aurkariaren erregea xake-taularen bazter baten harrapatzeko. f2 edo f7 erasotu f2 edo f7ko peoia helburu duen erasoa. Erakarmena @@ -14,12 +16,18 @@ Bere piezekin trabatuta dagoenean erregeari bere errenkadan matea ematea. Alfilen bukaera Alfilak eta peoiak bakarrik dituen partida-bukaera. + Bodenen matea + Bi alfilek beren piezen artean trabatuta dagoen erregeari ematen dioten matea. Endrokea Babestu erregea eta ekarri gaztelua erasora. Defendatzailea harrapatu Beste pieza bat defendatzeko funtsezkoa den pieza kentzea, hurrengo jokaldietan lehenengo pieza hori harrapatzeko. Zapalketa Akatsa aurkitu eta guztizko abantaila lortu. (ebaluazioa ≥ 600cp) + Bi alfilen matea + Bi alfilek beren piezen artean trabatuta dagoen erregeari ematen dioten matea. + Mirubuztanaren matea + Damak ematen duen matea erregearen ihes-laukiak bere piezekin trabatuta daudenean. Berdintasuna Partida galduta izatetik, berdinketa edo posizio berdintsua lortzera itzuli. (ebaluazioa ≤ 200cp) Erregearen aldeko erasoa From 89514f6b58eb58566fe9b73fe235dbbc7f919fad Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Wed, 20 Jan 2021 21:14:08 +0100 Subject: [PATCH 18/64] add broadcast event icon and fix event icons styles - closes #7964 --- app/views/event.scala | 21 +++++++++++++-------- app/views/lobby/bits.scala | 4 +--- modules/event/src/main/EventForm.scala | 20 ++++++++++++-------- ui/lobby/css/_spotlight.scss | 14 +++----------- 4 files changed, 29 insertions(+), 30 deletions(-) diff --git a/app/views/event.scala b/app/views/event.scala index cf45193ae5..90ae2f952a 100644 --- a/app/views/event.scala +++ b/app/views/event.scala @@ -6,7 +6,7 @@ import play.api.data.Form import lila.api.Context import lila.app.templating.Environment._ import lila.app.ui.ScalatagsTemplate._ -import lila.event.EventForm +import lila.event.{ Event, EventForm } object event { @@ -20,7 +20,7 @@ object event { ) } - def edit(event: lila.event.Event, form: Form[_])(implicit ctx: Context) = + def edit(event: Event, form: Form[_])(implicit ctx: Context) = layout(title = event.title, css = "mod.form") { div(cls := "crud edit page-menu__content box box-pad")( div(cls := "box__top")( @@ -37,7 +37,14 @@ object event { ) } - def show(e: lila.event.Event)(implicit ctx: Context) = + def iconOf(e: Event) = + e.icon match { + case None => i(cls := "img", dataIcon := "") + case Some(c) if c == EventForm.icon.broadcast => i(cls := "img", dataIcon := "") + case Some(c) => img(cls := "img", src := assetUrl(s"images/$c")) + } + + def show(e: Event)(implicit ctx: Context) = views.html.base.layout( title = e.title, moreCss = cssTag("event"), @@ -45,9 +52,7 @@ object event { ) { main(cls := "page-small event box box-pad")( div(cls := "box__top")( - e.icon map { i => - img(cls := "img", src := assetUrl(s"images/$i")) - } getOrElse i(cls := "img", dataIcon := ""), + iconOf(e), div( h1(e.title), strong(cls := "headline")(e.headline) @@ -67,7 +72,7 @@ object event { ) } - def manager(events: List[lila.event.Event])(implicit ctx: Context) = { + def manager(events: List[Event])(implicit ctx: Context) = { val title = "Event manager" layout(title = title) { div(cls := "crud page-menu__content box")( @@ -134,7 +139,7 @@ object event { frag("Icon"), half = true, help = frag("Displayed on the homepage button").some - )(form3.select(_, EventForm.iconChoices)) + )(form3.select(_, EventForm.icon.choices)) ), form3.group( form("headline"), diff --git a/app/views/lobby/bits.scala b/app/views/lobby/bits.scala index 4b09c1b70a..b85f3590ab 100644 --- a/app/views/lobby/bits.scala +++ b/app/views/lobby/bits.scala @@ -172,9 +172,7 @@ object bits { "invert" -> e.isNowOrSoon ) )( - e.icon map { i => - img(cls := "img", src := assetUrl(s"images/$i")) - } getOrElse i(cls := "img", dataIcon := ""), + views.html.event.iconOf(e), span(cls := "content")( span(cls := "name")(e.title), span(cls := "headline")(e.headline), diff --git a/modules/event/src/main/EventForm.scala b/modules/event/src/main/EventForm.scala index 53ee7b3e08..7b2f8b057d 100644 --- a/modules/event/src/main/EventForm.scala +++ b/modules/event/src/main/EventForm.scala @@ -12,13 +12,17 @@ import lila.user.User object EventForm { - val iconChoices = List( - "" -> "Microphone", - "lichess.event.png" -> "Lichess", - "trophy.event.png" -> "Trophy", - "offerspill.logo.png" -> "Offerspill" - ) - val imageDefault = "" + object icon { + val default = "" + val broadcast = "broadcast.icon" + val choices = List( + default -> "Microphone", + "lichess.event.png" -> "Lichess", + "trophy.event.png" -> "Trophy", + broadcast -> "Broadcast", + "offerspill.logo.png" -> "Offerspill" + ) + } val form = Form( mapping( @@ -35,7 +39,7 @@ object EventForm { lila.user.UserForm.historicalUsernameField .transform[User.ID](_.toLowerCase, identity) }, - "icon" -> stringIn(iconChoices), + "icon" -> stringIn(icon.choices), "countdown" -> boolean )(Data.apply)(Data.unapply) ) fill Data( diff --git a/ui/lobby/css/_spotlight.scss b/ui/lobby/css/_spotlight.scss index d896786796..147106e64e 100644 --- a/ui/lobby/css/_spotlight.scss +++ b/ui/lobby/css/_spotlight.scss @@ -29,22 +29,14 @@ } .img { - flex: 0 0 50px; + flex: 0 0 42px; + width: 44px; margin: 0 .5em 0 .3em; } - img.img { - width: 40px; - } - - i.img, - .img.icon { - margin: 0 5px 0 0; - } - i.img::before { color: #fff; - font-size: 50px; + font-size: 42px; @if $theme-light { text-shadow: 1px 1px 2px $c-link; From c74792424765ba7db44ee7a961ffb1b2d93beb86 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Wed, 20 Jan 2021 21:16:32 +0100 Subject: [PATCH 19/64] feature tournaments for up to 24h --- modules/tournament/src/main/crud/CrudForm.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/tournament/src/main/crud/CrudForm.scala b/modules/tournament/src/main/crud/CrudForm.scala index f817492ce2..1617317415 100644 --- a/modules/tournament/src/main/crud/CrudForm.scala +++ b/modules/tournament/src/main/crud/CrudForm.scala @@ -14,7 +14,7 @@ object CrudForm { import TournamentForm._ import lila.common.Form.UTCDate._ - val maxHomepageHours = 72 + val maxHomepageHours = 24 lazy val apply = Form( mapping( From cf5b9accf2e3a2c41979110a5117bb2ff54ea9fe Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Wed, 20 Jan 2021 21:17:01 +0100 Subject: [PATCH 20/64] refactor socket redis sender --- modules/socket/src/main/RemoteSocket.scala | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/modules/socket/src/main/RemoteSocket.scala b/modules/socket/src/main/RemoteSocket.scala index 373d258c10..592a24e921 100644 --- a/modules/socket/src/main/RemoteSocket.scala +++ b/modules/socket/src/main/RemoteSocket.scala @@ -4,7 +4,7 @@ import akka.actor.{ ActorSystem, CoordinatedShutdown } import cats.data.NonEmptyList import chess.{ Centis, Color } import io.lettuce.core._ -import io.lettuce.core.pubsub.StatefulRedisPubSubConnection +import io.lettuce.core.pubsub.{ StatefulRedisPubSubConnection => PubSub } import java.util.concurrent.atomic.AtomicReference import java.util.concurrent.ConcurrentHashMap import play.api.libs.json._ @@ -116,22 +116,19 @@ final class RemoteSocket( case UnFollow(u1, u2) => send(Out.unfollow(u1, u2)) } - final class StoppableSender(conn: StatefulRedisPubSubConnection[String, String], channel: Channel) - extends Sender { + final class StoppableSender(conn: PubSub[String, String], channel: Channel) extends Sender { def apply(msg: String): Unit = if (!stopping) conn.async.publish(channel, msg).unit def sticky(_id: String, msg: String): Unit = apply(msg) } - final class RoundRobinSender( - conn: StatefulRedisPubSubConnection[String, String], - channel: Channel, - parallelism: Int - ) extends Sender { - def apply(msg: String): Unit = - if (!stopping) conn.async.publish(s"$channel:${msg.hashCode.abs % parallelism}", msg).unit + final class RoundRobinSender(conn: PubSub[String, String], channel: Channel, parallelism: Int) + extends Sender { + def apply(msg: String): Unit = publish(msg.hashCode.abs % parallelism, msg) // use the ID to select the channel, not the entire message - def sticky(id: String, msg: String): Unit = - if (!stopping) conn.async.publish(s"$channel:${id.hashCode.abs % parallelism}", msg).unit + def sticky(id: String, msg: String): Unit = publish(id.hashCode.abs % parallelism, msg) + + private def publish(subChannel: Int, msg: String) = + if (!stopping) conn.async.publish(s"$channel:$subChannel", msg).unit } def makeSender(channel: Channel, parallelism: Int = 1): Sender = From 9258bcfec848555bf59739f5aa5aeecdb2979427 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Wed, 20 Jan 2021 21:55:31 +0100 Subject: [PATCH 21/64] fix #7958 --- app/views/puzzle/dashboard.scala | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/app/views/puzzle/dashboard.scala b/app/views/puzzle/dashboard.scala index f8e5de936c..a4031585f4 100644 --- a/app/views/puzzle/dashboard.scala +++ b/app/views/puzzle/dashboard.scala @@ -57,21 +57,13 @@ object dashboard { ) } ) { dash => - frag( + dash.mostPlayed.size > 2 option div(cls := s"${baseClass}__global")( metricsOf(days, PuzzleTheme.mix.key, dash.global), canvas(cls := s"${baseClass}__radar") ) - ) } -// data: { -// labels: ['Running', 'Swimming', 'Eating', 'Cycling'], -// datasets: [{ -// data: [20, 10, 4, 2] -// }] -// } - def improvementAreas(user: User, dashOpt: Option[PuzzleDashboard], days: Int)(implicit ctx: Context) = dashboardLayout( user = user, @@ -83,7 +75,7 @@ object dashboard { subtitle = "Train these to optimize your progress!", dashOpt = dashOpt ) { dash => - themeSelection(days, dash.weakThemes) + dash.weakThemes.nonEmpty option themeSelection(days, dash.weakThemes) } def strengths(user: User, dashOpt: Option[PuzzleDashboard], days: Int)(implicit ctx: Context) = @@ -97,7 +89,7 @@ object dashboard { subtitle = "You perform the best in these themes", dashOpt = dashOpt ) { dash => - themeSelection(days, dash.strongThemes) + dash.strongThemes.nonEmpty option themeSelection(days, dash.strongThemes) } private def dashboardLayout( @@ -109,7 +101,7 @@ object dashboard { dashOpt: Option[PuzzleDashboard], moreJs: Frag = emptyFrag )( - body: PuzzleDashboard => Frag + body: PuzzleDashboard => Option[Frag] )(implicit ctx: Context) = views.html.base.layout( title = title, @@ -136,13 +128,10 @@ object dashboard { } ) ), - dashOpt match { - case None => - div(cls := s"${baseClass}__empty")( - a(href := routes.Puzzle.home())("Nothing to show, go play some puzzles first!") - ) - case Some(dash) => body(dash) - } + dashOpt.flatMap(body) | + div(cls := s"${baseClass}__empty")( + a(href := routes.Puzzle.home())("Nothing to show, go play some puzzles first!") + ) ) ) ) From 36f9ab43f13d4c041948940997db6a58bcc3f075 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Wed, 20 Jan 2021 22:50:11 +0100 Subject: [PATCH 22/64] show swiss streamers - closes #7485 --- app/controllers/Swiss.scala | 14 +++++++++++++- app/views/swiss/show.scala | 3 ++- app/views/swiss/side.scala | 10 +++++++++- modules/swiss/src/main/SwissApi.scala | 17 +++++++++++++++++ ui/swiss/css/build/_swiss.show.scss | 1 + 5 files changed, 42 insertions(+), 3 deletions(-) diff --git a/app/controllers/Swiss.scala b/app/controllers/Swiss.scala index ff54ba4915..ad2f673cf2 100644 --- a/app/controllers/Swiss.scala +++ b/app/controllers/Swiss.scala @@ -53,8 +53,9 @@ final class Swiss( _ <- chat ?? { c => env.user.lightUserApi.preloadMany(c.chat.userIds) } + streamers <- streamerCache get swiss.id isLocalMod <- canChat ?? canModChat(swiss) - } yield Ok(html.swiss.show(swiss, verdicts, json, chat, isLocalMod)) + } yield Ok(html.swiss.show(swiss, verdicts, json, chat, streamers, isLocalMod)) }, api = _ => swissOption.fold(notFoundJson("No such swiss tournament")) { swiss => @@ -274,4 +275,15 @@ final class Swiss( private def canModChat(swiss: SwissModel)(implicit ctx: Context): Fu[Boolean] = if (isGranted(_.ChatTimeout)) fuTrue else ctx.userId ?? { env.team.cached.isLeader(swiss.teamId, _) } + + private val streamerCache = + env.memo.cacheApi[SwissModel.Id, List[lila.user.User.ID]](64, "swiss.streamers") { + _.refreshAfterWrite(15.seconds) + .maximumSize(64) + .buildAsyncFuture { id => + env.streamer.liveStreamApi.all.flatMap { streams => + env.swiss.api.filterPlaying(id, streams.streams.map(_.streamer.userId)) + } + } + } } diff --git a/app/views/swiss/show.scala b/app/views/swiss/show.scala index 8a6826aacd..0316c9f6b4 100644 --- a/app/views/swiss/show.scala +++ b/app/views/swiss/show.scala @@ -17,6 +17,7 @@ object show { verdicts: SwissCondition.All.WithVerdicts, data: play.api.libs.json.JsObject, chatOption: Option[lila.chat.UserChat.Mine], + streamers: List[lila.user.User.ID], isLocalMod: Boolean )(implicit ctx: Context): Frag = { val isDirector = ctx.userId.has(s.createdBy) @@ -66,7 +67,7 @@ object show { )( main(cls := "swiss")( st.aside(cls := "swiss__side")( - swiss.side(s, verdicts, chatOption.isDefined) + swiss.side(s, verdicts, streamers, chatOption.isDefined) ), div(cls := "swiss__main")(div(cls := "box")) ) diff --git a/app/views/swiss/side.scala b/app/views/swiss/side.scala index 668b2c66b1..43936708a8 100644 --- a/app/views/swiss/side.scala +++ b/app/views/swiss/side.scala @@ -13,7 +13,12 @@ object side { private val separator = " • " - def apply(s: Swiss, verdicts: SwissCondition.All.WithVerdicts, chat: Boolean)(implicit + def apply( + s: Swiss, + verdicts: SwissCondition.All.WithVerdicts, + streamers: List[lila.user.User.ID], + chat: Boolean + )(implicit ctx: Context ) = frag( @@ -88,6 +93,9 @@ object side { else br, absClientDateTime(s.startsAt) ), + streamers.nonEmpty option div(cls := "context-streamers")( + streamers map views.html.streamer.bits.contextual + ), chat option views.html.chat.frag ) } diff --git a/modules/swiss/src/main/SwissApi.scala b/modules/swiss/src/main/SwissApi.scala index 3e0c5c2d11..351ec83fbb 100644 --- a/modules/swiss/src/main/SwissApi.scala +++ b/modules/swiss/src/main/SwissApi.scala @@ -608,6 +608,23 @@ final class SwissApi( _.map { withdraw(_, user.id) }.sequenceFu.void } + def isUnfinished(id: Swiss.Id): Fu[Boolean] = + colls.swiss.exists($id(id) ++ $doc("finishedAt" $exists false)) + + def filterPlaying(id: Swiss.Id, userIds: Seq[User.ID]): Fu[List[User.ID]] = + userIds.nonEmpty ?? + colls.swiss.exists($id(id) ++ $doc("finishedAt" $exists false)) flatMap { + _ ?? SwissPlayer.fields { f => + colls.player.distinctEasy[User.ID, List]( + f.userId, + $doc( + f.id $in userIds.map(SwissPlayer.makeId(id, _)), + f.absent $ne true + ) + ) + } + } + def resultStream(swiss: Swiss, perSecond: MaxPerSecond, nb: Int): Source[(SwissPlayer, Long), _] = SwissPlayer.fields { f => colls.player diff --git a/ui/swiss/css/build/_swiss.show.scss b/ui/swiss/css/build/_swiss.show.scss index cc6e23ec2e..7030fe7ef2 100644 --- a/ui/swiss/css/build/_swiss.show.scss +++ b/ui/swiss/css/build/_swiss.show.scss @@ -4,6 +4,7 @@ @import "../../../common/css/component/slist"; @import "../../../common/css/component/quote"; @import "../../../common/css/component/color-icon"; +@import "../../../common/css/component/context-streamer"; @import "../../../common/css/component/now-playing"; @import "../../../common/css/component/podium"; @import "../../../chat/css/chat"; From 4b3f170729c5c03b0883b5c3658745fe9eaa8a23 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Thu, 21 Jan 2021 11:00:44 +0100 Subject: [PATCH 23/64] simplify contact page, remove duplicate report entries - fixes #7962 --- app/views/site/contact.scala | 50 +++++++++++----------------- modules/i18n/src/main/I18nKeys.scala | 7 +--- translation/source/contact.xml | 7 +--- 3 files changed, 21 insertions(+), 43 deletions(-) diff --git a/app/views/site/contact.scala b/app/views/site/contact.scala index eef633814a..fe6ace78c1 100644 --- a/app/views/site/contact.scala +++ b/app/views/site/contact.scala @@ -1,9 +1,9 @@ package views package html.site +import controllers.routes import scala.util.chaining._ -import controllers.routes import lila.api.Context import lila.app.templating.Environment._ import lila.app.ui.ScalatagsTemplate._ @@ -149,39 +149,27 @@ object contact { ) ) ), - Branch( + Leaf( "report", wantReport(), - List( - "cheating" -> reportCheating, - "sandbagging" -> reportSandbagging, - "trolling" -> reportTrolling, - "insults" -> reportInsults, - "some other reason" -> reportOtherReason - ).map { case (reason, name) => - Leaf( - reason, - name(), - frag( - p( - a(href := routes.Report.form())(toReportAPlayer(name())), - "." - ), - p( - youCanAlsoReachReportPage(button(cls := "thin button button-empty", dataIcon := "!")) - ), - p( - doNotMessageModerators(), - br, - doNotReportInForum(), - br, - doNotSendReportEmails(), - br, - onlyReports() - ) - ) + frag( + p( + a(href := routes.Report.form())(toReportAPlayerUseForm()), + "." + ), + p( + youCanAlsoReachReportPage(button(cls := "thin button button-empty", dataIcon := "!")) + ), + p( + doNotMessageModerators(), + br, + doNotReportInForum(), + br, + doNotSendReportEmails(), + br, + onlyReports() ) - } + ) ), Branch( "bug", diff --git a/modules/i18n/src/main/I18nKeys.scala b/modules/i18n/src/main/I18nKeys.scala index 1ef48b71bb..bee2acd882 100644 --- a/modules/i18n/src/main/I18nKeys.scala +++ b/modules/i18n/src/main/I18nKeys.scala @@ -1225,12 +1225,7 @@ val `orCloseAccount` = new I18nKey("contact:orCloseAccount") val `wantClearHistory` = new I18nKey("contact:wantClearHistory") val `cantClearHistory` = new I18nKey("contact:cantClearHistory") val `wantReport` = new I18nKey("contact:wantReport") -val `reportCheating` = new I18nKey("contact:reportCheating") -val `reportSandbagging` = new I18nKey("contact:reportSandbagging") -val `reportTrolling` = new I18nKey("contact:reportTrolling") -val `reportInsults` = new I18nKey("contact:reportInsults") -val `reportOtherReason` = new I18nKey("contact:reportOtherReason") -val `toReportAPlayer` = new I18nKey("contact:toReportAPlayer") +val `toReportAPlayerUseForm` = new I18nKey("contact:toReportAPlayerUseForm") val `youCanAlsoReachReportPage` = new I18nKey("contact:youCanAlsoReachReportPage") val `doNotReportInForum` = new I18nKey("contact:doNotReportInForum") val `doNotSendReportEmails` = new I18nKey("contact:doNotSendReportEmails") diff --git a/translation/source/contact.xml b/translation/source/contact.xml index b1b5bb453e..fc72ea5f94 100644 --- a/translation/source/contact.xml +++ b/translation/source/contact.xml @@ -27,12 +27,7 @@ I want to clear my history or rating It's not possible to clear your game history, puzzle history, or ratings. I want to report a player - Report a player for cheating - Report a player for sandbagging - Report a player for trolling - Report a player for insults - Report a player for some other reason - To report a player for %s, use the report form + To report a player, use the report form You can also reach that page by clicking the %s report button on a profile page. Do not report players in the forum. Do not send us report emails. From a0fb3fcdd4f4288196e7064f48e42f549dafb5a7 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Thu, 21 Jan 2021 11:40:46 +0100 Subject: [PATCH 24/64] api endpoint to give opponent more time - closes #7955 --- app/controllers/Round.scala | 14 ++++++++++++++ conf/base.conf | 1 - conf/routes | 3 ++- modules/game/src/main/Pov.scala | 2 ++ modules/round/src/main/Env.scala | 4 +--- modules/round/src/main/JsonView.scala | 7 ++----- modules/round/src/main/Moretimer.scala | 12 ++++++------ modules/round/src/main/RoundDuct.scala | 6 +++--- modules/round/src/main/actorApi.scala | 4 +++- modules/round/src/main/model.scala | 1 - 10 files changed, 33 insertions(+), 21 deletions(-) diff --git a/app/controllers/Round.scala b/app/controllers/Round.scala index 816ec31eb8..93e6df9e3e 100644 --- a/app/controllers/Round.scala +++ b/app/controllers/Round.scala @@ -2,6 +2,7 @@ package controllers import play.api.libs.json._ import play.api.mvc._ +import scala.concurrent.duration._ import views._ import lila.api.Context @@ -350,4 +351,17 @@ final class Round( html.game.mini(_) ) } + + def apiAddTime(anyId: String, seconds: Int) = + Scoped(_.Challenge.Write) { implicit req => me => + import lila.round.actorApi.round.Moretime + if (seconds < 1 || seconds > 86400) BadRequest.fuccess + else + env.round.proxyRepo.game(lila.game.Game takeGameId anyId) map { + _.flatMap { Pov(_, me) }.?? { pov => + env.round.tellRound(pov.gameId, Moretime(pov.typedPlayerId, seconds.seconds)) + jsonOkResult + } + } + } } diff --git a/conf/base.conf b/conf/base.conf index 931dd5998f..5621216673 100644 --- a/conf/base.conf +++ b/conf/base.conf @@ -339,7 +339,6 @@ gameSearch { actor.name = game-search } round { - moretime = 15 seconds collection { note = game_note forecast = forecast diff --git a/conf/routes b/conf/routes index 28958746cb..d9f44d5e50 100644 --- a/conf/routes +++ b/conf/routes @@ -601,7 +601,8 @@ POST /api/challenge/:user controllers.Challenge.apiCreate(user: Str POST /api/challenge/$id<\w{8}>/accept controllers.Challenge.apiAccept(id: String) POST /api/challenge/$id<\w{8}>/decline controllers.Challenge.apiDecline(id: String) POST /api/challenge/$id<\w{8}>/cancel controllers.Challenge.apiCancel(id: String) -POST /api/challenge/$id<\w{8}>/start-clocks controllers.Challenge.apiStartClocks(id: String) +POST /api/challenge/$id<\w{8}>/start-clocks controllers.Challenge.apiStartClocks(id: String) +POST /api/round/$id<\w{8}>/add-time/:seconds controllers.Round.apiAddTime(id: String, seconds: Int) GET /api/cloud-eval controllers.Api.cloudEval GET /api/broadcast controllers.Relay.apiIndex POST /api/import controllers.Importer.apiSendGame diff --git a/modules/game/src/main/Pov.scala b/modules/game/src/main/Pov.scala index fee71b901d..0c89e86f12 100644 --- a/modules/game/src/main/Pov.scala +++ b/modules/game/src/main/Pov.scala @@ -9,6 +9,8 @@ case class Pov(game: Game, color: Color) { def playerId = player.id + def typedPlayerId = Game.PlayerId(player.id) + def fullId = game fullIdOf color def gameId = game.id diff --git a/modules/round/src/main/Env.scala b/modules/round/src/main/Env.scala index 1760e33b09..3e221a2eb0 100644 --- a/modules/round/src/main/Env.scala +++ b/modules/round/src/main/Env.scala @@ -19,8 +19,7 @@ import lila.user.User private class RoundConfig( @ConfigName("collection.note") val noteColl: CollName, @ConfigName("collection.forecast") val forecastColl: CollName, - @ConfigName("collection.alarm") val alarmColl: CollName, - @ConfigName("moretime") val moretimeDuration: MoretimeDuration + @ConfigName("collection.alarm") val alarmColl: CollName ) @Module @@ -59,7 +58,6 @@ final class Env( scheduler: akka.actor.Scheduler ) { - implicit private val moretimeLoader = durationLoader(MoretimeDuration.apply) implicit private val animationLoader = durationLoader(AnimationDuration.apply) private val config = appConfig.get[RoundConfig]("round")(AutoConfig.loader) diff --git a/modules/round/src/main/JsonView.scala b/modules/round/src/main/JsonView.scala index 1f3201ac3e..479f6d5969 100644 --- a/modules/round/src/main/JsonView.scala +++ b/modules/round/src/main/JsonView.scala @@ -21,14 +21,11 @@ final class JsonView( moretimer: Moretimer, divider: lila.game.Divider, evalCache: lila.evalCache.EvalCacheApi, - isOfferingRematch: Pov => Boolean, - moretime: MoretimeDuration + isOfferingRematch: Pov => Boolean )(implicit ec: scala.concurrent.ExecutionContext) { import JsonView._ - private val moretimeSeconds = moretime.value.toSeconds.toInt - private def checkCount(game: Game, color: Color) = (game.variant == chess.variant.ThreeCheck) option game.history.checkCount(color) @@ -263,7 +260,7 @@ final class JsonView( } private def clockJson(clock: Clock): JsObject = - clockWriter.writes(clock) + ("moretime" -> JsNumber(moretimeSeconds)) + clockWriter.writes(clock) + ("moretime" -> JsNumber(actorApi.round.Moretime.defaultDuration.toSeconds)) private def possibleMoves(pov: Pov, apiVersion: ApiVersion): Option[JsValue] = (pov.game playableBy pov.player) option diff --git a/modules/round/src/main/Moretimer.scala b/modules/round/src/main/Moretimer.scala index 2ee144ad75..ea78c86eb3 100644 --- a/modules/round/src/main/Moretimer.scala +++ b/modules/round/src/main/Moretimer.scala @@ -4,15 +4,15 @@ import chess.Color import lila.game.{ Event, Game, Pov, Progress } import lila.pref.{ Pref, PrefApi } +import scala.concurrent.duration.FiniteDuration final private class Moretimer( messenger: Messenger, - prefApi: PrefApi, - duration: MoretimeDuration + prefApi: PrefApi )(implicit ec: scala.concurrent.ExecutionContext) { // pov of the player giving more time - def apply(pov: Pov): Fu[Option[Progress]] = + def apply(pov: Pov, duration: FiniteDuration): Fu[Option[Progress]] = IfAllowed(pov.game) { (pov.game moretimeable !pov.color) ?? { if (pov.game.hasClock) give(pov.game, List(!pov.color), duration).some @@ -29,14 +29,14 @@ final private class Moretimer( if (game.isMandatory) fuFalse else isAllowedByPrefs(game) - private[round] def give(game: Game, colors: List[Color], duration: MoretimeDuration): Progress = + private[round] def give(game: Game, colors: List[Color], duration: FiniteDuration): Progress = game.clock.fold(Progress(game)) { clock => - val centis = duration.value.toCentis + val centis = duration.toCentis val newClock = colors.foldLeft(clock) { case (c, color) => c.giveTime(color, centis) } colors.foreach { c => - messenger.volatile(game, s"$c + ${duration.value.toSeconds} seconds") + messenger.volatile(game, s"$c + ${duration.toSeconds} seconds") } (game withClock newClock) ++ colors.map { Event.ClockInc(_, centis) } } diff --git a/modules/round/src/main/RoundDuct.scala b/modules/round/src/main/RoundDuct.scala index d5c39320e1..1b38b96971 100644 --- a/modules/round/src/main/RoundDuct.scala +++ b/modules/round/src/main/RoundDuct.scala @@ -366,9 +366,9 @@ final private[round] class RoundDuct( } } - case Moretime(playerId) => + case Moretime(playerId, duration) => handle(playerId) { pov => - moretimer(pov) flatMap { + moretimer(pov, duration) flatMap { _ ?? { progress => proxy save progress inject progress.events } @@ -404,7 +404,7 @@ final private[round] class RoundDuct( handle { game => game.playable ?? { messenger.system(game, "Lichess has been updated! Sorry for the inconvenience.") - val progress = moretimer.give(game, Color.all, MoretimeDuration(20 seconds)) + val progress = moretimer.give(game, Color.all, 20 seconds) proxy save progress inject progress.events } } diff --git a/modules/round/src/main/actorApi.scala b/modules/round/src/main/actorApi.scala index 135a53cc1e..058d6cd56d 100644 --- a/modules/round/src/main/actorApi.scala +++ b/modules/round/src/main/actorApi.scala @@ -2,6 +2,7 @@ package lila.round package actorApi import scala.concurrent.Promise +import scala.concurrent.duration._ import chess.format.Uci import chess.{ Color, MoveMetrics } @@ -48,7 +49,8 @@ package round { case class DrawNo(playerId: PlayerId) case class TakebackYes(playerId: PlayerId) case class TakebackNo(playerId: PlayerId) - case class Moretime(playerId: PlayerId) + object Moretime { val defaultDuration = 15.seconds } + case class Moretime(playerId: PlayerId, seconds: FiniteDuration = Moretime.defaultDuration) case object QuietFlag case class ClientFlag(color: Color, fromPlayerId: Option[PlayerId]) case object Abandon diff --git a/modules/round/src/main/model.scala b/modules/round/src/main/model.scala index 31ffd62150..9a152c39f9 100644 --- a/modules/round/src/main/model.scala +++ b/modules/round/src/main/model.scala @@ -6,7 +6,6 @@ import lila.game.{ Game, Pov } import lila.user.User import play.api.libs.json.JsObject -private case class MoretimeDuration(value: FiniteDuration) extends AnyVal private case class AnimationDuration(value: FiniteDuration) extends AnyVal final class OnStart(f: Game.ID => Unit) extends (Game.ID => Unit) { From 458ef12aef854d3bf81d5806423319e4a8716a86 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Thu, 21 Jan 2021 12:09:02 +0100 Subject: [PATCH 25/64] stop using deleted function --- app/controllers/Team.scala | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/Team.scala b/app/controllers/Team.scala index 4b6e80653f..93cceee23e 100644 --- a/app/controllers/Team.scala +++ b/app/controllers/Team.scala @@ -447,7 +447,7 @@ final class Team( Action.async { import env.team.jsonView._ import lila.common.paginator.PaginatorJson._ - JsonFuOk { + JsonOk { paginator popularTeams page flatMap { pager => env.user.lightUserApi.preloadMany(pager.currentPageResults.flatMap(_.leaders)) inject pager } @@ -478,7 +478,7 @@ final class Team( Action.async { import env.team.jsonView._ import lila.common.paginator.PaginatorJson._ - JsonFuOk { + JsonOk { if (text.trim.isEmpty) paginator popularTeams page else env.teamSearch(text, page) } @@ -487,7 +487,7 @@ final class Team( def apiTeamsOf(username: String) = Action.async { import env.team.jsonView._ - JsonFuOk { + JsonOk { api teamsOf username flatMap { teams => env.user.lightUserApi.preloadMany(teams.flatMap(_.leaders)) inject teams } From 1313b91e726ef9b4c06c5f25ad312512b3b3abf2 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Thu, 21 Jan 2021 12:09:15 +0100 Subject: [PATCH 26/64] expose puzzle dashboard through oAuth API --- app/controllers/Puzzle.scala | 9 +++++---- conf/routes | 2 +- modules/puzzle/src/main/JsonView.scala | 19 +++++++++++++++++++ 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/app/controllers/Puzzle.scala b/app/controllers/Puzzle.scala index b1ecc1391f..1f674439f3 100644 --- a/app/controllers/Puzzle.scala +++ b/app/controllers/Puzzle.scala @@ -262,10 +262,11 @@ final class Puzzle( .fuccess } - def dashboard(days: Int) = - Scoped(_.Puzzle.Read) { _ => me => - JsonOk { - env.puzzle.dashboard(me, days) map env.puzzle.json.dashboardJson map + def apiDashboard(days: Int) = + Scoped(_.Puzzle.Read) { implicit req => me => + implicit val lang = reqLang + JsonOptionOk { + env.puzzle.dashboard(me, days) map2 { env.puzzle.jsonView.dashboardJson(_, days) } } } diff --git a/conf/routes b/conf/routes index 3c3d5ce187..8c41b7d324 100644 --- a/conf/routes +++ b/conf/routes @@ -565,7 +565,7 @@ GET /api controllers.Api.index POST /api/users controllers.Api.usersByIds GET /api/user/puzzle-activity controllers.Puzzle.activity GET /api/puzzle/activity controllers.Puzzle.activity -GET /api/puzzle/dashboard controllers.Puzzle.dashboard +GET /api/puzzle/dashboard/:days controllers.Puzzle.apiDashboard(days: Int) GET /api/user/:name/tournament/created controllers.Api.tournamentsByOwner(name: String) GET /api/user/:name controllers.Api.user(name: String) GET /api/user/:name/activity controllers.Api.activity(name: String) diff --git a/modules/puzzle/src/main/JsonView.scala b/modules/puzzle/src/main/JsonView.scala index c8b2b06e5d..b588ef0aa0 100644 --- a/modules/puzzle/src/main/JsonView.scala +++ b/modules/puzzle/src/main/JsonView.scala @@ -82,6 +82,25 @@ final class JsonView( "is3d" -> p.is3d ) + def dashboardJson(dash: PuzzleDashboard, days: Int)(implicit lang: Lang) = Json.obj( + "days" -> days, + "global" -> dashboardResults(dash.global), + "themes" -> JsObject(dash.byTheme.toList.sortBy(-_._2.nb).map { case (key, res) => + key.value -> Json.obj( + "theme" -> PuzzleTheme(key).name.txt(), + "results" -> dashboardResults(res) + ) + }) + ) + + private def dashboardResults(res: PuzzleDashboard.Results) = Json.obj( + "nb" -> res.nb, + "firstWins" -> res.wins, + "replayWins" -> res.fixed, + "puzzleRatingAvg" -> res.puzzleRatingAvg, + "performance" -> res.performance + ) + private def puzzleJson(puzzle: Puzzle): JsObject = Json.obj( "id" -> puzzle.id, "rating" -> puzzle.glicko.intRating, From 83100595813ed7af3104f7a40832fe4210400732 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Thu, 21 Jan 2021 12:44:43 +0100 Subject: [PATCH 27/64] rate-limit magic link login - closes #7728 --- app/controllers/Auth.scala | 28 +++++++++++++++-------- modules/security/src/main/MagicLink.scala | 6 ++--- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/app/controllers/Auth.scala b/app/controllers/Auth.scala index f96d9e408e..2c456cb663 100644 --- a/app/controllers/Auth.scala +++ b/app/controllers/Auth.scala @@ -5,11 +5,13 @@ import play.api.data.FormError import play.api.libs.json._ import play.api.mvc._ import scala.annotation.nowarn +import scala.concurrent.duration._ import views._ import lila.api.Context import lila.app._ import lila.common.{ EmailAddress, HTTPRequest } +import lila.memo.RateLimit import lila.security.SecurityForm.{ MagicLink, PasswordReset } import lila.security.{ FingerPrint, Signup } import lila.user.User.ClearPassword @@ -425,17 +427,25 @@ final class Auth( } } + private lazy val magicLinkLoginRateLimitPerToken = new RateLimit[String]( + credits = 3, + duration = 1 hour, + key = "login.magicLink.token" + ) + def magicLinkLogin(token: String) = Open { implicit ctx => - env.security.magicLink confirm token flatMap { - case None => - lila.mon.user.auth.magicLinkConfirm("token_fail").increment() - notFound - case Some(user) => - authLog(user.username, "-", "Magic link") - authenticateUser(user) >>- - lila.mon.user.auth.magicLinkConfirm("success").increment().unit - } + magicLinkLoginRateLimitPerToken(token) { + env.security.magicLink confirm token flatMap { + case None => + lila.mon.user.auth.magicLinkConfirm("token_fail").increment() + notFound + case Some(user) => + authLog(user.username, "-", "Magic link") + authenticateUser(user) >>- + lila.mon.user.auth.magicLinkConfirm("success").increment().unit + } + }(rateLimitedFu) } private def loginTokenFor(me: UserModel) = JsonOk { diff --git a/modules/security/src/main/MagicLink.scala b/modules/security/src/main/MagicLink.scala index 7dc36383eb..4eca4debde 100644 --- a/modules/security/src/main/MagicLink.scala +++ b/modules/security/src/main/MagicLink.scala @@ -59,19 +59,19 @@ object MagicLink { private lazy val rateLimitPerIP = new RateLimit[IpAddress]( credits = 5, duration = 1 hour, - key = "email.confirms.ip" + key = "login.magicLink.ip" ) private lazy val rateLimitPerUser = new RateLimit[String]( credits = 3, duration = 1 hour, - key = "email.confirms.user" + key = "login.magicLink.user" ) private lazy val rateLimitPerEmail = new RateLimit[String]( credits = 3, duration = 1 hour, - key = "email.confirms.email" + key = "login.magicLink.email" ) def rateLimit[A: Zero](user: User, email: EmailAddress, req: RequestHeader)( From f54779bd3a0e57e5d3d55fc6934f610a23e48650 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Thu, 21 Jan 2021 12:48:34 +0100 Subject: [PATCH 28/64] New Crowdin updates (#7961) * New translations: site.xml (Estonian) * New translations: puzzleTheme.xml (Estonian) * New translations: preferences.xml (Estonian) * New translations: puzzle.xml (Estonian) * New translations: puzzleTheme.xml (Serbian (Cyrillic)) * New translations: puzzleTheme.xml (Latvian) * New translations: contact.xml (Latvian) * New translations: puzzleTheme.xml (Latvian) * New translations: puzzleTheme.xml (Latvian) * New translations: puzzleTheme.xml (German) * New translations: puzzleTheme.xml (Lithuanian) * New translations: contact.xml (Azerbaijani) * New translations: puzzleTheme.xml (Greek) * New translations: puzzleTheme.xml (Azerbaijani) * New translations: contact.xml (Greek) * New translations: puzzleTheme.xml (Azerbaijani) * New translations: puzzleTheme.xml (Greek) * New translations: puzzleTheme.xml (Greek) * New translations: puzzleTheme.xml (Greek) * New translations: puzzleTheme.xml (Hungarian) * New translations: puzzleTheme.xml (Hungarian) * New translations: puzzleTheme.xml (Hungarian) * New translations: puzzleTheme.xml (Hungarian) * New translations: streamer.xml (Spanish) * New translations: puzzleTheme.xml (Turkish) * New translations: puzzleTheme.xml (Turkish) * New translations: contact.xml (Portuguese, Brazilian) * New translations: contact.xml (Turkish) * New translations: puzzleTheme.xml (Turkish) * New translations: puzzleTheme.xml (Azerbaijani) * New translations: puzzleTheme.xml (Spanish) * New translations: contact.xml (Spanish) * New translations: puzzleTheme.xml (Spanish) * New translations: contact.xml (Italian) * New translations: contact.xml (Swedish) * New translations: contact.xml (Norwegian Bokmal) * New translations: contact.xml (Aragonese) * New translations: contact.xml (Faroese) * New translations: contact.xml (Esperanto) * New translations: contact.xml (Bosnian) * New translations: contact.xml (English, United States) * New translations: contact.xml (Chinese Traditional) * New translations: contact.xml (Polish) * New translations: contact.xml (Dutch) * New translations: contact.xml (Macedonian) * New translations: contact.xml (Lithuanian) * New translations: contact.xml (Japanese) * New translations: contact.xml (Italian) * New translations: contact.xml (Hungarian) * New translations: contact.xml (Hebrew) * New translations: contact.xml (Russian) * New translations: contact.xml (Romanian) * New translations: contact.xml (French) * New translations: contact.xml (Spanish) * New translations: contact.xml (Afrikaans) * New translations: contact.xml (Arabic) * New translations: contact.xml (Catalan) * New translations: contact.xml (Finnish) * New translations: contact.xml (Czech) * New translations: contact.xml (Danish) * New translations: contact.xml (German) * New translations: contact.xml (Greek) * New translations: contact.xml (Basque) * New translations: contact.xml (Portuguese) * New translations: contact.xml (Slovak) * New translations: contact.xml (Hindi) * New translations: contact.xml (Azerbaijani) * New translations: contact.xml (Latvian) * New translations: contact.xml (Kazakh) * New translations: contact.xml (Norwegian Nynorsk) * New translations: contact.xml (Croatian) * New translations: contact.xml (Thai) * New translations: contact.xml (Slovenian) * New translations: contact.xml (Albanian) * New translations: contact.xml (Serbian (Cyrillic)) * New translations: contact.xml (Turkish) * New translations: contact.xml (Ukrainian) * New translations: contact.xml (Chinese Simplified) * New translations: contact.xml (Indonesian) * New translations: contact.xml (Vietnamese) * New translations: contact.xml (Portuguese, Brazilian) * New translations: contact.xml (Italian) * New translations: contact.xml (Norwegian Nynorsk) * New translations: contact.xml (Lithuanian) * New translations: contact.xml (Russian) * New translations: contact.xml (Kazakh) * New translations: contact.xml (Burmese) * New translations: puzzleTheme.xml (French) * New translations: puzzleTheme.xml (Kazakh) * New translations: contact.xml (French) * New translations: contact.xml (Spanish) * New translations: puzzleTheme.xml (Kazakh) * New translations: contact.xml (Danish) * New translations: puzzleTheme.xml (Dutch) * New translations: puzzleTheme.xml (Kazakh) * New translations: contact.xml (German) * New translations: contact.xml (Polish) * New translations: puzzleTheme.xml (Dutch) --- translation/dest/contact/af-ZA.xml | 1 - translation/dest/contact/an-ES.xml | 1 - translation/dest/contact/ar-SA.xml | 1 - translation/dest/contact/az-AZ.xml | 1 - translation/dest/contact/bs-BA.xml | 1 - translation/dest/contact/ca-ES.xml | 1 - translation/dest/contact/cs-CZ.xml | 1 - translation/dest/contact/da-DK.xml | 7 +------ translation/dest/contact/de-DE.xml | 7 +------ translation/dest/contact/el-GR.xml | 1 - translation/dest/contact/en-US.xml | 6 ------ translation/dest/contact/eo-UY.xml | 1 - translation/dest/contact/es-ES.xml | 11 +++-------- translation/dest/contact/eu-ES.xml | 6 ------ translation/dest/contact/fi-FI.xml | 1 - translation/dest/contact/fo-FO.xml | 1 - translation/dest/contact/fr-FR.xml | 7 +------ translation/dest/contact/he-IL.xml | 1 - translation/dest/contact/hi-IN.xml | 6 ------ translation/dest/contact/hr-HR.xml | 1 - translation/dest/contact/hu-HU.xml | 6 ------ translation/dest/contact/id-ID.xml | 1 - translation/dest/contact/it-IT.xml | 5 +---- translation/dest/contact/ja-JP.xml | 6 ------ translation/dest/contact/kk-KZ.xml | 2 +- translation/dest/contact/lt-LT.xml | 7 +------ translation/dest/contact/lv-LV.xml | 1 - translation/dest/contact/mk-MK.xml | 1 - translation/dest/contact/my-MM.xml | 4 +++- translation/dest/contact/nb-NO.xml | 6 ------ translation/dest/contact/nl-NL.xml | 6 ------ translation/dest/contact/nn-NO.xml | 7 +------ translation/dest/contact/pl-PL.xml | 7 +------ translation/dest/contact/pt-BR.xml | 5 ----- translation/dest/contact/pt-PT.xml | 1 - translation/dest/contact/ro-RO.xml | 6 ------ translation/dest/contact/ru-RU.xml | 7 +------ translation/dest/contact/sk-SK.xml | 1 - translation/dest/contact/sl-SI.xml | 1 - translation/dest/contact/sq-AL.xml | 1 - translation/dest/contact/sr-SP.xml | 6 ------ translation/dest/contact/sv-SE.xml | 6 ------ translation/dest/contact/th-TH.xml | 1 - translation/dest/contact/tr-TR.xml | 6 ------ translation/dest/contact/uk-UA.xml | 1 - translation/dest/contact/vi-VN.xml | 1 - translation/dest/contact/zh-CN.xml | 1 - translation/dest/contact/zh-TW.xml | 1 - translation/dest/preferences/et-EE.xml | 6 ++++-- translation/dest/puzzle/et-EE.xml | 3 +++ translation/dest/puzzleTheme/az-AZ.xml | 8 ++++++++ translation/dest/puzzleTheme/de-DE.xml | 16 ++++++++-------- translation/dest/puzzleTheme/el-GR.xml | 6 +++++- translation/dest/puzzleTheme/es-ES.xml | 18 +++++++++--------- translation/dest/puzzleTheme/et-EE.xml | 3 +++ translation/dest/puzzleTheme/fr-FR.xml | 16 ++++++++-------- translation/dest/puzzleTheme/hu-HU.xml | 10 ++++++++++ translation/dest/puzzleTheme/kk-KZ.xml | 11 +++++++++++ translation/dest/puzzleTheme/lt-LT.xml | 8 ++++++++ translation/dest/puzzleTheme/lv-LV.xml | 8 ++++++++ translation/dest/puzzleTheme/nl-NL.xml | 9 +++++---- translation/dest/puzzleTheme/sr-SP.xml | 1 + translation/dest/puzzleTheme/tr-TR.xml | 20 ++++++++++---------- translation/dest/site/et-EE.xml | 8 +++++++- translation/dest/streamer/es-ES.xml | 2 +- 65 files changed, 124 insertions(+), 196 deletions(-) diff --git a/translation/dest/contact/af-ZA.xml b/translation/dest/contact/af-ZA.xml index 810208813f..2bd4347f6e 100644 --- a/translation/dest/contact/af-ZA.xml +++ b/translation/dest/contact/af-ZA.xml @@ -27,7 +27,6 @@ Ek wil my geskiedenis of my gradeering uitvee Dit is nie moontlik om jou spel geskiedenis, kopkrapper geskiedenis of gradeerings uit te vee nie. Ek wil \'n speler aankla - Om \'n speler aan te kla vir %s, gebruik die rapporteringsvorm Jy kan ook daardie blad bereik deur die %s aanmeldingsblokkie op die profielblad te klik. Moet nie spelers in die forum aankla nie. Moet nie aanklagte e-posse stuur nie. diff --git a/translation/dest/contact/an-ES.xml b/translation/dest/contact/an-ES.xml index 507bb760ad..c56a616718 100644 --- a/translation/dest/contact/an-ES.xml +++ b/translation/dest/contact/an-ES.xml @@ -27,7 +27,6 @@ Quiero borrar lo mío historial u puntuación No ye posible borrar lo tuyo historial de chuegos, historial de rompecabezas u qualificacions. Quiero reportar un chugador - Pa reportar a un chugador per %s, utiliza lo formulario de reporte Tamién puetz acceder a ixa pachina pretando lo botón %s en un perfil. No reportes chugadors en o foro. No nos ninvies correus electronicos de reporte. diff --git a/translation/dest/contact/ar-SA.xml b/translation/dest/contact/ar-SA.xml index 9d7d1e0593..19815fa453 100644 --- a/translation/dest/contact/ar-SA.xml +++ b/translation/dest/contact/ar-SA.xml @@ -27,7 +27,6 @@ أريد مسح تاريخي أو تقييمي لا يمكن مسح تاريخ المباريات أو تاريخ الألغاز أو التقييم. أريد أن أبلغ عن لاعب - للإبلاغ عن لاعب لـ %s، استخدم نموذج التبليغ يمكنك أيضا الوصول إلى هذه الصفحة بالنقر على زر التبليغ %s في صفحة الملف الشخصي. لا تبلغ عن اللاعبين في المنتدى. لا ترسل بالتبليغ عبر البريد الإلكتروني. diff --git a/translation/dest/contact/az-AZ.xml b/translation/dest/contact/az-AZ.xml index 8cd44330b6..74a5051b27 100644 --- a/translation/dest/contact/az-AZ.xml +++ b/translation/dest/contact/az-AZ.xml @@ -27,7 +27,6 @@ Tarixçəmi və ya reytinqimi sıfırlamaq istəyirəm Oyun tarixçənizi, tapmaca tarixçənizi və ya reytinqlərinizi sıfırlamaq mümkün deyil. Bir oyunçunu bildirmək istəyirəm - %s üçün bir oyunçunu şikayət etmək üçün şikayət formunu istifadə edin Bir profil səhifəsindəki %s şikayət düyməsinə basaraq da həmin səhifəyə daxil ola bilərsiniz. Forumdakı oyunçuları şikayət etməyin. Bizə şikayət emailləri göndərməyin. diff --git a/translation/dest/contact/bs-BA.xml b/translation/dest/contact/bs-BA.xml index 9b9db7c301..61f4f7a7c0 100644 --- a/translation/dest/contact/bs-BA.xml +++ b/translation/dest/contact/bs-BA.xml @@ -27,7 +27,6 @@ Želim da obrišem moju istoriju ili rejting Nije moguće obrisati Vašu istoriju partija, istoriju problema ili rejting. Želim prijaviti igrača - Da biste prijavili igrača za %s, koristite formular za prijavu Možete doći do te stranice i klikom na %s report opciju na profilnoj stranici. Ne prijavljujte igrače na forumu. Nemojte nam slati prijave e-mail porukama. diff --git a/translation/dest/contact/ca-ES.xml b/translation/dest/contact/ca-ES.xml index efa7b21236..5a11e2473f 100644 --- a/translation/dest/contact/ca-ES.xml +++ b/translation/dest/contact/ca-ES.xml @@ -27,7 +27,6 @@ Vull esborrar el meu historial o puntuació No és possible esborrar l\'historial de jocs, l\'historial de trencaclosques o les classificacions. Vull denunciar un jugador - Per denunciar un usuari per %s, fes servir el formulari de denucies També podeu arribar a aquesta pàgina si feu clic al botó de denuncies per %s en una pàgina de perfil. No denunciar jugadors al forum. No ens enviïs correus denunciant jugadors. diff --git a/translation/dest/contact/cs-CZ.xml b/translation/dest/contact/cs-CZ.xml index d22b527433..bc3f2934ef 100644 --- a/translation/dest/contact/cs-CZ.xml +++ b/translation/dest/contact/cs-CZ.xml @@ -27,7 +27,6 @@ Chci vymazat svou historii nebo rating Není možné vymazat Vaši historii her, historii taktických úloh nebo ratingy. Chci nahlásit hráče - Pro nahlášení hráče za %s použijte formulář pro nahlášení Na tuto stránku se můžete také dostat kliknutím na nahlašovací tlačítko %s na profilové stránce. Nenahlašujte hráče ve fóru. Neposílejte nám e-maily s nahlášením. diff --git a/translation/dest/contact/da-DK.xml b/translation/dest/contact/da-DK.xml index f85546316d..f74c91499f 100644 --- a/translation/dest/contact/da-DK.xml +++ b/translation/dest/contact/da-DK.xml @@ -27,12 +27,7 @@ Jeg vil slette min historik eller rating Det er ikke muligt at slette din historik for partier, taktikopgaver eller ratinger. Jeg vil anmelde en spiller - Anmeld en spiller for at snyde - Anmeld en spiller for at tabe med vilje - Anmeld en spiller for chikane - Anmeld en spiller for fornærmelser - Anmeld en spiller af en anden grund - For at anmelde en spiller for %s, brug anmeldelsesformularen + Brug anmeldelsesformularen for at anmelde en spiller Du kan også komme frem til den side ved at klikke på %s anmeldelsesknappen på en profilside. Anmeld ikke spillere i forummet. Send os ikke anmeldelsesmails. diff --git a/translation/dest/contact/de-DE.xml b/translation/dest/contact/de-DE.xml index 215baa1596..103f7db216 100644 --- a/translation/dest/contact/de-DE.xml +++ b/translation/dest/contact/de-DE.xml @@ -27,12 +27,7 @@ Ich möchte meinen Verlauf oder meine Wertung löschen Es ist nicht möglich deinen Spiel-, Puzzleverlauf oder deine Wertung zu löschen. Ich möchte einen Spieler melden - Melde einen Spieler wegen Betrugs - Melde einen Spieler wegen Tiefstapelei - Melde einen Spieler wegen bewusstem Provozierens - Melde einen Spieler wegen Beleidigungen - Melde einen Spieler aus einem anderen Grund - Benutze das Meldeformular, um einen Spieler wegen %s zu melden + Um einen Spieler zu melden, benutze das Meldeformular Du erreichst diese Seite ebenfalls, indem du den %s Meldeknopf auf einer Profilseite klickst. Melde keine Spieler im Forum. Sende uns keine Meldungen per E-Mail. diff --git a/translation/dest/contact/el-GR.xml b/translation/dest/contact/el-GR.xml index 655311f2d5..ea66c47e80 100644 --- a/translation/dest/contact/el-GR.xml +++ b/translation/dest/contact/el-GR.xml @@ -27,7 +27,6 @@ Επιθυμώ να διαγράψω το ιστορικό μου ή το rating Δεν είναι δυνατόν να διαγράψετε το ιστορικό παιχνιδιών σας, ιστορικό γρίφων, ή ratings. Επιθυμώ να αναφέρω έναν παίχτη - Για να αναφέρετε έναν παίκτη για %s, χρησιμοποιήστε τη φόρμα αναφοράς Επίσης μπορείτε να επισκεφτείτε αυτή τη σελίδα με κλικ στο %s κουμπί στη σελίδα προφίλ. Μην αναφέρετε παίκτες στο φόρουμ. Μην μας στέλνετε αναφορές με email. diff --git a/translation/dest/contact/en-US.xml b/translation/dest/contact/en-US.xml index 2f03fa04dc..03c1b5e57e 100644 --- a/translation/dest/contact/en-US.xml +++ b/translation/dest/contact/en-US.xml @@ -27,12 +27,6 @@ I want to clear my history or rating It\'s not possible to clear your game history, puzzle history, or ratings. I want to report a player - Report a player for cheating - Report a player for sandbagging - Report a player for trolling - Report a player for insults - Report a player for some other reason - To report a player for %s, use the report form You can also reach that page by clicking the %s report button on a profile page. Do not report players in the forum. Do not send us report emails. diff --git a/translation/dest/contact/eo-UY.xml b/translation/dest/contact/eo-UY.xml index 61923e5bf8..fb98695f9b 100644 --- a/translation/dest/contact/eo-UY.xml +++ b/translation/dest/contact/eo-UY.xml @@ -27,7 +27,6 @@ Mi volas forigi mian historion aŭ poentaron Ne eblas malplenigi vian ludan historion, puzlan historion aŭ poentaron. Mi volas raporti ludanton - Por raporti ludanton por %s, uzu la raportan formularon Vi ankaŭ povas atingi tiun paĝon alklakante la raportan butonon %s en profilpaĝo. Ne raportu ludantojn en la forumo. Ne sendu al ni retpoŝtajn raportojn. diff --git a/translation/dest/contact/es-ES.xml b/translation/dest/contact/es-ES.xml index 2534bac2d5..52db289338 100644 --- a/translation/dest/contact/es-ES.xml +++ b/translation/dest/contact/es-ES.xml @@ -27,12 +27,7 @@ Quiero borrar mi historial o puntuación No puedes borrar tu historial de partidas, ejercicios o puntuaciones. Quiero denunciar a un jugador - Denunciar a un jugador por hacer trampas - Denunciar a un jugador por reducción intencionada de su puntuación - Denunciar a un jugador por molestar - Denunciar a un jugador por insultos - Denunciar a un jugador por alguna otra razón - Para denunciar a un jugador por %s, utiliza el formulario de denuncia + Para denunciar a un jugador utiliza el formulario de denuncia También puedes acceder a esa página pulsando el botón de denuncia %s en un perfil. No denuncie a jugadores en el foro. No nos envíes correo para denunciar jugadores. @@ -64,7 +59,7 @@ Puedes enviar una apelación a %s. A veces ocurren falsos positivos, y lo lamentamos. Si tu apelación es legítima, levantaremos la prohibición lo antes posible. - Sin embargo, si realmente utilizó asistencia del motor, incluso una sola vez, su cuenta está lamentablemente perdida. + Sin embargo, si realmente has utilizado asistencia del motor, incluso una sola vez, tu cuenta está lamentablemente perdida. No niegues haber hecho trampa. Si quieres que se te permita crear una nueva cuenta, sólo tienes que admitir lo que hiciste, y mostrar que has comprendido que se trataba de un error. Otra restricción Colaboración, legal, comercial @@ -76,5 +71,5 @@ Se aprecia el crédito, pero no es necesario. Ninguna de las anteriores Envíanos un correo electrónico a %s. - Por favor explique su solicitud de forma clara y exhaustiva. Especifique su nombre de usuario en Lichess, y cualquier información que nos pueda ser útil. + Por favor explica tu solicitud de forma clara y exhaustiva. Especifica tu nombre de usuario de Lichess y cualquier información que nos pueda ser útil. diff --git a/translation/dest/contact/eu-ES.xml b/translation/dest/contact/eu-ES.xml index c4cc7cafb7..bc39b9ece4 100644 --- a/translation/dest/contact/eu-ES.xml +++ b/translation/dest/contact/eu-ES.xml @@ -27,12 +27,6 @@ Nire historikoa edo puntuazioa berrezarri nahi ditut Ezin da zure partiden historikoa, ariketena edo puntuazioa berrezarri. Erabiltzaile baten inguruko kexa jarri nahi dut - Jokalari bat tranpa egiten aritu dela salatu - Jokalari bat tranpa egiten aritu dela salatu - Jokalari bat troll bat bezala aritu dela salatu - Jokalari bat iseka egiten aritu dela salatu - Jokalari bat beste zerbaitegatik salatu - Jokalari bati buruzko %s kexa egiteko, erabili kexa formularioa Orrialde horretara jokalariaren profilaren orrialdeko %s berri emateko botoian sakatuta hel zaitezke. Ez erabili foroa jokalarien inguruko kexa bidaltzeko. Ez bidali epostaz kexak. diff --git a/translation/dest/contact/fi-FI.xml b/translation/dest/contact/fi-FI.xml index 3c72c9fae1..4645bbd245 100644 --- a/translation/dest/contact/fi-FI.xml +++ b/translation/dest/contact/fi-FI.xml @@ -27,7 +27,6 @@ Haluan tyhjentää historiani tai vahvuuslukuni Pelihistoriaasi, tehtävähistoriaasi tai vahvuuslukuja ei voi tyhjentää. Haluan ilmoittaa pelaajan - Ilmoittaaksesi pelaajan %s täytä tämä ilmoituslomake Pääset samalle sivulle myös klikkaamalla %s ilmoitusnappia pelaajan profiilisivulla. Älä ilmoita pelaajia foorumilla. Älä lähetä meille ilmoituksia sähköpostilla. diff --git a/translation/dest/contact/fo-FO.xml b/translation/dest/contact/fo-FO.xml index 76425824a0..81b455c63f 100644 --- a/translation/dest/contact/fo-FO.xml +++ b/translation/dest/contact/fo-FO.xml @@ -27,7 +27,6 @@ Eg vil strika mína hendingagongd ella mítt styrkital Tað er ikki møguligt at strika tínar talv- og uppgávuhendingagongdir ella styrkitøl tíni. Eg vil melda ein telvara - Til tess at melda ein telvara fyri %s, nýt fráboðanaroyðublaðið Tú røkkur eisini teirri síðuni við at klikkja %s fráboðanarknøttin á eini vangamyndssíðu. Ikki melda telvarar á torginum. Send okkum ikki teldupostar við fráboðanum. diff --git a/translation/dest/contact/fr-FR.xml b/translation/dest/contact/fr-FR.xml index 6126d93f39..50dd42586c 100644 --- a/translation/dest/contact/fr-FR.xml +++ b/translation/dest/contact/fr-FR.xml @@ -27,12 +27,7 @@ Je veux effacer mon historique ou mon classement Il n\'est pas possible d\'effacer votre historique de jeu, votre historique de problèmes ou vos classements. Je veux signaler un joueur - Signaler un joueur pour tricherie - Signaler un joueur qui perd intentionnellement ses parties - Signaler un joueur pour trolling - Signaler un joueur pour des insultes - Signaler un joueur pour une autre raison - Pour signaler un joueur pour %s, utilisez le formulaire de signalement + Pour signaler un joueur, utilisez le formulaire de signalement. Vous pouvez également atteindre cette page en cliquant sur le bouton de signalement %s sur une page de profil. Ne signalez pas les joueurs dans le forum. Ne nous envoyez pas de courriels de signalement. diff --git a/translation/dest/contact/he-IL.xml b/translation/dest/contact/he-IL.xml index b79f8028c6..44ea6963ab 100644 --- a/translation/dest/contact/he-IL.xml +++ b/translation/dest/contact/he-IL.xml @@ -27,7 +27,6 @@ אני רוצה לנקות את ההיסטוריה או הדירוג שלי לא ניתן לנקות את היסטוריית המשחק, היסטוריית הפאזלים, או הדירוגים שלך. אני רוצה לדווח על שחקן - כדי לדווח על שחקן על %s, השתמש בטופס הדיווח אתה יכול גם להגיע לדף זה על ידי לחיצה על כפתור הדוח %s בדף הפרופיל. אל תדווחו על שחקנים בפורום. אל תשלחו לנו אימיילים כדי לדווח. diff --git a/translation/dest/contact/hi-IN.xml b/translation/dest/contact/hi-IN.xml index d35e3ca48a..6fb8ac4070 100644 --- a/translation/dest/contact/hi-IN.xml +++ b/translation/dest/contact/hi-IN.xml @@ -27,12 +27,6 @@ मैं अपना इतिहास या रेटिंग मिटाना चाहता हूं आपके खेल के इतिहास, पहेली इतिहास, या रेटिंग को मिटाना संभव नहीं है। मैं एक खिलाड़ी की रिपोर्ट करना चाहता हूं - धोखाधड़ी के लिए एक खिलाड़ी की रिपोर्ट करें - सैंडबैगिंग के लिए एक खिलाड़ी की रिपोर्ट करें - ट्रोलिंग के लिए एक खिलाड़ी की रिपोर्ट करें - अपमान के लिए एक खिलाड़ी की रिपोर्ट करें - किसी अन्य कारण से किसी खिलाड़ी की रिपोर्ट करें - किसी खिलाड़ी को %s के लिए रिपोर्ट करने के लिए, रिपोर्ट फ़ॉर्म का उपयोग करें आप प्रोफाइल पेज पर %s रिपोर्ट बटन पर क्लिक करके भी उस पृष्ठ पर पहुँच सकते हैं। मंच में खिलाड़ियों को रिपोर्ट न करें। हमें रिपोर्ट ईमेल पर न भेजें। diff --git a/translation/dest/contact/hr-HR.xml b/translation/dest/contact/hr-HR.xml index a01a010084..374cb4a818 100644 --- a/translation/dest/contact/hr-HR.xml +++ b/translation/dest/contact/hr-HR.xml @@ -27,7 +27,6 @@ Želim izbrisati svoju povijest ili ocjenu Nije moguće izbrisati svoju povijest igara, povijest zagonetka ili ocjenu. Želim prijaviti igrača - Da prijevite igrača za %s koristite obrazac za prijavljivanje Do te stranice možete doći i klikom na %s gumb za izvještaj na stranici profila. Nemojte prijavljivati igrače na forumu. Ne šaljite nam e-poštu s izvješćima. diff --git a/translation/dest/contact/hu-HU.xml b/translation/dest/contact/hu-HU.xml index 5092e4e41b..e04391dec2 100644 --- a/translation/dest/contact/hu-HU.xml +++ b/translation/dest/contact/hu-HU.xml @@ -27,12 +27,6 @@ Szeretném törölni az előzményeket vagy az értékszámom Nincs lehetőség a játékelőzményed, feladványaid és értékszámod törlésére. Jelentenék egy felhasználót - Játékos jelentése csalás miatt - Játékos jelentése félrevezetés (sandbagging) miatt - Játékos jelentése trollkodás miatt - Játékos jelentése sértegetés miatt - Játékos jelentése egyéb okból kifolyólag - Játékos jelentéséhez %s miatt használd a bejelentő lapot Amit ugyancsak elérhetsz, ha a %s jelentése gombra kattintasz a profil oldalon. Ne jelents játékosokat a fórumban. Ne küldj nekünk emailt emiatt. diff --git a/translation/dest/contact/id-ID.xml b/translation/dest/contact/id-ID.xml index f759814c49..be70acddec 100644 --- a/translation/dest/contact/id-ID.xml +++ b/translation/dest/contact/id-ID.xml @@ -27,7 +27,6 @@ Saya ingin menghapus riwayat atau rating Sangat mustahil dapat menghapus riwayat permainan, riwayat teka-teki, atau rating Anda. Saya ingin melaporkan pemain - Untuk melaporkan pemain terkait %s, gunakan kolom lapor Anda juga dapat mencapai halaman itu dengan mengeklik tombol laporan terkait %s pada halaman profil. Jangan melaporkan pemain di dalam forum. Jangan kirimkan email laporan kepada kami. diff --git a/translation/dest/contact/it-IT.xml b/translation/dest/contact/it-IT.xml index 462b60b354..d0555c079d 100644 --- a/translation/dest/contact/it-IT.xml +++ b/translation/dest/contact/it-IT.xml @@ -27,10 +27,7 @@ Voglio cancellare la mia cronologia o il mio punteggio Non è possibile cancellare la cronologia delle partite, la cronologia delle tattiche né i punteggi. Voglio segnalare un giocatore - Segnala un giocatore per imbrogli - Segnala un giocatore per insulti - Segnala un giocatore per qualche altro motivo - Per segnalare un giocatore per %s, utilizza il modulo di segnalazione + Per segnalare un giocatore, usa il modulo di segnalazione Puoi raggiungere quella pagina anche cliccando sul pulsante %s segnala in una pagina di profilo. Non segnalare i giocatori tramite il forum. Non inviarci email di segnalazione. diff --git a/translation/dest/contact/ja-JP.xml b/translation/dest/contact/ja-JP.xml index 30bced0bc8..7e840bb33f 100644 --- a/translation/dest/contact/ja-JP.xml +++ b/translation/dest/contact/ja-JP.xml @@ -27,12 +27,6 @@ 対局履歴やレーティングをリセットしたい 対局や問題の履歴、レーティングはリセットできません。 誰かを通報したい - プレイヤーを不正行為で通報する - プレイヤーを過小レートで通報する - プレイヤーを荒らし行為で通報する - プレイヤーを暴言行為で通報する - プレイヤーをその他の理由で通報する - %s について他のプレイヤーを通報するには、通報用フォームを使ってください その人のプロフィールページの通報ボタン(右上 %s)からもできます。 他のプレイヤーをフォーラムに通報しないでください。 通報の際は Lichess にメールを送らないでください。 diff --git a/translation/dest/contact/kk-KZ.xml b/translation/dest/contact/kk-KZ.xml index d908625016..d869f966b7 100644 --- a/translation/dest/contact/kk-KZ.xml +++ b/translation/dest/contact/kk-KZ.xml @@ -27,7 +27,7 @@ Мен өзімнің ойын тарихымды не рейтингімді өшіргім келеді Ойын тарихын, жұмбақ шешу тарихын немесе рейтингті өшіру мүмкін емес. Мен бір ойыншыға шағым білдіргім келеді - %s қатысты шағым жіберу үшін шағым үлгісін қолданыңыз + Ойыншы үстіне шағымдану үшін шағым үлгісін ашыңыз Сонымен қатар, сіз сол парақшаны, куәлік парақшадағы %s шағым батырмасына басып, аша аласыз. Форумдағы ойыншыларға қарсы шағым жібермеңіз. Бізге поштамен шағым жібермеңіз. diff --git a/translation/dest/contact/lt-LT.xml b/translation/dest/contact/lt-LT.xml index e60fc18442..bbaff3d3dd 100644 --- a/translation/dest/contact/lt-LT.xml +++ b/translation/dest/contact/lt-LT.xml @@ -27,12 +27,7 @@ Noriu išvalyti savo istoriją ir reitingą Nėra galimybės išvalyti savo partijų istorijos, galvosūkių istorijos ar reitingų. Noriu pranešti apie žaidėją - Pranešti apie žaidėją už sukčiavimą - Pranešti apie žaidėją už reitingo manipuliaciją - Pranešti apie žaidėją už provokacijas - Pranešti apie žaidėją dėl įžeidimų - Pranešti apie žaidėją dėl kitos priežasties - Norėdami pranešti apie žaidėją už %s, naudokite pranešimo formą + Norėdami pranešti apie žaidėją naudokite pranešimo formą Tą puslapį galite pasiekti spustelėdami %s pranešimo mygtuką profilio puslapyje. Nepraneškite apie žaidėjus forume. Nesiųskite pranešimų el. laiškų. diff --git a/translation/dest/contact/lv-LV.xml b/translation/dest/contact/lv-LV.xml index e067d76202..97b315a074 100644 --- a/translation/dest/contact/lv-LV.xml +++ b/translation/dest/contact/lv-LV.xml @@ -27,7 +27,6 @@ Vēlos notīrīt savu vēsturi vai reitingu Nav iespējams notīrīt spēļu vēsturi, puzļu vēsturi vai reitingus. Vēlos ziņot par spēlētāju - Lai ziņotu par spēlētāju dēļ %s, izmantojiet ziņojuma veidlapu Varat arī nonākt tajā lapā, klikšķinot uz %s pogas \"ziņot\" profila lapā. Neziņojiet par spēlētājiem forumā. Nesūtiet mums ziņojumu e-pastus. diff --git a/translation/dest/contact/mk-MK.xml b/translation/dest/contact/mk-MK.xml index 7800ef725e..362a57b646 100644 --- a/translation/dest/contact/mk-MK.xml +++ b/translation/dest/contact/mk-MK.xml @@ -27,7 +27,6 @@ Сакам да ја избришам мојата историја или мојот рејтинг Не е возможно да ја избришете вашата историја на партии, загатки, или рејтинг. Сакам да пријавам играч - За да пријавите играч за %s, користете го формуларот за пријава На страната можете да стигнете и преку кликање на %s копчето на нивниот профил. Не пријавувај играчи на форумот. Не ни праќај е-пошта со пријави. diff --git a/translation/dest/contact/my-MM.xml b/translation/dest/contact/my-MM.xml index 3ea04e700d..9a67b31a9a 100644 --- a/translation/dest/contact/my-MM.xml +++ b/translation/dest/contact/my-MM.xml @@ -1,2 +1,4 @@ - + + ကစားသမား တစ်ဦးနှင့် ပတ်သက်၍ တိုင်ကြားလိုလျှင် တိုင်ကြားရေးပုံစံကို သုံးပါ + diff --git a/translation/dest/contact/nb-NO.xml b/translation/dest/contact/nb-NO.xml index 5084a94045..d8b6713135 100644 --- a/translation/dest/contact/nb-NO.xml +++ b/translation/dest/contact/nb-NO.xml @@ -27,12 +27,6 @@ Jeg vil slette historikken eller ratingen min Det er ikke mulig å slette historikken din for partier, sjakknøtter eller ratinger. Jeg vil rapportere en spiller - Rapporter en spiller for juks - Rapporter en spiller for å tape med vilje - Rapporter en spiller for trolling - Rapporter en spiller for fornærmelser - Rapporter en spiller for en annen grunn - Bruk rapportskjemaet om du vil melde en spiller for %s Du kan også komme til den sida ved å klikke på %s meldingsknappen på ei brukerside. Ikke meld spillere i forumet. Ikke send oss epost med anmelding av spillere. diff --git a/translation/dest/contact/nl-NL.xml b/translation/dest/contact/nl-NL.xml index 42c33a2882..ead36652de 100644 --- a/translation/dest/contact/nl-NL.xml +++ b/translation/dest/contact/nl-NL.xml @@ -27,12 +27,6 @@ Ik wil mijn geschiedenis of rating wissen Het is niet mogelijk uw partijgeschiedenis, puzzelgeschiedenis of rating te wissen. Ik wil een speler rapporteren - Rapporteer een speler die valsspeelt - Rapporteer een speler die opzettelijk partijen verliest - Rapporteer een speler die bewust provoceert - Rapporteer een speler die beledigt - Rapporteer een speler om een andere reden - Om een speler voor %s te rapporteren, gebruik het rapportformulier U kunt deze pagina ook bereiken door op de %s rapporteerknop op een profielpagina te klikken. Rapporteer geen spelers op het forum. Stuur ons geen e-mail om een speler te rapporteren. diff --git a/translation/dest/contact/nn-NO.xml b/translation/dest/contact/nn-NO.xml index a6ca23c438..f47e061bc6 100644 --- a/translation/dest/contact/nn-NO.xml +++ b/translation/dest/contact/nn-NO.xml @@ -27,12 +27,7 @@ Jeg vil slette historikken eller ratinga mi Det er ikkje mogleg å slette historikken din for parti, taktikkøvingar eller ratingar. Eg vil rapportere ein spelar - Rapporter ein spelar for fusking - Rapporter ein spelar for å tapa med forsett (\"sandbagging\") - Rapporter ein spelar for trolling - Rapporter ein spelar for trakassering - Rapporter ein spelar av andre årsaker - Bruk rapportskjemaet om du vil rapportere ein spelar for %s + Bruk meldeskjemaet om du vil rapportera ein spelar Du kan også kome til den sida ved å klikke på %s meldingsknappen på ei brukerside. Ikkje rapporter spelarar i forumet. Ikkje send oss epost med rapportering av spelarar. diff --git a/translation/dest/contact/pl-PL.xml b/translation/dest/contact/pl-PL.xml index 89e1b56dac..95c1b43715 100644 --- a/translation/dest/contact/pl-PL.xml +++ b/translation/dest/contact/pl-PL.xml @@ -27,12 +27,7 @@ Chcę wyczyścić swoją historię lub swój ranking Nie jest możliwe wyczyszczenie Twojej historii i rankingu. Chcę zgłosić gracza - Zgłoś gracza za oszukiwanie - Zgłoś gracza za zaniżanie swojego poziomu - Zgłoś gracza za trolowanie - Zgłoś gracza za obrażanie - Zgłoś gracza z innego powodu - Aby zgłosić gracza za %s, użyj formularza + Aby zgłosić gracza, użyj formularza Możesz również dotrzeć do tej strony klikając przycisk raportu %s na stronie profilowej. Nie zgłaszaj graczy na forum. Nie wysyłaj nam zgłoszeń na e-mail. diff --git a/translation/dest/contact/pt-BR.xml b/translation/dest/contact/pt-BR.xml index 2cf64de0b2..0b9147dccd 100644 --- a/translation/dest/contact/pt-BR.xml +++ b/translation/dest/contact/pt-BR.xml @@ -27,11 +27,6 @@ Quero limpar meu histórico ou pontuação Não é possível limpar seu histórico de jogos, quebra-cabeças ou pontuações. Quero denunciar um jogador - Reportar um jogador por trapaça - Reportar um jogador por trollagem - Reportar um jogador por insultos - Reportar um jogador por algum outro motivo - Para denunciar um jogador de %s, use o formulário de denúncia Você também pode chegar a essa página clicando no botão de denúncia %s em uma página de perfil. Não denuncie jogadores no fórum. Não envie denúncias por e-mails. diff --git a/translation/dest/contact/pt-PT.xml b/translation/dest/contact/pt-PT.xml index 7e1c41a2a0..034371fdb3 100644 --- a/translation/dest/contact/pt-PT.xml +++ b/translation/dest/contact/pt-PT.xml @@ -27,7 +27,6 @@ Quero limpar o meu histórico ou pontuação Não é possível limpar o teu histórico de jogos, histórico de problemas ou pontuações. Quero denunciar um jogador - Para denunciar um jogador de %s, usa o formulário de denúncia Também podes aceder a essa página clicando no butão de denúncia %s numa página de perfil. Não denuncies jogadores no fórum. Não nos envies e-mails de denúnica. diff --git a/translation/dest/contact/ro-RO.xml b/translation/dest/contact/ro-RO.xml index d7a0775e07..c42d35059e 100644 --- a/translation/dest/contact/ro-RO.xml +++ b/translation/dest/contact/ro-RO.xml @@ -26,12 +26,6 @@ Vreau să îmi sterg istoricul sau ratingul Nu se poate curăța istoricul jocurilor, istoricul puzzle-urilor sau evaluările. Vreau să raportez un jucător - Raportați un jucător care trișează - Raportați un jucător care joacă mai slab în mod intenționat - Raportați un jucător care provoacă discuții inutile - Raportați un jucător pentru insulte - Raportează un jucător pentru un alt motiv - Pentru a raporta un jucător pentru %s, folosiți formularul de raport De asemenea, poți ajunge la acea pagină dând click pe butonul %s pentru raport pe o pagină a profilului. Nu raportaţi jucătorii din forum. Nu ne trimiteți e-mailuri de raportare. diff --git a/translation/dest/contact/ru-RU.xml b/translation/dest/contact/ru-RU.xml index d6e647ac10..02427457f0 100644 --- a/translation/dest/contact/ru-RU.xml +++ b/translation/dest/contact/ru-RU.xml @@ -27,12 +27,7 @@ Я хочу очистить свою историю или рейтинг Невозможно очистить историю игр, историю шахматных задач или рейтинг. Я хочу пожаловаться на игрока - Сообщить о мошенничестве игрока - Сообщить о манипуляциях с рейтингом - Сообщить о троллинге - Сообщить об оскорблениях - Сообщить об игроке по другой причине - Чтобы пожаловаться на игрока за %s, используйте эту форму + Чтобы сообщить о нарушении правил игроком, заполните форму Также вы можете перейти на эту страницу, нажав %s \"Пожаловаться\" на странице профиля. Не пишите об игроках на форуме. Не шлите нам электронные письма с жалобами. diff --git a/translation/dest/contact/sk-SK.xml b/translation/dest/contact/sk-SK.xml index a0668ca3d0..74472e95dc 100644 --- a/translation/dest/contact/sk-SK.xml +++ b/translation/dest/contact/sk-SK.xml @@ -27,7 +27,6 @@ Chcem vymazať svoju históriu alebo hodnotenie Nieje možné vymazať tvoju históriu hier, šachových rébusov či hodnotenia. Chcem nahlásiť hráča - Pre nahlásenie hráča kvôli %s, použi ohlasovací formulár Môžeš tiež prejsť na danú stránku kliknutím na %s nahlasovacie tlačidlo na profilovej stránke. Nenahlasuj hráčov cez fórum. Neposielaj nám nahlásenie hráča emailom. diff --git a/translation/dest/contact/sl-SI.xml b/translation/dest/contact/sl-SI.xml index bbc0389ba6..28b53b018f 100644 --- a/translation/dest/contact/sl-SI.xml +++ b/translation/dest/contact/sl-SI.xml @@ -27,7 +27,6 @@ Hočem počistiti svojo zgodovino ali rating Ni možno pobrisati vaše zgodovine igranih iger, zgodovine ugank ali ratinga. Hočem prijaviti igralca - Za prijavo igralca zaradi %s, uporabi obrazec za prijavo Do te strani lahko pride tudi s klikom na gumb %s na strani profila uporabnika. Ne prijavite igralcev na forumu. Ne pošiljajte nam elektronskih pisem s prijavo. diff --git a/translation/dest/contact/sq-AL.xml b/translation/dest/contact/sq-AL.xml index e7f96d2f48..fea46f4c3b 100644 --- a/translation/dest/contact/sq-AL.xml +++ b/translation/dest/contact/sq-AL.xml @@ -27,7 +27,6 @@ Dua të fshij historinë time ose rating-un Nuk është e mundur të fshini historinë e lojëve, historinë e taktikave, dhe as rating-ut. Dua të raportoj një lojtar - Për të raportuar një lojtar për %s, përdorni formularin e raportimit Ju mund të shkoni në atë faqe edhe duke klikuar butonin e raportimit %s në një faqe profili. Mos raportoni lojtarët në forum. Mos na dërgoni email-a për raportim. diff --git a/translation/dest/contact/sr-SP.xml b/translation/dest/contact/sr-SP.xml index 7011330506..8cbb1653b0 100644 --- a/translation/dest/contact/sr-SP.xml +++ b/translation/dest/contact/sr-SP.xml @@ -27,12 +27,6 @@ Желим да избришем своју историју и рејтинг Није могуће избрисати вашу историју парија ни проблема, као ни рејтинг. Желим да пријавим играча - Пријавите играча због варања - Пријавите играча због играња лошијег од назначеног - Пријавите играча због троловања - Пријавите играча због вријеђања - Пријавите играча због неког другог разлога - Да бисте пријавили играча због %s, користите форму за пријављивање Такође можете доћи до те странице ако притиснете на %s пријави дугме на страници налога. Не пријављуј играче на форуму. Не шаљите нам пријаве е-поштом. diff --git a/translation/dest/contact/sv-SE.xml b/translation/dest/contact/sv-SE.xml index 1f9b57c8c7..50acf7b75c 100644 --- a/translation/dest/contact/sv-SE.xml +++ b/translation/dest/contact/sv-SE.xml @@ -27,12 +27,6 @@ Jag vill rensa min historik eller rating Det är inte möjligt att rensa din partihistorik, historik för schackproblem eller rating. Jag vill rapportera en spelare - Rapportera en spelare för fusk - Rapportera en spelare för manipulation av rating - Rapportera en spelare för trollning - Rapportera en spelare för förolämpningar - Rapportera en spelare av någon annan anledning - För att rapportera en spelare för %s, använder du rapportformuläret Du kan också nå den sidan genom att klicka på knappen %s rapportera på en profilsida. Rapportera inte spelare i forumet. Skicka oss inte rapporter via e-post. diff --git a/translation/dest/contact/th-TH.xml b/translation/dest/contact/th-TH.xml index ccaf33f654..0a5d72d707 100644 --- a/translation/dest/contact/th-TH.xml +++ b/translation/dest/contact/th-TH.xml @@ -24,7 +24,6 @@ ฉันต้องการล้างประวัติหรือระดับคะแนนของฉัน เป็นไปไม่ได้ที่จะล้างประวัติเกม, ประวัติปริศนา หรือระดับคะแนนของคุณ ฉันต้องการร้องเรียนผู้เล่น - เพื่อร้องเรียนผู้เล่นสำหรับ %s, ใช้แบบรายงาน คุณสามารถไปที่หน้านั้นได้โดยการคลิกปุ่มรายงาน %s บนหน้าโปรไฟล์ อย่าร้องเรียนผู้เล่นในห้องอภิปราย อย่าส่งอีเมลร้องเรียนให้เรา diff --git a/translation/dest/contact/tr-TR.xml b/translation/dest/contact/tr-TR.xml index 8c18f95957..7f25253de7 100644 --- a/translation/dest/contact/tr-TR.xml +++ b/translation/dest/contact/tr-TR.xml @@ -27,12 +27,6 @@ Oyun geçmişimi veya puanımı sıfırlamak istiyorum Oyun geçmişinizi, bulmaca geçmişinizi veya puanlarınızı sıfırlamamız maalesef mümkün değil. Bir oyuncuyu şikâyet etmek istiyorum - Hile yapan bir oyuncuyu şikâyet et - Kasıtlı olarak puanını düşüren bir oyuncuyu şikâyet et - Can sıkıntısı veren bir oyuncuyu şikâyet et - Hakaret eden bir oyuncuyu şikâyet et - Farklı bir nedenden ötürü bir oyuncuyu şikâyet et - %s sebebiyle şikâyette bulunmak için şikâyet formunu kullanın Ayrıca, oyuncunun profilindeki %s butonuna tıklayarak şikâyet formuna ulaşabilirsiniz. Forumdaki oyuncular için şikâyette bulunmayın. Bize şikâyet e-postaları göndermeyin. diff --git a/translation/dest/contact/uk-UA.xml b/translation/dest/contact/uk-UA.xml index 9dec745b3e..152c5e2430 100644 --- a/translation/dest/contact/uk-UA.xml +++ b/translation/dest/contact/uk-UA.xml @@ -27,7 +27,6 @@ Я хочу очистити свою історію або рейтинг Неможливо очистити історію ігор, шахових задач або рейтинг. Я хочу поскаржитись на гравця - Щоб поскаржитись на гравця за %s, використовуйте форму звіту Ви також можете перейти на цю сторінку, натиснувши кнопку звіту %s на сторінці профілю. Не скаржтесь на гравців на форумі. Не надсилайте нам листи зі скаргами. diff --git a/translation/dest/contact/vi-VN.xml b/translation/dest/contact/vi-VN.xml index d1dcc426da..00a53f09ca 100644 --- a/translation/dest/contact/vi-VN.xml +++ b/translation/dest/contact/vi-VN.xml @@ -27,7 +27,6 @@ Tôi muốn xóa lịch sử hoặc hệ số Bạn không thể xóa lịch sử các ván đấu, giải đố hay hệ số. Tôi muốn gửi báo cáo về một người chơi - Để báo cáo một người chơi cho %s, sử dụng mẫu báo cáo Bạn cũng có thể truy cập trang đó bằng cách bấm vào nút báo báo %s trên một trang cá nhân. Vui lòng không báo cáo người chơi trong diên đàn. Vui lòng không gửi cho chúng tôi email báo cáo. diff --git a/translation/dest/contact/zh-CN.xml b/translation/dest/contact/zh-CN.xml index 10c001bdde..d0d41c0348 100644 --- a/translation/dest/contact/zh-CN.xml +++ b/translation/dest/contact/zh-CN.xml @@ -27,7 +27,6 @@ 我想要清除我的历史或积分 清除您的对局历史,训练题历史,或积分是不可能的。 我想要举报一个用户 - 想要因为%s而举报用户,请使用举报表单 您也可以在该用户的个人资料页单击 %s 举报按钮。 请不要在论坛举报。 请不要向我们发送电邮举报。 diff --git a/translation/dest/contact/zh-TW.xml b/translation/dest/contact/zh-TW.xml index e88472f107..af2a2b0793 100644 --- a/translation/dest/contact/zh-TW.xml +++ b/translation/dest/contact/zh-TW.xml @@ -24,7 +24,6 @@ 我想要把我的評分紀錄刪除 我們無法將您的下棋歷史、解題歷史和評分消除 我想要舉報一位玩家 - 舉報玩家的%s行為,請填寫舉報表單 請不要在論壇中檢舉使用者 請不要使用電子郵件向我們舉報玩家 我想要提出遊戲bug diff --git a/translation/dest/preferences/et-EE.xml b/translation/dest/preferences/et-EE.xml index 20e7149541..31001d98a3 100644 --- a/translation/dest/preferences/et-EE.xml +++ b/translation/dest/preferences/et-EE.xml @@ -17,11 +17,11 @@ Pime male Malekell Kümnendikku sekundit - Kui aega on jäänud <10 sekundi + Kui aega on jäänud <10 sekundi Horisontaalne roheline progressi riba Heli kui aeg hakkab lõppema Anna lisaaega - Mängu seaded + Mängu seaded Kuidas malendeid liigutada? Vajuta kahele ruudule Lohista malendit @@ -41,5 +41,7 @@ Liiguta kuningat kaks ruutu Liiguta kuningas vankri peale Sisestage käigud klaviatuuril + Liigutage nooled kehtivate käikude juurde + Öelge kaotuse või viigi korral \"Hea mäng, hästi mängitud\" Teie eelistused on salvestatud. diff --git a/translation/dest/puzzle/et-EE.xml b/translation/dest/puzzle/et-EE.xml index f754d7f19a..9d2380ecd9 100644 --- a/translation/dest/puzzle/et-EE.xml +++ b/translation/dest/puzzle/et-EE.xml @@ -6,6 +6,7 @@ Lisavalikud Pikkused Eesmärgid + Allikas Sinu lahendamisskoor: %s Leia parim käik valgele. Leia parim käik mustale. @@ -31,4 +32,6 @@ Raske Väga raske Näide + lahendatud + ebaõnnestus diff --git a/translation/dest/puzzleTheme/az-AZ.xml b/translation/dest/puzzleTheme/az-AZ.xml index 90948aa0af..c9d5ec3d5e 100644 --- a/translation/dest/puzzleTheme/az-AZ.xml +++ b/translation/dest/puzzleTheme/az-AZ.xml @@ -5,6 +5,9 @@ Üstünlük Həlledici üstünlük əldə etmək üçün fürsətdən istifadə edin. (200-600sp arası) Anastasiya matı + Bir atın köməyilə top və ya vəzir, rəqib şahını lövhənin kənarında digər bir rəqib fiquru ilə mat edir. + Ərəb matı + At və top, rəqib şahını lövhənin bir küncünə sıxışdırıb mat edir. f2 və ya f7 hücumu Qızardılmış qaraciyər (feqatello) hücumunda olduğu kimi, f2-f7 piyadasına hədəflənmiş hücum. Cəlbetmə @@ -13,12 +16,17 @@ Öz fiqurları arasında sıxılıb qalmış şahı mat et. Fil sonluğu Yalnız fillər və piyadalardan ibarət oyun sonu. + Boden matı + İki fil, öz fiqurları tərəfindən bloklanan şahı çarpaz diaqonallardan hücum edərək mat edir. Qalaqurma Şahı təhlükəsiz yerə gətirin və hücum üçün topu hazırlayın. Müdafiəçini vurmaq Bir fiquru müdafiə edən başqa bir fiquru ələ keçirərək, müdafiəsiz qalan digər fiquru da növbəti gedişdə ələ keçirin. Əzici üstünlük Əzici üstünlük əldə etmək üçün rəqibin kobud səhvini müəyyənləşdirin. (600sp və ondan yüksək) + İki fil matı + İki fil, öz fiqurları tərəfindən bloklanan şahı bitişik diaqonallardan hücum edərək mat edir. + Koziyo matı Bərabərləşmə İtirilmiş bir pozisiyadan çıxın, heç-heçə və ya balanslı bir mövqe əldə edin. (200sp və daha az) Şah cinahında hücum diff --git a/translation/dest/puzzleTheme/de-DE.xml b/translation/dest/puzzleTheme/de-DE.xml index 483b601aca..18c3408257 100644 --- a/translation/dest/puzzleTheme/de-DE.xml +++ b/translation/dest/puzzleTheme/de-DE.xml @@ -6,8 +6,8 @@ Nutze deine Chance, um einen entscheidenden Vorteil zu erlangen. (200 Hundertstel-Bauern ≤ Bewertung ≤ 600 Hundertstel-Bauern) Anastasia-Matt Ein Springer und ein Turm bzw. eine Dame arbeiten zusammen, um den gegnerischen König zwischen dem Brettrand und einer seiner eigenen Figuren einzuschließen. - Arabisches Matt - Ein Springer und ein Turm arbeiten zusammen, um den gegnerischen König in einer Ecke des Bretts matt zu setzen. + Arabisches Matt + Ein Springer und ein Turm arbeiten zusammen, um den gegnerischen König in einer Ecke des Bretts matt zu setzen. Angriff auf f2 oder f7 Ein Angriff, der sich auf den Bauern auf f2 oder f7 konzentriert, wie z. B. bei der Fegatello-Variante. Hinlenkung oder \"Magnet\" @@ -16,18 +16,18 @@ Setze den König auf der Grundreihe matt, wenn er dort durch seine eigenen Figuren blockiert wird. Läuferendspiel Ein Endspiel nur mit Läufern und Bauern. - Bodens-Matt - Zwei angreifende Läufer auf sich kreuzenden (Neben-)Diagonalen setzen den König matt, der durch eigene Figuren behindert wird. + Boden-Matt + Zwei angreifende Läufer auf sich kreuzenden (Neben-)Diagonalen setzen den König matt, der durch eigene Figuren behindert wird. Rochade Bringe deinen König in Sicherheit und den Turm in Angriffsposition. Schlage den Verteidiger Schlagen einer Figur, die für die Deckung einer anderen Figur von entscheidender Bedeutung ist, sodass die jetzt nicht mehr gedeckte Figur mit dem folgendem Zug geschlagen werden kann. Vernichtend Finde den gegnerischen Patzer, um einen vernichtenden Vorteil zu erhalten. (Bewertung ≥ 600 Hundertstel-Bauern) - Läuferpaarmatt - Zwei angreifende Läufer auf nebeneinander liegenden Diagonalen setzen einen - von eigenen Figuren behinderten - König matt. - Sternmatt - Eine Dame setzt den nebenstehenden König matt, dessen einzigen zwei Fluchtfelder durch eigene Figuren verstellt sind. + Läuferpaarmatt + Zwei angreifende Läufer auf nebeneinander liegenden Diagonalen setzen einen - von eigenen Figuren behinderten - König matt. + Sternmatt + Eine Dame setzt den nebenstehenden König matt, dessen einzigen zwei Fluchtfelder durch eigene Figuren verstellt sind. Ausgleich Komme aus einer verlorenen Stellung zurück und sichere dir ein Remis oder eine ausgeglichene Stellung. (Bewertung ≤ 200 Hundertstel-Bauern) Angriff auf den Königsflügel diff --git a/translation/dest/puzzleTheme/el-GR.xml b/translation/dest/puzzleTheme/el-GR.xml index 46f6439b89..97a1e134e2 100644 --- a/translation/dest/puzzleTheme/el-GR.xml +++ b/translation/dest/puzzleTheme/el-GR.xml @@ -4,6 +4,9 @@ Ένα πιόνι που προάγεται ή απειλεί να προαχθεί είναι κλειδί για αυτή την τακτική. Πλεονέκτημα Αρπάξτε την ευκαιρία ώστε να αποκτήσετε ένα αποφασιστικό πλεονέκτημα. (200cp ≤ eval ≤ 600cp) + To ματ της Αναστασίας + Ένας ίππος και ένας πύργος ή βασίλισσα κάνουν ματ στον αντίπαλο βασιλιά στο περιθώριο της σκακιέρας, όταν ένα φιλικό κομμάτι του εμποδίζει την διαφυγή. + Αραβικό ματ Επίθεση στο f2 ή f7 Μια επίθεση που εστιάζει στο πιόνι f2 ή f7, όπως στην επίθεση Φράιντ Λίβερ. Έλξη @@ -12,6 +15,7 @@ Κάντε ματ στον βασιλιά στην τελευταία γραμμή όταν είναι παγιδευμένος εκεί από τα κομμάτια του. Φινάλε Αξιωματικών Ένα τέλος παρτίδας μόνο με αξιωματικούς και πιόνια. + Ματ του Μποντάν Pοκέ Εξασφαλίστε την ασφάλεια του βασιλιά και αναπτύξτε τον πύργο για επίθεση. Αιχμαλωτίστε τον αμυνόμενο @@ -92,7 +96,7 @@ Τέσσερις κινήσεις ή περισσότερα για να κερδίσετε. Επίθεση ακτίνας Χ Τσούγκτσβανγκ - Ο αντίπαλος είναι περιορισμένος στις κινήσεις που μπορεί να κάνεί και οποιαδήποτε κίνηση επιλέξει επιδεινώνει την θέση του. + Ο αντίπαλος είναι περιορισμένος στις κινήσεις που μπορεί να κάνει και οποιαδήποτε κίνηση επιλέξει επιδεινώνει την θέση του. Προτεινόμενο μίγμα Λίγο απ\' όλα. Δεν ξέρετε τι να περιμένετε, οπότε παραμένετε σε ετοιμότητα! Όπως στα πραγματικά παιχνίδια. diff --git a/translation/dest/puzzleTheme/es-ES.xml b/translation/dest/puzzleTheme/es-ES.xml index a8e3d0a9d1..2f7dab2599 100644 --- a/translation/dest/puzzleTheme/es-ES.xml +++ b/translation/dest/puzzleTheme/es-ES.xml @@ -6,8 +6,8 @@ Aprovecha la oportunidad de obtener una ventaja decisiva. (200cp ≤ eval ≤ 600cp) Mate de Anastasia Un caballo y una torre o dama se unen para atrapar al rey contrario entre un extremo del tablero y una pieza de su bando. - Mate árabe - Un caballo y una torre se unen para atrapar al rey contrario en una esquina del tablero. + Mate árabe + Un caballo y una torre se unen para atrapar al rey contrario en una esquina del tablero. Atacando f2 o f7 Un ataque centrado en el peón f2 o f7, como en la apertura Fried Liver. Atracción @@ -16,18 +16,18 @@ Jaque mate en la última fila, donde el rey se encuentra atrapado por sus propias piezas. Final de alfiles Un final solo con alfiles y peones. - Mate de Boden - Dos alfiles atacantes en diagonales cruzadas dan mate al rey obstruido por piezas de su bando. + Mate de Boden + Dos alfiles atacantes en diagonales cruzadas dan mate al rey obstruido por piezas de su bando. Enroque Coloca el rey a salvo y pone a la torre en juego para el ataque. Capturar al defensor Eliminar una pieza fundamental para la defensa de otra, permitiendo capturar la pieza ahora indefensa en el siguiente movimiento. Aplastante Detecta el error del oponente para obtener una ventaja decisiva. (eval ≥ 600cp) - Mate de dos alfiles - Dos alfiles atacantes en diagonales adyacentes dan mate al rey obstruido por piezas de su bando. - Mate de Cozio - Una dama da mate al rey adyacente, cuyas únicas dos casillas de escape están obstruidas por piezas de su bando. + Mate de dos alfiles + Dos alfiles atacantes en diagonales adyacentes dan mate al rey obstruido por piezas de su bando. + Mate de Cozio + Una dama da mate al rey adyacente, cuyas únicas dos casillas de escape están obstruidas por piezas de su bando. Igualdad Vuelve de una posición perdedora y asegura un empate o una posición equilibrada. (eval ≤ 200cp) Ataque en el flanco de rey @@ -44,7 +44,7 @@ Jaque con dos piezas a la vez, como resultado de un ataque descubierto donde tanto la pieza en movimiento como la desvelada atacan al rey del oponente. Final Una táctica durante la última fase de la partida. - Una táctica que involucra la regla en passant, donde un peón puede capturar a un peón oponente que lo ha pasado por alto usando su movimiento inicial de dos casillas. + Una táctica que involucra la captura al paso, donde un peón puede capturar a un peón oponente que lo ha pasado por alto usando su movimiento inicial de dos casillas. Rey expuesto Una táctica que involucra a un rey con poca defensa a su alrededor, a menudo conduce a jaque mate. Ataque doble diff --git a/translation/dest/puzzleTheme/et-EE.xml b/translation/dest/puzzleTheme/et-EE.xml index d709664e84..0fc5567fa7 100644 --- a/translation/dest/puzzleTheme/et-EE.xml +++ b/translation/dest/puzzleTheme/et-EE.xml @@ -3,4 +3,7 @@ Eelis Vaatamisväärsus Vangerdus + Tagurpidisidumine + Umbmatt + Lõksus malend diff --git a/translation/dest/puzzleTheme/fr-FR.xml b/translation/dest/puzzleTheme/fr-FR.xml index f0b00ef3f3..d56b737a8f 100644 --- a/translation/dest/puzzleTheme/fr-FR.xml +++ b/translation/dest/puzzleTheme/fr-FR.xml @@ -6,8 +6,8 @@ Saisissez votre chance d\'obtenir un avantage décisif. (200cp ≤ évaluation ≤ 600cp) Mat d\'Anastasie Un cavalier et une tour ou une dame s\'associent pour piéger le roi adverse entre le bord de l\'échiquier et une pièce amie. - Mat des Arabes - Un cavalier et une tour s\'associent pour piéger le roi adverse sur un coin de l\'échiquier. + Mat des Arabes + Un cavalier et une tour s\'associent pour piéger le roi adverse dans un coin de l\'échiquier. Attaque en f2 ou f7 Une attaque sur le pion f2 ou f7, comme dans l\'attaque fegatello/Fried Liver. Attraction @@ -16,18 +16,18 @@ Matez le roi sur le dernier rang, lorsqu\'il est piégé par ses propres pièces. Finale de fous Une finale avec seulement des fous et des pions. - Mat de Boden - Deux fous contrôlant des diagonales croisées matent un roi bloqué par ses propres pièces. + Mat de Boden + Deux fous contrôlant des diagonales croisées matent un roi bloqué par ses propres pièces. Roque Mettez votre roi en sécurité et développez vos tours pour attaquer. Capturez le défenseur Retire une pièce essentielle à la défense d\'une autre pièce, permettant à la pièce non protégée d\'être capturée au coup suivant. Ecrasant Repérez la gaffe de l\'adversaire pour obtenir un avantage écrasant. (évaluation > 600cp) - Mat des deux fous - Deux fous contrôlant des diagonales adjacentes matent un roi bloqué par ses propres pièces. - Mat de Cozio - Une dame mate un roi placé sur une case adjacente, les deux seules cases de fuite étant occupées par des pièces amies. + Mat des deux fous + Deux fous contrôlant des diagonales adjacentes matent un roi bloqué par ses propres pièces. + Mat de Cozio + Une dame mate un roi placé sur une case adjacente, les deux seules cases de fuite étant occupées par des pièces amies. Égalité Revenir d\'une position perdante et assurer une nulle ou une position équilibrée. (évaluation ≤ 200cp) Attaque à l\'aile roi diff --git a/translation/dest/puzzleTheme/hu-HU.xml b/translation/dest/puzzleTheme/hu-HU.xml index d925af7b1f..9393b14bd9 100644 --- a/translation/dest/puzzleTheme/hu-HU.xml +++ b/translation/dest/puzzleTheme/hu-HU.xml @@ -6,6 +6,8 @@ Ragadd meg a lehetőséget a döntő előny megszerzéséhez. (200cp ≤ eval ≤ 600cp) Anasztázia mattja Egy huszár és egy bástya vagy a vezér közösen csapdába ejtik az ellenfél királyát a tábla széle és egy figurája között. + Arab matt + Egy huszár és egy bástya közösen sarokba szorítják az ellenfél királyát. f2 vagy f7 támadása Az f2 vagy f7 gyalog ellen irányuló támadás, mint például a \"sültmáj\" megnyitás. Ráterelés @@ -14,12 +16,18 @@ Adj mattot az alapsoron ragadt királynak, mikor a saját figurái ejtik csapdába. Futó végjáték Végjáték csak futókkal és gyalogokkal. + Boden mattja + Két támadó futó az átlókat keresztezve adnak mattot a saját figurái által akadályozott királynak. Sáncolás Helyezd a királyt biztonságba és mozgósítsd a bástyát. A védő leütése Egy olyan figura leütése, amelyik elengedhetetlen egy másik védelméhez, így a védtelen figura a következő lépésben szabadon levehető. Megsemmisítés Az ellenfél sakkvakságának kihasználása elsöprő előnnyé fordítható. (> 600cp) + Futópár matt + A két futó szomszédos átlókon ad mattot a saját figurája által akadályozott királynak. + Fecskefark matt + A vezér mattot ad a szomszédos mezőn álló királynak, aminek mindkét menekülési útját saját figurái foglalják el. Egyenlőség Visszatérés egy rosszabb állásból és a döntetlen vagy kiegyensúlyozott állás bebiztosítása. Királyszárnytámadás @@ -43,6 +51,8 @@ Olyan lépés ahol mozgatott figura egyszerre két ellenséges figurát támad. Lógó figura Azok a taktikák amik védtelen vagy elégtelenül bevédett, ezért szabadon levehető figurákon alapulnak. + Horog matt + Egy bástya, huszár és gyalog az ellenfél, gyalogja által akadályozott királyát körbevéve adnak mattot. Akadályozás Egy figura mozgatása két ellenséges figura közé az egyiket vagy mindkettőt védtelenné téve, például egy huszárral belépni egy védett mezőre két bástya közé. Köztes lépés diff --git a/translation/dest/puzzleTheme/kk-KZ.xml b/translation/dest/puzzleTheme/kk-KZ.xml index 4e0b0f2420..cb8731980e 100644 --- a/translation/dest/puzzleTheme/kk-KZ.xml +++ b/translation/dest/puzzleTheme/kk-KZ.xml @@ -5,6 +5,9 @@ Артықшылық Шешуші артықшылық беретін сәтті жіберіп алмаңыз. (200-600 сп) Анастасия маты + Ат пен тура не уәзірдің бірлесіп, қарсылас патшасын тақта шеті мен өз тасының арасында ұстап алуы. + Арабша мат + Ат пен тураның бірлесіп қарсылас патшаны тақта бұрышында ұстап алуы. f2 не f7-ге шабуылдау \"Қуырылған бүйрек\" бастауындағыдай f2 не f7 сарбазына бағытталған шабуыл. Тартымдылық @@ -13,12 +16,18 @@ Өз сабында өз тастарымен қамалған патшаға мат. Пiл ойынсоңы Пілдер мен сарбаздары ғана бар ойынсоңы. + Бодэн маты + Қарсылас патшасының бір жағын өз тастары бөгеп тұрғанда, екі піл қиылыса шабуылдайды. Бекіну Патшаны қорғаулы жерге кіргізіп, тураны шабуылға даярлаңыз. Қорғаушыны жою Бір тасты қорғап тұрған басқа тасты басып алсаңыз, әлгі тас қорғаусыз қалып, оны басып алуға жол ашылады. Тас-талқан Жойқын артықшылыққа ие болу үшін қарсыластың қателігін анықтаңыз. (≥ 600 сп) + Пілдер маты + Қарсылас патшасының бір жағын өз тастары бөгеп тұрғанда, екі піл қатарлас шабуылдайды. + Айырқұйрық мат + Қарсылас патшасының екі жағын өз тастары бөгеп тұрғанда, уәзір жақыннан мат қояды. Теңдік Жаман күйден шығып, ойынды тепе-теңдікке не тең күйге жеткізіңіз. (≤ 200 сп) Патша жақты шабуыл @@ -42,6 +51,8 @@ Қарсыластың бірден екі тасын ұратын тас жүрісі. Олжа тас Қорғанысы нашар не қорғаусыз тұрған қарсылас тасын басып алуды меңзейтін тактика. + Қармақ мат + Қарсылас патшасына өз сарбазы бөгет бола тұра, ат, тура мен сарбаз арқылы қойылған мат. Бөгет Қарсыластың екі байланысқан тастарының арасына бөгет қойып, олардың біреуін не екеуін қорғаусыз ету. Мысалы, екі өзара қорғап тұрған туралардың арасына тұра қалған ат. Аралық жүріс diff --git a/translation/dest/puzzleTheme/lt-LT.xml b/translation/dest/puzzleTheme/lt-LT.xml index 7b4dcfb0bc..58a4115e96 100644 --- a/translation/dest/puzzleTheme/lt-LT.xml +++ b/translation/dest/puzzleTheme/lt-LT.xml @@ -6,6 +6,8 @@ Pasinaudokite proga įgauti esminį pranašumą. (200cp ≤ eval ≤ 600cp) Anastasijos matas Žirgas ir karalienė arba bokštas bendromis jėgomis įkalina priešininko karalių tarp lentos krašto ir kitos figūros. + Arabiškasis matas + Žirgas ir bokštas suvienija jėgas įkalindami priešininko karalių lentos kampe. F2 ar f7 puolimas Puolimas, koncentruotas ties f2 ar f7 pėstininkais, panašiai kaip keptų kepenų debiute. Trauka @@ -14,12 +16,18 @@ Matas karaliui, esančiam namų eilėje, kai jis užblokuotas savo paties figūrų. Rikių endšpilis Endšpilis tik su rikiais ir pėstininkais. + Bodeno matas + Du puolantys rikiai susikryžiojančiose įstrižainėse atlieka matą priešininko karaliui, įkalintam draugiškų figūrų. Rokiruotės Parveskite karalių į saugią vietą ir panaudokite atakai bokštą. Nukirskite gynėją Pašalinkite figūrą, kuri yra kritiškai svarbi kitos figūros gynybai, paruošdami naujai neapsaugotą figūrą kirtimui kitu ėjimu. Suspaudimas Pastebėkite priešininko klaidą ir įgaukite ryškią persvarą. (eval ≥ 600cp) + Dvigubų rikių matas + Du gretimose įstrižainėse puolantys rikiai atlieka matą priešininko karaliui, įkalintam draugiškų figūrų. + Kozio matas + Karalienė atlieka matą greta esančiam priešininko karaliui, kurio vieninteliai pabėgimo langeliai užimti draugiškų figūrų. Lygybė Grįžkite iš pralaiminčios pozicijos ir užsitikrinkite lygiąsias arba balansuotą poziciją. (eval ≤ 200cp) Karaliaus pusės ataka diff --git a/translation/dest/puzzleTheme/lv-LV.xml b/translation/dest/puzzleTheme/lv-LV.xml index 728afbd518..a1e5c41151 100644 --- a/translation/dest/puzzleTheme/lv-LV.xml +++ b/translation/dest/puzzleTheme/lv-LV.xml @@ -6,6 +6,8 @@ Izmantojiet iespēju iegūt noteicošu pārsvaru. (200cp ≤ vērtējums ≤ 600cp) Anastāsijas mats Zirdziņš ar torni vai dāmu iesprosto pretinieka karali starp galdiņa malu un viņa paša figūru. + Arābu mats + Zirdziņš ar torni kopīgi iesprosto pretinieka karali galdiņa stūrī. Uzbrukums f2 vai f7 Uzbrukums, kas koncentrējas uz f2 vai f7 bandinieku, līdzīgi \"fried liver\" (angļ. val. \"cepto aknu\") atklātnei. Ievilkšana @@ -14,12 +16,18 @@ Piesakiet matu karalim, kuru savā rindā iesprostojušas paša figūras. Laidņa beigu spēle Beigu spēle, kurā iesaistīti tikai laidņi un bandinieki. + Bodena mats + Divi laidņi uz pretēju krāsu krusteniskām diagonālēm piesaka matu karalim, kura izbēgšanu traucē paša figūras. Rokāde Nogādājiet karali drošībā un novietojiet torni uzbrukuma pozīcijā. Sargājošas figūras nosišana Nosist figūru, kas nepieciešama citas figūras aizsardzībai, padarot iespējamu neaizsargātās figūras nosišanu nākamajā gājienā. Graušana Ieraugiet pretinieka rupjo kļūdu, lai iegūtu graujošu pārsvaru. (vērtējums > 600cp) + Dubultlaidņa mats + Divi laidņi uz blakus diagonālēm piesaka matu karalim, ko ierobežo paša figūras. + Kozio mats + Dāma piesaka matu nostājoties pie pretinieka karaļa tā, ka tā abi neapdraudētie lauciņi ir aizņemti ar paša figūrām. Vienlīdzība Atgriezieties no zaudējošas pozīcijas, un iegūstiet neizšķirtu vai vienlīdzīgu pozīciju. (vērtējums ≤ 200cp) Karaļa puses uzbrukums diff --git a/translation/dest/puzzleTheme/nl-NL.xml b/translation/dest/puzzleTheme/nl-NL.xml index 228da2deae..f99dfa514a 100644 --- a/translation/dest/puzzleTheme/nl-NL.xml +++ b/translation/dest/puzzleTheme/nl-NL.xml @@ -6,7 +6,8 @@ Grijp je kans om een doorslaggevend voordeel te verkrijgen. (200cp ≤ eval ≤ 600 cp) Anastasia\'s mat Een paard werkt samen met een toren of dame om de koning van de tegenstander tussen de zijkant van het bord en een eigen stuk te vangen. - Arabisch mat + Arabisch mat + Een paard en een toren werken samen om de koning van de tegenstander in een hoek van het bord in te sluiten. f2 of f7 aanvallen Een aanval gericht op de f2 of de f7-pion, zoals in de Fegatello-opening. Lokken @@ -15,15 +16,15 @@ Zet de koning mat op de achterste rij, ingesloten door zijn eigen stukken. Lopereindspel Een eindspel met alleen lopers en pionnen. - Mat van Boden - Twee aanvallende lopers op kruisende diagonalen geven schaakmat aan een koning die wordt belemmerd door stukken van de eigen kleur. + Mat van Boden + Twee lopers op kruisende diagonalen geven schaakmat aan een koning die wordt belemmerd door stukken van de eigen kleur. Rokade Breng de koning in veiligheid en zet de toren in voor een aanval. De verdediger slaan Een stuk slaan dat essentieel is voor de verdediging van een ander stuk, waardoor vervolgens het nu onverdedigde stuk met een volgende zet kan worden geslagen. Verpletteren Zie de blunder van de tegenstander om een verpletterend voordeel te verkrijgen. (eval ≥ 600cp) - Dubbele loper mat + Mat met twee lopers Evenwicht Terugkomen uit een verloren stelling en een remise veiligstellen of een gelijkwaardige stelling bereiken. (eval ≤ 200cp) Koningsaanval diff --git a/translation/dest/puzzleTheme/sr-SP.xml b/translation/dest/puzzleTheme/sr-SP.xml index 84040d6840..5a81cbf6f0 100644 --- a/translation/dest/puzzleTheme/sr-SP.xml +++ b/translation/dest/puzzleTheme/sr-SP.xml @@ -4,5 +4,6 @@ Пешак који се промовише или прети да се промовише је кључни мотив тактике. Предност Искористите шансу да стекнете одлучујућу предност. (200cp ≤ eval ≤ 600cp) + Арапски мат Напад на f2 или на f7 diff --git a/translation/dest/puzzleTheme/tr-TR.xml b/translation/dest/puzzleTheme/tr-TR.xml index 99e455b4a8..2e237e0ee4 100644 --- a/translation/dest/puzzleTheme/tr-TR.xml +++ b/translation/dest/puzzleTheme/tr-TR.xml @@ -5,9 +5,9 @@ Avantaj yakala Mutlak bir üstünlük kazanma şansını yakala. (200sp ≤ analiz ≤ 600sp) Anastasia matı - Bir atın yardımını alan kale veya vezir, rakip şahı kendi taşları ve tahtanın kenarı arasında tuzağa düşürür. - Arap matı - At ile kalenin, rakip şahı tahtanın köşesine sıkıştırdığı matlar. + Kale veya vezir, atın yardımıyla tahtanın kenarı ve kendi taşı arasında sıkıştırılan rakip şahı mat eder. + Arap matı + At ile kalenin, rakip şahı tahtanın köşesine sıkıştırdığı matlar. Saldırı: f2 ve f7 Kızarmış karaciğer açılışında olduğu gibi f2 veya f7 karesindeki piyonları hedef alan saldırılar. Tehlikeli sular @@ -16,18 +16,18 @@ Kendi taşları arkasında sıkışıp kalmış şaha koridorun kapısını göster. Fil oyunsonu Sadece fil ve piyon içeren oyunsonu. - Boden matı - İki fil, kendi taşları tarafından kısıtlanan şaha farklı açılardan girişerek onu mat eder. + Boden matı + İki fil, kendi taşları tarafından kısıtlanan şaha farklı açılardan girişerek onu mat eder. Rok Şahı güvene alırken kaleni saldırıya hazırla. Savunmayı baltala Bir taşı savunan diğer bir taşı ortadan kaldırarak savunmasız kalan taşı sonraki hamlede ele geçir. Ezici üstünlük Rakibin vahim hatasını yakalayarak ezici bir üstünlük elde et. (analiz ≥ 600sp) - İki fil matı - Yan yana konuşlanmış iki fil, kendi taşları tarafından kısıtlanmış şahı mat eder. - Kurtağzı matı - İki kaçış yolu da kendi taşlarınca kapalı olan şah, hemen çaprazına konuşlanan vezir tarafından mat edilir. + Çift fil matı + Yan yana konuşlanmış iki fil, kendi taşları tarafından kısıtlanmış şahı mat eder. + Kurtağzı matı + İki kaçış yolu da kendi taşlarınca kapalı olan şah, hemen çaprazına konuşlanan vezir tarafından mat edilir. Eşitlik Kaybeden bir durumdan paçayı kurtararak beraberlik veya dengeli bir pozisyon elde et. (analiz ≤ 200sp) Şah tarafına saldırı @@ -52,7 +52,7 @@ Taş düşürme Savunmasız veya yeterince korunmayan rakip taşların kol gezdiği taktikler. Kanca matı - Kale, at ve piyonla birlikte rakip şahın kaçış yolunu kapatan düşman piyonla yapılan bir mat. + Kale, at, piyon ve rakip şahın kaçışını engelleyen rakip piyonla yapılan mattır. Müdahale Rakip taşların arasına kendi taşını koyarak rakibin bir taşını ya da iki taşını da savunmasız bırak. Rakibin iki kalesinin arasındaki güvenli bir kareye atı oynamak gibi. Ara hamle diff --git a/translation/dest/site/et-EE.xml b/translation/dest/site/et-EE.xml index 0c1f894c03..976a84a3ab 100644 --- a/translation/dest/site/et-EE.xml +++ b/translation/dest/site/et-EE.xml @@ -9,6 +9,7 @@ Sinu käik %1$s tase %2$s Tase + Tugevus Luba vestlust Luba helid Saada sõnum @@ -327,7 +328,7 @@ Sa ei ole %s tiimi liige Tagasi mängu Tasuta online male. Mängi malet nüüd puhtas kasutajaliideses. Pole registreerimist, pole reklaami, pole pluginaid vaja. Mängi malet arvuti, sõprade või juhusliku vastasega. - %1$s ühines tiimiga %2$s + %1$s ühines tiimiga %2$s %1$s tegi tiimi %2$s %s alustas otseülekannet Keskmine Elo @@ -511,6 +512,7 @@ arvutianalüüsi, mängu jututoa ning jagatava URL-i. Kella algne aeg Kella juurdekasv Privaatsus + Privaatsus Luba teistel mängijatel sind jälgida Luba teistel mängijatel sulle väljakutseid esitada Lase teistel mängijatel sind kutsuda õppima @@ -656,6 +658,7 @@ arvutianalüüsi, mängu jututoa ning jagatava URL-i. Kui sa ei näe e-posti, vaadata teistes kohtades võib olla, nagu oma Rämpspost, sotsiaal- või muid kaustu. Saatsime e %s. Kliki lingile e-posti salasõna uuendamise. Registreerides nõustute olema seotud meie %s. + Lugege rohkem: %s. Võrgu lag vahel teid ja Lichessi Käigu töötlemise aeg lichess serveril Lae selgitustega @@ -840,4 +843,7 @@ arvutianalüüsi, mängu jututoa ning jagatava URL-i. Sa ei saa veel foorumisse postitada. Mängi enne paar mängu! Telli Eemalda + Väljakutse tagasi lükatud + Väljakutse vastu võetud! + Väljakutse tühistatud. diff --git a/translation/dest/streamer/es-ES.xml b/translation/dest/streamer/es-ES.xml index a594052f55..79ab90109e 100644 --- a/translation/dest/streamer/es-ES.xml +++ b/translation/dest/streamer/es-ES.xml @@ -21,7 +21,7 @@ Beneficios de transmitir con la palabra clave Obtén un icono de presentador en tu perfil de Lichess. Alcanza la cima de la lista de presentadores. - Avisar a tus seguidores de Lichess. + Notifica a tus seguidores de Lichess. Mostrar tu transmisión en tus juegos, torneos y estudios. Tu transmisión está aprobada. Tu transmisión está siendo revisada por los moderadores. From 976163c0fad9215039c00b99f523534881b58f2b Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Thu, 21 Jan 2021 12:52:11 +0100 Subject: [PATCH 29/64] remove play clock title - closes #7927 --- ui/round/src/clock/clockView.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/ui/round/src/clock/clockView.ts b/ui/round/src/clock/clockView.ts index a130807340..7e14065d55 100644 --- a/ui/round/src/clock/clockView.ts +++ b/ui/round/src/clock/clockView.ts @@ -39,7 +39,6 @@ export function renderClock(ctrl: RoundController, player: Player, position: Pos ] : [ clock.showBar && game.bothPlayersHavePlayed(ctrl.data) ? showBar(ctrl, player.color) : undefined, h('div.time', { - attrs: { title: `${player.color} clock` }, class: { hour: millis > 3600 * 1000 }, From d2b38f04d90aabccbbfb960fe40bcd72e5593a20 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Thu, 21 Jan 2021 13:23:08 +0100 Subject: [PATCH 30/64] challenge reasons WIP, move challenge i18n to new file - for #7487 #7658 --- app/views/base/layout.scala | 2 +- app/views/challenge/mine.scala | 8 +++--- app/views/challenge/theirs.scala | 6 ++--- app/views/clas/studentDashboard.scala | 2 +- app/views/msg.scala | 2 +- app/views/relation/actions.scala | 2 +- app/views/setup/forms.scala | 2 +- app/views/site/message.scala | 2 +- app/views/user/bots.scala | 2 +- app/views/user/mini.scala | 2 +- bin/trans-dump.js | 2 +- build.sbt | 2 +- modules/challenge/src/main/Challenge.scala | 8 ++++++ .../challenge/src/main/ChallengeGranter.scala | 14 +++++----- modules/i18n/src/main/I18nKeys.scala | 27 +++++++++++-------- translation/source/challenge.xml | 16 +++++++++++ translation/source/site.xml | 11 -------- 17 files changed, 64 insertions(+), 46 deletions(-) create mode 100644 translation/source/challenge.xml diff --git a/app/views/base/layout.scala b/app/views/base/layout.scala index 09d9ae3df9..01d30cec98 100644 --- a/app/views/base/layout.scala +++ b/app/views/base/layout.scala @@ -91,7 +91,7 @@ object layout { private def allNotifications(implicit ctx: Context) = spaceless(s"""
- diff --git a/app/views/challenge/mine.scala b/app/views/challenge/mine.scala index ac383f8a9c..24c9635e0c 100644 --- a/app/views/challenge/mine.scala +++ b/app/views/challenge/mine.scala @@ -29,7 +29,7 @@ object mine { c.status match { case Status.Created | Status.Offline => div(id := "ping-challenge")( - h1(if (c.isOpen) "Open challenge" else trans.challengeToPlay.txt()), + h1(if (c.isOpen) "Open challenge" else trans.challenge.challengeToPlay.txt()), bits.details(c), c.destUserId.map { destId => div(cls := "waiting")( @@ -93,13 +93,13 @@ object mine { ) case Status.Declined => div(cls := "follow-up")( - h1(trans.challengeDeclined()), + h1(trans.challenge.challengeDeclined()), bits.details(c), a(cls := "button button-fat", href := routes.Lobby.home())(trans.newOpponent()) ) case Status.Accepted => div(cls := "follow-up")( - h1(trans.challengeAccepted()), + h1(trans.challenge.challengeAccepted()), bits.details(c), a(id := "challenge-redirect", href := routes.Round.watcher(c.id, "white"), cls := "button-fat")( trans.joinTheGame() @@ -107,7 +107,7 @@ object mine { ) case Status.Canceled => div(cls := "follow-up")( - h1(trans.challengeCanceled()), + h1(trans.challenge.challengeCanceled()), bits.details(c), a(cls := "button button-fat", href := routes.Lobby.home())(trans.newOpponent()) ) diff --git a/app/views/challenge/theirs.scala b/app/views/challenge/theirs.scala index ad5ced79d2..bf121871cb 100644 --- a/app/views/challenge/theirs.scala +++ b/app/views/challenge/theirs.scala @@ -73,13 +73,13 @@ object theirs { ) case Status.Declined => div(cls := "follow-up")( - h1(trans.challengeDeclined()), + h1(trans.challenge.challengeDeclined()), bits.details(c), a(cls := "button button-fat", href := routes.Lobby.home())(trans.newOpponent()) ) case Status.Accepted => div(cls := "follow-up")( - h1(trans.challengeAccepted()), + h1(trans.challenge.challengeAccepted()), bits.details(c), a( id := "challenge-redirect", @@ -91,7 +91,7 @@ object theirs { ) case Status.Canceled => div(cls := "follow-up")( - h1(trans.challengeCanceled()), + h1(trans.challenge.challengeCanceled()), bits.details(c), a(cls := "button button-fat", href := routes.Lobby.home())(trans.newOpponent()) ) diff --git a/app/views/clas/studentDashboard.scala b/app/views/clas/studentDashboard.scala index 6fabc8591c..bee9ec2e2f 100644 --- a/app/views/clas/studentDashboard.scala +++ b/app/views/clas/studentDashboard.scala @@ -107,7 +107,7 @@ object studentDashboard { a( dataIcon := "U", cls := List("button button-empty text" -> true, "disabled" -> !online), - title := trans.challengeToPlay.txt(), + title := trans.challenge.challengeToPlay.txt(), href := online option s"${routes.Lobby.home()}?user=${user.username}#friend" )(trans.play()) ) diff --git a/app/views/msg.scala b/app/views/msg.scala index 6c9ddaa1a0..b2f9b7d8f5 100644 --- a/app/views/msg.scala +++ b/app/views/msg.scala @@ -32,7 +32,7 @@ object msg { private val i18nKeys = List( trans.inbox, - trans.challengeToPlay, + trans.challenge.challengeToPlay, trans.block, trans.unblock, trans.blocked, diff --git a/app/views/relation/actions.scala b/app/views/relation/actions.scala index 67cef408cd..8adef373f6 100644 --- a/app/views/relation/actions.scala +++ b/app/views/relation/actions.scala @@ -22,7 +22,7 @@ object actions { (myId != userId) ?? frag( !blocked option frag( a( - titleOrText(trans.challengeToPlay.txt()), + titleOrText(trans.challenge.challengeToPlay.txt()), href := s"${routes.Lobby.home()}?user=$userId#friend", cls := "btn-rack__btn", dataIcon := "U" diff --git a/app/views/setup/forms.scala b/app/views/setup/forms.scala index 80f8adbad8..cc7c2e9486 100644 --- a/app/views/setup/forms.scala +++ b/app/views/setup/forms.scala @@ -94,7 +94,7 @@ object forms { )(implicit ctx: Context) = layout( "friend", - (if (user.isDefined) trans.challengeToPlay else trans.playWithAFriend)(), + (if (user.isDefined) trans.challenge.challengeToPlay else trans.playWithAFriend)(), routes.Setup.friend(user map (_.id)), error.map(e => raw(e.replace("{{user}}", userIdLink(user.map(_.id)).toString))) )( diff --git a/app/views/site/message.scala b/app/views/site/message.scala index 0f42210cb5..e29c711989 100644 --- a/app/views/site/message.scala +++ b/app/views/site/message.scala @@ -73,7 +73,7 @@ object message { def challengeDenied(msg: String)(implicit ctx: Context) = apply( - title = trans.challengeToPlay.txt(), + title = trans.challenge.challengeToPlay.txt(), back = routes.Lobby.home().url.some )(msg) diff --git a/app/views/user/bots.scala b/app/views/user/bots.scala index 2752fb500a..bf8ba28e52 100644 --- a/app/views/user/bots.scala +++ b/app/views/user/bots.scala @@ -80,7 +80,7 @@ object bots { a( dataIcon := "U", cls := List("button button-empty text" -> true), - st.title := trans.challengeToPlay.txt(), + st.title := trans.challenge.challengeToPlay.txt(), href := s"${routes.Lobby.home()}?user=${u.username}#friend" )(trans.play()) ) diff --git a/app/views/user/mini.scala b/app/views/user/mini.scala index 63d50e90af..a737761b32 100644 --- a/app/views/user/mini.scala +++ b/app/views/user/mini.scala @@ -60,7 +60,7 @@ object mini { a( dataIcon := "U", cls := "btn-rack__btn", - title := trans.challengeToPlay.txt(), + title := trans.challenge.challengeToPlay.txt(), href := s"${routes.Lobby.home()}?user=${u.username}#friend" ) ), diff --git a/bin/trans-dump.js b/bin/trans-dump.js index e53c65381b..23b5107151 100644 --- a/bin/trans-dump.js +++ b/bin/trans-dump.js @@ -2,7 +2,7 @@ const fs = require('fs').promises; const parseString = require('xml2js').parseString; const baseDir = 'translation/source'; -const dbs = 'site arena emails learn activity coordinates study clas contact patron coach broadcast streamer tfa settings preferences team perfStat search tourname faq lag swiss puzzle puzzleTheme'.split(' '); +const dbs = 'site arena emails learn activity coordinates study clas contact patron coach broadcast streamer tfa settings preferences team perfStat search tourname faq lag swiss puzzle puzzleTheme challenge'.split(' '); function ucfirst(s) { return s.charAt(0).toUpperCase() + s.slice(1); diff --git a/build.sbt b/build.sbt index db2a3422f6..71685e768f 100644 --- a/build.sbt +++ b/build.sbt @@ -60,7 +60,7 @@ lazy val i18n = smallModule("i18n", MessageCompiler( sourceDir = new File("translation/source"), destDir = new File("translation/dest"), - dbs = "site arena emails learn activity coordinates study class contact patron coach broadcast streamer tfa settings preferences team perfStat search tourname faq lag swiss puzzle puzzleTheme".split(' ').toList, + dbs = "site arena emails learn activity coordinates study class contact patron coach broadcast streamer tfa settings preferences team perfStat search tourname faq lag swiss puzzle puzzleTheme challenge".split(' ').toList, compileTo = (sourceManaged in Compile).value ) }.taskValue diff --git a/modules/challenge/src/main/Challenge.scala b/modules/challenge/src/main/Challenge.scala index 836009d964..a02308e42d 100644 --- a/modules/challenge/src/main/Challenge.scala +++ b/modules/challenge/src/main/Challenge.scala @@ -6,6 +6,7 @@ import chess.{ Color, Mode, Speed } import org.joda.time.DateTime import lila.game.{ Game, PerfPicker } +import lila.i18n.{ I18nKey, I18nKeys } import lila.rating.PerfType import lila.user.User @@ -112,6 +113,13 @@ object Challenge { def apply(id: Int): Option[Status] = all.find(_.id == id) } + sealed abstract class DeclineReason(key: I18nKey) + + object DeclineReason { + case object Generic extends DeclineReason(I18nKeys.challenge.declineGeneric) + case object Later extends DeclineReason(I18nKeys.challenge.declineLater) + } + case class Rating(int: Int, provisional: Boolean) { def show = s"$int${if (provisional) "?" else ""}" } diff --git a/modules/challenge/src/main/ChallengeGranter.scala b/modules/challenge/src/main/ChallengeGranter.scala index c66d22a05d..ebaeeec37c 100644 --- a/modules/challenge/src/main/ChallengeGranter.scala +++ b/modules/challenge/src/main/ChallengeGranter.scala @@ -2,7 +2,7 @@ package lila.challenge import play.api.i18n.Lang -import lila.i18n.I18nKeys +import lila.i18n.I18nKeys.{ challenge => trans } import lila.pref.Pref import lila.rating.PerfType import lila.relation.{ Block, Follow } @@ -26,13 +26,13 @@ object ChallengeDenied { def translated(d: ChallengeDenied)(implicit lang: Lang): String = d.reason match { - case Reason.YouAreAnon => I18nKeys.registerToSendChallenges.txt() - case Reason.YouAreBlocked => I18nKeys.youCannotChallengeX.txt(d.dest.titleUsername) - case Reason.TheyDontAcceptChallenges => I18nKeys.xDoesNotAcceptChallenges.txt(d.dest.titleUsername) + case Reason.YouAreAnon => trans.registerToSendChallenges.txt() + case Reason.YouAreBlocked => trans.youCannotChallengeX.txt(d.dest.titleUsername) + case Reason.TheyDontAcceptChallenges => trans.xDoesNotAcceptChallenges.txt(d.dest.titleUsername) case Reason.RatingOutsideRange(perf) => - I18nKeys.yourXRatingIsTooFarFromY.txt(perf.trans, d.dest.titleUsername) - case Reason.RatingIsProvisional(perf) => I18nKeys.cannotChallengeDueToProvisionalXRating.txt(perf.trans) - case Reason.FriendsOnly => I18nKeys.xOnlyAcceptsChallengesFromFriends.txt(d.dest.titleUsername) + trans.yourXRatingIsTooFarFromY.txt(perf.trans, d.dest.titleUsername) + case Reason.RatingIsProvisional(perf) => trans.cannotChallengeDueToProvisionalXRating.txt(perf.trans) + case Reason.FriendsOnly => trans.xOnlyAcceptsChallengesFromFriends.txt(d.dest.titleUsername) case Reason.BotUltraBullet => "Bots cannot play UltraBullet. Choose a slower time control." } } diff --git a/modules/i18n/src/main/I18nKeys.scala b/modules/i18n/src/main/I18nKeys.scala index bee2acd882..687868cff9 100644 --- a/modules/i18n/src/main/I18nKeys.scala +++ b/modules/i18n/src/main/I18nKeys.scala @@ -279,7 +279,6 @@ val `xStartedFollowingY` = new I18nKey("xStartedFollowingY") val `more` = new I18nKey("more") val `memberSince` = new I18nKey("memberSince") val `lastSeenActive` = new I18nKey("lastSeenActive") -val `challengeToPlay` = new I18nKey("challengeToPlay") val `player` = new I18nKey("player") val `list` = new I18nKey("list") val `graph` = new I18nKey("graph") @@ -604,7 +603,6 @@ val `error.max` = new I18nKey("error.max") val `error.unknown` = new I18nKey("error.unknown") val `custom` = new I18nKey("custom") val `notifications` = new I18nKey("notifications") -val `challenges` = new I18nKey("challenges") val `perfRatingX` = new I18nKey("perfRatingX") val `practiceWithComputer` = new I18nKey("practiceWithComputer") val `anotherWasX` = new I18nKey("anotherWasX") @@ -643,12 +641,6 @@ val `advantage` = new I18nKey("advantage") val `opening` = new I18nKey("opening") val `middlegame` = new I18nKey("middlegame") val `endgame` = new I18nKey("endgame") -val `registerToSendChallenges` = new I18nKey("registerToSendChallenges") -val `youCannotChallengeX` = new I18nKey("youCannotChallengeX") -val `xDoesNotAcceptChallenges` = new I18nKey("xDoesNotAcceptChallenges") -val `yourXRatingIsTooFarFromY` = new I18nKey("yourXRatingIsTooFarFromY") -val `cannotChallengeDueToProvisionalXRating` = new I18nKey("cannotChallengeDueToProvisionalXRating") -val `xOnlyAcceptsChallengesFromFriends` = new I18nKey("xOnlyAcceptsChallengesFromFriends") val `conditionalPremoves` = new I18nKey("conditionalPremoves") val `addCurrentVariation` = new I18nKey("addCurrentVariation") val `playVariationToCreateConditionalPremoves` = new I18nKey("playVariationToCreateConditionalPremoves") @@ -698,9 +690,6 @@ val `teamNamedX` = new I18nKey("teamNamedX") val `youCannotPostYetPlaySomeGames` = new I18nKey("youCannotPostYetPlaySomeGames") val `subscribe` = new I18nKey("subscribe") val `unsubscribe` = new I18nKey("unsubscribe") -val `challengeDeclined` = new I18nKey("challengeDeclined") -val `challengeAccepted` = new I18nKey("challengeAccepted") -val `challengeCanceled` = new I18nKey("challengeCanceled") val `opponentLeftCounter` = new I18nKey("opponentLeftCounter") val `mateInXHalfMoves` = new I18nKey("mateInXHalfMoves") val `nextCaptureOrPawnMoveInXHalfMoves` = new I18nKey("nextCaptureOrPawnMoveInXHalfMoves") @@ -1958,4 +1947,20 @@ val `healthyMix` = new I18nKey("puzzleTheme:healthyMix") val `healthyMixDescription` = new I18nKey("puzzleTheme:healthyMixDescription") } +object challenge { +val `challenges` = new I18nKey("challenge:challenges") +val `challengeToPlay` = new I18nKey("challenge:challengeToPlay") +val `challengeDeclined` = new I18nKey("challenge:challengeDeclined") +val `challengeAccepted` = new I18nKey("challenge:challengeAccepted") +val `challengeCanceled` = new I18nKey("challenge:challengeCanceled") +val `registerToSendChallenges` = new I18nKey("challenge:registerToSendChallenges") +val `youCannotChallengeX` = new I18nKey("challenge:youCannotChallengeX") +val `xDoesNotAcceptChallenges` = new I18nKey("challenge:xDoesNotAcceptChallenges") +val `yourXRatingIsTooFarFromY` = new I18nKey("challenge:yourXRatingIsTooFarFromY") +val `cannotChallengeDueToProvisionalXRating` = new I18nKey("challenge:cannotChallengeDueToProvisionalXRating") +val `xOnlyAcceptsChallengesFromFriends` = new I18nKey("challenge:xOnlyAcceptsChallengesFromFriends") +val `declineGeneric` = new I18nKey("challenge:declineGeneric") +val `declineLater` = new I18nKey("challenge:declineLater") +} + } diff --git a/translation/source/challenge.xml b/translation/source/challenge.xml new file mode 100644 index 0000000000..de28541396 --- /dev/null +++ b/translation/source/challenge.xml @@ -0,0 +1,16 @@ + + + Challenges + Challenge to a game + Challenge declined + Challenge accepted! + Challenge canceled. + Please register to send challenges. + You cannot challenge %s. + %s does not accept challenges. + Your %1$s rating is too far from %2$s. + Cannot challenge due to provisional %s rating. + %s only accepts challenges from friends. + I'm not accepting challenges at the moment. + I'm not accepting challenges right now, please ask again later. + diff --git a/translation/source/site.xml b/translation/source/site.xml index eaaa9c821b..9e06135af9 100644 --- a/translation/source/site.xml +++ b/translation/source/site.xml @@ -384,7 +384,6 @@ computer analysis, game chat and shareable URL. More Member since Active %s - Challenge to a game Player List Graph @@ -737,7 +736,6 @@ computer analysis, game chat and shareable URL. Error Custom Notifications - Challenges Rating: %s %s second to play the first move @@ -784,12 +782,6 @@ computer analysis, game chat and shareable URL. Opening Middlegame Endgame - Please register to send challenges. - You cannot challenge %s. - %s does not accept challenges. - Your %1$s rating is too far from %2$s. - Cannot challenge due to provisional %s rating. - %s only accepts challenges from friends. Conditional premoves Add current variation Play a variation to create conditional premoves @@ -843,7 +835,4 @@ computer analysis, game chat and shareable URL. You can't post in the forums yet. Play some games! Subscribe Unsubscribe - Challenge declined - Challenge accepted! - Challenge canceled. From 43fbd61029ff3960a21fbd213944bed66325696d Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Thu, 21 Jan 2021 16:04:41 +0100 Subject: [PATCH 31/64] decline challenges for a reason - closes #7487 also closes #7658 --- app/controllers/Challenge.scala | 16 ++++++++---- app/views/challenge/mine.scala | 6 ++++- modules/challenge/src/main/BSONHandlers.scala | 5 ++++ modules/challenge/src/main/Challenge.scala | 18 +++++++++++-- modules/challenge/src/main/ChallengeApi.scala | 8 +++--- .../challenge/src/main/ChallengeForm.scala | 18 +++++++++++++ .../challenge/src/main/ChallengeRepo.scala | 8 ++++-- modules/challenge/src/main/Env.scala | 2 ++ modules/challenge/src/main/JsonView.scala | 1 + modules/setup/src/main/Env.scala | 2 +- .../{FormFactory.scala => SetupForm.scala} | 2 +- ui/challenge/css/_page.scss | 25 ++++++++++++++----- ui/challenge/css/build/_challenge.page.scss | 1 + ui/common/css/component/_tagify.scss | 4 +-- 14 files changed, 92 insertions(+), 24 deletions(-) create mode 100644 modules/challenge/src/main/ChallengeForm.scala rename modules/setup/src/main/{FormFactory.scala => SetupForm.scala} (99%) diff --git a/app/controllers/Challenge.scala b/app/controllers/Challenge.scala index de8f827869..f7951b8dc7 100644 --- a/app/controllers/Challenge.scala +++ b/app/controllers/Challenge.scala @@ -138,19 +138,25 @@ final class Challenge( def decline(id: String) = Auth { implicit ctx => _ => OptionFuResult(api byId id) { c => - if (isForMe(c)) api decline c - else notFound + isForMe(c) ?? api.decline(c, ChallengeModel.DeclineReason.default) } } def apiDecline(id: String) = - Scoped(_.Challenge.Write, _.Bot.Play, _.Board.Play) { _ => me => + ScopedBody(_.Challenge.Write, _.Bot.Play, _.Board.Play) { implicit req => me => + implicit val lang = reqLang api.activeByIdFor(id, me) flatMap { case None => env.bot.player.rematchDecline(id, me) flatMap { case true => jsonOkResult.fuccess case _ => notFoundJson() } - case Some(c) => api.decline(c) inject jsonOkResult + case Some(c) => + env.challenge.forms.decline + .bindFromRequest() + .fold( + newJsonFormError, + data => api.decline(c, data.realReason) inject jsonOkResult + ) } } @@ -168,7 +174,7 @@ final class Challenge( case Some(c) => api.cancel(c) inject jsonOkResult case None => api.activeByIdFor(id, me) flatMap { - case Some(c) => api.decline(c) inject jsonOkResult + case Some(c) => api.decline(c, ChallengeModel.DeclineReason.default) inject jsonOkResult case None => env.game.gameRepo game id dmap { _ flatMap { Pov.ofUserId(_, me.id) } diff --git a/app/views/challenge/mine.scala b/app/views/challenge/mine.scala index 24c9635e0c..0faf65d756 100644 --- a/app/views/challenge/mine.scala +++ b/app/views/challenge/mine.scala @@ -25,7 +25,7 @@ object mine { moreCss = cssTag("challenge.page") ) { val challengeLink = s"$netBaseUrl${routes.Round.watcher(c.id, "white")}" - main(cls := "page-small challenge-page box box-pad")( + main(cls := s"page-small challenge-page box box-pad challenge--${c.status.name}")( c.status match { case Status.Created | Status.Offline => div(id := "ping-challenge")( @@ -94,6 +94,10 @@ object mine { case Status.Declined => div(cls := "follow-up")( h1(trans.challenge.challengeDeclined()), + blockquote(cls := "challenge-reason pull-quote")( + p(c.anyDeclineReason.trans()), + footer(userIdLink(c.destUserId)) + ), bits.details(c), a(cls := "button button-fat", href := routes.Lobby.home())(trans.newOpponent()) ) diff --git a/modules/challenge/src/main/BSONHandlers.scala b/modules/challenge/src/main/BSONHandlers.scala index e7c55a785a..f5e586a87a 100644 --- a/modules/challenge/src/main/BSONHandlers.scala +++ b/modules/challenge/src/main/BSONHandlers.scala @@ -7,6 +7,7 @@ import chess.variant.Variant import lila.db.BSON import lila.db.BSON.{ Reader, Writer } import lila.db.dsl._ +import scala.util.Success private object BSONHandlers { @@ -71,6 +72,10 @@ private object BSONHandlers { "s" -> a.secret ) } + implicit val DeclineReasonBSONHandler = tryHandler[DeclineReason]( + { case BSONString(k) => Success(Challenge.DeclineReason(k)) }, + r => BSONString(r.key) + ) implicit val ChallengerBSONHandler = new BSON[Challenger] { def reads(r: Reader) = if (r contains "id") RegisteredBSONHandler reads r diff --git a/modules/challenge/src/main/Challenge.scala b/modules/challenge/src/main/Challenge.scala index a02308e42d..315029f477 100644 --- a/modules/challenge/src/main/Challenge.scala +++ b/modules/challenge/src/main/Challenge.scala @@ -25,7 +25,8 @@ case class Challenge( createdAt: DateTime, seenAt: Option[DateTime], // None for open challenges, so they don't sweep expiresAt: DateTime, - open: Option[Boolean] = None + open: Option[Boolean] = None, + declineReason: Option[Challenge.DeclineReason] = None ) { import Challenge._ @@ -94,6 +95,13 @@ case class Challenge( def isOpen = ~open lazy val perfType = perfTypeOf(variant, timeControl) + + def anyDeclineReason = declineReason | DeclineReason.default + + def declineWith(reason: DeclineReason) = copy( + status = Status.Declined, + declineReason = reason.some + ) } object Challenge { @@ -113,11 +121,17 @@ object Challenge { def apply(id: Int): Option[Status] = all.find(_.id == id) } - sealed abstract class DeclineReason(key: I18nKey) + sealed abstract class DeclineReason(val trans: I18nKey) { + val key = toString.toLowerCase + } object DeclineReason { case object Generic extends DeclineReason(I18nKeys.challenge.declineGeneric) case object Later extends DeclineReason(I18nKeys.challenge.declineLater) + + val default: DeclineReason = Generic + val all: List[DeclineReason] = List(Generic, Later) + def apply(key: String) = all.find(_.key == key) | Generic } case class Rating(int: Int, provisional: Boolean) { diff --git a/modules/challenge/src/main/ChallengeApi.scala b/modules/challenge/src/main/ChallengeApi.scala index dc1b9b87ef..66589cc873 100644 --- a/modules/challenge/src/main/ChallengeApi.scala +++ b/modules/challenge/src/main/ChallengeApi.scala @@ -73,10 +73,10 @@ final class ChallengeApi( case _ => fuccess(socketReload(id)) } - def decline(c: Challenge) = - repo.decline(c) >>- { + def decline(c: Challenge, reason: Challenge.DeclineReason) = + repo.decline(c, reason) >>- { uncacheAndNotify(c) - Bus.publish(Event.Decline(c), "challenge") + Bus.publish(Event.Decline(c declineWith reason), "challenge") } private val acceptQueue = new lila.hub.DuctSequencer(maxSize = 64, timeout = 5 seconds, "challengeAccept") @@ -149,7 +149,7 @@ final class ChallengeApi( } private def socketReload(id: Challenge.ID): Unit = - socket foreach (_ reload id) + socket.foreach(_ reload id) private def notify(userId: User.ID): Funit = for { diff --git a/modules/challenge/src/main/ChallengeForm.scala b/modules/challenge/src/main/ChallengeForm.scala new file mode 100644 index 0000000000..b0b7999fc4 --- /dev/null +++ b/modules/challenge/src/main/ChallengeForm.scala @@ -0,0 +1,18 @@ +package lila.challenge + +import play.api.data._ +import play.api.data.Forms._ + +final class ChallengeForm { + + val decline = Form( + mapping( + "reason" -> optional(nonEmptyText) + )(DeclineData.apply _)(DeclineData.unapply _) + ) + + case class DeclineData(reason: Option[String]) { + + def realReason = reason.fold(Challenge.DeclineReason.default)(Challenge.DeclineReason.apply) + } +} diff --git a/modules/challenge/src/main/ChallengeRepo.scala b/modules/challenge/src/main/ChallengeRepo.scala index 5a22642fd5..82a919e81e 100644 --- a/modules/challenge/src/main/ChallengeRepo.scala +++ b/modules/challenge/src/main/ChallengeRepo.scala @@ -114,8 +114,12 @@ final private class ChallengeRepo(coll: Coll, maxPerUser: Max)(implicit def offline(challenge: Challenge) = setStatus(challenge, Status.Offline, Some(_ plusHours 3)) def cancel(challenge: Challenge) = setStatus(challenge, Status.Canceled, Some(_ plusHours 3)) - def decline(challenge: Challenge) = setStatus(challenge, Status.Declined, Some(_ plusHours 3)) - def accept(challenge: Challenge) = setStatus(challenge, Status.Accepted, Some(_ plusHours 3)) + def decline(challenge: Challenge, reason: Challenge.DeclineReason) = + setStatus(challenge, Status.Declined, Some(_ plusHours 3)) >> { + (reason != Challenge.DeclineReason.default) ?? + coll.updateField($id(challenge.id), "declineReason", reason).void + } + def accept(challenge: Challenge) = setStatus(challenge, Status.Accepted, Some(_ plusHours 3)) def statusById(id: Challenge.ID) = coll.primitiveOne[Status]($id(id), "status") diff --git a/modules/challenge/src/main/Env.scala b/modules/challenge/src/main/Env.scala index da5c50fd82..ec9dfce044 100644 --- a/modules/challenge/src/main/Env.scala +++ b/modules/challenge/src/main/Env.scala @@ -50,6 +50,8 @@ final class Env( lazy val jsonView = wire[JsonView] + val forms = new ChallengeForm + system.scheduler.scheduleWithFixedDelay(10 seconds, 3 seconds) { () => api.sweep.unit } diff --git a/modules/challenge/src/main/JsonView.scala b/modules/challenge/src/main/JsonView.scala index f232fdfad4..f9cefde4b2 100644 --- a/modules/challenge/src/main/JsonView.scala +++ b/modules/challenge/src/main/JsonView.scala @@ -80,6 +80,7 @@ final class JsonView( ) .add("direction" -> direction.map(_.name)) .add("initialFen" -> c.initialFen) + .add("declineReason" -> c.declineReason.map(_.trans.txt())) private def iconChar(c: Challenge) = if (c.variant == chess.variant.FromPosition) '*' diff --git a/modules/setup/src/main/Env.scala b/modules/setup/src/main/Env.scala index 3cf31c297a..a96ba98986 100644 --- a/modules/setup/src/main/Env.scala +++ b/modules/setup/src/main/Env.scala @@ -16,7 +16,7 @@ final class Env( private lazy val maxPlaying = appConfig.get[Max]("setup.max_playing") - lazy val forms = wire[FormFactory] + lazy val forms = wire[SetupForm] lazy val processor = wire[Processor] } diff --git a/modules/setup/src/main/FormFactory.scala b/modules/setup/src/main/SetupForm.scala similarity index 99% rename from modules/setup/src/main/FormFactory.scala rename to modules/setup/src/main/SetupForm.scala index 03109f4699..538d312443 100644 --- a/modules/setup/src/main/FormFactory.scala +++ b/modules/setup/src/main/SetupForm.scala @@ -8,7 +8,7 @@ import play.api.data.Forms._ import lila.rating.RatingRange import lila.user.{ User, UserContext } -final class FormFactory { +final class SetupForm { import Mappings._ diff --git a/ui/challenge/css/_page.scss b/ui/challenge/css/_page.scss index 97bf371fdb..c6441e58c3 100644 --- a/ui/challenge/css/_page.scss +++ b/ui/challenge/css/_page.scss @@ -1,5 +1,3 @@ -$c-challenge: $c-secondary; - .challenge-page { .challenge-id-form { white-space: nowrap; @@ -41,18 +39,22 @@ $c-challenge: $c-secondary; .details { @extend %flex-between; + $c-bg: mix($c-good, $c-bg-box, 10%); + --c-font: #{$c-good}; + --c-bg: #{$c-bg}; + border-radius: 99px; - background: mix($c-challenge, $c-bg-box, 10%); - border: 1px solid $c-challenge; padding: .5em 1.1em; margin-bottom: 3rem; font-size: 2em; + background: var(--c-bg); + border: 1px solid var(--c-font); > div { @extend %flex-center, %roboto; &::before { - color: $c-challenge; + color: var(--c-font); font-size: 6rem; margin-right: .2em; } @@ -68,11 +70,22 @@ $c-challenge: $c-secondary; .mode { font-weight: bold; - color: $c-challenge; + color: var(--c-font); text-transform: uppercase; } } + &.challenge--declined .details { + $c-bg: mix($c-bad, $c-bg-box, 10%); + --c-font: #{$c-bad}; + --c-bg: #{$c-bg}; + } + + .challenge-reason { + margin: 2em auto 5em auto; + max-width: 70ch; + } + .follow-up .button { display: block; margin-top: 2em; diff --git a/ui/challenge/css/build/_challenge.page.scss b/ui/challenge/css/build/_challenge.page.scss index b278f742f0..23a66ab589 100644 --- a/ui/challenge/css/build/_challenge.page.scss +++ b/ui/challenge/css/build/_challenge.page.scss @@ -1,2 +1,3 @@ @import "../../../common/css/plugin"; +@import "../../../common/css/component/quote"; @import "../page"; diff --git a/ui/common/css/component/_tagify.scss b/ui/common/css/component/_tagify.scss index 6ed7758b4d..b321d62522 100644 --- a/ui/common/css/component/_tagify.scss +++ b/ui/common/css/component/_tagify.scss @@ -1,8 +1,8 @@ :root { - --tagify-dd-color-primary: $c-primary; + --tagify-dd-color-primary: #{$c-primary}; // should be same as "$tags-focus-border-color" - --tagify-dd-bg-color: $c-bg-box; + --tagify-dd-bg-color: #{$c-bg-box}; } .tagify { From 5950f4f06abc3903acb7abf564fa242587923958 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Thu, 21 Jan 2021 17:11:37 +0100 Subject: [PATCH 32/64] select a reason to decline a challenge from the web UI also increases TS lib to ES2017 so if something breaks, that's why --- app/controllers/Challenge.scala | 13 +++++++-- modules/challenge/src/main/Challenge.scala | 18 ++++++++---- modules/challenge/src/main/JsonView.scala | 5 +++- modules/i18n/src/main/I18nKeys.scala | 7 +++++ translation/source/challenge.xml | 9 +++++- ui/challenge/css/_challenge.scss | 10 +++++-- ui/challenge/src/ctrl.ts | 9 ++++-- ui/challenge/src/interfaces.ts | 8 ++++- ui/challenge/src/view.ts | 34 +++++++++++++++------- ui/tsconfig.base.json | 2 +- 10 files changed, 87 insertions(+), 28 deletions(-) diff --git a/app/controllers/Challenge.scala b/app/controllers/Challenge.scala index f7951b8dc7..292537afeb 100644 --- a/app/controllers/Challenge.scala +++ b/app/controllers/Challenge.scala @@ -12,9 +12,9 @@ import lila.challenge.{ Challenge => ChallengeModel } import lila.common.{ HTTPRequest, IpAddress } import lila.game.{ AnonCookie, Pov } import lila.oauth.{ AccessToken, OAuthScope } +import lila.setup.ApiConfig import lila.socket.Socket.SocketVersion import lila.user.{ User => UserModel } -import lila.setup.ApiConfig final class Challenge( env: Env @@ -136,9 +136,16 @@ final class Challenge( } def decline(id: String) = - Auth { implicit ctx => _ => + AuthBody { implicit ctx => _ => OptionFuResult(api byId id) { c => - isForMe(c) ?? api.decline(c, ChallengeModel.DeclineReason.default) + implicit val req = ctx.body + isForMe(c) ?? + api.decline( + c, + env.challenge.forms.decline + .bindFromRequest() + .fold(_ => ChallengeModel.DeclineReason.default, _.realReason) + ) } } def apiDecline(id: String) = diff --git a/modules/challenge/src/main/Challenge.scala b/modules/challenge/src/main/Challenge.scala index 315029f477..1cf7dc898f 100644 --- a/modules/challenge/src/main/Challenge.scala +++ b/modules/challenge/src/main/Challenge.scala @@ -126,12 +126,20 @@ object Challenge { } object DeclineReason { - case object Generic extends DeclineReason(I18nKeys.challenge.declineGeneric) - case object Later extends DeclineReason(I18nKeys.challenge.declineLater) + case object Generic extends DeclineReason(I18nKeys.challenge.declineGeneric) + case object Later extends DeclineReason(I18nKeys.challenge.declineLater) + case object TooFast extends DeclineReason(I18nKeys.challenge.declineTooFast) + case object TooSlow extends DeclineReason(I18nKeys.challenge.declineTooSlow) + case object TimeControl extends DeclineReason(I18nKeys.challenge.declineTimeControl) + case object Rated extends DeclineReason(I18nKeys.challenge.declineRated) + case object Casual extends DeclineReason(I18nKeys.challenge.declineCasual) + case object Standard extends DeclineReason(I18nKeys.challenge.declineStandard) + case object Variant extends DeclineReason(I18nKeys.challenge.declineVariant) - val default: DeclineReason = Generic - val all: List[DeclineReason] = List(Generic, Later) - def apply(key: String) = all.find(_.key == key) | Generic + val default: DeclineReason = Generic + val all: List[DeclineReason] = + List(Generic, Later, TooFast, TooSlow, TimeControl, Rated, Casual, Standard, Variant) + def apply(key: String) = all.find { d => d.key == key.toLowerCase || d.trans.key == key } | Generic } case class Rating(int: Int, provisional: Boolean) { diff --git a/modules/challenge/src/main/JsonView.scala b/modules/challenge/src/main/JsonView.scala index f9cefde4b2..3f2477e981 100644 --- a/modules/challenge/src/main/JsonView.scala +++ b/modules/challenge/src/main/JsonView.scala @@ -35,7 +35,10 @@ final class JsonView( Json.obj( "in" -> a.in.map(apply(Direction.In.some)), "out" -> a.out.map(apply(Direction.Out.some)), - "i18n" -> lila.i18n.JsDump.keysToObject(i18nKeys, lang) + "i18n" -> lila.i18n.JsDump.keysToObject(i18nKeys, lang), + "reasons" -> JsObject(Challenge.DeclineReason.all.map { r => + r.key -> JsString(r.trans.txt()) + }) ) def show(challenge: Challenge, socketVersion: SocketVersion, direction: Option[Direction])(implicit diff --git a/modules/i18n/src/main/I18nKeys.scala b/modules/i18n/src/main/I18nKeys.scala index 687868cff9..a28feee654 100644 --- a/modules/i18n/src/main/I18nKeys.scala +++ b/modules/i18n/src/main/I18nKeys.scala @@ -1961,6 +1961,13 @@ val `cannotChallengeDueToProvisionalXRating` = new I18nKey("challenge:cannotChal val `xOnlyAcceptsChallengesFromFriends` = new I18nKey("challenge:xOnlyAcceptsChallengesFromFriends") val `declineGeneric` = new I18nKey("challenge:declineGeneric") val `declineLater` = new I18nKey("challenge:declineLater") +val `declineTooFast` = new I18nKey("challenge:declineTooFast") +val `declineTooSlow` = new I18nKey("challenge:declineTooSlow") +val `declineTimeControl` = new I18nKey("challenge:declineTimeControl") +val `declineRated` = new I18nKey("challenge:declineRated") +val `declineCasual` = new I18nKey("challenge:declineCasual") +val `declineStandard` = new I18nKey("challenge:declineStandard") +val `declineVariant` = new I18nKey("challenge:declineVariant") } } diff --git a/translation/source/challenge.xml b/translation/source/challenge.xml index de28541396..2eafa9aecf 100644 --- a/translation/source/challenge.xml +++ b/translation/source/challenge.xml @@ -12,5 +12,12 @@ Cannot challenge due to provisional %s rating. %s only accepts challenges from friends. I'm not accepting challenges at the moment. - I'm not accepting challenges right now, please ask again later. + This is not the right time for me, please ask again later. + This time control is too fast for me, please challenge again with a slower game. + This time control is too slow for me, please challenge again with a faster game. + I'm not accepting challenges with this time control. + Please send me a rated challenge instead. + Please send me a casual challenge instead. + I'm not accepting variant challenges right now. + I'm not willing to play this variant right now. diff --git a/ui/challenge/css/_challenge.scss b/ui/challenge/css/_challenge.scss index 2289f292b9..740a894ad9 100644 --- a/ui/challenge/css/_challenge.scss +++ b/ui/challenge/css/_challenge.scss @@ -64,11 +64,15 @@ position: absolute; top: 0; left: 0; - width: 50%; + width: 40%; } - .buttons > *:last-child { - left: 50%; + .buttons .decline { + left: 40%; + } + .buttons .decline-reason { + left: 80%; + width: 20%; } button { diff --git a/ui/challenge/src/ctrl.ts b/ui/challenge/src/ctrl.ts index 4ca8f5cbc8..163f5e2175 100644 --- a/ui/challenge/src/ctrl.ts +++ b/ui/challenge/src/ctrl.ts @@ -1,15 +1,17 @@ import * as xhr from 'common/xhr'; import notify from 'common/notification'; -import { Ctrl, ChallengeOpts, ChallengeData, ChallengeUser } from './interfaces'; +import { Ctrl, ChallengeOpts, ChallengeData, ChallengeUser, Reasons } from './interfaces'; export default function(opts: ChallengeOpts, data: ChallengeData, redraw: () => void): Ctrl { let trans = (key: string) => key; let redirecting = false; + let reasons: Reasons = {}; function update(d: ChallengeData) { data = d; if (d.i18n) trans = lichess.trans(d.i18n).noarg; + if (d.reasons) reasons = d.reasons; opts.setCount(countActiveIn()); notifyNew(); } @@ -43,14 +45,15 @@ export default function(opts: ChallengeOpts, data: ChallengeData, redraw: () => return { data: () => data, trans: () => trans, + reasons: () => reasons, update, - decline(id) { + decline(id, reason) { data.in.forEach(c => { if (c.id === id) { c.declined = true; xhr.text( `/challenge/${id}/decline`, - { method: 'post' } + { method: 'post', body: xhr.form({reason}) } ).catch(() => lichess.announce({ msg: 'Failed to send challenge decline' })); } }); diff --git a/ui/challenge/src/interfaces.ts b/ui/challenge/src/interfaces.ts index 8a9f437ae6..de2e59ef5f 100644 --- a/ui/challenge/src/interfaces.ts +++ b/ui/challenge/src/interfaces.ts @@ -9,7 +9,8 @@ export interface Ctrl { update(data: ChallengeData): void data(): ChallengeData trans(): (key: string) => string - decline(id: string): void + reasons(): Reasons + decline(id: string, reason: string): void cancel(id: string): void onRedirect(): void redirecting(): boolean @@ -56,12 +57,17 @@ export interface Challenge { declined?: boolean } +export type Reasons = { + [key: string]: string +} + export interface ChallengeData { in: Array out: Array i18n?: { [key: string]: string } + reasons?: Reasons } export type Redraw = () => void diff --git a/ui/challenge/src/view.ts b/ui/challenge/src/view.ts index b356ac5c89..fc1e9f784f 100644 --- a/ui/challenge/src/view.ts +++ b/ui/challenge/src/view.ts @@ -1,11 +1,11 @@ +import { Ctrl, Challenge, ChallengeData, ChallengeDirection, ChallengeUser, TimeControl } from './interfaces' import { h } from 'snabbdom' import { VNode } from 'snabbdom/vnode' -import { Ctrl, Challenge, ChallengeData, ChallengeDirection, ChallengeUser, TimeControl } from './interfaces' export function loaded(ctrl: Ctrl): VNode { return ctrl.redirecting() ? - h('div#challenge-app.dropdown', h('div.initiating', spinner())) : - h('div#challenge-app.links.dropdown.rendered', renderContent(ctrl)); + h('div#challenge-app.dropdown', h('div.initiating', spinner())) : + h('div#challenge-app.links.dropdown.rendered', renderContent(ctrl)); } export function loading(): VNode { @@ -54,7 +54,7 @@ function challenge(ctrl: Ctrl, dir: ChallengeDirection) { ].join(' • ')) ]), h('i', { - attrs: {'data-icon': c.perf.icon} + attrs: { 'data-icon': c.perf.icon } }), h('div.buttons', (dir === 'in' ? inButtons : outButtons)(ctrl, c)) ]); @@ -84,8 +84,22 @@ function inButtons(ctrl: Ctrl, c: Challenge): VNode[] { 'data-icon': 'L', title: trans('decline') }, - hook: onClick(() => ctrl.decline(c.id)) - }) + hook: onClick(() => ctrl.decline(c.id, 'generic')) + }), + h('select.decline-reason', { + hook: { + insert: (vnode: VNode) => { + const select = (vnode.elm as HTMLSelectElement); + select.addEventListener('change', () => + ctrl.decline(c.id, select.value) + ); + } + } + }, + Object.entries(ctrl.reasons()).map(([key, name]) => + h('option', { attrs: { value: key } }, key == 'generic' ? '' : name) + ) + ) ]; } @@ -127,7 +141,7 @@ function renderUser(u?: ChallengeUser): VNode { if (!u) return h('span', 'Open challenge'); const rating = u.rating + (u.provisional ? '?' : ''); return h('a.ulpt.user-link', { - attrs: { href: `/@/${u.name}`}, + attrs: { href: `/@/${u.name}` }, class: { online: !!u.online } }, [ h('i.line' + (u.patron ? '.patron' : '')), @@ -135,9 +149,9 @@ function renderUser(u?: ChallengeUser): VNode { u.title && h('span.utitle', u.title == 'BOT' ? { attrs: { 'data-bot': true } } : {}, u.title + ' '), u.name + ' (' + rating + ') ' ]), - h('signal', u.lag === undefined ? [] : [1, 2, 3, 4].map((i) => h('i', { - class: { off: u.lag! < i} - }))) + h('signal', u.lag === undefined ? [] : [1, 2, 3, 4].map((i) => h('i', { + class: { off: u.lag! < i } + }))) ]); } diff --git a/ui/tsconfig.base.json b/ui/tsconfig.base.json index 611f796030..94497ec22e 100644 --- a/ui/tsconfig.base.json +++ b/ui/tsconfig.base.json @@ -10,7 +10,7 @@ "moduleResolution": "node", "target": "ES2016", "module": "commonjs", - "lib": ["DOM", "ES2016", "DOM.iterable"], + "lib": ["DOM", "ES2017", "DOM.iterable"], "types": ["lichess", "cash", "defer-promise"] } } From 756d2b5a85137e97c860bea9159b0001d86cc5a5 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Thu, 21 Jan 2021 17:34:02 +0100 Subject: [PATCH 33/64] tweak user.like cache --- modules/user/src/main/Cached.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/user/src/main/Cached.scala b/modules/user/src/main/Cached.scala index 781fe2c952..9037fb6e1f 100644 --- a/modules/user/src/main/Cached.scala +++ b/modules/user/src/main/Cached.scala @@ -98,8 +98,8 @@ final class Cached( private def userIdsLikeFetch(text: String) = userRepo.userIdsLikeFilter(text, $empty, 12) - private val userIdsLikeCache = cacheApi[String, List[User.ID]](64, "user.like") { - _.expireAfterWrite(3 minutes).buildAsyncFuture(userIdsLikeFetch) + private val userIdsLikeCache = cacheApi[String, List[User.ID]](1024, "user.like") { + _.expireAfterWrite(5 minutes).buildAsyncFuture(userIdsLikeFetch) } def userIdsLike(text: String): Fu[List[User.ID]] = { From 61ddc65030e8dda2ac57f5f4e53f1df1ae68c781 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Thu, 21 Jan 2021 17:55:28 +0100 Subject: [PATCH 34/64] link to puzzle dashboard in user page side --- app/views/user/show/side.scala | 10 +++++---- modules/rating/src/main/PerfType.scala | 3 --- ui/site/css/user/_sub-rating.scss | 30 +++++++++++--------------- 3 files changed, 18 insertions(+), 25 deletions(-) diff --git a/app/views/user/show/side.scala b/app/views/user/show/side.scala index 5a04ae79dc..2656162545 100644 --- a/app/views/user/show/side.scala +++ b/app/views/user/show/side.scala @@ -20,16 +20,18 @@ object side { perf.nonEmpty option showPerf(perf, perfType) def showPerf(perf: lila.rating.Perf, perfType: PerfType) = { - val isGame = lila.rating.PerfType.isGame(perfType) + val isPuzzle = perfType == lila.rating.PerfType.Puzzle a( dataIcon := perfType.iconChar, title := perfType.desc, cls := List( "empty" -> perf.isEmpty, - "game" -> isGame, "active" -> active.has(perfType) ), - href := isGame option routes.User.perfStat(u.username, perfType.key).url, + href := { + if (isPuzzle) routes.Puzzle.dashboard(30, "home") + else routes.User.perfStat(u.username, perfType.key) + }, span( h3(perfType.trans), st.rating( @@ -53,7 +55,7 @@ object side { ) } ), - isGame option iconTag("G") + !isPuzzle option iconTag("G") ) } diff --git a/modules/rating/src/main/PerfType.scala b/modules/rating/src/main/PerfType.scala index 8d4b992a40..c2a951f877 100644 --- a/modules/rating/src/main/PerfType.scala +++ b/modules/rating/src/main/PerfType.scala @@ -219,7 +219,6 @@ object PerfType { Horde, RacingKings ) - val nonGame: List[PerfType] = List(Puzzle) val leaderboardable: List[PerfType] = List( Bullet, Blitz, @@ -239,8 +238,6 @@ object PerfType { List(Crazyhouse, Chess960, KingOfTheHill, ThreeCheck, Antichess, Atomic, Horde, RacingKings) val standard: List[PerfType] = List(Bullet, Blitz, Rapid, Classical, Correspondence) - def isGame(pt: PerfType) = !nonGame.contains(pt) - def variantOf(pt: PerfType): chess.variant.Variant = pt match { case Crazyhouse => chess.variant.Crazyhouse diff --git a/ui/site/css/user/_sub-rating.scss b/ui/site/css/user/_sub-rating.scss index 994f88a609..d342e61311 100644 --- a/ui/site/css/user/_sub-rating.scss +++ b/ui/site/css/user/_sub-rating.scss @@ -7,8 +7,6 @@ @include transition; - cursor: default; - &.empty { opacity: .5; } @@ -21,27 +19,23 @@ @include transition; } - &.game { - cursor: pointer; + &:hover { + background: mix($c-bg-box, $c-bg-page, 50%); - &:hover { - background: mix($c-bg-box, $c-bg-page, 50%); - - &::before { - color: $c-link; - opacity: .7; - } + &::before { + color: $c-link; + opacity: .7; } + } - &.active { - @extend %box-shadow; + &.active { + @extend %box-shadow; - background: $c-bg-box; + background: $c-bg-box; - &::before { - color: $c-accent; - opacity: .7; - } + &::before { + color: $c-accent; + opacity: .7; } } From c1afdcf162455814e905495dc7f52b697da106aa Mon Sep 17 00:00:00 2001 From: Niklas Fiekas Date: Thu, 21 Jan 2021 23:11:45 +0100 Subject: [PATCH 35/64] SharedArrayBuffer is part of ES2017 (fixes #7977) --- ui/@types/lichess/index.d.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/ui/@types/lichess/index.d.ts b/ui/@types/lichess/index.d.ts index 11abe312f0..dcb3626276 100644 --- a/ui/@types/lichess/index.d.ts +++ b/ui/@types/lichess/index.d.ts @@ -222,9 +222,6 @@ interface LightUser { patron?: boolean } -declare var SharedArrayBuffer: any | undefined; -declare var Atomics: any | undefined; - interface Navigator { deviceMemory: number; } From 33df69051174dc840dd170cd7cc2dc4249017462 Mon Sep 17 00:00:00 2001 From: Niklas Fiekas Date: Thu, 21 Jan 2021 23:26:09 +0100 Subject: [PATCH 36/64] tweak lichess d.ts --- ui/@types/lichess/index.d.ts | 9 +++++---- ui/ceval/src/ctrl.ts | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/ui/@types/lichess/index.d.ts b/ui/@types/lichess/index.d.ts index dcb3626276..9d1c980cdb 100644 --- a/ui/@types/lichess/index.d.ts +++ b/ui/@types/lichess/index.d.ts @@ -1,5 +1,5 @@ interface Lichess { - load: Promise; // window.onload promise + load: Promise; // window.onload promise info: any; requestIdleCallback(f: () => void, timeout?: number): void; sri: string; @@ -202,10 +202,11 @@ interface Window { hopscotch: any; LichessSpeech?: LichessSpeech; palantir?: { - palantir(opts: PalantirOpts): Palantir + palantir(opts: PalantirOpts): Palantir; }; - [key: string]: any; // TODO + + crossOriginIsolated?: boolean; // https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/crossOriginIsolated } interface Study{ @@ -223,7 +224,7 @@ interface LightUser { } interface Navigator { - deviceMemory: number; + deviceMemory?: number; // https://developer.mozilla.org/en-US/docs/Web/API/Navigator/deviceMemory } declare type VariantKey = 'standard' | 'chess960' | 'antichess' | 'fromPosition' | 'kingOfTheHill' | 'threeCheck' | 'atomic' | 'horde' | 'racingKings' | 'crazyhouse'; diff --git a/ui/ceval/src/ctrl.ts b/ui/ceval/src/ctrl.ts index ef63ee58a8..66fc288b4b 100644 --- a/ui/ceval/src/ctrl.ts +++ b/ui/ceval/src/ctrl.ts @@ -66,7 +66,7 @@ export default function(opts: CevalOpts): CevalCtrl { const sharedMem = sharedWasmMemory(8, 16); if (sharedMem) { technology = 'wasmx'; - if (!defined(window['crossOriginIsolated'])) window['crossOriginIsolated'] = true; // polyfill + if (!defined(window.crossOriginIsolated)) window.crossOriginIsolated = true; // polyfill try { sharedMem.grow(8); growableSharedMem = true; From 9c975aff4ab07df48527edba8dfb48f4e92d1357 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Fri, 22 Jan 2021 09:18:06 +0100 Subject: [PATCH 37/64] rename insight models --- .../src/main/AggregationPipeline.scala | 2 +- modules/insight/src/main/BSONHandlers.scala | 16 +++++++------- modules/insight/src/main/Dimension.scala | 2 +- modules/insight/src/main/InsightApi.scala | 2 +- .../main/{Entry.scala => InsightEntry.scala} | 8 +++---- modules/insight/src/main/InsightIndexer.scala | 4 ++-- modules/insight/src/main/Metric.scala | 2 +- modules/insight/src/main/PovToEntry.scala | 12 +++++----- modules/insight/src/main/Storage.scala | 22 +++++++++---------- 9 files changed, 35 insertions(+), 35 deletions(-) rename modules/insight/src/main/{Entry.scala => InsightEntry.scala} (98%) diff --git a/modules/insight/src/main/AggregationPipeline.scala b/modules/insight/src/main/AggregationPipeline.scala index 2336ca92bc..d8d015490f 100644 --- a/modules/insight/src/main/AggregationPipeline.scala +++ b/modules/insight/src/main/AggregationPipeline.scala @@ -17,7 +17,7 @@ final private class AggregationPipeline(store: Storage)(implicit ec: scala.concu import question.{ dimension, filters, metric } import lila.insight.{ Dimension => D, Metric => M } - import Entry.{ BSONFields => F } + import InsightEntry.{ BSONFields => F } import Storage._ val sampleGames = Sample(10_000) diff --git a/modules/insight/src/main/BSONHandlers.scala b/modules/insight/src/main/BSONHandlers.scala index b63d0c5599..d18e31e9f7 100644 --- a/modules/insight/src/main/BSONHandlers.scala +++ b/modules/insight/src/main/BSONHandlers.scala @@ -67,9 +67,9 @@ private object BSONHandlers { implicit val PeriodBSONHandler = intIsoHandler(lila.common.Iso.int[Period](Period.apply, _.days)) implicit def MoveBSONHandler = - new BSON[Move] { + new BSON[InsightMove] { def reads(r: BSON.Reader) = - Move( + InsightMove( phase = r.get[Phase]("p"), tenths = r.get[Int]("t"), role = r.get[Role]("r"), @@ -82,7 +82,7 @@ private object BSONHandlers { blur = r.boolD("b"), timeCv = r.intO("v").map(v => v.toFloat / TimeVariance.intFactor) ) - def writes(w: BSON.Writer, b: Move) = + def writes(w: BSON.Writer, b: InsightMove) = BSONDocument( "p" -> b.phase, "t" -> b.tenths, @@ -99,10 +99,10 @@ private object BSONHandlers { } implicit def EntryBSONHandler = - new BSON[Entry] { - import Entry.BSONFields._ + new BSON[InsightEntry] { + import InsightEntry.BSONFields._ def reads(r: BSON.Reader) = - Entry( + InsightEntry( id = r.str(id), number = r.int(number), userId = r.str(userId), @@ -113,7 +113,7 @@ private object BSONHandlers { opponentRating = r.int(opponentRating), opponentStrength = r.get[RelativeStrength](opponentStrength), opponentCastling = r.get[Castling](opponentCastling), - moves = r.get[List[Move]](moves), + moves = r.get[List[InsightMove]](moves), queenTrade = r.get[QueenTrade](queenTrade), result = r.get[Result](result), termination = r.get[Termination](termination), @@ -122,7 +122,7 @@ private object BSONHandlers { provisional = r.boolD(provisional), date = r.date(date) ) - def writes(w: BSON.Writer, e: Entry) = + def writes(w: BSON.Writer, e: InsightEntry) = BSONDocument( id -> e.id, number -> e.number, diff --git a/modules/insight/src/main/Dimension.scala b/modules/insight/src/main/Dimension.scala index 605c6aa0ea..1f4862992a 100644 --- a/modules/insight/src/main/Dimension.scala +++ b/modules/insight/src/main/Dimension.scala @@ -28,7 +28,7 @@ object Dimension { import BSONHandlers._ import Position._ - import Entry.{ BSONFields => F } + import InsightEntry.{ BSONFields => F } import lila.rating.BSONHandlers.perfTypeIdHandler case object Period diff --git a/modules/insight/src/main/InsightApi.scala b/modules/insight/src/main/InsightApi.scala index 5a6cd224c0..de8392ae2f 100644 --- a/modules/insight/src/main/InsightApi.scala +++ b/modules/insight/src/main/InsightApi.scala @@ -62,7 +62,7 @@ final class InsightApi( Pov(g) .map { pov => pov.player.userId ?? { userId => - storage find Entry.povToId(pov) flatMap { + storage find InsightEntry.povToId(pov) flatMap { _ ?? { old => indexer.update(g, userId, old) } diff --git a/modules/insight/src/main/Entry.scala b/modules/insight/src/main/InsightEntry.scala similarity index 98% rename from modules/insight/src/main/Entry.scala rename to modules/insight/src/main/InsightEntry.scala index 214d69b4d7..1e128b674c 100644 --- a/modules/insight/src/main/Entry.scala +++ b/modules/insight/src/main/InsightEntry.scala @@ -7,7 +7,7 @@ import lila.rating.PerfType import org.joda.time.DateTime import cats.data.NonEmptyList -case class Entry( +case class InsightEntry( id: String, // gameId + w/b number: Int, // auto increment over userId userId: String, @@ -18,7 +18,7 @@ case class Entry( opponentRating: Int, opponentStrength: RelativeStrength, opponentCastling: Castling, - moves: List[Move], + moves: List[InsightMove], queenTrade: QueenTrade, result: Result, termination: Termination, @@ -31,7 +31,7 @@ case class Entry( def gameId = id take Game.gameIdSize } -case object Entry { +case object InsightEntry { def povToId(pov: Pov) = pov.gameId + pov.color.letter @@ -58,7 +58,7 @@ case object Entry { } } -case class Move( +case class InsightMove( phase: Phase, tenths: Int, role: Role, diff --git a/modules/insight/src/main/InsightIndexer.scala b/modules/insight/src/main/InsightIndexer.scala index 7131f29f1d..73a3becd40 100644 --- a/modules/insight/src/main/InsightIndexer.scala +++ b/modules/insight/src/main/InsightIndexer.scala @@ -37,7 +37,7 @@ final private class InsightIndexer( } } - def update(game: Game, userId: String, previous: Entry): Funit = + def update(game: Game, userId: String, previous: InsightEntry): Funit = povToEntry(game, userId, previous.provisional) flatMap { case Right(e) => storage update e.copy(number = previous.number) case _ => funit @@ -76,7 +76,7 @@ final private class InsightIndexer( private def computeFrom(user: User, from: DateTime, fromNumber: Int): Funit = storage nbByPerf user.id flatMap { nbs => var nbByPerf = nbs - def toEntry(game: Game): Fu[Option[Entry]] = + def toEntry(game: Game): Fu[Option[InsightEntry]] = game.perfType ?? { pt => val nb = nbByPerf.getOrElse(pt, 0) + 1 nbByPerf = nbByPerf.updated(pt, nb) diff --git a/modules/insight/src/main/Metric.scala b/modules/insight/src/main/Metric.scala index 01b9782977..2e38ad58de 100644 --- a/modules/insight/src/main/Metric.scala +++ b/modules/insight/src/main/Metric.scala @@ -28,7 +28,7 @@ object Metric { import DataType._ import Position._ - import Entry.{ BSONFields => F } + import InsightEntry.{ BSONFields => F } case object MeanCpl extends Metric( diff --git a/modules/insight/src/main/PovToEntry.scala b/modules/insight/src/main/PovToEntry.scala index 19bc355e03..280474a4fb 100644 --- a/modules/insight/src/main/PovToEntry.scala +++ b/modules/insight/src/main/PovToEntry.scala @@ -27,7 +27,7 @@ final private class PovToEntry( advices: Map[Ply, Advice] ) - def apply(game: Game, userId: String, provisional: Boolean): Fu[Either[Game, Entry]] = + def apply(game: Game, userId: String, provisional: Boolean): Fu[Either[Game, InsightEntry]] = enrich(game, userId, provisional) map (_ flatMap convert toRight game) @@ -84,7 +84,7 @@ final private class PovToEntry( case _ => chess.Pawn } - private def makeMoves(from: RichPov): List[Move] = { + private def makeMoves(from: RichPov): List[InsightMove] = { val cpDiffs = ~from.moveAccuracy toVector val prevInfos = from.analysis.?? { an => Accuracy.prevColorInfos(from.pov, an) pipe { is => @@ -124,7 +124,7 @@ final private class PovToEntry( } case _ => none } - Move( + InsightMove( phase = Phase.of(from.division, ply), tenths = movetime.roundTenths, role = role, @@ -174,7 +174,7 @@ final private class PovToEntry( } } - private def convert(from: RichPov): Option[Entry] = { + private def convert(from: RichPov): Option[InsightEntry] = { import from._ import pov.game for { @@ -182,8 +182,8 @@ final private class PovToEntry( myRating <- pov.player.rating opRating <- pov.opponent.rating perfType <- game.perfType - } yield Entry( - id = Entry povToId pov, + } yield InsightEntry( + id = InsightEntry povToId pov, number = 0, // temporary :-/ the Indexer will set it userId = myId, color = pov.color, diff --git a/modules/insight/src/main/Storage.scala b/modules/insight/src/main/Storage.scala index 3bdd64265f..ad2b24f794 100644 --- a/modules/insight/src/main/Storage.scala +++ b/modules/insight/src/main/Storage.scala @@ -11,33 +11,33 @@ final private class Storage(val coll: AsyncColl)(implicit ec: scala.concurrent.E import Storage._ import BSONHandlers._ - import Entry.{ BSONFields => F } + import InsightEntry.{ BSONFields => F } - def fetchFirst(userId: String): Fu[Option[Entry]] = - coll(_.find(selectUserId(userId)).sort(sortChronological).one[Entry]) + def fetchFirst(userId: String): Fu[Option[InsightEntry]] = + coll(_.find(selectUserId(userId)).sort(sortChronological).one[InsightEntry]) - def fetchLast(userId: String): Fu[Option[Entry]] = - coll(_.find(selectUserId(userId)).sort(sortAntiChronological).one[Entry]) + def fetchLast(userId: String): Fu[Option[InsightEntry]] = + coll(_.find(selectUserId(userId)).sort(sortAntiChronological).one[InsightEntry]) def count(userId: String): Fu[Int] = coll(_.countSel(selectUserId(userId))) - def insert(p: Entry) = coll(_.insert.one(p).void) + def insert(p: InsightEntry) = coll(_.insert.one(p).void) - def bulkInsert(ps: Seq[Entry]) = + def bulkInsert(ps: Seq[InsightEntry]) = coll { _.insert.many( ps.flatMap(BSONHandlers.EntryBSONHandler.writeOpt) ) } - def update(p: Entry) = coll(_.update.one(selectId(p.id), p, upsert = true).void) + def update(p: InsightEntry) = coll(_.update.one(selectId(p.id), p, upsert = true).void) - def remove(p: Entry) = coll(_.delete.one(selectId(p.id)).void) + def remove(p: InsightEntry) = coll(_.delete.one(selectId(p.id)).void) def removeAll(userId: String) = coll(_.delete.one(selectUserId(userId)).void) - def find(id: String) = coll(_.one[Entry](selectId(id))) + def find(id: String) = coll(_.one[InsightEntry](selectId(id))) def ecos(userId: String): Fu[Set[String]] = coll { @@ -66,7 +66,7 @@ final private class Storage(val coll: AsyncColl)(implicit ec: scala.concurrent.E private object Storage { - import Entry.{ BSONFields => F } + import InsightEntry.{ BSONFields => F } def selectId(id: String) = BSONDocument(F.id -> id) def selectUserId(id: String) = BSONDocument(F.userId -> id) From fe0d99e1d0a2a95c14801a008dfe4d3a6ee8e576 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Fri, 22 Jan 2021 09:41:23 +0100 Subject: [PATCH 38/64] veggie code --- ui/insight/css/_insight.scss | 8 ++++---- ui/insight/src/view.js | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ui/insight/css/_insight.scss b/ui/insight/css/_insight.scss index fabc447a15..bb8fde6505 100644 --- a/ui/insight/css/_insight.scss +++ b/ui/insight/css/_insight.scss @@ -3,7 +3,7 @@ display: grid; grid-template-columns: minmax(280px, 15vw); grid-template-rows: 60px; - grid-template-areas: 'side head' 'side meat'; + grid-template-areas: 'side head' 'side main'; grid-gap: 0 $block-gap; } @@ -12,7 +12,7 @@ } .loading { - .meat { + .insight__main { position: relative; } @@ -106,11 +106,11 @@ } } - .meat { + .insight__main { background: $c-bg-box; border: $border; border-top: 0; - grid-area: meat; + grid-area: main; } .axis-form { diff --git a/ui/insight/src/view.js b/ui/insight/src/view.js index 11fb5c735e..fde547363a 100644 --- a/ui/insight/src/view.js +++ b/ui/insight/src/view.js @@ -20,7 +20,7 @@ function cache(view, dataToKey) { }; } -var renderMeat = cache(function(ctrl) { +var renderMain = cache(function(ctrl) { if (ctrl.vm.broken) return m('div.broken', [ m('i[data-icon=j]'), 'Insights are unavailable.', @@ -73,6 +73,6 @@ module.exports = function(ctrl) { 'data-icon': '7' }, 'Chess Insights') ]), - m('div.meat.box', renderMeat(ctrl)) + m('div.insight__main.box', renderMain(ctrl)) ]); }; From 07b77c628d5031dff337fe5be0b67e93159ed50a Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Fri, 22 Jan 2021 09:46:17 +0100 Subject: [PATCH 39/64] show more precision in insights UI --- ui/insight/src/table.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/insight/src/table.js b/ui/insight/src/table.js index 16b101accd..7deebf480e 100644 --- a/ui/insight/src/table.js +++ b/ui/insight/src/table.js @@ -4,8 +4,8 @@ var numeral = require('numeral'); function formatNumber(dt, n) { if (dt === 'percent') n = n / 100; var f; - if (dt === 'seconds') f = '0.0'; - else if (dt === 'average') f = '0.0'; + if (dt === 'seconds') f = '0.00'; + else if (dt === 'average') f = '0.00'; else if (dt === 'percent') f = '0.0%'; else f = '0,0'; return numeral(n).format(f); From cd9ac247b70f474cdf474ae25f2562f12a2c8670 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Fri, 22 Jan 2021 10:14:40 +0100 Subject: [PATCH 40/64] rename team cli --- modules/team/src/main/Env.scala | 2 +- modules/team/src/main/{Cli.scala => TeamCli.scala} | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename modules/team/src/main/{Cli.scala => TeamCli.scala} (95%) diff --git a/modules/team/src/main/Env.scala b/modules/team/src/main/Env.scala index fab878e54d..ac9a7780fa 100644 --- a/modules/team/src/main/Env.scala +++ b/modules/team/src/main/Env.scala @@ -39,7 +39,7 @@ final class Env( lazy val paginator = wire[PaginatorBuilder] - lazy val cli = wire[Cli] + lazy val cli = wire[TeamCli] lazy val cached: Cached = wire[Cached] diff --git a/modules/team/src/main/Cli.scala b/modules/team/src/main/TeamCli.scala similarity index 95% rename from modules/team/src/main/Cli.scala rename to modules/team/src/main/TeamCli.scala index 1b621a6acc..b8ae058f7b 100644 --- a/modules/team/src/main/Cli.scala +++ b/modules/team/src/main/TeamCli.scala @@ -2,7 +2,7 @@ package lila.team import lila.db.dsl._ -final private[team] class Cli( +final private[team] class TeamCli( teamRepo: TeamRepo, api: TeamApi )(implicit ec: scala.concurrent.ExecutionContext) From 4ff06bbde060fe2613f63182d4a9ac8049f71313 Mon Sep 17 00:00:00 2001 From: yonizaf Date: Fri, 22 Jan 2021 12:14:40 +0200 Subject: [PATCH 41/64] add font fallback to sans-serif closes #7952 --- ui/common/css/abstract/_extends.scss | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ui/common/css/abstract/_extends.scss b/ui/common/css/abstract/_extends.scss index 9daa68a8b9..c08945ac4e 100644 --- a/ui/common/css/abstract/_extends.scss +++ b/ui/common/css/abstract/_extends.scss @@ -3,15 +3,15 @@ } %base-font { - font-family: 'Noto Sans'; + font-family: 'Noto Sans', Sans-Serif; } %roboto { - font-family: 'Roboto'; + font-family: 'Roboto', Sans-Serif; } %roboto-fat { - font-family: 'Roboto'; + font-family: 'Roboto', Sans-Serif; font-weight: 600; } From 258b8df54cbe772f14ae6f095392a6f1b13d6915 Mon Sep 17 00:00:00 2001 From: Niklas Fiekas Date: Fri, 22 Jan 2021 11:21:23 +0100 Subject: [PATCH 42/64] no longer need @types/defer-promise --- ui/ceval/package.json | 1 - ui/ceval/src/stockfishProtocol.ts | 4 ++-- ui/tsconfig.base.json | 2 +- yarn.lock | 5 ----- 4 files changed, 3 insertions(+), 9 deletions(-) diff --git a/ui/ceval/package.json b/ui/ceval/package.json index 3179132b1e..1333b2bf4f 100644 --- a/ui/ceval/package.json +++ b/ui/ceval/package.json @@ -19,7 +19,6 @@ "prod": "yarn run compile" }, "devDependencies": { - "@types/defer-promise": "1.0.0", "@types/lichess": "2.0.0", "typescript": "^4.1.3" }, diff --git a/ui/ceval/src/stockfishProtocol.ts b/ui/ceval/src/stockfishProtocol.ts index 2928985dda..5738210106 100644 --- a/ui/ceval/src/stockfishProtocol.ts +++ b/ui/ceval/src/stockfishProtocol.ts @@ -1,6 +1,6 @@ import { lichessVariantRules } from 'chessops/compat'; import { WorkerOpts, Work } from './types'; -import { defer } from 'common/defer'; +import { Deferred, defer } from 'common/defer'; const EVAL_REGEX = new RegExp('' + /^info depth (\d+) seldepth \d+ multipv (\d+) /.source @@ -13,7 +13,7 @@ export default class Protocol { private work: Work | null = null; private curEval: Tree.ClientEval | null = null; private expectedPvs = 1; - private stopped: DeferPromise.Deferred | null; + private stopped: Deferred | null; public engineName: string | undefined; diff --git a/ui/tsconfig.base.json b/ui/tsconfig.base.json index 94497ec22e..ac9c66df4f 100644 --- a/ui/tsconfig.base.json +++ b/ui/tsconfig.base.json @@ -11,6 +11,6 @@ "target": "ES2016", "module": "commonjs", "lib": ["DOM", "ES2017", "DOM.iterable"], - "types": ["lichess", "cash", "defer-promise"] + "types": ["lichess", "cash"] } } diff --git a/yarn.lock b/yarn.lock index 88c6781532..41c2ee18c7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -130,11 +130,6 @@ dependencies: moment "^2.10.2" -"@types/defer-promise@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/defer-promise/-/defer-promise-1.0.0.tgz#9c5054b7ef63fd0f0497d17b0ea1a849f9c6323b" - integrity sha512-NJAgn+jlo8V2TD0rj8zQy1nRzNLX73MQARTSQzWxco94lwzTOwRp7FPu7r4/Cnz715DxCWMGf3epjo7wbDBhVA== - "@types/estree@*": version "0.0.46" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.46.tgz#0fb6bfbbeabd7a30880504993369c4bf1deab1fe" From 55643c08496664455abe6152f00a0f643a538b77 Mon Sep 17 00:00:00 2001 From: Niklas Fiekas Date: Fri, 22 Jan 2021 11:28:07 +0100 Subject: [PATCH 43/64] stop supporting safari 10 --- bin/gen/timeago-to-scala.py | 2 +- ui/@build/rollupProject/index.js | 1 - ui/analyse/css/_tools.scss | 3 --- ui/puzzle/css/_tools.scss | 3 --- ui/tsconfig.base.json | 2 +- 5 files changed, 2 insertions(+), 9 deletions(-) diff --git a/bin/gen/timeago-to-scala.py b/bin/gen/timeago-to-scala.py index 1982c9a502..3b7fdd6f91 100755 --- a/bin/gen/timeago-to-scala.py +++ b/bin/gen/timeago-to-scala.py @@ -71,7 +71,7 @@ def main(args): def terser(js): - p = subprocess.Popen(["yarn", "run", "--silent", "terser", "--mangle", "--compress", "--safari10"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=sys.stderr) + p = subprocess.Popen(["yarn", "run", "--silent", "terser", "--mangle", "--compress"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=sys.stderr) stdout, stderr = p.communicate(js.encode("utf-8")) if p.returncode != 0: sys.exit(p.returncode) diff --git a/ui/@build/rollupProject/index.js b/ui/@build/rollupProject/index.js index c1a23880de..95e4c5eaec 100644 --- a/ui/@build/rollupProject/index.js +++ b/ui/@build/rollupProject/index.js @@ -16,7 +16,6 @@ exports.rollupProject = (targets) => { name: target.name, plugins: [ terser({ - safari10: true, output: { comments: false, }, diff --git a/ui/analyse/css/_tools.scss b/ui/analyse/css/_tools.scss index d57fa35794..2a4744d845 100644 --- a/ui/analyse/css/_tools.scss +++ b/ui/analyse/css/_tools.scss @@ -4,9 +4,6 @@ max-height: 100vh; - /* magically fixes fit-content on safari 10 */ - background: $c-bg-box; - .ceval { flex: 0 0 38px; } diff --git a/ui/puzzle/css/_tools.scss b/ui/puzzle/css/_tools.scss index 2f83ee1b4f..77a707ed58 100644 --- a/ui/puzzle/css/_tools.scss +++ b/ui/puzzle/css/_tools.scss @@ -3,9 +3,6 @@ max-height: 90vh; - /* hack to mitigate safari 10 disaster */ - background: $c-bg-box; - .ceval-wrap { flex: 0 0 38px; } diff --git a/ui/tsconfig.base.json b/ui/tsconfig.base.json index ac9c66df4f..352f3b74c8 100644 --- a/ui/tsconfig.base.json +++ b/ui/tsconfig.base.json @@ -8,7 +8,7 @@ "noImplicitThis": true, "noUnusedParameters": true, "moduleResolution": "node", - "target": "ES2016", + "target": "ES2017", "module": "commonjs", "lib": ["DOM", "ES2017", "DOM.iterable"], "types": ["lichess", "cash"] From e99c3fe80210462cc8cbf180210c3e3ba46dd1c6 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Fri, 22 Jan 2021 10:26:56 +0100 Subject: [PATCH 44/64] allow team battles with more than 10 teams, only display top 10 teams --- modules/tournament/src/main/JsonView.scala | 2 +- modules/tournament/src/main/PlayerRepo.scala | 2 +- modules/tournament/src/main/TeamBattle.scala | 7 +++++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/modules/tournament/src/main/JsonView.scala b/modules/tournament/src/main/JsonView.scala index 9ffae855d5..d726b5578a 100644 --- a/modules/tournament/src/main/JsonView.scala +++ b/modules/tournament/src/main/JsonView.scala @@ -369,7 +369,7 @@ final class JsonView( tournamentRepo.teamBattleOf(id) flatMap { _.fold(fuccess(JsArray())) { battle => playerRepo.bestTeamIdsByTour(id, battle) map { ranked => - JsArray(ranked map teamBattleRankedWrites.writes) + JsArray(ranked take TeamBattle.displayTeams map teamBattleRankedWrites.writes) } } } diff --git a/modules/tournament/src/main/PlayerRepo.scala b/modules/tournament/src/main/PlayerRepo.scala index df32379a7e..c29ee9202d 100644 --- a/modules/tournament/src/main/PlayerRepo.scala +++ b/modules/tournament/src/main/PlayerRepo.scala @@ -55,7 +55,7 @@ final class PlayerRepo(coll: Coll)(implicit ec: scala.concurrent.ExecutionContex ): Fu[List[TeamBattle.RankedTeam]] = { import TeamBattle.{ RankedTeam, TeamLeader } coll - .aggregateList(maxDocs = 10) { framework => + .aggregateList(maxDocs = TeamBattle.maxTeams) { framework => import framework._ Match(selectTour(tourId)) -> List( Sort(Descending("m")), diff --git a/modules/tournament/src/main/TeamBattle.scala b/modules/tournament/src/main/TeamBattle.scala index 9863b7ce3b..28aa5335ac 100644 --- a/modules/tournament/src/main/TeamBattle.scala +++ b/modules/tournament/src/main/TeamBattle.scala @@ -15,6 +15,9 @@ case class TeamBattle( object TeamBattle { + val maxTeams = 1000 + val displayTeams = 10 + def init(teamId: TeamID) = TeamBattle(Set(teamId), 5) case class TeamVs(teams: chess.Color.Map[TeamID]) @@ -58,8 +61,8 @@ object TeamBattle { )(Setup.apply)(Setup.unapply) .verifying("We need at least 2 teams", s => s.potentialTeamIds.sizeIs > 1) .verifying( - "In this version of team battles, no more than 10 teams can be allowed.", - s => s.potentialTeamIds.sizeIs <= 10 + s"In this version of team battles, no more than $maxTeams teams can be allowed.", + s => s.potentialTeamIds.sizeIs <= maxTeams ) def edit(teams: List[String], nbLeaders: Int) = From 58e6f78d4ddcf7b183db8e7ede7d412b9a837980 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Fri, 22 Jan 2021 11:10:35 +0100 Subject: [PATCH 45/64] static team battle full leaderboard page --- app/controllers/Tournament.scala | 14 ++++++++ app/templating/UserHelper.scala | 6 ++-- app/views/tournament/teamBattle.scala | 37 ++++++++++++++++++++-- conf/routes | 1 + modules/tournament/src/main/Cached.scala | 14 ++++++++ modules/tournament/src/main/JsonView.scala | 16 +++------- ui/tournament/css/_team-battle.scss | 22 ++++++++----- 7 files changed, 86 insertions(+), 24 deletions(-) diff --git a/app/controllers/Tournament.scala b/app/controllers/Tournament.scala index dc4c5c2fcc..8febbc6645 100644 --- a/app/controllers/Tournament.scala +++ b/app/controllers/Tournament.scala @@ -484,6 +484,20 @@ final class Tournament( }.fuccess } + def battleTeams(id: String) = + Open { implicit ctx => + repo byId id flatMap { + _ ?? { tour => + tour.teamBattle ?? { battle => + env.tournament.cached.battle.teamStanding.get(tour.id) map { standing => + Ok(views.html.tournament.teamBattle.standing(tour, battle, standing)) + } + } + } + } + + } + private def WithEditableTournament(id: String, me: UserModel)( f: Tour => Fu[Result] )(implicit ctx: Context): Fu[Result] = diff --git a/app/templating/UserHelper.scala b/app/templating/UserHelper.scala index 00b614de0c..428dbe0ef9 100644 --- a/app/templating/UserHelper.scala +++ b/app/templating/UserHelper.scala @@ -116,7 +116,7 @@ trait UserHelper { self: I18nHelper with StringHelper with NumberHelper => withTitle: Boolean = true, truncate: Option[Int] = None, params: String = "" - )(implicit lang: Lang): Frag = + )(implicit lang: Lang): Tag = userIdNameLink( userId = user.id, username = user.name, @@ -150,7 +150,7 @@ trait UserHelper { self: I18nHelper with StringHelper with NumberHelper => title: Option[Title], params: String, modIcon: Boolean - )(implicit lang: Lang): Frag = + )(implicit lang: Lang): Tag = a( cls := userClass(userId, cssClass, withOnline), href := userUrl(username, params = params) @@ -170,7 +170,7 @@ trait UserHelper { self: I18nHelper with StringHelper with NumberHelper => withPerfRating: Option[PerfType] = None, name: Option[Frag] = None, params: String = "" - )(implicit lang: Lang): Frag = + )(implicit lang: Lang): Tag = a( cls := userClass(user.id, cssClass, withOnline, withPowerTip), href := userUrl(user.username, params) diff --git a/app/views/tournament/teamBattle.scala b/app/views/tournament/teamBattle.scala index 48d5a4edbe..1249a37498 100644 --- a/app/views/tournament/teamBattle.scala +++ b/app/views/tournament/teamBattle.scala @@ -1,15 +1,15 @@ package views.html package tournament +import controllers.routes import play.api.data.Form import lila.api.Context import lila.app.templating.Environment._ import lila.app.ui.ScalatagsTemplate._ +import lila.tournament.TeamBattle import lila.tournament.Tournament -import controllers.routes - object teamBattle { def edit(tour: Tournament, form: Form[_])(implicit ctx: Context) = @@ -52,4 +52,37 @@ object teamBattle { ) ) ) + + private val scoreTag = tag("score") + + def standing(tour: Tournament, battle: TeamBattle, standing: List[TeamBattle.RankedTeam])(implicit + ctx: Context + ) = + views.html.base.layout( + title = tour.name(), + moreCss = cssTag("tournament.show.team-battle") + )( + main(cls := "tour__battle-standing box")( + h1(a(href := routes.Tournament.show(tour.id))(tour.name())), + table(cls := "slist slist-pad tour__team-standing")( + tbody( + standing.map { t => + tr( + td(cls := "rank")(t.rank), + td(cls := "team")(teamIdToName(t.teamId)), + td(cls := "players")( + fragList( + t.leaders.map { l => + scoreTag(dataHref := routes.User.show(l.userId), cls := "user-link ulpt")(l.score) + }, + "+" + ) + ), + td(cls := "total")(t.score) + ) + } + ) + ) + ) + ) } diff --git a/conf/routes b/conf/routes index 8c41b7d324..f520320032 100644 --- a/conf/routes +++ b/conf/routes @@ -236,6 +236,7 @@ GET /tournament/$id<\w{8}>/team/:team controllers.Tournament.teamInfo(id POST /tournament/$id<\w{8}>/terminate controllers.Tournament.terminate(id: String) GET /tournament/$id<\w{8}>/edit controllers.Tournament.edit(id: String) POST /tournament/$id<\w{8}>/edit controllers.Tournament.update(id: String) +GET /tournament/$id<\w{8}>/teams controllers.Tournament.battleTeams(id: String) GET /tournament/help controllers.Tournament.help(system: Option[String] ?= None) GET /tournament/leaderboard controllers.Tournament.leaderboard GET /tournament/shields controllers.Tournament.shields diff --git a/modules/tournament/src/main/Cached.scala b/modules/tournament/src/main/Cached.scala index 07ee54b0f9..dbcf039bda 100644 --- a/modules/tournament/src/main/Cached.scala +++ b/modules/tournament/src/main/Cached.scala @@ -7,6 +7,7 @@ import lila.hub.LightTeam.TeamID import lila.memo._ import lila.memo.CacheApi._ import lila.user.User +import play.api.libs.json.JsArray final private[tournament] class Cached( playerRepo: PlayerRepo, @@ -59,6 +60,19 @@ final private[tournament] class Cached( .buildAsyncFuture(playerRepo.computeRanking) } + object battle { + + val teamStanding = + cacheApi[Tournament.ID, List[TeamBattle.RankedTeam]](8, "tournament.teamStanding") { + _.expireAfterWrite(1 second) + .buildAsyncFuture { id => + tournamentRepo teamBattleOf id flatMap { + _ ?? { playerRepo.bestTeamIdsByTour(id, _) } + } + } + } + } + private[tournament] object sheet { import arena.Sheet diff --git a/modules/tournament/src/main/JsonView.scala b/modules/tournament/src/main/JsonView.scala index d726b5578a..8a0152fce1 100644 --- a/modules/tournament/src/main/JsonView.scala +++ b/modules/tournament/src/main/JsonView.scala @@ -363,23 +363,17 @@ final class JsonView( "p" -> Json.arr(u1, u2) ) - private val teamStandingCache = cacheApi[Tournament.ID, JsArray](4, "tournament.teamStanding") { - _.expireAfterWrite(1 second) + private val teamStandingJsonCache = cacheApi[Tournament.ID, JsArray](4, "tournament.teamStanding") { + _.expireAfterWrite(500 millis) .buildAsyncFuture { id => - tournamentRepo.teamBattleOf(id) flatMap { - _.fold(fuccess(JsArray())) { battle => - playerRepo.bestTeamIdsByTour(id, battle) map { ranked => - JsArray(ranked take TeamBattle.displayTeams map teamBattleRankedWrites.writes) - } - } + cached.battle.teamStanding.get(id) map { ranked => + JsArray(ranked take TeamBattle.displayTeams map teamBattleRankedWrites.writes) } } } def getTeamStanding(tour: Tournament): Fu[Option[JsArray]] = - tour.isTeamBattle ?? { - teamStandingCache get tour.id dmap some - } + tour.isTeamBattle ?? { teamStandingJsonCache get tour.id dmap some } implicit private val teamBattleRankedWrites: Writes[TeamBattle.RankedTeam] = OWrites { rt => Json.obj( diff --git a/ui/tournament/css/_team-battle.scss b/ui/tournament/css/_team-battle.scss index 90243a4758..c1812f594c 100644 --- a/ui/tournament/css/_team-battle.scss +++ b/ui/tournament/css/_team-battle.scss @@ -26,12 +26,14 @@ team { } .tour__team-standing { - tbody tr:nth-child(odd) { - background: $c-bg-zebra; - } + tbody tr { + &:nth-child(odd) { + background: $c-bg-zebra; + } - tbody tr:nth-child(even) { - background: $c-bg-box; + &:nth-child(even) { + background: $c-bg-box; + } } .team { @@ -82,7 +84,7 @@ team { background: linear-gradient(to left, $c-active-border 0px, $c-active-border 5px, rgba(0, 0, 0, 0) 5px, rgba(0, 0, 0, 0) 100%); } - tr:hover { + .tour__main & tr:hover { background: mix($c-primary, $c-bg-box, 30%) !important; } @@ -91,9 +93,13 @@ team { } } -.team-battle { - &__title {} +.tour__battle-standing { + td { + padding: 2rem 1rem; + } +} +.team-battle { &__list { a { display: block; From b92954549b799de0ebd0c99e2c5b42318c90a0d0 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Fri, 22 Jan 2021 11:32:13 +0100 Subject: [PATCH 46/64] send info about my team in large battles --- modules/tournament/src/main/JsonView.scala | 16 ++++++++++++---- modules/tournament/src/main/TeamBattle.scala | 2 ++ modules/tournament/src/main/model.scala | 4 +++- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/modules/tournament/src/main/JsonView.scala b/modules/tournament/src/main/JsonView.scala index 8a0152fce1..bfe1001646 100644 --- a/modules/tournament/src/main/JsonView.scala +++ b/modules/tournament/src/main/JsonView.scala @@ -82,6 +82,7 @@ final class JsonView( battle.teams.intersect(teams.toSet).toList })) teamStanding <- getTeamStanding(tour) + myTeam <- myInfo.flatMap(_.teamId) ?? { getMyRankedTeam(tour, _) } } yield Json .obj( "nbPlayers" -> tour.nbPlayers, @@ -101,6 +102,7 @@ final class JsonView( .add("stats" -> stats) .add("socketVersion" -> socketVersion.map(_.value)) .add("teamStanding" -> teamStanding) + .add("myTeam" -> myTeam) .add("duelTeams" -> data.duelTeams) ++ full.?? { Json @@ -148,7 +150,7 @@ final class JsonView( _ ?? { player => fetchCurrentGameId(tour, me) flatMap { gameId => getOrGuessRank(tour, player) dmap { rank => - MyInfo(rank + 1, player.withdraw, gameId).some + MyInfo(rank + 1, player.withdraw, gameId, player.team).some } } } @@ -363,6 +365,9 @@ final class JsonView( "p" -> Json.arr(u1, u2) ) + def getTeamStanding(tour: Tournament): Fu[Option[JsArray]] = + tour.isTeamBattle ?? { teamStandingJsonCache get tour.id dmap some } + private val teamStandingJsonCache = cacheApi[Tournament.ID, JsArray](4, "tournament.teamStanding") { _.expireAfterWrite(500 millis) .buildAsyncFuture { id => @@ -372,9 +377,6 @@ final class JsonView( } } - def getTeamStanding(tour: Tournament): Fu[Option[JsArray]] = - tour.isTeamBattle ?? { teamStandingJsonCache get tour.id dmap some } - implicit private val teamBattleRankedWrites: Writes[TeamBattle.RankedTeam] = OWrites { rt => Json.obj( "rank" -> rt.rank, @@ -389,6 +391,12 @@ final class JsonView( ) } + private def getMyRankedTeam(tour: Tournament, teamId: TeamID): Fu[Option[TeamBattle.RankedTeam]] = + tour.teamBattle.exists(_.hasTooManyTeams) ?? + cached.battle.teamStanding.get(tour.id) map { + _.find(_.teamId == teamId) + } + private val teamInfoCache = cacheApi[(Tournament.ID, TeamID), Option[JsObject]](16, "tournament.teamInfo.json") { _.expireAfterWrite(5 seconds) diff --git a/modules/tournament/src/main/TeamBattle.scala b/modules/tournament/src/main/TeamBattle.scala index 28aa5335ac..148d60e55e 100644 --- a/modules/tournament/src/main/TeamBattle.scala +++ b/modules/tournament/src/main/TeamBattle.scala @@ -11,6 +11,8 @@ case class TeamBattle( ) { def hasEnoughTeams = teams.sizeIs > 1 lazy val sortedTeamIds = teams.toList.sorted + + def hasTooManyTeams = teams.sizeIs > TeamBattle.displayTeams } object TeamBattle { diff --git a/modules/tournament/src/main/model.scala b/modules/tournament/src/main/model.scala index 9cce9bb98f..6fce027414 100644 --- a/modules/tournament/src/main/model.scala +++ b/modules/tournament/src/main/model.scala @@ -2,6 +2,8 @@ package lila.tournament import play.api.i18n.Lang +import lila.hub.LightTeam.TeamID + final class LeaderboardRepo(val coll: lila.db.dsl.Coll) case class TournamentTop(value: List[Player]) extends AnyVal @@ -25,7 +27,7 @@ case class GameView( def tourAndTeamVs = TourAndTeamVs(tour, teamVs) } -case class MyInfo(rank: Int, withdraw: Boolean, gameId: Option[lila.game.Game.ID]) { +case class MyInfo(rank: Int, withdraw: Boolean, gameId: Option[lila.game.Game.ID], teamId: Option[TeamID]) { def page = (rank + 9) / 10 } From 2605bc82645ecb26360e37777f51f17780c011c9 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Fri, 22 Jan 2021 11:58:36 +0100 Subject: [PATCH 47/64] unlimited team battle POC --- app/views/tournament/teamBattle.scala | 4 +-- ui/tournament/css/_team-battle.scss | 18 +++++++++++--- ui/tournament/src/interfaces.ts | 1 + ui/tournament/src/view/battle.ts | 35 +++++++++++++++++++++++---- 4 files changed, 47 insertions(+), 11 deletions(-) diff --git a/app/views/tournament/teamBattle.scala b/app/views/tournament/teamBattle.scala index 1249a37498..176004a771 100644 --- a/app/views/tournament/teamBattle.scala +++ b/app/views/tournament/teamBattle.scala @@ -62,9 +62,9 @@ object teamBattle { title = tour.name(), moreCss = cssTag("tournament.show.team-battle") )( - main(cls := "tour__battle-standing box")( + main(cls := "box")( h1(a(href := routes.Tournament.show(tour.id))(tour.name())), - table(cls := "slist slist-pad tour__team-standing")( + table(cls := "slist slist-pad tour__team-standing tour__team-standing--full")( tbody( standing.map { t => tr( diff --git a/ui/tournament/css/_team-battle.scss b/ui/tournament/css/_team-battle.scss index c1812f594c..cf5dd0506b 100644 --- a/ui/tournament/css/_team-battle.scss +++ b/ui/tournament/css/_team-battle.scss @@ -91,11 +91,21 @@ team { td { padding: 1rem 0.5rem; } -} -.tour__battle-standing { - td { - padding: 2rem 1rem; + .more-teams { + padding: 0 !important; + + a { + padding: 1rem 0; + display: block; + text-align: center; + } + } + + &--full { + td { + padding: 2rem 1rem; + } } } diff --git a/ui/tournament/src/interfaces.ts b/ui/tournament/src/interfaces.ts index de70c7436f..e9a6d42715 100644 --- a/ui/tournament/src/interfaces.ts +++ b/ui/tournament/src/interfaces.ts @@ -24,6 +24,7 @@ export interface TournamentOpts extends Untyped { export interface TournamentData extends Untyped { teamBattle?: TeamBattle; teamStanding?: RankedTeam[]; + myTeam?: RankedTeam; featured?: FeaturedGame; } diff --git a/ui/tournament/src/view/battle.ts b/ui/tournament/src/view/battle.ts index 7849006961..2256fb9b33 100644 --- a/ui/tournament/src/view/battle.ts +++ b/ui/tournament/src/view/battle.ts @@ -1,9 +1,9 @@ +import TournamentController from '../ctrl'; +import { bind, onInsert, playerName } from './util'; import { h } from 'snabbdom' +import { TeamBattle, RankedTeam, TournamentData, MaybeVNode } from '../interfaces'; import { VNode } from 'snabbdom/vnode'; -import { bind, onInsert, playerName } from './util'; -import { TeamBattle, RankedTeam } from '../interfaces'; -import TournamentController from '../ctrl'; export function joinWithTeamSelector(ctrl: TournamentController) { const onClose = () => { @@ -46,12 +46,37 @@ export function joinWithTeamSelector(ctrl: TournamentController) { export function teamStanding(ctrl: TournamentController, klass?: string): VNode | null { const battle = ctrl.data.teamBattle, - standing = ctrl.data.teamStanding; + standing = ctrl.data.teamStanding, + bigBattle = battle && Object.keys(battle.teams).length > 10; return battle && standing ? h('table.slist.tour__team-standing' + (klass ? '.' + klass : ''), [ - h('tbody', standing.map(rt => teamTr(ctrl, battle, rt))) + h('tbody', [ + ...standing.map(rt => teamTr(ctrl, battle, rt)), + ...(bigBattle ? [ + extraTeams(ctrl.data), + myTeam(ctrl, battle) + ] : []) + ]) ]) : null; } +function extraTeams(tour: TournamentData): VNode { + return h('tr', + h('td.more-teams', { + attrs: { colspan: 4 } + }, h('a', { + attrs: { + href: `/tournament/${tour.id}/teams` + }, + }, 'View all teams') + ) + ); +} + +function myTeam(ctrl: TournamentController, battle: TeamBattle): MaybeVNode { + const team = ctrl.data.myTeam; + return team && team.rank > 10 ? teamTr(ctrl, battle, team) : undefined; +} + export function teamName(battle: TeamBattle, teamId: string): VNode { return h('team.ttc-' + Object.keys(battle.teams).indexOf(teamId), battle.teams[teamId]); } From 48446c88bb9fe35c2f9de9a51c5cdfa3b250c568 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Fri, 22 Jan 2021 12:43:04 +0100 Subject: [PATCH 48/64] team battles up to 200 teams --- modules/tournament/src/main/TeamBattle.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/tournament/src/main/TeamBattle.scala b/modules/tournament/src/main/TeamBattle.scala index 148d60e55e..233b6c3ee2 100644 --- a/modules/tournament/src/main/TeamBattle.scala +++ b/modules/tournament/src/main/TeamBattle.scala @@ -17,7 +17,7 @@ case class TeamBattle( object TeamBattle { - val maxTeams = 1000 + val maxTeams = 200 val displayTeams = 10 def init(teamId: TeamID) = TeamBattle(Set(teamId), 5) From dc34ddcb59c3f4a07ac9bdc8ed8a3cdcd0d61d25 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Sat, 23 Jan 2021 08:22:54 +0100 Subject: [PATCH 49/64] New Crowdin updates (#7971) * New translations: challenge.xml (Scottish Gaelic) * New translations: challenge.xml (Assamese) * New translations: challenge.xml (Malayalam) * New translations: challenge.xml (Breton) * New translations: challenge.xml (Sinhala) * New translations: challenge.xml (Bosnian) * New translations: challenge.xml (Latin) * New translations: challenge.xml (Amharic) * New translations: challenge.xml (Norwegian Bokmal) * New translations: challenge.xml (Bashkir) * New translations: challenge.xml (Odia) * New translations: challenge.xml (Nepali) * New translations: challenge.xml (Asturian) * New translations: challenge.xml (Luganda) * New translations: challenge.xml (Maithili) * New translations: challenge.xml (Swahili) * New translations: challenge.xml (Malagasy) * New translations: challenge.xml (Aragonese) * New translations: challenge.xml (Tatar) * New translations: challenge.xml (Hindi) * New translations: challenge.xml (Azerbaijani) * New translations: challenge.xml (Kyrgyz) * New translations: challenge.xml (Maori) * New translations: challenge.xml (Malay) * New translations: challenge.xml (Telugu) * New translations: challenge.xml (Croatian) * New translations: challenge.xml (Thai) * New translations: challenge.xml (Norwegian Nynorsk) * New translations: challenge.xml (Latvian) * New translations: challenge.xml (Estonian) * New translations: challenge.xml (Kazakh) * New translations: challenge.xml (Esperanto) * New translations: challenge.xml (Faroese) * New translations: challenge.xml (Uyghur) * New translations: challenge.xml (Klingon) * New translations: challenge.xml (Lojban) * New translations: challenge.xml (Luxembourgish) * New translations: challenge.xml (Tagalog) * New translations: challenge.xml (English, United States) * New translations: challenge.xml (Burmese) * New translations: challenge.xml (Welsh) * New translations: challenge.xml (Maltese) * New translations: challenge.xml (Lithuanian) * New translations: challenge.xml (Dutch) * New translations: challenge.xml (Russian) * New translations: challenge.xml (Chinese Traditional) * New translations: contact.xml (Hindi) * New translations: challenge.xml (Spanish) * New translations: challenge.xml (German) * New translations: site.xml (Kurmanji (Kurdish)) * New translations: challenge.xml (Kurmanji (Kurdish)) * New translations: challenge.xml (Sorani (Kurdish)) * New translations: challenge.xml (Hindi) * New translations: site.xml (Croatian) * New translations: challenge.xml (Faroese) * New translations: site.xml (Breton) * New translations: site.xml (Uzbek) * New translations: site.xml (Sinhala) * New translations: site.xml (Bosnian) * New translations: site.xml (Latin) * New translations: site.xml (Malayalam) * New translations: site.xml (Tatar) * New translations: site.xml (Lojban) * New translations: site.xml (Malagasy) * New translations: site.xml (Aragonese) * New translations: site.xml (Scottish Gaelic) * New translations: site.xml (Malay) * New translations: puzzleTheme.xml (Hindi) * New translations: site.xml (Hindi) * New translations: site.xml (Azerbaijani) * New translations: site.xml (Latvian) * New translations: site.xml (Estonian) * New translations: site.xml (Kazakh) * New translations: puzzleTheme.xml (Norwegian Nynorsk) * New translations: site.xml (Norwegian Nynorsk) * New translations: site.xml (Esperanto) * New translations: site.xml (Faroese) * New translations: site.xml (Welsh) * New translations: site.xml (Tagalog) * New translations: puzzleTheme.xml (English, United States) * New translations: site.xml (English, United States) * New translations: puzzleTheme.xml (Norwegian Bokmal) * New translations: site.xml (Norwegian Bokmal) * New translations: site.xml (Nepali) * New translations: challenge.xml (Chewa) * New translations: challenge.xml (Javanese) * New translations: challenge.xml (Pali) * New translations: challenge.xml (Ossetian) * New translations: challenge.xml (Chechen) * New translations: challenge.xml (Afar) * New translations: challenge.xml (Punjabi, Pakistan) * New translations: challenge.xml (Guarani) * New translations: challenge.xml (Corsican) * New translations: challenge.xml (Cebuano) * New translations: challenge.xml (Ido) * New translations: challenge.xml (Sindhi) * New translations: challenge.xml (Northern Sami) * New translations: challenge.xml (Rundi) * New translations: challenge.xml (Sardinian) * New translations: challenge.xml (Kinyarwanda) * New translations: challenge.xml (Shona) * New translations: challenge.xml (Toki Pona) * New translations: challenge.xml (Sanskrit) * New translations: challenge.xml (Interlingua) * New translations: challenge.xml (Tigrinya) * New translations: challenge.xml (Turkmen) * New translations: site.xml (Turkmen) * New translations: site.xml (Chuvash) * New translations: site.xml (Toki Pona) * New translations: challenge.xml (Igbo) * New translations: challenge.xml (Arpitan) * New translations: challenge.xml (Quechua) * New translations: challenge.xml (Yoruba) * New translations: challenge.xml (Oromo) * New translations: challenge.xml (Somali) * New translations: site.xml (Interlingua) * New translations: challenge.xml (Chuvash) * New translations: challenge.xml (Hausa) * New translations: site.xml (Taqbaylit) * New translations: challenge.xml (Lao) * New translations: challenge.xml (Tajik) * New translations: challenge.xml (Pashto) * New translations: challenge.xml (Taqbaylit) * New translations: contact.xml (Norwegian Bokmal) * New translations: faq.xml (Spanish) * New translations: streamer.xml (Spanish) * New translations: challenge.xml (French) * New translations: challenge.xml (Spanish) * New translations: challenge.xml (Russian) * New translations: challenge.xml (Swedish) * New translations: challenge.xml (Norwegian Bokmal) * New translations: puzzleTheme.xml (Italian) * New translations: challenge.xml (French) * New translations: challenge.xml (Lithuanian) * New translations: challenge.xml (Russian) * New translations: challenge.xml (Slovenian) * New translations: challenge.xml (Serbian (Cyrillic)) * New translations: challenge.xml (Norwegian Bokmal) * New translations: contact.xml (Portuguese, Brazilian) * New translations: challenge.xml (Portuguese, Brazilian) * New translations: challenge.xml (Portuguese, Brazilian) * New translations: challenge.xml (German) * New translations: challenge.xml (German) * New translations: challenge.xml (Hungarian) * New translations: challenge.xml (Catalan) * New translations: challenge.xml (Hungarian) * New translations: challenge.xml (Catalan) * New translations: challenge.xml (Polish) * New translations: challenge.xml (Polish) * New translations: challenge.xml (Norwegian Nynorsk) * New translations: challenge.xml (Latvian) * New translations: challenge.xml (Norwegian Nynorsk) * New translations: challenge.xml (Latvian) * New translations: challenge.xml (German) * New translations: learn.xml (Greek) * New translations: contact.xml (Spanish) * New translations: contact.xml (Ukrainian) * New translations: activity.xml (Greek) * New translations: preferences.xml (Chinese Traditional) * New translations: site.xml (Greek) * New translations: patron.xml (Spanish) * New translations: challenge.xml (German) * New translations: preferences.xml (Vietnamese) * New translations: search.xml (Vietnamese) * New translations: preferences.xml (Swedish) * New translations: preferences.xml (Turkish) * New translations: site.xml (Greek) * New translations: settings.xml (Armenian) * New translations: challenge.xml (Swedish) * New translations: challenge.xml (Bosnian) * New translations: challenge.xml (Dutch) * New translations: challenge.xml (Swedish) * New translations: challenge.xml (Dutch) * New translations: site.xml (Bosnian) * New translations: challenge.xml (Dutch) * New translations: challenge.xml (Bosnian) * New translations: puzzleTheme.xml (Swedish) * New translations: challenge.xml (Dutch) * New translations: puzzleTheme.xml (Swedish) * New translations: challenge.xml (French) * New translations: challenge.xml (French) * New translations: puzzleTheme.xml (Finnish) * New translations: contact.xml (Azerbaijani) * New translations: challenge.xml (Azerbaijani) * New translations: puzzleTheme.xml (Finnish) * New translations: challenge.xml (Azerbaijani) * New translations: puzzleTheme.xml (Azerbaijani) * New translations: challenge.xml (Azerbaijani) * New translations: puzzleTheme.xml (Azerbaijani) * New translations: preferences.xml (Azerbaijani) * New translations: faq.xml (Spanish) * New translations: faq.xml (Spanish) * New translations: contact.xml (Romanian) * New translations: search.xml (Spanish) * New translations: contact.xml (English, United States) * New translations: challenge.xml (English, United States) * New translations: challenge.xml (Japanese) * New translations: challenge.xml (Japanese) * New translations: contact.xml (Japanese) * New translations: challenge.xml (Japanese) * New translations: puzzleTheme.xml (Norwegian Nynorsk) * New translations: puzzleTheme.xml (Norwegian Nynorsk) * New translations: contact.xml (Norwegian Nynorsk) * New translations: puzzleTheme.xml (Norwegian Nynorsk) * New translations: faq.xml (Norwegian Nynorsk) * New translations: puzzleTheme.xml (Norwegian Nynorsk) * New translations: puzzleTheme.xml (Norwegian Nynorsk) * New translations: puzzleTheme.xml (Norwegian Nynorsk) * New translations: puzzleTheme.xml (Norwegian Nynorsk) * New translations: puzzleTheme.xml (Norwegian Nynorsk) * New translations: puzzle.xml (Norwegian Nynorsk) * New translations: challenge.xml (Norwegian Nynorsk) * New translations: site.xml (Toki Pona) * New translations: site.xml (Toki Pona) * New translations: site.xml (Toki Pona) * New translations: site.xml (Toki Pona) * New translations: puzzleTheme.xml (Finnish) * New translations: site.xml (Armenian) * New translations: site.xml (Toki Pona) * New translations: puzzleTheme.xml (Finnish) * New translations: site.xml (Toki Pona) * New translations: challenge.xml (Finnish) * New translations: challenge.xml (Danish) * New translations: challenge.xml (Danish) * New translations: challenge.xml (Portuguese) * New translations: contact.xml (Portuguese) * New translations: challenge.xml (Portuguese) * New translations: challenge.xml (Swedish) * New translations: challenge.xml (Swedish) * New translations: challenge.xml (Swedish) * New translations: challenge.xml (Turkish) * New translations: challenge.xml (Turkish) * New translations: study.xml (Chinese Traditional) * New translations: study.xml (Chinese Traditional) * New translations: study.xml (Chinese Traditional) * New translations: study.xml (Chinese Traditional) * New translations: challenge.xml (Turkish) * New translations: challenge.xml (Turkish) * New translations: challenge.xml (Turkish) * New translations: challenge.xml (Turkish) * New translations: challenge.xml (Spanish) * New translations: challenge.xml (Turkish) * New translations: preferences.xml (Turkish) * New translations: site.xml (Croatian) * New translations: challenge.xml (Croatian) * New translations: challenge.xml (Croatian) * New translations: challenge.xml (Croatian) * New translations: site.xml (Croatian) * New translations: site.xml (Croatian) * New translations: challenge.xml (Uzbek) --- translation/dest/activity/el-GR.xml | 2 +- translation/dest/challenge/aa-ER.xml | 2 + translation/dest/challenge/af-ZA.xml | 2 + translation/dest/challenge/ak-GH.xml | 2 + translation/dest/challenge/am-ET.xml | 2 + translation/dest/challenge/an-ES.xml | 2 + translation/dest/challenge/ar-SA.xml | 2 + translation/dest/challenge/as-IN.xml | 2 + translation/dest/challenge/ast-ES.xml | 2 + translation/dest/challenge/az-AZ.xml | 23 ++++++ translation/dest/challenge/ba-RU.xml | 2 + translation/dest/challenge/be-BY.xml | 2 + translation/dest/challenge/bg-BG.xml | 2 + translation/dest/challenge/bn-BD.xml | 2 + translation/dest/challenge/br-FR.xml | 2 + translation/dest/challenge/bs-BA.xml | 16 ++++ translation/dest/challenge/ca-ES.xml | 6 ++ translation/dest/challenge/ce-CE.xml | 2 + translation/dest/challenge/ceb-PH.xml | 2 + translation/dest/challenge/ckb-IR.xml | 2 + translation/dest/challenge/co-FR.xml | 2 + translation/dest/challenge/cs-CZ.xml | 2 + translation/dest/challenge/cv-CU.xml | 2 + translation/dest/challenge/cy-GB.xml | 2 + translation/dest/challenge/da-DK.xml | 23 ++++++ translation/dest/challenge/de-DE.xml | 23 ++++++ translation/dest/challenge/el-GR.xml | 2 + translation/dest/challenge/en-US.xml | 23 ++++++ translation/dest/challenge/eo-UY.xml | 2 + translation/dest/challenge/es-ES.xml | 23 ++++++ translation/dest/challenge/et-EE.xml | 2 + translation/dest/challenge/eu-ES.xml | 2 + translation/dest/challenge/fa-IR.xml | 2 + translation/dest/challenge/fi-FI.xml | 16 ++++ translation/dest/challenge/fo-FO.xml | 16 ++++ translation/dest/challenge/fr-FR.xml | 23 ++++++ translation/dest/challenge/frp-IT.xml | 2 + translation/dest/challenge/fy-NL.xml | 2 + translation/dest/challenge/ga-IE.xml | 2 + translation/dest/challenge/gd-GB.xml | 2 + translation/dest/challenge/gl-ES.xml | 2 + translation/dest/challenge/gn-PY.xml | 2 + translation/dest/challenge/gu-IN.xml | 2 + translation/dest/challenge/ha-HG.xml | 2 + translation/dest/challenge/he-IL.xml | 2 + translation/dest/challenge/hi-IN.xml | 16 ++++ translation/dest/challenge/hr-HR.xml | 23 ++++++ translation/dest/challenge/hu-HU.xml | 21 +++++ translation/dest/challenge/hy-AM.xml | 2 + translation/dest/challenge/ia-IA.xml | 2 + translation/dest/challenge/id-ID.xml | 2 + translation/dest/challenge/ig-NG.xml | 2 + translation/dest/challenge/io-EN.xml | 2 + translation/dest/challenge/is-IS.xml | 2 + translation/dest/challenge/it-IT.xml | 2 + translation/dest/challenge/ja-JP.xml | 23 ++++++ translation/dest/challenge/jbo-EN.xml | 2 + translation/dest/challenge/jv-ID.xml | 2 + translation/dest/challenge/ka-GE.xml | 2 + translation/dest/challenge/kab-DZ.xml | 2 + translation/dest/challenge/kk-KZ.xml | 2 + translation/dest/challenge/km-KH.xml | 2 + translation/dest/challenge/kmr-TR.xml | 2 + translation/dest/challenge/kn-IN.xml | 2 + translation/dest/challenge/ko-KR.xml | 2 + translation/dest/challenge/ky-KG.xml | 2 + translation/dest/challenge/la-LA.xml | 2 + translation/dest/challenge/lb-LU.xml | 2 + translation/dest/challenge/lg-UG.xml | 2 + translation/dest/challenge/lo-LA.xml | 2 + translation/dest/challenge/lt-LT.xml | 23 ++++++ translation/dest/challenge/lv-LV.xml | 23 ++++++ translation/dest/challenge/mai-IN.xml | 2 + translation/dest/challenge/mg-MG.xml | 2 + translation/dest/challenge/mi-NZ.xml | 2 + translation/dest/challenge/mk-MK.xml | 2 + translation/dest/challenge/ml-IN.xml | 2 + translation/dest/challenge/mn-MN.xml | 2 + translation/dest/challenge/mr-IN.xml | 2 + translation/dest/challenge/ms-MY.xml | 2 + translation/dest/challenge/mt-MT.xml | 2 + translation/dest/challenge/my-MM.xml | 2 + translation/dest/challenge/nb-NO.xml | 23 ++++++ translation/dest/challenge/ne-NP.xml | 2 + translation/dest/challenge/nl-NL.xml | 23 ++++++ translation/dest/challenge/nn-NO.xml | 23 ++++++ translation/dest/challenge/ns-ZA.xml | 2 + translation/dest/challenge/ny-MW.xml | 2 + translation/dest/challenge/om-ET.xml | 2 + translation/dest/challenge/or-IN.xml | 2 + translation/dest/challenge/os-SE.xml | 2 + translation/dest/challenge/pa-IN.xml | 2 + translation/dest/challenge/pa-PK.xml | 2 + translation/dest/challenge/pi-IN.xml | 2 + translation/dest/challenge/pl-PL.xml | 23 ++++++ translation/dest/challenge/ps-AF.xml | 2 + translation/dest/challenge/pt-BR.xml | 23 ++++++ translation/dest/challenge/pt-PT.xml | 23 ++++++ translation/dest/challenge/qu-PE.xml | 2 + translation/dest/challenge/rn-BI.xml | 2 + translation/dest/challenge/ro-RO.xml | 2 + translation/dest/challenge/ru-RU.xml | 23 ++++++ translation/dest/challenge/rw-RW.xml | 2 + translation/dest/challenge/sa-IN.xml | 2 + translation/dest/challenge/sc-IT.xml | 2 + translation/dest/challenge/sd-PK.xml | 2 + translation/dest/challenge/se-NO.xml | 2 + translation/dest/challenge/si-LK.xml | 2 + translation/dest/challenge/sk-SK.xml | 2 + translation/dest/challenge/sl-SI.xml | 10 +++ translation/dest/challenge/sn-ZW.xml | 2 + translation/dest/challenge/so-SO.xml | 2 + translation/dest/challenge/sq-AL.xml | 2 + translation/dest/challenge/sr-SP.xml | 4 + translation/dest/challenge/st-ZA.xml | 2 + translation/dest/challenge/sv-SE.xml | 23 ++++++ translation/dest/challenge/sw-KE.xml | 2 + translation/dest/challenge/ta-IN.xml | 2 + translation/dest/challenge/te-IN.xml | 2 + translation/dest/challenge/tg-TJ.xml | 2 + translation/dest/challenge/th-TH.xml | 2 + translation/dest/challenge/ti-ER.xml | 2 + translation/dest/challenge/tk-TM.xml | 2 + translation/dest/challenge/tl-PH.xml | 2 + translation/dest/challenge/tlh-AA.xml | 2 + translation/dest/challenge/tn-ZA.xml | 2 + translation/dest/challenge/tp-TP.xml | 2 + translation/dest/challenge/tr-TR.xml | 23 ++++++ translation/dest/challenge/tt-RU.xml | 2 + translation/dest/challenge/ug-CN.xml | 2 + translation/dest/challenge/uk-UA.xml | 2 + translation/dest/challenge/ur-PK.xml | 2 + translation/dest/challenge/uz-UZ.xml | 7 ++ translation/dest/challenge/vi-VN.xml | 2 + translation/dest/challenge/wo-SN.xml | 2 + translation/dest/challenge/xh-ZA.xml | 2 + translation/dest/challenge/yo-NG.xml | 2 + translation/dest/challenge/zh-CN.xml | 2 + translation/dest/challenge/zh-TW.xml | 16 ++++ translation/dest/challenge/zu-ZA.xml | 2 + translation/dest/contact/az-AZ.xml | 1 + translation/dest/contact/bs-BA.xml | 1 + translation/dest/contact/de-DE.xml | 2 +- translation/dest/contact/en-US.xml | 1 + translation/dest/contact/es-ES.xml | 2 +- translation/dest/contact/eu-ES.xml | 1 + translation/dest/contact/hi-IN.xml | 1 + translation/dest/contact/hu-HU.xml | 1 + translation/dest/contact/ja-JP.xml | 1 + translation/dest/contact/lv-LV.xml | 1 + translation/dest/contact/nb-NO.xml | 1 + translation/dest/contact/nl-NL.xml | 1 + translation/dest/contact/nn-NO.xml | 4 +- translation/dest/contact/pt-BR.xml | 1 + translation/dest/contact/pt-PT.xml | 1 + translation/dest/contact/ro-RO.xml | 1 + translation/dest/contact/sl-SI.xml | 1 + translation/dest/contact/sv-SE.xml | 3 +- translation/dest/contact/tr-TR.xml | 1 + translation/dest/contact/uk-UA.xml | 1 + translation/dest/faq/es-ES.xml | 10 +-- translation/dest/faq/nn-NO.xml | 6 +- translation/dest/learn/el-GR.xml | 2 +- translation/dest/patron/es-ES.xml | 2 +- translation/dest/preferences/az-AZ.xml | 4 +- translation/dest/preferences/pt-BR.xml | 2 +- translation/dest/preferences/sv-SE.xml | 4 +- translation/dest/preferences/tr-TR.xml | 2 +- translation/dest/preferences/vi-VN.xml | 6 +- translation/dest/preferences/zh-TW.xml | 6 +- translation/dest/puzzle/es-ES.xml | 12 +-- translation/dest/puzzle/eu-ES.xml | 2 +- translation/dest/puzzle/fo-FO.xml | 3 + translation/dest/puzzle/fr-FR.xml | 2 +- translation/dest/puzzle/ja-JP.xml | 2 +- translation/dest/puzzle/lt-LT.xml | 2 +- translation/dest/puzzle/nn-NO.xml | 2 +- translation/dest/puzzle/pl-PL.xml | 2 +- translation/dest/puzzle/ro-RO.xml | 2 +- translation/dest/puzzleTheme/az-AZ.xml | 3 + translation/dest/puzzleTheme/da-DK.xml | 16 ++-- translation/dest/puzzleTheme/de-DE.xml | 2 +- translation/dest/puzzleTheme/en-US.xml | 16 ++-- translation/dest/puzzleTheme/eu-ES.xml | 16 ++-- translation/dest/puzzleTheme/fi-FI.xml | 12 +++ translation/dest/puzzleTheme/fo-FO.xml | 16 ++++ translation/dest/puzzleTheme/hi-IN.xml | 16 ++-- translation/dest/puzzleTheme/it-IT.xml | 20 ++--- translation/dest/puzzleTheme/ja-JP.xml | 16 ++-- translation/dest/puzzleTheme/nb-NO.xml | 16 ++-- translation/dest/puzzleTheme/nl-NL.xml | 5 +- translation/dest/puzzleTheme/nn-NO.xml | 74 +++++++++--------- translation/dest/puzzleTheme/pl-PL.xml | 16 ++-- translation/dest/puzzleTheme/pt-BR.xml | 16 ++-- translation/dest/puzzleTheme/ru-RU.xml | 8 +- translation/dest/puzzleTheme/sr-SP.xml | 2 +- translation/dest/puzzleTheme/sv-SE.xml | 16 ++-- translation/dest/puzzleTheme/vi-VN.xml | 8 ++ translation/dest/search/es-ES.xml | 2 +- translation/dest/search/vi-VN.xml | 2 +- translation/dest/settings/hy-AM.xml | 2 +- translation/dest/site/af-ZA.xml | 13 +--- translation/dest/site/an-ES.xml | 10 +-- translation/dest/site/ar-SA.xml | 8 -- translation/dest/site/az-AZ.xml | 13 +--- translation/dest/site/be-BY.xml | 8 -- translation/dest/site/bg-BG.xml | 8 -- translation/dest/site/bn-BD.xml | 8 -- translation/dest/site/br-FR.xml | 8 -- translation/dest/site/bs-BA.xml | 12 +-- translation/dest/site/ca-ES.xml | 8 -- translation/dest/site/cs-CZ.xml | 8 -- translation/dest/site/cv-CU.xml | 2 - translation/dest/site/cy-GB.xml | 10 +-- translation/dest/site/da-DK.xml | 13 +--- translation/dest/site/de-DE.xml | 15 +--- translation/dest/site/el-GR.xml | 21 ++--- translation/dest/site/en-US.xml | 13 +--- translation/dest/site/eo-UY.xml | 13 +--- translation/dest/site/es-ES.xml | 13 +--- translation/dest/site/et-EE.xml | 15 +--- translation/dest/site/eu-ES.xml | 13 +--- translation/dest/site/fa-IR.xml | 10 +-- translation/dest/site/fi-FI.xml | 13 +--- translation/dest/site/fo-FO.xml | 13 +--- translation/dest/site/fr-FR.xml | 13 +--- translation/dest/site/fy-NL.xml | 2 - translation/dest/site/ga-IE.xml | 8 +- translation/dest/site/gd-GB.xml | 1 - translation/dest/site/gl-ES.xml | 8 -- translation/dest/site/gu-IN.xml | 2 - translation/dest/site/he-IL.xml | 8 -- translation/dest/site/hi-IN.xml | 13 +--- translation/dest/site/hr-HR.xml | 17 ++-- translation/dest/site/hu-HU.xml | 13 +--- translation/dest/site/hy-AM.xml | 16 ++-- translation/dest/site/ia-IA.xml | 10 +-- translation/dest/site/id-ID.xml | 11 +-- translation/dest/site/is-IS.xml | 9 --- translation/dest/site/it-IT.xml | 13 +--- translation/dest/site/ja-JP.xml | 15 +--- translation/dest/site/jbo-EN.xml | 5 -- translation/dest/site/ka-GE.xml | 3 - translation/dest/site/kab-DZ.xml | 1 - translation/dest/site/kk-KZ.xml | 13 +--- translation/dest/site/kmr-TR.xml | 8 -- translation/dest/site/ko-KR.xml | 10 +-- translation/dest/site/la-LA.xml | 4 - translation/dest/site/lt-LT.xml | 13 +--- translation/dest/site/lv-LV.xml | 13 +--- translation/dest/site/mg-MG.xml | 1 - translation/dest/site/mk-MK.xml | 8 -- translation/dest/site/ml-IN.xml | 8 -- translation/dest/site/mn-MN.xml | 6 -- translation/dest/site/mr-IN.xml | 8 -- translation/dest/site/ms-MY.xml | 7 -- translation/dest/site/nb-NO.xml | 13 +--- translation/dest/site/ne-NP.xml | 8 -- translation/dest/site/nl-NL.xml | 13 +--- translation/dest/site/nn-NO.xml | 13 +--- translation/dest/site/pl-PL.xml | 13 +--- translation/dest/site/pt-BR.xml | 13 +--- translation/dest/site/pt-PT.xml | 13 +--- translation/dest/site/ro-RO.xml | 11 --- translation/dest/site/ru-RU.xml | 13 +--- translation/dest/site/si-LK.xml | 3 - translation/dest/site/sk-SK.xml | 13 +--- translation/dest/site/sl-SI.xml | 13 +--- translation/dest/site/sq-AL.xml | 8 -- translation/dest/site/sr-SP.xml | 13 +--- translation/dest/site/sv-SE.xml | 13 +--- translation/dest/site/ta-IN.xml | 1 - translation/dest/site/th-TH.xml | 8 -- translation/dest/site/tk-TM.xml | 8 -- translation/dest/site/tl-PH.xml | 8 -- translation/dest/site/tp-TP.xml | 103 ++++++++++++++++++++++++- translation/dest/site/tr-TR.xml | 13 +--- translation/dest/site/tt-RU.xml | 1 - translation/dest/site/uk-UA.xml | 13 +--- translation/dest/site/ur-PK.xml | 7 -- translation/dest/site/uz-UZ.xml | 8 -- translation/dest/site/vi-VN.xml | 13 +--- translation/dest/site/zh-CN.xml | 8 -- translation/dest/site/zh-TW.xml | 13 +--- translation/dest/streamer/es-ES.xml | 2 +- translation/dest/study/zh-TW.xml | 48 ++++++++++++ 286 files changed, 1232 insertions(+), 917 deletions(-) create mode 100644 translation/dest/challenge/aa-ER.xml create mode 100644 translation/dest/challenge/af-ZA.xml create mode 100644 translation/dest/challenge/ak-GH.xml create mode 100644 translation/dest/challenge/am-ET.xml create mode 100644 translation/dest/challenge/an-ES.xml create mode 100644 translation/dest/challenge/ar-SA.xml create mode 100644 translation/dest/challenge/as-IN.xml create mode 100644 translation/dest/challenge/ast-ES.xml create mode 100644 translation/dest/challenge/az-AZ.xml create mode 100644 translation/dest/challenge/ba-RU.xml create mode 100644 translation/dest/challenge/be-BY.xml create mode 100644 translation/dest/challenge/bg-BG.xml create mode 100644 translation/dest/challenge/bn-BD.xml create mode 100644 translation/dest/challenge/br-FR.xml create mode 100644 translation/dest/challenge/bs-BA.xml create mode 100644 translation/dest/challenge/ca-ES.xml create mode 100644 translation/dest/challenge/ce-CE.xml create mode 100644 translation/dest/challenge/ceb-PH.xml create mode 100644 translation/dest/challenge/ckb-IR.xml create mode 100644 translation/dest/challenge/co-FR.xml create mode 100644 translation/dest/challenge/cs-CZ.xml create mode 100644 translation/dest/challenge/cv-CU.xml create mode 100644 translation/dest/challenge/cy-GB.xml create mode 100644 translation/dest/challenge/da-DK.xml create mode 100644 translation/dest/challenge/de-DE.xml create mode 100644 translation/dest/challenge/el-GR.xml create mode 100644 translation/dest/challenge/en-US.xml create mode 100644 translation/dest/challenge/eo-UY.xml create mode 100644 translation/dest/challenge/es-ES.xml create mode 100644 translation/dest/challenge/et-EE.xml create mode 100644 translation/dest/challenge/eu-ES.xml create mode 100644 translation/dest/challenge/fa-IR.xml create mode 100644 translation/dest/challenge/fi-FI.xml create mode 100644 translation/dest/challenge/fo-FO.xml create mode 100644 translation/dest/challenge/fr-FR.xml create mode 100644 translation/dest/challenge/frp-IT.xml create mode 100644 translation/dest/challenge/fy-NL.xml create mode 100644 translation/dest/challenge/ga-IE.xml create mode 100644 translation/dest/challenge/gd-GB.xml create mode 100644 translation/dest/challenge/gl-ES.xml create mode 100644 translation/dest/challenge/gn-PY.xml create mode 100644 translation/dest/challenge/gu-IN.xml create mode 100644 translation/dest/challenge/ha-HG.xml create mode 100644 translation/dest/challenge/he-IL.xml create mode 100644 translation/dest/challenge/hi-IN.xml create mode 100644 translation/dest/challenge/hr-HR.xml create mode 100644 translation/dest/challenge/hu-HU.xml create mode 100644 translation/dest/challenge/hy-AM.xml create mode 100644 translation/dest/challenge/ia-IA.xml create mode 100644 translation/dest/challenge/id-ID.xml create mode 100644 translation/dest/challenge/ig-NG.xml create mode 100644 translation/dest/challenge/io-EN.xml create mode 100644 translation/dest/challenge/is-IS.xml create mode 100644 translation/dest/challenge/it-IT.xml create mode 100644 translation/dest/challenge/ja-JP.xml create mode 100644 translation/dest/challenge/jbo-EN.xml create mode 100644 translation/dest/challenge/jv-ID.xml create mode 100644 translation/dest/challenge/ka-GE.xml create mode 100644 translation/dest/challenge/kab-DZ.xml create mode 100644 translation/dest/challenge/kk-KZ.xml create mode 100644 translation/dest/challenge/km-KH.xml create mode 100644 translation/dest/challenge/kmr-TR.xml create mode 100644 translation/dest/challenge/kn-IN.xml create mode 100644 translation/dest/challenge/ko-KR.xml create mode 100644 translation/dest/challenge/ky-KG.xml create mode 100644 translation/dest/challenge/la-LA.xml create mode 100644 translation/dest/challenge/lb-LU.xml create mode 100644 translation/dest/challenge/lg-UG.xml create mode 100644 translation/dest/challenge/lo-LA.xml create mode 100644 translation/dest/challenge/lt-LT.xml create mode 100644 translation/dest/challenge/lv-LV.xml create mode 100644 translation/dest/challenge/mai-IN.xml create mode 100644 translation/dest/challenge/mg-MG.xml create mode 100644 translation/dest/challenge/mi-NZ.xml create mode 100644 translation/dest/challenge/mk-MK.xml create mode 100644 translation/dest/challenge/ml-IN.xml create mode 100644 translation/dest/challenge/mn-MN.xml create mode 100644 translation/dest/challenge/mr-IN.xml create mode 100644 translation/dest/challenge/ms-MY.xml create mode 100644 translation/dest/challenge/mt-MT.xml create mode 100644 translation/dest/challenge/my-MM.xml create mode 100644 translation/dest/challenge/nb-NO.xml create mode 100644 translation/dest/challenge/ne-NP.xml create mode 100644 translation/dest/challenge/nl-NL.xml create mode 100644 translation/dest/challenge/nn-NO.xml create mode 100644 translation/dest/challenge/ns-ZA.xml create mode 100644 translation/dest/challenge/ny-MW.xml create mode 100644 translation/dest/challenge/om-ET.xml create mode 100644 translation/dest/challenge/or-IN.xml create mode 100644 translation/dest/challenge/os-SE.xml create mode 100644 translation/dest/challenge/pa-IN.xml create mode 100644 translation/dest/challenge/pa-PK.xml create mode 100644 translation/dest/challenge/pi-IN.xml create mode 100644 translation/dest/challenge/pl-PL.xml create mode 100644 translation/dest/challenge/ps-AF.xml create mode 100644 translation/dest/challenge/pt-BR.xml create mode 100644 translation/dest/challenge/pt-PT.xml create mode 100644 translation/dest/challenge/qu-PE.xml create mode 100644 translation/dest/challenge/rn-BI.xml create mode 100644 translation/dest/challenge/ro-RO.xml create mode 100644 translation/dest/challenge/ru-RU.xml create mode 100644 translation/dest/challenge/rw-RW.xml create mode 100644 translation/dest/challenge/sa-IN.xml create mode 100644 translation/dest/challenge/sc-IT.xml create mode 100644 translation/dest/challenge/sd-PK.xml create mode 100644 translation/dest/challenge/se-NO.xml create mode 100644 translation/dest/challenge/si-LK.xml create mode 100644 translation/dest/challenge/sk-SK.xml create mode 100644 translation/dest/challenge/sl-SI.xml create mode 100644 translation/dest/challenge/sn-ZW.xml create mode 100644 translation/dest/challenge/so-SO.xml create mode 100644 translation/dest/challenge/sq-AL.xml create mode 100644 translation/dest/challenge/sr-SP.xml create mode 100644 translation/dest/challenge/st-ZA.xml create mode 100644 translation/dest/challenge/sv-SE.xml create mode 100644 translation/dest/challenge/sw-KE.xml create mode 100644 translation/dest/challenge/ta-IN.xml create mode 100644 translation/dest/challenge/te-IN.xml create mode 100644 translation/dest/challenge/tg-TJ.xml create mode 100644 translation/dest/challenge/th-TH.xml create mode 100644 translation/dest/challenge/ti-ER.xml create mode 100644 translation/dest/challenge/tk-TM.xml create mode 100644 translation/dest/challenge/tl-PH.xml create mode 100644 translation/dest/challenge/tlh-AA.xml create mode 100644 translation/dest/challenge/tn-ZA.xml create mode 100644 translation/dest/challenge/tp-TP.xml create mode 100644 translation/dest/challenge/tr-TR.xml create mode 100644 translation/dest/challenge/tt-RU.xml create mode 100644 translation/dest/challenge/ug-CN.xml create mode 100644 translation/dest/challenge/uk-UA.xml create mode 100644 translation/dest/challenge/ur-PK.xml create mode 100644 translation/dest/challenge/uz-UZ.xml create mode 100644 translation/dest/challenge/vi-VN.xml create mode 100644 translation/dest/challenge/wo-SN.xml create mode 100644 translation/dest/challenge/xh-ZA.xml create mode 100644 translation/dest/challenge/yo-NG.xml create mode 100644 translation/dest/challenge/zh-CN.xml create mode 100644 translation/dest/challenge/zh-TW.xml create mode 100644 translation/dest/challenge/zu-ZA.xml diff --git a/translation/dest/activity/el-GR.xml b/translation/dest/activity/el-GR.xml index e08113dccc..2d924576c9 100644 --- a/translation/dest/activity/el-GR.xml +++ b/translation/dest/activity/el-GR.xml @@ -62,7 +62,7 @@ Κατατάχθηκε #%1$s (κορυφαίος %2$s%%) με %3$s παιχνίδι σε %4$s Κατατάχθηκε #%1$s (κορυφαίος %2$s%%) με %3$s παιχνίδια σε %4$s - Εγγεγραμμένοι στο lichess + Έκανε εγγραφή στο lichess.org Έγινε μέλος %s ομάδας Έγινε μέλος %s ομαδών diff --git a/translation/dest/challenge/aa-ER.xml b/translation/dest/challenge/aa-ER.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/aa-ER.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/af-ZA.xml b/translation/dest/challenge/af-ZA.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/af-ZA.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/ak-GH.xml b/translation/dest/challenge/ak-GH.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/ak-GH.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/am-ET.xml b/translation/dest/challenge/am-ET.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/am-ET.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/an-ES.xml b/translation/dest/challenge/an-ES.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/an-ES.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/ar-SA.xml b/translation/dest/challenge/ar-SA.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/ar-SA.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/as-IN.xml b/translation/dest/challenge/as-IN.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/as-IN.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/ast-ES.xml b/translation/dest/challenge/ast-ES.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/ast-ES.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/az-AZ.xml b/translation/dest/challenge/az-AZ.xml new file mode 100644 index 0000000000..d1c1ebf779 --- /dev/null +++ b/translation/dest/challenge/az-AZ.xml @@ -0,0 +1,23 @@ + + + Çağırışlar + Oyuna çağırış + Çağırış rədd edildi + Çağırış qəbul edildi! + Çağırışdan imtina edildi. + Çağırış göndərmək üçün lütfən qeydiyyatdan keçin. + %s istifadəçisinə çağırış edə bilməzsiz. + %s çağırışları qəbul etmir. + Sizin %1$s reytinqiniz %2$s-in reytinqindən çox uzaqdır. + Müvəqqəti %s reytinqi səbəbilə çağırış edə bilməzsiz. + %s yalnız dostlarından çağırış qəbul edir. + Hal-hazırda çağırışları qəbul etmirəm. + Bu mənim üçün uyğun vaxt deyil, lütfən sonra yenidən soruşun. + Bu vaxt nəzarəti mənim üçün çox sürətlidir, lütfən daha yavaş bir oyunla yenidən çağırış edin. + Bu vaxt nəzarəti mənim üçün çox yavaşdır lütfən daha sürətli bir oyunla yenidən çağırış edin. + Bu vaxt nəzarətilə olan çağırışları qəbul etmirəm. + Zəhmət olmasa mənə reytinqli bir çağırış göndərin. + Zəhmət olmasa mənə reytinqsiz bir çağırış göndərin. + Hal-hazırda qeyri-ənənəvi şahmat variantları çağırışlarını qəbul etmirəm. + Hazırda bu variantı oynamaq istəmirəm. + diff --git a/translation/dest/challenge/ba-RU.xml b/translation/dest/challenge/ba-RU.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/ba-RU.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/be-BY.xml b/translation/dest/challenge/be-BY.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/be-BY.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/bg-BG.xml b/translation/dest/challenge/bg-BG.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/bg-BG.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/bn-BD.xml b/translation/dest/challenge/bn-BD.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/bn-BD.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/br-FR.xml b/translation/dest/challenge/br-FR.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/br-FR.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/bs-BA.xml b/translation/dest/challenge/bs-BA.xml new file mode 100644 index 0000000000..8246a02570 --- /dev/null +++ b/translation/dest/challenge/bs-BA.xml @@ -0,0 +1,16 @@ + + + Izazovi + Izazov na partiju + Izazov odbijen + Izazov prihvaćen! + Izazov otkazan. + Molimo, registrirajte se da biste mogli slati izazove. + Ne možete izazvati %s. + %s ne prihvata izazove. + Vaš %1$s rejting predaleko je od %2$s. + Nemoguće izazvati zbog privremenog %s rejtinga. + %s prihvata samo izazove od prijatelja. + Trenutno ne prihvatam izazove. + Ne odgovara mi ovaj trenutak; molim, izazovite me ponovo kasnije. + diff --git a/translation/dest/challenge/ca-ES.xml b/translation/dest/challenge/ca-ES.xml new file mode 100644 index 0000000000..64b3b149c8 --- /dev/null +++ b/translation/dest/challenge/ca-ES.xml @@ -0,0 +1,6 @@ + + + Aquest control de temps és massa ràpid per a mi. Si us plau, desafia\'m un altra vegada amb un ritme més lent. + Aquest control de temps és massa lent per a mi. Si us plau, desafia\'m una altra vegada amb un ritme més ràpid. + No accepto desafiaments amb aquest control de temps. + diff --git a/translation/dest/challenge/ce-CE.xml b/translation/dest/challenge/ce-CE.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/ce-CE.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/ceb-PH.xml b/translation/dest/challenge/ceb-PH.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/ceb-PH.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/ckb-IR.xml b/translation/dest/challenge/ckb-IR.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/ckb-IR.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/co-FR.xml b/translation/dest/challenge/co-FR.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/co-FR.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/cs-CZ.xml b/translation/dest/challenge/cs-CZ.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/cs-CZ.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/cv-CU.xml b/translation/dest/challenge/cv-CU.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/cv-CU.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/cy-GB.xml b/translation/dest/challenge/cy-GB.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/cy-GB.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/da-DK.xml b/translation/dest/challenge/da-DK.xml new file mode 100644 index 0000000000..6badecc4e2 --- /dev/null +++ b/translation/dest/challenge/da-DK.xml @@ -0,0 +1,23 @@ + + + Udfordringer + Udfordr til et spil + Udfordring afvist + Udfordring accepteret! + Udfordring annulleret. + Opret en konto for at sende udfordringer. + Du kan ikke udfordre %s. + %s accepterer ikke udfordringer. + Din %1$s rating er for langt fra %2$s. + Kan ikke udfordre på grund af provisorisk %s rating. + %s accepterer kun udfordringer fra venner. + Jeg accepterer ikke udfordringer i øjeblikket. + Det er ikke et godt tidspunkt for mig, spørg venligst igen senere. + Denne tidskontrol er for hurtig for mig. Udfordr mig gerne igen med et langsommere spil. + Denne tidskontrol er for langsom for mig. Udfordr mig gerne igen med et hurtigere spil. + Jeg accepterer ikke udfordringer med denne tidskontrol. + Send mig gerne en ratet udfordring i stedet. + Send mig gerne en ikke-ratet udfordring i stedet. + Jeg accepterer ikke variantudfordringer lige nu. + Jeg er ikke villig til at spille denne variant lige nu. + diff --git a/translation/dest/challenge/de-DE.xml b/translation/dest/challenge/de-DE.xml new file mode 100644 index 0000000000..c13bdad52c --- /dev/null +++ b/translation/dest/challenge/de-DE.xml @@ -0,0 +1,23 @@ + + + Herausforderungen + Zu einer Partie herausfordern + Herausforderung abgelehnt + Herausforderung angenommen! + Herausforderung abgebrochen. + Bitte registriere dich, um Herausforderungen zu senden. + Du kannst %s nicht herausfordern. + %s nimmt keine Herausforderungen an. + Deine %1$s Wertung ist zu weit von %2$s entfernt. + Herausforderung wegen provisorischer %s Wertung nicht möglich. + %s nimmt Herausforderungen nur von Freunden an. + Ich nehme derzeit keine Herausforderungen an. + Ich nehme momentan keine Herausforderungen an, bitte frage später noch einmal. + Diese Bedenkzeit ist zu gering für mich, ich bitte daher um erneutes Herausfordern mit mehr Bedenkzeit. + Diese Bedenkzeit ist zu viel für mich, ich bitte daher um erneutes Herausfordern mit weniger Bedenkzeit. + Ich nehme keine Herausforderungen mit Bedenkzeit an. + Bitte fordere mich stattdessen zu einer gewerteten Partie heraus. + Bitte fordere mich stattdessen zu einer ungewerteten Partie heraus. + Ich nehme derzeit keine Herausforderungen für andere Spielvarianten an. + Ich bin nicht bereit, diese Variante zu spielen. + diff --git a/translation/dest/challenge/el-GR.xml b/translation/dest/challenge/el-GR.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/el-GR.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/en-US.xml b/translation/dest/challenge/en-US.xml new file mode 100644 index 0000000000..3d8775fee0 --- /dev/null +++ b/translation/dest/challenge/en-US.xml @@ -0,0 +1,23 @@ + + + Challenges + Challenge to a game + Challenge declined + Challenge accepted! + Challenge canceled. + Please register to send challenges. + You cannot challenge %s. + %s does not accept challenges. + Your %1$s rating is too far from %2$s. + Cannot challenge due to provisional %s rating. + %s only accepts challenges from friends. + I\'m not accepting challenges at the moment. + This is not the right time for me, please ask again later. + This time control is too fast for me, please challenge again with a slower game. + This time control is too fast for me, please challenge again with a slower game. + I\'m not accepting challenges with this time control. + Please send me a rated challenge instead. + Please send me a casual challenge instead. + I\'m not accepting variant challenges right now. + I\'m not willing to play this variant right now. + diff --git a/translation/dest/challenge/eo-UY.xml b/translation/dest/challenge/eo-UY.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/eo-UY.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/es-ES.xml b/translation/dest/challenge/es-ES.xml new file mode 100644 index 0000000000..5371017dab --- /dev/null +++ b/translation/dest/challenge/es-ES.xml @@ -0,0 +1,23 @@ + + + Desafíos + Desafiar a una partida + Desafío rechazado + ¡Desafío aceptado! + Desafío cancelado. + Por favor regístrate para desafiar a otros jugadores. + No puedes desafiar a %s. + %s no acepta desafíos. + Tu puntuación de %1$s está demasiado lejos de la de %2$s. + No puedes desafiar a otros jugadores debido a que tu puntuación de %s es provisional. + %s sólo acepta desafíos de sus amigos. + No estoy aceptando desafíos por el momento. + No estoy aceptando desafíos ahora mismo, por favor pregunta de nuevo más tarde. + Este control de tiempo es demasiado rápido para mí, por favor desafíame de nuevo con una partida más lenta. + Este control de tiempo es demasiado lento para mí, por favor desafíame de nuevo con una partida más rápida. + No estoy aceptando desafíos con este control de tiempo. + En su lugar, desafíame a una partida por puntos. + En su lugar, desafíame a una partida casual. + No estoy aceptando desafíos de variantes en este momento. + No estoy dispuesto a jugar esta variante en este momento. + diff --git a/translation/dest/challenge/et-EE.xml b/translation/dest/challenge/et-EE.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/et-EE.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/eu-ES.xml b/translation/dest/challenge/eu-ES.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/eu-ES.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/fa-IR.xml b/translation/dest/challenge/fa-IR.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/fa-IR.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/fi-FI.xml b/translation/dest/challenge/fi-FI.xml new file mode 100644 index 0000000000..fcb98394b1 --- /dev/null +++ b/translation/dest/challenge/fi-FI.xml @@ -0,0 +1,16 @@ + + + Haasteet + Haasta peliin + Haasteesta kieltäydyttiin + Haaste hyväksytty! + Haaste peruutettu. + Rekisteröidy niin voit lähettää haasteita. + Et voi haastaa pelaajaa %s. + %s ei ota haasteita vastaan. + %1$s-vahvuuslukusi on liian kaukana pelaajan %2$s vahvuusluvusta. + Et voi haastaa, koska %s-vahvuuslukusi on tilapäinen. + %s ottaa vastaan haasteita vain kavereiltaan. + En ota tällä hetkellä haasteita vastaan. + Ajankohta ei sovi minulle juuri nyt, pyydä myöhemmin uudelleen. + diff --git a/translation/dest/challenge/fo-FO.xml b/translation/dest/challenge/fo-FO.xml new file mode 100644 index 0000000000..a6e2fc800d --- /dev/null +++ b/translation/dest/challenge/fo-FO.xml @@ -0,0 +1,16 @@ + + + Avbjóðingar + Bjóða av at telva + Avbjóðing avvíst + Avbjóðing góðtikin! + Avbjóðing avlýst. + Skráset teg vinaliga at senda avbjóðingar. + Tú kanst ikki bjóða %s av. + %s tekur ikki ímóti avbjóðingum. + Títt %1$s styrkital er ov langt frá %2$s. + Fær ikki bjóðað av vegna fyribils %s styrkital. + %s tekur bert við avbjóðingum frá vinum. + Eg taki ikki móti avbjóðingum í løtuni. + Eg taki ikki ímóti avbjóðingum í løtuni. Spyr vinaliga aftur seinni. + diff --git a/translation/dest/challenge/fr-FR.xml b/translation/dest/challenge/fr-FR.xml new file mode 100644 index 0000000000..31cccbfef6 --- /dev/null +++ b/translation/dest/challenge/fr-FR.xml @@ -0,0 +1,23 @@ + + + Défis + Défier ce joueur + Défi refusé + Défi accepté! + Défi annulé + Veuillez vous inscrire pour envoyer des défis. + Vous ne pouvez pas défier %s. + %s n’accepte pas les défis. + Votre classement de %1$s est trop différent de celui de %2$s. + Défi refusé à cause de la cote %s provisoire + %s n’accepte que les défis de ses ami(e)s. + Je n\'accepte pas de défis pour le moment. + Ce n\'est pas un bon moment pour moi, réessayez plus tard s\'il vous plaît. + Ce contrôle de temps est trop rapide pour moi, réessayez avec un contrôle de temps plus lent s\'il vous plaît. + Ce contrôle de temps est trop lent pour moi, réessayez avec un contrôle de temps plus rapide s\'il vous plaît. + Je n\'accepte pas de défis avec ce contrôle de temps. + Envoyez-moi plutôt un défi classé. + Envoyez-moi plutôt un défi amical. + Je n\'accepte pas de défis en variantes pour le moment. + Je ne veux pas jouer cette variante pour le moment. + diff --git a/translation/dest/challenge/frp-IT.xml b/translation/dest/challenge/frp-IT.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/frp-IT.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/fy-NL.xml b/translation/dest/challenge/fy-NL.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/fy-NL.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/ga-IE.xml b/translation/dest/challenge/ga-IE.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/ga-IE.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/gd-GB.xml b/translation/dest/challenge/gd-GB.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/gd-GB.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/gl-ES.xml b/translation/dest/challenge/gl-ES.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/gl-ES.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/gn-PY.xml b/translation/dest/challenge/gn-PY.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/gn-PY.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/gu-IN.xml b/translation/dest/challenge/gu-IN.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/gu-IN.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/ha-HG.xml b/translation/dest/challenge/ha-HG.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/ha-HG.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/he-IL.xml b/translation/dest/challenge/he-IL.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/he-IL.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/hi-IN.xml b/translation/dest/challenge/hi-IN.xml new file mode 100644 index 0000000000..dc70f27adf --- /dev/null +++ b/translation/dest/challenge/hi-IN.xml @@ -0,0 +1,16 @@ + + + चुनौतियों + एक खेल के लिए चुनौती + चुनौती इंकार कर दिया + चुनौती स्वीकार की गई! + चुनौती रद्द। + कृपया चुनौतियों को भेजने के लिए पंजीकरण करें। + आप %s को चुनौती नहीं दे सकते। + %s चुनौतियों को स्वीकार नहीं करता है। + आपकी %1$s रेटिंग %2$s से बहुत दूर है। + अनंतिम %s रेटिंग के कारण चुनौती नहीं दी जा सकती। + %s केवल दोस्तों की चुनौतियों को स्वीकार करता है। + मैं इस समय चुनौतियों को स्वीकार नहीं कर रहा हूं। + मैं अभी चुनौतियों को स्वीकार नहीं कर रहा हूं, कृपया बाद में फिर से पूछें। + diff --git a/translation/dest/challenge/hr-HR.xml b/translation/dest/challenge/hr-HR.xml new file mode 100644 index 0000000000..6f692d9147 --- /dev/null +++ b/translation/dest/challenge/hr-HR.xml @@ -0,0 +1,23 @@ + + + Izazovi + Poziv na partiju + Izazov odbijen + Izazov prihvaćen! + Izazov otkazan. + Za slanje izazova morate se registrirati. + Ne možete izazvati %s. + %s ne prihvaća izazove. + Prevelika je razlika između tvog i %2$s %1$s rejtinga. + Nemoguće izazvati zbog prevelike razlike u %s rejtingu. + %s prihvaća samo izazove od prijatelja. + Trenutačno ne prihvaćam izazove. + Trenutačno nije najbolje vrijeme, molimo Vas pokušajte kasnije. + Ovaj vremenski format je prebrz za mene, molim Vas da me izazovete na sporiji format. + Ovaj vremenski format je prespor za mene, molim Vas da me izazovete na brži format. + Ne prihvaćam izazove u ovom vremenskom formatu. + Molim Vas da me radije izazovete na rangiranu partiju. + Molim Vas da me radije izazovete na ležernu partiju. + Ne prihvaćam izazove u ovoj varijanti. + Trenutačno ne želim igrati ovu varijantu. + diff --git a/translation/dest/challenge/hu-HU.xml b/translation/dest/challenge/hu-HU.xml new file mode 100644 index 0000000000..546dcfaab6 --- /dev/null +++ b/translation/dest/challenge/hu-HU.xml @@ -0,0 +1,21 @@ + + + Kihívások + Kihívás játszmára + Kihívás elutasítva + Kihívás elfogadva! + Kihívás visszavonva. + A kihíváshoz regisztráció szükséges. + %s nem kihívható. + %s nem fogad kihívásokat. + %s csak barátoktól fogad kihívást. + Jelenleg nem fogadok kihívásokat. + Számomra ez nem a legmegfelelőbb időpont, talán majd máskor. + Ez az időkorlát nekem túl gyors, kérlek küldj egy új kihívást lassabb játszmára. + Ez az időkorlát nekem túl lassú, kérlek küldj egy új kihívást gyorsabb játszmára. + Nem fogadok el kihívásokat ezzel az időkorláttal. + Kérlek inkább értékelt játszmára küldj kihívást. + Kérlek inkább nem értékelt játszmára küldj kihívást. + Jelenleg nem fogadok kihívásokat variáns játszmákra. + Most nincs kedvem ezt a variánst játszani. + diff --git a/translation/dest/challenge/hy-AM.xml b/translation/dest/challenge/hy-AM.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/hy-AM.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/ia-IA.xml b/translation/dest/challenge/ia-IA.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/ia-IA.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/id-ID.xml b/translation/dest/challenge/id-ID.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/id-ID.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/ig-NG.xml b/translation/dest/challenge/ig-NG.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/ig-NG.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/io-EN.xml b/translation/dest/challenge/io-EN.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/io-EN.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/is-IS.xml b/translation/dest/challenge/is-IS.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/is-IS.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/it-IT.xml b/translation/dest/challenge/it-IT.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/it-IT.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/ja-JP.xml b/translation/dest/challenge/ja-JP.xml new file mode 100644 index 0000000000..7bb3a856bb --- /dev/null +++ b/translation/dest/challenge/ja-JP.xml @@ -0,0 +1,23 @@ + + + 挑戦 + 対局を申し込む + 挑戦が拒否されました。 + 挑戦が承認されました! + 挑戦がキャンセルされました。 + 挑戦を送るには登録が必要です。 + %s には挑戦できません。 + %s は挑戦を受け付けていません。 + あなたの %1$s レーティングは %2$s と離れすぎています。 + %s レーティングが暫定のため挑戦できません。 + %s は友達からの挑戦しか受け付けません。 + 現在、挑戦を受け付けていません。 + 今は都合が悪いので、後でもう一度尋ねてください。 + この持時間は私には短すぎます。もっと長い持時間で挑戦してください。 + この持時間は私には長すぎます。もっと短い持時間で挑戦してください。 + 現在、この持時間での挑戦は受け付けていません。 + 代わりにレート戦での挑戦を送ってください。 + 代わりに非レート戦での挑戦を送ってください。 + 現在、バリアントでの挑戦は受け付けていません。 + 今はこのバリアントで対戦するつもりはありません。 + diff --git a/translation/dest/challenge/jbo-EN.xml b/translation/dest/challenge/jbo-EN.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/jbo-EN.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/jv-ID.xml b/translation/dest/challenge/jv-ID.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/jv-ID.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/ka-GE.xml b/translation/dest/challenge/ka-GE.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/ka-GE.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/kab-DZ.xml b/translation/dest/challenge/kab-DZ.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/kab-DZ.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/kk-KZ.xml b/translation/dest/challenge/kk-KZ.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/kk-KZ.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/km-KH.xml b/translation/dest/challenge/km-KH.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/km-KH.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/kmr-TR.xml b/translation/dest/challenge/kmr-TR.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/kmr-TR.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/kn-IN.xml b/translation/dest/challenge/kn-IN.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/kn-IN.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/ko-KR.xml b/translation/dest/challenge/ko-KR.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/ko-KR.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/ky-KG.xml b/translation/dest/challenge/ky-KG.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/ky-KG.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/la-LA.xml b/translation/dest/challenge/la-LA.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/la-LA.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/lb-LU.xml b/translation/dest/challenge/lb-LU.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/lb-LU.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/lg-UG.xml b/translation/dest/challenge/lg-UG.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/lg-UG.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/lo-LA.xml b/translation/dest/challenge/lo-LA.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/lo-LA.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/lt-LT.xml b/translation/dest/challenge/lt-LT.xml new file mode 100644 index 0000000000..57acf713e2 --- /dev/null +++ b/translation/dest/challenge/lt-LT.xml @@ -0,0 +1,23 @@ + + + Iššūkiai + Iškelti iššūkį + Iššūkis atmestas + Iššūkis priimtas! + Iššūkis atšauktas. + Norėdami kurti iššūkius užsiregistruokite. + Negalite kelti iššūkio %s. + %s nepriima iššūkių. + Jūsų %1$s reitingas per toli nuo %2$s. + Negalima sukurti iššūkio dėl laikino %s reitingo. + %s priima iššūkius tik iš draugų. + Šiuo metu iššūkių nepriimu. + Šiuo metu nepriimu iššūkių, pabandykite dar kartą vėliau. + Ši laiko kontrolė man per greita, kitame iššūkyje nurodykite lėtesnį žaidimą. + Ši laiko kontrolė man per lėta, kitame iššūkyje nurodykite greitesnį žaidimą. + Nepriimu iššūkių su šia laiko kontrole. + Vietoje šio iššūkio atsiųskite vertinamą iššūkį. + Vietoje šio iššūkio atsiųskite nevertinamą iššūkį. + Šiuo metu nepriimu variantų iššūkių. + Šiuo metu nenoriu žaisti šio varianto. + diff --git a/translation/dest/challenge/lv-LV.xml b/translation/dest/challenge/lv-LV.xml new file mode 100644 index 0000000000..f7791e6c7c --- /dev/null +++ b/translation/dest/challenge/lv-LV.xml @@ -0,0 +1,23 @@ + + + Izaicinājumi + Izaicināt uz spēli + Izaicinājums noraidīts + Izaicinājums pieņemts! + Izaicinājums atcelts. + Lūdzu reģistrējieties, lai sūtītu izaicinājumus. + Nevarat izaicināt %s. + %s nepieņem izaicinājumus. + Jūsu %1$s reitings ir par tālu no %2$s. + Nevar izaicināt pagaidu %s reitinga dēļ. + %s pieņem izaicinājumus tikai no draugiem. + Pašlaik nepieņemu izaicinājumus. + Šis laiks man neder, lūdzu piedāvājiet vēlāk. + Šī laika kontrole man ir par ātru, lūdzu izaiciniet mani ar lēnāku spēli. + Šī laika kontrole man ir par lēnu, lūdzu izaiciniet mani ar ātrāku spēli. + Pašlaik nepieņemu izaicinājumus ar šo laika kontroli. + Labāk lūdzu atsūtiet vērtētu izaicinājumu. + Labāk lūdzu atsūtiet nevērtētu izaicinājumu. + Šobrīd nepieņemu variantu izaicinājumus. + Šobrīd nevēlos spēlēt šo variantu. + diff --git a/translation/dest/challenge/mai-IN.xml b/translation/dest/challenge/mai-IN.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/mai-IN.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/mg-MG.xml b/translation/dest/challenge/mg-MG.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/mg-MG.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/mi-NZ.xml b/translation/dest/challenge/mi-NZ.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/mi-NZ.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/mk-MK.xml b/translation/dest/challenge/mk-MK.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/mk-MK.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/ml-IN.xml b/translation/dest/challenge/ml-IN.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/ml-IN.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/mn-MN.xml b/translation/dest/challenge/mn-MN.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/mn-MN.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/mr-IN.xml b/translation/dest/challenge/mr-IN.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/mr-IN.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/ms-MY.xml b/translation/dest/challenge/ms-MY.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/ms-MY.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/mt-MT.xml b/translation/dest/challenge/mt-MT.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/mt-MT.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/my-MM.xml b/translation/dest/challenge/my-MM.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/my-MM.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/nb-NO.xml b/translation/dest/challenge/nb-NO.xml new file mode 100644 index 0000000000..373a979ffc --- /dev/null +++ b/translation/dest/challenge/nb-NO.xml @@ -0,0 +1,23 @@ + + + Utfordringer + Utfordre til et parti + Utfordring avslått + Utfordring godtatt! + Utfordring avbrutt. + Registrer deg for å utfordre andre. + Du kan ikke utfordre %s. + %s godtar ikke utfordringer. + Ratingen din i %1$s er for langt unna %2$s. + Kan ikke utfordre på grunn av provisorisk rating i %s. + %s godtar bare utfordringer fra venner. + Jeg godtar ikke utfordringer for øyeblikket. + Det passer ikke akkurat nå, spør senere. + Denne tidskontrollen er for rask for meg, send en ny utfordring til et tregere parti. + Denne tidskontrollen er for treg for meg, send en ny utfordring til et raskere parti. + Jeg godtar ikke utfordringer med denne tidskontrollen. + Send meg en utfordring til et ratet parti i stedet. + Send meg en utfordring til et uformelt parti i stedet. + Jeg godtar ikke utfordringer til varianter for øyeblikket. + Jeg ønsker ikke å spille denne varianten for øyeblikket. + diff --git a/translation/dest/challenge/ne-NP.xml b/translation/dest/challenge/ne-NP.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/ne-NP.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/nl-NL.xml b/translation/dest/challenge/nl-NL.xml new file mode 100644 index 0000000000..d1950f9fc0 --- /dev/null +++ b/translation/dest/challenge/nl-NL.xml @@ -0,0 +1,23 @@ + + + Uitdagingen + Uitdagen voor een partij + Uitdaging geweigerd + Uitdaging aangenomen! + Uitdaging geannuleerd. + Gelieve te registreren om uitdagingen te versturen. + Je kunt %s niet uitdagen. + %s neemt geen uitdagingen aan. + Je rating van %1$s wijkt te veel af van %2$s. + Uitdagen niet mogelijk vanwege voorlopige %s-rating. + %s neemt alleen uitdagingen aan van vrienden. + Momenteel neem ik geen uitdagingen aan. + Op dit moment neem ik geen uitdagingen aan, probeer het later nog eens. + Dit tempo is mij te snel, daag me a.u.b. uit voor een langzamere partij. + Dit tempo is mij te traag, daag me a.u.b. uit voor een snellere partij. + Ik neem geen uitdagingen aan met dit tempo. + Stuur me a.u.b. een uitdaging met rating. + Stuur me a.u.b. een uitdaging zonder rating. + Momenteel neem ik geen uitdagingen aan voor varianten. + Momenteel voel ik er niet voor om deze variant te spelen. + diff --git a/translation/dest/challenge/nn-NO.xml b/translation/dest/challenge/nn-NO.xml new file mode 100644 index 0000000000..7ad66fd00d --- /dev/null +++ b/translation/dest/challenge/nn-NO.xml @@ -0,0 +1,23 @@ + + + Utfordringar + Utfordra til eit parti + Utfordring avvist + Utfordring akseptert! + Utfordring avbroten. + Du må registrera deg om du vil oppretta utfordringar. + Du kan ikkje utfordra %s. + %s tek ikkje i mot utfordringar. + Ratinga di i %1$s er for langt unna %2$s. + Kan ikkje utfordre grunna mellombels %s rating. + %s tek berre mot utfordringar frå vener. + Eg tek for tida ikkje mot utfordringar. + Det passar ikkje nett no, men spør meg gjerne seinare. + Denne tidskontrollen er for snøgg for meg, men send gjerne ei ny utfordring til eit langsamare parti. + Denne tidskontrollen er for langsam for meg, men send gjerne ei ny utfordring til eit snøggare parti. + Jeg tek ikkje mot utfordringar med denne tidskontrollen. + Send meg heller ei utfordring til eit rata parti. + Send meg heller ei utfordring til eit uformelt parti. + Eg tek ikkje utfordringar til variantar nett no. + Eg ønskjer ikkje å spela denne varianten nett no. + diff --git a/translation/dest/challenge/ns-ZA.xml b/translation/dest/challenge/ns-ZA.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/ns-ZA.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/ny-MW.xml b/translation/dest/challenge/ny-MW.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/ny-MW.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/om-ET.xml b/translation/dest/challenge/om-ET.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/om-ET.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/or-IN.xml b/translation/dest/challenge/or-IN.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/or-IN.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/os-SE.xml b/translation/dest/challenge/os-SE.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/os-SE.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/pa-IN.xml b/translation/dest/challenge/pa-IN.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/pa-IN.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/pa-PK.xml b/translation/dest/challenge/pa-PK.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/pa-PK.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/pi-IN.xml b/translation/dest/challenge/pi-IN.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/pi-IN.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/pl-PL.xml b/translation/dest/challenge/pl-PL.xml new file mode 100644 index 0000000000..d4bec6de09 --- /dev/null +++ b/translation/dest/challenge/pl-PL.xml @@ -0,0 +1,23 @@ + + + Wyzwania + Zaproś do gry + Wyzwanie odrzucone + Wyzwanie zaakceptowane! + Wyzwanie anulowane. + Zarejestruj się, aby zapraszać do gry. + Nie możesz wyzwać %s. + %s nie przyjmuje wyzwań. + Twój ranking (%1$s) jest zbyt odległy od %2$s. + Nie możesz zapraszać ze względu na swój tymczasowy ranking (%s). + %s akceptuje tylko wyzwania od znajomych. + Obecnie nie akceptuję wyzwań. + Nie mam teraz czasu, spróbuj proszę później. + Ta kontrola czasu jest dla mnie zbyt szybka, zaproś mnie do wolniejszej partii. + Ta kontrola czasu jest dla mnie zbyt wolna, zaproś mnie do szybszej partii. + Nie akceptuję wyzwań z tą kontrolą czasu. + Zaproś mnie proszę do partii rankingowej. + Zaproś mnie proszę do partii nierankingowej. + Nie akceptuję teraz zaproszeń do gry w warianty. + Nie chcę grać teraz tego wariantu. + diff --git a/translation/dest/challenge/ps-AF.xml b/translation/dest/challenge/ps-AF.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/ps-AF.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/pt-BR.xml b/translation/dest/challenge/pt-BR.xml new file mode 100644 index 0000000000..785b9e66a2 --- /dev/null +++ b/translation/dest/challenge/pt-BR.xml @@ -0,0 +1,23 @@ + + + Desafios + Desafiar para jogar + Desafio recusado + Desafio aceito! + Desafio cancelado. + Por favor, registre-se para enviar desafios. + Você não pode desafiar %s. + %s não aceita desafios. + A sua classificação %1$s é muito diferente de %2$s. + Não pode desafiar devido a pontuação provisória de %s. + %s só aceita desafios de amigos. + Não estou aceitando desafios no momento. + Este não é o momento certo para mim, por favor pergunte novamente mais tarde. + Este controle de tempo é muito rápido para mim, por favor, desafie novamente com um jogo mais lento. + Este controle de tempo é muito rápido para mim, por favor, desafie novamente com um jogo mais rápido. + Não estou aceitando desafios com estes controles de tempo. + Por favor, envie-me um desafio ranqueado. + Por favor, envie-me um desafio amigável. + Eu não estou aceitando desafios de variantes no momento. + Não estou disposto a jogar esta variante no momento. + diff --git a/translation/dest/challenge/pt-PT.xml b/translation/dest/challenge/pt-PT.xml new file mode 100644 index 0000000000..acd8f0b24d --- /dev/null +++ b/translation/dest/challenge/pt-PT.xml @@ -0,0 +1,23 @@ + + + Desafios + Desafiar para jogar + Desafio recusado + Desafio aceite! + Desafio cancelado. + Por favor regista-te para enviar desafios. + Não podes desafiar %s. + %s não aceita desafios. + A tua classificação %1$s é muito diferente de %2$s. + Não podes desafiar por causa do tua pontuação provisória de %s. + %s só aceita desafios de amigos. + Não estou a aceitar desafios com este controlo de tempo. + Este não é o momento certo para mim, por favor pergunte novamente mais tarde. + Este controlo de tempo é muito rápido para mim, por favor, desafie-me novamente com um jogo mais lento. + Este controlo de tempo é muito lento para mim, por favor, desafie-me novamente com um jogo mais rápido. + Não estou a aceitar desafios com este controlo de tempo. + Por favor, envie-me um desafio a valer para a classificação. + Por favor, envie-me um desafio amistoso. + Não estou a aceitar desafios de variante, de momento. + Não estou disposto a jogar essa variante, de momento. + diff --git a/translation/dest/challenge/qu-PE.xml b/translation/dest/challenge/qu-PE.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/qu-PE.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/rn-BI.xml b/translation/dest/challenge/rn-BI.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/rn-BI.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/ro-RO.xml b/translation/dest/challenge/ro-RO.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/ro-RO.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/ru-RU.xml b/translation/dest/challenge/ru-RU.xml new file mode 100644 index 0000000000..e09f2f2220 --- /dev/null +++ b/translation/dest/challenge/ru-RU.xml @@ -0,0 +1,23 @@ + + + Вызовы + Вызвать на игру + Вызов отклонён + Вызов принят! + Вызов отменён. + Зарегистрируйтесь, чтобы вызывать соперников на игру. + Вы не можете вызвать на игру %s. + %s не принимает вызовы. + Ваш рейтинг %1$s слишком далёк от %2$s. + Невозможно из-за недостоверности рейтинга %s. + %s принимает вызовы только от друзей. + Я не принимаю вызовы прямо сейчас. + Я не принимаю вызовы прямо сейчас, пожалуйста, вызовите меня позже. + Такой контроль времени слишком быстрый для меня, пожалуйста, вызовите меня на игру с контролем времени побольше. + Такой контроль слишком медленный для меня, пожалуйста, вызовите меня с контролем времени поменьше. + Я не принимаю вызовы с таким контролем времени. + Вызовите меня на рейтинговую игру, пожалуйста. + Вызовите меня на товарищескую игру, пожалуйста. + Я не принимаю вызовы на неклассические шахматы прямо сейчас. + Я не хочу играть в этот вариант шахмат прямо сейчас. + diff --git a/translation/dest/challenge/rw-RW.xml b/translation/dest/challenge/rw-RW.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/rw-RW.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/sa-IN.xml b/translation/dest/challenge/sa-IN.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/sa-IN.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/sc-IT.xml b/translation/dest/challenge/sc-IT.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/sc-IT.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/sd-PK.xml b/translation/dest/challenge/sd-PK.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/sd-PK.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/se-NO.xml b/translation/dest/challenge/se-NO.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/se-NO.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/si-LK.xml b/translation/dest/challenge/si-LK.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/si-LK.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/sk-SK.xml b/translation/dest/challenge/sk-SK.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/sk-SK.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/sl-SI.xml b/translation/dest/challenge/sl-SI.xml new file mode 100644 index 0000000000..397ef65fa9 --- /dev/null +++ b/translation/dest/challenge/sl-SI.xml @@ -0,0 +1,10 @@ + + + Tokratna kontrola je zame prehitra, prosim, ponovno izzivajte s počasnejšo igro. + Tokratna kontrola je zame prepočasna, prosim, znova izzivajte s hitrejšo igro. + S tem časovnim nadzorom ne sprejemam izzivov. + Prosim, pošljite mi rangirani izziv. + Prosim, pošljite mi nerangirani izziv. + Trenutno ne sprejemam variantnih izzivov. + Trenutno nisem pripravljen igrati te različice. + diff --git a/translation/dest/challenge/sn-ZW.xml b/translation/dest/challenge/sn-ZW.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/sn-ZW.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/so-SO.xml b/translation/dest/challenge/so-SO.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/so-SO.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/sq-AL.xml b/translation/dest/challenge/sq-AL.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/sq-AL.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/sr-SP.xml b/translation/dest/challenge/sr-SP.xml new file mode 100644 index 0000000000..91135d75bc --- /dev/null +++ b/translation/dest/challenge/sr-SP.xml @@ -0,0 +1,4 @@ + + + Не прихватам изазове са овом временском контролом. + diff --git a/translation/dest/challenge/st-ZA.xml b/translation/dest/challenge/st-ZA.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/st-ZA.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/sv-SE.xml b/translation/dest/challenge/sv-SE.xml new file mode 100644 index 0000000000..39c5534344 --- /dev/null +++ b/translation/dest/challenge/sv-SE.xml @@ -0,0 +1,23 @@ + + + Utmaningar + Utmana till ett parti + Utmaning avböjd + Utmaning accepterad! + Utmaning avbruten. + Vänligen registrera ett konto för att skicka utmaningar. + Du kan inte utmana %s. + %s accepterar inte utmaningar. + Din %1$srating är för långt ifrån %2$s. + Kan inte utmana på grund av provisorisk %srating. + %s accepterar endast utmaningar från vänner. + Jag accepterar inte utmaningar för tillfället. + Detta är inte rätt tid för mig, vänligen fråga igen senare. + Denna tidskontroll är för snabb för mig, vänligen utmana igen med ett långsammare parti. + Denna tidskontroll är för långsam för mig, vänligen utmana igen med ett snabbare parti. + Jag accepterar inte utmaningar med denna tidskontroll. + Vänligen skicka en rankad utmaning istället. + Vänligen skicka en orankad utmaning istället. + Jag accepterar inte utmaningar med varianter för tillfället. + Jag vill inte spela denna variant för tillfället. + diff --git a/translation/dest/challenge/sw-KE.xml b/translation/dest/challenge/sw-KE.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/sw-KE.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/ta-IN.xml b/translation/dest/challenge/ta-IN.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/ta-IN.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/te-IN.xml b/translation/dest/challenge/te-IN.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/te-IN.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/tg-TJ.xml b/translation/dest/challenge/tg-TJ.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/tg-TJ.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/th-TH.xml b/translation/dest/challenge/th-TH.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/th-TH.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/ti-ER.xml b/translation/dest/challenge/ti-ER.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/ti-ER.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/tk-TM.xml b/translation/dest/challenge/tk-TM.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/tk-TM.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/tl-PH.xml b/translation/dest/challenge/tl-PH.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/tl-PH.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/tlh-AA.xml b/translation/dest/challenge/tlh-AA.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/tlh-AA.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/tn-ZA.xml b/translation/dest/challenge/tn-ZA.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/tn-ZA.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/tp-TP.xml b/translation/dest/challenge/tp-TP.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/tp-TP.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/tr-TR.xml b/translation/dest/challenge/tr-TR.xml new file mode 100644 index 0000000000..2dd92574d7 --- /dev/null +++ b/translation/dest/challenge/tr-TR.xml @@ -0,0 +1,23 @@ + + + Meydan okumalar + Oyun teklif et + Oyun teklifi reddedildi + Oyun teklifi kabul edildi! + Oyun teklifi iptal edildi. + Oyun daveti göndermek için üye olun. + %s adlı oyuncuya oyun daveti gönderemezsiniz. + %s oyun davetlerini kabul etmiyor. + %1$s puanınız %2$s ile kıyaslandığında büyük fark var. + %s puanınız geçici olduğu için başka oyunculara meydan okuyamazsınız. + %s sadece arkadaşlarından gelen oyun davetlerini kabul ediyor. + Şimdilik oyun tekliflerini kabul etmiyorum. + Şu anda müsait değilim, lütfen daha sonra yeniden teklif ediniz. + Bu süre ayarı benim için çok hızlı, lütfen daha yavaş oyunları teklif ediniz. + Bu süre ayarı benim için çok yavaş, lütfen daha hızlı oyunları teklif ediniz. + Bu süre ayarına sahip oyun tekliflerini kabul etmiyorum. + Bunun yerine puanlı oyun teklifi yapınız lütfen. + Bunun yerine puansız oyun teklifi yapınız lütfen. + Şimdilik standart dışı varyantlarda oyun tekliflerini kabul etmiyorum. + Şimdilik bu varyantı oynamak istemiyorum. + diff --git a/translation/dest/challenge/tt-RU.xml b/translation/dest/challenge/tt-RU.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/tt-RU.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/ug-CN.xml b/translation/dest/challenge/ug-CN.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/ug-CN.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/uk-UA.xml b/translation/dest/challenge/uk-UA.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/uk-UA.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/ur-PK.xml b/translation/dest/challenge/ur-PK.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/ur-PK.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/uz-UZ.xml b/translation/dest/challenge/uz-UZ.xml new file mode 100644 index 0000000000..749420a707 --- /dev/null +++ b/translation/dest/challenge/uz-UZ.xml @@ -0,0 +1,7 @@ + + + Chorlovlar + O\'yinga chorlov + Chorlovni rad etildi + Chorlov qabul qilindi! + diff --git a/translation/dest/challenge/vi-VN.xml b/translation/dest/challenge/vi-VN.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/vi-VN.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/wo-SN.xml b/translation/dest/challenge/wo-SN.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/wo-SN.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/xh-ZA.xml b/translation/dest/challenge/xh-ZA.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/xh-ZA.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/yo-NG.xml b/translation/dest/challenge/yo-NG.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/yo-NG.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/zh-CN.xml b/translation/dest/challenge/zh-CN.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/zh-CN.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/challenge/zh-TW.xml b/translation/dest/challenge/zh-TW.xml new file mode 100644 index 0000000000..d9ab501e0f --- /dev/null +++ b/translation/dest/challenge/zh-TW.xml @@ -0,0 +1,16 @@ + + + 挑戰 + 邀請對弈 + 對弈邀請已拒絕 + 對弈邀請已接受 + 對弈邀請已撤銷 + 請登入以向其他人發出對弈邀請 + 你無法向%s發出對弈邀請 + %s沒有接受對弈邀請 + 您的%1$s積分與%2$s相差太多 + 由於您的%s積分不夠穩定,無法發出挑戰。 + %s只接受好友的對弈邀請 + 我目前不接受對弈 + 我現在不接受對弈,請晚點再詢問 + diff --git a/translation/dest/challenge/zu-ZA.xml b/translation/dest/challenge/zu-ZA.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/translation/dest/challenge/zu-ZA.xml @@ -0,0 +1,2 @@ + + diff --git a/translation/dest/contact/az-AZ.xml b/translation/dest/contact/az-AZ.xml index 74a5051b27..51bf697e9e 100644 --- a/translation/dest/contact/az-AZ.xml +++ b/translation/dest/contact/az-AZ.xml @@ -27,6 +27,7 @@ Tarixçəmi və ya reytinqimi sıfırlamaq istəyirəm Oyun tarixçənizi, tapmaca tarixçənizi və ya reytinqlərinizi sıfırlamaq mümkün deyil. Bir oyunçunu bildirmək istəyirəm + Bir oyunçunu şikayət etmək üçün şikayət formundan istifadə edin Bir profil səhifəsindəki %s şikayət düyməsinə basaraq da həmin səhifəyə daxil ola bilərsiniz. Forumdakı oyunçuları şikayət etməyin. Bizə şikayət emailləri göndərməyin. diff --git a/translation/dest/contact/bs-BA.xml b/translation/dest/contact/bs-BA.xml index 61f4f7a7c0..5c116b4306 100644 --- a/translation/dest/contact/bs-BA.xml +++ b/translation/dest/contact/bs-BA.xml @@ -27,6 +27,7 @@ Želim da obrišem moju istoriju ili rejting Nije moguće obrisati Vašu istoriju partija, istoriju problema ili rejting. Želim prijaviti igrača + Da biste prijavili igrača, upotrijebite obrazac za prijavu Možete doći do te stranice i klikom na %s report opciju na profilnoj stranici. Ne prijavljujte igrače na forumu. Nemojte nam slati prijave e-mail porukama. diff --git a/translation/dest/contact/de-DE.xml b/translation/dest/contact/de-DE.xml index 103f7db216..66da27e5c5 100644 --- a/translation/dest/contact/de-DE.xml +++ b/translation/dest/contact/de-DE.xml @@ -27,7 +27,7 @@ Ich möchte meinen Verlauf oder meine Wertung löschen Es ist nicht möglich deinen Spiel-, Puzzleverlauf oder deine Wertung zu löschen. Ich möchte einen Spieler melden - Um einen Spieler zu melden, benutze das Meldeformular + Benutze das Meldeformular, um einen Spieler zu melden Du erreichst diese Seite ebenfalls, indem du den %s Meldeknopf auf einer Profilseite klickst. Melde keine Spieler im Forum. Sende uns keine Meldungen per E-Mail. diff --git a/translation/dest/contact/en-US.xml b/translation/dest/contact/en-US.xml index 03c1b5e57e..2a18c4d786 100644 --- a/translation/dest/contact/en-US.xml +++ b/translation/dest/contact/en-US.xml @@ -27,6 +27,7 @@ I want to clear my history or rating It\'s not possible to clear your game history, puzzle history, or ratings. I want to report a player + To report a player, use the report form You can also reach that page by clicking the %s report button on a profile page. Do not report players in the forum. Do not send us report emails. diff --git a/translation/dest/contact/es-ES.xml b/translation/dest/contact/es-ES.xml index 52db289338..bb6137a3ce 100644 --- a/translation/dest/contact/es-ES.xml +++ b/translation/dest/contact/es-ES.xml @@ -29,7 +29,7 @@ Quiero denunciar a un jugador Para denunciar a un jugador utiliza el formulario de denuncia También puedes acceder a esa página pulsando el botón de denuncia %s en un perfil. - No denuncie a jugadores en el foro. + No denuncies a jugadores en el foro. No nos envíes correo para denunciar jugadores. No envíes mensajes directos a los moderadores. La única forma eficaz de denunciar jugadores es mediante el formulario de denuncia. diff --git a/translation/dest/contact/eu-ES.xml b/translation/dest/contact/eu-ES.xml index bc39b9ece4..66c35d4a17 100644 --- a/translation/dest/contact/eu-ES.xml +++ b/translation/dest/contact/eu-ES.xml @@ -27,6 +27,7 @@ Nire historikoa edo puntuazioa berrezarri nahi ditut Ezin da zure partiden historikoa, ariketena edo puntuazioa berrezarri. Erabiltzaile baten inguruko kexa jarri nahi dut + Jokalari bati buruzko kexa egiteko, erabili kexa formularioa Orrialde horretara jokalariaren profilaren orrialdeko %s berri emateko botoian sakatuta hel zaitezke. Ez erabili foroa jokalarien inguruko kexa bidaltzeko. Ez bidali epostaz kexak. diff --git a/translation/dest/contact/hi-IN.xml b/translation/dest/contact/hi-IN.xml index 6fb8ac4070..ce80f69163 100644 --- a/translation/dest/contact/hi-IN.xml +++ b/translation/dest/contact/hi-IN.xml @@ -27,6 +27,7 @@ मैं अपना इतिहास या रेटिंग मिटाना चाहता हूं आपके खेल के इतिहास, पहेली इतिहास, या रेटिंग को मिटाना संभव नहीं है। मैं एक खिलाड़ी की रिपोर्ट करना चाहता हूं + किसी खिलाड़ी को रिपोर्ट करने के लिए, रिपोर्ट फ़ॉर्म का उपयोग करें आप प्रोफाइल पेज पर %s रिपोर्ट बटन पर क्लिक करके भी उस पृष्ठ पर पहुँच सकते हैं। मंच में खिलाड़ियों को रिपोर्ट न करें। हमें रिपोर्ट ईमेल पर न भेजें। diff --git a/translation/dest/contact/hu-HU.xml b/translation/dest/contact/hu-HU.xml index e04391dec2..343151df4f 100644 --- a/translation/dest/contact/hu-HU.xml +++ b/translation/dest/contact/hu-HU.xml @@ -27,6 +27,7 @@ Szeretném törölni az előzményeket vagy az értékszámom Nincs lehetőség a játékelőzményed, feladványaid és értékszámod törlésére. Jelentenék egy felhasználót + Játékos jelentéséhez használd az űrlapot Amit ugyancsak elérhetsz, ha a %s jelentése gombra kattintasz a profil oldalon. Ne jelents játékosokat a fórumban. Ne küldj nekünk emailt emiatt. diff --git a/translation/dest/contact/ja-JP.xml b/translation/dest/contact/ja-JP.xml index 7e840bb33f..89c99caef9 100644 --- a/translation/dest/contact/ja-JP.xml +++ b/translation/dest/contact/ja-JP.xml @@ -27,6 +27,7 @@ 対局履歴やレーティングをリセットしたい 対局や問題の履歴、レーティングはリセットできません。 誰かを通報したい + プレイヤーの通報には通報用フォームを使ってください その人のプロフィールページの通報ボタン(右上 %s)からもできます。 他のプレイヤーをフォーラムに通報しないでください。 通報の際は Lichess にメールを送らないでください。 diff --git a/translation/dest/contact/lv-LV.xml b/translation/dest/contact/lv-LV.xml index 97b315a074..ab2943f394 100644 --- a/translation/dest/contact/lv-LV.xml +++ b/translation/dest/contact/lv-LV.xml @@ -27,6 +27,7 @@ Vēlos notīrīt savu vēsturi vai reitingu Nav iespējams notīrīt spēļu vēsturi, puzļu vēsturi vai reitingus. Vēlos ziņot par spēlētāju + Lai ziņotu par spēlētāju, aizpildiet ziņošanas veidlapu Varat arī nonākt tajā lapā, klikšķinot uz %s pogas \"ziņot\" profila lapā. Neziņojiet par spēlētājiem forumā. Nesūtiet mums ziņojumu e-pastus. diff --git a/translation/dest/contact/nb-NO.xml b/translation/dest/contact/nb-NO.xml index d8b6713135..6d2b5557ea 100644 --- a/translation/dest/contact/nb-NO.xml +++ b/translation/dest/contact/nb-NO.xml @@ -27,6 +27,7 @@ Jeg vil slette historikken eller ratingen min Det er ikke mulig å slette historikken din for partier, sjakknøtter eller ratinger. Jeg vil rapportere en spiller + Bruk rapportskjemaet for å rapportere en spiller Du kan også komme til den sida ved å klikke på %s meldingsknappen på ei brukerside. Ikke meld spillere i forumet. Ikke send oss epost med anmelding av spillere. diff --git a/translation/dest/contact/nl-NL.xml b/translation/dest/contact/nl-NL.xml index ead36652de..c0c0d33719 100644 --- a/translation/dest/contact/nl-NL.xml +++ b/translation/dest/contact/nl-NL.xml @@ -27,6 +27,7 @@ Ik wil mijn geschiedenis of rating wissen Het is niet mogelijk uw partijgeschiedenis, puzzelgeschiedenis of rating te wissen. Ik wil een speler rapporteren + Gebruik het rapportformulier als u een speler wilt rapporteren U kunt deze pagina ook bereiken door op de %s rapporteerknop op een profielpagina te klikken. Rapporteer geen spelers op het forum. Stuur ons geen e-mail om een speler te rapporteren. diff --git a/translation/dest/contact/nn-NO.xml b/translation/dest/contact/nn-NO.xml index f47e061bc6..f8c417d16a 100644 --- a/translation/dest/contact/nn-NO.xml +++ b/translation/dest/contact/nn-NO.xml @@ -47,9 +47,9 @@ Forsikre deg om at du skjønar med rokade-reglane Øv på rokade ved hjelp av dette lille interaktive spelet Vær nøye med å kontrollere at rokaderettane er korrekt sett dersom partiet er importert eller starta frå ein annan stilling enn utgangsposisjonen. - Utilstrekkeleg materiale til å sette matt + Utilstrekkeleg materiale til å setja matt I følge FIDEs sjakkregler §6.9, er eit parti ikkje remis dersom ein sjakkmatt er mogleg etter ein lovleg trekkrekkefølge - Det er mogleg å sette sjakkmatt med berre éin springar eller éin løpar dersom motspelaren har fleire brikker enn kongen på brettet. + Det er mogleg å setja sjakkmatt med berre éin springar eller éin løpar dersom motspelaren har fleire brikker enn kongen på brettet. Det blei ikkje tildelt ratingpoeng Forsikre deg om at partiet du spela var rangert. Uforpliktande parti påverkar ikkje ratinga til spelarane. Feilside diff --git a/translation/dest/contact/pt-BR.xml b/translation/dest/contact/pt-BR.xml index 0b9147dccd..ac49c62e1a 100644 --- a/translation/dest/contact/pt-BR.xml +++ b/translation/dest/contact/pt-BR.xml @@ -27,6 +27,7 @@ Quero limpar meu histórico ou pontuação Não é possível limpar seu histórico de jogos, quebra-cabeças ou pontuações. Quero denunciar um jogador + Para denunciar um jogador, use o formulário de denúncia Você também pode chegar a essa página clicando no botão de denúncia %s em uma página de perfil. Não denuncie jogadores no fórum. Não envie denúncias por e-mails. diff --git a/translation/dest/contact/pt-PT.xml b/translation/dest/contact/pt-PT.xml index 034371fdb3..9d00bbf8a5 100644 --- a/translation/dest/contact/pt-PT.xml +++ b/translation/dest/contact/pt-PT.xml @@ -27,6 +27,7 @@ Quero limpar o meu histórico ou pontuação Não é possível limpar o teu histórico de jogos, histórico de problemas ou pontuações. Quero denunciar um jogador + Para denunciar um jogador, usa o formulário de denúncia Também podes aceder a essa página clicando no butão de denúncia %s numa página de perfil. Não denuncies jogadores no fórum. Não nos envies e-mails de denúnica. diff --git a/translation/dest/contact/ro-RO.xml b/translation/dest/contact/ro-RO.xml index c42d35059e..9c48d1767e 100644 --- a/translation/dest/contact/ro-RO.xml +++ b/translation/dest/contact/ro-RO.xml @@ -26,6 +26,7 @@ Vreau să îmi sterg istoricul sau ratingul Nu se poate curăța istoricul jocurilor, istoricul puzzle-urilor sau evaluările. Vreau să raportez un jucător + Pentru a raporta un jucător, folosește formularul de raportare De asemenea, poți ajunge la acea pagină dând click pe butonul %s pentru raport pe o pagină a profilului. Nu raportaţi jucătorii din forum. Nu ne trimiteți e-mailuri de raportare. diff --git a/translation/dest/contact/sl-SI.xml b/translation/dest/contact/sl-SI.xml index 28b53b018f..d8393f2000 100644 --- a/translation/dest/contact/sl-SI.xml +++ b/translation/dest/contact/sl-SI.xml @@ -27,6 +27,7 @@ Hočem počistiti svojo zgodovino ali rating Ni možno pobrisati vaše zgodovine igranih iger, zgodovine ugank ali ratinga. Hočem prijaviti igralca + Za prijavo igralca, uporabite obrazec za prijavo Do te strani lahko pride tudi s klikom na gumb %s na strani profila uporabnika. Ne prijavite igralcev na forumu. Ne pošiljajte nam elektronskih pisem s prijavo. diff --git a/translation/dest/contact/sv-SE.xml b/translation/dest/contact/sv-SE.xml index 50acf7b75c..58d34751bc 100644 --- a/translation/dest/contact/sv-SE.xml +++ b/translation/dest/contact/sv-SE.xml @@ -27,11 +27,12 @@ Jag vill rensa min historik eller rating Det är inte möjligt att rensa din partihistorik, historik för schackproblem eller rating. Jag vill rapportera en spelare + Använd rapportformuläret för att rapportera en spelare Du kan också nå den sidan genom att klicka på knappen %s rapportera på en profilsida. Rapportera inte spelare i forumet. Skicka oss inte rapporter via e-post. Skicka inte direkta meddelanden till moderatorer. - Att bara rapportera spelare via rapportformuläret är effektiv. + Att bara rapportera spelare via rapportformuläret är effektivt. Jag vill rapportera ett programfel I Forumet: Lichess Feedback Som ett Lichess-webbplatsärende på GitHub diff --git a/translation/dest/contact/tr-TR.xml b/translation/dest/contact/tr-TR.xml index 7f25253de7..072c3fbd3f 100644 --- a/translation/dest/contact/tr-TR.xml +++ b/translation/dest/contact/tr-TR.xml @@ -27,6 +27,7 @@ Oyun geçmişimi veya puanımı sıfırlamak istiyorum Oyun geçmişinizi, bulmaca geçmişinizi veya puanlarınızı sıfırlamamız maalesef mümkün değil. Bir oyuncuyu şikâyet etmek istiyorum + Bir oyuncuyu şikayet etmek için şikayet formunu kullanınız Ayrıca, oyuncunun profilindeki %s butonuna tıklayarak şikâyet formuna ulaşabilirsiniz. Forumdaki oyuncular için şikâyette bulunmayın. Bize şikâyet e-postaları göndermeyin. diff --git a/translation/dest/contact/uk-UA.xml b/translation/dest/contact/uk-UA.xml index 152c5e2430..20b4497ea0 100644 --- a/translation/dest/contact/uk-UA.xml +++ b/translation/dest/contact/uk-UA.xml @@ -27,6 +27,7 @@ Я хочу очистити свою історію або рейтинг Неможливо очистити історію ігор, шахових задач або рейтинг. Я хочу поскаржитись на гравця + Щоб поскаржитись на гравця, використовуйте форму звіту Ви також можете перейти на цю сторінку, натиснувши кнопку звіту %s на сторінці профілю. Не скаржтесь на гравців на форумі. Не надсилайте нам листи зі скаргами. diff --git a/translation/dest/faq/es-ES.xml b/translation/dest/faq/es-ES.xml index cd7a77fc36..829a875832 100644 --- a/translation/dest/faq/es-ES.xml +++ b/translation/dest/faq/es-ES.xml @@ -18,7 +18,7 @@ Sí. Lichess ha inspirado otras páginas de código abierto que utilizan nuestro %1$s, %2$s, o %3$s. Juego limpio ¿Por qué estoy marcado por manipulación de la puntuación (perder a propósito o no ganar limpiamente) o asistencia informática? - Lichess tiene métodos de detección fuertes y un proceso muy exhaustivo para revisar todas las pruebas antes de tomar una decisión. Normalmente, el proceso implica a muchos moderadores y lleva bastante tiempo. Aparte de la marca en sí, no facilitamos más detalles sobre las pruebas o el proceso de toma de decisiones para casos individuales. Esto haría más fácil evitar la detección en el futuro y abre debates improductivos. Es mejor invertir ese tiempo y esfuerzo en otras cosas importantes. Los usuarios pueden apelar enviando un correo electrónico a %1$s, pero las decisiones rara vez se revierten. + Lichess tiene métodos de detección fuertes y un proceso muy exhaustivo para revisar todas las pruebas antes de tomar una decisión. Normalmente, el proceso implica a muchos moderadores y lleva bastante tiempo. Aparte de la marca en sí, no facilitamos más detalles sobre las pruebas o el proceso de toma de decisiones para casos individuales. Esto haría más fácil evitar la detección en el futuro y daría lugar a debates improductivos. Es mejor invertir ese tiempo y esfuerzo en otras cosas más importantes. Los usuarios pueden apelar enviando un correo electrónico a %1$s, pero las decisiones rara vez se revierten. ¿En qué casos se me devuelven automáticamente los puntos perdidos contra un tramposo? Un minuto después de marcar a un jugador como tramposo, se toman sus últimas 40 partidas por puntos de los tres últimos días. Si tú fuiste su oponente en esas partidas, perdiste puntos en ellas (bien porque perdiste, bien porque empataste), y tu puntuación no era provisional, entonces se te devuelven puntos. Este reembolso está limitado por tu puntuación máxima y por cómo haya progresado tu puntuación después de aquella partida. (Por ejemplo, si tu puntuación ha subido mucho después de aquellas partidas, puede que no se te devuelvan los puntos o sólo se te devuelvan algunos). La devolución en ningún caso será de más de 150 puntos. @@ -78,9 +78,9 @@ Mira el capítulo del %3$s sobre este movimiento para practicar un poco con él. Lichess reconoce todos los títulos FIDE obtenidos OTB (sobre el tablero), así como %1$s. Aquí hay una lista de títulos FIDE: Si tienes un título OTB, puedes solicitar que se muestre en tu cuenta completando el %1$s, incluyendo una imagen clara de un documento/tarjeta de identificación y una foto tuya portando dicho documento/tarjeta. - La verificación como jugador titulado en Lichess da acceso a jugar en los eventos de Arena para titulados. +La verificación como jugador titulado en Lichess da acceso a jugar en los eventos de Arena para titulados. - Finalmente, hay un título de honor %2$s. +Finalmente, existe el título honorífico %2$s. muchos títulos de maestros nacionales formulario de verificación ¿Puedo obtener el título de Maestro Lichess (LM)? @@ -122,7 +122,7 @@ Otro punto que cabe señalar es que, si pasa un tiempo sin jugar, el intervalo d haber jugado una partida por puntos en la última semana para esta modalidad, tener una desviación de puntuación menor que %1$s, en ajedrez estándar, y menor que %2$s en variantes, estar entre los 10 primeros de esta clasificación. - El segundo requisito es que los jugadores que ya no usan sus cuentas dejen de poblar los tableros de liderazgo. + El segundo requisito es que los jugadores que ya no usan sus cuentas dejen de poblar el listado de líderes. ¿Por qué son más altas las puntuaciones en comparación con otras páginas y organizaciones como FIDE, USCF y el CIC? Lo mejor es no considerar las puntuaciones como cifras absolutas ni compararlas con otras organizaciones. Diferentes organizaciones tienen distintos niveles de jugadores y sistemas de puntuación (Elo, Glicko, Glicko-2 o una versión modificada de los primeros). Estos factores pueden afectar drásticamente los números absolutos (puntuaciones). @@ -134,7 +134,7 @@ Otro punto que cabe señalar es que, si pasa un tiempo sin jugar, el intervalo d Desafortunadamente, no podemos devolver puntos en las partidas perdidas debido al retraso de red o desconexión, independientemente de si el problema estaba en tu lado o en el nuestro. Sin embargo, este último caso es muy extraño. También ten en cuenta que cuando Lichess se reinicia y pierdes por que se te haya acabado el tiempo debido a eso, abortamos el juego para prevenir una pérdida injusta. Cómo... ¿Activar o desactivar las notificaciones emergentes? - Ver ventana emergente de información del sitio + Ver notificación emergente de información del sitio Opcionalmente, Lichess puede enviar notificaciones emergentes, por ejemplo cuando sea tu turno o hayas recibido un mensaje privado. Haz clic en el icono de bloqueo junto a la dirección de lichess.org, en la barra de URL de tu navegador. diff --git a/translation/dest/faq/nn-NO.xml b/translation/dest/faq/nn-NO.xml index 99e8286b17..294be17df3 100644 --- a/translation/dest/faq/nn-NO.xml +++ b/translation/dest/faq/nn-NO.xml @@ -47,11 +47,11 @@ Maskinanalysa på Lichess vert gjort av programmet Stockfish. Tap på tid, ved remis og ved utilstrekkeleg materiale - Som hovudregel vil ein spelar som ikkje har meir tid igjen på klokka tape partiet. Unntaket er dersom stillinga er slik at motspelaren ikkje kan sette kongen sjakkmatt med moglege seriar av lovlege trekk (%1$s). + Som hovudregel vil ein spelar som ikkje har meir tid igjen på klokka tape partiet. Unntaket er dersom stillinga er slik at motspelaren ikkje kan setja kongen sjakkmatt med moglege seriar av lovlege trekk (%1$s). - I eit fåtal tilfelle kan dette vere vanskeleg å avgjera automatisk (tvungne linjer, festningar). I utgangspunktet held vi med den spelaren som har tid igjen på klokka. +I eit fåtal tilfelle kan dette vere vanskeleg å avgjera automatisk (tvungne linjer, festningar). I utgangspunktet held vi med den spelaren som har tid igjen på klokka. - Merk at det er mogleg å sette matt med ein einskild springar eller løpar dersom motspelaren har ein brikke som kan blokkere kongen. +Merk at det er mogleg å setja matt med ein einsleg springar eller løpar dersom motspelaren har ei brikke som kan blokkere kongen. FIDE handbok %s Kvifor kan ein bonde slå ein passert bonde? (en passant) Dette er eit lovleg trekk kalla «en passant» («i forbifarta»). Wikipedia-artikkelen gir ein %1$s. diff --git a/translation/dest/learn/el-GR.xml b/translation/dest/learn/el-GR.xml index 85e7c5977c..0050b66685 100644 --- a/translation/dest/learn/el-GR.xml +++ b/translation/dest/learn/el-GR.xml @@ -88,7 +88,7 @@ Συγχαρητήρια! Ξέρετε πως να μάχεστε με τα πιόνια του σκακιού! Σαχ σε μία κίνηση Επίθεση στον βασιλιά του αντιπάλου - Για να κάνετε σαχ στον αντίπαλο σας, επιτεθείτε στον βασιλιά του. Πρέπει να τον υπερασπιστεί! + Για να κάνετε σαχ στον αντίπαλό σας, επιτεθείτε στον βασιλιά του. Πρέπει να τον υπερασπιστεί! Απειλήστε τον βασιλιά του αντιπάλου με μία κίνηση! Συγχαρητήρια! Κάνατε σαχ στον αντίπαλο, αναγκάζοντάς τον να προστατεύσει τον βασιλιά του! Ξεφεύγοντας από σαχ diff --git a/translation/dest/patron/es-ES.xml b/translation/dest/patron/es-ES.xml index fda09ca53a..e9e2a1e29e 100644 --- a/translation/dest/patron/es-ES.xml +++ b/translation/dest/patron/es-ES.xml @@ -12,7 +12,7 @@ Tienes una cuenta de patrón de por vida. ¡Qué impresionante! Tienes una cuenta de patrón hasta el %s. Si no se renueva, se te degradará a la versión gratuita. - Somos una organización sin ánimo de lucro porque creemos que todos deberíamos tener acceso a una plataforma de ajedrez de de primera clase y gratuita. + Somos una organización sin ánimo de lucro porque creemos que todos deberíamos tener acceso a una plataforma de ajedrez de primera clase y gratuita. Lo hacemos posible gracias al apoyo de gente como tú. Si te gusta Lichess, por favor ¡considera apoyarnos donando y convirtiéndote en patrón! De por vida Paga %s una vez. ¡Sé un Patrón de la Lichess para siempre! diff --git a/translation/dest/preferences/az-AZ.xml b/translation/dest/preferences/az-AZ.xml index dc7339b32f..209080a389 100644 --- a/translation/dest/preferences/az-AZ.xml +++ b/translation/dest/preferences/az-AZ.xml @@ -11,13 +11,13 @@ Şahmat notasiyası Şahmat fiqur simvolu Hərf (K, Q, R, B, N) - Zen rejimi + Zen rejimi Lövhə ölçüləndirmə tutacağını göstər Yalnız başlanğıc pozisiyada Gözübağlı şahmat (görünməz fiqurlar) Şahmat saat Son 10 saniyə - Qalan zaman < 10 saniyə + Qalan zaman < 10 saniyə Yaşıl üfüqi tərəqqi bar Zaman azaldığında səslə xəbərdarlıq Vaxt ver diff --git a/translation/dest/preferences/pt-BR.xml b/translation/dest/preferences/pt-BR.xml index dbc768aa81..6bcad743dc 100644 --- a/translation/dest/preferences/pt-BR.xml +++ b/translation/dest/preferences/pt-BR.xml @@ -17,7 +17,7 @@ Xadrez cego (peças invisíveis) Relógio de xadrez Décimos de segundo - Quando o tempo restante for < 10 segundos + Quando o tempo restante for < 10 segundos Barras de progresso verdes horizontais Som ao atingir tempo crítico Dar mais tempo diff --git a/translation/dest/preferences/sv-SE.xml b/translation/dest/preferences/sv-SE.xml index f66ae228cc..71e1d9979f 100644 --- a/translation/dest/preferences/sv-SE.xml +++ b/translation/dest/preferences/sv-SE.xml @@ -5,7 +5,7 @@ Pjäsanimation Materialskillnad Brädmarkeringar (föregående drag och schack) - Möjliga drag (giltiga drag och premoves) + Möjliga drag (giltiga drag och förhandsdrag) Brädkoordinater (A-H, 1-8) Lista med drag under spelets gång Dragnotation @@ -17,7 +17,7 @@ Blindschack (Osynliga pjäser) Schack-klocka Tiondels sekunder - När återstående tid < 10 sekunder + När återstående tid < 10 sekunder Horisontella gröna förloppsindikatorer Ljud när tiden blir kritisk Ge mer tid diff --git a/translation/dest/preferences/tr-TR.xml b/translation/dest/preferences/tr-TR.xml index 40d5f514cd..449c6be44e 100644 --- a/translation/dest/preferences/tr-TR.xml +++ b/translation/dest/preferences/tr-TR.xml @@ -11,7 +11,7 @@ Notasyon tut Satranç taşı sembolü Harf (Ş, V, K, A, F) - Odak modu + Sade görünüm Tahta büyüklüğünü ayarlama kolunu göster Sadece oyunun başında Körleme satranç (taşlar gözükmez) diff --git a/translation/dest/preferences/vi-VN.xml b/translation/dest/preferences/vi-VN.xml index bd2139d124..fde7582cf7 100644 --- a/translation/dest/preferences/vi-VN.xml +++ b/translation/dest/preferences/vi-VN.xml @@ -3,10 +3,10 @@ Sửa giao diện Hiển thị ván cờ Tính linh hoạt của quân cờ - Khác chất + Chênh lệch giá trị quân cờ Đánh dấu trên bàn cờ (nước đi mới nhất và nước chiếu) Các điểm đến của quân cờ (các nước đi hợp lý và nước đi trước) - Tạo độ bàn cờ (A-H, 1-8) + Tọa độ bàn cờ (A-H, 1-8) Biên bản ván đấu Kí hiệu di chuyển Biểu tượng quân cờ @@ -17,7 +17,7 @@ Cờ tưởng (quân cờ vô hình) đồng hồ chuyên dụng Một phần mười giây - Khi thời gian còn lại < 10 giây + Khi thời gian còn lại < 10 giây Thanh tiến trình ngang màu xanh Âm thanh khi khủng hoảng thời gian Cho thêm thời gian diff --git a/translation/dest/preferences/zh-TW.xml b/translation/dest/preferences/zh-TW.xml index c6ed895b99..e3baa723bd 100644 --- a/translation/dest/preferences/zh-TW.xml +++ b/translation/dest/preferences/zh-TW.xml @@ -12,11 +12,11 @@ 蒙眼象棋 (看不见棋子) 棋鍾 十分之一秒 - 當剩餘時間小於10秒 + 當剩餘時間小於10秒 绿色横进度条 時間不足時聲音提醒 給對方更多時間 - 對局行為 + 對局行為 预先走棋(在对手的回合走棋) 悔棋(经过对手同意) 仅限非正式游戏 @@ -25,6 +25,6 @@ 当剩余时间小于30秒 走棋确认 在长期对局中 - 通信和无限 + 通信和無限 已儲存您的設定。 diff --git a/translation/dest/puzzle/es-ES.xml b/translation/dest/puzzle/es-ES.xml index c196503c20..61f4c4d18d 100644 --- a/translation/dest/puzzle/es-ES.xml +++ b/translation/dest/puzzle/es-ES.xml @@ -1,27 +1,27 @@ - Rompecabezas + Ejercicios Temas de rompecabezas Recomendado Fases - Motivos + Temas Avanzado Duraciones Mates Objetivos - Origen + Origen Movimientos especiales - ¿Te ha gustado este rompecabezas? + ¿Te gusto este rompecabezas? ¡Vota para cargar el siguiente! Tu puntuación en los rompecabezas: %s Encuentra el mejor movimiento para las blancas. Encuentra el mejor movimiento para las negras. Para conseguir rompecabezas personalizados: Rompecabezas %s - Rompecabezas del día + ejercicio diario Clic para resolver Buen movimiento - ¡El mejor movimiento! + ¡Encontraste el mejor movimiento! Continúa… ¡Éxito! ¡Rompecabezas terminado! diff --git a/translation/dest/puzzle/eu-ES.xml b/translation/dest/puzzle/eu-ES.xml index ae38c45d4d..1f632ad2a1 100644 --- a/translation/dest/puzzle/eu-ES.xml +++ b/translation/dest/puzzle/eu-ES.xml @@ -9,7 +9,7 @@ Luzera Mateak Helburuak - Jatorria + Jatorria Jokaldi bereziak Ariketa gustukoa izan da? Eman bozka hurrengoa kargatzeko! diff --git a/translation/dest/puzzle/fo-FO.xml b/translation/dest/puzzle/fo-FO.xml index 2851d35949..4f412c9655 100644 --- a/translation/dest/puzzle/fo-FO.xml +++ b/translation/dest/puzzle/fo-FO.xml @@ -9,6 +9,7 @@ Longdir Mát Mál + Uppruni Serligir leikir Dámdi tær hesa uppgávuna? Atkvøð at innlesa ta næstu! @@ -44,5 +45,7 @@ Legg eitt nýtt tema aftrat Far beinanvegin til næstu uppgávu Uppgávuyvirlit + Øki at bøta um Styrkir + loyst diff --git a/translation/dest/puzzle/fr-FR.xml b/translation/dest/puzzle/fr-FR.xml index 929f31ce36..edff924b63 100644 --- a/translation/dest/puzzle/fr-FR.xml +++ b/translation/dest/puzzle/fr-FR.xml @@ -9,7 +9,7 @@ Longueurs Mats Objectifs - Origine + Origine Coups spéciaux Avez-vous aimé ce problème ? Votez pour afficher le suivant ! diff --git a/translation/dest/puzzle/ja-JP.xml b/translation/dest/puzzle/ja-JP.xml index 4aa4b1dd72..6a68bdb356 100644 --- a/translation/dest/puzzle/ja-JP.xml +++ b/translation/dest/puzzle/ja-JP.xml @@ -9,7 +9,7 @@ 手数 メイト 目標 - 出所 + 出所 特殊な手 この問題は気に入りましたか? 投票すると次を読み込みます! diff --git a/translation/dest/puzzle/lt-LT.xml b/translation/dest/puzzle/lt-LT.xml index 7c631890c5..6246100a4b 100644 --- a/translation/dest/puzzle/lt-LT.xml +++ b/translation/dest/puzzle/lt-LT.xml @@ -9,7 +9,7 @@ Ilgiai Matai Tikslai - Kilmė + Kilmė Ypatingi ėjimai Ar jums patiko ši užduotis? Nubalsuokite norėdami pakrauti kitą! diff --git a/translation/dest/puzzle/nn-NO.xml b/translation/dest/puzzle/nn-NO.xml index 9cbb49d531..7b61801459 100644 --- a/translation/dest/puzzle/nn-NO.xml +++ b/translation/dest/puzzle/nn-NO.xml @@ -45,7 +45,7 @@ Hopp straks til neste oppgåve Oppgåveoversikt Forbetringsområde - Styrke + Styrkeområde Oppgåvehistorikk løyst feila diff --git a/translation/dest/puzzle/pl-PL.xml b/translation/dest/puzzle/pl-PL.xml index f9916fa132..b68de81fc8 100644 --- a/translation/dest/puzzle/pl-PL.xml +++ b/translation/dest/puzzle/pl-PL.xml @@ -9,7 +9,7 @@ Długość zadania Maty Cele - Źródło + Źródło Szczególne posunięcia Czy podobało Ci się to zadanie? Zagłosuj, by wczytać następny! diff --git a/translation/dest/puzzle/ro-RO.xml b/translation/dest/puzzle/ro-RO.xml index 67a0bf8c65..c807097c71 100644 --- a/translation/dest/puzzle/ro-RO.xml +++ b/translation/dest/puzzle/ro-RO.xml @@ -5,7 +5,7 @@ Faze Lungimi Obiective - Origine + Origine Mutări speciale Ți-a plăcut această problemă? Votează pentru a-l încărca pe următorul! diff --git a/translation/dest/puzzleTheme/az-AZ.xml b/translation/dest/puzzleTheme/az-AZ.xml index c9d5ec3d5e..857d2ddb90 100644 --- a/translation/dest/puzzleTheme/az-AZ.xml +++ b/translation/dest/puzzleTheme/az-AZ.xml @@ -27,6 +27,7 @@ İki fil matı İki fil, öz fiqurları tərəfindən bloklanan şahı bitişik diaqonallardan hücum edərək mat edir. Koziyo matı + İki qaçış xanası da öz fiqurları tərəfindən tutulan şaha çarpaz bitişik diaqonaldan vəzirlə edilən mat. Bərabərləşmə İtirilmiş bir pozisiyadan çıxın, heç-heçə və ya balanslı bir mövqe əldə edin. (200sp və daha az) Şah cinahında hücum @@ -50,6 +51,8 @@ Bir fiqurun eyni anda iki rəqib fiquruna hücum etdiyi gediş. Qorunmasız fiqur Rəqib fiqurunun müdafiəsiz və ya kifayət qədər müdafiə olunmadığı və vurulmağa hazır olduğunu əhatə edən bir taktika. + Qarmaq matı + Top, at, piyada və rəqib şahının qaçışını məhdudlaşdırmaq üçün bir rəqib piyadası ilə birlikdə edilən mat. Yolukəsmə Bir və ya hər iki rəqib fiqurunu müdafiəsiz buraxmaq üçün iki rəqib fiquru arasına öz fiqurunu qoymaq, məsələn, iki top arasındakı müdafiə olunan bir xanaya bir at qoymaq. İntermezzo diff --git a/translation/dest/puzzleTheme/da-DK.xml b/translation/dest/puzzleTheme/da-DK.xml index 061d658555..9fa7fdf695 100644 --- a/translation/dest/puzzleTheme/da-DK.xml +++ b/translation/dest/puzzleTheme/da-DK.xml @@ -6,8 +6,8 @@ Grib chancen for at få en afgørende fordel. (200cb ≤ eval ≤ 600cb) Anastasias mat En springer og et tårn eller en dronning går sammen om at fange modstanderens konge mellem side af brættet og en venligsindet brik. - Arabisk mat - En springer og et tårn samarbejder om at fange modstanderens konge i et af brættets hjørner. + Arabisk mat + En springer og et tårn samarbejder om at fange modstanderens konge i et af brættets hjørner. Angreb på f2 eller f7 Et angreb som er fokuseret på f2 eller f7 bonden, som det kendes fra Fegatello-angrebet (\"Fried Liver Attack\"). Lokkedue @@ -16,18 +16,18 @@ Sæt kongen skakmat på baglinjen, når den er fanget der af sine egne brikker. Løberslutspil Et slutspil med kun løbere og bønder. - Bodens mat - To angribende løbere på krydsende diagonaler giver mat til en konge, som er blokeret af egne brikker. + Bodens mat + To angribende løbere på krydsende diagonaler giver mat til en konge, som er blokeret af egne brikker. Rokade Bring din konge i sikkerhed og gør dit tårn klar til angreb. Tag forsvaren Tag en brik som er kritisk i forsvaret af en anden brik, så det er muligt at tage den uforsvarede brik på et efterfølgende træk. Knusende Spot modstanderens brøler for at opnå en knusende fordel. (eval ≥ 600cb) - Dobbelt løbermat - To angribende løbere på tilstødende diagonaler giver mat til en konge, som er blokeret af egne brikker. - Duehale mat - En dronning sætter en tilstødende konge mat, da dennes eneste to felter til flugt er blokeret af egne brikker. + Dobbelt løbermat + To angribende løbere på tilstødende diagonaler giver mat til en konge, som er blokeret af egne brikker. + Duehale mat + En dronning sætter en tilstødende konge mat, da dennes eneste to felter til flugt er blokeret af egne brikker. Udligning Vend en tabende stilling til en remis eller en lige stilling. (eval ≤ 200cb) Angreb på kongesiden diff --git a/translation/dest/puzzleTheme/de-DE.xml b/translation/dest/puzzleTheme/de-DE.xml index 18c3408257..3ae0813741 100644 --- a/translation/dest/puzzleTheme/de-DE.xml +++ b/translation/dest/puzzleTheme/de-DE.xml @@ -17,7 +17,7 @@ Läuferendspiel Ein Endspiel nur mit Läufern und Bauern. Boden-Matt - Zwei angreifende Läufer auf sich kreuzenden (Neben-)Diagonalen setzen den König matt, der durch eigene Figuren behindert wird. + Zwei angreifende Läufer auf sich kreuzenden Diagonalen setzen den König matt, der durch eigene Figuren behindert wird. Rochade Bringe deinen König in Sicherheit und den Turm in Angriffsposition. Schlage den Verteidiger diff --git a/translation/dest/puzzleTheme/en-US.xml b/translation/dest/puzzleTheme/en-US.xml index 84a2ca6a74..c8af0b3b2a 100644 --- a/translation/dest/puzzleTheme/en-US.xml +++ b/translation/dest/puzzleTheme/en-US.xml @@ -6,8 +6,8 @@ Seize your chance to get a decisive advantage. (200cp ≤ eval ≤ 600cp) Anastasia\'s mate A knight and rook or queen team up to trap the opposing king between the side of the board and a friendly piece. - Arabian mate - A knight and a rook team up to trap the opposing king on a corner of the board. + Arabian mate + A knight and a rook team up to trap the opposing king on a corner of the board. Attacking f2 or f7 An attack focusing on the f2 or f7 pawn, such as in the fried liver opening. Attraction @@ -16,18 +16,18 @@ Checkmate the king on the home rank, when it is trapped there by its own pieces. Bishop endgame An endgame with only bishops and pawns. - Boden\'s mate - Two attacking bishops on criss-crossing diagonals deliver mate to a king obstructed by friendly pieces. + Boden\'s mate + Two attacking bishops on criss-crossing diagonals deliver mate to a king obstructed by friendly pieces. Castling Bring the king to safety, and deploy the rook for attack. Capture the defender Removing a piece that is critical to defense of another piece, allowing the now undefended piece to be captured on a following move. Crushing Spot the opponent blunder to obtain a crushing advantage. (eval ≥ 600cp) - Double bishop mate - Two attacking bishops on adjacent diagonals deliver mate to a king obstructed by friendly pieces. - Dovetail mate - A queen delivers mate to an adjacent king, whose only two escape squares are obstructed by friendly pieces. + Double bishop mate + Two attacking bishops on adjacent diagonals deliver mate to a king obstructed by friendly pieces. + Dovetail mate + A queen delivers mate to an adjacent king, whose only two escape squares are obstructed by friendly pieces. Equality Come back from a losing position, and secure a draw or a balanced position. (eval ≤ 200cp) Kingside attack diff --git a/translation/dest/puzzleTheme/eu-ES.xml b/translation/dest/puzzleTheme/eu-ES.xml index 858cbbf1e1..6fc2c14d36 100644 --- a/translation/dest/puzzleTheme/eu-ES.xml +++ b/translation/dest/puzzleTheme/eu-ES.xml @@ -6,8 +6,8 @@ Abantaila osoa lortzen saiatu (200cp ≤ ebaluazioa ≤ 600cp) Anastasiaren matea Zaldun bat eta gaztelua eta damak aurkariaren erregea taularen bazter baten eta bere pieza baten artean harrapatzen dute. - Mate arabiarra - Zaldun eta gaztelu banak elkarrekin lan egiten dute aurkariaren erregea xake-taularen bazter baten harrapatzeko. + Mate arabiarra + Zaldun eta gaztelu banak elkarrekin lan egiten dute aurkariaren erregea xake-taularen bazter baten harrapatzeko. f2 edo f7 erasotu f2 edo f7ko peoia helburu duen erasoa. Erakarmena @@ -16,18 +16,18 @@ Bere piezekin trabatuta dagoenean erregeari bere errenkadan matea ematea. Alfilen bukaera Alfilak eta peoiak bakarrik dituen partida-bukaera. - Bodenen matea - Bi alfilek beren piezen artean trabatuta dagoen erregeari ematen dioten matea. + Bodenen matea + Bi alfilek beren piezen artean trabatuta dagoen erregeari ematen dioten matea. Endrokea Babestu erregea eta ekarri gaztelua erasora. Defendatzailea harrapatu Beste pieza bat defendatzeko funtsezkoa den pieza kentzea, hurrengo jokaldietan lehenengo pieza hori harrapatzeko. Zapalketa Akatsa aurkitu eta guztizko abantaila lortu. (ebaluazioa ≥ 600cp) - Bi alfilen matea - Bi alfilek beren piezen artean trabatuta dagoen erregeari ematen dioten matea. - Mirubuztanaren matea - Damak ematen duen matea erregearen ihes-laukiak bere piezekin trabatuta daudenean. + Bi alfilen matea + Bi alfilek beren piezen artean trabatuta dagoen erregeari ematen dioten matea. + Mirubuztanaren matea + Damak ematen duen matea erregearen ihes-laukiak bere piezekin trabatuta daudenean. Berdintasuna Partida galduta izatetik, berdinketa edo posizio berdintsua lortzera itzuli. (ebaluazioa ≤ 200cp) Erregearen aldeko erasoa diff --git a/translation/dest/puzzleTheme/fi-FI.xml b/translation/dest/puzzleTheme/fi-FI.xml index c8ba2af43a..a80285354f 100644 --- a/translation/dest/puzzleTheme/fi-FI.xml +++ b/translation/dest/puzzleTheme/fi-FI.xml @@ -4,6 +4,10 @@ Taktiikassa keskeistä on sotilas, joka korottuu tai uhkaa korottua. Etu Tartu tilaisuuteen hankkia ratkaiseva etu. (200cp ≤ eval ≤ 600cp) + Anastasian matti + Ratsun sekä tornin tai daamin yhteistyöllä vastustajan kuningas jää kiinni laudan reunan ja oman nappulan välissä. + Arabialainen matti + Ratsun ja tornin yhteistyöllä vastustajan kuningas jää kiinni laudan nurkassa. Hyökkäys f2:een tai f7:ään F2- tai f7-sotilaaseen kohdistuva hyökkäys, kuten esimerkiksi Preussilaisen pelin Fried Liver eli Fegatello-muunnelma. Houkutus @@ -12,12 +16,18 @@ Matita kuningas takarivillä, kun sen omat nappulat estävät sitä siirtymästä pois. Lähettiloppupeli Loppupeli, jossa on vain lähettejä ja sotilaita. + Bodenin matti + Kaksi ristiäviltä diagonaaleilta hyökkäävää lähettiä matittaa omien nappuloidensa estämän kuninkaan. Linnoitus Vie kuninkaasi turvaan ja tuo tornisi mukaan hyökkäykseen. Lyö puolustava nappula Lyö toisen nappulan suojelemiseen käytetty nappula, jotta voit seuraavilla siirroilla lyödä toisen nappulan, joka ei ole enää suojeltu. Murskaava etu Löydä vastustajan munaus ja hanki murskaava etu. (eval ≥ 600cp) + Kahden lähetin matti + Kaksi vierekkäisiltä diagonaaleilta hyökkäävää lähettiä matittaa omien nappuloidensa estämän kuninkaan. + Cozion matti + Daami matittaa vieressään olevan kuninkaan, jonka omat nappulat vievät siltä sen ainoat kaksi pakoruutua. Tasoitus Nouse häviöasemasta takaisin peliin ja saavuta tasapeli tai tasapainoinen asema. (eval ≤ 200cp) Hyökkäys kuningassivustalla @@ -41,6 +51,8 @@ Siirto, jolla siirrettävä nappula uhkaa samanaikaisesti kahta vastustajan nappulaa. Ilmainen nappula Taktiikka, jossa vastustajan nappulaa ei ole suojattu lainkaan tai ei riittävästi, ja jossa se on vapaasti lyötävissä. + Koukkumatti + Tornin, ratsun ja sotilaan yhteispelillä syntyvä matti, jossa vastustajan sotilas vie kuninkaaltaan yhden pakoruudun. Katko Siirrä nappulasi kahden vastustajan nappulan väliin niin, että yksi tai molemmat vastustajan nappuloista jäävät ilman suojaa, esimerkiksi ratsusi suojattuun ruutuun kahden tornin väliin. Välisiirto diff --git a/translation/dest/puzzleTheme/fo-FO.xml b/translation/dest/puzzleTheme/fo-FO.xml index 8f01d32d57..b5653605c1 100644 --- a/translation/dest/puzzleTheme/fo-FO.xml +++ b/translation/dest/puzzleTheme/fo-FO.xml @@ -4,6 +4,10 @@ Ein finna, ið umskapast ella hóttir við at umskapast, er lykilin til taktikkin. Fyrimunur Tak av møguleikanum at fáa avgerandi fyrimun. (200cp ≤ eval ≤ 600cp) + Mát Anastasiu + Riddari og rókur ella frúgv samstarva um at fanga mótstøðukongin millum síðuna á talvborðinum og eitt vinarligt sinnað fólk. + Arábiskt mát + Ein riddari og ein rókur samstarva um at fanga mótstøðukongin í einum av hornunum á talvborðinum. Álop á f2 ella f7 Eitt álop, ið savnar seg um f2 ella f7-finnuna, eins og í fegatello-álopinum (Fried Liver Attack). Atdráttur @@ -12,12 +16,18 @@ Set kongin skák og mát á aftasta rað, har egnu fólk hansara byrgja hann inni. Bispaendaspæl Endaspæl við bispum og finnum. + Bodensmát + Tveir bispar, ið leypa á á krossandi hornalinjum (diagonalum), seta kongin, ið er forðaður av sínum egna fólki, skák og mát. At leypa í borg Flyt kongin í tryggleika, og tak rókin í nýtslu, so hann fær lopið á. Tak fólkið, ið verjir At beina eitt fólk burtur, ið hevur týdning í verjuni av einum øðrum fólki. Hetta ger tað møguligt at taka fólkið, ið nú er óvart, í einum seinni leiki. At knúsa Finn bukkin hjá mótleikaranum til tess at ogna tær knúsandi fyrimun. (eval ≥ 600cp) + Tvífalt bispamát + Tveir bispar, ið leypa á á tveimum grannahornalinjum, seta kongin, ið er forðaður av sínum egna fólki, skák og mát. + Sýlt mát (dúgvuvelamát) + Ein frúgv stendur beint við mótstøðukongin og setir hann skák og mát, tí at kongsins egnu fólk forða konginum í at flýggja til einastu tveir puntarnar, ið eru tøkir. Javnstøða Kom afturíaftur úr eini tapandi støðu, og tryggja tær remis ella eina javna støðu. (eval ≤ 200cp) Álop kongamegin @@ -49,6 +59,10 @@ Endatalv við riddarum og finnum. Long uppgáva Tríggir leikir, so er vunnið. + Meistaratalv + Uppgávur úr talvum, ið telvarar við meistaraheitum hava telvað. + Meistari móti meistaratalvum + Uppgávur úr talvum millum tveir telvarar við meistaraheitum. Mát Vinn talvið við stíli. Mát í einum @@ -91,6 +105,8 @@ Ein hugsan, ið inniber, at eitt fólk við høgum virði, ið verður álopið, flytur burtur, soleiðis at eitt fólk við lægri virði kann verða tikið ella vera fyri álopi. Tað øvuta av eini binding. Kvalt mát Skák og mát, framt av einum riddara, har mátaði kongurin ikki er førur fyri at flyta, tí at hann er umgyrdur (ella kvaldur) av egnum fólki. + Superstórmeistaratalv + Uppgávur úr talvum, ið heimsins bestu telvarar hava telvað. Innibyrgt fólk Eitt fólk er ikki ført fyri at sleppa sær undan at verða tikið, tí tað hevur avmarkaðar leikmøguleikar. Undirumskapan diff --git a/translation/dest/puzzleTheme/hi-IN.xml b/translation/dest/puzzleTheme/hi-IN.xml index 6aef76cafe..a611d37f73 100644 --- a/translation/dest/puzzleTheme/hi-IN.xml +++ b/translation/dest/puzzleTheme/hi-IN.xml @@ -6,8 +6,8 @@ निर्णायक लाभ प्राप्त करने के लिए अपने अवसर को जब्त करें। (200cp al eval ≤ 600cp) अनास्तासिया के मात बोर्ड के किनारे और एक अनुकूल टुकड़े के बीच विरोधी राजा को फंसाने के लिए एक नाइट और रूक या रानी टीम। - अरेबियन मात - बोर्ड के एक कोने पर विरोधी राजा को फंसाने के लिए एक नाइट और एक रूक टीम। + अरेबियन मात + बोर्ड के एक कोने पर विरोधी राजा को फंसाने के लिए एक नाइट और एक रूक टीम। F2 या f7 पर हमला करना एक हमला f2 या f7 मोहरे पर ध्यान केंद्रित करता है, जैसे कि तले हुए लिवर को खोलना। आकर्षण @@ -16,18 +16,18 @@ होम पंक्ति पर राजा को मात दे, जब वह अपने टुकड़ों से वहां फंस गया हो। ऊँट का एंडगेम केवल ऊंट और प्यादे के साथ एक एंडगेम। - बोडेन का मात - क्राइस-क्रॉसिंग विकर्णों पर दो हमलावर बिशप मित्रवत टुकड़ों द्वारा बाधित एक राजा को चेकमेट वितरित करते हैं। + बोडेन का मात + क्राइस-क्रॉसिंग विकर्णों पर दो हमलावर बिशप मित्रवत टुकड़ों द्वारा बाधित एक राजा को चेकमेट वितरित करते हैं। कैसलिंग राजा को सुरक्षा के लिए लाएँ, और हमले के लिए हाथी तैनात करें। रक्षक को पकड़ना एक टुकड़े को निकालना जो दूसरे टुकड़े की रक्षा के लिए महत्वपूर्ण है, जिससे अब अपरिभाषित टुकड़ा को निम्नलिखित चाल पर कब्जा करने की अनुमति मिलती है। मुंहतोड़ एक कुचल लाभ प्राप्त करने के लिए प्रतिद्वंद्वी की बड़ी भूल को ढूंढे । (eval ≥ 600cp) - डबल बिशप मात - आसन्न विकर्णों पर दो हमलावर बिशप मित्रवत टुकड़ों द्वारा बाधित एक राजा को चेकमेट वितरित करते हैं। - डव्टेल मात - एक रानी एक समीपवर्ती राजा को चेकमेट वितरित करती है, जिसके केवल दो भागने वाले वर्ग मैत्रीपूर्ण टुकड़ों द्वारा बाधित होते हैं। + डबल बिशप मात + आसन्न विकर्णों पर दो हमलावर बिशप मित्रवत टुकड़ों द्वारा बाधित एक राजा को चेकमेट वितरित करते हैं। + डव्टेल मात + एक रानी एक समीपवर्ती राजा को चेकमेट वितरित करती है, जिसके केवल दो भागने वाले वर्ग मैत्रीपूर्ण टुकड़ों द्वारा बाधित होते हैं। समानता एक खोने की स्थिति से वापस आएँ, और एक ड्रॉ या संतुलित स्थिति को सुरक्षित करें। (eval ≤ 200cp) किंगसाइड का हमला diff --git a/translation/dest/puzzleTheme/it-IT.xml b/translation/dest/puzzleTheme/it-IT.xml index ca079f1d29..600eca970d 100644 --- a/translation/dest/puzzleTheme/it-IT.xml +++ b/translation/dest/puzzleTheme/it-IT.xml @@ -6,8 +6,8 @@ Cogli l\'occasione per guadagnare un vantaggio decisivo. (200cp ≤ valutazione ≤ 600cp) Matto di Anastasia Un cavallo e una torre o una donna si coordinano nell\'intrappolare il re avversario tra un suo pezzo e il bordo della scacchiera. - Matto arabo - Un cavallo e una torre si coordinano nell\'intrappolare il re avversario in un angolo della scacchiera. + Matto arabo + Un cavallo e una torre si coordinano nell\'intrappolare il re avversario in un angolo della scacchiera. Attacco su f2 o f7 Un attacco incentrato sul pedone f2 o f7, come nell\'attacco Fegatello. Adescamento @@ -16,18 +16,18 @@ Matto al re sulla traversa di partenza, dove è intrappolato dai suoi stessi pezzi. Finale d\'alfiere Un finale con soli alfieri e pedoni. - Matto di Boden - Due alfieri danno matto lungo diagonali perpendicolari ad un re ostruito dai suoi stessi pezzi. + Matto di Boden + Due alfieri danno matto lungo diagonali perpendicolari ad un re ostruito dai suoi stessi pezzi. Arrocco Porta il re al sicuro, e sviluppa la torre per attaccare. Cattura del difensore Rimozione di un pezzo essenziale per la difesa di un altro pezzo, che permette al pezzo ora indifeso di essere catturato con una mossa successiva. Posizione schiacciante Trova l\'errore grave del tuo avversario per ottenere un vantaggio schiacciante. (valutazione ≥ 600cp) - Matto dei due alfieri - Due alfieri danno matto lungo diagonali adiacenti ad un re ostruito dai suoi stessi pezzi. - Matto a coda di rondine - Una donna dà matto al re in una casa adiacente, mentre le due uniche case di fuga sono occupate da suoi pezzi. + Matto dei due alfieri + Due alfieri danno matto lungo diagonali adiacenti ad un re ostruito dai suoi stessi pezzi. + Matto a coda di rondine + Una donna dà matto al re in una casa adiacente, mentre le due uniche case di fuga sono occupate da suoi pezzi. Eguaglianza Recupera una posizione persa e assicurati la patta o una posizione equa. (valutazione ≥ 200cp) Attacco sul lato di re @@ -107,8 +107,8 @@ Un tema che consiste in un pezzo di grande valore che viene attaccato e che si sposta, permettendo ad un pezzo dietro di esso di essere catturato o attaccato. Il contrario di un\'inchiodatura. Matto affogato Uno scacco matto eseguito con un cavallo, in cui il re sotto scacco è incapace di spostarsi poiché circondato (\"affogato\") dai suoi stessi pezzi. - Partite di Super GM - Puzzle da partite giocate dai migliori giocatori del mondo. + Partite di Super-GM + Tattiche da partite giocate dai migliori giocatori del mondo. Pezzo intrappolato Un pezzo che non può evitare la cattura a causa delle sue mosse limitate. Sottopromozione diff --git a/translation/dest/puzzleTheme/ja-JP.xml b/translation/dest/puzzleTheme/ja-JP.xml index b5a8587d46..ec6efee3a0 100644 --- a/translation/dest/puzzleTheme/ja-JP.xml +++ b/translation/dest/puzzleTheme/ja-JP.xml @@ -6,8 +6,8 @@ 決定的な優位を得てください。(評価値は 200cp 以上 600cp 以下) アナスタシアのメイト 盤端と味方の駒にはさまれたキングを、ナイトとルーク(またはクイーン)でメイトする形。 - アラビアのメイト - 盤の隅にいるキングを、ナイトとルークでメイトする形。 + アラビアのメイト + 盤の隅にいるキングを、ナイトとルークでメイトする形。 f2/f7への攻撃 f2 か f7 のポーンを狙う攻撃(フライド・リバー・アタックなど)。 アトラクション(引き寄せ) @@ -16,18 +16,18 @@ 一番下のランクで、上を自分の駒に塞がれたキングをメイトする。 ビショップ・エンドゲーム ビショップとポーンだけの終盤。 - ボーデンのメイト - 味方の駒にじゃまされたキングを、2 個のビショップが交差した効き筋でメイトする形。 + ボーデンのメイト + 味方の駒にじゃまされたキングを、2 個のビショップが交差した効き筋でメイトする形。 キャスリング キングを安全にし、ルークを攻撃に活用する。 守り駒の除去 別の駒を守っている駒を消して、無防備になった駒を取る。 圧倒 相手の悪手をとがめて圧倒的な優位を築きます。(評価値は 600cp 以上) - ダブル・ビショップのメイト - 味方の駒にじゃまされたキングを、2 個のビショップが平行な効き筋でメイトする形。 - 燕尾のメイト - 斜め後ろを両方とも味方の駒に塞がれたキングを、クイーン1個でメイトする形。 + ダブル・ビショップのメイト + 味方の駒にじゃまされたキングを、2 個のビショップが平行な効き筋でメイトする形。 + 燕尾のメイト + 斜め後ろを両方とも味方の駒に塞がれたキングを、クイーン1個でメイトする形。 互角 劣勢の局面から、ドローを確保するか互角の局面に戻します。(評価値は 200cp 以下) キングサイド攻撃 diff --git a/translation/dest/puzzleTheme/nb-NO.xml b/translation/dest/puzzleTheme/nb-NO.xml index 4df8d29d8c..83cd819056 100644 --- a/translation/dest/puzzleTheme/nb-NO.xml +++ b/translation/dest/puzzleTheme/nb-NO.xml @@ -6,8 +6,8 @@ Grip sjansen til en avgjørende fordel. (200cp ≤ eval ≤ 600cp) Anastasias matt Tårn eller dronning slår seg sammen med springer for å fange motstanderens konge mellom kanten av brettet og egen brikke. - Arabisk matt - Springer og tårn slår seg sammen for å fange motstanderens konge i hjørnet av brettet. + Arabisk matt + Springer og tårn slår seg sammen for å fange motstanderens konge i hjørnet av brettet. Angrep mot f2 eller f7 Et angrep med fokus på bonden på f2 eller f7, slik som i fegatello-angrepet. Magnetoffer @@ -16,18 +16,18 @@ Sett kongen sjakk matt på sisteraden, når den er fanget der av egne brikker. Løpersluttspill Et sluttspill med kun løpere og bønder. - Bodens matt - To angripende løpere på kryssende diagonaler setter matt, da kongen er blokkert av egne brikker. + Bodens matt + To angripende løpere på kryssende diagonaler setter matt, da kongen er blokkert av egne brikker. Rokade Få kongen i sikkerhet og gjør tårnet klart for angrep. Slå forsvareren Ta en brikke som gir avgjørende dekning for en annen brikke, slik at den nå udekkede brikken kan slås senere. Knusende Oppdag motstanderens bukk og oppnå en knusende fordel. (eval ≥ 600cp) - Dobbeltløpermatt - To angripende løpere på tilstøtende diagonaler setter matt, da kongen er blokkert av egne brikker. - Halematt - Dronning setter tilstøtende konge matt, da de to eneste fluktfeltene er blokkert av egne brikker. + Dobbeltløpermatt + To angripende løpere på tilstøtende diagonaler setter matt, da kongen er blokkert av egne brikker. + Halematt + Dronning setter tilstøtende konge matt, da de to eneste fluktfeltene er blokkert av egne brikker. Utligning Vend en tapt stilling til remis eller lik stilling. (eval ≤ 200cp) Angrep på kongefløyen diff --git a/translation/dest/puzzleTheme/nl-NL.xml b/translation/dest/puzzleTheme/nl-NL.xml index f99dfa514a..90656d7328 100644 --- a/translation/dest/puzzleTheme/nl-NL.xml +++ b/translation/dest/puzzleTheme/nl-NL.xml @@ -17,14 +17,15 @@ Lopereindspel Een eindspel met alleen lopers en pionnen. Mat van Boden - Twee lopers op kruisende diagonalen geven schaakmat aan een koning die wordt belemmerd door stukken van de eigen kleur. - Rokade + Twee lopers op kruisende diagonalen zetten een koning mat die wordt belemmerd door de eigen stukken. + Rokeren Breng de koning in veiligheid en zet de toren in voor een aanval. De verdediger slaan Een stuk slaan dat essentieel is voor de verdediging van een ander stuk, waardoor vervolgens het nu onverdedigde stuk met een volgende zet kan worden geslagen. Verpletteren Zie de blunder van de tegenstander om een verpletterend voordeel te verkrijgen. (eval ≥ 600cp) Mat met twee lopers + Twee lopers op belendende diagonalen zetten een koning mat die wordt belemmerd door de eigen stukken. Evenwicht Terugkomen uit een verloren stelling en een remise veiligstellen of een gelijkwaardige stelling bereiken. (eval ≤ 200cp) Koningsaanval diff --git a/translation/dest/puzzleTheme/nn-NO.xml b/translation/dest/puzzleTheme/nn-NO.xml index 7c3bd2ad9e..ffd7f0ac52 100644 --- a/translation/dest/puzzleTheme/nn-NO.xml +++ b/translation/dest/puzzleTheme/nn-NO.xml @@ -5,35 +5,35 @@ Fordel Grip sjansen til å få eit avgjerande fortrinn. (200cp ≤ eval ≤ 600cp) Anastasia-matt - Eit tårn eller ei dronning samarbeidar med ein springar om å fange motspelarens konge mellom brettkanten og ei av sine eigne brikker. - Arabisk matt - Springar og tårn samarbeider om å sette kongen matt inne i hjørnet av brettet. + Eit tårn eller ei dronning samarbeidar med ein springar om å fange kongen mellom brettkanten og ei av motspelarens eigne brikker. + Arabisk matt + Springar og tårn samarbeider om å setja kongen matt inne i hjørnet av brettet. Gå til åtak på f2 eller f7 Eit åtak som konsentrerar seg om bøndene på f2 eller f7, som til dømes i prøyssisk opning, fegatellovarianten (\"Fried Liver Attack\"). Magnet - Eit byte eller offer (magnetoffer) som lokkar eller tvingar motspelaren til å flytte ei brikke til eit felt som gjer det mogleg å setje i verk ein taktisk plan. + Avbyte eller offer (magnetoffer) som lokkar eller tvingar motspelaren til å flytte ei brikke til eit felt som gjer det mogleg å setje i verk ein taktisk plan. Matt på åttanderaden - Sjakkmatt på åttanderaden, ved at kongen til motspelaren blir innestengd av sine eigne brikker. + Sjakkmatt på åttanderaden, ved at kongen er stengd inne av eigne brikker. Løparsluttspel - Eit sluttspel med berre løparar og bønder. - Bodens matt - To angripande løparar på kryssande diagonalar set matt, hjelpt av at kongen er blokkert av eigne brikker. + Sluttspel med berre løparar og bønder. + Bodens matt + To angripande løparar på kryssande diagonalar set matt, hjelpt av at kongen er blokkert av eigne brikker. Rokade Få kongen din i tryggleik og gjer tårnet klårt for åtak. Slå ut forsvararen Slå ut ei brikke som er kritisk som dekning for ei anna brikke, slik at brikka som no står udekka kan fjernast i eit seinare trekk. Avgjerande fordel Finn motspelarens feil for å få ein avgjerande fordel. (eval ≥ 600 centibønder) - Dobbeltløparmatt - To angripande løparar på tilstøytande diagonalar mattar, hjelpt av at kongen er blokkert av eigne brikker. - Stjertmatt - Ei dronning plassert heilt inntil motstandarkongen set matt fordi dei to einaste fluktfelta til kongen er blokkert av eigne brikker. + Dobbeltløparmatt + To angripande løparar på tilstøytande diagonalar mattar, hjelpt av at kongen er blokkert av eigne brikker. + Stjertmatt + Ei dronning plassert heilt inntil motstandarkongen set matt fordi dei to einaste fluktfelta til kongen er blokkert av eigne brikker. Utjamning Vend ei tapt stilling til remis eller utjamna stilling. (eval ≤ 200 centibønder) Åtak på kongefløyen - Eit åtak på kongen som motspelaren har rokert. + Eit åtak på konge som er rokert til kongefløya (kort rokade). Klarering - Eit trekk, gjerne med tempo, som opnar eit felt, ei line eller ein diagonal for ein påfølgjande taktisk ide. + Eit trekk, gjerne med tempo, som opnar eit felt, ei line eller ein diagonal for ein påfølgjande taktisk idé. Forsvarstrekk Presist trekk eller trekkserie som er naudsynt for å unngå å tape materiell eller andre fordelar. Avleiing @@ -43,70 +43,70 @@ Dobbeltsjakk Sjakk med to brikker på same tid, som eit resultat av eit avdekkaråtak der både brikka som vert flytta og den avdekka brikka set kongen til motspelaren i sjakk. Sluttspel - Ein taktikk i den siste fasen av partiet. - Ein taktikk som inneber at en-passant-regelen blir tatt i bruk, dvs at ein bonde kan slå ut ein motspelar-bonde som har passert den ved å starte med å flytte to felt. + Taktikk i den siste fasen av partiet. + Taktikk som i tråd med \"en passant\"-reglane inneber at ein bonde kan slå ut ein motspelar-bonde som har passert den etter å ha starta ved å flytte fram to felt. Eksponert konge - Ein taktikk som impliserar ein konge med få forsvararar rundt seg, og som ofte leier til sjakk matt. + Taktikk mot ein konge med få forsvarar rundt seg, og som ofte leier til sjakk matt. Gaffel Eit trekk der brikka som vart flytta går til åtak på meir enn ein motstandarbrikke på same tid. Hengande brikke - Ein taktikk som inneber at ein udekka eller utilstrekkeleg dekka motstandarbrikke med fordel kan slås ut. + Taktikk som inneber at ein udekka eller utilstrekkeleg dekka motstandarbrikke med fordel kan slås. Krokmatt Sjakkmatt med tårn, springar og bonde pluss ei motstandarbrikke som tek opp av eit felta kongen elles kunne flykta til. Hindring Flytte ei brikke mellom to motstandarbrikker for å oppnå at ei eller begge vert udekka. Til dømes ein springar til eit dekka felt mellom to tårn. Mellomtrekk - Eit trekk som kjem før det venta trekket og som motspelaren må svare på. I engelsk sjakklitteratur vert det tyske omgrepet \"Zwischenzug\" nytta. + Eit trekk som kjem før det venta trekket og som utgjer eit trugsmål motspelaren straks må svare på. Springarsluttspel - Eit sluttspel med berre springarar og bønder. + Sluttspel med berre springarar og bønder. Lang taktikkoppgåve Vinst i tre trekk. Matt Vinn partiet med stil. Matt i eitt trekk - Sett matt i eitt trekk. + Set matt i eitt trekk. Matt i to trekk - Sett matt i to trekk. + Set matt i to trekk. Matt i tre trekk - Sett matt i tre trekk. + Set matt i tre trekk. Matt i fire trekk - Sett matt i fire trekk. + Set matt i fire trekk. Matt i fem eller fleire trekk Finn ein lang trekksekvens som leier fram til matt. Mellomspel - Ein taktikk i den andre fasen av partiet. + Taktikk i den andre fasen av partiet. Eitt-trekks oppgåve Ei taktikkoppgåve på berre eitt trekk. Opning - Ein taktikk i den første fasen av partiet. + Taktikk i den første fasen av partiet. Bondesluttspel - Eit sluttspel med berre bønder. + Sluttspel med berre bønder. Binding - Ein taktikk der ei brikke ikkje kan flyttast utan at det fører til eit trugsmål mot ei brikke av høgare verdi. Ei absolutt binding inneber at det ikkje er lov å flytte brikka fordi det vil føre til at kongen blir sett i sjakk. + Taktikk der ei brikke ikkje kan flyttast utan at det fører til eit trugsmål mot ei brikke av høgare verdi. Ei absolutt binding inneber at det ikkje er lov å flytte brikka fordi det vil føre til at kongen blir sett i sjakk. Forvandling Ein bonde som blir forvandla eller trugar med å bli forvandla er den taktiske nøkkelen. Dronningsluttspel - Eit sluttspel med berre dronningar og bønder. + Sluttspel med berre dronningar og bønder. Dronning- og tårnsluttspel - Eit sluttspel med berre dronningar, tårn og bønder. + Sluttspel med berre dronningar, tårn og bønder. Dronningfløyåtak - Eit åtak på kongen som motspelaren har rokert til dronningfløya. + Eit åtak på konge som er rokert til dronningfløya (lang rokade). Stille trekk - Eit trekk som ikkje gjev ein sjakk eller eit utslag, men som førebur eit uavvendeleg trugsmål i eit seinare trekk. + Trekk som ikkje gjev sjakk eller slår ei brikke, men som førebur eit uavvendeleg trugsmål i eit seinare trekk. Tårnsluttspel - Eit sluttspel med berre tårn og bønder. + Sluttspel med berre tårn og bønder. Offer - Ein taktikk der ei brikke blir ofra på kort sikt til fordel for seinare vinst eller ei tvungen trekkrekke. + Taktikk der ei brikke blir ofra på kort sikt med tanke på seinare vinst eller ei tvungen trekkrekke. Kort taktikkoppgåve Vinst i to trekk. - Spidder + Spidding Ein manøver der ei høgverdig brikke kjem under åtak og må flytte slik at ei brikke av lågare verde som står bak kan slås ut eller verte truga. Spidding kan utførast med løpar, dronning eller tårn. Spiddar vert rekna som motsatsen til binding. Kvelarmatt Ein sjakkmatt ved hjelp av ein springar der motspelarens konge er stengd inne (eller kjøvd) av eigne brikker. Superstormeister-parti Oppgåver frå parti spela av verdas beste sjakkspelarar. Fanga brikke - Ei brikke som ikkje kjem unna på grunn av mangel på utvegar. + Ei brikke som ikkje kjem unna grunna mangel på utvegar. Underforvandling Bondeforvandling til springar, løpar eller tårn. Svært lang taktikkoppgåve @@ -115,6 +115,6 @@ Ein situasjon der ei brikke går til åtak gjennom ei eller fleire andre brikker, gjerne brikker som høyrer til motspelaren. Trekktvang Ei stilling der alle moglege trekk skadar stillinga. - Helsesam blanding + Blanda drops Litt av kvart. Du veit ikkje kva du blir møtt med, så du må vera førebudd på det meste. Nett som i verkelege parti. diff --git a/translation/dest/puzzleTheme/pl-PL.xml b/translation/dest/puzzleTheme/pl-PL.xml index ef8ff605e1..7c17e421e9 100644 --- a/translation/dest/puzzleTheme/pl-PL.xml +++ b/translation/dest/puzzleTheme/pl-PL.xml @@ -6,8 +6,8 @@ Wykorzystaj szansę na uzyskanie decydującej przewagi. (200cp ≤ eval ≤ 600cp) Mat Anastazji Skoczek, wieża lub hetman łączą siły, aby złapać przeciwnego króla w pułapkę pomiędzy bandą szachownicy, a jego inną figurą. - Mat arabski - Skoczek i wieża współpracują razem, aby zaciągnąć króla w róg szachownicy. + Mat arabski + Skoczek i wieża współpracują razem, aby zaciągnąć króla w róg szachownicy. Atak na f2 lub f7 Atak koncentrujący się na pionach f2 lub f7, na przykład taki jak w szewskim macie. Przyciąganie @@ -16,18 +16,18 @@ Zamatuj króla uwięzionego w ostatnim rzędzie przez własne bierki. Końcówka gońcowa Gra końcowa wyłącznie z gońcami i pionami. - Mat Bodena - Dwa atakujące gońce na przeciwnych przekątnych matują króla ograniczonego przez własne bierki. + Mat Bodena + Dwa atakujące gońce na przeciwnych przekątnych matują króla ograniczonego przez własne bierki. Roszada Zabezpiecz swojego króla i wprowadź do gry wieżę. Zabicie obrońcy Usunięcie obrońcy który jest kluczowy do obrony innej figury, pozwalając na zbicie niebronionej figury w następnym ruchu. Zmiażdżenie Zauważ błąd przeciwnika, aby uzyskać miażdżącą przewagę (ocena pozycji: powyżej 600cp) - Mat dwoma gońcami - Dwa atakujące gońce na sąsiednich przekątnych matują króla ograniczonego przez własne bierki. - Jaskółczy ogon - Hetman matuje sąsiedniego króla, którego jedyne dwa pola ucieczki są zablokowane przez własne bierki. + Mat dwoma gońcami + Dwa atakujące gońce na sąsiednich przekątnych matują króla ograniczonego przez własne bierki. + Jaskółczy ogon + Hetman matuje sąsiedniego króla, którego jedyne dwa pola ucieczki są zablokowane przez własne bierki. Równowaga Odzyskaj remis bądź równowagę wychodząc z przegrywającej pozycji. (ocena pozycji: poniżej 200cp) Atak skrzydłem królewskim diff --git a/translation/dest/puzzleTheme/pt-BR.xml b/translation/dest/puzzleTheme/pt-BR.xml index d652ade6f9..bf61e496a9 100644 --- a/translation/dest/puzzleTheme/pt-BR.xml +++ b/translation/dest/puzzleTheme/pt-BR.xml @@ -6,8 +6,8 @@ Aproveite a sua chance de ter uma vantagem decisiva. (200cp ≤ eval ≤ 600cp) Mate Anastasia Um cavalo e uma torre se unem para prender o rei do oponente entre a lateral do tabuleiro e uma peça amiga. - Mate árabe - Um cavalo e uma torre se unem para prender o rei inimigo em um canto do tabuleiro. + Mate árabe + Um cavalo e uma torre se unem para prender o rei inimigo em um canto do tabuleiro. Atacando f2 ou f7 Um ataque focado no peão de f2 e no peão de f7, como na abertura frango frito. Atração @@ -16,18 +16,18 @@ Dê o xeque-mate no rei na última fileira, quando ele estiver bloqueado pelas próprias peças. Finais de bispo Final com somente bispos e peões. - Mate de Boden - Dois bispos atacantes em diagonais cruzadas dão um mate em um rei obstruído por peças amigas. + Mate de Boden + Dois bispos atacantes em diagonais cruzadas dão um mate em um rei obstruído por peças amigas. Roque Traga o seu rei para a segurança, e prepare sua torre para o ataque. Capture o defensor Remover uma peça que seja importante na defesa de outra, permitindo que agora a peça indefesa seja capturada na jogada seguinte. Punindo Perceba a capivarada do oponente para obter uma vantagem decisiva. (vantagem ≥ 600cp) - Mate de dois bispos - Dois bispos atacantes em diagonais adjacentes dão um mate em um rei obstruído por peças amigas. - Mate da cauda de andorinha - Uma rainha dá um mate em um rei adjacente, cujos únicos dois quadrados de fuga estão obstruídos por peças amigas. + Mate de dois bispos + Dois bispos atacantes em diagonais adjacentes dão um mate em um rei obstruído por peças amigas. + Mate da cauda de andorinha + Uma rainha dá um mate em um rei adjacente, cujos únicos dois quadrados de fuga estão obstruídos por peças amigas. Igualdade Saia de uma posição perdida, e assegure um empate ou uma posição equilibrada. (aval ≤ 200cp) Ataque na ala do Rei diff --git a/translation/dest/puzzleTheme/ru-RU.xml b/translation/dest/puzzleTheme/ru-RU.xml index e9d45d1cca..5f6773141a 100644 --- a/translation/dest/puzzleTheme/ru-RU.xml +++ b/translation/dest/puzzleTheme/ru-RU.xml @@ -6,8 +6,8 @@ Используйте свой шанс получить решающее преимущество. (от 200 до 600 сантипешек) Мат Анастасии Конь и ладья (или ферзь) матуют короля противника между краем доски и другой фигурой противника. - Арабский мат - Конь и ладья матуют вражеского короля в углу доски. + Арабский мат + Конь и ладья матуют вражеского короля в углу доски. Атака f2 или f7 Атака, направленная на пешки f2 или f7, например, в дебюте жареной печени. Завлечение @@ -16,8 +16,8 @@ Матование короля на его горизонтали, когда он заблокирован своими же фигурами. Слоновый эндшпиль Эндшпиль, где присутствуют лишь слоны и пешки. - Мат Бодена - Два слона с пересекающихся диагоналей ставят мат вражескому королю, окружённому собственными фигурами. + Мат Бодена + Два слона с пересекающихся диагоналей ставят мат вражескому королю, окружённому собственными фигурами. Рокировка Поместите короля в надёжное место и выведите в бой ладью. Уничтожение защитника diff --git a/translation/dest/puzzleTheme/sr-SP.xml b/translation/dest/puzzleTheme/sr-SP.xml index 5a81cbf6f0..89d41b9213 100644 --- a/translation/dest/puzzleTheme/sr-SP.xml +++ b/translation/dest/puzzleTheme/sr-SP.xml @@ -4,6 +4,6 @@ Пешак који се промовише или прети да се промовише је кључни мотив тактике. Предност Искористите шансу да стекнете одлучујућу предност. (200cp ≤ eval ≤ 600cp) - Арапски мат + Арапски мат Напад на f2 или на f7 diff --git a/translation/dest/puzzleTheme/sv-SE.xml b/translation/dest/puzzleTheme/sv-SE.xml index e067f3526e..6d74294542 100644 --- a/translation/dest/puzzleTheme/sv-SE.xml +++ b/translation/dest/puzzleTheme/sv-SE.xml @@ -5,30 +5,30 @@ Fördel Ta chansen att få en avgörande fördel. (200cp ≤ eval ≤ 600cp) Anastasias matt - En springare och ett torn samarbetar för att fånga motståndarkungen i ett hörn av brädet. + En springare och ett torn samarbetar för att fånga motståndarkungen i ett hörn av brädet. Attackera f2 eller f7 En attack som fokuserar på f2 eller f7 bonden, som i stekt leveröppning. Attraktion Ett byte eller offer som inbjuder eller tvingar motståndarens pjäs till en ruta som ger möjlighet till fler taktiska finesser. Plaskmatt - Schackmattar kungen på första raden, när den är instängd av sina egna pjäser. + Schackmatta kungen på första raden, när den är instängd av sina egna pjäser. Löparslutspel Ett slutspel med bara löpare och bönder. Rockad För din kung i säkerhet, och använd ditt torn till att angripa. Ta försvararen - Ta en pjäs som försvarar av en annan pjäs, så att du kan ta den nu oförsvarade pjäsen i nästa drag. - Krossa - Upptäck motståndare blunder för att få en förkrossande fördel. (eval ≥ 600cp) - En dam levererar matt till en närliggande kung, vars enda två flyktrutor blockeras av egna pjäser. + Ta en pjäs som försvarar en annan pjäs, så att du kan ta den nu oförsvarade pjäsen i nästa drag. + Krossande + Upptäck motståndares blunder för att få en förkrossande fördel. (eval ≥ 600cp) + En dam levererar matt till en närliggande kung, vars enda två flyktrutor blockeras av egna pjäser. Utjämning Kom tillbaka från en förlorad position och säkra en remi eller en utjämnad position. (eval ≤ 200cp) Kungsflygelattack En attack mot motståndarens kung, efter att de rockerat på kungsflygeln. Rensning Ett drag, ofta med tempo, som rensar en ruta, linje eller diagonal för en uppföljande taktisk idé. - Defensiva drag - Ett exakt drag eller sekvens av drag som är nödvändiga behövs för att undvika att förlora material eller annan fördel. + Defensivt drag + Ett exakt drag eller sekvens av drag som är nödvändiga för att undvika att förlora material eller annan fördel. Avledande drag Ett drag som avleder en motståndarpjäs från en annan uppgift, såsom att bevaka en viktig ruta. Kallas Ibland också \"överbelastning\". Avdragsattack diff --git a/translation/dest/puzzleTheme/vi-VN.xml b/translation/dest/puzzleTheme/vi-VN.xml index a5600c1d68..ffe28236f9 100644 --- a/translation/dest/puzzleTheme/vi-VN.xml +++ b/translation/dest/puzzleTheme/vi-VN.xml @@ -6,6 +6,8 @@ Sử dụng cơ hội của bạn để chiếm lấy lợi thế quyết định. (200cp ≤ đánh giá ≤ 600cp) Chiếu hết kiểu Anastasia Một quân mã phối hợp cùng quân xe hoặc quân hậu để bẫy quân vua đối phương vào thế kẹp giữa cạnh bàn cờ và một quân khác. + Chiếu hết kiểu Arabian + Một Mã và một Xe hợp sức để bẫy vua đối phương trên một góc của bàn cờ. Tấn công f2 hoặc f7 Một đòn tấn công nhằm vào quân tốt f2 hay f7, ví dụ như trong khai cuộc lá gan rán. Thu hút @@ -14,12 +16,18 @@ Chiếu hết vua trên hàng ngang cuối, nơi nó bị mắc kẹt bởi chính quân của nó. Cờ tàn tượng Một thế cờ tàn chỉ có tượng và tốt. + Chiếu hết kiểu Boden + Hai Tượng tấn công trên các đường chéo chéo nhau chiếu hết một vị vua bị cản trở bởi các quân cờ giao hữu. Nhập thành Chuyển quân vua đến vị trí an toàn, và triển khai quân xe để tấn công. Ăn quân phòng thủ Loại bỏ một quân cực kỳ quan trọng đối với việc bảo vệ một quân cờ khác, khiến cho quân cờ bây giờ không được bảo vệ có thể bị ăn vào một nước sau đó. Áp đảo Phát hiện sai lầm nghiêm trọng của đối phương để chiếm được lợi thế áp đảo. (đánh giá ≥ 600cp) + Chiếu hết bằng đôi Tượng + Hai quân Tượng tấn công trên các đường chéo liền kề chiếu hết một vị vua bị cản trở bởi quân cờ. + Chiếu hết kiểu Dovetail + Một Hậu chiếu hết một vị vua kế cận, người có hai ô thoát duy nhất bị cản trở bởi các quân cờ. Cân bằng Đảo ngược một thế cờ thua, và đảm bảo một thế trận hòa hoặc cân bằng. (đánh giá ≤ 200cp) Tấn công cánh vua diff --git a/translation/dest/search/es-ES.xml b/translation/dest/search/es-ES.xml index fac3e786dc..0e8b39810b 100644 --- a/translation/dest/search/es-ES.xml +++ b/translation/dest/search/es-ES.xml @@ -17,7 +17,7 @@ Si el oponente era humano o un ordenador Nivel I.A Origen - Número de turnos + Cantidad de turnos Resultado Color del ganador Fecha diff --git a/translation/dest/search/vi-VN.xml b/translation/dest/search/vi-VN.xml index 845857dd95..663913222f 100644 --- a/translation/dest/search/vi-VN.xml +++ b/translation/dest/search/vi-VN.xml @@ -1,7 +1,7 @@ Tìm kiếm - Tìm kiến nâng cao + Tìm kiếm nâng cao Tìm kiếm trong %s ván cờ diff --git a/translation/dest/settings/hy-AM.xml b/translation/dest/settings/hy-AM.xml index fd8e779ae2..d40b7afb4b 100644 --- a/translation/dest/settings/hy-AM.xml +++ b/translation/dest/settings/hy-AM.xml @@ -2,6 +2,6 @@ Կարգավորումներ Փակել հաշիվը - Ես փոխել իմ միտքը, մի փակեք իմ հաշիվը + Ես մտափոխվել եմ, մի փակեք իմ հաշիվը Այս հաշիվը փակված է: diff --git a/translation/dest/site/af-ZA.xml b/translation/dest/site/af-ZA.xml index 7b5167d6d8..9717830d7b 100644 --- a/translation/dest/site/af-ZA.xml +++ b/translation/dest/site/af-ZA.xml @@ -9,7 +9,7 @@ Jou beurt %1$s vlak %2$s Vlak - Krag + Krag Wissel klets Wissel klank Klets @@ -384,7 +384,6 @@ rekenaar analise, kletskamer en deelbare URL te kry. Meer Lid sedert Laas ingeteken %s - Daag uit vir \'n spel Speler Lys Grafiek @@ -738,7 +737,6 @@ Jou verslag sal vinniger geantwoord word as dit in Engels geskryf is. Oepsie Pasmaak Kennisgewings - Uitdagings Gradering: %s %s sekonde om die eerste skuif te speel @@ -785,12 +783,6 @@ Jou verslag sal vinniger geantwoord word as dit in Engels geskryf is. Opening Middelspel Eindspel - Registreer asseblief om uitdagings te stuur. - Jy kan nie %s uitdaag nie. - %s aanvaar nie uitdagings nie. - Jou %1$s gradering is te ver van %2$s af. - Kan nie uitdaag nie aangesien jy \'n voorlopige %s gradering het. - %s aanvaar net uitdagings van vriende af. Voorwaardelike voorafskuiwe Voeg huidige variasie by Speel \'n variasie om voorwaardige voorafskuiwe te skep @@ -844,7 +836,4 @@ Jou verslag sal vinniger geantwoord word as dit in Engels geskryf is. U kan nog nie in die forums plaas nie. Speel \'n paar speletjies! Skryf in Beëindig inskrywing - Uitdaging geweier - Uitdaging aanvaar! - Uitdaging gekanselleer. diff --git a/translation/dest/site/an-ES.xml b/translation/dest/site/an-ES.xml index 301f1cddf3..85f972e86e 100644 --- a/translation/dest/site/an-ES.xml +++ b/translation/dest/site/an-ES.xml @@ -9,7 +9,7 @@ Lo tuyo redolín %1$s libel %2$s Libel - Fuerza + Fuerza Amostrar/Amagar chat Activar/Desactivar sons Chat @@ -383,7 +383,6 @@ Más Miembro dende Zaguera visita %s - Desafiar a una partida Chugador Lista Grafico @@ -734,7 +733,6 @@ Error Personalizada Notificacions - Retos Puntuación: %s %s segundo pa fer lo primer movimiento @@ -781,12 +779,6 @@ Obridura Meyo chuego Final - Rechistra-te pa desafiar a atros. - No puetz desafiar a %s. - %s no accepta retos. - La tuya puntuación de %1$s ye masiau luen d\'a de %2$s. - No puetz ninviar retos perque la tuya puntuación de %s ye provisional. - %s nomás accepta retos d\'os suyos amigos. Premovimientos condicionals Anyadir la variant actual Chuga una variant pa crear movimientos condicionals diff --git a/translation/dest/site/ar-SA.xml b/translation/dest/site/ar-SA.xml index 8a98c49597..01cd9cc13c 100644 --- a/translation/dest/site/ar-SA.xml +++ b/translation/dest/site/ar-SA.xml @@ -490,7 +490,6 @@ المزيد مسجل منذ آخر دخول %s - تحدى لاعب قائمة رسم بياني @@ -869,7 +868,6 @@ خطأ مخصص إشعارات - التحديات التقييم: %s %s ثانية متبقية لاتمام النقلة الأولى @@ -924,12 +922,6 @@ افتتاحية جزء منتصف اللعبة جزء نهاية اللعبة - الرجاء التسجيل لإرسال التحديات. - لا يمكنك تحدي %s. - %s لا يقبل التحديات. - تقييمك %1$s لا يؤهلك لمنافسة %2$s. - لا يمكن اتمام التحدي بسبب التقييم %s المؤقت. - %s يقبل التحديات من الأصدقاء فقط. تحريكات شرطية إضافة تنويعة حالية إلعب تفريع لإنشاء نقلة مسبقة مشروطة diff --git a/translation/dest/site/az-AZ.xml b/translation/dest/site/az-AZ.xml index 0c2deca88c..d04a291144 100644 --- a/translation/dest/site/az-AZ.xml +++ b/translation/dest/site/az-AZ.xml @@ -9,7 +9,7 @@ Sizin növbənizdir %1$s səviyyə %2$s Səviyyə - Güc + Güc Söhbəti aç/bağla Səsi aç/bağla Mesaj göndər @@ -383,7 +383,6 @@ Daha çox Üzvlük tarixi Aktiv %s - Oyuna çağırış Oyunçu List Qrafik @@ -736,7 +735,6 @@ Xəta Özəl Bildirişlər - Çağırışlar Reytinq: %s ilk gedişi etmək üçün son %s saniyə @@ -783,12 +781,6 @@ Debüt Mittelşpil Endşpil - Çağırış göndərmək üçün lütfən qeydiyyatdan keçin. - %s istifadəçisinə çağırış edə bilməzsiz. - %s çağırışları qəbul etmir. - Sizin %1$s reytinqiniz %2$s istifadəçisindən çox uzaqdır. - Müvəqqəti %s reytinqi səbəbilə çağırış edə bilməzsiz. - %s yalnız dostlarından çağırış qəbul edir. Şərtli öngediş Cari variasiyanı əlavə et Şərtli öngedişlər etmək üçün bir variasiya oynayın @@ -842,7 +834,4 @@ Hələ forumlarda yazı göndərə bilməzsiniz. Biraz oyun oynayın! Abunə ol Abunəlikdən çıxın - Çağırış rədd edildi - Çağırış qəbul edildi! - Çağırışdan imtina edildi. diff --git a/translation/dest/site/be-BY.xml b/translation/dest/site/be-BY.xml index 27f9f0ecdb..6b7e6b4567 100644 --- a/translation/dest/site/be-BY.xml +++ b/translation/dest/site/be-BY.xml @@ -436,7 +436,6 @@ Яшчэ Далучыўся Апошні раз бачылі %s - Выклікаць на гульню Гулец Спіс Дыяграма @@ -799,7 +798,6 @@ Памылка Свая гульня Апавяшчэнні - Выклікі Рэйтынг: %s %s секунда на першы ход @@ -850,12 +848,6 @@ Дэбют Мітальшпіль Эндшпіль - Зарэгіструйцеся, каб выклікаць супернікаў на гульню. - Вы не можаце выклікаць на гульню %s. - %s не прымае выклікі. - Ваш рэйтынг у рэжыме «%1$s» значна адрозніваецца ад %2$s. - Немагчыма: рэйтынг %s не пацверджаны. - %s прымае выклікі толькі ад сяброў. Хады на апярэджанне пры ўмове Дадаць бягучы варыянт Згуляйце варыянт, каб стварыць умову для хода на апярэджанне diff --git a/translation/dest/site/bg-BG.xml b/translation/dest/site/bg-BG.xml index eedb1759ba..9a401a0ba7 100644 --- a/translation/dest/site/bg-BG.xml +++ b/translation/dest/site/bg-BG.xml @@ -371,7 +371,6 @@ Още Член от Последно влизане %s - Предизвикай на игра Играч Списък Графика @@ -720,7 +719,6 @@ Грешка По избор Известия - Предизвикателства Рейтинг: %s %s секунда за първия ход @@ -767,12 +765,6 @@ Дебют Мителшпил Ендшпил - Моля регистрирайте се, за да отправяте предизвикателства. - Не можете да предизвикате %s. - %s не приема предизвикателства. - Разликата между вашият рейтинг %1$s и %2$s е твърде голяма. - Не можете да отправяте предизвикателтсва с временен рейтинг %s. - %s приема предизвикателства само от приятели. Предварителен ход под условие Добавяне на настоящата линия Изиграйте вариация за да създадете предварителни ходове под условие diff --git a/translation/dest/site/bn-BD.xml b/translation/dest/site/bn-BD.xml index c58f22912b..ccdd82e521 100644 --- a/translation/dest/site/bn-BD.xml +++ b/translation/dest/site/bn-BD.xml @@ -393,7 +393,6 @@ আরও সদস্য রয়েছেন শেষ আগমন %s - খেলার জন্য চ্যালেঞ্জ ছুঁড়ে দিন খেলোয়াড় তালিকা গ্রাফ @@ -742,7 +741,6 @@ ক্রুটি স্বনির্ধারিত বিজ্ঞাপন - চ্যালেঞ্জ অনুপাত: %s %s সেকেন্ডে খেলার প্রথম চাল @@ -789,12 +787,6 @@ উদ্বোধন মাধ্যমখেলা খেলাশেষ - চ্যালেঞ্জ করার জন্য দয়া করে নিবন্ধন করুন. - আপনি চ্যালেঞ্জ করতে পারবেন না%s. - %s চ্যালেঞ্জ গ্রহন করবে না. - আপনার %1$s অনুপাত হয় অনেক বেশি দূরে থেকে %2$s. - কিছু সময় চ্যালেঞ্জ করতে পারবেন না %s অনুপাত. - %s শুধু বন্ধুদের থেকে চ্যালেঞ্জ গ্রহন. শর্তাধীন পুনারয়চাল বর্তমান ভিন্ন করুন শর্তাধীন পুনারয় চাল তৈরির জন্য একটি ভিন্ন খেলুন diff --git a/translation/dest/site/br-FR.xml b/translation/dest/site/br-FR.xml index 68e87e8ff7..f1cacf1f17 100644 --- a/translation/dest/site/br-FR.xml +++ b/translation/dest/site/br-FR.xml @@ -455,7 +455,6 @@ Muioc\'h Ezel abaoe an/ar Oberiant %s - Daeañ ar c\'hoarier-mañ C\'hoarier Roll Krommenn @@ -827,7 +826,6 @@ Fazi Personelaet Kemennoù - Daeoù Renk: %s %s eilenn evit fiñval ho pezh kentañ c\'hoazh @@ -880,12 +878,6 @@ Digoradur Kreiz ar bartienn Fin ar c\'hrogad - Kevreit evit daeañ unan bennak mar plij. - Ne c\'hallit ket daeañ %s. - %s n\'he/en deus ket c\'hant da vezañ daeet. - Re vras an diforc\'h etre ho renkadur %1$s hag hini %2$s. - Ne c\'hallit ket daeañ abalamour d\'ho renkadur %s a zo da c\'hortoz. - Ne vez ket degemeret daeoù nemet digant mignoned gant %s. Raktaolioù rekiz Ouzhpennañ an eilstumm o ren C\'hoariit ur variant evit krouiñ raktaolioù rekiz diff --git a/translation/dest/site/bs-BA.xml b/translation/dest/site/bs-BA.xml index 2547cf9086..d0a51af71f 100644 --- a/translation/dest/site/bs-BA.xml +++ b/translation/dest/site/bs-BA.xml @@ -9,6 +9,7 @@ Vi ste na potezu %1$s nivo %2$s Nivo + Jačina Uključite/isključite dopisivanje Uključite/isključite zvuk Dopisivanje @@ -410,7 +411,6 @@ računarsku analizu, mogućnost dopisivanja i link za slanje drugima. Više Član od Zadnja aktivnost %s - Poziv na partiju Igrač Lista Graf @@ -770,7 +770,6 @@ računarsku analizu, mogućnost dopisivanja i link za slanje drugima. Greška Prilagođeno Obavijesti - Izazovi Rejting: %s %s sekunda da odigrate prvi potez @@ -819,12 +818,6 @@ računarsku analizu, mogućnost dopisivanja i link za slanje drugima. Otvaranje Središnjica Završnica - Za slanje izazova morate se registrovati. - Ne možete izazvati %s. - %s ne prihvata izazove. - Prevelika je razlika između Vašeg %1$s rejtinga i rejtinga %2$s. - Nemoguće izazvati zbog privremenog %s rejtinga. - %s prihvata samo izazove od prijatelja. Uslovni potezi unaprijed Dodajte trenutnu varijaciju Odigrajte varijaciju da stvorite uslovni potez unaprijed @@ -879,7 +872,4 @@ računarsku analizu, mogućnost dopisivanja i link za slanje drugima. Još ne možete objavljivati na forumima. Odigrajte nekoliko partija! Pretplatite se Odjavite pretplatu - Izazov odbijen - Izazov prihvaćen! - Izazov otkazan. diff --git a/translation/dest/site/ca-ES.xml b/translation/dest/site/ca-ES.xml index d149c2dfe3..a384c0b856 100644 --- a/translation/dest/site/ca-ES.xml +++ b/translation/dest/site/ca-ES.xml @@ -382,7 +382,6 @@ Més Membre des del Darrer accés %s - Desafia per a jugar Jugador Llista Gràfica @@ -738,7 +737,6 @@ en %3$s Error Personalitzat Avisos - Reptes Classificació: %s %s segon per jugar el primer moviment @@ -785,12 +783,6 @@ en %3$s Obertura Joc mitjà Final - Si us plau, registra\'t per enviar reptes. - No pots desafiar a %s. - %s no accepta reptes. - La teva qualificació de %1$s és massa llunyana de la de %2$s. - No es pot desafiar a causa de la qualificació provisional de %s. - %s només acepta reptes dels amics. Premoviments condicionals Afegir variació actual Jugar una variació per crear premoviments condicionals diff --git a/translation/dest/site/cs-CZ.xml b/translation/dest/site/cs-CZ.xml index 609949d0bb..4e09cfa39c 100644 --- a/translation/dest/site/cs-CZ.xml +++ b/translation/dest/site/cs-CZ.xml @@ -436,7 +436,6 @@ Více Členem od Poslední přihlášení %s - Vyzvat k partii Hráč Seznam Graf @@ -801,7 +800,6 @@ Chyba Vlastní Oznámení - Výzvy Rating: %s %s sekunda na první tah @@ -852,12 +850,6 @@ Zahájení Střední hra Koncovka - Pro poslání výzvy se musíte zaregistrovat. - Nemůžete vyzvat %s. - %s nepřijímá výzvy. - Vaše %1$s elo je příliš daleko od %2$s. - Nelze vyzvat kvůli prozatimnímu %s elu. - %s přijímá výzvy pouze od přátel. Podmíněné předtahy Přidat současnou variantu Hrajte variantu k vytvoření podmíněných předtahů diff --git a/translation/dest/site/cv-CU.xml b/translation/dest/site/cv-CU.xml index 47bcd55ebb..2d94a4c9f1 100644 --- a/translation/dest/site/cv-CU.xml +++ b/translation/dest/site/cv-CU.xml @@ -232,7 +232,6 @@ Тата Регистратсиленнӗ кун: %s кӗрсе тухнӑ - Вӑйа чӗнтер Вӑйӑҫӑ Тапӑл Графӗк @@ -479,7 +478,6 @@ Шахмат никӗсӗсем Хӑнӑхтаруҫӑ Йӑнӑш - Чӗнтерӳ 1-мӗш хускану тумашкӑн %s ҫек йулчӗ diff --git a/translation/dest/site/cy-GB.xml b/translation/dest/site/cy-GB.xml index ce61cf990c..c902cc564a 100644 --- a/translation/dest/site/cy-GB.xml +++ b/translation/dest/site/cy-GB.xml @@ -9,7 +9,7 @@ Dy dro di %1$s safon %2$s Safon - Cryfder + Cryfder Toglo sgwrs Toglo sain Sgwrsio @@ -275,7 +275,6 @@ Mwy Cofrestrodd Wedi mewngofnodi yn ddiweddarach %s - Herio i chwarae Chwaraewr Rhestr Graff @@ -590,7 +589,6 @@ Gwall Dewis amgenach Hysbysiadau - Heriau Graddfa %s Ymarfer gyda cyfrifiadur Dewis da arall oedd %s @@ -628,12 +626,6 @@ Agoriad Y gem ganol Diweddglo - Cofrestrwch cyn danfon her. - Ni fedrwch chi herio %s. - Nid yw %s yn derbyn heriau. - Mae eich graddfa %1$s yn rhy bell o un %2$s. - Ni fedrwch herio gan bod eich graddfa %s yn un dros dro. - Mae %s dim ond yn derbyn heriau gan ffrindiau. Chwarae %s Sori :( Pam? diff --git a/translation/dest/site/da-DK.xml b/translation/dest/site/da-DK.xml index a2a2598ef2..35a758fc23 100644 --- a/translation/dest/site/da-DK.xml +++ b/translation/dest/site/da-DK.xml @@ -9,7 +9,7 @@ Din tur %1$s niveau %2$s Niveau - Styrke + Styrke Skjul/Vis chat slå lyd til/fra Chat @@ -383,7 +383,6 @@ Mere Medlem siden Sidst logget ind %s - Send en udfordring Spiller Liste Graf @@ -736,7 +735,6 @@ Fejl Tilpasset Meddelelser - Udfordringer Rating: %s %s sekund til at lave det første træk @@ -783,12 +781,6 @@ Åbningsspil Midtspil Slutspil - Opret konto for at sende udfordringer. - Du kan ikke udfordre %s. - %s accepterer ikke udfordringer. - Din %1$s rating er for langt fra %2$s. - Kan ikke udfordre på grund af midlertidig %s rating. - %s accepterer kun udfordringer fra venner. Betingede forhåndstræk Tilføj nuværende variation Spil en variation for at lave betingede forhåndstræk @@ -842,7 +834,4 @@ Du kan endnu ikke lave oplag i foraene. Spil nogle partier! Abonnér Ophæv abonnement - Udfordring afvist - Udfordring accepteret! - Udfordring annulleret. diff --git a/translation/dest/site/de-DE.xml b/translation/dest/site/de-DE.xml index 2583741bde..d563f9f347 100644 --- a/translation/dest/site/de-DE.xml +++ b/translation/dest/site/de-DE.xml @@ -9,7 +9,7 @@ Du bist am Zug %1$s Stufe %2$s Stufe - Stärke + Stärke Chat ein-/ausblenden Ton ein-/ausschalten Chat @@ -328,7 +328,7 @@ Du bist nicht in Team %s Zurück zur Partie Kostenloser Online-Schach-Server. Spiele jetzt auf einer übersichtlichen Benutzeroberfläche Schach! Keine Registrierung und keine Plugins erforderlich, komplett ohne Werbung. Spiele gegen den Computer, Freunde oder zufällige Gegner! - %1$s trat der Gruppe %2$s bei + %1$s trat der Gruppe %2$s bei %1$s hat das Team %2$s gegründet %s hat einen Stream gestartet Durchschnittswertung @@ -383,7 +383,6 @@ Mehr Mitglied seit Zuletzt aktiv %s - Zu einer Partie herausfordern Spieler Liste Graph @@ -736,7 +735,6 @@ Fehler Andere Spielzeit Benachrichtigungen - Herausforderungen Wertung: %s %s Sekunde, um den ersten Zug zu machen @@ -783,12 +781,6 @@ Eröffnung Mittelspiel Endspiel - Bitte registriere dich, um Herausforderungen zu senden. - Du kannst %s nicht herausfordern. - %s akzeptiert keine Herausforderungen. - Deine %1$s Wertung ist zu weit von %2$s entfernt. - Herausforderung wegen provisorischer %s Wertungszahl nicht möglich. - %s akzeptiert Herausforderungen nur von Freunden. Bedingte Vorauszüge Aktuelle Variante hinzufügen Spiele eine Variante, um bedingte Vorauszüge hinzuzufügen @@ -842,7 +834,4 @@ Du kannst noch nichts in den Foren schreiben. Spiel ein paar Partien! Abonnieren Abonnement beenden - Herausforderung abgelehnt - Herausforderung angenommen! - Herausforderung abgebrochen. diff --git a/translation/dest/site/el-GR.xml b/translation/dest/site/el-GR.xml index f1b7029d98..67f8ee8126 100644 --- a/translation/dest/site/el-GR.xml +++ b/translation/dest/site/el-GR.xml @@ -9,7 +9,7 @@ Η σειρά σας %1$s επιπέδου %2$s Επίπεδο - Ισχύς + Ισχύς Εναλλαγή προβολής της συνομιλίας Εναλλαγή ήχου Συνομιλία @@ -38,7 +38,7 @@ Ο αντίπαλός σας έφυγε από το παιχνίδι. Διεκδίκηση νίκης σε %s δευτερόλεπτο. Ο αντίπαλος έφυγε από το παιχνίδι. Διεκδίκηση νίκης σε %s δευτερόλεπτα. - Ο αντίπαλος σας έφυγε από το παιχνίδι. Μπορείτε να ισχυρισθείτε νίκη, ισοπαλία, ή να περιμένετε. + Ο αντίπαλός σας έφυγε από το παιχνίδι. Μπορείτε να ισχυρισθείτε νίκη, ισοπαλία, ή να περιμένετε. Αναγκάστε τον αντίπαλό σας να παραιτηθεί Ισχυριστείτε νίκη Δηλώστε ισοπαλία @@ -283,10 +283,10 @@ Ανάκληση κίνησης Προσφέρετε ανάκληση της προηγούμενης κίνησης Προσφορά ανάκλησης κίνησης εστάλη - Προσφορά ανάκλησης κίνησης μη αποδεκτή + Αρνήθηκε η προσφορά ανάκλησης κίνησης Προσφορά ακύρωσης κίνησης αποδεκτή Προσφορά ακύρωσης κίνησης ακυρώθηκε - Ο αντίπαλος σας πρότεινε ακύρωση της τελευταίας κίνησης + Ο αντίπαλός σας πρότεινε ακύρωση της τελευταίας κίνησης Προσθέστε σελιδοδείκτη για αυτό το παιχνίδι Πρωτάθλημα Πρωταθλήματα @@ -328,7 +328,7 @@ Δεν είστε στην ομάδα %s Επιστρέψτε στο παιχνίδι Δωρεάν διαδικτυακό παιχνίδι Σκακιού. Παίξτε Σκάκι τώρα σε καθαρό γραφικό περιβάλλον. Χωρίς εγγραφές, χωρίς διαφημίσεις, χωρίς πρόσθετα. Παίξτε Σκάκι με τον υπολογιστή, με φίλους ή με τυχαίους αντιπάλους. - Ο/Η %1$s έγινε μέλος της ομάδα %2$s + Ο/Η %1$s έγινε μέλος της ομάδα %2$s Ο %1$s δημιούργησε την ομάδα %2$s %s ξεκίνησε να μεταδίδει Μέσος όρος βαθμολογίας @@ -384,7 +384,6 @@ Περισσότερα Μέλος από τις Τελευταία είσοδος %s - Προκαλέστε σε παιχνίδι Παίκτης Κατάλογος Διάγραμμα @@ -737,7 +736,6 @@ Σφάλμα Προσαρμογή Ειδοποιήσεις - Προκλήσεις Βαθμολογία: %s %s δευτερόλεπτο για την πρώτη κίνηση @@ -784,12 +782,6 @@ Άνοιγμα Μέση φάση παιχνιδιού Φινάλε - Παρακαλώ εγγραφείτε για να στείλετε προκλήσεις. - Δεν μπορείτε να προκαλέσετε %s. - %s δεν δέχεται προκλήσεις. - Η %1$s βαθμολογία σας απέχει πολύ από τον %2$s. - Δεν είναι δυνατή η πρόκληση λόγω της προσωρινής %s βαθμολογίας. - %s δέχεται προκλήσεις μόνο από φίλους. Υποθετικές προκινήσεις Προσθέστε τρέχουσα παραλλαγή Παίξτε μια παραλλαγή για να δημιουργήσετε υποθετικές προκινήσεις @@ -843,7 +835,4 @@ Δεν μπορείτε να δημοσιεύσετε σε αυτό το φόρουμ ακόμα. Παίξτε μερικά παιχνίδια! Εγγραφείτε Απεγγραφείτε - Η πρόκληση δεν έγινε δεκτή - Η πρόκληση έγινε δεκτή! - Η πρόκληση ακυρώθηκε. diff --git a/translation/dest/site/en-US.xml b/translation/dest/site/en-US.xml index 765db2da66..34993b151b 100644 --- a/translation/dest/site/en-US.xml +++ b/translation/dest/site/en-US.xml @@ -9,7 +9,7 @@ Your turn %1$s level %2$s Level - Strength + Strength Toggle the chat Toggle sound Chat @@ -384,7 +384,6 @@ computer analysis, game chat and shareable URL. More Member since Active %s - Challenge to a game Player List Graph @@ -737,7 +736,6 @@ computer analysis, game chat and shareable URL. Error Custom Notifications - Challenges Rating: %s %s second to play the first move @@ -784,12 +782,6 @@ computer analysis, game chat and shareable URL. Opening Middlegame Endgame - Please register to send challenges. - You cannot challenge %s. - %s does not accept challenges. - Your %1$s rating is too far from %2$s. - Cannot challenge due to provisional %s rating. - %s only accepts challenges from friends. Conditional premoves Add current variation Play a variation to create conditional premoves @@ -843,7 +835,4 @@ computer analysis, game chat and shareable URL. You can\'t post in the forums yet. Play some games! Subscribe Unsubscribe - Challenge declined - Challenge accepted! - Challenge canceled diff --git a/translation/dest/site/eo-UY.xml b/translation/dest/site/eo-UY.xml index 524e2a7d3a..3c3465723b 100644 --- a/translation/dest/site/eo-UY.xml +++ b/translation/dest/site/eo-UY.xml @@ -9,7 +9,7 @@ Via vico %1$s nivelo %2$s Nivelo - Forto + Forto Baskuligi la babilejon (Mal)ŝalti sonon Babilejo @@ -383,7 +383,6 @@ Pli Membro ekde Aktiva %s - Defii al nova ludo Ludanto Listo Grafo @@ -736,7 +735,6 @@ Eraro Propra Sciigoj - Defioj Rango: %s %s sekundo por ludi la unuan movon @@ -783,12 +781,6 @@ Malfermo Mezaĵo Finaĵo - Bonvolu registri por sendi defiojn. - Vi ne povas defii %s. - %s ne akceptas defiojn. - Via %1$s rango estas tro for de %2$s. - Ne povas defii pro duma %s rango. - %s nur akceptas defiojn de amikoj. Kondiĉaj antaŭmovoj Aldoni aktualan variaĵon Ludi variaĵo por krei kondiĉajn antaŭmovojn @@ -842,7 +834,4 @@ Vi jam ne rajtas afiŝi en la forumoj. Ludu iujn ludojn! Aboni Malaboni - Defio malkreskis - Defio akceptita! - Defio nuligita. diff --git a/translation/dest/site/es-ES.xml b/translation/dest/site/es-ES.xml index 62e70850b4..2098e43a5b 100644 --- a/translation/dest/site/es-ES.xml +++ b/translation/dest/site/es-ES.xml @@ -9,7 +9,7 @@ Tu turno %1$s nivel %2$s Nivel - Fuerza + Fuerza Mostrar/Ocultar chat Activar/Desactivar sonido Chat @@ -383,7 +383,6 @@ Más Miembro desde Última visita %s - Desafiar a una partida Jugador Lista Gráfico @@ -736,7 +735,6 @@ Error Personalizado Notificaciones - Desafíos Puntuación: %s %s segundo para hacer el primer movimiento @@ -783,12 +781,6 @@ Apertura Medio juego Final - Regístrate para desafiar a otros. - No puedes desafiar a %s. - %s no acepta desafíos. - Tu puntuación de %1$s está demasiado lejos de la de %2$s. - No puedes enviar desafíos porque tu puntuación de %s es provisional. - %s sólo acepta desafíos de sus amigos. Movimientos condicionales Añadir la variante actual Juega una variante para crear movimientos condicionales @@ -842,7 +834,4 @@ Aún no puedes publicar en los foros. ¡Juega algunas partidas! Suscribirse Cancelar la suscripción - Desafío rechazado - ¡Desafío aceptado! - Desafío cancelado. diff --git a/translation/dest/site/et-EE.xml b/translation/dest/site/et-EE.xml index 976a84a3ab..60328d1312 100644 --- a/translation/dest/site/et-EE.xml +++ b/translation/dest/site/et-EE.xml @@ -9,7 +9,7 @@ Sinu käik %1$s tase %2$s Tase - Tugevus + Tugevus Luba vestlust Luba helid Saada sõnum @@ -328,7 +328,7 @@ Sa ei ole %s tiimi liige Tagasi mängu Tasuta online male. Mängi malet nüüd puhtas kasutajaliideses. Pole registreerimist, pole reklaami, pole pluginaid vaja. Mängi malet arvuti, sõprade või juhusliku vastasega. - %1$s ühines tiimiga %2$s + %1$s ühines tiimiga %2$s %1$s tegi tiimi %2$s %s alustas otseülekannet Keskmine Elo @@ -384,7 +384,6 @@ arvutianalüüsi, mängu jututoa ning jagatava URL-i. Rohkem Liige alates Viimane sisenemine %s - Väljakutse mängule Mängija Nimekiri Graafik @@ -737,7 +736,6 @@ arvutianalüüsi, mängu jututoa ning jagatava URL-i. Viga Muu Teated - Väljakutsed Reiting: %s %s sekund, et teha esimene käik @@ -784,12 +782,6 @@ arvutianalüüsi, mängu jututoa ning jagatava URL-i. Avang Keskmäng Lõppmäng - Palun registreerige, et väljakutseid saata. - Te ei saa väljakutset esitada mängijale %s. - Mängija %s ei aktsepteeri väljakutseid. - Sinu %1$s reiting on liiga suure vahega võrreldes mängijaga %2$s. - Ei saa väljakutset esitada ajutise %s reitingu tõttu. - %s aktsepteerib väljakutseid ainult oma sõpradelt. Tingimuslikud eelkäigud Lisa praegune varient Tingimuslike eelkäikude loomiseks mängi variatsioon @@ -843,7 +835,4 @@ arvutianalüüsi, mängu jututoa ning jagatava URL-i. Sa ei saa veel foorumisse postitada. Mängi enne paar mängu! Telli Eemalda - Väljakutse tagasi lükatud - Väljakutse vastu võetud! - Väljakutse tühistatud. diff --git a/translation/dest/site/eu-ES.xml b/translation/dest/site/eu-ES.xml index 034cb11d10..af76011bcc 100644 --- a/translation/dest/site/eu-ES.xml +++ b/translation/dest/site/eu-ES.xml @@ -9,7 +9,7 @@ Zure txanda %1$s, %2$s. maila Maila - Indarra + Indarra Txata agertu Soinua Txata @@ -383,7 +383,6 @@ Gehiago Noiztik kidea: Azken aldiz online: %s - Partida baterako erronka egin Jokalaria Zerrenda Grafikoa @@ -736,7 +735,6 @@ Errorea Pertsonalizatua Jakinarazpenak - Erronkak Sailkapena: %s Segundo %s lehenengo jokaldia egiteko @@ -783,12 +781,6 @@ Irekiera Erdi-jokoa Finala - Eman izena erronkak bidaltzeko. - Ezin diozu %s erabiltzaileri erronka egin. - %s erabiltzaileak ez du erronkarik onartzen. - Zure %1$s puntuazioa urrunegi dago %2$s-tik. - Ezin duzu erronkarik egin behin-behineko %s puntuazioa duzulako. - %s erabiltzaileak bere lagunen erronkak onartzen ditu bakarrik. Baldintzadun aurrejokaldiak Uneko aldaera gehitu Aldaera bat jokatu baldintzadun aurre-jokaldiak sortzeko @@ -842,7 +834,4 @@ Ezin duzu foroetan idatzi. Jokatu partida batzuk! Harpidetu Harpidetza kendu - Erronka baztertuta - Erronka onartuta! - Erronka bertan behera utzita. diff --git a/translation/dest/site/fa-IR.xml b/translation/dest/site/fa-IR.xml index 0e03c31421..d7be86a4e5 100644 --- a/translation/dest/site/fa-IR.xml +++ b/translation/dest/site/fa-IR.xml @@ -9,7 +9,7 @@ نوبت شماست %1$s سطح %2$s سطح - قدرت + قدرت گپ روشن/خاموش صدا روشن/خاموش گپ @@ -379,7 +379,6 @@ بیشتر عضویت از تاریخ آخرین ورود %s - دعوت به بازی بازیکن لیست نمودار @@ -732,7 +731,6 @@ خطا دلخواه گزارش - دعوت به مبارزه ریتینگ. %s %s ثانیه برای شروع اولین حرکت @@ -779,12 +777,6 @@ گشایش وسط بازی آخر بازی - برای ارسال درخواست بازی باید وارد حساب کاربری شوید. - شما نمی توانید به %s درخواست بازی بدهید. - %s درخواست بازی را نمی پذیرد. - امتیاز %1$s شما فاصله زیادی با %2$s دارد؛بنابراین نمی توانید در خواست بازی بدهید. - به علت امتیاز %s غیر قطعی،امکان ارسال درخواست بازی وجود ندارد. - %s فقط درخواست بازی دوستان را می پذیرد. پیش حرکت های شرطی اضافه کردن این نوع حرکات یک نوع حرکات را بازی کنید تا پیش حرکت های شرطی را بسازید diff --git a/translation/dest/site/fi-FI.xml b/translation/dest/site/fi-FI.xml index ace05527e7..e5a9d36edd 100644 --- a/translation/dest/site/fi-FI.xml +++ b/translation/dest/site/fi-FI.xml @@ -9,7 +9,7 @@ Sinun vuorosi %1$s taso %2$s Taso - Vahvuus + Vahvuus Keskustelu päälle / pois Ääni päälle / pois Keskustelu @@ -383,7 +383,6 @@ Lisää Liittynyt Nähty viimeksi %s - Haasta peliin Pelaaja Lista Kaavio @@ -736,7 +735,6 @@ Virhe Mukautettu Ilmoitukset - Haasteet Vahvuusluku: %s %s sekuntia aikaa pelata ensimmäinen siirto @@ -783,12 +781,6 @@ Avausvaihe Keskipeli Loppupeli - Rekisteröidy niin voit lähettää haasteita. - Et voi haastaa pelaajaa %s. - %s ei ota haasteita vastaan. - %1$s-vahvuuslukusi on liian kaukana pelaajan %2$s vahvuusluvusta. - Et voi haastaa, koska %s-vahvuuslukusi on tilapäinen. - %s ottaa vastaan haasteita vain kavereiltaan. Ehdolliset esisiirrot Lisää nykyinen muunnelma Luo ehdollisia esisiirtoja pelaamalla muunnelma @@ -842,7 +834,4 @@ Et voi vielä lähettää viestejä foorumeihin. Pelaa ensin muutama peli! Tilaa Peruuta tilaus - Haasteesta kieltäydyttiin - Haaste hyväksytty! - Haaste peruutettu. diff --git a/translation/dest/site/fo-FO.xml b/translation/dest/site/fo-FO.xml index 2f93d67985..1e38a208ae 100644 --- a/translation/dest/site/fo-FO.xml +++ b/translation/dest/site/fo-FO.xml @@ -9,7 +9,7 @@ Tú eigur leik %1$s stig %2$s Stig - Styrki + Styrki Goym/Vís kjatt Slá ljóð til/frá Kjatta @@ -383,7 +383,6 @@ Meira Limur síðani Virkin %s - Bjóða av at telva Telvari Listi Strikumynd @@ -736,7 +735,6 @@ Feilur Tillagað Fráboðanir - Avbjóðingar Styrkital: %s %s sekund at flyta fyrsta leik @@ -783,12 +781,6 @@ Byrjanartalv Miðtalv Endatalv - Skráset teg vinaliga at senda avbjóðingar. - Tú kanst ikki bjóða %s av. - %s tekur ikki av avbjóðingum. - Títt %1$s styrkital er ov langt frá %2$s. - Fær ikki bjóðað av vegna fyribils %s styrkital. - %s tekur bert við avbjóðingum frá vinum. Treytaðir undanleikir Skoyt núverandi brigdi upp í Telva eitt brigdi til tess at skapa treytaðar undanleikir @@ -842,7 +834,4 @@ Tú kanst ikki seta uppsløg upp á torgunum enn. Telva nøkur talv! Melda til Melda teg úr - Avbjóðing avvíst - Avbjóðing góðtikin! - Avbjóðing avlýst. diff --git a/translation/dest/site/fr-FR.xml b/translation/dest/site/fr-FR.xml index 42abf2e660..577fd93887 100644 --- a/translation/dest/site/fr-FR.xml +++ b/translation/dest/site/fr-FR.xml @@ -9,7 +9,7 @@ À votre tour %1$s niveau %2$s Niveau - Niveau + Niveau Activer/désactiver la discussion Activer/désactiver le son Discussion @@ -383,7 +383,6 @@ Plus Membre depuis Actif %s - Défier ce joueur Joueur Liste Graphique @@ -736,7 +735,6 @@ Erreur Personnalisé Notifications - Défis Classement : %s %s seconde pour jouer le premier coup @@ -783,12 +781,6 @@ Ouverture Milieu de partie Fin de partie - Veuillez vous enregistrer pour envoyer des défis. - Vous ne pouvez pas défier %s. - %s n’accepte pas les défis. - Votre classement de %1$s est trop différent de %2$s. - Défier est impossible à cause du classement %s provisoire. - %s n’accepte que les défis de ses amis. Précoups conditionnels Ajouter la variante en cours Jouer une variante pour créer des précoups conditionnels @@ -842,7 +834,4 @@ Vous ne pouvez pas encore poster dans les forums. Jouez quelques parties ! Suivre Ne plus suivre - Défi refusé - Défi accepté! - Défi annulé diff --git a/translation/dest/site/fy-NL.xml b/translation/dest/site/fy-NL.xml index 1b3b52958c..ae1d78cdc1 100644 --- a/translation/dest/site/fy-NL.xml +++ b/translation/dest/site/fy-NL.xml @@ -315,7 +315,6 @@ kompjûteranalyze, partijpetear en dielbere URL te krijen. Mear Lid sûnt %s Foar it lêst sjoen - Utdaagje foar in potsje Spiler List Grafyk @@ -521,7 +520,6 @@ kompjûteranalyze, partijpetear en dielbere URL te krijen. Fout Oanpast Meldingen - Utdagingen Noch in kear dwaan Wêrom? diff --git a/translation/dest/site/ga-IE.xml b/translation/dest/site/ga-IE.xml index 286c3ce9ec..c58b9b1e79 100644 --- a/translation/dest/site/ga-IE.xml +++ b/translation/dest/site/ga-IE.xml @@ -9,7 +9,7 @@ Do shealsa %1$s leibhéal %2$s Leibhéal - Caighdeán imeartha + Caighdeán imeartha Scoránú comhrá Scoránú fuaime Comhrá @@ -341,7 +341,6 @@ Níos mó Ball ó Gníomhach %s - Seol dúshláin chun imirt Imreoir Liosta Graf @@ -568,7 +567,6 @@ FEN neamhbhailí Earráid Fógraí - Dushláin Rátáil: %s Cleachtaigh leis an ríomhaire An ríomhaire ag machnamh ... @@ -585,7 +583,6 @@ Oscailt Lár an chluiche Cor deiridh - Ní ghlacann %s le dúshláin ach amháin ó chairde. Imir %s Tá brón orainn :( Bhí orainn thú a chur ar fionraí ar feadh tréimhse. @@ -604,7 +601,4 @@ Tábhachtach sna CCana Foireann %1$s - Níor glacadh leis an dúshlán - Glacadh leis an dúshlán! - Dúshlán curtha ar ceal. diff --git a/translation/dest/site/gd-GB.xml b/translation/dest/site/gd-GB.xml index 8f914438c4..bbd4fd9beb 100644 --- a/translation/dest/site/gd-GB.xml +++ b/translation/dest/site/gd-GB.xml @@ -182,7 +182,6 @@ Barrachd Ball o chionn An logadh a-steach mu dheireadh %s - Thoir dùbhlan cluiche dha Cluicheadair Liosta Graf diff --git a/translation/dest/site/gl-ES.xml b/translation/dest/site/gl-ES.xml index bdbc0d27cb..451cd286ff 100644 --- a/translation/dest/site/gl-ES.xml +++ b/translation/dest/site/gl-ES.xml @@ -383,7 +383,6 @@ unha análise por ordenador, un chat de xogo e unha URL para compartir. Máis Membro dende Última conexión %s - Retar a unha partida Xogador Lista Gráfica @@ -734,7 +733,6 @@ unha análise por ordenador, un chat de xogo e unha URL para compartir. Erro Á medida Notificacións - Desafíos Puntuación: %s %s segundo para facer o primeiro movemento @@ -781,12 +779,6 @@ unha análise por ordenador, un chat de xogo e unha URL para compartir. Abertura Medio xogo Final - Por favor, rexístrese para enviar desafíos. - Non podes desafiar a %s. - %s non acepta desafíos. - A túa puntuación de %1$s está demasiado lonxe da de %2$s. - Non pode desafiar debido ao rating provisorio de %s. - %s só acepta desafíos de amigos. Premovementos condicionais Engadir variante actual Xogar unha variante para crear premovementos condicionais diff --git a/translation/dest/site/gu-IN.xml b/translation/dest/site/gu-IN.xml index d169e2d543..127752c261 100644 --- a/translation/dest/site/gu-IN.xml +++ b/translation/dest/site/gu-IN.xml @@ -101,7 +101,5 @@ વાસ્તવિક સમય માં CPL નિયમ દ્વારા શરૂઆત - તમે %sને પડકાર કરી શકતા નથી. - %s પડકારોને સ્વીકારતા નથી. %s ચાલો diff --git a/translation/dest/site/he-IL.xml b/translation/dest/site/he-IL.xml index f824fd130e..8e9d6e6ed1 100644 --- a/translation/dest/site/he-IL.xml +++ b/translation/dest/site/he-IL.xml @@ -436,7 +436,6 @@ עוד רשום מ נכנס לאחרונה %s - הזמן למשחק שחקן רשימה גרף @@ -802,7 +801,6 @@ שגיאה התאמה אישית התראות - הזמנות למשחק דירוג: %s %s שניה לשחק את המסע הראשון @@ -853,12 +851,6 @@ פתיחה מציעה סיום - הירשם על מנת לשלוח אתגרים. - לא ניתן לאתגר את %s. - %s לא מקבל אתגרים. - דירוג שלך %1$s רחוק מדי מ-%2$s. - אינו יכול לבקש משחק חוזר כי דירוג %s שלו עדיין זמני. - %s רק מחבר בין מנויים הרשומים כחברים. מסעים מותנים מראש תוסיף וריאציה הנוכחית צור מהלכים מותנים מראש מתוך וריאנט diff --git a/translation/dest/site/hi-IN.xml b/translation/dest/site/hi-IN.xml index d69fb2564f..3cd131394d 100644 --- a/translation/dest/site/hi-IN.xml +++ b/translation/dest/site/hi-IN.xml @@ -9,7 +9,7 @@ आपकी चाल %1$s स्तर %2$s वाला स्तर - ताक़त + ताक़त चैट को टोग्ल करें ध्वनि को टोग्ल करें बातचीत @@ -383,7 +383,6 @@ अधिक सदस्य बनने की तारीख %s पहले सक्रिय - चुनौती दें खिलाड़ी सूची लेखाचित्र @@ -739,7 +738,6 @@ त्रुटि कस्टम सूचनाएँ - चुनौतियाँ रेटिंग: %s %s सेकंड का समय पहला चाल के लिए @@ -786,12 +784,6 @@ ओपनिंग मिडलगेम एंडगेम - इनको चुनौती देने के लिए पंजीकरण करना चाहिए । - %s ने खेलने का चुनौती बंद किया है । - %s खेलने का चुनौती को स्वीकार नहीं करते हैं । - आपके %1$s रेटिंग %2$s से बहुत दूर हैं । - अस्थायी %s रेटिंग के कारण इनसे खेलना बंद है । - %s सिर्फ अपने साथियों के साथ खेलते हैं । सक्रिय कदम इन कदमों को शामिल करें आपके सक्रिय कदमों का अनुक्रम करो, जैसे आप खेल में प्रयोग करेंगे @@ -845,7 +837,4 @@ आप अभी तक फ़ोरम में पोस्ट नहीं कर सकते। कुछ गेम्स खेलें! सदस्यता लें सदस्यता रद्द करें - चुनौती इंकार कर दिया - चुनौती स्वीकार की गई! - चुनौती रद्द । diff --git a/translation/dest/site/hr-HR.xml b/translation/dest/site/hr-HR.xml index 3acbb8266b..5099b61881 100644 --- a/translation/dest/site/hr-HR.xml +++ b/translation/dest/site/hr-HR.xml @@ -9,6 +9,7 @@ Tvoj potez %1$s razina %2$s Razina + Jačina Uključi/isključi chat Uključi/isključi zvuk Chat @@ -21,8 +22,8 @@ Kreiraj partiju Bijeli je pobjednik Crni je pobjednik - Igraš s bijelim figurama - Igraš s crnim figurama + Igraš bijelim figurama + Igraš crnim figurama Ti si na redu! Kralj na centru Tri šaha @@ -410,7 +411,6 @@ računalnu analizu, chat partije i URL za dijeljenje. Više Član od Zadnja aktivnost %s - Poziv na partiju Igrač Lista Graf @@ -540,6 +540,7 @@ računalnu analizu, chat partije i URL za dijeljenje. Početno vrijeme Vremenski dodatak Privatnost + Pravila privatnosti Dopusti drugim igračima da te prate Dopusti drugim igračima da te izazovu Dopusti drugim igračima da te pozovu u studiju @@ -689,6 +690,7 @@ računalnu analizu, chat partije i URL za dijeljenje. Ako ne vidiš email, pogledaj na drugim mjestima (otpad/smeće, neželjena pošta, društvene mreže ili druge mape). Poslali smo email na %s. Klikni link u emailu da resetiraš lozinku. Registracijom prihvaćaš %s + Pročitajte naše %s. Mrežno kašnjenje između tebe i lichess-a Vrijeme obrade poteza na lichess serveru Preuzmi s bilješkama @@ -768,7 +770,6 @@ računalnu analizu, chat partije i URL za dijeljenje. Pogreška Prilagođeno Obavijesti - Izazovi Rejting: %s %s sekunda da odigrate prvi potez @@ -817,12 +818,6 @@ računalnu analizu, chat partije i URL za dijeljenje. Otvaranje Središnjica Završnica - Za slanje izazova morate se registrirati. - Ne možeš izazvati %s. - %s ne prihvaća izazove. - Prevelika je razlika između tvog %1$s rejtinga i onog od %2$s. - Nemoguće izazvati zbog privremenog %s rejtinga. - %s prihvaća samo izazove od prijatelja. Uvjetni predpotezi Dodajte trenutnu varijantu Odigraj varijantu da stvoriš uvjetni predpotez @@ -869,7 +864,7 @@ računalnu analizu, chat partije i URL za dijeljenje. u F.A.Q. Za prijavu korisnika zbog varanja ili lošeg ponašanja, %1$s koristite obrazac za prijavu - Za zatraživanje podrške, %1$s + Za potraživanje pomoći, %1$s kontaktirajte nas Ova tema je arhivirana i na nju više nije moguće odgovoriti. Pridruži se %1$s za objavljivanje na ovom forumu diff --git a/translation/dest/site/hu-HU.xml b/translation/dest/site/hu-HU.xml index a61f6d88ad..5f683e1075 100644 --- a/translation/dest/site/hu-HU.xml +++ b/translation/dest/site/hu-HU.xml @@ -9,7 +9,7 @@ Te következel %1$s szint: %2$s Szint - Erősség + Erősség Csevegő ki-be Hang ki-be Csevegés @@ -383,7 +383,6 @@ Több Tagság kezdete Utoljára aktív: %s - Kihívás Játékos Lista Grafikon @@ -736,7 +735,6 @@ Hiba Egyéni Értesítések - Kihívások Pontszám: %s %s másodperc a kezdőlépés megtételére @@ -783,12 +781,6 @@ Megnyitás Középjáték Végjáték - A kihíváshoz regisztráció szükséges. - %s nem kihívható. - %s nem fogad kihívást. - A pontszámod túl messze van tőle: %2$s (%1$s). - Nem kihívható az ideiglenes %s pontszám miatt. - %s csak barátoktól fogad kihívást. Feltételes előre megadott lépések Változat hozzáadása Egy változat megjátszásával, hozzáadható feltételes előre megadott lépés @@ -842,7 +834,4 @@ Még nem írhatsz a fórumokba. Játssz néhány partit! Feliratkozás Leiratkozás - Kihívás elutasítva - Kihívás elfogadva! - Kihívás visszavonva. diff --git a/translation/dest/site/hy-AM.xml b/translation/dest/site/hy-AM.xml index c409fdb2ec..c596da683b 100644 --- a/translation/dest/site/hy-AM.xml +++ b/translation/dest/site/hy-AM.xml @@ -9,7 +9,7 @@ Ձեր հերթն է %1$s, մակարդակ՝ %2$s Մակարդակ - Ուժ + Ուժ Թաքցնել/ցուցադրել չաթի պատուհանը Անջատել/Միացնել ձայնը Չաթ @@ -38,7 +38,7 @@ Ստիպել խաղը լքած հակառակորդին հանձնվել Պահանջել հաղթանակ Պահանջել ոչ-ոքի - Խնդրում ենք զրուցարանում լինել բարեհամբյուր: + Խնդրում ենք չաթում լինել բարեհամբյուր: Առաջինը, ով կայցելի այս հղումով, կխաղա Ձեզ հետ։ Սպիտակները հանձնվեցին Սևերը հանձնվեցին @@ -87,6 +87,8 @@ Ոչ մի խաղ չի գտնվել Դեբյուտների դիտարկիչ %s դեբյուտների դիտարկիչ + Հաղթանակը կասեցված Է 50 քայլի օրենքի համաձայն + Պարտությունը կասեցված Է 50 քայլի օրենքի համաձայն Ամեն ինչ պատրաստ է։ Ներմուծել PGN Ջնջել @@ -133,6 +135,7 @@ Վերջին գրառումները ֆորումում Խաղացողներ Ընկերներ + Հաղորդագրություններ Այսօր Երեկ Րոպեներ ամեն կողմի համար @@ -214,8 +217,8 @@ Հաստատել քայլը Խաղալ Փոստարկղ - Չատի պատուհան - Մուտք գործել չատ + Չաթի պատուհան + Մուտք գործել չաթ Հանդիսատեսների սենյակ Գրել հաղորդագրություն Դեռևս նամակներ չունեք @@ -224,7 +227,7 @@ Ուղարկել Ավելացումը ըստ վայրկյանների Անվճար օնլայն շախմատ - հանդիսատեսներ + Հանդիսատեսներ՝ %s վարկանիշային %s վարկանիշային @@ -263,7 +266,7 @@ Վերադարձ դեպի մրցաշարը Թեմատիկա Վերադառնալ պարտիային - Անճար օնլայն շախմատ: Խաղացեք հաճելի ինտերֆեյսով, առանց գրանցման և գովազդի: Խաղացեք համակարգչի, ընկերների կամ անծանոթների հետ: + Անվճար օնլայն շախմատ: Խաղացեք հաճելի ինտերֆեյսով, առանց գրանցման և գովազդի: Խաղացեք համակարգչի, ընկերների կամ անծանոթների հետ: %1$s միացած թիմեր %2$s %1$s ստեղծած թիմ %2$s Միջին ELO @@ -310,7 +313,6 @@ Ավելին Անդամ է՝ սկսած Վերջին մուտքը %s - Ուղարկել խաղի մարտահրավեր Խաղացող ցուցակ Գրաֆիկ diff --git a/translation/dest/site/ia-IA.xml b/translation/dest/site/ia-IA.xml index 26cb599227..0833bf7d48 100644 --- a/translation/dest/site/ia-IA.xml +++ b/translation/dest/site/ia-IA.xml @@ -9,7 +9,7 @@ Tu torno %1$s nivello %2$s Nivello - Fortia + Fortia Activar/disactivar le chat Activar/disactivar sono Chat @@ -370,7 +370,6 @@ Plus Membro desde Ultime connexion %s - Defiar a un partita Jocator Lista Graphico @@ -714,7 +713,6 @@ Error Personalisate Notificationes - Defias Classification: %s %s secunda pro jocar le prime movimento @@ -761,12 +759,6 @@ Initio de joco Medio del joco Fin del joco - Per favor, registra un conto pro inviar defias. - Tu non pote defiar %s. - %s non accepta defias. - Tu classification de %1$s es troppo distante de %2$s. - Defias non es permittite a causa de tu classification provisori %s. - %s solmente accepta defias de amicos. Preselectiones conditional Adder variation currente Joca un movimento variante pro crear preselectiones conditional diff --git a/translation/dest/site/id-ID.xml b/translation/dest/site/id-ID.xml index 6b0e45bd54..237747e2c5 100644 --- a/translation/dest/site/id-ID.xml +++ b/translation/dest/site/id-ID.xml @@ -355,7 +355,6 @@ Lainnya Anggota sejak Login terakhir %s - Menantang bermain Pemain Daftar Grafik @@ -476,10 +475,12 @@ Password saat ini Password baru Password baru (lagi) + Kata sandi baru tidak cocok Kekuatan Kata Sandi Waktu awal Kenaikan waktu Privasi + Kebijakan privasi Biarkan pengguna lain mengikuti anda Biarkan pengguna lain menantang anda Ijinkan pemain lain mengajak Anda untuk studi @@ -621,6 +622,7 @@ Jika anda tidak melihat surel, cek tempat-tempat lain; seperti junk, spam, sosial, atau berkas lainnya Kami telah mengirim surel kepada %s. Klik tautan di dalam surel untuk mengubah kata sandi anda. Dengan mendaftar, anda setuju untuk terikat dengan %s kita. + Baca tentang %s kami. Hambatan jaringan antara anda dan lichess. Waktu untuk memproses suatu langkah dalam server lichess Unduh versi anotasi @@ -698,7 +700,6 @@ Kesalahan Atur Notifikasi - Tantangan Rating: %s %s detik untuk memainkan langkah pertama @@ -743,12 +744,6 @@ Pembuka Setengah permainan Akhir permainan - Silahkan daftar untuk mengirim tantangan. - Anda tidak bisa menantang %s. - %s tidak menerima tantangan. - Rating %1$s terlalu jauh dari %2$s. - Tidak bisa menantang karena sementara%s rating. - %s hanya menerima tantangan dari teman. Syarat pra-langkah Tambahkan variasi Memainkan sebuah variasi untuk membuat syarat pra-langkah diff --git a/translation/dest/site/is-IS.xml b/translation/dest/site/is-IS.xml index c544183d4e..f626a4a283 100644 --- a/translation/dest/site/is-IS.xml +++ b/translation/dest/site/is-IS.xml @@ -374,7 +374,6 @@ Meira Meðlimur síðan Síðast tengdur %s - Áskorun Skákmenn Listi Graf @@ -702,7 +701,6 @@ Villa Sérsniðinn Tilkynningar - Áskoranir Skákstig: %s %s sekúnda til að spila fyrsta leik @@ -747,11 +745,6 @@ Byrjun Miðtafl - Skráðu þig inn til að senda áskorarnir. - Þú getur ekki skorað á %s. - %s tekur ekki við áskorunum. - Það er of mikill munur á milli %1$sstiganna þína og skákstiganna %2$s. - %s samþykkir eingöngu áskoranir frá vinum. Leika %s Afsakaðu :( Við þurftum að setja þig í stutt leikbann. @@ -782,6 +775,4 @@ Þú mátt ekki pósta enn. Spilaðu nokkra leiki! Gerast áskrifandi Taka úr áskrift - Áskorun hafnað - Hætt við áskorun. diff --git a/translation/dest/site/it-IT.xml b/translation/dest/site/it-IT.xml index 39fbb409be..bf60f3171d 100644 --- a/translation/dest/site/it-IT.xml +++ b/translation/dest/site/it-IT.xml @@ -9,7 +9,7 @@ Tocca a te %1$s livello %2$s Livello - Forza + Forza Attiva/disattiva la chat Attiva/disattiva audio Chat @@ -384,7 +384,6 @@ analizzarla con il computer, commentarla in chat, e condividerla tramite un indi Altro Membro dal Ultimo accesso %s - Sfida a una partita Giocatore Lista Grafico @@ -737,7 +736,6 @@ analizzarla con il computer, commentarla in chat, e condividerla tramite un indi Errore Personalizza Notifiche - Sfide Punteggio: %s %s secondi per giocare la prima mossa @@ -784,12 +782,6 @@ analizzarla con il computer, commentarla in chat, e condividerla tramite un indi Apertura Mediogioco Finale - Per favore, registrati per mandare sfide. - Non puoi sfidare %s. - %s non accetta sfide. - Il tuo punteggio %1$s è troppo diverso da %2$s. - Non puoi sfidare poiché hai ancora un punteggio provvisorio in %s. - %s accetta solo sfide da amici. Premosse condizionali Aggiungi variazione corrente Gioca una variazione per creare premosse condizionali @@ -843,7 +835,4 @@ analizzarla con il computer, commentarla in chat, e condividerla tramite un indi Non puoi ancora postare nei forum. Gioca qualche partita! Iscriviti Annullare l\'iscrizione - Sfida rifiutata - Sfida accettata! - Sfida annullata. diff --git a/translation/dest/site/ja-JP.xml b/translation/dest/site/ja-JP.xml index a49ceff878..ecf34d1016 100644 --- a/translation/dest/site/ja-JP.xml +++ b/translation/dest/site/ja-JP.xml @@ -9,7 +9,7 @@ あなたの手番です %1$s レベル %2$s レベル - 強さ + 強さ チャットのオン・オフ 音声のオン・オフ チャット @@ -305,7 +305,7 @@ チーム %s に入っていません ゲームに戻る 無料オンラインチェス。簡素なインターフェースですぐに対局を。登録不要、広告なし、プラグイン不要。AIと、友達と、知らない相手とも対局できます。 - %1$s がチーム %2$s に参加 + %1$s がチーム %2$s に参加 %1$s がチーム %2$s を作成 %s が配信を開始 平均レーティング @@ -357,7 +357,6 @@ さらに表示 登録日 最後のログイン %s - 対局を申し込む プレイヤー リスト グラフ @@ -703,7 +702,6 @@ エラー 自由設定 通知 - 挑戦 レーティング: %s あと %s 秒以内に初手を指してください @@ -748,12 +746,6 @@ 序盤 中盤 終盤 - チャレンジを送るには登録が必要です。 - %s にチャレンジできません。 - %s はチャレンジを受け付けていません。 - %1$s レーティングが %2$s と離れすぎです。 - %s が仮レーティングのためチャレンジできません。 - %s は友達からのチャレンジしか受け付けません。 コンディショナルムーブ 現在の変化を追加する 駒を動かしてコンディショナルムーブを設定します @@ -806,7 +798,4 @@ 何局か指し終えるまで投稿はできません。 投稿をフォロー 投稿のフォローをはずす - 挑戦が拒否されました。 - 挑戦が承認されました! - 挑戦がキャンセルされました。 diff --git a/translation/dest/site/jbo-EN.xml b/translation/dest/site/jbo-EN.xml index 40d8355543..10cf7cfbbf 100644 --- a/translation/dest/site/jbo-EN.xml +++ b/translation/dest/site/jbo-EN.xml @@ -343,7 +343,6 @@ viska lo zmadu cmima be co\'a ku de\'i li ca %s ro re\'u zukte - talsa fi lo ka jivna lo jivna liste cartu @@ -647,7 +646,6 @@ srera da cuxna lo notci - lo talsa nilcre fa li %s zukte .ei lo pa moi kelka\'u ba nu\'i la\'u lo snidu be li su\'e %s @@ -691,9 +689,6 @@ cfari kelka\'u nunjvi midju nunjvi fanmo - lonu do talsa cu selsa\'u lonu do cmisau .e\'o - .i do na kakne lo ka talsa la\'o zoi. %s .zoi - .i la\'o zoi. %s .zoi na fitytu\'i lo nuntalsa jmina lo nu cenba zukte la\'o zoi. %s .zoi fau\'u diff --git a/translation/dest/site/ka-GE.xml b/translation/dest/site/ka-GE.xml index 0b03e00c1b..fcd61e311f 100644 --- a/translation/dest/site/ka-GE.xml +++ b/translation/dest/site/ka-GE.xml @@ -335,7 +335,6 @@ მეტი წევრია დან ბოლო ვიზიტი %s - გამოიწვიეთ სათამაშოდ მოთამაშე სია გრაფა @@ -623,7 +622,6 @@ უნდა იყოს ნაკლები ან ტოლი %s_ზე შეცდომა შეტყობინებები - გამოწვევები რეიტინგი: %s %s წამი პირველი სვლის სათამაშოდ @@ -652,6 +650,5 @@ %s წამი %s წამი - %s არ იღებს გამოწვევებს. პირობითი წინასწარი სვლები diff --git a/translation/dest/site/kab-DZ.xml b/translation/dest/site/kab-DZ.xml index 6abfbeec24..9bc5f61415 100644 --- a/translation/dest/site/kab-DZ.xml +++ b/translation/dest/site/kab-DZ.xml @@ -230,7 +230,6 @@ Ugar Amaslaḍ seg Tuqqna taneggarut %s - Cqer amyurar agi Amarir Umuɣ Udlif diff --git a/translation/dest/site/kk-KZ.xml b/translation/dest/site/kk-KZ.xml index b126332151..4c6f5f0826 100644 --- a/translation/dest/site/kk-KZ.xml +++ b/translation/dest/site/kk-KZ.xml @@ -9,7 +9,7 @@ Сіз жүресіз %1$s деңгейі: %2$s Деңгей - Күші + Күші Чат батырмасы Дыбыс батырмасы Чат @@ -383,7 +383,6 @@ Жаю Тіркелген күні %s белсенді болды - Ойынға шақыру Ойыншы Тiзiм Диаграм @@ -736,7 +735,6 @@ Қателік Қалыпты Хабарлама - Шақырулар Рейтинг: %s Бірінші жүріске %s секунд бар @@ -783,12 +781,6 @@ Бастау Ойын ортасы Ойынсоңы - Ойынға шақыру үшін тіркеліңіз. - Сіз %s деген ойыншыны шақыра алмайсыз. - %s шақыруды қабылдамады. - Сіз %1$s бен %2$s-ның рейтинг айырмашылығы тым көп. - %s рейтингіңіз болжамалы күйде тұрғанша, ешкімді ойынға шақыра алмайсыз. - %s тек достардың шақыруын қабылдайды. Шартты алдын-ала жүрістер Осы нұсқаны қосу Шартты алдын-ала жүрістерді құру үшін бір нұсқаны ойнаңыз @@ -842,7 +834,4 @@ Сіз форумда әлі хабар қалдыра алмайсыз. Ойнаңыз! Жазылу Жазылымды тоқтату - Шақыруды қабылдамады - Шақыруды қабылдады! - Шақырудан бас тартты. diff --git a/translation/dest/site/kmr-TR.xml b/translation/dest/site/kmr-TR.xml index a631d8e2d1..c0e82fd564 100644 --- a/translation/dest/site/kmr-TR.xml +++ b/translation/dest/site/kmr-TR.xml @@ -379,7 +379,6 @@ Zêdetir Ji vê demê ve endam e Çalakiya dawîn %s - Vexwîne lîstikek Lîzer Lîste Grafîk @@ -728,7 +727,6 @@ Çewtî Xisûsî Danezan - Teklîfên lîstinê Reytîng: %s %s çirke ji bo lîstina hemleya pêşîn @@ -775,12 +773,6 @@ Destpêk Nîvlîstik Dawiya lîstikê - Ji kerema xwe qeyd bibe ji bo şandina teklîfan. - Tu nikarî teklîfa lîstinê bişînî %s. - %s teklîfên lîstinê qebûl nake. - Reytînga te ya %1$s pir dûr e ji %2$s. - Ji ber reytînga te ya demkî ya %s, nikare vexwîne lîstinê. - %s tenê ji hevalên xwe teklîfan qebûl dike. Pêşhemleyên mercdar Varyasyona heyî tevlî bike Varyasyonekê bilîze da ku pêşheleyên mercdar çêbikî diff --git a/translation/dest/site/ko-KR.xml b/translation/dest/site/ko-KR.xml index c98d6c5ea6..1a060c15bb 100644 --- a/translation/dest/site/ko-KR.xml +++ b/translation/dest/site/ko-KR.xml @@ -9,7 +9,7 @@ 내 차례 %1$s 레벨 %2$s 레벨 - 강도 + 강도 채팅 끄기/켜기 음소거/음소거 해제 채팅 @@ -356,7 +356,6 @@ 더보기 가입 시기: 최근 로그인: %s - 도전하기 플레이어 목록 그래프 @@ -700,7 +699,6 @@ 오류 사용자 지정 알림 - 도전 레이팅: %s %s 초 안에 첫 수를 두십시오. @@ -745,12 +743,6 @@ 오프닝 미들게임 엔드게임 - 시합을 공유하려면 가입하십시오 - %s와는 대국할 수 없습니다. - %s님이 대국을 수락하지 않았습니다. - 당신의 레이팅 등급인 %1$s과 상대의 레이팅 등급인 %2$s과의 격차가 너무 큽니다. - %s 가 아직 레이팅이 확정되지 않아서 도전하실 수 었습니다 - %s님은 친구인 상대만 대국 요청을 수락합니다. 수 예측 현재의 변화를 추가 기물을 움직여 조건적인 수를 만들기 diff --git a/translation/dest/site/la-LA.xml b/translation/dest/site/la-LA.xml index eec707d8ae..8b60bd8ea6 100644 --- a/translation/dest/site/la-LA.xml +++ b/translation/dest/site/la-LA.xml @@ -358,7 +358,6 @@ Multus Membrum ab Initus recentissimus %s - Ludum imponere Lusor Tabula Graphus @@ -670,7 +669,6 @@ Culpa Alius Nuntii - Provocationes Ordo: %s Maxime motum videre Maxime motum celare @@ -692,8 +690,6 @@ Principium Finem ludum - Si di incostans registrarsi per inviare Sfide. - Non puoi sfidare %s. Lude %s Paenitet :( Cur? diff --git a/translation/dest/site/lt-LT.xml b/translation/dest/site/lt-LT.xml index 887a5f1a24..5e015ef920 100644 --- a/translation/dest/site/lt-LT.xml +++ b/translation/dest/site/lt-LT.xml @@ -9,7 +9,7 @@ Jūsų ėjimas %1$s lygis Nr. %2$s Lygis - Stiprumas + Stiprumas Įjungti / išjungti pokalbį Įjungti / išjungti garsus Pokalbis @@ -438,7 +438,6 @@ kompiuterinę analizę, partijos pokalbį bei URL dalinimuisi. Daugiau Narys nuo Paskutinis prisijungimas %s - Pakviesti partijai Žaidėjas Sąrašas Grafikas @@ -805,7 +804,6 @@ kompiuterinę analizę, partijos pokalbį bei URL dalinimuisi. Klaida Kitoks Pranešimai - Iššūkiai Reitingas: %s %s sekundė atlikti pirmąjį ėjimą @@ -856,12 +854,6 @@ kompiuterinę analizę, partijos pokalbį bei URL dalinimuisi. Debiutas Mitelšpilis Endšpilis - Užsiregistruokite, norėdami mesti iššūkius. - Negalite mesti iššūkio žaidėjui %s. - Žaidėjas %s nepriima iššūkių. - Jūsų „%1$s“ reitingas yra per toli nuo žaidėjo „%2$s“. - Iššūkio mesti nepavyko dėl laikino žaidėjo %s reitingo. - Žaidėjas %s iššūkius priima tik iš draugų. Sąlyginiai išankstiniai ėjimai Pridėti dabartinę variaciją Sužaiskite variaciją, norėdami sukurti sąlyginius išankstinius ėjimus @@ -917,7 +909,4 @@ kompiuterinę analizę, partijos pokalbį bei URL dalinimuisi. Diskutuoti forume dar negalite. Sužaiskite keletą partijų! Prenumeruoti Atsisakyti prenumeratos - Iššūkis atmestas - Iššūkis priimtas! - Iššūkis atšauktas. diff --git a/translation/dest/site/lv-LV.xml b/translation/dest/site/lv-LV.xml index 6d5b005e0b..13eec11988 100644 --- a/translation/dest/site/lv-LV.xml +++ b/translation/dest/site/lv-LV.xml @@ -9,7 +9,7 @@ Jūsu gājiens %1$s %2$s. līmenis Līmenis - Stiprums + Stiprums Ieslēgt/izslēgt sarunu Ieslēgt/Izslēgt skaņu Saruna @@ -410,7 +410,6 @@ Vairāk Dalībnieks kopš Aktīvs %s - Izaicināt uz spēli Spēlētājs Saraksts Grafiks @@ -770,7 +769,6 @@ Kļūda Pielāgota Paziņojumi - Izaicinājumi Reitings: %s %s sekundes, lai izdarītu pirmo gājienu @@ -819,12 +817,6 @@ Atklātne Vidusspēle Galotne - Lūdzu reģistrējaties, lai sūtītu izaicinājumus. - Jūs nevarat izaicināt %s. - %s nepieņem izaicinājumus. - Jūsu %1$s reitings ir pārāk tālu no %2$s. - Nevar izaicināt pagaidu %s reitinga dēļ. - %s pieņem izaicinājumus tikai no draugiem. Nosacījumu priekšgājieni Pievienot pašreizējo variantu Izspēlējiet variantu, lai izveidotu nosacījumu priekšgājienus @@ -879,7 +871,4 @@ Vēl nevarat rakstīt forumos. Uzspēlējiet dažas spēles! Abonēt Atcelt abonēšanu - Izaicinājums noraidīts - Izaicinājums pieņemts! - Izaicinājums atcelts. diff --git a/translation/dest/site/mg-MG.xml b/translation/dest/site/mg-MG.xml index 0a737d6da0..6af4674496 100644 --- a/translation/dest/site/mg-MG.xml +++ b/translation/dest/site/mg-MG.xml @@ -210,7 +210,6 @@ Tohiny Mpikambana nanomboka tamin\'ny Niditra farany tamin\'ny %s - Challenge to a game Mpilalao Lisitra Graphe diff --git a/translation/dest/site/mk-MK.xml b/translation/dest/site/mk-MK.xml index 0d23eb1cdd..424d910cf2 100644 --- a/translation/dest/site/mk-MK.xml +++ b/translation/dest/site/mk-MK.xml @@ -381,7 +381,6 @@ Повеќе Член од Последен пат вклучен %s - Предизикај Играч Листа Графикон @@ -730,7 +729,6 @@ Грешка Персонализирано Известувања - Предизвици Рејтинг: %s %s секунда за првиот потег @@ -777,12 +775,6 @@ Отворање Средишница Завршница - Ве молиме регистрирајте се за испраќање предизвици. - Не можеш да го предизвикаш %s. - %s не прифаќа предизвици. - Преголема е разликата помеѓу твојот „%1$s“ рејтинг и тој на %2$s. - Не можеш да предизвикаш поради привремениот „%s“ рејтинг. - %s прифаќа само предизвици од пријатели. Условни пред-потези Додади ја сегашната варијанта Одиграј варијанта за да создадеш условен пред-потег diff --git a/translation/dest/site/ml-IN.xml b/translation/dest/site/ml-IN.xml index 8ba39c0deb..4f1624c7eb 100644 --- a/translation/dest/site/ml-IN.xml +++ b/translation/dest/site/ml-IN.xml @@ -372,7 +372,6 @@ കൂടുതൽ അംഗമായത് %s പേർ സജീവം - ഒരു മത്സരത്തിനു ക്ഷണിക്കുക കളിക്കാരന്‍ പട്ടിക ഗ്രാഫ് @@ -715,7 +714,6 @@ തെറ്റ് ഇച്ഛാനുസൃതം അറിയിപ്പുകൾ - വെല്ലുവിളികൾ നിലവാരം: %s ആദ്യ നീക്കം കളിയ്ക്കാൻ %s സെക്കന്റ് ബാക്കി നിൽക്കുന്നു @@ -762,12 +760,6 @@ ഓപ്പണിങ് മിഡിൽഗെയിം എൻഡ്ഗെയിം - വെല്ലുവിളികൾ അയക്കാൻ ദയവായി രജിസ്റ്റർ ചെയ്യൂ. - നിങ്ങൾക്ക് %s -നെ വെല്ലുവിളിക്കാൻ പറ്റില്ല. - %s വെല്ലുവിളികൾ സ്വീകരിക്കുന്നില്ല. - നിങ്ങളുടെ %1$s റേറ്റിംഗ് %2$s-ൽ നിന്നും വളരെ അകലെയാണ്. - നിങ്ങളുടെ താത്കാലികമായ %s റേറ്റിംഗ് മൂലം വെല്ലുവിളിക്കാൻ സാധിക്കില്ല. - %s അവരുടെ സുഹൃത്തുക്കളിൽ നിന്ന് മാത്രമേ വെല്ലുവിളികൾ സ്വീകരിക്കുന്നുള്ളൂ. സാധ്യമായ premoves ഇപ്പോഴത്തെ വേരിയേഷൻ ചേർക്കുക സാഹചര്യ premoves-നു വേണ്ടി ഒരു വേരിയേഷൻ കളിക്കുക diff --git a/translation/dest/site/mn-MN.xml b/translation/dest/site/mn-MN.xml index d353f7adf8..4d43133c7a 100644 --- a/translation/dest/site/mn-MN.xml +++ b/translation/dest/site/mn-MN.xml @@ -354,7 +354,6 @@ Дэлгэрэнгүй үзэх Гишүүнчлэлийн огноо: Сүүлд холбогдсон огноо: %s - Тоглолтод урих Гишүүн Жагсаалт Үзүүлэлтийн хүснэгт, диаграмм, график @@ -699,7 +698,6 @@ Алдаа Өөрийнхөөр Мэдэгдэлүүд - Бодлогууд Чансаа:%s Эхний нүүдэл хийхэд %s секунд байна @@ -746,10 +744,6 @@ Гараа Тоглолтын дунд үе Төгсгөл үе - Тулаанд дуудахаар бүртгүүлнэ үү. - %s-г тулаанд дуудаж болохгүй. - %s дуудлагыг хүлээн авсангүй. - Таны %1$s үнэлгээ %2$s-с хэт зөрүүтэй байна. Уучлаарай Яагаад Уншсанд баярлалаа diff --git a/translation/dest/site/mr-IN.xml b/translation/dest/site/mr-IN.xml index 7c4f8bf9cc..e818d17276 100644 --- a/translation/dest/site/mr-IN.xml +++ b/translation/dest/site/mr-IN.xml @@ -382,7 +382,6 @@ आणखी या काळा पासून सदस्य आहेत %s सक्रिय - आव्हान द्या खेळाडू यादी आलेख @@ -731,7 +730,6 @@ चूक इतर Notifications - आव्हाने गुणांकन: %s पहिली चाल खेळण्यासाठी %s सेकंद आहेत @@ -778,12 +776,6 @@ ओपनिंग मध्यखेळ खेळाचा शेवट - कृपया आव्हान देण्यासाठी नोंदणी करा. - तुम्ही आव्हान देऊ शकत नाही %s. - %s आपले आव्हान स्विकारले नाही. - तुमची %1$s रेटिंग %2$s पेक्षा फार कमी आहे. - %s च्या अस्थायी रेटिंगमुळे आव्हान देऊ शकत नाही. - %s केवळ मित्रांकडील आव्हाने स्वीकारतात. सशर्त प्रिमुव्ह वर्तमान variation जोडा सशर्त प्रिमुव्ह तयार करण्यासाठी variation खेळा diff --git a/translation/dest/site/ms-MY.xml b/translation/dest/site/ms-MY.xml index 31852f301f..d62b8164ff 100644 --- a/translation/dest/site/ms-MY.xml +++ b/translation/dest/site/ms-MY.xml @@ -315,7 +315,6 @@ Papar lebih Ahli sejak Aktif: %s - Cabar ke permainan Pemain Senarai Graf @@ -510,12 +509,6 @@ Opening Middlegame Endgame - Sila daftar untuk hantar cabaran. - Anda tidak boleh mencabar%s. - %s tidak menerima cabaran. - Rating anda%1$s jauh daripada rating %2$s. - Tidak boleh cabar kerana rating %s masih tidak stabil. - %s hanya boleh terima cabaran daripada rakan-rakan. Pre-gerakan bersyarat Tambah variasi semasa Tambah variasi untuk membuat pre-gerakan bersyarat diff --git a/translation/dest/site/nb-NO.xml b/translation/dest/site/nb-NO.xml index 6043f39788..985327851b 100644 --- a/translation/dest/site/nb-NO.xml +++ b/translation/dest/site/nb-NO.xml @@ -9,7 +9,7 @@ Ditt trekk %1$s på nivå %2$s Nivå - Styrke + Styrke Chat av/på Lyd av/på Chat @@ -383,7 +383,6 @@ Mer Medlem siden Forrige pålogging %s - Utfordre til et parti Spiller Liste Graf @@ -736,7 +735,6 @@ Feil Tilpasset Varsler - Utfordringer Rating: %s %s sekund til å ta det første trekket @@ -783,12 +781,6 @@ Åpning Midtspill Sluttspill - Opprett en konto om du vil utforde andre. - Du kan ikke utfordre %s. - %s aksepterer ikke utfordringer. - %1$s-ratingen din er for langt unna %2$s. - Kan ikke utfordre på grunn av provisorisk %s-rating. - %s aksepterer kun utfordringer fra venner. Betingede forhåndstrekk Føy til gjeldende variant Spill en variant for å lage betingede forhåndstrekk @@ -842,7 +834,4 @@ Du kan ikke skrive innlegg i forumene ennå. Spill noen partier! Abonner Avslutt abonnement - Utfordring avslått - Utfordring godtatt! - Utfordring avbrutt. diff --git a/translation/dest/site/ne-NP.xml b/translation/dest/site/ne-NP.xml index 991c9a61f8..8b57111ed2 100644 --- a/translation/dest/site/ne-NP.xml +++ b/translation/dest/site/ne-NP.xml @@ -379,7 +379,6 @@ थप सदस्यता मिति %s सकृय - खेलको लागि चुनौति दिनुहोस् खेलाडी सुचि रेखाचित्र @@ -728,7 +727,6 @@ त्रुटि कष्टम सुचनाहरु - चुनौतिहरु रेटिङ: %s पहिलो चाल चाल्न %s सेकेण्ड @@ -775,12 +773,6 @@ शुरुका चालहरु बीचको खेल खेलको समाप्ति - चुनौति पठाउन दर्ता गरौं। - तपाइ %sलाइ चुनौति दिन सक्नुहुन्न। - %s चुनौति स्वीकार गर्नुहुन्न। - तपाइको %1$s रेटिङ %2$s भन्दा धेरै टाढा छ। - अस्थायी %s रेटिङ को कारण खेलको लागि आमन्त्रण गर्न असम्भव छ। - %s ले मित्रहरुको आमन्त्रण मात्र स्वीकार गर्दछन्। ससर्त प्रिमुभहरु वर्तमान लाइन खेलमा जोडौं चाल चालेर ससर्त प्रिमुभहरु श्रीजना गरौं diff --git a/translation/dest/site/nl-NL.xml b/translation/dest/site/nl-NL.xml index 7be1e417fb..e9c58c16b3 100644 --- a/translation/dest/site/nl-NL.xml +++ b/translation/dest/site/nl-NL.xml @@ -9,7 +9,7 @@ U bent aan zet %1$s niveau %2$s Niveau - Sterkte + Sterkte Chat aan-/uitzetten Geluid aan-/uitzetten Chat @@ -383,7 +383,6 @@ Meer Lid sinds %s voor het laatst gezien - Uitdagen voor een partij Speler Lijst Grafiek @@ -736,7 +735,6 @@ Fout Aangepast Meldingen - Uitdagingen Rating: %s %s seconde om de eerste zet te spelen @@ -783,12 +781,6 @@ Opening Middenspel Eindspel - Gelieve te registreren om uitdagingen te versturen. - Je kunt %s niet uitdagen. - %s accepteert geen uitdagingen. - Je %1$s-rating wijkt te veel af van %2$s. - Kan niet worden uitgedaagd vanwege de tijdelijke %s rating. - %s accepteert alleen uitdagingen van vrienden. Voorwaardelijke zetten vooruit Voeg huidige variant toe Speel een variant om voorwaardelijke zetten vooruit te maken @@ -842,7 +834,4 @@ Je kunt nog geen post in de forums plaatsen. Speel eerst een paar partijen! Abonneren Abonnement opzeggen - Uitdaging geweigerd - Uitdaging geaccepteerd! - Uitdaging geannuleerd. diff --git a/translation/dest/site/nn-NO.xml b/translation/dest/site/nn-NO.xml index 8bc06d96b5..1f73ffe1ab 100644 --- a/translation/dest/site/nn-NO.xml +++ b/translation/dest/site/nn-NO.xml @@ -9,7 +9,7 @@ Ditt trekk %1$s på nivå %2$s Nivå - Styrke + Styrke Chat av/på Lyd av/på Praterom @@ -384,7 +384,6 @@ få en computeranalyse, chatte eller dele ein URL. Meir Medlem sidan Siste innlogging %s - Utfordra til eit parti Spelar Liste Graf @@ -740,7 +739,6 @@ i %3$s Feil Tilpassa Meldingar - Utfordringar Rating: %s %s sekund til å ta det første trekket @@ -787,12 +785,6 @@ i %3$s Opning Midtspel Sluttspel - Opprett ein konto om du vil utforde andre. - Du kan ikkje utfordre %s. - %s tek ikkje i mot utfordringar. - Din %1$s rating er for langt frå %2$s. - Kan ikkje utfordre på grunn av mellombels %s rating. - %s tek berre mot utfordringar frå vener. Vilkårsbundne førehandstrekk Legg til gjeldande variant Spel ein variant for å lage vilkårsbundne førehandstrekk @@ -846,7 +838,4 @@ i %3$s Du kan så langt ikkje skrive oppslag i foraane. Spel nokre parti fyrst! Abonner Avslutt abonnement - Utfordring avvist - Utfordring akseptert! - Utfordring avbroten. diff --git a/translation/dest/site/pl-PL.xml b/translation/dest/site/pl-PL.xml index 7b6313d35c..6b633f5822 100644 --- a/translation/dest/site/pl-PL.xml +++ b/translation/dest/site/pl-PL.xml @@ -9,7 +9,7 @@ Twój ruch %1$s poziom %2$s Poziom - Siła + Siła Pokaż/ukryj rozmowy Włącz/wyłącz dźwięk Czat @@ -437,7 +437,6 @@ Więcej Zarejestrowany od Widziano %s - Zaproś do gry Gracz Lista Wykres @@ -804,7 +803,6 @@ Błąd Niestandardowa Powiadomienia - Zaproszenia Ranking: %s %s sekunda na wykonanie pierwszego ruchu @@ -855,12 +853,6 @@ Otwarcie Gra środkowa Końcówka - Zarejestruj, by zapraszać do gry. - Nie możesz zaprosić %s. - %s nie przyjmuje zaproszeń. - Zbyt duża różnica rankingów (%1$s) między tobą a %2$s. - Nie możesz zapraszać ze względu na swój tymczasowy ranking (%s). - %s akceptuje tylko wyzwania od znajomych. Ruchy warunkowe Dodaj bieżący wariant Zagraj wariant, by utworzyć ruchy warunkowe @@ -916,7 +908,4 @@ Nie możesz jeszcze publikować na forach. Rozegraj najpierw kilka partii! Subskrybuj Zakończ subskrybcję - Wyzwanie odrzucone - Wyzwanie zaakceptowane! - Wyzwanie anulowane. diff --git a/translation/dest/site/pt-BR.xml b/translation/dest/site/pt-BR.xml index 821fd7fc49..c283bab5b8 100644 --- a/translation/dest/site/pt-BR.xml +++ b/translation/dest/site/pt-BR.xml @@ -9,7 +9,7 @@ Sua vez %1$s nível %2$s Nível - Nível + Nível Ativar/Desativar chat Ativar/Desativar som Chat @@ -383,7 +383,6 @@ Mais Membro desde Última conexão %s - Desafiar para jogar Jogador Lista Gráfico @@ -736,7 +735,6 @@ Erro Personalizado Notificações - Desafios Classificação: %s %s segundo para fazer o primeiro lance @@ -783,12 +781,6 @@ Abertura Meio-jogo Finais - Por favor, registre-se para enviar desafios. - Você não pode desafiar %s. - %s não aceita desafios. - A sua classificação %1$s é muito diferente de %2$s. - Não pode desafiar devido a pontuação provisória de %s. - %s só aceita desafios de amigos. Pré-lances condicionais Adicionar a variação atual Jogar uma variação para criar pré-lances condicionais @@ -842,7 +834,4 @@ Você não pode publicar nos fóruns ainda. Jogue algumas partidas! Seguir publicações Deixar de seguir publicações - Desafio recusado - Desafio aceito! - Desafio cancelado. diff --git a/translation/dest/site/pt-PT.xml b/translation/dest/site/pt-PT.xml index c53f4d3f76..02d6b29bb2 100644 --- a/translation/dest/site/pt-PT.xml +++ b/translation/dest/site/pt-PT.xml @@ -9,7 +9,7 @@ É a tua vez %1$s nível %2$s Nível - Nível + Nível Ativar/Desativar o chat Ativar/desativar o som Chat @@ -384,7 +384,6 @@ análise de computador, sala de chat do jogo e link de partilha. Mais Membro desde Ativo %s - Desafiar para jogar Jogador Lista Gráfico @@ -737,7 +736,6 @@ análise de computador, sala de chat do jogo e link de partilha. Erro Personalizado Notificações - Desafios Pontuação: %s %s segundo para jogar o primeiro movimento @@ -784,12 +782,6 @@ análise de computador, sala de chat do jogo e link de partilha. Abertura Meio jogo Final de jogo - Por favor regista-te para enviares desafios. - Não podes desafiar %s. - %s não aceita desafios. - A tua pontuação em %1$s está muito longe da de %2$s. - Não podes desafiar por causa da tua pontuação provisória em %s. - %s só aceita desafios de amigos. Movimentos antecipados condicionais Adicionar a variante atual Joga uma variante para criares movimentos antecipados condicionais @@ -843,7 +835,4 @@ análise de computador, sala de chat do jogo e link de partilha. Ainda não podes publicar nos fóruns. Joga alguns jogos! Subscrever-se Cancelar a subscrição - Desafio recusado - Desafio aceite! - Desafio cancelado. diff --git a/translation/dest/site/ro-RO.xml b/translation/dest/site/ro-RO.xml index c24d86e391..87f159dc5a 100644 --- a/translation/dest/site/ro-RO.xml +++ b/translation/dest/site/ro-RO.xml @@ -409,7 +409,6 @@ Mai mult Membru din Ultima autentificare %s - Provocați la o partidă Jucător Listă Grafic @@ -769,7 +768,6 @@ Eroare Personalizat Notificări - Provocări Rating: %s %s secundă rămasă pentru a începe jocul @@ -818,12 +816,6 @@ Deschidere Mijlocul jocului Sfârșitul jocului - Vă rugăm să vă înregistrați pentru a trimite provocări. - Nu puteți să-l provocați pe %s. - %s nu acceptă provocări. - Scorul tău de la %1$s este prea depărtat de scorul lui %2$s. - Nu puteți provoca din cauza scorului provizoriu %s. - %s acceptă provocări doar de la prieteni. Mutări anticipate condiționale Adaugă variația curentă Joacă o variație pentru a crea mutări anticipate condiționale @@ -878,7 +870,4 @@ Încă nu puteți posta în forumuri. Jucați câteva partide! Abonați-vă Dezabonați-vă - Provocare refuzată - Provocare acceptată! - Provocare anulată. diff --git a/translation/dest/site/ru-RU.xml b/translation/dest/site/ru-RU.xml index f3d6a9aaa9..c7fbad756b 100644 --- a/translation/dest/site/ru-RU.xml +++ b/translation/dest/site/ru-RU.xml @@ -9,7 +9,7 @@ Ваш ход %1$s уровня %2$s Уровень - Сложность + Сложность Показывать окно чата Вкл/выкл звук Отправить сообщение @@ -437,7 +437,6 @@ Ещё Дата регистрации Был онлайн %s - Вызвать на игру Игрок Список Диаграмма @@ -804,7 +803,6 @@ Ошибка Своя игра Уведомления - Вызовы Рейтинг: %s %s секунда на первый ход @@ -855,12 +853,6 @@ Дебют Миттельшпиль Эндшпиль - Зарегистрируйтесь, чтобы вызывать соперников на игру. - Вы не можете вызвать на игру %s. - %s не принимает вызовы. - Ваш рейтинг в %1$s слишком отличается от рейтинга %2$s. - Невозможно из-за недостоверности рейтинга %s. - %s принимает вызовы только от друзей. Условные предходы Добавить текущий вариант Выполните ходы на доске, чтобы задать условные предходы @@ -916,7 +908,4 @@ Вы пока не можете писать на форуме. Сыграйте несколько партий! Подписаться Отписаться - Вызов отклонён - Вызов принят! - Вызов отменён. diff --git a/translation/dest/site/si-LK.xml b/translation/dest/site/si-LK.xml index e394803185..10aa53ebb3 100644 --- a/translation/dest/site/si-LK.xml +++ b/translation/dest/site/si-LK.xml @@ -72,7 +72,4 @@ %3$s හි %1$s එදිරිව %2$s %3$s හි %1$s එදිරිව %2$s %3$s හි %1$s එදිරිව %2$s - අභියෝගය ප්‍රතික්ෂේප කරනු ලැබුවා - අභියෝගය පිළිගනු ලැබුවා! - අභියෝගය අත්හරිනු ලැබුවා. diff --git a/translation/dest/site/sk-SK.xml b/translation/dest/site/sk-SK.xml index 115cc211c9..5c526992bd 100644 --- a/translation/dest/site/sk-SK.xml +++ b/translation/dest/site/sk-SK.xml @@ -9,7 +9,7 @@ Ste na ťahu %1$s úrovne %2$s Úroveň - Sila + Sila Prepínač okna rozhovoru Prepínač zvuku Rozhovor @@ -437,7 +437,6 @@ Viac Členom od Posledné prihlásenie %s - Vyzvať k hre Hráč Zoznam Graf @@ -804,7 +803,6 @@ Chyba Vlastná Upozornenia - Výzvy Rating: %s %s sekunda na vykonanie prvého ťahu @@ -855,12 +853,6 @@ Otvorenie Stredná hra Koncovka - Pre odoslanie výzvy sa zaregistrujte! - Nemôžete vyzvať %s. - %s neprijíma výzvy. - Medzi Vaším %1$s hodnotením a hodnotením hráča %2$s je príliš veľký rozdiel. - Nemôžete odoslať výzvu kvôli provizórnemu %s hodnoteniu. - %s prijíma výzvy iba od priateľov. Podmienené predťahy Pridaj aktuálny variant Hrať variant a vytvoriť podmienené predťahy @@ -916,7 +908,4 @@ Nemôžeš prispievať do fóra. Zahraj si nejaké hry! Prihlásiť sa k odberu Odhlásiť sa z odberu - Výzva odmietnutá - Výzva prijatá! - Výzva zrušená. diff --git a/translation/dest/site/sl-SI.xml b/translation/dest/site/sl-SI.xml index 301bdfcce7..5978351a40 100644 --- a/translation/dest/site/sl-SI.xml +++ b/translation/dest/site/sl-SI.xml @@ -9,7 +9,7 @@ Ti si na potezi %1$s, stopnja: %2$s Stopnja - Moč + Moč Preklopi klepet Preklopi zvok Klepet @@ -437,7 +437,6 @@ Več Član od Zadnja prijava %s - Izzovi na igro Igralec Seznam Graf @@ -807,7 +806,6 @@ v %3$s Napaka Po meri Obvestila - Izzivi Rating: %s %s sekund za prvo potezo @@ -858,12 +856,6 @@ v %3$s Otvoritev Sredina igre Končnica - Če želite poslati izziv, se prosim registrirajte. - Ne morete izzvati %s. - %s ne sprejema izzivov. - Vaš %1$s rating je predaleč od ratinga igralca %2$s. - Izzivanje ni mogoče, zaradi začasnega %s ratinga. - %s sprejema izzive samo od prijateljev. Pogojne predpoteze Dodaj trenutno varianto Igrajte varianto, za ustvarjanje pogojnih predpotez @@ -919,7 +911,4 @@ v %3$s Ne moreš še objavljati na forumu. Igraj nekaj iger! Naroči se Odjava - Izziv je zavrnjen - Izziv je sprejet! - Izziv je preklican. diff --git a/translation/dest/site/sq-AL.xml b/translation/dest/site/sq-AL.xml index 63b84588b5..ec6b2fce2e 100644 --- a/translation/dest/site/sq-AL.xml +++ b/translation/dest/site/sq-AL.xml @@ -382,7 +382,6 @@ Më shumë Anëtar që prej Hyrja e fundit %s - Sfidoni në një lojë Lojtari Lista Grafiku @@ -733,7 +732,6 @@ Gabim te zakonshme Njoftime - Sfida Vleresimi: %s %s sekonda te besh levizjen e pare @@ -780,12 +778,6 @@ Hapjet Lojë e mesme Fund-lojët - Ju lutemi regjistrohuni për të ftoj sfidën. - Ju nuk mund ta ftoni %s. - %s nuk pranon ftesa. - Vlerësimi juaj %1$s është shumë larg %2$s. - Nuk mund të sfidoj për shkak të vlerësimit të përkohshëm %s. - %s vetëm pranon ftesa nga miqtë. Condizionale lëvizje Shtoni variacion Luaj një variant për të krijuar variacione diff --git a/translation/dest/site/sr-SP.xml b/translation/dest/site/sr-SP.xml index 613b8971da..64336c2c1f 100644 --- a/translation/dest/site/sr-SP.xml +++ b/translation/dest/site/sr-SP.xml @@ -9,7 +9,7 @@ Ваш потез %1$s ниво %2$s Ниво - Снага + Снага Укључи/искључи ћаскање Укључи/искључи звук Ћаскање @@ -411,7 +411,6 @@ Више Члан од Последња посета %s - Изазови на партију Играч Списак Графикон @@ -771,7 +770,6 @@ Грешка Прилагођено Обавештења - Изазови Рејтинг: %s %s секунд да одиграте први потез @@ -820,12 +818,6 @@ Отварање Средишњица Завршница - Молимо вас да се региструјете како би послали изазове. - Не можете да изазовете %s. - %s не прихвата изазове. - Ваш рејтинг %1$s, је превише далеко од %2$s. - Не можете изазвати јер вам је рејтинг %s привремен. - %s прихвата само изазове од пријатеља. Условни пре-потези Додајте тренутну варијацију Играјте варијацију да направите условне пре-потезе @@ -880,7 +872,4 @@ Још увек не можете писати поруке на овај форум. Играјте још коју партију! Претплати се Одјавите претплату - Изазов одбијен - Изазов прихваћен! - Изазов отказан. diff --git a/translation/dest/site/sv-SE.xml b/translation/dest/site/sv-SE.xml index 293b3bc58e..9a869d6cfe 100644 --- a/translation/dest/site/sv-SE.xml +++ b/translation/dest/site/sv-SE.xml @@ -9,7 +9,7 @@ Din tur %1$s nivå %2$s Nivå - Styrka + Styrka Dölj/visa chattrutan Ljud av/på Chatta @@ -383,7 +383,6 @@ Visa mer Medlem sedan Aktiv %s - Utmana till ett parti Spelare Lista Graf @@ -736,7 +735,6 @@ Fel Anpassad Aviseringar - Utmaningar Rating: %s %s sekund kvar för att spela första draget @@ -783,12 +781,6 @@ Öppning Mittparti Slutspel - Vänligen registrera ett konto för att skicka utmaningar. - Du kan inte utmana %s. - %s accepterar inte utmaningar. - Din %1$srating är för långt från %2$s. - Kan inte utmana på grund av provisorisk %srating. - %s accepterar utmaningar endast från vänner. Villkorade förhandsdrag Lägg till aktuell variant Spela en variant för att skapa villkorade förhandsdrag @@ -842,7 +834,4 @@ Du kan inte posta i forumen ännu. Spela några partier! Prenumerera Avprenumerera - Utmaning avböjd - Utmaning accepterad! - Utmaning avbruten. diff --git a/translation/dest/site/ta-IN.xml b/translation/dest/site/ta-IN.xml index 6b3463a151..f1f8f568a0 100644 --- a/translation/dest/site/ta-IN.xml +++ b/translation/dest/site/ta-IN.xml @@ -355,7 +355,6 @@ மேலும் உறுப்பினரான காலம் கடைசி உள்நுழைவு %s - ஆட அழை ஆடி வரிசை வரைவு diff --git a/translation/dest/site/th-TH.xml b/translation/dest/site/th-TH.xml index 10909fda1e..ce153a35c2 100644 --- a/translation/dest/site/th-TH.xml +++ b/translation/dest/site/th-TH.xml @@ -352,7 +352,6 @@ เพิ่มเติม สมาชิกตั้งแต่ ลงชื่อเข้าครั้งล่าสุด %s - ท้าดวลเกม ผู้เล่น รายการ กราฟ @@ -694,7 +693,6 @@ ผิดพลาด กำหนด​เอง การแจ้งเตือน - การท้าดวล ระดับคะแนน: %s %s วินาทีต้องเริ่มเดินตาแรก @@ -739,12 +737,6 @@ การเปิดเกม กลางเกม ท้ายเกม - กรุณาลงทะเบียนเพื่อส่งคำท้าดวล - คุณไม่สามารถท้า %s - %s ไม่รับคำท้า - ระดับคะแนน %1$s ของคุณห่างจาก %2$s เกินไป - ไม่สามารถท้าได้เนื่องจากระดับคะแนน %s ชั่วคราว - %s รับคำท้าจากเพื่อนเท่านั้น การเดินล่วงหน้าแบบมีเงื่อนไข เพิ่มการแปรผันปัจจุบัน เล่นหนึ่งการแปรผัน เพื่อสร้างการเดินล่วงหน้าแบบมีเงื่อนไข diff --git a/translation/dest/site/tk-TM.xml b/translation/dest/site/tk-TM.xml index 1757e551e7..e5253b2db9 100644 --- a/translation/dest/site/tk-TM.xml +++ b/translation/dest/site/tk-TM.xml @@ -352,7 +352,6 @@ kompýuter derňewi, oýun çäti we paýlaşmaga URL alýaňyz. Has köp Agza bolan wagty: Soňky aktiwligi: %s - Eriş Oýunçy Sanaw Grafika @@ -687,7 +686,6 @@ kompýuter derňewi, oýun çäti we paýlaşmaga URL alýaňyz. Näsazlyk Şahsy Duýduryşlar - Erşikler Reýting: %s Ilkinji göçüm üçin %s sekunt @@ -734,12 +732,6 @@ kompýuter derňewi, oýun çäti we paýlaşmaga URL alýaňyz. Açylyş Oýun ortasy Oýun ahyry - Erişmek üçin registrasiýa ediň. - %s agza erşip bilmersiňiz. - %s erşikleri kabul edenok. - %1$s reýtingiňiz %2$s agzadan diýseň daş. - Wagtlaýyn %s reýting dowamynda erşip bolmaz. - %s diňe dostlaryndan gelen erşikleri kabul edýär. Şertli öň-göçümler Häzirki warianty goş Şertli öň-göçümleri goşmak üçin bir wariant oýnaň diff --git a/translation/dest/site/tl-PH.xml b/translation/dest/site/tl-PH.xml index 67de4ee4fb..c535ecb605 100644 --- a/translation/dest/site/tl-PH.xml +++ b/translation/dest/site/tl-PH.xml @@ -382,7 +382,6 @@ Higit pa Miyembro mula pa noong Aktibo %s - Hamunin sa isang laro Manlalaro Listahan Graph @@ -732,7 +731,6 @@ Mali Pinasadya Mga Notipikasyon - Mga Hamon Marka: %s %s segundo na gawin ang unang galaw @@ -779,12 +777,6 @@ Bukasan Sa gitna ng laro Taposin ang laro - Magrehistro upang magpadala ng mga hamon. - Hindi mo pwedeng hamonin %s. - %s ay hindi tumatanggap ng mga hamon. - Ang iyong %1$s marka ay masyadong malayo sa %2$s. - Hindi makatanggap ng hamon dahil sa probisyonal na %s marka. - %s tumatanggap lamang ng hamon galing sa mga kaibigan. Kondisyonal na mga bago gumalaw Magdagdag ng kasalukuyang pagkakaiba Maglaro ng pagkakaiba upang makagawa ng kondisyonal na mga paggalaw diff --git a/translation/dest/site/tp-TP.xml b/translation/dest/site/tp-TP.xml index 14d8e54e20..38cf192e34 100644 --- a/translation/dest/site/tp-TP.xml +++ b/translation/dest/site/tp-TP.xml @@ -9,6 +9,7 @@ sina o musi musi %1$s pi nanpa pona %2$s mute pona + wawa pi toki insa toki o lon ala lon? kalama tomo toki @@ -54,6 +55,7 @@ ilo sona li lukin e musi ilo sona li ken pana e sona musi sona musi + sona pi tawa kama: %s kepeken ilo pana pi lipu sona ilo lawa li kama... sona tan telo walo lon sewi @@ -80,8 +82,15 @@ walo / ala / pimeja musi namako musi pona pona + + lawa mije li moli lon tawa %s + lawa mije li moli lon tawa %s + musi ala li lon ilo open + ilo lukin pi tawa open pi nasin %s + nasin pi tenpo tawa 50 li toki e ni: jan ante li anpa ala + nasin pi tenpo tawa 50 li toki e ni: jan ni li anpa ala ali li pali a! pana lon insa ma ni e PGN weka @@ -140,6 +149,14 @@ tenpo suno mute wan musi li kepeken e tenpo suno pi mute seme tenpo suno wan + + tenpo suno %s + tenpo suno %s + + + tenpo Ola %s + tenpo Ola %s + tenpo nanpa nanpa mute @@ -219,6 +236,11 @@ o kama jo e musi nanpa Glicko + + o pana e tenpo Sekunta %s + o pana e tenpo Sekunta %s + + jan pi lipu jan ni li pali e ijo ni: ona li ike tawa nasin lawa pi kulupu Lichess jan ni li sewi e nanpa ona kepeken ilo kama jo sin o toki e kama jo sin @@ -231,6 +253,10 @@ musi pi musi mute musi ale mani pi musi mute + + nanpa pona %s pi utala suli musi + nanpa pona %s pi utala suli musi + ma sona %s ma sona %s @@ -275,10 +301,17 @@ o musi lon lipu pona. sina wile ala pana e nimi li wile ala e ilo. sitelen esun pakala e pake jan pi tawa poka sina jan %1$s li kama tawa poka jan %2$s + + jan tawa poka %s + jan tawa poka %s + + + tawa poka jan %s + tawa poka jan %s + o sona e mute tenpo pi kama lon ma ni tenpo pini pi lon ma ni %s - wile musi jan sewi tawa anpa sitelen @@ -288,6 +321,9 @@ o musi lon lipu pona. sina wile ala pana e nimi li wile ala e ilo. sitelen esun jan li pini pona nanpa pali e musi sin + ante nasin mute + mi toki insa e ni: sina wile ala ante e ona. + o pana lukin e ante nasin mute kama tawa weka nanpa @@ -296,8 +332,10 @@ o musi lon lipu pona. sina wile ala pana e nimi li wile ala e ilo. sitelen esun musi awen pi kama pona tan jan musi li open + sina musi lon tenpo ni! pini pona pali pona seme + utala musi suli li pini pini pona walo pini pona pimeja sama @@ -311,6 +349,8 @@ o musi lon lipu pona. sina wile ala pana e nimi li wile ala e ilo. sitelen esun o kama jo e musi lon open sina wile e nimi pi sona ala o toki tawa jan sewi pi jan %s + nanpa wawa tan kulupu %s + mute pi pini musi: %s lipu jan ante e sona jan nimi jan @@ -363,16 +403,28 @@ o musi lon lipu pona. sina wile ala pana e nimi li wile ala e ilo. sitelen esun toki pi jan ante ala o sitelen e toki pi kulupu ala lon poki ni nimi jan anu nimi pi tawa li ike + nanpa awen ike o pana e lipu tawa mi kepeken linja nimi pi tawa lon tenpo ni nimi pi tawa sin o toki sin e nimi tawa ain + nimi awen sin tu li ante + wawa pi nimi awen + suli tenpo lon open + suli tenpo sin lon tenpo tawa ken sona pi sina taso + nasin pi len sona + jan ante li ken ala ken \"tawa poka\" sina? + jan ante li ken ala ken pana e wile musi tawa sina? + jan ante li ken ala ken pana e wile ni tawa sina: ona li wile lukin e musi tawa kama sona? kalama tawa ala tawa lon tenpo lili tawa tawa lon tenpo suli + lon insa pi supa musi + lon selo pi supa musi + lon musi pi tenpo suli taso tenpo ale tenpo ala la pona @@ -391,11 +443,21 @@ o musi lon lipu pona. sina wile ala pana e nimi li wile ala e ilo. sitelen esun kama open: sona ale li open. sina wile pana sona ala. ma sina + o toki e sina. sina jan seme? ijo seme li pona tawa sina? sina musi e musi pi jan lawa moli kepeken nasin seme? jan musi seme li pona tawa sina? + + jan %s li weka wawa + jan %s li weka wawa + + o pana e lipu pi jan ni: sina weka wawa e ona jan ilo sona walo anu pimeja ilo tenpo sina ken ala. + sina jo ala e linja sona. sina ken musi e musi ni: ona li wile ala e linja sona. + sina jo e linja sona tawa lipu \"lichess.org\". + sina kepeken ala e lipu lawa sina lon tenpo ni + sina kepeken e lipu lawa sina lon tenpo ni lon supa musi poki sona jan ante @@ -405,29 +467,47 @@ o musi lon lipu pona. sina wile ala pana e nimi li wile ala e ilo. sitelen esun kulupu ilo musi tenpo poka + o pana e lipu PGN tawa jan ante o musi kepeken linja musi lon ala ilo sona o pana e nimi tawa musi + sina wile sitelen lon ma ni + nasin pi poki e-mail ni li ike + nasin pi poki e-mail ni li ike. o lukin e ona, o weka e pakala, o pali lon tenpo sin. + jan ante li kepeken e poki e-mail ni + nanpa wawa ona li lon poka %s pi nanpa wawa sina jan pona taso lipu open + tawa pi tomo utala en lawa mije lon tenpo sama walo O-O pimeja O-O + + sitelen %s lon tomo toki + sitelen %s lon tomo toki + tenpo musi: %s o lukin e musi pi jan ni tenpo pi ilo lukin: %s o lukin + jan ni li pali e sitelen tawa pi musi ona pi ilo toki + jan ni li pali e lipu kon pi ilo Lichess o kama sona e + %s li seme? musi %1$s li esun ala (%2$s), li pona, li sitelen esun ala, li ilo pana pi lipu sona pi tan open lon la o pana e ijo + nasin lawa pi ilo ni lon pi pali ilo + musi mute lon tenpo sama jan suli kule pi jan lawa li %s open suli + lipu pi pali ale pi ilo nena o tawa sinpin/monsi o tawa open/pini + o pana (ala) lukin e toki anpa o open e musi pi musi mute o musi e musi pi tenpo lili! musi mute li lon. musi pi musi mute li lon ala @@ -445,6 +525,8 @@ o musi lon lipu pona. sina wile ala pana e nimi li wile ala e ilo. sitelen esun tawa jan ale nasin pi jan lili o ken e nasin pi jan lili + ante la, sina ken %s. + pakala e linja ale nasin Bullet, Blitz, Classical sona musi sona %2$s li pona tawa %1$s @@ -462,10 +544,14 @@ o musi lon lipu pona. sina wile ala pana e nimi li wile ala e ilo. sitelen esun sitelen lipu suli pi supa musi sitelen ijo + nasin lawa pi musi pi jan lawa moli jan pi sona pana + lipu PGN li ike + lipu FEN li ike pakala nasin ante toki kama + nanpa wawa: %s nasin ante li %s pona pona li %s o lukin e tawa pona @@ -485,17 +571,28 @@ o musi lon lipu pona. sina wile ala pana e nimi li wile ala e ilo. sitelen esun tenpo lon la kama open musi insa musi pi pini kama - sina ken ala musi e jan %s. - jan %s li wile ala e wile musi. o pali e %s pakala a :( sina wile awen lon tenpo lili. tenpo kama la sina ken %s lon sin. tan seme? mi wile e musi pona tawa jan ale. + sina lukin ale e lipu ni la, sina pona! + nanpa pona pi musi ale + nanpa pona pi kulupu musi ni + mi toki wawa e ni: mi musi la, jan ante en lipu en ilo sona li pona ala e musi mi. + mi toki wawa e ni: mi pona tawa jan ante lon tenpo ale. + mi toki wawa e ni: mi pali ala e lipu lawa ante tawa mi. + mi toki wawa e ni: mi pali ala e ijo ni: ona li ike tawa nasin lawa pi ilo Lichess. o ante nasin Rapid nasin Classical + musi pi tenpo lili lili lili (tenpo Sekunta 30 li suli) + musi pi tenpo lili lili (tenpo Minuta 3 li suli) + musi pi tenpo lili (tenpo Minuta 3 - 8) + musi pi tenpo pi suli lili (tenpo Minuta 8 - 25) + musi pi tenpo suli (tenpo Minuta 25 li lili) + musi pi sitelen lipu (tawa lon tenpo suno wan anu mute) suli kulupu %1$s o kama jo e sona diff --git a/translation/dest/site/tr-TR.xml b/translation/dest/site/tr-TR.xml index 94dff48669..9ec245e3a0 100644 --- a/translation/dest/site/tr-TR.xml +++ b/translation/dest/site/tr-TR.xml @@ -9,7 +9,7 @@ Sıra sizde %1$s seviye %2$s Seviye - Kuvvet + Kuvvet Sohbeti aç/kapat Sesi aç/kapat Sohbet @@ -383,7 +383,6 @@ Daha fazla Üyelik tarihi Aktif %s - Oyun teklif et Oyuncu Liste Grafik @@ -736,7 +735,6 @@ Hata Özel Bildirimler - Meydan okumalar Puan: %s İlk hamle için son %s saniye @@ -783,12 +781,6 @@ Açılış Oyunortası Oyunsonu - Oyun daveti göndermek için üye olun. - %s adlı oyuncuya oyun daveti gönderemezsiniz. - %s oyun davetlerini kabul etmiyor. - %1$s puanınız %2$s adlı oyuncudan çok uzak. - %s puanınız geçici olduğu için başka oyunculara meydan okuyamazsınız. - %s sadece arkadaşlarından gelen oyun davetlerini kabul ediyor. Şartlı ön hamle Mevcut varyantı ekle Koşullu ön hamleler yapmak için bir varyasyon oynayın @@ -842,7 +834,4 @@ Şu anda bu forumlarda konu açamazsınız. Biraz oyun oynamayı deneyebilirsiniz :) Abone ol Abonelikten çık - Oyun teklifi reddedildi - Oyun teklifi kabul edildi! - Oyun teklifi iptal edildi. diff --git a/translation/dest/site/tt-RU.xml b/translation/dest/site/tt-RU.xml index be5ca0a0d1..2ab38a708d 100644 --- a/translation/dest/site/tt-RU.xml +++ b/translation/dest/site/tt-RU.xml @@ -355,7 +355,6 @@ Тагын Регистрация көне: %s кергән иде - Уенга чакыру Уенчы Тезем График diff --git a/translation/dest/site/uk-UA.xml b/translation/dest/site/uk-UA.xml index d3a785aec0..d1e5db60bc 100644 --- a/translation/dest/site/uk-UA.xml +++ b/translation/dest/site/uk-UA.xml @@ -9,7 +9,7 @@ Ваш хід %1$s рівень %2$s Рівень - Рівень + Рівень Вимк./увімк. чат Вимк./увімк. звук Чат @@ -438,7 +438,6 @@ Більше Зареєстрований Був в мережі %s - Виклик на гру Гравець Список Графік @@ -803,7 +802,6 @@ Помилка Своя гра Сповіщення - Виклики Рейтинг: %s %s секунда на перший хід @@ -854,12 +852,6 @@ Дебют Міттельшпіль Ендшпіль - Зареєструйтесь, щоб викликати суперників на гру. - Ви не можете викликати на гру %s. - %s не приймає викликів. - Ваш рейтинг %1$s дуже далекий від %2$s. - Неможливо через недостовірність рейтингу %s. - %s приймає виклики тільки від друзів. Умовні ходи на випередження Додати поточний варіант Виконайте ходи на шахівниці, щоб встановити умовні ходи на випередження @@ -915,7 +907,4 @@ Ви не можете писати нові повідомлення у форумах. Зіграйте кілька ігор! Підписатись Відписатись - Виклик відхилено - Виклик прийнято! - Виклик скасовано. diff --git a/translation/dest/site/ur-PK.xml b/translation/dest/site/ur-PK.xml index 4587a47824..1d1e2cc2f7 100644 --- a/translation/dest/site/ur-PK.xml +++ b/translation/dest/site/ur-PK.xml @@ -380,7 +380,6 @@ مزید رکنیت گذشتہ سائن ان %s - مقابلے کی دعوت دیں کھلاڑی فہرست گراف @@ -729,7 +728,6 @@ نقص من پسند اطلاعات - مقابلے درجہ: %s پہلی چال چلنے کے لیے %s سیکنڈ @@ -776,11 +774,6 @@ ابتدا درمیان کی بازی اختتامی بازی - رجسٹر کریں اور چیلنجز بھیجیں. - آپ %s کو چیلینج نہیں کر سکتے. - %s چیلنج قبول نہیں کرتے. - آپ کا درجہ %1$s %2$s سے بہت دور ہے. - %s صرف اپنے دوستوں کے چیلنجز قبول کرتا ہے. مشروط پری مووز موجودہ لائن کو شامل کریں ایک لائن کھیلیں تا کہ مشروط پری مووز بنا سکیں diff --git a/translation/dest/site/uz-UZ.xml b/translation/dest/site/uz-UZ.xml index cd491a8f4e..3bb430b434 100644 --- a/translation/dest/site/uz-UZ.xml +++ b/translation/dest/site/uz-UZ.xml @@ -380,7 +380,6 @@ Ko\'proq A\'zo bo\'lgan vaqti Faollar %s - Shaxmat o\'ynashga taklif qilish O\'yinchi Ro‘yxat Grafik @@ -729,7 +728,6 @@ Xatolik Boshqa Xabarlar - O\'yin takliflari Reyting: %s Birinchi yurish uchun %s sekund @@ -776,12 +774,6 @@ Debyutlar Mittelshpil O\'yin oxiri - Iltimos o\'yinga chorlash uchun ro\'yhatdan o\'ting. - Siz %s bilan bellasha olmaysiz. - %s bellashishni qabul qilmadi. - Sizning %1$s reytingingiz %2$s dan ancha uzoq. - %s taxminiy belgilangan reyting bilan bellashib bo\'lmaydi. - %s ta do\'stlardan qabul qilingan bellashuvlar. Avvaldan shartli yurishlar Joriy yurishlarni qo\'sh Shartli avvaldan yurishlarni yaratish uchun variatsiyani o\'ynash diff --git a/translation/dest/site/vi-VN.xml b/translation/dest/site/vi-VN.xml index c48410c5a4..098c01e878 100644 --- a/translation/dest/site/vi-VN.xml +++ b/translation/dest/site/vi-VN.xml @@ -9,7 +9,7 @@ Lượt của bạn %1$s cấp độ %2$s Cấp độ - Độ mạnh + Độ mạnh Bật/tắt chat Bật/Tắt âm thanh Trò chuyện @@ -356,7 +356,6 @@ Thêm Thành viên từ Lần đăng nhập cuối %s - Yêu cầu chơi Người chơi Danh sách Biểu đồ @@ -702,7 +701,6 @@ Lỗi Tuỳ biến Thông báo - Thách đấu Rating: %s Thời gian còn lại để đi nước đầu tiên: %s @@ -747,12 +745,6 @@ Khai cuộc Trung cuộc Tàn cuộc - Xin vui lòng đăng ký để gửi những lời thách đấu. - Bạn không thể thách đấu %s. - %s không chấp nhận những lời thách đấu. - Chỉ số %1$s của bạn quá xa so với %2$s. - Không thể thách đấu do xếp hạng %s tạm thời. - %s chỉ chấp nhận những thách thức từ bạn bè. Nước đi trước có điều kiện Thêm biến thể hiện tại Chơi một biến thể để tạo ra nước đi trước có điều kiện @@ -805,7 +797,4 @@ Bạn bây giờ chưa thể đăng bài lên diễn đàng được. Chơi vài trận đi! Đăng kí Hủy đăng ký - Thử thách đấu bị từ chối - Lời thách đấu được chấp nhận! - Lời thách đấu bị hủy bỏ. diff --git a/translation/dest/site/zh-CN.xml b/translation/dest/site/zh-CN.xml index 3932d59e86..7ece137336 100644 --- a/translation/dest/site/zh-CN.xml +++ b/translation/dest/site/zh-CN.xml @@ -355,7 +355,6 @@ 更多 注册日期 最近登录%s - 挑战 棋手 列表 图表 @@ -698,7 +697,6 @@ 错误 自定义 通知 - 挑战 积分:%s 还剩%s秒走第一步 @@ -743,12 +741,6 @@ 开局 中盘 残局 - 发送挑战前请注册。 - 您不能挑战%s。 - %s不接受挑战。 - 您的%1$s积分与%2$s相差太远。 - 因为您的%s排名不够稳定,您不能进行挑战。 - %s只接受朋友的挑战。 条件预先走棋 添加当前变着 进入变着以创建条件预先走棋 diff --git a/translation/dest/site/zh-TW.xml b/translation/dest/site/zh-TW.xml index 53a08decad..b39a189e5c 100644 --- a/translation/dest/site/zh-TW.xml +++ b/translation/dest/site/zh-TW.xml @@ -9,7 +9,7 @@ 輪到您了 %1$s 難度 %2$s 難度 - 強度 + 強度 聊天開關 聲音開關 聊天 @@ -356,7 +356,6 @@ 更多 註冊日期 最近登入 %s - 挑戰 棋手 列表 圖表 @@ -702,7 +701,6 @@ 錯誤 自訂設定 通知 - 挑戰 評分:%s 在%s秒前須下出第一步 @@ -747,12 +745,6 @@ 開局 中場 殘局 - 請登入以挑戰您的朋友 - 您不能挑戰%s - %s不接受挑戰 - 您的%1$s評分與%2$s相差太遠 - 由於您的%s積分不夠穩定,無法進行挑戰。 - %s只接受好友的挑戰 預設棋譜 加入現有變化 著一步不同的位置以創建預估走位 @@ -805,7 +797,4 @@ 您目前不能發表文章在論壇裡,先下幾盤棋吧! 訂閱 取消訂閱 - 發起的對弈已拒絕 - 發起的對弈已接受 - 發起的對弈已撤銷 diff --git a/translation/dest/streamer/es-ES.xml b/translation/dest/streamer/es-ES.xml index 79ab90109e..d08c1158d0 100644 --- a/translation/dest/streamer/es-ES.xml +++ b/translation/dest/streamer/es-ES.xml @@ -22,7 +22,7 @@ Obtén un icono de presentador en tu perfil de Lichess. Alcanza la cima de la lista de presentadores. Notifica a tus seguidores de Lichess. - Mostrar tu transmisión en tus juegos, torneos y estudios. + Muestra tu transmisión en tus juegos, torneos y estudios. Tu transmisión está aprobada. Tu transmisión está siendo revisada por los moderadores. Por favor, rellena la información como presentador y sube una foto. diff --git a/translation/dest/study/zh-TW.xml b/translation/dest/study/zh-TW.xml index 221573bcf4..dbd08f5bc1 100644 --- a/translation/dest/study/zh-TW.xml +++ b/translation/dest/study/zh-TW.xml @@ -40,16 +40,62 @@ 新標籤 對於目前局面的評論 對於此棋步的評論 + 以圖形標註 + 因為太短,所以此章節無法被分析 + 只有研究專案編輯者才能要求電腦分析 + 請求伺服器完整的分析主要走法 + 確認此章節已完成,您只能要求分析一次 + 所有的SYNC成員處於相同局面 + 下棋中 第一個 上一個 下一個 最後一個 + 分享 & 導出 複製 + 研究PGN + 下載所有棋局 + 章節PGN + 下載棋局 + 研究連結 + 直播連結 + 目前章節連結 + 目前棋局連結 + 您可以將此複製到論壇以嵌入 + 從起始局面開始 + 從%s開始 + 嵌入到您的網站或部落格 + 閱讀更多與嵌入有關的內容 + 只有公開的研究可以嵌入! + 打開 + %1$s,由%2$s提供 + 找無此研究 + 編輯章節 + 建立新章節 + 視角 + 分析模式 + 置頂留言 + 儲存章節 + 清除註記 + 刪除章節 + 刪除此章節? 此動作將無法取消! + 清除此章節中的所有註釋和圖形嗎? + 一般分析 隱藏下一步 + 章節%s 空的 編輯器 + 以連結導入棋局 + 以PGN文件導入棋局 自動 + + 在此貼上PGN文本,最多可導入%s個棋局 + + 棋局連結,一行一個 + 建立章節 + 建立研究 編輯此研究 + 權限 公開的 僅限邀請 可以複製 @@ -57,6 +103,8 @@ 僅自己 成員 所有人 + 允許同步 + 置頂研究留言 開始 存檔 刪除此研究 From 3eb6cbc92dd08a2832e4d113d550e33e607acb1b Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Sat, 23 Jan 2021 15:29:51 +0100 Subject: [PATCH 50/64] fix analysis background was broken by https://github.com/ornicar/lila/commit/55643c08496664455abe6152f00a0f643a538b77#diff-1008d89304d27829201b391f881cd3b5495e9dd92101a7ea1fca12df5f4c4899 because formatting moved a comment around in https://github.com/ornicar/lila/commit/29befe8ce44006e5baf3d6ca51ca3137bf0d1c68#diff-1008d89304d27829201b391f881cd3b5495e9dd92101a7ea1fca12df5f4c4899L12 --- ui/analyse/css/_tools.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/analyse/css/_tools.scss b/ui/analyse/css/_tools.scss index 2a4744d845..41ea7f8315 100644 --- a/ui/analyse/css/_tools.scss +++ b/ui/analyse/css/_tools.scss @@ -2,7 +2,7 @@ &__tools { @extend %box-neat-force, %flex-column; - max-height: 100vh; + background: $c-bg-box; .ceval { flex: 0 0 38px; From 4d1fa8b2bfbe94dbcffe8891fba4e974f5201472 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Sun, 24 Jan 2021 08:32:22 +0100 Subject: [PATCH 51/64] {master} add NoBot/OnlyBot challenge decline reasons - closes #7993 --- modules/challenge/src/main/Challenge.scala | 4 +++- modules/i18n/src/main/I18nKeys.scala | 2 ++ translation/source/challenge.xml | 2 ++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/modules/challenge/src/main/Challenge.scala b/modules/challenge/src/main/Challenge.scala index 1cf7dc898f..a7c49b7406 100644 --- a/modules/challenge/src/main/Challenge.scala +++ b/modules/challenge/src/main/Challenge.scala @@ -135,10 +135,12 @@ object Challenge { case object Casual extends DeclineReason(I18nKeys.challenge.declineCasual) case object Standard extends DeclineReason(I18nKeys.challenge.declineStandard) case object Variant extends DeclineReason(I18nKeys.challenge.declineVariant) + case object NoBot extends DeclineReason(I18nKeys.challenge.declineNoBot) + case object OnlyBot extends DeclineReason(I18nKeys.challenge.declineOnlyBot) val default: DeclineReason = Generic val all: List[DeclineReason] = - List(Generic, Later, TooFast, TooSlow, TimeControl, Rated, Casual, Standard, Variant) + List(Generic, Later, TooFast, TooSlow, TimeControl, Rated, Casual, Standard, Variant, NoBot, OnlyBot) def apply(key: String) = all.find { d => d.key == key.toLowerCase || d.trans.key == key } | Generic } diff --git a/modules/i18n/src/main/I18nKeys.scala b/modules/i18n/src/main/I18nKeys.scala index a28feee654..c64af4338f 100644 --- a/modules/i18n/src/main/I18nKeys.scala +++ b/modules/i18n/src/main/I18nKeys.scala @@ -1968,6 +1968,8 @@ val `declineRated` = new I18nKey("challenge:declineRated") val `declineCasual` = new I18nKey("challenge:declineCasual") val `declineStandard` = new I18nKey("challenge:declineStandard") val `declineVariant` = new I18nKey("challenge:declineVariant") +val `declineNoBot` = new I18nKey("challenge:declineNoBot") +val `declineOnlyBot` = new I18nKey("challenge:declineOnlyBot") } } diff --git a/translation/source/challenge.xml b/translation/source/challenge.xml index 2eafa9aecf..dedbdae844 100644 --- a/translation/source/challenge.xml +++ b/translation/source/challenge.xml @@ -20,4 +20,6 @@ Please send me a casual challenge instead. I'm not accepting variant challenges right now. I'm not willing to play this variant right now. + I'm not accepting challenges from bots. + I'm only accepting challenges from bots. From 256ef3c7fbf4b1eedcee20976a135537767dbecd Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Sun, 24 Jan 2021 10:39:49 +0100 Subject: [PATCH 52/64] {master} fix colors in large team battles --- ui/tournament/css/_team-battle.scss | 18 ++++++++++++------ ui/tournament/src/ctrl.ts | 8 ++++++++ ui/tournament/src/interfaces.ts | 1 + ui/tournament/src/view/battle.ts | 6 ++++-- 4 files changed, 25 insertions(+), 8 deletions(-) diff --git a/ui/tournament/css/_team-battle.scss b/ui/tournament/css/_team-battle.scss index cf5dd0506b..81053fbd57 100644 --- a/ui/tournament/css/_team-battle.scss +++ b/ui/tournament/css/_team-battle.scss @@ -1,15 +1,16 @@ $team-colors: (0: hsl(274, 100%, 59%), 1: hsl(240, 100%, 67%), 2: #008000, 3: #b22222, 4: hsl(16, 80%, 62%), 5: #9acd32, 6: #ff4500, 7: #2e8b57, 8: #daa520, 9: hsl(32, 75%, 47%)); -@each $index, $color in $team-colors { - team.ttc-#{$index} { - color: #{$color}; - } -} - team { padding: 1px 5px; font-size: .8em; font-weight: bold; + color: $c-brag; +} + +@each $index, $color in $team-colors { + team.ttc-#{$index} { + color: #{$color}; + } } .tour__player-info team { @@ -105,6 +106,11 @@ team { &--full { td { padding: 2rem 1rem; + + &.team { + color: $c-brag; + font-weight: bold; + } } } } diff --git a/ui/tournament/src/ctrl.ts b/ui/tournament/src/ctrl.ts index 3c3ef7d202..c16fad51d3 100644 --- a/ui/tournament/src/ctrl.ts +++ b/ui/tournament/src/ctrl.ts @@ -44,6 +44,7 @@ export default class TournamentController { this.scrollToMe(); sound.end(this.data); sound.countDown(this.data); + this.recountTeams(); this.redirectToMyGame(); } @@ -64,11 +65,18 @@ export default class TournamentController { sound.end(data); sound.countDown(data); this.joinSpinner = false; + this.recountTeams(); this.redirectToMyGame(); }; + myGameId = () => this.data.me?.gameId; + private recountTeams() { + if (this.data.teamBattle) + this.data.teamBattle.hasMoreThanTenTeams = Object.keys(this.data.teamBattle.teams).length > 10; + } + private redirectToMyGame() { const gameId = this.myGameId(); if (gameId) this.redirectFirst(gameId); diff --git a/ui/tournament/src/interfaces.ts b/ui/tournament/src/interfaces.ts index e9a6d42715..9ca78df476 100644 --- a/ui/tournament/src/interfaces.ts +++ b/ui/tournament/src/interfaces.ts @@ -59,6 +59,7 @@ export interface TeamBattle { [id: string]: string }; joinWith: string[]; + hasMoreThanTenTeams?: boolean; } export interface RankedTeam { diff --git a/ui/tournament/src/view/battle.ts b/ui/tournament/src/view/battle.ts index 2256fb9b33..58e85b9687 100644 --- a/ui/tournament/src/view/battle.ts +++ b/ui/tournament/src/view/battle.ts @@ -4,7 +4,6 @@ import { h } from 'snabbdom' import { TeamBattle, RankedTeam, TournamentData, MaybeVNode } from '../interfaces'; import { VNode } from 'snabbdom/vnode'; - export function joinWithTeamSelector(ctrl: TournamentController) { const onClose = () => { ctrl.joinWithTeamSelector = false; @@ -78,7 +77,10 @@ function myTeam(ctrl: TournamentController, battle: TeamBattle): MaybeVNode { } export function teamName(battle: TeamBattle, teamId: string): VNode { - return h('team.ttc-' + Object.keys(battle.teams).indexOf(teamId), battle.teams[teamId]); + return h( + battle.hasMoreThanTenTeams ? 'team' : 'team.ttc-' + Object.keys(battle.teams).indexOf(teamId), + battle.teams[teamId] + ); } function teamTr(ctrl: TournamentController, battle: TeamBattle, team: RankedTeam) { From 8989b23bc2cd6af10716ff280529edc70f55ca8a Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Sun, 24 Jan 2021 15:54:21 +0100 Subject: [PATCH 53/64] {master} lazy fix xss in own studies topic manager no occurence of it found in database --- ui/analyse/src/study/topics.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/analyse/src/study/topics.ts b/ui/analyse/src/study/topics.ts index ee5e6ab73a..e9437773a1 100644 --- a/ui/analyse/src/study/topics.ts +++ b/ui/analyse/src/study/topics.ts @@ -63,7 +63,7 @@ export function formView(ctrl: TopicsCtrl, userId?: string): VNode { }, [ h('textarea', { hook: onInsert(elm => setupTagify(elm, userId)) - }, ctrl.getTopics().join(', ')), + }, ctrl.getTopics().join(', ').replace(/[<>]/g, '')), h('button.button', { type: 'submit' }, ctrl.trans.noarg('apply')) From 3e594abd767553e6e696944f1dabf3cc799cb925 Mon Sep 17 00:00:00 2001 From: Niklas Fiekas Date: Sun, 24 Jan 2021 17:36:28 +0100 Subject: [PATCH 54/64] Revert "{master} lazy fix xss in own studies topic manager" This reverts commit 8989b23bc2cd6af10716ff280529edc70f55ca8a. --- ui/analyse/src/study/topics.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/analyse/src/study/topics.ts b/ui/analyse/src/study/topics.ts index e9437773a1..ee5e6ab73a 100644 --- a/ui/analyse/src/study/topics.ts +++ b/ui/analyse/src/study/topics.ts @@ -63,7 +63,7 @@ export function formView(ctrl: TopicsCtrl, userId?: string): VNode { }, [ h('textarea', { hook: onInsert(elm => setupTagify(elm, userId)) - }, ctrl.getTopics().join(', ').replace(/[<>]/g, '')), + }, ctrl.getTopics().join(', ')), h('button.button', { type: 'submit' }, ctrl.trans.noarg('apply')) From 2c872a031b4effc0fa8c532f8aad720aa1e420e6 Mon Sep 17 00:00:00 2001 From: Niklas Fiekas Date: Sun, 24 Jan 2021 17:57:35 +0100 Subject: [PATCH 55/64] install tagify from npm --- .gitignore | 1 + public/vendor/tagify/tagify.min.js | 7 ------- ui/site/rollup.config.js | 5 +++++ 3 files changed, 6 insertions(+), 7 deletions(-) delete mode 100644 public/vendor/tagify/tagify.min.js diff --git a/.gitignore b/.gitignore index a89dbcc786..95c1c83558 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ public/compiled public/vendor/bar-rating public/vendor/highcharts-4.2.5 public/vendor/hopscotch +public/vendor/tagify public/vendor/stockfish.wasm public/vendor/stockfish-mv.wasm public/vendor/stockfish.js diff --git a/public/vendor/tagify/tagify.min.js b/public/vendor/tagify/tagify.min.js deleted file mode 100644 index 14e1b4774f..0000000000 --- a/public/vendor/tagify/tagify.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Tagify (v 3.7.0)- tags input component - * By Yair Even-Or - * Don't sell this code. (c) - * https://github.com/yairEO/tagify - */ -!function(t,e){"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?module.exports=e():t.Tagify=e()}(this,function(){"use strict";function g(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),i.push.apply(i,s)}return i}function u(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function p(t){return function(t){if(Array.isArray(t)){for(var e=0,i=new Array(t.length);e[\r\n ]+\<").replace(/(<.*?>)|\s+/g,function(t,e){return e||" "}):""}function a(t){return t.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/`|'/g,"'")}function c(t,e,i){function s(t,e){for(var i in e)e.hasOwnProperty(i)&&(f(e[i])?f(t[i])?s(t[i],e[i]):t[i]=Object.assign({},e[i]):t[i]=e[i])}return t instanceof Object||(t={}),s(t,e),i&&s(t,i),t}function t(t,e){if(!t)return console.warn("Tagify: ","invalid input element ",t),this;this.applySettings(t,e||{}),this.state={editing:!1,actions:{},mixMode:{},dropdown:{},flaggedTags:{}},this.value=[],this.listeners={},this.DOM={},c(this,new this.EventDispatcher(this)),this.build(t),this.getCSSVars(),this.loadOriginalValues(),this.events.customBinding.call(this),this.events.binding.call(this),t.autofocus&&this.DOM.input.focus()}return t.prototype={isIE:window.document.documentMode,TEXTS:{empty:"empty",exceed:"number of tags exceeded",pattern:"pattern mismatch",duplicate:"already exists",notAllowed:"not allowed"},DEFAULTS:{delimiters:",",pattern:null,maxTags:1/0,callbacks:{},addTagOnBlur:!0,duplicates:!1,whitelist:[],blacklist:[],enforceWhitelist:!1,keepInvalidTags:!1,mixTagsAllowedAfter:/,|\.|\:|\s/,mixTagsInterpolator:["[[","]]"],backspace:!0,skipInvalid:!1,editTags:2,transformTag:function(){},autoComplete:{enabled:!0,rightKey:!1},dropdown:{classname:"",enabled:2,maxItems:10,searchKeys:[],fuzzySearch:!0,highlightFirst:!1,closeOnSelect:!0,position:"all"}},templates:{wrapper:function(t,e){return'')},tag:function(t,e){return'\n \n
\n ").concat(t,"\n
\n
")},dropdown:function(t){var e=t.dropdown,i="".concat("manual"==e.position?"":"tagify__dropdown tagify__dropdown--".concat(e.position)," ").concat(e.classname).trim();return'
\n
\n
')},dropdownItem:function(t){return"
').concat(t.value,"
")}},customEventsList:["add","remove","invalid","input","click","keydown","focus","blur","edit:input","edit:updated","edit:start","edit:keydown","dropdown:show","dropdown:hide","dropdown:select"],applySettings:function(i,t){var s=this;if(this.DEFAULTS.templates=this.templates,this.settings=c({},this.DEFAULTS,t),this.settings.readonly=i.hasAttribute("readonly"),this.settings.placeholder=i.getAttribute("placeholder")||this.settings.placeholder||"",this.isIE&&(this.settings.autoComplete=!1),["whitelist","blacklist"].forEach(function(t){var e=i.getAttribute("data-"+t);e&&(e=e.split(s.settings.delimiters))instanceof Array&&(s.settings[t]=e)}),"autoComplete"in t&&!f(t.autoComplete)&&(this.settings.autoComplete=this.DEFAULTS.autoComplete,this.settings.autoComplete.enabled=t.autoComplete),i.pattern)try{this.settings.pattern=new RegExp(i.pattern)}catch(t){}if(this.settings.delimiters)try{this.settings.delimiters=new RegExp(this.settings.delimiters,"g")}catch(t){}"select"==this.settings.mode&&(this.settings.dropdown.enabled=0),"mix"==this.settings.mode&&(this.settings.autoComplete.rightKey=!0)},getAttributes:function(t){if("[object Object]"!=Object.prototype.toString.call(t))return"";var e,i,s=Object.keys(t),n="";for(i=s.length;i--;)"class"!=(e=s[i])&&t.hasOwnProperty(e)&&t[e]&&(n+=" "+e+(t[e]?'="'.concat(t[e],'"'):""));return n},getCaretGlobalPosition:function(){var t=document.getSelection();if(t.rangeCount){var e,i,s=t.getRangeAt(0),n=s.startContainer,a=s.startOffset;return 0=o.length)&&(s.removeTag(i.anchorNode.previousElementSibling),s.fixFirefoxLastTagNoCaret(),2==s.DOM.input.children.length&&"BR"==s.DOM.input.children[1].tagName))return s.DOM.input.innerHTML="",!(s.value.length=0);s.value=[].map.call(r,function(t,e){var i=t.__tagifyTagData;if(t.parentNode)return i;s.trigger("remove",{tag:t,index:e,data:i})}).filter(function(t){return t})},50)}return!0}switch(t.key){case"Backspace":this.state.dropdown.visible||""!=e&&8203!=e.charCodeAt(0)||(!0===this.settings.backspace?this.removeTag():"edit"==this.settings.backspace&&setTimeout(this.editTag.bind(this),0));break;case"Esc":case"Escape":if(this.state.dropdown.visible)return;t.target.blur();break;case"Down":case"ArrowDown":this.state.dropdown.visible||this.dropdown.show.call(this);break;case"ArrowRight":var l=this.state.inputSuggestion||this.state.ddItemData;if(l&&this.settings.autoComplete.rightKey)return void this.addTags([l],!0);break;case"Tab":if(!e||"select"==this.settings.mode)return!0;case"Enter":t.preventDefault(),setTimeout(function(){s.state.actions.selectOption||s.addTags(e,!0)})}},onInput:function(t){var e=this.input.normalize.call(this),i=e.length>=this.settings.dropdown.enabled,s={value:e,inputElm:this.DOM.input};if("mix"==this.settings.mode)return this.events.callbacks.onMixTagsInput.call(this,t);s.isValid=this.validateTag({value:e}),this.trigger("input",s),e?this.input.value!=e&&(this.input.set.call(this,e,!1),-1!=e.search(this.settings.delimiters)?this.addTags(e)&&this.input.set.call(this):0<=this.settings.dropdown.enabled&&this.dropdown[i?"show":"hide"].call(this,e)):this.input.set.call(this,"")},onMixTagsInput:function(){var t,e,i,s,n,a,o,r,l=this,d=this.settings;if(this.value.length=d.dropdown.enabled;try{r=(r=this.state.flaggedTags[this.state.tag.baseOffset]).prefix==this.state.tag.prefix&&r.value[0]==this.state.tag.value[0],this.state.flaggedTags[this.state.tag.baseOffset]&&!this.state.tag.value&&delete this.state.flaggedTags[this.state.tag.baseOffset]}catch(t){}(r||s=this.settings.dropdown.enabled&&(this.state.editing.value=n,this.dropdown.show.call(this,n)),this.trigger("edit:input",{tag:i,index:s,data:c({},this.value[s],{newValue:n}),originalEvent:this.cloneEvent(e)})},onEditTagFocus:function(t){this.state.editing={scope:t,input:t.querySelector("[contenteditable]")}},onEditTagBlur:function(t){if(this.state.hasFocus||this.toggleFocusClass(),this.DOM.scope.contains(t)){var e=t.closest(".tagify__tag"),i=this.input.normalize.call(this,t),s=i,n=s!=t.originalValue,a=c({},e.__tagifyTagData,{value:s}),o=this.validateTag(a);if(!i)return this.removeTag(e),void this.onEditTagDone(null,a);n?(this.settings.transformTag.call(this,a),!0===(o=this.validateTag(a))?this.onEditTagDone(e,a):this.trigger("invalid",{data:a,tag:e,message:o})):this.onEditTagDone(e,a)}},onEditTagkeydown:function(t,e){switch(this.trigger("edit:keydown",{originalEvent:this.cloneEvent(t)}),t.key){case"Esc":case"Escape":t.target.textContent=t.target.originalValue,e.__tagifyTagData=e.__tagifyTagData.__originalData;case"Enter":case"Tab":t.preventDefault(),t.target.blur()}},onDoubleClickScope:function(t){var e,i,s=t.target.closest("tag"),n=this.settings;s&&(e=s.classList.contains("tagify__tag--editable"),i=s.hasAttribute("readonly"),"select"==n.mode||n.readonly||e||i||!this.settings.editTags||this.editTag(s),this.toggleFocusClass(!0),this.trigger("dblclick",{tag:s,index:this.getNodeIndex(s),data:this.tagData(s)}))}}},fixFirefoxLastTagNoCaret:function(){var t=this.DOM.input;if(o&&t.childNodes.length&&1==t.lastChild.nodeType)return t.appendChild(document.createTextNode("")),this.setRangeAtStartEnd(!0),!0},editTag:function(e,t){var i=this;t=t||{};var s=(e=e||this.getLastTag()).querySelector(".tagify__tag-text"),n=this.getNodeIndex(e),a=e.__tagifyTagData,o=this.events.callbacks,r=this,l=!0;if(s){if(!(a instanceof Object&&"editable"in a)||a.editable)return e.__tagifyTagData.__originalData=c({},a),e.classList.add("tagify__tag--editable"),s.originalValue=s.textContent,s.setAttribute("contenteditable",!0),s.addEventListener("focus",o.onEditTagFocus.bind(this,e)),s.addEventListener("blur",function(){r.state.editing=!1,setTimeout(o.onEditTagBlur.bind(r),0,s)}),s.addEventListener("input",o.onEditTagInput.bind(this,s)),s.addEventListener("keydown",function(t){return o.onEditTagkeydown.call(i,t,e)}),s.focus(),this.setRangeAtStartEnd(!1,s),t.skipValidation||(l=this.editTagToggleValidity(e,a.value)),s.originalIsValid=l,this.trigger("edit:start",{tag:e,index:n,data:a,isValid:l}),this}else console.warn("Cannot find element in Tag template: ",".tagify__tag-text")},editTagToggleValidity:function(t){var e,i=t.__tagifyTagData;if(i)return e=!(!i.__isValid||1==i.__isValid),t.classList.toggle("tagify--invalid",e),i.__isValid;console.warn("tag has no data: ",t,i)},onEditTagDone:function(t,e){var i=this;e=e||{};var s={tag:t,index:this.getNodeIndex(t),data:e};this.trigger("edit:beforeUpdate",s),delete e.__originalData,t&&(this.editTagToggleValidity(t),this.replaceTag(t,e)),this.trigger("edit:updated",s),this.dropdown.hide.call(this),!0===e.__isValid&&this.getTagElms("tagify--notAllowed").forEach(function(t){var e=i.validateTag(t.__tagifyTagData);!0===e&&(t.__tagifyTagData.__isValid=e,delete i.state.editing.locked,i.replaceTag(t))})},replaceTag:function(t,e){var i=this;e&&e.value||(e=t.__tagifyTagData),e.__isValid&&1!=e.__isValid&&c(e,this.getInvaildTagParams(e,e.__isValid));var s=this.createTagElem(e);this.state.editing.locked||(this.state.editing={locked:!0},setTimeout(function(){return delete i.state.editing.locked},500),t.parentNode.replaceChild(s,t),this.updateValueByDOMTags())},updateValueByDOMTags:function(){var e=this;this.value=[],[].forEach.call(this.getTagElms(),function(t){t.classList.contains("tagify--notAllowed")||e.value.push(t.__tagifyTagData)}),this.update()},setRangeAtStartEnd:function(e,i){i=(i=i||this.DOM.input).lastChild||i;var s=document.getSelection();s.rangeCount&&["Start","End"].forEach(function(t){return s.getRangeAt(0)["set"+t](i,e?0:i.length)})},input:{value:"",set:function(t,e){var i=0=this.settings.maxTags&&this.TEXTS.exceed},normalizeTags:function(t){function i(t){return(t+"").split(a).filter(function(t){return t}).map(function(t){return{value:t.trim()}})}var e,s=this.settings,n=s.whitelist,a=s.delimiters,o=s.mode,r=!!n&&n[0]instanceof Object,l=t instanceof Array,d=l&&t[0]instanceof Object&&"value"in t[0],c=[];if(d)return t=(e=[]).concat.apply(e,p(t.map(function(e){return i(e.value).map(function(t){return function(e){for(var t=1;t=this.settings.maxTags),this.DOM.scope.classList.toggle("tagify--noTags",!this.value.length)},update:function(){this.preUpdate();var t=function(t,s){return t.map(function(t){var e={};for(var i in t)i!=s&&(e[i]=t[i]);return e})}(this.value,"__isValid");this.DOM.originalInput.value="mix"==this.settings.mode?this.getMixedTagsAsString(t):t.length?this.settings.originalInputValueFormat?this.settings.originalInputValueFormat(t):JSON.stringify(t):"",this.DOM.originalInput.dispatchEvent(new CustomEvent("change"))},getMixedTagsAsString:function(t){var i="",s=0,n=t,a=this.settings.mixTagsInterpolator;return function e(t){t.childNodes.forEach(function(t){if(1==t.nodeType){if(t.classList.contains("tagify__tag"))return void(i+=a[0]+JSON.stringify(n[s++])+a[1]);o&&"BR"==t.tagName?i+="\r\n":"DIV"!=t.tagName&&"P"!=t.tagName||(i+="\r\n",e(t))}else i+=t.textContent})}(this.DOM.input),i},getNodeHeight:function(t){var e,i=t.cloneNode(!0);return i.style.cssText="position:fixed; top:-9999px; opacity:0",document.body.appendChild(i),e=i.clientHeight,i.parentNode.removeChild(i),e},dropdown:{init:function(){this.DOM.dropdown=n(this.settings.templates.dropdown(this.settings)),this.DOM.dropdown.content=this.DOM.dropdown.querySelector(".tagify__dropdown__wrapper")},show:function(t){var e,i,s,n,a=this,o=this.settings,r=window.getSelection(),l="mix"==o.mode&&!o.enforceWhitelist,d=!o.whitelist||!o.whitelist.length,c="manual"==o.dropdown.position;if(!(d&&!l||!1===o.dropdown.enable||this.state.isLoading)){if(clearTimeout(this.dropdownHide__bindEventsTimeout),this.suggestedListItems=this.dropdown.filterListItems.call(this,t),this.suggestedListItems.length)t&&l&&!this.state.editing.scope&&!function(t,e){return t.toLowerCase()==e.toLowerCase()}(this.suggestedListItems[0].value,t)&&this.suggestedListItems.unshift({value:t});else{if(!t||!l||this.state.editing.scope)return this.input.autocomplete.suggest.call(this),this.dropdown.hide.call(this),void("select"==o.mode&&this.events.binding.call(this));this.suggestedListItems=[{value:t}]}s=f(i=this.suggestedListItems[0])?i.value:i,o.autoComplete&&s&&0==s.indexOf(t)&&this.input.autocomplete.suggest.call(this,i),e=this.dropdown.createListHTML.call(this,this.suggestedListItems),this.DOM.dropdown.content.innerHTML=h(e),(o.enforceWhitelist&&!c||o.dropdown.highlightFirst)&&this.dropdown.highlightOption.call(this,this.DOM.dropdown.content.children[0]),this.DOM.scope.setAttribute("aria-expanded",!0),this.trigger("dropdown:show",this.DOM.dropdown),this.state.dropdown.visible=t||!0,this.state.selection={anchorOffset:r.anchorOffset,anchorNode:r.anchorNode},this.dropdown.position.call(this),document.body.contains(this.DOM.dropdown)||(c||(this.events.binding.call(this,!1),n=this.getNodeHeight(this.DOM.dropdown),this.DOM.dropdown.classList.add("tagify__dropdown--initial"),this.dropdown.position.call(this,n),document.body.appendChild(this.DOM.dropdown),setTimeout(function(){return a.DOM.dropdown.classList.remove("tagify__dropdown--initial")})),setTimeout(this.dropdown.events.binding.bind(this)))}},hide:function(t){var e=this.DOM,i=e.scope,s=e.dropdown,n="manual"==this.settings.dropdown.position&&!t;s&&document.body.contains(s)&&!n&&(window.removeEventListener("resize",this.dropdown.position),this.dropdown.events.binding.call(this,!1),clearTimeout(this.dropdownHide__bindEventsTimeout),this.dropdownHide__bindEventsTimeout=setTimeout(this.events.binding.bind(this),250),i.setAttribute("aria-expanded",!1),s.parentNode.removeChild(s),this.state.dropdown.visible=!1,this.state.ddItemData=this.state.ddItemElm=this.state.selection=null,this.state.tag&&this.state.tag.value.length&&(this.state.flaggedTags[this.state.tag.baseOffset]=this.state.tag),this.trigger("dropdown:hide",s))},refilter:function(){this.suggestedListItems=this.dropdown.filterListItems.call(this,"");var t=this.dropdown.createListHTML.call(this,this.suggestedListItems);this.DOM.dropdown.content.innerHTML=h(t),this.trigger("dropdown:updated",this.DOM.dropdown)},position:function(t){var e,i,s,n,a,o,r=this.DOM.dropdown,l=this.DOM["input"==this.settings.dropdown.position?"input":"scope"];this.state.dropdown.visible&&(o="text"==this.settings.dropdown.position?(n=(i=this.getCaretGlobalPosition()).bottom,s=i.top,a=i.left,"auto"):(s=(i=l.getBoundingClientRect()).top,n=i.bottom-1,a=i.left,i.width+"px"),s=Math.floor(s),n=Math.ceil(n),e=document.documentElement.clientHeight-n<(t||r.clientHeight),r.style.cssText="left:"+(a+window.pageXOffset)+"px; width:"+o+";"+(e?"bottom:"+(document.documentElement.clientHeight-s-window.pageYOffset-2)+"px;":"top: "+(n+window.pageYOffset)+"px"),r.setAttribute("placement",e?"top":"bottom"))},events:{binding:function(t){var e=!(0 Date: Sun, 24 Jan 2021 18:00:28 +0100 Subject: [PATCH 56/64] update tagify to 3.22.1 (fixes xss) --- ui/analyse/package.json | 2 +- ui/site/package.json | 2 +- yarn.lock | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ui/analyse/package.json b/ui/analyse/package.json index a58bd1a6f5..8c47288ff1 100644 --- a/ui/analyse/package.json +++ b/ui/analyse/package.json @@ -19,7 +19,7 @@ }, "dependencies": { "@badrap/result": "^0.2.6", - "@yaireo/tagify": "3.9.3", + "@yaireo/tagify": "^3.22.1", "ceval": "2.0.0", "chat": "2.0.0", "chess": "2.0.0", diff --git a/ui/site/package.json b/ui/site/package.json index 04785681b1..b9c375f446 100644 --- a/ui/site/package.json +++ b/ui/site/package.json @@ -14,7 +14,7 @@ }, "dependencies": { "@fnando/sparkline": "^0.3.10", - "@yaireo/tagify": "3.9.3", + "@yaireo/tagify": "^3.22.1", "debounce-promise": "^3.1.2", "flatpickr": "^4.6.6", "highcharts": "=4.2.5", diff --git a/yarn.lock b/yarn.lock index 41c2ee18c7..da0d2b864c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -187,10 +187,10 @@ resolved "https://registry.yarnpkg.com/@types/zxcvbn/-/zxcvbn-4.4.0.tgz#fbc1d941cc6d9d37d18405c513ba6b294f89b609" integrity sha512-GQLOT+SN20a+AI51y3fAimhyTF4Y0RG+YP3gf91OibIZ7CJmPFgoZi+ZR5a+vRbS01LbQosITWum4ATmJ1Z6Pg== -"@yaireo/tagify@3.9.3": - version "3.9.3" - resolved "https://registry.yarnpkg.com/@yaireo/tagify/-/tagify-3.9.3.tgz#a6671345b9a3a38eb4a7b18728db2526023e1662" - integrity sha512-cS6WyMYY4YD8Op6qwsm1jE2zIxf9RQGJvYkuye4hOzgm4p77aZyByfz1+hmpAWXJZStSpff2iDn7aOB97Smoeg== +"@yaireo/tagify@^3.22.1": + version "3.22.1" + resolved "https://registry.yarnpkg.com/@yaireo/tagify/-/tagify-3.22.1.tgz#cbb3ed617b6af7b887ac29f14762ab14ccf7ca4a" + integrity sha512-pwokZQyW0qzyC85QYUy9rD4nQyEK8CsEHrCKI73F9kp5yL9g5nQspnKBgJJEyI/AFHyAes4hVAkzrpeuJ0RHrg== "ab@https://github.com/lichess-org/ab-stub": version "1.0.0" From 2e842687a585fdf1f7c618cea3029d7ac2a495f7 Mon Sep 17 00:00:00 2001 From: Niklas Fiekas Date: Sun, 24 Jan 2021 18:47:39 +0100 Subject: [PATCH 57/64] clean coachForm langInput these templates look scary, and i can't figure out why they were needed. remove them, and find out. --- ui/site/src/coachForm.ts | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/ui/site/src/coachForm.ts b/ui/site/src/coachForm.ts index 9815d3442c..e1c683c1b7 100644 --- a/ui/site/src/coachForm.ts +++ b/ui/site/src/coachForm.ts @@ -93,33 +93,17 @@ lichess.load.then(() => { ($(this).parents('form')[0] as HTMLFormElement).submit(); }); - const langInput = document.getElementById('form3-languages'); + const langInput = document.getElementById('form3-languages')!; const tagify = new Tagify(langInput, { - delimiters: null, maxTags: 10, - whitelist: JSON.parse(langInput?.getAttribute('data-all') || ''), - templates: { - tag: function(this: any, v, tagData) { - return ` - -
- ${v} -
-
`; - }, - dropdownItem: function(tagData) { - return `
- ${tagData.value} -
`; - } - }, + whitelist: JSON.parse(langInput.getAttribute('data-all') || ''), enforceWhitelist: true, dropdown: { enabled: 1 } }); tagify.addTags( - langInput?.getAttribute('data-value')?.split(',').map(code => + langInput.getAttribute('data-value')?.split(',').map(code => tagify.settings.whitelist.find(l => l.code == code) ).filter(notNull) ); From 47b521ad48ca5526e33e3747592b7faf50a1718f Mon Sep 17 00:00:00 2001 From: Niklas Fiekas Date: Sun, 24 Jan 2021 20:17:57 +0100 Subject: [PATCH 58/64] fix typo in route cloneAplly -> cloneApply (was working regardless) --- conf/routes | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/routes b/conf/routes index f520320032..b77824ed98 100644 --- a/conf/routes +++ b/conf/routes @@ -124,7 +124,7 @@ GET /study/$id<\w{8}>/$chapterId<\w{8}>.pgn controllers.Study.chapterPgn(id: S GET /study/$id<\w{8}>/$chapterId<\w{8}>.gif controllers.Study.chapterGif(id: String, chapterId: String) POST /study/$id<\w{8}>/delete controllers.Study.delete(id: String) GET /study/$id<\w{8}>/clone controllers.Study.cloneStudy(id: String) -POST /study/$id<\w{8}>/cloneAplly controllers.Study.cloneApply(id: String) +POST /study/$id<\w{8}>/cloneApply controllers.Study.cloneApply(id: String) GET /study/$id<\w{8}>/$chapterId<\w{8}> controllers.Study.chapter(id: String, chapterId: String) GET /study/$id<\w{8}>/$chapterId<\w{8}>/meta controllers.Study.chapterMeta(id: String, chapterId: String) GET /study/embed/$id<\w{8}>/$chapterId<\w{8}> controllers.Study.embed(id: String, chapterId: String) From 846df0f212ece728015d66f3b593dfa10864730b Mon Sep 17 00:00:00 2001 From: Niklas Fiekas Date: Sun, 24 Jan 2021 20:55:19 +0100 Subject: [PATCH 59/64] give up on twitch in studies, update csp accordingly (#6684) would have mitigated the study topic xss --- app/views/relay/show.scala | 2 +- app/views/study/show.scala | 2 +- ui/@types/lichess/index.d.ts | 2 -- ui/analyse/src/util.ts | 8 -------- ui/ceval/src/ctrl.ts | 3 +-- 5 files changed, 3 insertions(+), 14 deletions(-) diff --git a/app/views/relay/show.scala b/app/views/relay/show.scala index 05a003e4d1..e8a8b7db58 100644 --- a/app/views/relay/show.scala +++ b/app/views/relay/show.scala @@ -56,7 +56,7 @@ object show { ), chessground = false, zoomable = true, - csp = defaultCsp.withWebAssembly.withTwitch.some, + csp = defaultCsp.withWebAssembly.some, openGraph = lila.app.ui .OpenGraph( title = r.name, diff --git a/app/views/study/show.scala b/app/views/study/show.scala index d592389c2d..b35765466e 100644 --- a/app/views/study/show.scala +++ b/app/views/study/show.scala @@ -55,7 +55,7 @@ object show { robots = s.isPublic, chessground = false, zoomable = true, - csp = defaultCsp.withWebAssembly.withTwitch.withPeer.some, + csp = defaultCsp.withWebAssembly.withPeer.some, openGraph = lila.app.ui .OpenGraph( title = s.name.value, diff --git a/ui/@types/lichess/index.d.ts b/ui/@types/lichess/index.d.ts index 9d1c980cdb..2f88029ddc 100644 --- a/ui/@types/lichess/index.d.ts +++ b/ui/@types/lichess/index.d.ts @@ -205,8 +205,6 @@ interface Window { palantir(opts: PalantirOpts): Palantir; }; [key: string]: any; // TODO - - crossOriginIsolated?: boolean; // https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/crossOriginIsolated } interface Study{ diff --git a/ui/analyse/src/util.ts b/ui/analyse/src/util.ts index ba2fb2f75f..b20c814f3f 100644 --- a/ui/analyse/src/util.ts +++ b/ui/analyse/src/util.ts @@ -151,17 +151,9 @@ function toTwitchEmbedUrl(url: string) { return undefined; } -const commentYoutubeRegex = /(?:https?:\/\/)?(?:www\.)?(?:youtube\.com\/(?:.*?(?:[?&]v=)|v\/)|youtu\.be\/)(?:[^"&?\/ ]{11})\b/i; -const commentTwitchRegex = /(?:https?:\/\/)?(?:www\.)?(?:twitch.tv)\/([^"&?/ ]+)(?:\?|&|)(\S*)/i; -const imgurRegex = /https?:\/\/(?:i\.)?imgur\.com\/(\w+)(?:\.jpe?g|\.png|\.gif)/i; const newLineRegex = /\n/g; function toLink(url: string) { - if (!window.crossOriginIsolated) { - if (commentYoutubeRegex.test(url)) return toYouTubeEmbed(url) || url; - if (commentTwitchRegex.test(url)) return toTwitchEmbed(url) || url; - if (imgurRegex.test(url)) return ``; - } const show = url.replace(/https?:\/\//, ''); return `${show}`; } diff --git a/ui/ceval/src/ctrl.ts b/ui/ceval/src/ctrl.ts index 66fc288b4b..240106abd5 100644 --- a/ui/ceval/src/ctrl.ts +++ b/ui/ceval/src/ctrl.ts @@ -1,7 +1,7 @@ import { CevalCtrl, CevalOpts, CevalTechnology, Work, Step, Hovering, Started } from './types'; import { Pool, officialStockfish } from './pool'; -import { defined, prop } from 'common'; +import { prop } from 'common'; import { storedProp } from 'common/storage'; import throttle from 'common/throttle'; import { povChances } from './winningChances'; @@ -66,7 +66,6 @@ export default function(opts: CevalOpts): CevalCtrl { const sharedMem = sharedWasmMemory(8, 16); if (sharedMem) { technology = 'wasmx'; - if (!defined(window.crossOriginIsolated)) window.crossOriginIsolated = true; // polyfill try { sharedMem.grow(8); growableSharedMem = true; From 1b21a2e2d6601076c89745b01725e20eff3809ea Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Mon, 25 Jan 2021 10:52:59 +0100 Subject: [PATCH 60/64] {master} don't log pgn import errors --- app/controllers/Importer.scala | 16 +++++++++------- modules/importer/src/main/ImporterForm.scala | 17 +++++++++++++++-- project/Dependencies.scala | 2 +- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/app/controllers/Importer.scala b/app/controllers/Importer.scala index 8cf3f62fed..8b31eec88c 100644 --- a/app/controllers/Importer.scala +++ b/app/controllers/Importer.scala @@ -1,19 +1,21 @@ package controllers -import scala.concurrent.duration._ +import play.api.libs.json.Json import play.api.mvc._ +import scala.concurrent.duration._ +import views._ import lila.app._ import lila.common.{ HTTPRequest, IpAddress } -import play.api.libs.json.Json -import views._ final class Importer(env: Env) extends LilaController(env) { - private val ImportRateLimitPerIP = new lila.memo.RateLimit[IpAddress]( - credits = 200, - duration = 1.hour, - key = "import.game.ip" + private val ImportRateLimitPerIP = lila.memo.RateLimit.composite[IpAddress]( + key = "import.game.ip", + enforce = env.net.rateLimit.value + )( + ("fast", 4, 1.minute), + ("slow", 150, 1.hour) ) def importGame = diff --git a/modules/importer/src/main/ImporterForm.scala b/modules/importer/src/main/ImporterForm.scala index ee1614ad7d..e9ec581b53 100644 --- a/modules/importer/src/main/ImporterForm.scala +++ b/modules/importer/src/main/ImporterForm.scala @@ -19,7 +19,19 @@ final class ImporterForm { )(ImportData.apply)(ImportData.unapply) ) - def checkPgn(pgn: String): Validated[String, Preprocessed] = ImportData(pgn, none).preprocess(none) + def checkPgn(pgn: String): Validated[String, Preprocessed] = ImporterForm.catchOverflow { () => + ImportData(pgn, none).preprocess(none) + } +} + +object ImporterForm { + + def catchOverflow(f: () => Validated[String, Preprocessed]): Validated[String, Preprocessed] = try { + f() + } catch { + case e: RuntimeException if e.getMessage contains "StackOverflowError" => + Validated.Invalid("This PGN seems too long or too complex!") + } } private case class TagResult(status: Status, winner: Option[Color]) @@ -42,7 +54,7 @@ case class ImportData(pgn: String, analyse: Option[String]) { case Reader.Result.Incomplete(replay, _) => replay } - def preprocess(user: Option[String]): Validated[String, Preprocessed] = + def preprocess(user: Option[String]): Validated[String, Preprocessed] = ImporterForm.catchOverflow { () => Parser.full(pgn) flatMap { parsed => Reader.fullWithSans( pgn, @@ -114,4 +126,5 @@ case class ImportData(pgn: String, analyse: Option[String]) { Preprocessed(NewGame(dbGame), replay.copy(state = game), initialFen, parsed) } } + } } diff --git a/project/Dependencies.scala b/project/Dependencies.scala index eddbba7e80..39a89918f1 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -8,7 +8,7 @@ object Dependencies { val scalalib = "com.github.ornicar" %% "scalalib" % "7.0.2" val hasher = "com.roundeights" %% "hasher" % "1.2.1" val jodaTime = "joda-time" % "joda-time" % "2.10.9" - val chess = "org.lichess" %% "scalachess" % "10.1.6" + val chess = "org.lichess" %% "scalachess" % "10.1.7" val compression = "org.lichess" %% "compression" % "1.6" val maxmind = "com.sanoma.cda" %% "maxmind-geoip2-scala" % "1.3.1-THIB" val prismic = "io.prismic" %% "scala-kit" % "1.2.19-THIB213" From cde630882c17cd46fb749057be0d2ab62365532a Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Mon, 25 Jan 2021 11:10:36 +0100 Subject: [PATCH 61/64] make sure that the requested chapter belongs to the study --- modules/study/src/main/StudySequencer.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/study/src/main/StudySequencer.scala b/modules/study/src/main/StudySequencer.scala index 55c9be3ac5..f826227cd5 100644 --- a/modules/study/src/main/StudySequencer.scala +++ b/modules/study/src/main/StudySequencer.scala @@ -28,7 +28,7 @@ final private class StudySequencer( ): Funit = sequenceStudy(studyId) { study => chapterRepo.byId(chapterId) flatMap { - _ ?? { chapter => + _.filter(_.studyId == studyId) ?? { chapter => f(Study.WithChapter(study, chapter)) } } From 07064a704127a5c00521c9a978522b8e8e76bad7 Mon Sep 17 00:00:00 2001 From: Niklas Fiekas Date: Mon, 25 Jan 2021 14:00:55 +0100 Subject: [PATCH 62/64] update stockfish-mv.wasm to 0.5.2 (fixes variant piece values) --- ui/site/package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ui/site/package.json b/ui/site/package.json index b9c375f446..71c65787f9 100644 --- a/ui/site/package.json +++ b/ui/site/package.json @@ -20,7 +20,7 @@ "highcharts": "=4.2.5", "hopscotch": "^0.3.1", "jquery-bar-rating": "^1.2.2", - "stockfish-mv.wasm": "^0.5.1", + "stockfish-mv.wasm": "^0.5.2", "stockfish.js": "^10.0.2", "stockfish.wasm": "^0.9.1", "tablesort": "^5.1", diff --git a/yarn.lock b/yarn.lock index da0d2b864c..96660a49e7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4127,10 +4127,10 @@ stdout-stream@^1.4.0: dependencies: readable-stream "^2.0.1" -stockfish-mv.wasm@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/stockfish-mv.wasm/-/stockfish-mv.wasm-0.5.1.tgz#71c783d3417056263ff387eb043fd9b4d06e3e4f" - integrity sha512-iZA/m2Lkv1SBcCxDXcr+/PE4d4YhUoDgcj5G2P1EU0/3e4JMI0MkQTywMwcApy+pzDxphDv2bcjJRR33p9qmzQ== +stockfish-mv.wasm@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/stockfish-mv.wasm/-/stockfish-mv.wasm-0.5.2.tgz#08faca73ae2f5b69fb28bd04c20074e443cdaa7e" + integrity sha512-MujfrAVAzDkRoVEiYMkGaiAw9wei2hRR8sxD5l7emHDyCbmc0KdlqoIZtS+coQ9CVNaZa1o5JokTKJVv8wJhUQ== stockfish.js@^10.0.2: version "10.0.2" From 0dc4e037f5d4f15dc2112d0813266abd65bf88a9 Mon Sep 17 00:00:00 2001 From: Niklas Fiekas Date: Mon, 25 Jan 2021 14:18:15 +0100 Subject: [PATCH 63/64] put reminder that twitch must come last in csp --- app/views/streamer/show.scala | 2 +- modules/common/src/main/ContentSecurityPolicy.scala | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/streamer/show.scala b/app/views/streamer/show.scala index 3acdaaf78c..cc8d905c97 100644 --- a/app/views/streamer/show.scala +++ b/app/views/streamer/show.scala @@ -29,7 +29,7 @@ object show { image = s.streamer.picturePath.map(p => dbImageUrl(p.value)) ) .some, - csp = defaultCsp.withTwitch.some + csp = defaultCsp.finalizeWithTwitch.some )( main(cls := "page-menu streamer-show")( st.aside(cls := "page-menu__menu")( diff --git a/modules/common/src/main/ContentSecurityPolicy.scala b/modules/common/src/main/ContentSecurityPolicy.scala index 88e7dbffde..7324f5b291 100644 --- a/modules/common/src/main/ContentSecurityPolicy.scala +++ b/modules/common/src/main/ContentSecurityPolicy.scala @@ -26,7 +26,7 @@ case class ContentSecurityPolicy( frameSrc = "https://*.stripe.com" :: frameSrc ) - def withTwitch = + def finalizeWithTwitch = copy( defaultSrc = Nil, connectSrc = "https://www.twitch.tv" :: "https://www-cdn.jtvnw.net" :: connectSrc, From 3d42d0255332be6e326501f42973bf66cc0cfbc1 Mon Sep 17 00:00:00 2001 From: Niklas Fiekas Date: Mon, 25 Jan 2021 16:50:10 +0100 Subject: [PATCH 64/64] clarify secrets in base.conf, move one to application.conf.default Update your application.conf based on application.conf.default if your server fails to start with: Oops, cannot start the server. com.typesafe.config.ConfigException$Missing: merge of system properties,base.conf @ jar:file:/home/niklas/Projekte/lila/target/bg-jobs/sbt_4cb511b/job-1/target/a584586c/67d70042/lila_2.13-3.2.jar!/base.conf: 407: No configuration setting found for key 'password' --- conf/application.conf.default | 3 +++ conf/base.conf | 5 +---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/conf/application.conf.default b/conf/application.conf.default index eee2cb3753..1279bf4adc 100644 --- a/conf/application.conf.default +++ b/conf/application.conf.default @@ -1,4 +1,7 @@ include "base" include "version" +# change for additional encryption of password hashes +user.password.bpass.secret = "9qEYN0ThHer1KWLNekA76Q==" + # override values from base.conf here diff --git a/conf/base.conf b/conf/base.conf index 5621216673..a7c8b2b2ba 100644 --- a/conf/base.conf +++ b/conf/base.conf @@ -30,7 +30,7 @@ play { cookieName = "lila2" maxAge = 3650 days } - secret.key = "CiebwjgIM9cHQ;I?Xk:sfqDJ;BhIe:jsL?r=?IPF[saf>s^r0]?0grUq4>q?5mP^" + secret.key = "CiebwjgIM9cHQ;I?Xk:sfqDJ;BhIe:jsL?r=?IPF[saf>s^r0]?0grUq4>q?5mP^" # public (lila does not rely on cookie signing) } ws { useragent = "lichess.org" @@ -413,9 +413,6 @@ user { trophyKind = trophyKind ranking = ranking } - password.bpass { - secret = "9qEYN0ThHer1KWLNekA76Q==" - } } fishnet { redis = ${redis}