Update translation, correct tetroI

This commit is contained in:
adrienmalin 2018-11-11 17:35:17 +01:00
parent 31cb060446
commit aa52e08521
8 changed files with 195 additions and 164 deletions

View File

@ -7,6 +7,7 @@ import itertools
import locale
import os
import time
import functools
from PyQt5 import QtWidgets, QtCore, QtGui, QtMultimedia
QtCore.Signal = QtCore.pyqtSignal
@ -588,6 +589,7 @@ class Stats(QtWidgets.QWidget):
self.mini_t_spin_total = 0
self.nb_back_to_back = 0
self.back_to_back_scores = None
self.max_back_to_back_score = 0
self.combo = -1
self.combos_total = 0
self.max_combo = 0
@ -691,6 +693,7 @@ class Stats(QtWidgets.QWidget):
self.temporary_text.emit(
self.tr("BACK TO BACK\n{:n}").format(b2b_score)
)
self.max_back_to_back_score = max(self.max_back_to_back_score, b2b_score)
self.back_to_back_scores = None
self.high_score = max(self.score_total, self.high_score)
@ -718,55 +721,37 @@ class Stats(QtWidgets.QWidget):
QtCore.QRectF(self.rect()), self.text(sep="\n\n"), self.text_options
)
"""
Returns a strings representing number with the locale thousand separator
"""
thousand_separated = functools.partial(locale.format, "%i", grouping=True, monetary=True)
def text(self, full_stats=False, sep="\n"):
text = (
self.tr("Score: ")
+ locale.format("%i", self.score_total, grouping=True, monetary=True)
+ sep
+ self.tr("High score: ")
+ locale.format("%i", self.high_score, grouping=True, monetary=True)
+ sep
self.tr("Score: ") + self.thousand_separated(self.score_total) + sep
+ self.tr("High score: ") + self.thousand_separated(self.high_score) + sep
+ self.tr("Time: {}\n").format(
time.strftime("%H:%M:%S", time.gmtime(self.chronometer))
)
+ sep
+ self.tr("Level: ")
+ locale.format("%i", self.level, grouping=True, monetary=True)
+ sep
+ self.tr("Goal: ")
+ locale.format("%i", self.goal, grouping=True, monetary=True)
+ sep
+ self.tr("Lines: ")
+ locale.format(
"%i", self.complete_lines_total, grouping=True, monetary=True
)
+ sep
+ self.tr("Mini T-Spins: ")
+ locale.format("%i", self.mini_t_spin_total, grouping=True, monetary=True)
+ sep
+ self.tr("T-Spins: ")
+ locale.format("%i", self.t_spin_total, grouping=True, monetary=True)
+ sep
+ self.tr("Back-to-back: ")
+ locale.format("%i", self.nb_back_to_back, grouping=True, monetary=True)
+ sep
+ self.tr("Max combo: ")
+ locale.format("%i", self.max_combo, grouping=True, monetary=True)
+ sep
+ self.tr("Combos: ")
+ locale.format("%i", self.combos_total, grouping=True, monetary=True)
) + sep
+ self.tr("Level: ") + self.thousand_separated(self.level) + sep
+ self.tr("Goal: ") + self.thousand_separated(self.goal) + sep
+ self.tr("Lines: ") + self.thousand_separated(self.complete_lines_total) + sep
+ self.tr("Mini T-Spins: ") + self.thousand_separated(self.mini_t_spin_total) + sep
+ self.tr("T-Spins: ") + self.thousand_separated(self.t_spin_total) + sep
+ self.tr("Back-to-backs: ") + self.thousand_separated(self.nb_back_to_back) + sep
+ self.tr("Max back-to-back score: ") + self.thousand_separated(self.max_back_to_back_score) + sep
+ self.tr("Max combo: ") + self.thousand_separated(self.max_combo) + sep
+ self.tr("Combos: ") + self.thousand_separated(self.combos_total)
)
if full_stats:
minutes = self.chronometer / 60
text += (
"\n"
+ sep
"\n" + sep
+ self.tr("Lines per minute: {:.1f}").format(
self.complete_lines_total / minutes
)
+ sep
) + sep
+ self.tr("Tetrominos locked down: ")
+ locale.format("%i", self.nb_tetro, grouping=True, monetary=True)
+ self.thousand_separated(self.nb_tetro)
+ sep
+ self.tr("Tetrominos per minute: {:.1f}").format(
self.nb_tetro / minutes
@ -774,9 +759,7 @@ class Stats(QtWidgets.QWidget):
+ sep
)
text += sep.join(
score_type["name"]
+ self.tr(": ")
+ locale.format("%i", nb, grouping=True, monetary=True)
score_type["name"] + self.tr(": ") + self.thousand_separated(nb)
for score_type, nb in tuple(zip(consts.SCORES, self.lines_stats))[1:]
)
return text

View File

@ -8,11 +8,11 @@ Parts of comments issued from 2009 Tetris Design Guideline
"""
import sys
from fbs_runtime.application_context import ApplicationContext
from game_gui import Window
import sys
class AppContext(ApplicationContext): # 1. Subclass ApplicationContext
def run(self): # 2. Implement run()
win = Window(self)

View File

@ -162,7 +162,7 @@ class TetroI(Tetromino, metaclass=MetaTetro):
four minoes in a straight line
"""
COORDS = (L, 0), (0, 0), (R, 0), (2 * R, 0)
COORDS = (0, 0), (L, 0), (R, 0), (2 * R, 0)
SUPER_ROTATION_SYSTEM = (
{
COUNTERCLOCKWISE: ((0, D), (L, D), (2 * R, D), (L, U), (2 * R, 2 * D)),

View File

@ -3,39 +3,39 @@
<context>
<name>Frames</name>
<message>
<location filename="../frames.py" line="205"/>
<location filename="../../../python/game_gui.py" line="932"/>
<source>New game</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../frames.py" line="192"/>
<location filename="../../../python/game_gui.py" line="919"/>
<source>A game is in progress.
Do you want to abord it?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../frames.py" line="205"/>
<location filename="../../../python/game_gui.py" line="932"/>
<source>Start level:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../frames.py" line="323"/>
<location filename="../../../python/game_gui.py" line="1050"/>
<source>High score</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../frames.py" line="312"/>
<location filename="../../../python/game_gui.py" line="1040"/>
<source>Game over</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../frames.py" line="315"/>
<location filename="../../../python/game_gui.py" line="1043"/>
<source>Congratulations!
You have the high score: {}</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../frames.py" line="325"/>
<location filename="../../../python/game_gui.py" line="1052"/>
<source>Score: {}
High score: {}</source>
<translation type="unfinished"></translation>
@ -44,13 +44,13 @@ High score: {}</source>
<context>
<name>Matrix</name>
<message>
<location filename="../matrix.py" line="73"/>
<location filename="../../../python/game_gui.py" line="140"/>
<source>Level
</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../matrix.py" line="356"/>
<location filename="../../../python/game_gui.py" line="425"/>
<source>PAUSE
Press %s
@ -58,7 +58,7 @@ to resume</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../matrix.py" line="364"/>
<location filename="../../../python/game_gui.py" line="433"/>
<source>GAME
OVER</source>
<translation type="unfinished"></translation>
@ -67,97 +67,97 @@ OVER</source>
<context>
<name>SettingStrings</name>
<message>
<location filename="../settings.py" line="20"/>
<location filename="../../../python/game_gui.py" line="1078"/>
<source>Keyboard settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settings.py" line="21"/>
<location filename="../../../python/game_gui.py" line="1079"/>
<source>Move left</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settings.py" line="22"/>
<location filename="../../../python/game_gui.py" line="1080"/>
<source>Move right</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settings.py" line="23"/>
<location filename="../../../python/game_gui.py" line="1081"/>
<source>Rotate clockwise</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settings.py" line="24"/>
<location filename="../../../python/game_gui.py" line="1082"/>
<source>Rotate counterclockwise</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settings.py" line="25"/>
<location filename="../../../python/game_gui.py" line="1083"/>
<source>Soft drop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settings.py" line="26"/>
<location filename="../../../python/game_gui.py" line="1084"/>
<source>Hard drop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settings.py" line="27"/>
<location filename="../../../python/game_gui.py" line="1085"/>
<source>Hold</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settings.py" line="28"/>
<location filename="../../../python/game_gui.py" line="1086"/>
<source>Pause</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settings.py" line="29"/>
<location filename="../../../python/game_gui.py" line="1087"/>
<source>Other settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settings.py" line="31"/>
<location filename="../../../python/game_gui.py" line="1089"/>
<source>Delays</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settings.py" line="32"/>
<location filename="../../../python/game_gui.py" line="1090"/>
<source>Auto-shift delay</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settings.py" line="33"/>
<location filename="../../../python/game_gui.py" line="1091"/>
<source>Auto-repeat rate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settings.py" line="35"/>
<location filename="../../../python/game_gui.py" line="1093"/>
<source>Sound</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settings.py" line="36"/>
<location filename="../../../python/game_gui.py" line="1094"/>
<source>Music volume</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settings.py" line="37"/>
<location filename="../../../python/game_gui.py" line="1095"/>
<source>Effects volume</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settings.py" line="39"/>
<location filename="../../../python/game_gui.py" line="1097"/>
<source>Show ghost piece</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settings.py" line="40"/>
<location filename="../../../python/game_gui.py" line="1098"/>
<source>Show next queue</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settings.py" line="41"/>
<location filename="../../../python/game_gui.py" line="1099"/>
<source>Hold enabled</source>
<translation type="unfinished"></translation>
</message>
@ -165,7 +165,7 @@ OVER</source>
<context>
<name>SettingsDialog</name>
<message>
<location filename="../settings.py" line="95"/>
<location filename="../../../python/game_gui.py" line="1153"/>
<source>Settings</source>
<translation type="unfinished"></translation>
</message>
@ -173,137 +173,148 @@ OVER</source>
<context>
<name>Stats</name>
<message>
<location filename="../stats.py" line="43"/>
<location filename="../../../python/game_gui.py" line="573"/>
<source>High score</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../stats.py" line="126"/>
<location filename="../../../python/game_gui.py" line="662"/>
<source>COMBO x{:n}
{:n}</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../stats.py" line="158"/>
<location filename="../../../python/game_gui.py" line="694"/>
<source>BACK TO BACK
{:n}</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../stats.py" line="189"/>
<location filename="../../../python/game_gui.py" line="731"/>
<source>Score: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../stats.py" line="189"/>
<location filename="../../../python/game_gui.py" line="731"/>
<source>High score: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../stats.py" line="189"/>
<location filename="../../../python/game_gui.py" line="731"/>
<source>Time: {}
</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../stats.py" line="189"/>
<location filename="../../../python/game_gui.py" line="731"/>
<source>Level: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../stats.py" line="189"/>
<location filename="../../../python/game_gui.py" line="731"/>
<source>Goal: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../stats.py" line="189"/>
<location filename="../../../python/game_gui.py" line="731"/>
<source>Lines: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../stats.py" line="189"/>
<location filename="../../../python/game_gui.py" line="731"/>
<source>Mini T-Spins: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../stats.py" line="189"/>
<location filename="../../../python/game_gui.py" line="731"/>
<source>T-Spins: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../stats.py" line="189"/>
<source>Back-to-back: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../stats.py" line="189"/>
<location filename="../../../python/game_gui.py" line="731"/>
<source>Max combo: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../stats.py" line="189"/>
<location filename="../../../python/game_gui.py" line="731"/>
<source>Combos: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../stats.py" line="228"/>
<location filename="../../../python/game_gui.py" line="749"/>
<source>Lines per minute: {:.1f}</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../stats.py" line="228"/>
<location filename="../../../python/game_gui.py" line="749"/>
<source>Tetrominos locked down: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../stats.py" line="228"/>
<location filename="../../../python/game_gui.py" line="749"/>
<source>Tetrominos per minute: {:.1f}</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../stats.py" line="243"/>
<location filename="../../../python/game_gui.py" line="762"/>
<source>: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../python/game_gui.py" line="658"/>
<source>COMBO
{:n}</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../python/game_gui.py" line="731"/>
<source>Back-to-backs: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../python/game_gui.py" line="731"/>
<source>Max back-to-back score: </source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Window</name>
<message>
<location filename="../window.py" line="93"/>
<location filename="../../../python/game_gui.py" line="1450"/>
<source>&amp;New game</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../window.py" line="97"/>
<location filename="../../../python/game_gui.py" line="1454"/>
<source>&amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../window.py" line="101"/>
<location filename="../../../python/game_gui.py" line="1458"/>
<source>&amp;About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../window.py" line="139"/>
<location filename="../../../python/game_gui.py" line="1496"/>
<source>Quit game?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../window.py" line="139"/>
<location filename="../../../python/game_gui.py" line="1496"/>
<source>A game is in progress.
Do you want to abord it?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../window.py" line="154"/>
<location filename="../../../python/game_gui.py" line="1511"/>
<source>High score</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../window.py" line="112"/>
<source>Tetris® clone by Adrien Malingrey
<location filename="../../../python/game_gui.py" line="1469"/>
<source>Tetris&#xc2;&#xae; clone by Adrien Malingrey
Tetris Game Design by Alekseï Pajitnov
Tetris Game Design by Alekse&#xc3;&#xaf; Pajitnov
Graphism inspired by Tetris Effect
Window style sheet: qdarkstyle by Colin Duquesnoy
Fonts by Markus Koellmann, Peter Wiegel
@ -313,7 +324,7 @@ Pexels.com by Min An, Jaymantri, Felix Mittermeier
Pixabay.com by LoganArt
Pixnio.com by Adrian Pelletier
Unsplash.com by Aron, Patrick Fore, Ilnur Kalimullin, Gabriel Garcia Marengo, Adnanta Raharja
StockSnap.io by Nathan Anderson, José Ignacio Pompé
StockSnap.io by Nathan Anderson, Jos&#xc3;&#xa9; Ignacio Pomp&#xc3;&#xa9;
Musics from ocremix.org by:
CheDDer Nardz, djpretzel, MkVaff, Sir_NutS, R3FORGED, Sir_NutS
Sound effects made with voc-one by Simple-Media</source>

Binary file not shown.

View File

@ -1,44 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="fr_FR">
<TS version="2.0" language="fr_FR">
<context>
<name>Frames</name>
<message>
<location filename="../frames.py" line="205"/>
<location filename="../../../python/game_gui.py" line="932"/>
<source>New game</source>
<translation>Nouvelle partie</translation>
</message>
<message>
<location filename="../frames.py" line="192"/>
<location filename="../../../python/game_gui.py" line="919"/>
<source>A game is in progress.
Do you want to abord it?</source>
<translation>Une partie est en cours.
Voulez-vous l&apos;abandonner ?</translation>
</message>
<message>
<location filename="../frames.py" line="205"/>
<location filename="../../../python/game_gui.py" line="932"/>
<source>Start level:</source>
<translation>Commencer au niveau :</translation>
</message>
<message>
<location filename="../frames.py" line="323"/>
<location filename="../../../python/game_gui.py" line="1050"/>
<source>High score</source>
<translation>Meilleur score</translation>
</message>
<message>
<location filename="../frames.py" line="312"/>
<location filename="../../../python/game_gui.py" line="1040"/>
<source>Game over</source>
<translation>Partie terminée</translation>
</message>
<message>
<location filename="../frames.py" line="315"/>
<location filename="../../../python/game_gui.py" line="1043"/>
<source>Congratulations!
You have the high score: {}</source>
<translation>Bravo !
Vous avez atteint le meilleur score : {}</translation>
</message>
<message>
<location filename="../frames.py" line="325"/>
<location filename="../../../python/game_gui.py" line="1052"/>
<source>Score: {}
High score: {}</source>
<translation>Score : {}
@ -48,14 +48,14 @@ Meilleur score : {}</translation>
<context>
<name>Matrix</name>
<message>
<location filename="../matrix.py" line="73"/>
<location filename="../../../python/game_gui.py" line="140"/>
<source>Level
</source>
<translation>Niveau
</translation>
</message>
<message>
<location filename="../matrix.py" line="356"/>
<location filename="../../../python/game_gui.py" line="425"/>
<source>PAUSE
Press %s
@ -67,7 +67,7 @@ Appuyez sur
pour reprendre</translation>
</message>
<message>
<location filename="../matrix.py" line="364"/>
<location filename="../../../python/game_gui.py" line="433"/>
<source>GAME
OVER</source>
<translation>PARTIE
@ -77,97 +77,97 @@ TERMINÉE</translation>
<context>
<name>SettingStrings</name>
<message>
<location filename="../settings.py" line="20"/>
<location filename="../../../python/game_gui.py" line="1078"/>
<source>Keyboard settings</source>
<translation>Configuration du clavier</translation>
</message>
<message>
<location filename="../settings.py" line="21"/>
<location filename="../../../python/game_gui.py" line="1079"/>
<source>Move left</source>
<translation>Déplacer à gauche</translation>
</message>
<message>
<location filename="../settings.py" line="22"/>
<location filename="../../../python/game_gui.py" line="1080"/>
<source>Move right</source>
<translation>Déplacer à droite</translation>
</message>
<message>
<location filename="../settings.py" line="23"/>
<location filename="../../../python/game_gui.py" line="1081"/>
<source>Rotate clockwise</source>
<translation>Tourner dans le sens horaire</translation>
</message>
<message>
<location filename="../settings.py" line="24"/>
<location filename="../../../python/game_gui.py" line="1082"/>
<source>Rotate counterclockwise</source>
<translation>Tourner dans le sens anti-horaire</translation>
</message>
<message>
<location filename="../settings.py" line="25"/>
<location filename="../../../python/game_gui.py" line="1083"/>
<source>Soft drop</source>
<translation>Chute lente</translation>
</message>
<message>
<location filename="../settings.py" line="26"/>
<location filename="../../../python/game_gui.py" line="1084"/>
<source>Hard drop</source>
<translation>Chute rapide</translation>
</message>
<message>
<location filename="../settings.py" line="27"/>
<location filename="../../../python/game_gui.py" line="1085"/>
<source>Hold</source>
<translation>Réserve</translation>
</message>
<message>
<location filename="../settings.py" line="28"/>
<location filename="../../../python/game_gui.py" line="1086"/>
<source>Pause</source>
<translation>Pause</translation>
</message>
<message>
<location filename="../settings.py" line="29"/>
<location filename="../../../python/game_gui.py" line="1087"/>
<source>Other settings</source>
<translation>Autres paramètres</translation>
</message>
<message>
<location filename="../settings.py" line="31"/>
<location filename="../../../python/game_gui.py" line="1089"/>
<source>Delays</source>
<translation>Temporisation</translation>
</message>
<message>
<location filename="../settings.py" line="32"/>
<location filename="../../../python/game_gui.py" line="1090"/>
<source>Auto-shift delay</source>
<translation>Délai avant répétition</translation>
</message>
<message>
<location filename="../settings.py" line="33"/>
<location filename="../../../python/game_gui.py" line="1091"/>
<source>Auto-repeat rate</source>
<translation>Vitesse de répétition</translation>
</message>
<message>
<location filename="../settings.py" line="35"/>
<location filename="../../../python/game_gui.py" line="1093"/>
<source>Sound</source>
<translation>Son</translation>
</message>
<message>
<location filename="../settings.py" line="36"/>
<location filename="../../../python/game_gui.py" line="1094"/>
<source>Music volume</source>
<translation>Volume de la musique</translation>
</message>
<message>
<location filename="../settings.py" line="37"/>
<location filename="../../../python/game_gui.py" line="1095"/>
<source>Effects volume</source>
<translation>Volume des effets sonores</translation>
</message>
<message>
<location filename="../settings.py" line="39"/>
<location filename="../../../python/game_gui.py" line="1097"/>
<source>Show ghost piece</source>
<translation>Afficher la pièce fantôme</translation>
</message>
<message>
<location filename="../settings.py" line="40"/>
<location filename="../../../python/game_gui.py" line="1098"/>
<source>Show next queue</source>
<translation>Afficher les 6 prochaines pièces</translation>
</message>
<message>
<location filename="../settings.py" line="41"/>
<location filename="../../../python/game_gui.py" line="1099"/>
<source>Hold enabled</source>
<translation>Activer la réserve</translation>
</message>
@ -175,7 +175,7 @@ TERMINÉE</translation>
<context>
<name>SettingsDialog</name>
<message>
<location filename="../settings.py" line="95"/>
<location filename="../../../python/game_gui.py" line="1153"/>
<source>Settings</source>
<translation>Préférences</translation>
</message>
@ -183,133 +183,150 @@ TERMINÉE</translation>
<context>
<name>Stats</name>
<message>
<location filename="../stats.py" line="43"/>
<location filename="../../../python/game_gui.py" line="573"/>
<source>High score</source>
<translation>Meilleur score</translation>
</message>
<message>
<location filename="../stats.py" line="126"/>
<location filename="../../../python/game_gui.py" line="662"/>
<source>COMBO x{:n}
{:n}</source>
<translation>COMBO x{:n}
{:n}</translation>
</message>
<message>
<location filename="../stats.py" line="158"/>
<location filename="../../../python/game_gui.py" line="694"/>
<source>BACK TO BACK
{:n}</source>
<translation>BACK TO BACK
{:n}</translation>
</message>
<message>
<location filename="../stats.py" line="189"/>
<location filename="../../../python/game_gui.py" line="731"/>
<source>Time: {}
</source>
<translation>Temps : {}
</translation>
</message>
<message>
<location filename="../stats.py" line="228"/>
<location filename="../../../python/game_gui.py" line="749"/>
<source>Lines per minute: {:.1f}</source>
<translation>Lignes par minute : {:.1f}</translation>
</message>
<message>
<location filename="../stats.py" line="228"/>
<location filename="../../../python/game_gui.py" line="749"/>
<source>Tetrominos per minute: {:.1f}</source>
<translation>Tétrominos par minute : {:.1f}</translation>
</message>
<message>
<location filename="../stats.py" line="189"/>
<location filename="../../../python/game_gui.py" line="731"/>
<source>Score: </source>
<translation>Score : </translation>
</message>
<message>
<location filename="../stats.py" line="189"/>
<location filename="../../../python/game_gui.py" line="731"/>
<source>High score: </source>
<translation>Meilleur score : </translation>
</message>
<message>
<location filename="../stats.py" line="189"/>
<location filename="../../../python/game_gui.py" line="731"/>
<source>Level: </source>
<translation>Niveau : </translation>
</message>
<message>
<location filename="../stats.py" line="189"/>
<location filename="../../../python/game_gui.py" line="731"/>
<source>Goal: </source>
<translation>Objectif : </translation>
</message>
<message>
<location filename="../stats.py" line="189"/>
<location filename="../../../python/game_gui.py" line="731"/>
<source>Lines: </source>
<translation>Lignes : </translation>
</message>
<message>
<location filename="../stats.py" line="189"/>
<location filename="../../../python/game_gui.py" line="731"/>
<source>Mini T-Spins: </source>
<translation>Mini T-Spins : </translation>
</message>
<message>
<location filename="../stats.py" line="189"/>
<location filename="../../../python/game_gui.py" line="731"/>
<source>T-Spins: </source>
<translation>T-Spins : </translation>
</message>
<message>
<location filename="../stats.py" line="189"/>
<source>Back-to-back: </source>
<translation>Back-to-back : </translation>
<translation type="obsolete">Back-to-back : </translation>
</message>
<message>
<location filename="../stats.py" line="189"/>
<location filename="../../../python/game_gui.py" line="731"/>
<source>Max combo: </source>
<translation>Combo max : </translation>
</message>
<message>
<location filename="../stats.py" line="189"/>
<location filename="../../../python/game_gui.py" line="731"/>
<source>Combos: </source>
<translation>Combos : </translation>
</message>
<message>
<location filename="../stats.py" line="228"/>
<location filename="../../../python/game_gui.py" line="749"/>
<source>Tetrominos locked down: </source>
<translation>Tétrominos bloqués : </translation>
</message>
<message>
<location filename="../stats.py" line="243"/>
<location filename="../../../python/game_gui.py" line="762"/>
<source>: </source>
<translation> : </translation>
</message>
<message>
<location filename="../../../python/game_gui.py" line="658"/>
<source>COMBO
{:n}</source>
<translation>COMBO
{:n}</translation>
</message>
<message>
<location filename="../../../python/game_gui.py" line="731"/>
<source>Back-to-backs: </source>
<translation>Back-to-backs :</translation>
</message>
<message>
<location filename="../../../python/game_gui.py" line="731"/>
<source>Max back-to-back score: </source>
<translation type="unfinished">Score max back-to-back : </translation>
</message>
</context>
<context>
<name>Window</name>
<message>
<location filename="../window.py" line="154"/>
<location filename="../../../python/game_gui.py" line="1511"/>
<source>High score</source>
<translation>Meilleur score</translation>
</message>
<message>
<location filename="../window.py" line="93"/>
<location filename="../../../python/game_gui.py" line="1450"/>
<source>&amp;New game</source>
<translation>&amp;Nouvelle partie</translation>
</message>
<message>
<location filename="../window.py" line="97"/>
<location filename="../../../python/game_gui.py" line="1454"/>
<source>&amp;Settings</source>
<translation>&amp;Préférences</translation>
</message>
<message>
<location filename="../window.py" line="101"/>
<location filename="../../../python/game_gui.py" line="1458"/>
<source>&amp;About</source>
<translation>&amp;À propos</translation>
</message>
<message>
<location filename="../window.py" line="139"/>
<location filename="../../../python/game_gui.py" line="1496"/>
<source>A game is in progress.
Do you want to abord it?</source>
<translation>Une partie est en cours.
Voulez-vous l&apos;abandonner ?</translation>
</message>
<message>
<location filename="../window.py" line="139"/>
<location filename="../../../python/game_gui.py" line="1496"/>
<source>Quit game?</source>
<translation>Quitter la partie ?</translation>
</message>
@ -331,7 +348,7 @@ StockSnap.io by Nathan Anderson, José Ignacio Pompé
Musics from ocremix.org by:
CheDDer Nardz, djpretzel, MkVaff, Sir_NutS, R3FORGED, Sir_NutS
Sound effects made with voc-one by Simple-Media</source>
<translation>Clone de Tetris® par Adrien Malingrey
<translation type="obsolete">Clone de Tetris® par Adrien Malingrey
Conception du jeu : Alekseï Pajitnov
Graphismes inspirés de Tetris Effect
@ -348,5 +365,25 @@ Musiques issues de ocremix.org par :
CheDDer Nardz, djpretzel, MkVaff, Sir_NutS, R3FORGED, Sir_NutS
Effets sonores réalisés avec voc-one de Simple-Media</translation>
</message>
<message>
<location filename="../../../python/game_gui.py" line="1469"/>
<source>Tetris® clone by Adrien Malingrey
Tetris Game Design by Alekseï Pajitnov
Graphism inspired by Tetris Effect
Window style sheet: qdarkstyle by Colin Duquesnoy
Fonts by Markus Koellmann, Peter Wiegel
Images from:
OpenGameArt.org by beren77, Duion
Pexels.com by Min An, Jaymantri, Felix Mittermeier
Pixabay.com by LoganArt
Pixnio.com by Adrian Pelletier
Unsplash.com by Aron, Patrick Fore, Ilnur Kalimullin, Gabriel Garcia Marengo, Adnanta Raharja
StockSnap.io by Nathan Anderson, José Ignacio Pompé
Musics from ocremix.org by:
CheDDer Nardz, djpretzel, MkVaff, Sir_NutS, R3FORGED, Sir_NutS
Sound effects made with voc-one by Simple-Media</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,3 +1,3 @@
for /F %%n in ('dir /B *.ts') do pylupdate5 -verbose ..\window.py ..\settings.py ..\stats.py ..\matrix.py ..\frames.py -ts %%n
for /F %%n in ('dir /B *.ts') do pylupdate5 -verbose ..\..\..\python\game_gui.py -ts %%n
echo You may need to edit *.ts files with a text editor to correct special characters
pause

View File

@ -1,3 +1,3 @@
for /F %%n in ('dir /B *.ts') do pylupdate5 -verbose ..\window.py ..\settings.py ..\stats.py ..\matrix.py ..\frames.py -ts -noobsolete %%n
for /F %%n in ('dir /B *.ts') do pylupdate5 -verbose ..\..\..\python\game_gui.py -ts -noobsolete %%n
echo You may need to edit *.ts files with a text editor to correct special characters
pause