From 2d0d87a943ce2560ba9f49093e8f7dee16a8efa0 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Aug 2026 18:51:01 +0200 Subject: [PATCH 1/4] Translated using Weblate (French) Currently translated at 99.7% (1345 of 1349 strings) Translation: Abstract Play/frontend Translate-URL: https://hosted.weblate.org/projects/abstract-play/frontend/fr/ --- public/locales/fr/apfront.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/public/locales/fr/apfront.json b/public/locales/fr/apfront.json index 0ea22082..1964fee1 100644 --- a/public/locales/fr/apfront.json +++ b/public/locales/fr/apfront.json @@ -551,6 +551,7 @@ "Completed": "Terminées", "CompletedGames": "Parties terminées", "CompletedGamesCount_one": "partie terminée", + "CompletedGamesCount_many": "", "CompletedGamesCount_other": "parties terminées", "CompletedGamesList": "Parties terminées de {{name}}", "CompletedGamesHelp": "Pour garder le tableau de bord lisible, les parties sont retirées de cette liste 7 jours après la date de \"dernière consultation\". Cliquez sur le bouton Effacer pour la supprimer immédiatement. Un nouveau message dans le tchat fera réapparaître les parties plus anciennes, réinitialisant le délai de 7 jours. Visitez la page des Parties pour accéder aux parties terminées plus anciennes.", @@ -573,6 +574,7 @@ "ClearPremove": "Effacer le coup anticipé", "Current": "En cours", "CurrentGamesCount_one": "partie en cours", + "CurrentGamesCount_many": "", "CurrentGamesCount_other": "parties en cours", "CurrentGamesList": "Parties en cours de {{name}}", "Custom": "Personnalisé", @@ -602,6 +604,7 @@ "DownloadCompletedGames": "Télécharger tous les rapports de parties terminées", "Duration": "Durée", "DurationHelp_one": "Ce défi expirera après avoir été accepté une première fois.", + "DurationHelp_many": "", "DurationHelp_other": "Ce défi expirera après avoir été accepté {{count}} fois.", "DurationHelpPersistent": "Ce défi restera disponible jusqu'à ce que vous le révoquiez.", "EditTags": "Modifier les étiquettes", @@ -875,6 +878,7 @@ "Random": "Aléatoire", "RatedGame": "Ce sera une partie classée.", "RatedPlayersCount_one": "joueur classé", + "RatedPlayersCount_many": "", "RatedPlayersCount_other": "joueurs classés", "RatingsList": "Classements de {{name}}", "Reject": "Refuser", @@ -903,6 +907,7 @@ "SelectAGame": "Veuillez sélectionner un jeu", "SelectGameDropdown": "sélectionner un jeu", "SelectOpponents_one": "Sélectionnez un adversaire.", + "SelectOpponents_many": "", "SelectOpponents_other": "Sélectionnez {{count}} adversaires.", "SelectPlayerCount": "Sélectionnez un nombre de joueurs pour cette partie.", "SelectSeating": "Sélectionnez l'ordre des joueurs, c'est-à-dire dans quel ordre les joueurs commenceront la partie.", @@ -913,6 +918,7 @@ "StandingChallenges": "Défis ouverts pour {{name}}", "StandingChallenges2": "Défis ouverts", "StandingChallengesCount_one": "défi ouvert", + "StandingChallengesCount_many": "", "StandingChallengesCount_other": "défis ouverts", "Statistics": "Statistiques", "stats_module_avgRatings": "Classements moyens", @@ -1062,6 +1068,7 @@ "ToSubmitMove": "Aller à la position que vous pouvez valider", "TotalGames": "total des parties", "TotalStars_one": "Total d'étoiles", + "TotalStars_many": "", "TotalStars_other": "Total d'étoiles", "tour": { "general": { @@ -1144,8 +1151,8 @@ "WelcomePlayer": "Tableau de bord de", "Winners": "Gagnants", "Winning": "Marquer ce coup comme gagnant pour ce joueur", - "WithVariants_zero": ".", "WithVariants_one": " avec la variante {{variants}}.", + "WithVariants_many": "", "WithVariants_other": " avec les variantes {{variants}}.", "Yes": "Oui", "YourChallenges": "Vos défis", @@ -1189,6 +1196,7 @@ "unrecommend": "Retirer la recommandation", "recommendLimit": "Vous pouvez recommander au maximum 2 parties par type de jeu.", "watchCount_one": "{{count}} spectateur", + "watchCount_many": "", "watchCount_other": "{{count}} spectateurs", "moreActions": "Actions de la partie" }, @@ -1290,8 +1298,10 @@ "generatedDaily": "Les statistiques sont générées quotidiennement à 6h00 UTC.", "recordsBetween": "Les données analysées incluent les parties terminées entre {{oldest}} et {{newest}} ({{days}}).", "day_one": "{{count}} jour", + "day_many": "", "day_other": "{{count}} jours", "year_one": "{{count}} an", + "year_many": "", "year_other": "{{count}} ans", "playersPlayedGames": "Pendant cette période, {{numPlayers}} joueurs ont joué {{numGames}} parties.", "explanations": { From 79df3f0ae3cd4be3ebf679f44c874f7d41e0e40e Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Aug 2026 18:51:10 +0200 Subject: [PATCH 2/4] Translated using Weblate (Italian) Currently translated at 99.7% (1345 of 1349 strings) Translation: Abstract Play/frontend Translate-URL: https://hosted.weblate.org/projects/abstract-play/frontend/it/ --- public/locales/it/apfront.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/public/locales/it/apfront.json b/public/locales/it/apfront.json index 786047e6..d12f1405 100644 --- a/public/locales/it/apfront.json +++ b/public/locales/it/apfront.json @@ -551,6 +551,7 @@ "Completed": "Completata", "CompletedGames": "Partite completate", "CompletedGamesCount_one": "partita completata", + "CompletedGamesCount_many": "", "CompletedGamesCount_other": "partite completate", "CompletedGamesList": "Partite a {{name}} completate", "CompletedGamesHelp": "Per mantenere la bacheca ordinata, le partite vengono rimosse da questo elenco 7 giorni dopo la data di \"ultima visione\". Clicca sul pulsante Pulisci per rimuoverle immediatamente. Messaggi di chat recenti faranno riapparire le vecchie partite, riavviando il conteggio di 7 giorni. Visita la pagina Partite per accedere alle vecchie partite completate.", @@ -573,6 +574,7 @@ "ClearPremove": "Rimuovi premossa", "Current": "In corso", "CurrentGamesCount_one": "partita in corso", + "CurrentGamesCount_many": "", "CurrentGamesCount_other": "partite in corso", "CurrentGamesList": "Partite a {{name}} in corso", "Custom": "Personalizzato", @@ -602,6 +604,7 @@ "DownloadCompletedGames": "Scarica tutti i report delle partite completate", "Duration": "Durata", "DurationHelp_one": "Questa sfida scadrà dopo essere stata accettata per la prima volta.", + "DurationHelp_many": "", "DurationHelp_other": "Questa sfida scadrà dopo essere stata accettata {{count}} volte.", "DurationHelpPersistent": "Questa sfida rimarrà disponibile finché non la revocherai.", "EditTags": "Modifica tag", @@ -875,6 +878,7 @@ "Random": "Casuale", "RatedGame": "Questa sarà una partita con punteggio.", "RatedPlayersCount_one": "giocatore con punteggio", + "RatedPlayersCount_many": "", "RatedPlayersCount_other": "giocatori con punteggio", "RatingsList": "Classifiche di {{name}}", "Reject": "Rifiuta", @@ -903,6 +907,7 @@ "SelectAGame": "Seleziona un gioco", "SelectGameDropdown": "seleziona un gioco", "SelectOpponents_one": "Seleziona un avversario.", + "SelectOpponents_many": "", "SelectOpponents_other": "Seleziona {{count}} avversari.", "SelectPlayerCount": "Seleziona il numero di giocatori per questa partita.", "SelectSeating": "Seleziona l'ordine di seduta, ovvero in che ordine i giocatori inizieranno la partita.", @@ -913,6 +918,7 @@ "StandingChallenges": "Sfide aperte per {{name}}", "StandingChallenges2": "Sfide aperte", "StandingChallengesCount_one": "sfida aperta", + "StandingChallengesCount_many": "", "StandingChallengesCount_other": "sfide aperte", "Statistics": "Statistiche", "stats_module_avgRatings": "Punteggi medi", @@ -1062,6 +1068,7 @@ "ToSubmitMove": "Vai alla posizione che puoi inviare", "TotalGames": "totale partite", "TotalStars_one": "Stella totale", + "TotalStars_many": "", "TotalStars_other": "Stelle totali", "tour": { "general": { @@ -1144,8 +1151,8 @@ "WelcomePlayer": "Bacheca di", "Winners": "Vincitori", "Winning": "Contrassegna questa mossa come vincente per questo giocatore", - "WithVariants_zero": ".", "WithVariants_one": " con la variante {{variants}}.", + "WithVariants_many": "", "WithVariants_other": " con le varianti {{variants}}.", "Yes": "Sì", "YourChallenges": "Le tue sfide", @@ -1189,6 +1196,7 @@ "unrecommend": "Rimuovi consiglio", "recommendLimit": "Puoi consigliare al massimo 2 partite per tipo di gioco.", "watchCount_one": "{{count}} spettatore", + "watchCount_many": "", "watchCount_other": "{{count}} spettatori", "moreActions": "Azioni partita" }, @@ -1290,8 +1298,10 @@ "generatedDaily": "Le statistiche vengono generate quotidianamente alle 06:00 UTC.", "recordsBetween": "I dati analizzati includono le partite completate tra il {{oldest}} e il {{newest}} ({{days}}).", "day_one": "{{count}} giorno", + "day_many": "", "day_other": "{{count}} giorni", "year_one": "{{count}} anno", + "year_many": "", "year_other": "{{count}} anni", "playersPlayedGames": "In questo periodo, {{numPlayers}} giocatori hanno giocato {{numGames}} partite.", "explanations": { From 060f8f7843bc0e6c78f79a5ab657b1e3bad2e9fe Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Aug 2026 18:50:41 +0200 Subject: [PATCH 3/4] Translated using Weblate (German) Currently translated at 99.5% (1343 of 1349 strings) Translation: Abstract Play/frontend Translate-URL: https://hosted.weblate.org/projects/abstract-play/frontend/de/ --- public/locales/de/apfront.json | 1 - 1 file changed, 1 deletion(-) diff --git a/public/locales/de/apfront.json b/public/locales/de/apfront.json index 1aa4cabd..bf0e775f 100644 --- a/public/locales/de/apfront.json +++ b/public/locales/de/apfront.json @@ -1144,7 +1144,6 @@ "WelcomePlayer": "Übersicht für", "Winners": "Sieger", "Winning": "Diesen Zug als Gewinnzug für diesen Spieler markieren", - "WithVariants_zero": ".", "WithVariants_one": " mit Variante {{variants}}.", "WithVariants_other": " mit Varianten {{variants}}.", "Yes": "Ja", From cd36908781fd767a4a784138f6890ae2b6c02c00 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Aug 2026 18:50:48 +0200 Subject: [PATCH 4/4] Translated using Weblate (Spanish (American)) Currently translated at 99.7% (1345 of 1349 strings) Translation: Abstract Play/frontend Translate-URL: https://hosted.weblate.org/projects/abstract-play/frontend/es_US/ --- public/locales/es-US/apfront.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/public/locales/es-US/apfront.json b/public/locales/es-US/apfront.json index 08adfd8b..695bd938 100644 --- a/public/locales/es-US/apfront.json +++ b/public/locales/es-US/apfront.json @@ -551,6 +551,7 @@ "Completed": "Completado", "CompletedGames": "Partidas completadas", "CompletedGamesCount_one": "partida completada", + "CompletedGamesCount_many": "", "CompletedGamesCount_other": "partidas completadas", "CompletedGamesList": "Partidas completadas de {{name}}", "CompletedGamesHelp": "Para mantener el panel de control ordenado, las partidas desaparecen de esta lista 7 días después de la fecha de \"última visita\". Haz clic en el botón Borrar para eliminarla de inmediato. Un nuevo chat hará que las partidas más antiguas vuelvan a aparecer, reiniciando el reloj de 7 días. Visita la página de Juegos para acceder a partidas completadas más antiguas.", @@ -573,6 +574,7 @@ "ClearPremove": "Borrar premovimiento", "Current": "Actuales", "CurrentGamesCount_one": "partida actual", + "CurrentGamesCount_many": "", "CurrentGamesCount_other": "partidas actuales", "CurrentGamesList": "Partidas actuales de {{name}}", "Custom": "Personalizado", @@ -602,6 +604,7 @@ "DownloadCompletedGames": "Descargar todos los reportes de juegos completados", "Duration": "Duración", "DurationHelp_one": "Este desafío expirará después de ser aceptado la primera vez.", + "DurationHelp_many": "", "DurationHelp_other": "Este desafío expirará después de ser aceptado {{count}} veces.", "DurationHelpPersistent": "Este desafío permanecerá disponible hasta que lo revoques.", "EditTags": "Editar etiquetas", @@ -875,6 +878,7 @@ "Random": "Aleatorio", "RatedGame": "Este será un juego evaluado.", "RatedPlayersCount_one": "jugador evaluado", + "RatedPlayersCount_many": "", "RatedPlayersCount_other": "jugadores evaluados", "RatingsList": "Clasificaciones de {{name}}", "Reject": "Rechazar", @@ -903,6 +907,7 @@ "SelectAGame": "Por favor selecciona un juego", "SelectGameDropdown": "seleccionar un juego", "SelectOpponents_one": "Selecciona un oponente.", + "SelectOpponents_many": "", "SelectOpponents_other": "Selecciona {{count}} oponentes.", "SelectPlayerCount": "Selecciona el número de jugadores para este juego.", "SelectSeating": "Selecciona el orden de los asientos, es decir, en qué orden los jugadores comenzarán el juego.", @@ -913,6 +918,7 @@ "StandingChallenges": "Desafíos abiertos para {{name}}", "StandingChallenges2": "Desafíos abiertos", "StandingChallengesCount_one": "desafío abierto", + "StandingChallengesCount_many": "", "StandingChallengesCount_other": "desafíos abiertos", "Statistics": "Estadísticas", "stats_module_avgRatings": "Promedio de clasificaciones", @@ -1062,6 +1068,7 @@ "ToSubmitMove": "Ir a la posición que puedes enviar", "TotalGames": "juegos totales", "TotalStars_one": "Estrella total", + "TotalStars_many": "", "TotalStars_other": "Estrellas totales", "tour": { "general": { @@ -1144,8 +1151,8 @@ "WelcomePlayer": "Panel de control de", "Winners": "Ganadores", "Winning": "Marcar esta jugada como ganadora para este jugador", - "WithVariants_zero": ".", "WithVariants_one": " con la variante {{variants}}.", + "WithVariants_many": "", "WithVariants_other": " con las variantes {{variants}}.", "Yes": "Sí", "YourChallenges": "Tus desafíos", @@ -1189,6 +1196,7 @@ "unrecommend": "Quitar recomendación", "recommendLimit": "Puedes recomendar como máximo 2 partidas por tipo de juego.", "watchCount_one": "{{count}} observador", + "watchCount_many": "", "watchCount_other": "{{count}} observadores", "moreActions": "Acciones de la partida" }, @@ -1290,8 +1298,10 @@ "generatedDaily": "Las estadísticas se generan diariamente a las 6:00 a. m. UTC.", "recordsBetween": "Los registros analizados incluyen partidas completadas entre {{oldest}} y {{newest}} ({{days}}).", "day_one": "{{count}} día", + "day_many": "", "day_other": "{{count}} días", "year_one": "{{count}} año", + "year_many": "", "year_other": "{{count}} años", "playersPlayedGames": "En ese tiempo, {{numPlayers}} jugadores han jugado {{numGames}} partidas.", "explanations": {