Update translation, correct tetroI
This commit is contained in:
parent
31cb060446
commit
aa52e08521
@ -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)
|
||||
@ -717,56 +720,38 @@ class Stats(QtWidgets.QWidget):
|
||||
painter.drawText(
|
||||
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
|
||||
|
@ -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)
|
||||
|
@ -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)),
|
||||
|
@ -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>&New game</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../window.py" line="97"/>
|
||||
<location filename="../../../python/game_gui.py" line="1454"/>
|
||||
<source>&Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../window.py" line="101"/>
|
||||
<location filename="../../../python/game_gui.py" line="1458"/>
|
||||
<source>&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® clone by Adrien Malingrey
|
||||
|
||||
Tetris Game Design by Alekseï Pajitnov
|
||||
Tetris Game Design by Alekseï 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é 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>
|
||||
|
Binary file not shown.
@ -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'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>&New game</source>
|
||||
<translation>&Nouvelle partie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../window.py" line="97"/>
|
||||
<location filename="../../../python/game_gui.py" line="1454"/>
|
||||
<source>&Settings</source>
|
||||
<translation>&Préférences</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../window.py" line="101"/>
|
||||
<location filename="../../../python/game_gui.py" line="1458"/>
|
||||
<source>&About</source>
|
||||
<translation>&À 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'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>
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user