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 locale
import os import os
import time import time
import functools
from PyQt5 import QtWidgets, QtCore, QtGui, QtMultimedia from PyQt5 import QtWidgets, QtCore, QtGui, QtMultimedia
QtCore.Signal = QtCore.pyqtSignal QtCore.Signal = QtCore.pyqtSignal
@ -588,6 +589,7 @@ class Stats(QtWidgets.QWidget):
self.mini_t_spin_total = 0 self.mini_t_spin_total = 0
self.nb_back_to_back = 0 self.nb_back_to_back = 0
self.back_to_back_scores = None self.back_to_back_scores = None
self.max_back_to_back_score = 0
self.combo = -1 self.combo = -1
self.combos_total = 0 self.combos_total = 0
self.max_combo = 0 self.max_combo = 0
@ -691,6 +693,7 @@ class Stats(QtWidgets.QWidget):
self.temporary_text.emit( self.temporary_text.emit(
self.tr("BACK TO BACK\n{:n}").format(b2b_score) 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.back_to_back_scores = None
self.high_score = max(self.score_total, self.high_score) self.high_score = max(self.score_total, self.high_score)
@ -717,56 +720,38 @@ class Stats(QtWidgets.QWidget):
painter.drawText( painter.drawText(
QtCore.QRectF(self.rect()), self.text(sep="\n\n"), self.text_options 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"): def text(self, full_stats=False, sep="\n"):
text = ( text = (
self.tr("Score: ") self.tr("Score: ") + self.thousand_separated(self.score_total) + sep
+ locale.format("%i", self.score_total, grouping=True, monetary=True) + self.tr("High score: ") + self.thousand_separated(self.high_score) + sep
+ sep
+ self.tr("High score: ")
+ locale.format("%i", self.high_score, grouping=True, monetary=True)
+ sep
+ self.tr("Time: {}\n").format( + self.tr("Time: {}\n").format(
time.strftime("%H:%M:%S", time.gmtime(self.chronometer)) time.strftime("%H:%M:%S", time.gmtime(self.chronometer))
) ) + sep
+ sep + self.tr("Level: ") + self.thousand_separated(self.level) + sep
+ self.tr("Level: ") + self.tr("Goal: ") + self.thousand_separated(self.goal) + sep
+ locale.format("%i", self.level, grouping=True, monetary=True) + self.tr("Lines: ") + self.thousand_separated(self.complete_lines_total) + sep
+ sep + self.tr("Mini T-Spins: ") + self.thousand_separated(self.mini_t_spin_total) + sep
+ self.tr("Goal: ") + self.tr("T-Spins: ") + self.thousand_separated(self.t_spin_total) + sep
+ locale.format("%i", self.goal, grouping=True, monetary=True) + self.tr("Back-to-backs: ") + self.thousand_separated(self.nb_back_to_back) + sep
+ sep + self.tr("Max back-to-back score: ") + self.thousand_separated(self.max_back_to_back_score) + sep
+ self.tr("Lines: ") + self.tr("Max combo: ") + self.thousand_separated(self.max_combo) + sep
+ locale.format( + self.tr("Combos: ") + self.thousand_separated(self.combos_total)
"%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)
) )
if full_stats: if full_stats:
minutes = self.chronometer / 60 minutes = self.chronometer / 60
text += ( text += (
"\n" "\n" + sep
+ sep
+ self.tr("Lines per minute: {:.1f}").format( + self.tr("Lines per minute: {:.1f}").format(
self.complete_lines_total / minutes self.complete_lines_total / minutes
) ) + sep
+ sep
+ self.tr("Tetrominos locked down: ") + self.tr("Tetrominos locked down: ")
+ locale.format("%i", self.nb_tetro, grouping=True, monetary=True) + self.thousand_separated(self.nb_tetro)
+ sep + sep
+ self.tr("Tetrominos per minute: {:.1f}").format( + self.tr("Tetrominos per minute: {:.1f}").format(
self.nb_tetro / minutes self.nb_tetro / minutes
@ -774,9 +759,7 @@ class Stats(QtWidgets.QWidget):
+ sep + sep
) )
text += sep.join( text += sep.join(
score_type["name"] score_type["name"] + self.tr(": ") + self.thousand_separated(nb)
+ self.tr(": ")
+ locale.format("%i", nb, grouping=True, monetary=True)
for score_type, nb in tuple(zip(consts.SCORES, self.lines_stats))[1:] for score_type, nb in tuple(zip(consts.SCORES, self.lines_stats))[1:]
) )
return text 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 fbs_runtime.application_context import ApplicationContext
from game_gui import Window from game_gui import Window
import sys
class AppContext(ApplicationContext): # 1. Subclass ApplicationContext class AppContext(ApplicationContext): # 1. Subclass ApplicationContext
def run(self): # 2. Implement run() def run(self): # 2. Implement run()
win = Window(self) win = Window(self)

View File

@ -162,7 +162,7 @@ class TetroI(Tetromino, metaclass=MetaTetro):
four minoes in a straight line 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 = ( SUPER_ROTATION_SYSTEM = (
{ {
COUNTERCLOCKWISE: ((0, D), (L, D), (2 * R, D), (L, U), (2 * R, 2 * D)), COUNTERCLOCKWISE: ((0, D), (L, D), (2 * R, D), (L, U), (2 * R, 2 * D)),

View File

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