├── .gitignore ├── icons ├── gottet.ico ├── po │ ├── LINGUAS │ ├── description.pot │ ├── vi.po │ ├── ca.po │ ├── es.po │ ├── zh.po │ ├── ru.po │ ├── zh_TW.po │ ├── ko.po │ ├── he.po │ ├── tr.po │ ├── et.po │ ├── cs.po │ ├── pt.po │ ├── ro.po │ ├── de.po │ ├── nl.po │ ├── fr.po │ ├── ms.po │ ├── lt.po │ ├── pl.po │ └── el.po ├── gottet.icns ├── hicolor │ ├── 16x16 │ │ └── apps │ │ │ └── gottet.png │ ├── 22x22 │ │ └── apps │ │ │ └── gottet.png │ ├── 24x24 │ │ └── apps │ │ │ └── gottet.png │ ├── 32x32 │ │ └── apps │ │ │ └── gottet.png │ ├── 48x48 │ │ └── apps │ │ │ └── gottet.png │ ├── 64x64 │ │ └── apps │ │ │ └── gottet.png │ ├── 128x128 │ │ └── apps │ │ │ └── gottet.png │ ├── 256x256 │ │ └── apps │ │ │ └── gottet.png │ ├── 512x512 │ │ └── apps │ │ │ └── gottet.png │ └── 1024x1024 │ │ └── apps │ │ └── gottet.png ├── icon.qrc ├── gottet.desktop.in └── gottet.appdata.xml.in ├── mac ├── background.tiff └── Info.plist.in ├── README ├── CREDITS ├── src ├── window.h ├── piece.h ├── main.cpp ├── locale_dialog.h ├── board.h ├── piece.cpp ├── scores_dialog.h └── locale_dialog.cpp ├── doc └── gottet.6 ├── cmake ├── AddVersionCompileDefinition.cmake ├── BundleResources.cmake └── TranslateMetainfo.cmake ├── windows_deploy.bat ├── windows └── removeprevious.nsh ├── ChangeLog ├── INSTALL ├── mac_deploy.sh ├── CMakeLists.txt └── translations ├── gottet_zh_TW.ts ├── gottet_zh.ts ├── gottet_ko.ts ├── gottet_en.ts ├── gottet_he.ts ├── gottet_ro.ts ├── gottet_et.ts ├── gottet_pl.ts ├── gottet_nl.ts ├── gottet_cs.ts ├── gottet_ms.ts ├── gottet_de.ts ├── gottet_pt.ts ├── gottet_ru.ts ├── gottet_lt.ts ├── gottet_tr.ts ├── gottet_vi.ts ├── gottet_ca.ts ├── gottet_es.ts └── gottet_fr.ts /.gitignore: -------------------------------------------------------------------------------- 1 | Makefile 2 | build 3 | gottet 4 | *.qm 5 | *~ 6 | -------------------------------------------------------------------------------- /icons/gottet.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gottcode/gottet/HEAD/icons/gottet.ico -------------------------------------------------------------------------------- /icons/po/LINGUAS: -------------------------------------------------------------------------------- 1 | ca cs de el es et fr he ko lt ms nl pl pt ro ru tr vi zh zh_TW 2 | -------------------------------------------------------------------------------- /icons/gottet.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gottcode/gottet/HEAD/icons/gottet.icns -------------------------------------------------------------------------------- /mac/background.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gottcode/gottet/HEAD/mac/background.tiff -------------------------------------------------------------------------------- /icons/hicolor/16x16/apps/gottet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gottcode/gottet/HEAD/icons/hicolor/16x16/apps/gottet.png -------------------------------------------------------------------------------- /icons/hicolor/22x22/apps/gottet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gottcode/gottet/HEAD/icons/hicolor/22x22/apps/gottet.png -------------------------------------------------------------------------------- /icons/hicolor/24x24/apps/gottet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gottcode/gottet/HEAD/icons/hicolor/24x24/apps/gottet.png -------------------------------------------------------------------------------- /icons/hicolor/32x32/apps/gottet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gottcode/gottet/HEAD/icons/hicolor/32x32/apps/gottet.png -------------------------------------------------------------------------------- /icons/hicolor/48x48/apps/gottet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gottcode/gottet/HEAD/icons/hicolor/48x48/apps/gottet.png -------------------------------------------------------------------------------- /icons/hicolor/64x64/apps/gottet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gottcode/gottet/HEAD/icons/hicolor/64x64/apps/gottet.png -------------------------------------------------------------------------------- /icons/hicolor/128x128/apps/gottet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gottcode/gottet/HEAD/icons/hicolor/128x128/apps/gottet.png -------------------------------------------------------------------------------- /icons/hicolor/256x256/apps/gottet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gottcode/gottet/HEAD/icons/hicolor/256x256/apps/gottet.png -------------------------------------------------------------------------------- /icons/hicolor/512x512/apps/gottet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gottcode/gottet/HEAD/icons/hicolor/512x512/apps/gottet.png -------------------------------------------------------------------------------- /icons/hicolor/1024x1024/apps/gottet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gottcode/gottet/HEAD/icons/hicolor/1024x1024/apps/gottet.png -------------------------------------------------------------------------------- /icons/icon.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | hicolor/256x256/apps/gottet.png 4 | 5 | 6 | -------------------------------------------------------------------------------- /icons/gottet.desktop.in: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Gottet 3 | GenericName=Falling Blocks Game 4 | Comment=Clear the board of falling blocks 5 | TryExec=gottet 6 | Exec=gottet 7 | Icon=gottet 8 | Terminal=false 9 | Type=Application 10 | Categories=Qt;Game;ArcadeGame; 11 | Keywords=game;arcade; 12 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | About 2 | ===== 3 | 4 | Gottet is a clone of Tetris I wrote for my wife. Pieces fall from the top 5 | of the play area and you can move them horizontally as well as rotate them 6 | before they reach the bottom of the play area. The goal is to create full 7 | lines of pieces, which are then removed. The game is over when the stack 8 | of pieces reaches the top of the play area. 9 | -------------------------------------------------------------------------------- /CREDITS: -------------------------------------------------------------------------------- 1 | Developers 2 | ---------- 3 | * Graeme Gott 4 | 5 | 6 | Translations 7 | ------------ 8 | Catalan: 9 | * Adolfo Jayme  Barrientos 10 | 11 | Chinese (Taiwan): 12 | * Jeff Huang 13 | 14 | Czech: 15 | * Pavel Fric 16 | 17 | Dutch: 18 | * Robert Borst 19 | 20 | German: 21 | * Michał Trzebiatowski 22 | 23 | Korean: 24 | * 박정규(Jung Kyu Park) 25 | 26 | Lithuanian: 27 | * Moo 28 | 29 | Malay: 30 | * abuyop 31 | 32 | Polish: 33 | * Michał Trzebiatowski 34 | 35 | Romanian: 36 | * Jaff (Oprea Nicolae) 37 | 38 | Russian: 39 | * sorrymak 40 | 41 | Spanish: 42 | * Adolfo Jayme  Barrientos 43 | 44 | Turkish: 45 | * Cüneyt Oktay 46 | 47 | Vietnamese: 48 | * Anh Phan 49 | 50 | 51 | Libraries 52 | --------- 53 | * Qt, http://www.qt.io/ 54 | -------------------------------------------------------------------------------- /src/window.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2008-2021 Graeme Gott 3 | 4 | SPDX-License-Identifier: GPL-3.0-or-later 5 | */ 6 | 7 | #ifndef GOTTET_WINDOW_H 8 | #define GOTTET_WINDOW_H 9 | 10 | class Board; 11 | 12 | #include 13 | class QAction; 14 | class QLabel; 15 | 16 | class Window : public QMainWindow 17 | { 18 | Q_OBJECT 19 | 20 | public: 21 | explicit Window(QWidget *parent = nullptr); 22 | 23 | protected: 24 | void closeEvent(QCloseEvent* event) override; 25 | 26 | private Q_SLOTS: 27 | void pauseAvailable(bool available); 28 | void togglePaused(bool paused); 29 | void scoreUpdated(int score); 30 | void showScores(); 31 | void newGame(); 32 | void gameOver(int level, int lines, int score); 33 | void about(); 34 | void setLocale(); 35 | 36 | private: 37 | Board* m_board; 38 | QAction* m_pause_action; 39 | QLabel* m_preview; 40 | QLabel* m_level; 41 | QLabel* m_lines; 42 | QLabel* m_score; 43 | }; 44 | 45 | #endif // GOTTET_WINDOW_H 46 | -------------------------------------------------------------------------------- /mac/Info.plist.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleInfoDictionaryVersion 6 | 6.0 7 | CFBundlePackageType 8 | APPL 9 | CFBundleDevelopmentRegion 10 | en 11 | 12 | CFBundleName 13 | Gottet 14 | CFBundleIdentifier 15 | org.gottcode.Gottet 16 | CFBundleIconFile 17 | gottet.icns 18 | CFBundleExecutable 19 | ${MACOSX_BUNDLE_EXECUTABLE_NAME} 20 | 21 | CFBundleVersion 22 | ${PROJECT_VERSION} 23 | CFBundleShortVersionString 24 | ${PROJECT_VERSION} 25 | 26 | NSHumanReadableCopyright 27 | © ${project_copyright} 28 | 29 | LSMinimumSystemVersion 30 | ${CMAKE_OSX_DEPLOYMENT_TARGET} 31 | 32 | NSPrincipalClass 33 | NSApplication 34 | NSSupportsAutomaticGraphicsSwitching 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /src/piece.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2007-2008 Graeme Gott 3 | 4 | SPDX-License-Identifier: GPL-3.0-or-later 5 | */ 6 | 7 | #ifndef GOTTET_PIECE_H 8 | #define GOTTET_PIECE_H 9 | 10 | struct Cell 11 | { 12 | explicit Cell(int x1 = -1, int y1 = -1) 13 | : x(x1) 14 | , y(y1) 15 | { 16 | } 17 | 18 | int x; 19 | int y; 20 | }; 21 | 22 | class Board; 23 | 24 | class Piece 25 | { 26 | public: 27 | Piece(int type, Board* board); 28 | 29 | bool isValid() const 30 | { 31 | return m_valid; 32 | } 33 | 34 | bool moveLeft() 35 | { 36 | return move(-1, 0); 37 | } 38 | 39 | bool moveRight() 40 | { 41 | return move(1, 0); 42 | } 43 | 44 | bool moveDown() 45 | { 46 | return move(0, 1); 47 | } 48 | 49 | bool rotate(); 50 | void drop(); 51 | 52 | const Cell* cells() const 53 | { 54 | return m_cells; 55 | } 56 | 57 | int type() const 58 | { 59 | return m_type; 60 | } 61 | 62 | static void cells(Cell* cells, int type); 63 | 64 | private: 65 | bool move(int x, int y); 66 | bool updatePosition(const Cell* cells); 67 | 68 | private: 69 | int m_type; 70 | Cell m_cells[4]; 71 | Cell m_pivot; 72 | bool m_valid; 73 | Board* m_board; 74 | }; 75 | 76 | #endif // GOTTET_PIECE_H 77 | -------------------------------------------------------------------------------- /doc/gottet.6: -------------------------------------------------------------------------------- 1 | .TH GOTTET 6 "February 2025" "Gottet 1.2.6" "Games Manual" 2 | 3 | .SH "NAME" 4 | gottet \- simple falling blocks game 5 | 6 | .SH "SYNOPSIS" 7 | .B gottet 8 | [options] 9 | 10 | .SH "DESCRIPTION" 11 | Gottet is a clone of Tetris I wrote for my wife. Pieces fall from the top 12 | of the play area and you can move them horizontally as well as rotate them 13 | before they reach the bottom of the play area. The goal is to create full 14 | lines of pieces, which are then removed. The game is over when the stack 15 | of pieces reaches the top of the play area. 16 | 17 | .SH "OPTIONS" 18 | .TP 19 | .BR \-h ", " \-\-help 20 | Displays help on commandline options. 21 | .TP 22 | .B \-\-help-all 23 | Displays help including Qt specific options. 24 | .TP 25 | .BR \-v ", " \-\-version 26 | Displays version information. 27 | 28 | .SH "SEE ALSO" 29 | .BR qt6options (7) 30 | 31 | .SH "REPORTING BUGS" 32 | Report bugs to . 33 | 34 | .SH "COPYRIGHT" 35 | Copyright \(co 2008-2025 Graeme Gott 36 | .PP 37 | Free use of this software is granted under the terms of the GNU General 38 | Public License version 3 (GPLv3). There is NO WARRANTY, to the extent 39 | permitted by law. 40 | 41 | .SH "AUTHOR" 42 | Graeme Gott . 43 | -------------------------------------------------------------------------------- /icons/po/description.pot: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR Graeme Gott 3 | # This file is distributed under the same license as the Gottet package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: Gottet\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2014-11-14 20:46+0000\n" 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 | "Last-Translator: FULL NAME \n" 14 | "Language-Team: LANGUAGE \n" 15 | "Language: \n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | 20 | #: ../gottet.appdata.xml.in:6 ../gottet.desktop.in:3 21 | msgid "Gottet" 22 | msgstr "" 23 | 24 | #: ../gottet.appdata.xml.in:7 ../gottet.desktop.in:5 25 | msgid "Clear the board of falling blocks" 26 | msgstr "" 27 | 28 | #: ../gottet.appdata.xml.in:10 29 | msgid "" 30 | "Gottet is a falling blocks game. Pieces fall from the top of the play area " 31 | "and you can move them horizontally as well as rotate them before they reach " 32 | "the bottom of the play area. The goal is to create full lines of pieces, " 33 | "which are then removed. The game is over when the stack of pieces reaches " 34 | "the top of the play area." 35 | msgstr "" 36 | 37 | #: ../gottet.desktop.in:4 38 | msgid "Falling Blocks Game" 39 | msgstr "" 40 | -------------------------------------------------------------------------------- /icons/po/vi.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR Graeme Gott 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: Gottet\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2014-11-13 18:44+0000\n" 11 | "PO-Revision-Date: 2014-11-13 18:45+0000\n" 12 | "Last-Translator: FULL NAME \n" 13 | "Language-Team: Vietnamese (http://app.transifex.com/gottcode/gottet/language/vi/)\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "Language: vi\n" 18 | "Plural-Forms: nplurals=1; plural=0;\n" 19 | 20 | #: ../gottet.appdata.xml.in.h:1 ../gottet.desktop.in.h:3 21 | msgid "Clear the board of falling blocks" 22 | msgstr "" 23 | 24 | #: ../gottet.appdata.xml.in.h:2 25 | msgid "" 26 | "Gottet is a falling blocks game. Pieces fall from the top of the play area " 27 | "and you can move them horizontally as well as rotate them before they reach " 28 | "the bottom of the play area. The goal is to create full lines of pieces, " 29 | "which are then removed. The game is over when the stack of pieces reaches " 30 | "the top of the play area." 31 | msgstr "" 32 | 33 | #: ../gottet.desktop.in.h:1 34 | msgid "Gottet" 35 | msgstr "Gottet" 36 | 37 | #: ../gottet.desktop.in.h:2 38 | msgid "Falling Blocks Game" 39 | msgstr "Màn chơi đổ khối" 40 | -------------------------------------------------------------------------------- /icons/po/ca.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR Graeme Gott 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: Gottet\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2014-11-13 18:44+0000\n" 11 | "PO-Revision-Date: 2014-11-13 18:45+0000\n" 12 | "Last-Translator: FULL NAME \n" 13 | "Language-Team: Catalan (http://app.transifex.com/gottcode/gottet/language/ca/)\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "Language: ca\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | 20 | #: ../gottet.appdata.xml.in.h:1 ../gottet.desktop.in.h:3 21 | msgid "Clear the board of falling blocks" 22 | msgstr "" 23 | 24 | #: ../gottet.appdata.xml.in.h:2 25 | msgid "" 26 | "Gottet is a falling blocks game. Pieces fall from the top of the play area " 27 | "and you can move them horizontally as well as rotate them before they reach " 28 | "the bottom of the play area. The goal is to create full lines of pieces, " 29 | "which are then removed. The game is over when the stack of pieces reaches " 30 | "the top of the play area." 31 | msgstr "" 32 | 33 | #: ../gottet.desktop.in.h:1 34 | msgid "Gottet" 35 | msgstr "Gottet" 36 | 37 | #: ../gottet.desktop.in.h:2 38 | msgid "Falling Blocks Game" 39 | msgstr "Joc de blocs que cauen" 40 | -------------------------------------------------------------------------------- /icons/po/es.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR Graeme Gott 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: Gottet\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2014-11-13 18:44+0000\n" 11 | "PO-Revision-Date: 2014-11-13 18:45+0000\n" 12 | "Last-Translator: FULL NAME \n" 13 | "Language-Team: Spanish (http://app.transifex.com/gottcode/gottet/language/es/)\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "Language: es\n" 18 | "Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" 19 | 20 | #: ../gottet.appdata.xml.in.h:1 ../gottet.desktop.in.h:3 21 | msgid "Clear the board of falling blocks" 22 | msgstr "" 23 | 24 | #: ../gottet.appdata.xml.in.h:2 25 | msgid "" 26 | "Gottet is a falling blocks game. Pieces fall from the top of the play area " 27 | "and you can move them horizontally as well as rotate them before they reach " 28 | "the bottom of the play area. The goal is to create full lines of pieces, " 29 | "which are then removed. The game is over when the stack of pieces reaches " 30 | "the top of the play area." 31 | msgstr "" 32 | 33 | #: ../gottet.desktop.in.h:1 34 | msgid "Gottet" 35 | msgstr "Gottet" 36 | 37 | #: ../gottet.desktop.in.h:2 38 | msgid "Falling Blocks Game" 39 | msgstr "Juego de bloques que caen" 40 | -------------------------------------------------------------------------------- /icons/po/zh.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR Graeme Gott 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # 高垚鑫, 2018 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: Gottet\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2014-11-13 18:44+0000\n" 12 | "PO-Revision-Date: 2014-11-13 18:45+0000\n" 13 | "Last-Translator: 高垚鑫, 2018\n" 14 | "Language-Team: Chinese (http://app.transifex.com/gottcode/gottet/language/zh/)\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Language: zh\n" 19 | "Plural-Forms: nplurals=1; plural=0;\n" 20 | 21 | #: ../gottet.appdata.xml.in.h:1 ../gottet.desktop.in.h:3 22 | msgid "Clear the board of falling blocks" 23 | msgstr "清空游戏盘中下落的方块" 24 | 25 | #: ../gottet.appdata.xml.in.h:2 26 | msgid "" 27 | "Gottet is a falling blocks game. Pieces fall from the top of the play area " 28 | "and you can move them horizontally as well as rotate them before they reach " 29 | "the bottom of the play area. The goal is to create full lines of pieces, " 30 | "which are then removed. The game is over when the stack of pieces reaches " 31 | "the top of the play area." 32 | msgstr "Gottet 是一个下落方块游戏。方块从游戏区域上方下落,你可以在方块到达底部前左右移动或翻转它们。游戏的目标是制造一整行方块,然后这行方块会被消除。当方块堆叠到游戏区域顶端时,游戏结束。" 33 | 34 | #: ../gottet.desktop.in.h:1 35 | msgid "Gottet" 36 | msgstr "Gottet" 37 | 38 | #: ../gottet.desktop.in.h:2 39 | msgid "Falling Blocks Game" 40 | msgstr "下落方块游戏" 41 | -------------------------------------------------------------------------------- /icons/po/ru.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR Graeme Gott 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: Gottet\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2014-11-13 18:44+0000\n" 11 | "PO-Revision-Date: 2014-11-13 18:45+0000\n" 12 | "Last-Translator: FULL NAME \n" 13 | "Language-Team: Russian (http://app.transifex.com/gottcode/gottet/language/ru/)\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "Language: ru\n" 18 | "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" 19 | 20 | #: ../gottet.appdata.xml.in.h:1 ../gottet.desktop.in.h:3 21 | msgid "Clear the board of falling blocks" 22 | msgstr "" 23 | 24 | #: ../gottet.appdata.xml.in.h:2 25 | msgid "" 26 | "Gottet is a falling blocks game. Pieces fall from the top of the play area " 27 | "and you can move them horizontally as well as rotate them before they reach " 28 | "the bottom of the play area. The goal is to create full lines of pieces, " 29 | "which are then removed. The game is over when the stack of pieces reaches " 30 | "the top of the play area." 31 | msgstr "" 32 | 33 | #: ../gottet.desktop.in.h:1 34 | msgid "Gottet" 35 | msgstr "Gottet" 36 | 37 | #: ../gottet.desktop.in.h:2 38 | msgid "Falling Blocks Game" 39 | msgstr "Игра с падающими блоками" 40 | -------------------------------------------------------------------------------- /cmake/AddVersionCompileDefinition.cmake: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2022 Graeme Gott 2 | # 3 | # SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | function(add_version_compile_definition versionstr_file versionstr_def) 6 | find_package(Git QUIET) 7 | if(Git_FOUND) 8 | # Find git repository 9 | execute_process( 10 | COMMAND ${GIT_EXECUTABLE} rev-parse --absolute-git-dir 11 | WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} 12 | RESULT_VARIABLE git_dir_result 13 | OUTPUT_VARIABLE git_dir 14 | ERROR_QUIET 15 | OUTPUT_STRIP_TRAILING_WHITESPACE 16 | ) 17 | 18 | if (git_dir_result EQUAL 0) 19 | # Find version number from git 20 | execute_process( 21 | COMMAND ${GIT_EXECUTABLE} describe --tags --match "v*" 22 | WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} 23 | OUTPUT_VARIABLE versionstr 24 | ERROR_QUIET 25 | OUTPUT_STRIP_TRAILING_WHITESPACE 26 | ) 27 | string(REGEX REPLACE "^v" "" versionstr "${versionstr}") 28 | 29 | # Rerun CMake when git repository changes 30 | if (EXISTS ${git_dir}/logs/HEAD) 31 | set_property( 32 | DIRECTORY 33 | APPEND 34 | PROPERTY CMAKE_CONFIGURE_DEPENDS ${git_dir}/logs/HEAD 35 | ) 36 | endif() 37 | endif() 38 | endif() 39 | 40 | # Fall back to project's VERSION 41 | if ("${versionstr}" STREQUAL "") 42 | set(versionstr ${PROJECT_VERSION}) 43 | endif() 44 | 45 | # Pass version as compile definition to file 46 | set_property( 47 | SOURCE ${versionstr_file} 48 | APPEND 49 | PROPERTY COMPILE_DEFINITIONS ${versionstr_def}="${versionstr}" 50 | ) 51 | endfunction() 52 | -------------------------------------------------------------------------------- /icons/po/zh_TW.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR Graeme Gott 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # 黃柏諺 , 2014 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: Gottet\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2014-11-13 18:44+0000\n" 12 | "PO-Revision-Date: 2014-11-13 18:45+0000\n" 13 | "Last-Translator: 黃柏諺 , 2014\n" 14 | "Language-Team: Chinese (Taiwan) (http://app.transifex.com/gottcode/gottet/language/zh_TW/)\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Language: zh_TW\n" 19 | "Plural-Forms: nplurals=1; plural=0;\n" 20 | 21 | #: ../gottet.appdata.xml.in.h:1 ../gottet.desktop.in.h:3 22 | msgid "Clear the board of falling blocks" 23 | msgstr "清除不斷在版面上落下的方塊" 24 | 25 | #: ../gottet.appdata.xml.in.h:2 26 | msgid "" 27 | "Gottet is a falling blocks game. Pieces fall from the top of the play area " 28 | "and you can move them horizontally as well as rotate them before they reach " 29 | "the bottom of the play area. The goal is to create full lines of pieces, " 30 | "which are then removed. The game is over when the stack of pieces reaches " 31 | "the top of the play area." 32 | msgstr "Gottet 是一個不斷掉落方塊的遊戲。許多方塊不停的從頂部掉進遊戲區域內,而您只能在它們掉到遊戲區域的底部前水平移動以及旋轉那些方塊。您的目標是完成一行完整的方塊,這樣它們就會被消除。遊戲在方塊堆疊到遊戲區域頂部時結束。" 33 | 34 | #: ../gottet.desktop.in.h:1 35 | msgid "Gottet" 36 | msgstr "Gottet" 37 | 38 | #: ../gottet.desktop.in.h:2 39 | msgid "Falling Blocks Game" 40 | msgstr "不斷掉落方塊的遊戲" 41 | -------------------------------------------------------------------------------- /icons/po/ko.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR Graeme Gott 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # 1763f4a4329a2376c933c5e919a36cbc_341ca53 <1f851310383599d03339229d772e1290_119292>, 2014 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: Gottet\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2014-11-13 18:44+0000\n" 12 | "PO-Revision-Date: 2014-11-13 18:45+0000\n" 13 | "Last-Translator: 1763f4a4329a2376c933c5e919a36cbc_341ca53 <1f851310383599d03339229d772e1290_119292>, 2014\n" 14 | "Language-Team: Korean (http://app.transifex.com/gottcode/gottet/language/ko/)\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Language: ko\n" 19 | "Plural-Forms: nplurals=1; plural=0;\n" 20 | 21 | #: ../gottet.appdata.xml.in.h:1 ../gottet.desktop.in.h:3 22 | msgid "Clear the board of falling blocks" 23 | msgstr "벽돌이 떨어지는 판을 청소합니다" 24 | 25 | #: ../gottet.appdata.xml.in.h:2 26 | msgid "" 27 | "Gottet is a falling blocks game. Pieces fall from the top of the play area " 28 | "and you can move them horizontally as well as rotate them before they reach " 29 | "the bottom of the play area. The goal is to create full lines of pieces, " 30 | "which are then removed. The game is over when the stack of pieces reaches " 31 | "the top of the play area." 32 | msgstr "고테트는 블록 게임 입니다. 위에서 떨어지는 벽돌들을 바닥에 닿기전에 회전시키는등 가로로 움직이는 게임입니다. 게임은 온전한 벽돌 한 줄을 만드는 것인데요, 온전한 벽돌 한 줄이 만들어지면 사라집니다. 벽돌 조각이 화면 위까지 꽉차면 게임 오버입니다." 33 | 34 | #: ../gottet.desktop.in.h:1 35 | msgid "Gottet" 36 | msgstr "고테트" 37 | 38 | #: ../gottet.desktop.in.h:2 39 | msgid "Falling Blocks Game" 40 | msgstr "벽돌 떨구기 게임" 41 | -------------------------------------------------------------------------------- /cmake/BundleResources.cmake: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2022 Graeme Gott 2 | # 3 | # SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | # Add files to a macOS bundle. 6 | function(bundle_data target source destination) 7 | if(IS_DIRECTORY ${source}) 8 | # Recursively find files under source 9 | file(GLOB_RECURSE files RELATIVE ${source} ${source}/*) 10 | set(parent ${source}) 11 | else() 12 | # Handle single file 13 | get_filename_component(files ${source} NAME) 14 | get_filename_component(parent ${source} DIRECTORY) 15 | endif() 16 | 17 | # Set each file to be located under destination 18 | foreach(resource ${files}) 19 | get_filename_component(path ${resource} DIRECTORY) 20 | set_property( 21 | SOURCE ${parent}/${resource} 22 | PROPERTY 23 | MACOSX_PACKAGE_LOCATION ${destination}/${path} 24 | ) 25 | endforeach() 26 | 27 | # Make target depend on resources 28 | list(TRANSFORM files PREPEND "${parent}/") 29 | target_sources(${target} PRIVATE ${files}) 30 | endfunction() 31 | 32 | # Add translations to a macOS bundle. 33 | function(bundle_translations target translations) 34 | foreach(file ${translations}) 35 | # Set each translation to be located under Resources 36 | set_property( 37 | SOURCE ${file} 38 | PROPERTY 39 | MACOSX_PACKAGE_LOCATION Resources/translations 40 | ) 41 | 42 | # Inform macOS about translation for native dialogs 43 | get_filename_component(resource ${file} NAME) 44 | string(REGEX REPLACE "[^_]*_([^\\.]*)\\..*" "\\1.lproj" lang ${resource}) 45 | add_custom_command( 46 | TARGET ${target} 47 | POST_BUILD 48 | COMMAND ${CMAKE_COMMAND} 49 | ARGS -E make_directory $/Resources/${lang} 50 | ) 51 | endforeach() 52 | endfunction() 53 | -------------------------------------------------------------------------------- /icons/po/he.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR Graeme Gott 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # gk , 2014-2015 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: Gottet\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2014-11-13 18:44+0000\n" 12 | "PO-Revision-Date: 2014-11-13 18:45+0000\n" 13 | "Last-Translator: gk , 2014-2015\n" 14 | "Language-Team: Hebrew (http://app.transifex.com/gottcode/gottet/language/he/)\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Language: he\n" 19 | "Plural-Forms: nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;\n" 20 | 21 | #: ../gottet.appdata.xml.in.h:1 ../gottet.desktop.in.h:3 22 | msgid "Clear the board of falling blocks" 23 | msgstr "טהר את הלוח של לבנים נופלות" 24 | 25 | #: ../gottet.appdata.xml.in.h:2 26 | msgid "" 27 | "Gottet is a falling blocks game. Pieces fall from the top of the play area " 28 | "and you can move them horizontally as well as rotate them before they reach " 29 | "the bottom of the play area. The goal is to create full lines of pieces, " 30 | "which are then removed. The game is over when the stack of pieces reaches " 31 | "the top of the play area." 32 | msgstr "Gottet הינו משחק לבנים נופלות. חתיכות נופלות מראש אזור המשחק ובאפשרותך להזיזן במאוזן וכן גם לסובב אותן טרם הן מגיעות אל התחתית של אזור המשחק. המטרה היא ליצור שורות מלאות של חתיכות, אשר אז מוסרות. המשחק נגמר כאשר ערימה של חתיכות מגיעה אל ראש אזור המשחק." 33 | 34 | #: ../gottet.desktop.in.h:1 35 | msgid "Gottet" 36 | msgstr "" 37 | 38 | #: ../gottet.desktop.in.h:2 39 | msgid "Falling Blocks Game" 40 | msgstr "משחק לבנים נופלות" 41 | -------------------------------------------------------------------------------- /icons/po/tr.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR Graeme Gott 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # abc Def , 2020 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: Gottet\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2014-11-13 18:44+0000\n" 12 | "PO-Revision-Date: 2014-11-13 18:45+0000\n" 13 | "Last-Translator: abc Def , 2020\n" 14 | "Language-Team: Turkish (http://app.transifex.com/gottcode/gottet/language/tr/)\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Language: tr\n" 19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" 20 | 21 | #: ../gottet.appdata.xml.in.h:1 ../gottet.desktop.in.h:3 22 | msgid "Clear the board of falling blocks" 23 | msgstr "Düşen blokların panosunu temizle" 24 | 25 | #: ../gottet.appdata.xml.in.h:2 26 | msgid "" 27 | "Gottet is a falling blocks game. Pieces fall from the top of the play area " 28 | "and you can move them horizontally as well as rotate them before they reach " 29 | "the bottom of the play area. The goal is to create full lines of pieces, " 30 | "which are then removed. The game is over when the stack of pieces reaches " 31 | "the top of the play area." 32 | msgstr "Gottet bir düşen blok oyunudur. Parçalar oyun alanının üstünden düşer ve onları yatay olarak hareket ettirebilir ve oyun alanının altına ulaşmadan önce döndürebilirsiniz. Amaç, daha sonra kaldırılacak tam satırların parçalarını oluşturmaktır. Parça yığını oyun alanının en üstüne ulaştığında oyun sona erer." 33 | 34 | #: ../gottet.desktop.in.h:1 35 | msgid "Gottet" 36 | msgstr "Gottet" 37 | 38 | #: ../gottet.desktop.in.h:2 39 | msgid "Falling Blocks Game" 40 | msgstr "Düşen Kutular Oyunu" 41 | -------------------------------------------------------------------------------- /icons/po/et.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR Graeme Gott 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # Priit Jõerüüt , 2024 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: Gottet\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2014-11-13 18:44+0000\n" 12 | "PO-Revision-Date: 2014-11-13 18:45+0000\n" 13 | "Last-Translator: Priit Jõerüüt , 2024\n" 14 | "Language-Team: Estonian (http://app.transifex.com/gottcode/gottet/language/et/)\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Language: et\n" 19 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 20 | 21 | #: ../gottet.appdata.xml.in.h:1 ../gottet.desktop.in.h:3 22 | msgid "Clear the board of falling blocks" 23 | msgstr "Eemalda mänguväljalt kõik kukuvad klotsid" 24 | 25 | #: ../gottet.appdata.xml.in.h:2 26 | msgid "" 27 | "Gottet is a falling blocks game. Pieces fall from the top of the play area " 28 | "and you can move them horizontally as well as rotate them before they reach " 29 | "the bottom of the play area. The goal is to create full lines of pieces, " 30 | "which are then removed. The game is over when the stack of pieces reaches " 31 | "the top of the play area." 32 | msgstr "Gottet on klassikaline kukkuvate klotside mäng. Klotsid kukuvad ülevalt mänguväljale ning enne alla jõudmist saad sa neid külgsuunas liigutada ning pöörata. Sinu eesmärgiks on klotsidest luua pidevjooni, mis mänguväljalt eemalduvad. Mäng lõppeb, kui klotside pinu kasvab mänguvälja ülemise ääreni." 33 | 34 | #: ../gottet.desktop.in.h:1 35 | msgid "Gottet" 36 | msgstr "Gottet" 37 | 38 | #: ../gottet.desktop.in.h:2 39 | msgid "Falling Blocks Game" 40 | msgstr "Kukkuvate klotside mäng" 41 | -------------------------------------------------------------------------------- /icons/po/cs.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR Graeme Gott 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # fri, 2014 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: Gottet\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2014-11-13 18:44+0000\n" 12 | "PO-Revision-Date: 2014-11-13 18:45+0000\n" 13 | "Last-Translator: fri, 2014\n" 14 | "Language-Team: Czech (http://app.transifex.com/gottcode/gottet/language/cs/)\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Language: cs\n" 19 | "Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" 20 | 21 | #: ../gottet.appdata.xml.in.h:1 ../gottet.desktop.in.h:3 22 | msgid "Clear the board of falling blocks" 23 | msgstr "Vyprázdněte desku od padajících kostek" 24 | 25 | #: ../gottet.appdata.xml.in.h:2 26 | msgid "" 27 | "Gottet is a falling blocks game. Pieces fall from the top of the play area " 28 | "and you can move them horizontally as well as rotate them before they reach " 29 | "the bottom of the play area. The goal is to create full lines of pieces, " 30 | "which are then removed. The game is over when the stack of pieces reaches " 31 | "the top of the play area." 32 | msgstr "Gottet je hra s padajícími kostkami. Kousky padají s horní části herní oblasti a vy jimi můžete pohybovat vodorovně a také je můžete otáčet, než dosáhnou dna v dolní části herní oblasti. Cílem je z kousků vytvořit úplné řádky, které jsou potom odstraněny. Hra končí, když sloupec kousků dosáhne stropu herní oblasti." 33 | 34 | #: ../gottet.desktop.in.h:1 35 | msgid "Gottet" 36 | msgstr "Gottet" 37 | 38 | #: ../gottet.desktop.in.h:2 39 | msgid "Falling Blocks Game" 40 | msgstr "Hra s padajícími kostkami" 41 | -------------------------------------------------------------------------------- /icons/po/pt.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR Graeme Gott 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # Rui , 2018 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: Gottet\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2014-11-13 18:44+0000\n" 12 | "PO-Revision-Date: 2014-11-13 18:45+0000\n" 13 | "Last-Translator: Rui , 2018\n" 14 | "Language-Team: Portuguese (http://app.transifex.com/gottcode/gottet/language/pt/)\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Language: pt\n" 19 | "Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" 20 | 21 | #: ../gottet.appdata.xml.in.h:1 ../gottet.desktop.in.h:3 22 | msgid "Clear the board of falling blocks" 23 | msgstr "Limpe o tabuleiro de blocos a cair" 24 | 25 | #: ../gottet.appdata.xml.in.h:2 26 | msgid "" 27 | "Gottet is a falling blocks game. Pieces fall from the top of the play area " 28 | "and you can move them horizontally as well as rotate them before they reach " 29 | "the bottom of the play area. The goal is to create full lines of pieces, " 30 | "which are then removed. The game is over when the stack of pieces reaches " 31 | "the top of the play area." 32 | msgstr "O Gottet é um jogo de blocos a cair. As peças caem do topo da área de jogo e pode movê-las horizontalmente assim como rodá-las antes destas atingirem o fundo da área de jogo. O objetivo é criar linhas completas de peças que são depois removidas. O jogo termina quando a pilha de peças atinge o topo da área de jogo." 33 | 34 | #: ../gottet.desktop.in.h:1 35 | msgid "Gottet" 36 | msgstr "Gottet" 37 | 38 | #: ../gottet.desktop.in.h:2 39 | msgid "Falling Blocks Game" 40 | msgstr "Jogo de Blocos a Cair" 41 | -------------------------------------------------------------------------------- /icons/po/ro.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR Graeme Gott 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # Oprea Nicolae , 2014 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: Gottet\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2014-11-13 18:44+0000\n" 12 | "PO-Revision-Date: 2014-11-13 18:45+0000\n" 13 | "Last-Translator: Oprea Nicolae , 2014\n" 14 | "Language-Team: Romanian (http://app.transifex.com/gottcode/gottet/language/ro/)\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Language: ro\n" 19 | "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" 20 | 21 | #: ../gottet.appdata.xml.in.h:1 ../gottet.desktop.in.h:3 22 | msgid "Clear the board of falling blocks" 23 | msgstr "Curăţaţi tabela de piesele căzătoare" 24 | 25 | #: ../gottet.appdata.xml.in.h:2 26 | msgid "" 27 | "Gottet is a falling blocks game. Pieces fall from the top of the play area " 28 | "and you can move them horizontally as well as rotate them before they reach " 29 | "the bottom of the play area. The goal is to create full lines of pieces, " 30 | "which are then removed. The game is over when the stack of pieces reaches " 31 | "the top of the play area." 32 | msgstr "Gottet este un joc de blocuri căzătoare. Piesele cad din partea de sus a zonei de joc şi le puteţi muta pe orizontală cît şi roti înainte de a ajunge în partea de jos a zonei de joc. Scopul este de a crea linii complete de piese, care sînt apoi eliminate. Jocul se termină cînd stiva de piese ajunge la partea de sus a zonei joc." 33 | 34 | #: ../gottet.desktop.in.h:1 35 | msgid "Gottet" 36 | msgstr "Gottet" 37 | 38 | #: ../gottet.desktop.in.h:2 39 | msgid "Falling Blocks Game" 40 | msgstr "Joc de blocuri căzătoare" 41 | -------------------------------------------------------------------------------- /icons/po/de.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR Graeme Gott 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # 79353a696ad19dc202b261b3067b7640_bec941e, 2015 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: Gottet\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2014-11-13 18:44+0000\n" 12 | "PO-Revision-Date: 2014-11-13 18:45+0000\n" 13 | "Last-Translator: 79353a696ad19dc202b261b3067b7640_bec941e, 2015\n" 14 | "Language-Team: German (http://app.transifex.com/gottcode/gottet/language/de/)\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Language: de\n" 19 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 20 | 21 | #: ../gottet.appdata.xml.in.h:1 ../gottet.desktop.in.h:3 22 | msgid "Clear the board of falling blocks" 23 | msgstr "Räum das Spielfeld von fallenden Blöcken" 24 | 25 | #: ../gottet.appdata.xml.in.h:2 26 | msgid "" 27 | "Gottet is a falling blocks game. Pieces fall from the top of the play area " 28 | "and you can move them horizontally as well as rotate them before they reach " 29 | "the bottom of the play area. The goal is to create full lines of pieces, " 30 | "which are then removed. The game is over when the stack of pieces reaches " 31 | "the top of the play area." 32 | msgstr "Gottet ist ein Spiel der fallenden Steine. Teile fallen vom oberen Rand des Spielbereichs und man kann sie sowohl horizontal bewegen als auch drehen, bevor sie den Boden des Spielbereichs erreichen. Das Ziel ist, volle Linien der Stücke, die dann entfernt werden, zu erstellen. Das Spiel ist beendet, wenn der Stapel von Teilen die Spitze des Spielbereichs erreicht hat." 33 | 34 | #: ../gottet.desktop.in.h:1 35 | msgid "Gottet" 36 | msgstr "Gottet" 37 | 38 | #: ../gottet.desktop.in.h:2 39 | msgid "Falling Blocks Game" 40 | msgstr "Ein Spiel der fallenden Steine" 41 | -------------------------------------------------------------------------------- /icons/po/nl.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR Graeme Gott 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # Heimen Stoffels , 2022 7 | # RobertBorst , 2016,2023 8 | msgid "" 9 | msgstr "" 10 | "Project-Id-Version: Gottet\n" 11 | "Report-Msgid-Bugs-To: \n" 12 | "POT-Creation-Date: 2014-11-13 18:44+0000\n" 13 | "PO-Revision-Date: 2014-11-13 18:45+0000\n" 14 | "Last-Translator: RobertBorst , 2016,2023\n" 15 | "Language-Team: Dutch (Netherlands) (http://app.transifex.com/gottcode/gottet/language/nl_NL/)\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Language: nl\n" 20 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 21 | 22 | #: ../gottet.appdata.xml.in.h:1 ../gottet.desktop.in.h:3 23 | msgid "Clear the board of falling blocks" 24 | msgstr "Maak het \"vallendeblokken\"-bord schoon" 25 | 26 | #: ../gottet.appdata.xml.in.h:2 27 | msgid "" 28 | "Gottet is a falling blocks game. Pieces fall from the top of the play area " 29 | "and you can move them horizontally as well as rotate them before they reach " 30 | "the bottom of the play area. The goal is to create full lines of pieces, " 31 | "which are then removed. The game is over when the stack of pieces reaches " 32 | "the top of the play area." 33 | msgstr "Gottet is een \"vallendeblokken\"-spel. Blokken vallen vanaf de bovenkant van het scherm. Je kunt ze zowel horizontaal verplaatsen als draaien totdat ze de bodem raken. Het doel is om lijnen te maken en zo het bord leeg te maken. Het spel is voorbij als de stapel blokken de bovenkant van het bord bereikt." 34 | 35 | #: ../gottet.desktop.in.h:1 36 | msgid "Gottet" 37 | msgstr "Gottet" 38 | 39 | #: ../gottet.desktop.in.h:2 40 | msgid "Falling Blocks Game" 41 | msgstr "\"Vallendeblokken\"-spel" 42 | -------------------------------------------------------------------------------- /icons/po/fr.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR Graeme Gott 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # a270031086f2a0d3514bc0cb507b48f6, 2019 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: Gottet\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2014-11-13 18:44+0000\n" 12 | "PO-Revision-Date: 2014-11-13 18:45+0000\n" 13 | "Last-Translator: a270031086f2a0d3514bc0cb507b48f6, 2019\n" 14 | "Language-Team: French (http://app.transifex.com/gottcode/gottet/language/fr/)\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Language: fr\n" 19 | "Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" 20 | 21 | #: ../gottet.appdata.xml.in.h:1 ../gottet.desktop.in.h:3 22 | msgid "Clear the board of falling blocks" 23 | msgstr "Dégagez le plateau des blocs qui tombent" 24 | 25 | #: ../gottet.appdata.xml.in.h:2 26 | msgid "" 27 | "Gottet is a falling blocks game. Pieces fall from the top of the play area " 28 | "and you can move them horizontally as well as rotate them before they reach " 29 | "the bottom of the play area. The goal is to create full lines of pieces, " 30 | "which are then removed. The game is over when the stack of pieces reaches " 31 | "the top of the play area." 32 | msgstr "Gottet est un jeu de blocs qui tombe. Des morceaux tombent du haut de la zone de jeu. Vous pouvez les déplacer horizontalement et les faire pivoter avant d’atteindre le bas de la zone de jeu. Le but est de créer des lignes complètes de pièces, qui sont ensuite supprimées. Le jeu est terminé lorsque la pile de pièces atteint le haut de l'aire de jeu." 33 | 34 | #: ../gottet.desktop.in.h:1 35 | msgid "Gottet" 36 | msgstr "Gottet" 37 | 38 | #: ../gottet.desktop.in.h:2 39 | msgid "Falling Blocks Game" 40 | msgstr "Falling Blocks Game" 41 | -------------------------------------------------------------------------------- /icons/po/ms.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR Graeme Gott 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # abuyop , 2014 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: Gottet\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2014-11-13 18:44+0000\n" 12 | "PO-Revision-Date: 2014-11-13 18:45+0000\n" 13 | "Last-Translator: abuyop , 2014\n" 14 | "Language-Team: Malay (Malaysia) (http://app.transifex.com/gottcode/gottet/language/ms_MY/)\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Language: ms\n" 19 | "Plural-Forms: nplurals=1; plural=0;\n" 20 | 21 | #: ../gottet.appdata.xml.in.h:1 ../gottet.desktop.in.h:3 22 | msgid "Clear the board of falling blocks" 23 | msgstr "Koosngkan papan yang mengandungi blok-blok yang turun" 24 | 25 | #: ../gottet.appdata.xml.in.h:2 26 | msgid "" 27 | "Gottet is a falling blocks game. Pieces fall from the top of the play area " 28 | "and you can move them horizontally as well as rotate them before they reach " 29 | "the bottom of the play area. The goal is to create full lines of pieces, " 30 | "which are then removed. The game is over when the stack of pieces reaches " 31 | "the top of the play area." 32 | msgstr "Gottet merupakan permainan jatuhan blok. Cebisan akan jatuh dari atas kawasan permainan dan anda boleh gerak ia secara mengufuk dan juga boleh memutar ia sebelum ia jatuh ke dasar kawasan permainan. Matlamat permainan adalah untuk membentuk satu barisan cebisan, yang mana ia akan dikeluarkan dari kawasan permainan jika terbentuk. Permainan tamat bila tindanan cebisan mencapai bahagian teratas kawasan permainan." 33 | 34 | #: ../gottet.desktop.in.h:1 35 | msgid "Gottet" 36 | msgstr "Gottet" 37 | 38 | #: ../gottet.desktop.in.h:2 39 | msgid "Falling Blocks Game" 40 | msgstr "Permainan Jatuhan Blok" 41 | -------------------------------------------------------------------------------- /icons/po/lt.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR Graeme Gott 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # Moo, 2014,2016 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: Gottet\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2014-11-13 18:44+0000\n" 12 | "PO-Revision-Date: 2014-11-13 18:45+0000\n" 13 | "Last-Translator: Moo, 2014,2016\n" 14 | "Language-Team: Lithuanian (http://app.transifex.com/gottcode/gottet/language/lt/)\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Language: lt\n" 19 | "Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n" 20 | 21 | #: ../gottet.appdata.xml.in.h:1 ../gottet.desktop.in.h:3 22 | msgid "Clear the board of falling blocks" 23 | msgstr "Išvalykite krentančių blokų plokštę" 24 | 25 | #: ../gottet.appdata.xml.in.h:2 26 | msgid "" 27 | "Gottet is a falling blocks game. Pieces fall from the top of the play area " 28 | "and you can move them horizontally as well as rotate them before they reach " 29 | "the bottom of the play area. The goal is to create full lines of pieces, " 30 | "which are then removed. The game is over when the stack of pieces reaches " 31 | "the top of the play area." 32 | msgstr "Gottet yra krentančių blokų žaidimas. Į žaidimo plotą iš viršaus krenta figūros. Prieš figūroms pasiekiant žaidimo ploto apačią, galite keisti horizontalią figūrų padėtį, o taip pat jas pasukti. Pagrindinis tikslas yra sukurti pilnas figūrų eilutes, kurios paskui pašalinamos. Žaidimas užbaigiamas, jeigu figūrų krūva pasiekia žaidimo ploto viršų." 33 | 34 | #: ../gottet.desktop.in.h:1 35 | msgid "Gottet" 36 | msgstr "Gottet" 37 | 38 | #: ../gottet.desktop.in.h:2 39 | msgid "Falling Blocks Game" 40 | msgstr "Krentančių blokų žaidimas" 41 | -------------------------------------------------------------------------------- /icons/po/pl.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR Graeme Gott 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # Michał Trzebiatowski , 2015 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: Gottet\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2014-11-13 18:44+0000\n" 12 | "PO-Revision-Date: 2014-11-13 18:45+0000\n" 13 | "Last-Translator: Michał Trzebiatowski , 2015\n" 14 | "Language-Team: Polish (http://app.transifex.com/gottcode/gottet/language/pl/)\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Language: pl\n" 19 | "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" 20 | 21 | #: ../gottet.appdata.xml.in.h:1 ../gottet.desktop.in.h:3 22 | msgid "Clear the board of falling blocks" 23 | msgstr "Oczyść planszę ze spadających klocków" 24 | 25 | #: ../gottet.appdata.xml.in.h:2 26 | msgid "" 27 | "Gottet is a falling blocks game. Pieces fall from the top of the play area " 28 | "and you can move them horizontally as well as rotate them before they reach " 29 | "the bottom of the play area. The goal is to create full lines of pieces, " 30 | "which are then removed. The game is over when the stack of pieces reaches " 31 | "the top of the play area." 32 | msgstr "Gottet to gra w spadające klocki. Klocki spadają z góry na obszar gry i możesz je przesunąć w poziomie, jak i również obracać, zanim dotrą do dna obszaru gry. Celem gry jest tworzenie pełnych linii, które następnie są usuwane. Gra kończy się, gdy stos klocków osiągnie szczyt obszaru gry." 33 | 34 | #: ../gottet.desktop.in.h:1 35 | msgid "Gottet" 36 | msgstr "Gottet" 37 | 38 | #: ../gottet.desktop.in.h:2 39 | msgid "Falling Blocks Game" 40 | msgstr "Gra w spadające klocki" 41 | -------------------------------------------------------------------------------- /src/main.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2007-2022 Graeme Gott 3 | 4 | SPDX-License-Identifier: GPL-3.0-or-later 5 | */ 6 | 7 | #include "locale_dialog.h" 8 | #include "scores_dialog.h" 9 | #include "window.h" 10 | 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | 17 | int main(int argc, char** argv) 18 | { 19 | QApplication app(argc, argv); 20 | app.setApplicationName("Gottet"); 21 | app.setApplicationVersion(VERSIONSTR); 22 | app.setApplicationDisplayName(Window::tr("Gottet")); 23 | app.setOrganizationDomain("gottcode.org"); 24 | app.setOrganizationName("GottCode"); 25 | #if !defined(Q_OS_WIN) && !defined(Q_OS_MAC) 26 | app.setWindowIcon(QIcon::fromTheme("gottet", QIcon(":/gottet.png"))); 27 | app.setDesktopFileName("gottet"); 28 | #endif 29 | 30 | // Find application data 31 | const QString appdir = app.applicationDirPath(); 32 | const QString datadir = QDir::cleanPath(appdir + "/" + GOTTET_DATADIR); 33 | 34 | // Handle portability 35 | #ifdef Q_OS_MAC 36 | const QFileInfo portable(appdir + "/../../../Data"); 37 | #else 38 | const QFileInfo portable(appdir + "/Data"); 39 | #endif 40 | if (portable.exists() && portable.isWritable()) { 41 | QSettings::setDefaultFormat(QSettings::IniFormat); 42 | QSettings::setPath(QSettings::IniFormat, QSettings::UserScope, portable.absoluteFilePath() + "/Settings"); 43 | } 44 | 45 | // Load application language 46 | LocaleDialog::loadTranslator("gottet_", datadir); 47 | 48 | // Handle commandline 49 | QCommandLineParser parser; 50 | parser.setApplicationDescription(Window::tr("A simple falling blocks game")); 51 | parser.addHelpOption(); 52 | parser.addVersionOption(); 53 | parser.process(app); 54 | 55 | // Convert old scores to new format 56 | ScoresDialog::migrate(); 57 | 58 | // Create main window 59 | Window window; 60 | window.show(); 61 | 62 | return app.exec(); 63 | } 64 | -------------------------------------------------------------------------------- /icons/po/el.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR Graeme Gott 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # George Ioakeimidis , 2015 7 | # 79353a696ad19dc202b261b3067b7640_bec941e, 2015 8 | msgid "" 9 | msgstr "" 10 | "Project-Id-Version: Gottet\n" 11 | "Report-Msgid-Bugs-To: \n" 12 | "POT-Creation-Date: 2014-11-13 18:44+0000\n" 13 | "PO-Revision-Date: 2014-11-13 18:45+0000\n" 14 | "Last-Translator: George Ioakeimidis , 2015\n" 15 | "Language-Team: Greek (http://app.transifex.com/gottcode/gottet/language/el/)\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Language: el\n" 20 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 21 | 22 | #: ../gottet.appdata.xml.in.h:1 ../gottet.desktop.in.h:3 23 | msgid "Clear the board of falling blocks" 24 | msgstr "Εκκαθάριση της περιοχής παιχνιδιού απο τετράγωνα" 25 | 26 | #: ../gottet.appdata.xml.in.h:2 27 | msgid "" 28 | "Gottet is a falling blocks game. Pieces fall from the top of the play area " 29 | "and you can move them horizontally as well as rotate them before they reach " 30 | "the bottom of the play area. The goal is to create full lines of pieces, " 31 | "which are then removed. The game is over when the stack of pieces reaches " 32 | "the top of the play area." 33 | msgstr "Το Gottet είναι ένα παιχνίδι με κυβάκια που πέφτουν. Τα κομμάτια πέφτουν από την κορυφή της περιοχής του παιχνιδιού και μπορείτε να τα μετακινήσετε οριζόντια καθώς και να τα περιστρέψτε πριν φτάσουν στο κάτω μέρος της περιοχής παιχνιδιού. Ο στόχος είναι να δημιουργήσετε πλήρεις γραμμές των τεμαχίων, τα οποία στη συνέχεια απομακρύνεται. Το παιχνίδι τελειώνει όταν η στοίβα των κομματιών φτάνει στην κορυφή της περιοχής παιχνιδιου." 34 | 35 | #: ../gottet.desktop.in.h:1 36 | msgid "Gottet" 37 | msgstr "Gottet" 38 | 39 | #: ../gottet.desktop.in.h:2 40 | msgid "Falling Blocks Game" 41 | msgstr "Παιχνίδι Τουβλάκια" 42 | -------------------------------------------------------------------------------- /src/locale_dialog.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2010-2013 Graeme Gott 3 | 4 | SPDX-License-Identifier: GPL-3.0-or-later 5 | */ 6 | 7 | #ifndef GOTTET_LOCALE_DIALOG_H 8 | #define GOTTET_LOCALE_DIALOG_H 9 | 10 | #include 11 | class QComboBox; 12 | 13 | /** 14 | * @brief Dialog to set application language. 15 | * 16 | * This class handles setting the application language when the application is 17 | * launched, as well as allowing the user to choose a different language for 18 | * future launches. 19 | */ 20 | class LocaleDialog : public QDialog 21 | { 22 | Q_OBJECT 23 | 24 | public: 25 | /** 26 | * Construct a dialog to choose application language. 27 | * @param parent the parent widget of the dialog 28 | */ 29 | explicit LocaleDialog(QWidget* parent = nullptr); 30 | 31 | /** 32 | * Load the stored language into the application; defaults to system language. 33 | * @param appname application name to prepend to translation filenames 34 | * @param datadir location to search for translations 35 | */ 36 | static void loadTranslator(const QString& appname, const QString& datadir); 37 | 38 | /** 39 | * Fetch native language name for QLocale name. 40 | * @param language QLocale name to look up 41 | * @return translated language name 42 | */ 43 | static QString languageName(const QString& language); 44 | 45 | public Q_SLOTS: 46 | /** Override parent function to store application language. */ 47 | void accept() override; 48 | 49 | private: 50 | /** 51 | * Fetch list of application translations. 52 | * @return list of QLocale names 53 | */ 54 | static QStringList findTranslations(); 55 | 56 | private: 57 | QComboBox* m_translations; /**< list of found translations */ 58 | 59 | static QString m_current; /**< stored application language */ 60 | static QString m_path; /**< location of translations; found in loadTranslator() */ 61 | static QString m_appname; /**< application name passed to loadTranslator() */ 62 | }; 63 | 64 | #endif // GOTTET_LOCALE_DIALOG_H 65 | -------------------------------------------------------------------------------- /windows_deploy.bat: -------------------------------------------------------------------------------- 1 | @ECHO ON>..\gottet\windows\dirs.nsh 2 | @ECHO ON>..\gottet\windows\files.nsh 3 | @ECHO OFF 4 | 5 | SET SRCDIR=..\gottet 6 | SET APP=Gottet 7 | SET VERSION=1.2.6 8 | 9 | ECHO Copying executable 10 | MKDIR %SRCDIR%\%APP% 11 | COPY %APP%.exe %SRCDIR%\%APP%\%APP%.exe >nul 12 | 13 | ECHO Copying translations 14 | SET TRANSLATIONS=%SRCDIR%\%APP%\translations 15 | MKDIR %TRANSLATIONS% 16 | COPY *.qm %TRANSLATIONS% >nul 17 | 18 | CD %SRCDIR% 19 | 20 | ECHO Copying Qt 21 | windeployqt.exe --verbose 0 --release --compiler-runtime^ 22 | --no-opengl-sw --no-system-dxc-compiler --no-system-d3d-compiler^ 23 | --no-svg^ 24 | --skip-plugin-types imageformats^ 25 | %APP%\%APP%.exe 26 | 27 | ECHO Creating ReadMe 28 | TYPE README >> %APP%\ReadMe.txt 29 | ECHO. >> %APP%\ReadMe.txt 30 | ECHO. >> %APP%\ReadMe.txt 31 | ECHO CREDITS >> %APP%\ReadMe.txt 32 | ECHO ======= >> %APP%\ReadMe.txt 33 | ECHO. >> %APP%\ReadMe.txt 34 | TYPE CREDITS >> %APP%\ReadMe.txt 35 | ECHO. >> %APP%\ReadMe.txt 36 | ECHO. >> %APP%\ReadMe.txt 37 | ECHO NEWS >> %APP%\ReadMe.txt 38 | ECHO ==== >> %APP%\ReadMe.txt 39 | ECHO. >> %APP%\ReadMe.txt 40 | TYPE ChangeLog >> %APP%\ReadMe.txt 41 | 42 | ECHO Creating installer 43 | CD %APP% 44 | SETLOCAL EnableDelayedExpansion 45 | SET "parentfolder=%__CD__%" 46 | FOR /R . %%F IN (*) DO ( 47 | SET "var=%%F" 48 | ECHO Delete "$INSTDIR\!var:%parentfolder%=!" >> ..\windows\files.nsh 49 | ) 50 | FOR /R /D %%F IN (*) DO ( 51 | TYPE ..\windows\dirs.nsh > temp.txt 52 | SET "var=%%F" 53 | ECHO RMDir "$INSTDIR\!var:%parentfolder%=!" > ..\windows\dirs.nsh 54 | TYPE temp.txt >> ..\windows\dirs.nsh 55 | ) 56 | DEL temp.txt 57 | ENDLOCAL 58 | CD .. 59 | makensis.exe /V0 windows\installer.nsi 60 | 61 | ECHO Making portable 62 | MKDIR %APP%\Data 63 | COPY COPYING %APP%\COPYING.txt >nul 64 | 65 | ECHO Creating compressed file 66 | CD %APP% 67 | 7z a -mx=9 %APP%_%VERSION%.zip * >nul 68 | CD .. 69 | MOVE %APP%\%APP%_%VERSION%.zip . >nul 70 | 71 | ECHO Cleaning up 72 | RMDIR /S /Q %APP% 73 | DEL windows\dirs.nsh 74 | DEL windows\files.nsh 75 | -------------------------------------------------------------------------------- /src/board.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2007-2010 Graeme Gott 3 | 4 | SPDX-License-Identifier: GPL-3.0-or-later 5 | */ 6 | 7 | #ifndef GOTTET_BOARD_H 8 | #define GOTTET_BOARD_H 9 | 10 | class Piece; 11 | 12 | #include 13 | #include 14 | class QPixmap; 15 | class QTimer; 16 | 17 | class Board : public QWidget 18 | { 19 | Q_OBJECT 20 | 21 | public: 22 | explicit Board(QWidget* parent = nullptr); 23 | 24 | bool cell(int x, int y) const 25 | { 26 | Q_ASSERT(x >= 0 && x < 10); 27 | Q_ASSERT(y >= 0 && y < 20); 28 | return m_cells[x][y] != 0; 29 | } 30 | 31 | bool endGame(); 32 | void findFullLines(); 33 | 34 | public Q_SLOTS: 35 | void newGame(); 36 | void pauseGame(); 37 | void resumeGame(); 38 | 39 | Q_SIGNALS: 40 | void pauseAvailable(bool available); 41 | void nextPieceAvailable(QPixmap piece); 42 | void levelUpdated(int level); 43 | void linesRemovedUpdated(int lines); 44 | void scoreUpdated(int score); 45 | void gameOver(int level, int lines, int score); 46 | void gameStarted(); 47 | void hideMessage(); 48 | void showMessage(const QString& message); 49 | 50 | protected: 51 | void keyPressEvent(QKeyEvent* event) override; 52 | void mousePressEvent(QMouseEvent* event) override; 53 | void paintEvent(QPaintEvent*) override; 54 | void focusOutEvent(QFocusEvent* event) override; 55 | void resizeEvent(QResizeEvent* event) override; 56 | 57 | private Q_SLOTS: 58 | void shiftPiece(); 59 | void flashLines(); 60 | void removeLines(); 61 | 62 | private: 63 | void gameOver(); 64 | void addCell(int x, int y, int type); 65 | void removeCell(int x, int y); 66 | void createPiece(); 67 | void landPiece(); 68 | 69 | int nextPiece() 70 | { 71 | return m_random_generator.bounded(1, 8); 72 | } 73 | 74 | QPixmap renderPiece(int type) const; 75 | 76 | private: 77 | QPixmap m_images[7]; 78 | int m_cells[10][20]; 79 | int m_full_lines[4]; 80 | int m_removed_lines; 81 | int m_level; 82 | int m_score; 83 | Piece* m_piece; 84 | int m_next_piece; 85 | QTimer* m_shift_timer; 86 | QTimer* m_flash_timer; 87 | int m_flash_frame; 88 | int m_piece_size; 89 | QRect m_background; 90 | bool m_started; 91 | bool m_done; 92 | bool m_paused; 93 | 94 | QRandomGenerator m_random_generator; 95 | }; 96 | 97 | #endif // GOTTET_BOARD_H 98 | -------------------------------------------------------------------------------- /windows/removeprevious.nsh: -------------------------------------------------------------------------------- 1 | Delete "$INSTDIR\COPYING.txt" 2 | Delete "$INSTDIR\CREDITS.txt" 3 | Delete "$INSTDIR\icudt51.dll" 4 | Delete "$INSTDIR\icuin51.dll" 5 | Delete "$INSTDIR\icuuc51.dll" 6 | Delete "$INSTDIR\libgcc_s_dw2-1.dll" 7 | Delete "$INSTDIR\mingwm10.dll" 8 | Delete "$INSTDIR\Qt5Core.dll" 9 | Delete "$INSTDIR\Qt5Gui.dll" 10 | Delete "$INSTDIR\Qt5Widgets.dll" 11 | Delete "$INSTDIR\QtCore4.dll" 12 | Delete "$INSTDIR\QtGui4.dll" 13 | Delete "$INSTDIR\styles\qwindowsvistastyle.dll" 14 | Delete "$INSTDIR\translations\qtbase_bg.qm" 15 | Delete "$INSTDIR\translations\qtbase_ca.qm" 16 | Delete "$INSTDIR\translations\qtbase_cs.qm" 17 | Delete "$INSTDIR\translations\qtbase_da.qm" 18 | Delete "$INSTDIR\translations\qtbase_de.qm" 19 | Delete "$INSTDIR\translations\qtbase_en.qm" 20 | Delete "$INSTDIR\translations\qtbase_es.qm" 21 | Delete "$INSTDIR\translations\qtbase_fi.qm" 22 | Delete "$INSTDIR\translations\qtbase_fr.qm" 23 | Delete "$INSTDIR\translations\qtbase_gd.qm" 24 | Delete "$INSTDIR\translations\qtbase_he.qm" 25 | Delete "$INSTDIR\translations\qtbase_hu.qm" 26 | Delete "$INSTDIR\translations\qtbase_it.qm" 27 | Delete "$INSTDIR\translations\qtbase_ja.qm" 28 | Delete "$INSTDIR\translations\qtbase_ko.qm" 29 | Delete "$INSTDIR\translations\qtbase_lv.qm" 30 | Delete "$INSTDIR\translations\qtbase_pl.qm" 31 | Delete "$INSTDIR\translations\qtbase_ru.qm" 32 | Delete "$INSTDIR\translations\qtbase_sk.qm" 33 | Delete "$INSTDIR\translations\qtbase_uk.qm" 34 | Delete "$INSTDIR\translations\qt_gl.qm" 35 | Delete "$INSTDIR\translations\qt_help_cs.qm" 36 | Delete "$INSTDIR\translations\qt_help_da.qm" 37 | Delete "$INSTDIR\translations\qt_help_de.qm" 38 | Delete "$INSTDIR\translations\qt_help_fr.qm" 39 | Delete "$INSTDIR\translations\qt_help_gl.qm" 40 | Delete "$INSTDIR\translations\qt_help_hu.qm" 41 | Delete "$INSTDIR\translations\qt_help_it.qm" 42 | Delete "$INSTDIR\translations\qt_help_ja.qm" 43 | Delete "$INSTDIR\translations\qt_help_ko.qm" 44 | Delete "$INSTDIR\translations\qt_help_pl.qm" 45 | Delete "$INSTDIR\translations\qt_help_ru.qm" 46 | Delete "$INSTDIR\translations\qt_help_sk.qm" 47 | Delete "$INSTDIR\translations\qt_help_sl.qm" 48 | Delete "$INSTDIR\translations\qt_help_uk.qm" 49 | Delete "$INSTDIR\translations\qt_help_zh_CN.qm" 50 | Delete "$INSTDIR\translations\qt_help_zh_TW.qm" 51 | Delete "$INSTDIR\translations\qt_lt.qm" 52 | Delete "$INSTDIR\translations\qt_pt.qm" 53 | Delete "$INSTDIR\translations\qt_sl.qm" 54 | Delete "$INSTDIR\translations\qt_sv.qm" 55 | -------------------------------------------------------------------------------- /cmake/TranslateMetainfo.cmake: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2025 Graeme Gott 2 | # 3 | # SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | function(process_and_install_metainfo) 6 | cmake_parse_arguments(PARSE_ARGV 0 arg "" "PO_DIR" "MIMETYPES") 7 | 8 | find_package(Gettext 0.19.8 REQUIRED) 9 | 10 | # Generate LINGUAS file 11 | file(GLOB po_files ${arg_PO_DIR}/*.po) 12 | foreach(po_file ${po_files}) 13 | get_filename_component(lang ${po_file} NAME_WE) 14 | list(APPEND linguas ${lang}) 15 | endforeach() 16 | add_custom_command( 17 | OUTPUT ${arg_PO_DIR}/LINGUAS 18 | COMMAND ${CMAKE_COMMAND} -E echo "${linguas}" > ${arg_PO_DIR}/LINGUAS 19 | COMMAND_EXPAND_LISTS 20 | COMMENT "Generating LINGUAS" 21 | ) 22 | 23 | # Generate desktop file 24 | set(desktop_file "${PROJECT_NAME}.desktop") 25 | add_custom_command( 26 | OUTPUT ${desktop_file} 27 | COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} 28 | --desktop 29 | --template=${arg_PO_DIR}/../${desktop_file}.in 30 | -d ${arg_PO_DIR} 31 | -o ${desktop_file} 32 | DEPENDS ${arg_PO_DIR}/../${desktop_file}.in ${po_files} ${arg_PO_DIR}/LINGUAS 33 | ) 34 | install( 35 | FILES ${CMAKE_CURRENT_BINARY_DIR}/${desktop_file} 36 | DESTINATION ${CMAKE_INSTALL_DATADIR}/applications 37 | ) 38 | list(APPEND metainfo_files ${desktop_file}) 39 | 40 | # Generate AppData file 41 | set(appdata_file "${PROJECT_NAME}.appdata.xml") 42 | add_custom_command( 43 | OUTPUT ${appdata_file} 44 | COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} 45 | --xml 46 | --template=${arg_PO_DIR}/../${appdata_file}.in 47 | -d ${arg_PO_DIR} 48 | -o ${appdata_file} 49 | DEPENDS ${arg_PO_DIR}/../${appdata_file}.in ${po_files} ${arg_PO_DIR}/LINGUAS 50 | ) 51 | install( 52 | FILES ${CMAKE_CURRENT_BINARY_DIR}/${appdata_file} 53 | DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo 54 | ) 55 | list(APPEND metainfo_files ${appdata_file}) 56 | 57 | # Generate mimetype files 58 | foreach(mimetype_file ${arg_MIMETYPES}) 59 | add_custom_command( 60 | OUTPUT ${mimetype_file} 61 | COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} 62 | --xml 63 | --template=${arg_PO_DIR}/../${mimetype_file}.in 64 | -d ${arg_PO_DIR} 65 | -o ${mimetype_file} 66 | DEPENDS ${arg_PO_DIR}/../${mimetype_file}.in ${po_files} ${arg_PO_DIR}/LINGUAS 67 | ) 68 | install( 69 | FILES ${CMAKE_CURRENT_BINARY_DIR}/${mimetype_file} 70 | DESTINATION ${CMAKE_INSTALL_DATADIR}/mime/packages 71 | ) 72 | list(APPEND metainfo_files ${mimetype_file}) 73 | endforeach() 74 | 75 | # Generate description template 76 | find_program(XGETTEXT_EXECUTABLE xgettext) 77 | if(XGETTEXT_EXECUTABLE) 78 | add_custom_target(update_description_template 79 | COMMAND ${XGETTEXT_EXECUTABLE} 80 | --output=description.pot 81 | --from-code=UTF-8 82 | --package-name='${PROJECT_NAME}' 83 | --copyright-holder='Graeme Gott' 84 | ../*.in 85 | WORKING_DIRECTORY ${arg_PO_DIR} 86 | COMMENT "Generating description.pot" 87 | ) 88 | endif() 89 | 90 | # Translate metainfo files 91 | add_custom_target(metainfo ALL DEPENDS ${metainfo_files}) 92 | endfunction() 93 | -------------------------------------------------------------------------------- /ChangeLog: -------------------------------------------------------------------------------- 1 | 1.2.6 2 | ----- 3 | * Improved code for building translations. 4 | * FIXED: High score name had NULL at end in Windows. 5 | 6 | 1.2.5 7 | ----- 8 | * Improved deployment. 9 | * Translation updates: Estonian. 10 | 11 | 1.2.4 12 | ----- 13 | * FIXED: Top row was duplicated when removing multiple rows. 14 | 15 | 1.2.3 16 | ----- 17 | * Replaced deprecated code. 18 | * Translation updates: Dutch. 19 | 20 | 1.2.2 21 | ----- 22 | * Added portable mode. 23 | * Improved Linux deployment. 24 | * Replaced deprecated code. 25 | * Translation updates: Dutch, German. 26 | 27 | 1.2.1 28 | ----- 29 | * Switched to Qt 6. 30 | 31 | 1.2.0 32 | ----- 33 | * Added support for Qt 6. 34 | * Improved high scores dialog. 35 | * Refactored code. 36 | * Removed XPM icon. 37 | * Translation updates: Chinese (Taiwan), Lithuanian, Romanian. 38 | 39 | 1.1.9 40 | ----- 41 | * FIXED: Did not load locales with underscores. 42 | * Improved Windows deployment. 43 | 44 | 1.1.8 45 | ----- 46 | * FIXED: Window icon didn't work in Wayland. 47 | * Improved loading locales. 48 | * Improved Windows deployment. 49 | * Replaced deprecated code. 50 | * Translation updates: French. 51 | 52 | 1.1.7 53 | ----- 54 | * FIXED: Automatic high DPI support. 55 | 56 | 1.1.6 57 | ----- 58 | * Extra warnings only shown in debug build. 59 | * Improved Linux deployment. 60 | * Improved macOS deployment. 61 | * Improved Windows deployment. 62 | * Translation updates: Chinese, Portuguese. 63 | 64 | 1.1.5 65 | ----- 66 | * FIXED: Could not compile with Qt 5.10. 67 | 68 | 1.1.4 69 | ----- 70 | * FIXED: Did not always install translations in Linux. 71 | 72 | 1.1.3 73 | ----- 74 | * FIXED: Did not install translations in Linux. 75 | 76 | 1.1.2 77 | ----- 78 | * Generate binary translations at build time. 79 | * FIXED: Was not properly loading Qt translations. 80 | * Translation updates: Dutch, German, Greek, Hebrew, Lithuanian, Polish. 81 | 82 | 1.1.1 83 | ----- 84 | * FIXED: Application layout did not respect RTL languages. 85 | * FIXED: All new games used the same seed in Windows. 86 | * Translation updates: Lithuanian. 87 | 88 | 1.1.0 89 | ----- 90 | * Added support for high DPI displays. 91 | * Switched to C++11 random classes. 92 | * Removed support for Qt 4. 93 | * Translation updates: Chinese (Taiwan), Czech, Dutch, Hebrew, Korean, 94 | Lithuanian, Malay, Romanian. 95 | 96 | 1.0.6 97 | ----- 98 | * Added README file. 99 | * Translation updates: Catalan, German, Hebrew, Korean, Malay, Polish, 100 | Romanian, Russian, Spanish, Turkish, Vietnamese. 101 | 102 | 1.0.5 103 | ----- 104 | * New program icon. 105 | * Added support for Qt 5. 106 | * Translation updates: French, Romanian. 107 | 108 | 1.0.4 109 | ----- 110 | * Added click to start or resume games. 111 | * Added prompt before ending a game. 112 | * Optmized rendering. 113 | 114 | 1.0.3 115 | ----- 116 | * Fixed install bug. 117 | 118 | 1.0.2 119 | ----- 120 | * Ported by Alessandro Briosi to Qtopia4. 121 | * Stored size of scoreboard. 122 | * Minor bug fixes. 123 | 124 | 1.0.1 125 | ----- 126 | * Minor bug fixes. 127 | -------------------------------------------------------------------------------- /INSTALL: -------------------------------------------------------------------------------- 1 | Installation 2 | ============ 3 | 4 | Open a terminal and browse into the extracted folder. 5 | 6 | Linux: 7 | 1. `cmake -B build -S . -DCMAKE_INSTALL_PREFIX=/usr' to create a location 8 | for the build and then configure the program. There are more options 9 | you can pass to CMake, see below for details. 10 | 11 | 2. `cmake --build build' to compile the program. 12 | 13 | 3. `cmake --install build' to install the program. This has to be done 14 | with root privileges if installing to system directories, but the 15 | rest of the build should be done with regular user privileges. 16 | 17 | For packaging you can optionally install the program into a temporary 18 | directory by setting the DESTDIR environment variable. For example, 19 | `DESTDIR="alternate/directory" cmake --install build' will prepend 20 | 'alternate/directory' before all installation names. 21 | 22 | macOS: 23 | 1. `cmake -B build -S .' to create a location for the build and then 24 | configure the program. There are more options you can pass to CMake, 25 | see below for details. 26 | 27 | 2. `cmake --build build' to compile the program. 28 | 29 | 3. Run `mac_deploy.sh' from inside the build directory to create a disk 30 | image of the program. 31 | 32 | Windows: 33 | 1. `cmake -B ..\build -S .' to create a location for the build and then 34 | configure the program. There are more options you can pass to CMake, 35 | see below for details. 36 | 37 | 2. `cmake --build ..\build' to compile the program. 38 | 39 | 3. Run `windows_deploy.bat' from inside the build directory to create an 40 | installer of the program. Note that you must have the NSIS executable 41 | from nsis.sourceforge.io and the 7z executable from 7-zip.org in your 42 | %PATH% for this to work. 43 | 44 | 45 | Release Builds 46 | ============== 47 | 48 | CMake does not specify any compiler optimizations by default; this is 49 | useful if you want to inherit CFLAGS and CXXFLAGS from the environment. 50 | You may want to add "-DCMAKE_BUILD_TYPE=Release" during configuration 51 | to get an optimized build. 52 | 53 | 54 | Debug Builds 55 | ============ 56 | 57 | You should create different directories for each type of build: 58 | 59 | 1. `cmake -B debug -S . -DCMAKE_BUILD_TYPE=Debug' to configure the sources. 60 | 61 | 2. `cmake --build debug' to compile the program. 62 | 63 | 64 | More CMake Options 65 | ================== 66 | 67 | -DCMAKE_BUILD_TYPE= 68 | Choose the type of build. Possible values are: 69 | 'None' 'Debug' 'Release' 'RelWithDebInfo' 'MinSizeRel' 70 | 71 | -DENABLE_LINK_TIME_OPTIMIZATION=[OFF] 72 | Reduce size by optimizing entire program at link time. 73 | 74 | -DENABLE_STRIP=[OFF] 75 | Reduce size by removing symbols. 76 | 77 | 78 | Linux CMake Options 79 | =================== 80 | 81 | -DCMAKE_INSTALL_PREFIX= 82 | Choose the base location where the program is installed 83 | (defaults to /usr/local). 84 | 85 | -DCMAKE_INSTALL_BINDIR= 86 | Choose where binaries are installed 87 | (defaults to $CMAKE_INSTALL_PREFIX/bin). 88 | 89 | -DCMAKE_INSTALL_DATADIR= 90 | Choose where the data files are installed 91 | (defaults to $CMAKE_INSTALL_PREFIX/share). 92 | 93 | -DCMAKE_INSTALL_MANDIR= 94 | Choose where manual pages are installed 95 | (defaults to $CMAKE_INSTALL_DATADIR/man). 96 | -------------------------------------------------------------------------------- /src/piece.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2007-2010 Graeme Gott 3 | 4 | SPDX-License-Identifier: GPL-3.0-or-later 5 | */ 6 | 7 | #include "piece.h" 8 | 9 | #include "board.h" 10 | 11 | //----------------------------------------------------------------------------- 12 | 13 | static const Cell types[][4] = { 14 | { Cell(0,0), Cell(0,1), Cell(0,2), Cell(0,3) }, 15 | { Cell(0,0), Cell(0,1), Cell(1,1), Cell(1,2) }, 16 | { Cell(1,0), Cell(0,1), Cell(1,1), Cell(0,2) }, 17 | { Cell(0,0), Cell(0,1), Cell(1,1), Cell(0,2) }, 18 | { Cell(0,0), Cell(1,0), Cell(1,1), Cell(1,2) }, 19 | { Cell(0,0), Cell(1,0), Cell(0,1), Cell(0,2) }, 20 | { Cell(0,0), Cell(1,0), Cell(0,1), Cell(1,1) } 21 | }; 22 | 23 | //----------------------------------------------------------------------------- 24 | 25 | Piece::Piece(int type, Board* board) 26 | : m_type(type) 27 | , m_pivot(4,1) 28 | , m_valid(false) 29 | , m_board(board) 30 | { 31 | Q_ASSERT(type > 0 && type < 8); 32 | 33 | Cell position[4]; 34 | cells(position, type); 35 | for (int i = 0; i < 4; ++i) { 36 | position[i].x += 4; 37 | } 38 | 39 | if (updatePosition(position)) { 40 | m_valid = true; 41 | } 42 | } 43 | 44 | //----------------------------------------------------------------------------- 45 | 46 | bool Piece::rotate() 47 | { 48 | if (m_type == 7) { 49 | return true; 50 | } 51 | 52 | Cell rotated[4]; 53 | for (int i = 0; i < 4; ++i) { 54 | rotated[i].x = m_pivot.x - m_pivot.y + m_cells[i].y; 55 | rotated[i].y = m_pivot.x + m_pivot.y - m_cells[i].x; 56 | if (rotated[i].x > 9 || rotated[i].x < 0 || rotated[i].y > 19 || rotated[i].y < 0) { 57 | return false; 58 | } 59 | } 60 | 61 | return updatePosition(rotated); 62 | } 63 | 64 | //----------------------------------------------------------------------------- 65 | 66 | void Piece::drop() 67 | { 68 | for (int i = 0; i < 20; ++i) { 69 | moveDown(); 70 | } 71 | } 72 | 73 | //----------------------------------------------------------------------------- 74 | 75 | void Piece::cells(Cell* cells, int type) 76 | { 77 | Q_ASSERT(cells); 78 | Q_ASSERT(type > 0 && type < 8); 79 | 80 | const Cell* values = types[type - 1]; 81 | for (int i = 0; i < 4; ++i) { 82 | cells[i] = values[i]; 83 | } 84 | } 85 | 86 | //----------------------------------------------------------------------------- 87 | 88 | bool Piece::move(int x, int y) 89 | { 90 | // Move cells 91 | Cell moved[4]; 92 | for (int i = 0; i < 4; ++i) { 93 | moved[i].x = m_cells[i].x + x; 94 | moved[i].y = m_cells[i].y + y; 95 | if (moved[i].x > 9 || moved[i].x < 0 || moved[i].y > 19 || moved[i].y < 0) { 96 | return false; 97 | } 98 | } 99 | 100 | bool success = updatePosition(moved); 101 | if (success) { 102 | m_pivot.x += x; 103 | m_pivot.y += y; 104 | } 105 | return success; 106 | } 107 | 108 | //----------------------------------------------------------------------------- 109 | 110 | bool Piece::updatePosition(const Cell* cells) 111 | { 112 | // Check for collision of cells 113 | const Cell* cell = nullptr; 114 | for (int i = 0; i < 4; ++i) { 115 | cell = &cells[i]; 116 | if (m_board->cell(cell->x, cell->y)) { 117 | return false; 118 | } 119 | } 120 | 121 | // Move cells 122 | for (int i = 0; i < 4; ++i) { 123 | m_cells[i] = cells[i]; 124 | } 125 | 126 | return true; 127 | } 128 | 129 | //----------------------------------------------------------------------------- 130 | -------------------------------------------------------------------------------- /mac_deploy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | APP='Gottet' 4 | BUNDLE="$APP.app" 5 | VERSION='1.2.6' 6 | 7 | # Locate deployment script 8 | BIN_DIR=$(pwd) 9 | cd $(dirname "${BASH_SOURCE[0]}") 10 | 11 | # Remove any previous disk folder or DMG 12 | echo -n 'Preparing... ' 13 | rm -f "${APP}_$VERSION.dmg" 14 | if [ -e "/Volumes/$APP" ]; then 15 | hdiutil detach -quiet "/Volumes/$APP" 16 | fi 17 | rm -Rf "$APP" 18 | echo 'Done' 19 | 20 | # Create disk folder 21 | echo -n 'Copying application bundle... ' 22 | mkdir "$APP" 23 | cp -Rf "${BIN_DIR}/${BUNDLE}" "$APP/" 24 | strip "$APP/$BUNDLE/Contents/MacOS/$APP" 25 | cp COPYING "$APP/License.txt" 26 | echo 'Done' 27 | 28 | # Create ReadMe 29 | echo -n 'Creating ReadMe... ' 30 | cp README "$APP/Read Me.txt" 31 | echo >> "$APP/Read Me.txt" 32 | echo >> "$APP/Read Me.txt" 33 | echo 'CREDITS' >> "$APP/Read Me.txt" 34 | echo '=======' >> "$APP/Read Me.txt" 35 | echo >> "$APP/Read Me.txt" 36 | cat CREDITS >> "$APP/Read Me.txt" 37 | echo >> "$APP/Read Me.txt" 38 | echo >> "$APP/Read Me.txt" 39 | echo 'NEWS' >> "$APP/Read Me.txt" 40 | echo '====' >> "$APP/Read Me.txt" 41 | echo >> "$APP/Read Me.txt" 42 | cat ChangeLog >> "$APP/Read Me.txt" 43 | echo 'Done' 44 | 45 | # Copy Qt translations 46 | echo -n 'Copying Qt translations... ' 47 | TRANSLATIONS="$APP/$BUNDLE/Contents/Resources/translations" 48 | cp $QTDIR/translations/qt_* "$TRANSLATIONS" 49 | cp $QTDIR/translations/qtbase_* "$TRANSLATIONS" 50 | rm -f $TRANSLATIONS/qt_help_* 51 | echo 'Done' 52 | 53 | # Copy frameworks and plugins 54 | echo -n 'Copying frameworks and plugins... ' 55 | macdeployqt "$APP/$BUNDLE" 56 | rm -Rf "$APP/$BUNDLE/Contents/Frameworks/QtSvg.framework" 57 | rm -Rf "$APP/$BUNDLE/Contents/PlugIns/iconengines" 58 | rm -Rf "$APP/$BUNDLE/Contents/PlugIns/imageformats" 59 | echo 'Done' 60 | 61 | # Copy background 62 | echo -n 'Copying background... ' 63 | mkdir "$APP/.background" 64 | cp mac/background.tiff "$APP/.background/background.tiff" 65 | echo 'Done' 66 | 67 | # Create disk image 68 | echo -n 'Creating disk image... ' 69 | hdiutil create -quiet -srcfolder "$APP" -volname "$APP" -fs HFS+ -format UDRW 'temp.dmg' 70 | echo 'Done' 71 | 72 | echo -n 'Configuring disk image... ' 73 | hdiutil attach -quiet -readwrite -noverify -noautoopen 'temp.dmg' 74 | echo ' 75 | tell application "Finder" 76 | tell disk "'$APP'" 77 | open 78 | 79 | tell container window 80 | set the bounds to {400, 100, 949, 458} 81 | set current view to icon view 82 | set toolbar visible to false 83 | set statusbar visible to true 84 | set the bounds to {400, 100, 800, 460} 85 | end tell 86 | 87 | set viewOptions to the icon view options of container window 88 | tell viewOptions 89 | set arrangement to not arranged 90 | set icon size to 80 91 | set label position to bottom 92 | set shows icon preview to true 93 | set shows item info to false 94 | end tell 95 | set background picture of viewOptions to file ".background:background.tiff" 96 | 97 | make new alias file at container window to POSIX file "/Applications" with properties {name:"Applications"} 98 | set position of item "'$BUNDLE'" of container window to {90, 90} 99 | set position of item "Applications" of container window to {310, 90} 100 | set position of item "Read Me.txt" of container window to {140, 215} 101 | set position of item "License.txt" of container window to {260, 215} 102 | close 103 | open 104 | 105 | update without registering applications 106 | delay 5 107 | end tell 108 | end tell 109 | ' | osascript 110 | chmod -Rf go-w "/Volumes/$APP" >& /dev/null 111 | sync 112 | hdiutil detach -quiet "/Volumes/$APP" 113 | echo 'Done' 114 | 115 | echo -n 'Compressing disk image... ' 116 | hdiutil convert -quiet 'temp.dmg' -format UDBZ -o "${APP}_${VERSION}.dmg" 117 | rm -f temp.dmg 118 | echo 'Done' 119 | 120 | # Clean up disk folder 121 | echo -n 'Cleaning up... ' 122 | rm -Rf "$APP" 123 | echo 'Done' 124 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2021-2025 Graeme Gott 2 | # 3 | # SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | cmake_minimum_required(VERSION 3.16) 6 | 7 | # Configure project 8 | project(gottet VERSION 1.2.6 LANGUAGES CXX) 9 | 10 | set(project_copyright "2008-2025 Graeme Gott") 11 | 12 | set(CMAKE_CXX_STANDARD 17) 13 | set(CMAKE_CXX_STANDARD_REQUIRED ON) 14 | 15 | set(CMAKE_AUTOMOC ON) 16 | set(CMAKE_AUTORCC ON) 17 | 18 | find_package(Qt6 REQUIRED COMPONENTS Core Gui LinguistTools Widgets) 19 | include(GNUInstallDirs) 20 | 21 | add_compile_definitions( 22 | QT_NO_KEYWORDS 23 | $<$:QT_STRICT_ITERATORS> 24 | $<$:QT_NO_NARROWING_CONVERSIONS_IN_CONNECT> 25 | $<$:QT_DISABLE_DEPRECATED_BEFORE=0x061000> 26 | ) 27 | 28 | # Version number 29 | include(cmake/AddVersionCompileDefinition.cmake) 30 | add_version_compile_definition(src/main.cpp VERSIONSTR) 31 | 32 | # Create program 33 | qt_add_executable(gottet 34 | # Headers 35 | src/board.h 36 | src/locale_dialog.h 37 | src/piece.h 38 | src/scores_dialog.h 39 | src/window.h 40 | # Sources 41 | src/board.cpp 42 | src/locale_dialog.cpp 43 | src/main.cpp 44 | src/piece.cpp 45 | src/scores_dialog.cpp 46 | src/window.cpp 47 | # Resources 48 | ${translations_QM} 49 | ) 50 | 51 | target_link_libraries(gottet PRIVATE 52 | Qt6::Core 53 | Qt6::Gui 54 | Qt6::Widgets 55 | ) 56 | 57 | # Create translations 58 | file(GLOB translations_SRCS translations/*.ts) 59 | qt_add_translations(gottet 60 | TS_FILES ${translations_SRCS} 61 | QM_FILES_OUTPUT_VARIABLE translations_QM 62 | LUPDATE_OPTIONS -no-obsolete -locations none 63 | ) 64 | 65 | # Optimize build 66 | option(ENABLE_LINK_TIME_OPTIMIZATION "Enable link time optimization" OFF) 67 | if(ENABLE_LINK_TIME_OPTIMIZATION) 68 | include(CheckIPOSupported) 69 | check_ipo_supported(RESULT result) 70 | if(result) 71 | set_target_properties(gottet PROPERTIES INTERPROCEDURAL_OPTIMIZATION TRUE) 72 | endif() 73 | endif() 74 | 75 | option(ENABLE_STRIP "Enable automatic stripping of builds" OFF) 76 | if(ENABLE_STRIP) 77 | add_custom_command(TARGET gottet 78 | POST_BUILD 79 | COMMAND ${CMAKE_STRIP} $ 80 | ) 81 | endif() 82 | 83 | # Install 84 | if(APPLE) 85 | set(datadir "../Resources") 86 | 87 | set_target_properties(gottet PROPERTIES 88 | OUTPUT_NAME Gottet 89 | MACOSX_BUNDLE TRUE 90 | MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/mac/Info.plist.in 91 | ) 92 | 93 | include(cmake/BundleResources.cmake) 94 | bundle_data(gottet ${CMAKE_SOURCE_DIR}/icons/gottet.icns Resources) 95 | bundle_translations(gottet "${translations_QM}") 96 | elseif(WIN32) 97 | set(datadir ".") 98 | 99 | # Use Qt6 macro until CMake provides something 100 | # https://bugreports.qt.io/browse/QTBUG-87618 101 | set_target_properties(gottet PROPERTIES 102 | OUTPUT_NAME Gottet 103 | WIN32_EXECUTABLE TRUE 104 | QT_TARGET_VERSION "${PROJECT_VERSION}" 105 | QT_TARGET_COMPANY_NAME "Graeme Gott" 106 | QT_TARGET_DESCRIPTION "Falling blocks game" 107 | QT_TARGET_COPYRIGHT "\\xA9 ${project_copyright}" 108 | QT_TARGET_PRODUCT_NAME "Gottet" 109 | QT_TARGET_RC_ICONS ${CMAKE_SOURCE_DIR}/icons/gottet.ico 110 | ) 111 | _qt_internal_generate_win32_rc_file(gottet) 112 | else() 113 | file(RELATIVE_PATH datadir ${CMAKE_INSTALL_FULL_BINDIR} ${CMAKE_INSTALL_FULL_DATADIR}/gottet) 114 | 115 | target_sources(gottet PRIVATE icons/icon.qrc) 116 | 117 | install(TARGETS gottet RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 118 | install(FILES ${translations_QM} DESTINATION ${CMAKE_INSTALL_DATADIR}/gottet/translations) 119 | install(FILES doc/gottet.6 DESTINATION ${CMAKE_INSTALL_MANDIR}/man6 COMPONENT doc) 120 | install(DIRECTORY icons/hicolor DESTINATION ${CMAKE_INSTALL_DATADIR}/icons) 121 | 122 | include(cmake/TranslateMetainfo.cmake) 123 | process_and_install_metainfo(PO_DIR ${CMAKE_SOURCE_DIR}/icons/po) 124 | endif() 125 | 126 | set_property(SOURCE src/main.cpp APPEND PROPERTY COMPILE_DEFINITIONS GOTTET_DATADIR="${datadir}") 127 | -------------------------------------------------------------------------------- /src/scores_dialog.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2008-2025 Graeme Gott 3 | 4 | SPDX-License-Identifier: GPL-3.0-or-later 5 | */ 6 | 7 | #ifndef GOTTET_SCORES_DIALOG_H 8 | #define GOTTET_SCORES_DIALOG_H 9 | 10 | #include 11 | class QDialogButtonBox; 12 | class QGridLayout; 13 | class QLabel; 14 | class QLineEdit; 15 | class QSettings; 16 | 17 | /** 18 | * @brief The ScoresDialog class displays the list of high scores. 19 | */ 20 | class ScoresDialog : public QDialog 21 | { 22 | Q_OBJECT 23 | 24 | /** The columns of scores. */ 25 | enum Columns 26 | { 27 | RankColumn, 28 | NameColumn, 29 | LevelColumn, 30 | LinesColumn, 31 | ScoreColumn, 32 | TotalColumns 33 | }; 34 | 35 | /** 36 | * @brief The ScoresDialog::Score struct descibres a high score. 37 | */ 38 | struct Score 39 | { 40 | QString name; /**< the player's name */ 41 | int level; /**< what level the player was on */ 42 | int lines; /**< how many total lines the player cleared */ 43 | int score; /**< the value of the score */ 44 | 45 | /** 46 | * Constructs a score. 47 | * @param n the player's name 48 | * @param lvl what level the player was on 49 | * @param ln how many total lines the player cleared 50 | * @param sc the value of the score 51 | */ 52 | Score(const QString& n = QString(), int lvl = 0, int ln = 0, int sc = 0) 53 | : level(lvl) 54 | , lines(ln) 55 | , score(sc) 56 | { 57 | setName(n); 58 | } 59 | 60 | /** 61 | * Sets the player name for the score. 62 | * @param text the player name 63 | */ 64 | void setName(const QString& text) 65 | { 66 | name = text.simplified(); 67 | name.remove('\0'); 68 | } 69 | }; 70 | 71 | public: 72 | /** 73 | * Constructs a scores dialog. 74 | * @param parent the QWidget that manages the dialog 75 | */ 76 | explicit ScoresDialog(QWidget* parent = nullptr); 77 | 78 | /** 79 | * Attempts to add a score. 80 | * @param level what level the player was on 81 | * @param lines how many total lines the player cleared 82 | * @param score the value of the score 83 | * @return whether the score was added 84 | */ 85 | bool addScore(int level, int lines, int score); 86 | 87 | /** 88 | * Checks if a score is a high score. 89 | * @param score the value of the score 90 | * @return whether the score is a high score, and if it is the highest 91 | */ 92 | static int isHighScore(int score); 93 | 94 | /** 95 | * Converts the stored scores to the new format. 96 | */ 97 | static void migrate(); 98 | 99 | protected: 100 | /** 101 | * Override hideEvent to add score if the player has not already pressed enter. 102 | * @param event details of the hide event 103 | */ 104 | void hideEvent(QHideEvent* event) override; 105 | 106 | /** 107 | * Override keyPressEvent to ignore return key. Keeps dialog from closing when the player 108 | * presses return after entering their name. 109 | * @param event details of the key press event 110 | */ 111 | void keyPressEvent(QKeyEvent* event) override; 112 | 113 | private Q_SLOTS: 114 | /** 115 | * Enters the score and saves list of scores once the player has finished entering their name. 116 | */ 117 | void editingFinished(); 118 | 119 | private: 120 | /** 121 | * Adds a score to the high score board. 122 | * @param name the player's name 123 | * @param level what level the player was on 124 | * @param lines how many total lines the player cleared 125 | * @param score the value of the score 126 | * @return @c true if the score was added 127 | */ 128 | bool addScore(const QString& name, int level, int lines, int score); 129 | 130 | /** 131 | * Loads the scores from the settings. 132 | * @param settings where to load the scores from 133 | */ 134 | void load(QSettings& settings); 135 | 136 | /** 137 | * Sets the text of the high scores. Adds the dashed lines for empty scores. 138 | */ 139 | void updateItems(); 140 | 141 | private: 142 | QDialogButtonBox* m_buttons; /**< buttons to control dialog */ 143 | QLineEdit* m_username; /**< widget for the player to enter their name */ 144 | 145 | QList m_scores; /**< the high score data */ 146 | QLabel* m_score_labels[10][TotalColumns]; /**< the grid[row][column] of labels to display the scores */ 147 | QGridLayout* m_scores_layout; /**< the layout for the dialog */ 148 | int m_row; /**< location of most recently added score */ 149 | 150 | QString m_default_name; /**< the default name */ 151 | 152 | static int m_max; /**< the largest high score */ 153 | static int m_min; /**< the smallest high score */ 154 | }; 155 | 156 | #endif // GOTTET_SCORES_DIALOG_H 157 | -------------------------------------------------------------------------------- /icons/gottet.appdata.xml.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | gottet.desktop 4 | CC0-1.0 5 | GPL-3.0+ 6 | 7 | Gottet 8 | Clear the board of falling blocks 9 | 10 |

Gottet is a falling blocks game. Pieces fall from the top of the play area and you can move them horizontally as well as rotate them before they reach the bottom of the play area. The goal is to create full lines of pieces, which are then removed. The game is over when the stack of pieces reaches the top of the play area.

11 |
12 | 13 | 14 | 15 | https://gottcode.org/gottet/screenshots/appdata.png 16 | 17 | 18 | 19 | https://gottcode.org/gottet/ 20 | https://gottcode.org/gottet/bugs/ 21 | https://gottcode.org/tip/ 22 | https://app.transifex.com/gottcode/gottet/ 23 | 24 | 25 | Graeme Gott 26 | 27 | graeme@gottcode.org 28 | 29 | gottet 30 | 31 | 32 | gottet 33 | 34 | gottet.desktop 35 | 36 | 37 | HiDpiIcon 38 | ModernToolkit 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
    47 |
  • Improved code for building translations
  • 48 |
  • FIXED: High score name had NULL at end in Windows
  • 49 |
50 |
51 |
52 | 53 | 54 |
    55 |
  • Improved deployment
  • 56 |
  • Translation updates: Estonian
  • 57 |
58 |
59 |
60 | 61 | 62 |
    63 |
  • FIXED: Top row was duplicated when removing multiple rows
  • 64 |
65 |
66 |
67 | 68 | 69 |
    70 |
  • Replaced deprecated code
  • 71 |
  • Translation updates: Dutch
  • 72 |
73 |
74 |
75 | 76 | 77 |
    78 |
  • Added portable mode
  • 79 |
  • Improved Linux deployment
  • 80 |
  • Replaced deprecated code
  • 81 |
  • Translation updates: Dutch, German
  • 82 |
83 |
84 |
85 | 86 | 87 |
    88 |
  • Switched to Qt 6
  • 89 |
90 |
91 |
92 | 93 | 94 |
    95 |
  • Added support for Qt 6
  • 96 |
  • Improved high scores dialog
  • 97 |
  • Refactored code
  • 98 |
  • Removed XPM icon
  • 99 |
  • Translation updates: Chinese (Taiwan), Lithuanian, Romanian
  • 100 |
101 |
102 |
103 | 104 | 105 |
    106 |
  • FIXED: Did not load locales with underscores
  • 107 |
  • Improved Windows deployment
  • 108 |
109 |
110 |
111 | 112 | 113 |
    114 |
  • FIXED: Window icon didn't work in Wayland
  • 115 |
  • Improved loading locales
  • 116 |
  • Improved Windows deployment
  • 117 |
  • Replaced deprecated code
  • 118 |
  • Translation updates: French
  • 119 |
120 |
121 |
122 | 123 | 124 |
    125 |
  • FIXED: Automatic high DPI support
  • 126 |
127 |
128 |
129 | 130 | 131 |
    132 |
  • Extra warnings only shown in debug build
  • 133 |
  • Improved Linux deployment
  • 134 |
  • Improved macOS deployment
  • 135 |
  • Improved Windows deployment
  • 136 |
  • Translation updates: Chinese, Portuguese
  • 137 |
138 |
139 |
140 |
141 |
142 | -------------------------------------------------------------------------------- /src/locale_dialog.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2010-2020 Graeme Gott 3 | 4 | SPDX-License-Identifier: GPL-3.0-or-later 5 | */ 6 | 7 | #include "locale_dialog.h" 8 | 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | 23 | #include 24 | 25 | //----------------------------------------------------------------------------- 26 | 27 | QString LocaleDialog::m_current; 28 | QString LocaleDialog::m_path; 29 | QString LocaleDialog::m_appname; 30 | 31 | //----------------------------------------------------------------------------- 32 | 33 | LocaleDialog::LocaleDialog(QWidget* parent) 34 | : QDialog(parent, Qt::WindowTitleHint | Qt::MSWindowsFixedSizeDialogHint | Qt::WindowSystemMenuHint | Qt::WindowCloseButtonHint) 35 | { 36 | QString title = parent ? parent->window()->windowTitle() : QString(); 37 | setWindowTitle(!title.isEmpty() ? title : QCoreApplication::applicationName()); 38 | 39 | QLabel* text = new QLabel(tr("Select application language:"), this); 40 | 41 | m_translations = new QComboBox(this); 42 | m_translations->addItem(tr("")); 43 | const QStringList translations = findTranslations(); 44 | for (QString translation : translations) { 45 | if (translation.startsWith("qt")) { 46 | continue; 47 | } 48 | translation.remove(m_appname); 49 | m_translations->addItem(languageName(translation), translation); 50 | } 51 | int index = std::max(0, m_translations->findData(m_current)); 52 | m_translations->setCurrentIndex(index); 53 | 54 | QDialogButtonBox* buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, this); 55 | connect(buttons, &QDialogButtonBox::accepted, this, &LocaleDialog::accept); 56 | connect(buttons, &QDialogButtonBox::rejected, this, &LocaleDialog::reject); 57 | 58 | QVBoxLayout* layout = new QVBoxLayout(this); 59 | layout->setSizeConstraint(QLayout::SetFixedSize); 60 | layout->addWidget(text); 61 | layout->addWidget(m_translations); 62 | layout->addWidget(buttons); 63 | } 64 | 65 | //----------------------------------------------------------------------------- 66 | 67 | void LocaleDialog::loadTranslator(const QString& name, const QString& datadir) 68 | { 69 | m_appname = name; 70 | 71 | // Find translator path 72 | m_path = datadir + "/translations/"; 73 | 74 | // Find current locale 75 | m_current = QSettings().value("Locale/Language").toString(); 76 | if (!m_current.isEmpty()) { 77 | QLocale::setDefault(QLocale(m_current)); 78 | } 79 | const QString locale = QLocale().name(); 80 | 81 | // Load translators 82 | static QTranslator translator; 83 | if (translator.load(m_appname + locale, m_path)) { 84 | QCoreApplication::installTranslator(&translator); 85 | 86 | const QString path = QLibraryInfo::path(QLibraryInfo::TranslationsPath); 87 | 88 | static QTranslator qtbase_translator; 89 | if (qtbase_translator.load("qtbase_" + locale, m_path) || qtbase_translator.load("qtbase_" + locale, path)) { 90 | QCoreApplication::installTranslator(&qtbase_translator); 91 | } 92 | 93 | static QTranslator qt_translator; 94 | if (qt_translator.load("qt_" + locale, m_path) || qt_translator.load("qt_" + locale, path)) { 95 | QCoreApplication::installTranslator(&qt_translator); 96 | } 97 | } 98 | } 99 | 100 | //----------------------------------------------------------------------------- 101 | 102 | QString LocaleDialog::languageName(const QString& language) 103 | { 104 | QString name; 105 | const QLocale locale(language); 106 | if (language.contains('_')) { 107 | if (locale.name() == language) { 108 | name = locale.nativeLanguageName() + " (" + locale.nativeTerritoryName() + ")"; 109 | } else { 110 | name = locale.nativeLanguageName() + " (" + language + ")"; 111 | } 112 | } else { 113 | name = locale.nativeLanguageName(); 114 | } 115 | if (name.isEmpty() || name == "C") { 116 | if (language == "eo") { 117 | name = "Esperanto"; 118 | } else { 119 | name = language; 120 | } 121 | } 122 | if (locale.textDirection() == Qt::RightToLeft) { 123 | name.prepend(QChar(0x202b)); 124 | } 125 | return name; 126 | } 127 | 128 | //----------------------------------------------------------------------------- 129 | 130 | QStringList LocaleDialog::findTranslations() 131 | { 132 | QStringList result = QDir(m_path, "*.qm").entryList(QDir::Files); 133 | result.replaceInStrings(".qm", ""); 134 | return result; 135 | } 136 | 137 | //----------------------------------------------------------------------------- 138 | 139 | void LocaleDialog::accept() 140 | { 141 | int current = m_translations->findData(m_current); 142 | if (current == m_translations->currentIndex()) { 143 | return reject(); 144 | } 145 | QDialog::accept(); 146 | 147 | m_current = m_translations->itemData(m_translations->currentIndex()).toString(); 148 | QSettings().setValue("Locale/Language", m_current); 149 | QMessageBox::information(this, tr("Note"), tr("Please restart this application for the change in language to take effect."), QMessageBox::Ok); 150 | } 151 | 152 | //----------------------------------------------------------------------------- 153 | -------------------------------------------------------------------------------- /translations/gottet_zh_TW.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Board 6 | 7 | Question 8 | 問題 9 | 10 | 11 | End the current game? 12 | 結束目前的遊戲? 13 | 14 | 15 | <big><b>Paused</b></big><br>Click to resume playing. 16 | <big><b>已暫停</b></big><br>點擊以繼續進行遊戲。 17 | 18 | 19 | <big><b>Game Over!</b></big><br>Click to start a new game. 20 | <big><b>遊戲結束!</b></big><br>點擊以開啟一個新遊戲。 21 | 22 | 23 | 24 | LocaleDialog 25 | 26 | Select application language: 27 | 選擇應用程式語言: 28 | 29 | 30 | <System Language> 31 | <系統語言> 32 | 33 | 34 | Note 35 | 註記 36 | 37 | 38 | Please restart this application for the change in language to take effect. 39 | 請重新啟動此應用程式以使語言的更動生效。 40 | 41 | 42 | 43 | ScoresDialog 44 | 45 | Level 46 | 等級 47 | 48 | 49 | Lines 50 | 行數 51 | 52 | 53 | Score 54 | 分數 55 | 56 | 57 | High Scores 58 | 高分 59 | 60 | 61 | Rank 62 | 排行 63 | 64 | 65 | Name 66 | 名稱 67 | 68 | 69 | #%1 70 | #%1 71 | 72 | 73 | Congratulations! 74 | 恭喜! 75 | 76 | 77 | You beat your top score! 78 | 您擊敗了您的最高分! 79 | 80 | 81 | Well done! 82 | 很好! 83 | 84 | 85 | You have a new high score! 86 | 您有新的高分! 87 | 88 | 89 | 90 | Window 91 | 92 | Gottet 93 | Gottet 94 | 95 | 96 | Click to start a new game. 97 | 點擊以開啟一個新遊戲。 98 | 99 | 100 | &Game 101 | 遊戲(&G) 102 | 103 | 104 | &New 105 | 新遊戲(&N) 106 | 107 | 108 | &Pause 109 | 暫停(&P) 110 | 111 | 112 | P 113 | P 114 | 115 | 116 | &Scores 117 | 分數(&S) 118 | 119 | 120 | &Quit 121 | 離開(&Q) 122 | 123 | 124 | &Settings 125 | 設定(&S) 126 | 127 | 128 | Application &Language... 129 | 應用程式語言...(&L) 130 | 131 | 132 | &Help 133 | 求助(&H) 134 | 135 | 136 | &About 137 | 關於(&A) 138 | 139 | 140 | About &Qt 141 | 關於 Qt(&Q) 142 | 143 | 144 | Next Piece 145 | 下一個 146 | 147 | 148 | Level 149 | 等級 150 | 151 | 152 | Removed Lines 153 | 已移除的行數 154 | 155 | 156 | Score 157 | 分數 158 | 159 | 160 | About 161 | 關於 162 | 163 | 164 | Copyright &copy; 2008-%1 Graeme Gott. 165 | Copyright &copy; 2008-%1 Graeme Gott. 166 | 167 | 168 | Released under the <a href=%1>GPL 3</a> license 169 | 以 <a href=%1>GPL 3</a> 授權條款釋出 170 | 171 | 172 | Ctrl+H 173 | Ctrl+H 174 | 175 | 176 | A simple falling blocks game 177 | 一個簡單的方塊掉落遊戲 178 | 179 | 180 | 181 | -------------------------------------------------------------------------------- /translations/gottet_zh.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Board 6 | 7 | Question 8 | 问题 9 | 10 | 11 | End the current game? 12 | 结束当前游戏? 13 | 14 | 15 | <big><b>Paused</b></big><br>Click to resume playing. 16 | <big><b>已暂停</b></big><br>点击以恢复游戏。 17 | 18 | 19 | <big><b>Game Over!</b></big><br>Click to start a new game. 20 | <big><b>游戏结束!</b></big><br>点击以开始新游戏。 21 | 22 | 23 | 24 | LocaleDialog 25 | 26 | Select application language: 27 | 选择本游戏的语言: 28 | 29 | 30 | <System Language> 31 | <系统语言> 32 | 33 | 34 | Note 35 | 提示 36 | 37 | 38 | Please restart this application for the change in language to take effect. 39 | 请重启本程序使语言设置生效。 40 | 41 | 42 | 43 | ScoresDialog 44 | 45 | Level 46 | 等级 47 | 48 | 49 | Lines 50 | 行数 51 | 52 | 53 | Score 54 | 分数 55 | 56 | 57 | High Scores 58 | 59 | 60 | 61 | Rank 62 | 63 | 64 | 65 | Name 66 | 67 | 68 | 69 | #%1 70 | 71 | 72 | 73 | Congratulations! 74 | 75 | 76 | 77 | You beat your top score! 78 | 79 | 80 | 81 | Well done! 82 | 83 | 84 | 85 | You have a new high score! 86 | 87 | 88 | 89 | 90 | Window 91 | 92 | Gottet 93 | Gottet 94 | 95 | 96 | Click to start a new game. 97 | 点击以开始新游戏 98 | 99 | 100 | &Game 101 | &游戏 102 | 103 | 104 | &New 105 | &新游戏 106 | 107 | 108 | &Pause 109 | &暂停 110 | 111 | 112 | P 113 | P 114 | 115 | 116 | &Scores 117 | &分数 118 | 119 | 120 | &Quit 121 | &退出程序 122 | 123 | 124 | &Settings 125 | &设置 126 | 127 | 128 | Application &Language... 129 | 程序 &语言... 130 | 131 | 132 | &Help 133 | &帮助 134 | 135 | 136 | &About 137 | &关于 138 | 139 | 140 | About &Qt 141 | 关于 &Qt 142 | 143 | 144 | Next Piece 145 | 下一个方块 146 | 147 | 148 | Level 149 | 等级 150 | 151 | 152 | Removed Lines 153 | 消除行数 154 | 155 | 156 | Score 157 | 分数 158 | 159 | 160 | About 161 | 关于 162 | 163 | 164 | Copyright &copy; 2008-%1 Graeme Gott. 165 | 版权所有 &copy; 2008-%1 Graeme Gott. 166 | 167 | 168 | Released under the <a href=%1>GPL 3</a> license 169 | 基于 <a href=%1>GPL 3</a> 协议发布 170 | 171 | 172 | Ctrl+H 173 | 174 | 175 | 176 | A simple falling blocks game 177 | 178 | 179 | 180 | 181 | -------------------------------------------------------------------------------- /translations/gottet_ko.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Board 6 | 7 | Question 8 | 질문 있습니다 9 | 10 | 11 | End the current game? 12 | 하고 계신 게임을 끝내실 건가요? 13 | 14 | 15 | <big><b>Paused</b></big><br>Click to resume playing. 16 | <big><b>잠시멈춤</b></big><br>계속하시려면 화면을 클릭하세요. 17 | 18 | 19 | <big><b>Game Over!</b></big><br>Click to start a new game. 20 | <big><b>게임 오버!</b></big><br>화면을 클릭하시면 새 게임을 시작합니다. 21 | 22 | 23 | 24 | LocaleDialog 25 | 26 | Select application language: 27 | 프로그램 언어 선택 28 | 29 | 30 | <System Language> 31 | 시스템 언어 32 | 33 | 34 | Note 35 | 노트 36 | 37 | 38 | Please restart this application for the change in language to take effect. 39 | 바꾸신 언어 설정을 적용하시려면 프로그램을 다시 시작해 주세요 40 | 41 | 42 | 43 | ScoresDialog 44 | 45 | Level 46 | 레벨 47 | 48 | 49 | Lines 50 | 51 | 52 | 53 | Score 54 | 점수 55 | 56 | 57 | High Scores 58 | 59 | 60 | 61 | Rank 62 | 63 | 64 | 65 | Name 66 | 67 | 68 | 69 | #%1 70 | 71 | 72 | 73 | Congratulations! 74 | 75 | 76 | 77 | You beat your top score! 78 | 79 | 80 | 81 | Well done! 82 | 83 | 84 | 85 | You have a new high score! 86 | 87 | 88 | 89 | 90 | Window 91 | 92 | Gottet 93 | 고테트 94 | 95 | 96 | Click to start a new game. 97 | 새 게임을 시작하려면 클릭하세요. 98 | 99 | 100 | &Game 101 | &게임 102 | 103 | 104 | &New 105 | &새 게임 106 | 107 | 108 | &Pause 109 | &잠시 멈춤 110 | 111 | 112 | P 113 | P 114 | 115 | 116 | &Scores 117 | &점수판 118 | 119 | 120 | &Quit 121 | &끝내기 122 | 123 | 124 | &Settings 125 | &설정 126 | 127 | 128 | Application &Language... 129 | 사용할 언어 130 | 131 | 132 | &Help 133 | &도움말 134 | 135 | 136 | &About 137 | &고테트란 138 | 139 | 140 | About &Qt 141 | &Qt에 관해 142 | 143 | 144 | Next Piece 145 | 다음 블록 146 | 147 | 148 | Level 149 | 레벨 150 | 151 | 152 | Removed Lines 153 | 깬 줄 수 154 | 155 | 156 | Score 157 | 점수 158 | 159 | 160 | About 161 | 고테트란 162 | 163 | 164 | Copyright &copy; 2008-%1 Graeme Gott. 165 | Copyright &copy; 2008-%1 Graeme Gott. 166 | 167 | 168 | Released under the <a href=%1>GPL 3</a> license 169 | <a href=%1>GPL 3</a> 라이선스에 따라 배포됩니다. 170 | 171 | 172 | Ctrl+H 173 | 174 | 175 | 176 | A simple falling blocks game 177 | 178 | 179 | 180 | 181 | -------------------------------------------------------------------------------- /translations/gottet_en.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Board 6 | 7 | Question 8 | 9 | 10 | 11 | End the current game? 12 | 13 | 14 | 15 | <big><b>Paused</b></big><br>Click to resume playing. 16 | 17 | 18 | 19 | <big><b>Game Over!</b></big><br>Click to start a new game. 20 | 21 | 22 | 23 | 24 | LocaleDialog 25 | 26 | Select application language: 27 | 28 | 29 | 30 | <System Language> 31 | 32 | 33 | 34 | Note 35 | 36 | 37 | 38 | Please restart this application for the change in language to take effect. 39 | 40 | 41 | 42 | 43 | ScoresDialog 44 | 45 | Level 46 | 47 | 48 | 49 | Lines 50 | 51 | 52 | 53 | Score 54 | 55 | 56 | 57 | High Scores 58 | 59 | 60 | 61 | Rank 62 | 63 | 64 | 65 | Name 66 | 67 | 68 | 69 | #%1 70 | 71 | 72 | 73 | Congratulations! 74 | 75 | 76 | 77 | You beat your top score! 78 | 79 | 80 | 81 | Well done! 82 | 83 | 84 | 85 | You have a new high score! 86 | 87 | 88 | 89 | 90 | Window 91 | 92 | Gottet 93 | 94 | 95 | 96 | Click to start a new game. 97 | 98 | 99 | 100 | &Game 101 | 102 | 103 | 104 | &New 105 | 106 | 107 | 108 | &Pause 109 | 110 | 111 | 112 | P 113 | 114 | 115 | 116 | &Scores 117 | 118 | 119 | 120 | &Quit 121 | 122 | 123 | 124 | &Settings 125 | 126 | 127 | 128 | Application &Language... 129 | 130 | 131 | 132 | &Help 133 | 134 | 135 | 136 | &About 137 | 138 | 139 | 140 | About &Qt 141 | 142 | 143 | 144 | Next Piece 145 | 146 | 147 | 148 | Level 149 | 150 | 151 | 152 | Removed Lines 153 | 154 | 155 | 156 | Score 157 | 158 | 159 | 160 | About 161 | 162 | 163 | 164 | Copyright &copy; 2008-%1 Graeme Gott. 165 | 166 | 167 | 168 | Released under the <a href=%1>GPL 3</a> license 169 | 170 | 171 | 172 | Ctrl+H 173 | 174 | 175 | 176 | A simple falling blocks game 177 | 178 | 179 | 180 | 181 | -------------------------------------------------------------------------------- /translations/gottet_he.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Board 6 | 7 | Question 8 | שאלה 9 | 10 | 11 | End the current game? 12 | לסיים את המשחק הנוכחי? 13 | 14 | 15 | <big><b>Paused</b></big><br>Click to resume playing. 16 | <big><b>מושהה</b></big><br>הקלק כדי לחזור למשחק. 17 | 18 | 19 | <big><b>Game Over!</b></big><br>Click to start a new game. 20 | <big><b>המשחק נגמר!</b></big><br>הקלק כדי להתחיל משחק חדש. 21 | 22 | 23 | 24 | LocaleDialog 25 | 26 | Select application language: 27 | בחר שפת יישום: 28 | 29 | 30 | <System Language> 31 | <שפת מערכת> 32 | 33 | 34 | Note 35 | הערה 36 | 37 | 38 | Please restart this application for the change in language to take effect. 39 | אנא אתחל את יישום זה כדי להחיל את השינוי בשפה. 40 | 41 | 42 | 43 | ScoresDialog 44 | 45 | Level 46 | שלב 47 | 48 | 49 | Lines 50 | שורות 51 | 52 | 53 | Score 54 | ניקוד 55 | 56 | 57 | High Scores 58 | 59 | 60 | 61 | Rank 62 | 63 | 64 | 65 | Name 66 | 67 | 68 | 69 | #%1 70 | 71 | 72 | 73 | Congratulations! 74 | 75 | 76 | 77 | You beat your top score! 78 | 79 | 80 | 81 | Well done! 82 | 83 | 84 | 85 | You have a new high score! 86 | 87 | 88 | 89 | 90 | Window 91 | 92 | Gottet 93 | 94 | 95 | 96 | Click to start a new game. 97 | הקלק כדי להתחיל משחק חדש. 98 | 99 | 100 | &Game 101 | &משחק 102 | 103 | 104 | &New 105 | &חדש 106 | 107 | 108 | &Pause 109 | ה&שהה 110 | 111 | 112 | P 113 | 114 | 115 | 116 | &Scores 117 | &תוצאות 118 | 119 | 120 | &Quit 121 | י&ציאה 122 | 123 | 124 | &Settings 125 | &הגדרות 126 | 127 | 128 | Application &Language... 129 | &שפת יישום... 130 | 131 | 132 | &Help 133 | &עזרה 134 | 135 | 136 | &About 137 | &אודות 138 | 139 | 140 | About &Qt 141 | אודות &Qt 142 | 143 | 144 | Next Piece 145 | חתיכה הבאה 146 | 147 | 148 | Level 149 | שלב 150 | 151 | 152 | Removed Lines 153 | שורות שהוסרו 154 | 155 | 156 | Score 157 | ניקוד 158 | 159 | 160 | About 161 | אודות 162 | 163 | 164 | Copyright &copy; 2008-%1 Graeme Gott. 165 | 166 | 167 | 168 | Released under the <a href=%1>GPL 3</a> license 169 | משוחרר תחת הרשיון ‫<a href=%1>GPL 3</a> 170 | 171 | 172 | Ctrl+H 173 | 174 | 175 | 176 | A simple falling blocks game 177 | 178 | 179 | 180 | 181 | -------------------------------------------------------------------------------- /translations/gottet_ro.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Board 6 | 7 | Question 8 | Întrebare 9 | 10 | 11 | End the current game? 12 | Termină jocul curent? 13 | 14 | 15 | <big><b>Paused</b></big><br>Click to resume playing. 16 | <big><b>În pauză</b></big><br>Clic pentru a relua jocul. 17 | 18 | 19 | <big><b>Game Over!</b></big><br>Click to start a new game. 20 | <big><b>Joc terminat!</b></big><br>Clic pentru a începe un joc nou. 21 | 22 | 23 | 24 | LocaleDialog 25 | 26 | Select application language: 27 | Selectaţi limba aplicaţiei 28 | 29 | 30 | <System Language> 31 | <Limbaj sistem> 32 | 33 | 34 | Note 35 | Notă 36 | 37 | 38 | Please restart this application for the change in language to take effect. 39 | Vă rugăm reporniţi această aplicaţie pentru ca schimbarea limbii să aibă efect. 40 | 41 | 42 | 43 | ScoresDialog 44 | 45 | Level 46 | Nivel 47 | 48 | 49 | Lines 50 | Linii 51 | 52 | 53 | Score 54 | Scor 55 | 56 | 57 | High Scores 58 | Cele mai mari scoruri 59 | 60 | 61 | Rank 62 | Rang 63 | 64 | 65 | Name 66 | Nume 67 | 68 | 69 | #%1 70 | #%1 71 | 72 | 73 | Congratulations! 74 | Felicitări! 75 | 76 | 77 | You beat your top score! 78 | Ţi-ai învins cel mai bun scor! 79 | 80 | 81 | Well done! 82 | Bravo! 83 | 84 | 85 | You have a new high score! 86 | Ai un nou scor mare! 87 | 88 | 89 | 90 | Window 91 | 92 | Gottet 93 | Gottet 94 | 95 | 96 | Click to start a new game. 97 | Clic pentru a începe joc nou. 98 | 99 | 100 | &Game 101 | &Joc 102 | 103 | 104 | &New 105 | &Nou 106 | 107 | 108 | &Pause 109 | &Pauză 110 | 111 | 112 | P 113 | P 114 | 115 | 116 | &Scores 117 | &Scoruri 118 | 119 | 120 | &Quit 121 | &Ieşire 122 | 123 | 124 | &Settings 125 | &Setări 126 | 127 | 128 | Application &Language... 129 | &Limbă aplicaţie... 130 | 131 | 132 | &Help 133 | &Ajutor 134 | 135 | 136 | &About 137 | &Despre 138 | 139 | 140 | About &Qt 141 | Despre &Qt 142 | 143 | 144 | Next Piece 145 | Piesa următoare 146 | 147 | 148 | Level 149 | Nivel 150 | 151 | 152 | Removed Lines 153 | Linii eliminate 154 | 155 | 156 | Score 157 | Scor 158 | 159 | 160 | About 161 | Despre 162 | 163 | 164 | Copyright &copy; 2008-%1 Graeme Gott. 165 | Toate drepturile rezervate &copy; 2008-%1 Graeme Gott. 166 | 167 | 168 | Released under the <a href=%1>GPL 3</a> license 169 | Lansat sub licenţă <a href=%1>GPL 3</a> 170 | 171 | 172 | Ctrl+H 173 | Ctrl+H 174 | 175 | 176 | A simple falling blocks game 177 | Un joc simplu de blocuri care cad 178 | 179 | 180 | 181 | -------------------------------------------------------------------------------- /translations/gottet_et.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Board 6 | 7 | Question 8 | Küsimus 9 | 10 | 11 | End the current game? 12 | Kas lõpetame selle mängu? 13 | 14 | 15 | <big><b>Paused</b></big><br>Click to resume playing. 16 | <big><b>Mäng on pausil</b></big><br>Mängimise jätkamiseks klõpsi. 17 | 18 | 19 | <big><b>Game Over!</b></big><br>Click to start a new game. 20 | <big><b>Mäng on läbi!</b></big><br>Uue mängu alustamiseks klõpsi. 21 | 22 | 23 | 24 | LocaleDialog 25 | 26 | Select application language: 27 | Vali rakenduse keel: 28 | 29 | 30 | <System Language> 31 | Süsteemi keel 32 | 33 | 34 | Note 35 | Märkus 36 | 37 | 38 | Please restart this application for the change in language to take effect. 39 | Keele vahetamise jõustamiseks palun käivita rakendus uuesti. 40 | 41 | 42 | 43 | ScoresDialog 44 | 45 | Level 46 | Tase 47 | 48 | 49 | Lines 50 | Ridu 51 | 52 | 53 | Score 54 | Tulemus 55 | 56 | 57 | High Scores 58 | Edetabel 59 | 60 | 61 | Rank 62 | Koht 63 | 64 | 65 | Name 66 | Nimi 67 | 68 | 69 | #%1 70 | #%1 71 | 72 | 73 | Congratulations! 74 | Õnnitleme! 75 | 76 | 77 | You beat your top score! 78 | Tegid senistest tulemustest parema tulemuse! 79 | 80 | 81 | Well done! 82 | Hea töö! 83 | 84 | 85 | You have a new high score! 86 | Tegid uue tabelitulemuse! 87 | 88 | 89 | 90 | Window 91 | 92 | Gottet 93 | Gottet 94 | 95 | 96 | Click to start a new game. 97 | Uue mängu alustamiseks klõpsi. 98 | 99 | 100 | &Game 101 | &Mäng 102 | 103 | 104 | &New 105 | &Uus 106 | 107 | 108 | &Pause 109 | &Peata ajutiselt 110 | 111 | 112 | P 113 | P 114 | 115 | 116 | &Scores 117 | &Tulemused 118 | 119 | 120 | &Quit 121 | &Välju 122 | 123 | 124 | &Settings 125 | &Seadistused 126 | 127 | 128 | Application &Language... 129 | Rakenduse &keel... 130 | 131 | 132 | &Help 133 | &Abiteave 134 | 135 | 136 | &About 137 | &Rakenduse teave 138 | 139 | 140 | About &Qt 141 | Teave &Qt kohta 142 | 143 | 144 | Next Piece 145 | Järgmine klots 146 | 147 | 148 | Level 149 | Tase 150 | 151 | 152 | Removed Lines 153 | Eemaldatud ridu 154 | 155 | 156 | Score 157 | Tulemus 158 | 159 | 160 | About 161 | Rakenduse teave 162 | 163 | 164 | Copyright &copy; 2008-%1 Graeme Gott. 165 | Autoriõigused &copy; 2008-%1 Graeme Gott. 166 | 167 | 168 | Released under the <a href=%1>GPL 3</a> license 169 | Avaldatud <a href=%1>GPL 3</a> litsentsi alusel 170 | 171 | 172 | Ctrl+H 173 | Ctrl+H 174 | 175 | 176 | A simple falling blocks game 177 | Lihtne klotside kukutamise mäng 178 | 179 | 180 | 181 | -------------------------------------------------------------------------------- /translations/gottet_pl.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Board 6 | 7 | Question 8 | Pytanie 9 | 10 | 11 | End the current game? 12 | Czy chcesz zakończyć bieżącą grę? 13 | 14 | 15 | <big><b>Paused</b></big><br>Click to resume playing. 16 | <big><b>Wstrzymane</b></big><br>Kliknij, aby wznowić grę. 17 | 18 | 19 | <big><b>Game Over!</b></big><br>Click to start a new game. 20 | <big><b>Koniec gry!</b></big><br>Kliknij, aby rozpocząć nową grę. 21 | 22 | 23 | 24 | LocaleDialog 25 | 26 | Select application language: 27 | Wybierz język programu: 28 | 29 | 30 | <System Language> 31 | <Język systemowy> 32 | 33 | 34 | Note 35 | Uwaga 36 | 37 | 38 | Please restart this application for the change in language to take effect. 39 | Proszę ponownie uruchomić ten program, aby zastosować zmianę języka. 40 | 41 | 42 | 43 | ScoresDialog 44 | 45 | Level 46 | Poziom 47 | 48 | 49 | Lines 50 | Linii 51 | 52 | 53 | Score 54 | Wynik 55 | 56 | 57 | High Scores 58 | 59 | 60 | 61 | Rank 62 | 63 | 64 | 65 | Name 66 | 67 | 68 | 69 | #%1 70 | 71 | 72 | 73 | Congratulations! 74 | 75 | 76 | 77 | You beat your top score! 78 | 79 | 80 | 81 | Well done! 82 | 83 | 84 | 85 | You have a new high score! 86 | 87 | 88 | 89 | 90 | Window 91 | 92 | Gottet 93 | Gottet 94 | 95 | 96 | Click to start a new game. 97 | Kliknij, aby rozpocząć nową grę. 98 | 99 | 100 | &Game 101 | &Gra 102 | 103 | 104 | &New 105 | &Nowa 106 | 107 | 108 | &Pause 109 | &Pauza 110 | 111 | 112 | P 113 | P 114 | 115 | 116 | &Scores 117 | &Wyniki 118 | 119 | 120 | &Quit 121 | &Zakończ 122 | 123 | 124 | &Settings 125 | &Ustawienia 126 | 127 | 128 | Application &Language... 129 | &Język programu... 130 | 131 | 132 | &Help 133 | &Pomoc 134 | 135 | 136 | &About 137 | &O 138 | 139 | 140 | About &Qt 141 | O &Qt 142 | 143 | 144 | Next Piece 145 | Następny element 146 | 147 | 148 | Level 149 | Poziom 150 | 151 | 152 | Removed Lines 153 | Usuniętych linii 154 | 155 | 156 | Score 157 | Wynik 158 | 159 | 160 | About 161 | O 162 | 163 | 164 | Copyright &copy; 2008-%1 Graeme Gott. 165 | Prawo autorskie &copy; 2008-%1 Graeme Gott. 166 | 167 | 168 | Released under the <a href=%1>GPL 3</a> license 169 | Wydano na licencji <a href=%1>GPL 3</a> 170 | 171 | 172 | Ctrl+H 173 | 174 | 175 | 176 | A simple falling blocks game 177 | 178 | 179 | 180 | 181 | -------------------------------------------------------------------------------- /translations/gottet_nl.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Board 6 | 7 | Question 8 | Vraag 9 | 10 | 11 | End the current game? 12 | Wil je het huidige spel beëindigen? 13 | 14 | 15 | <big><b>Paused</b></big><br>Click to resume playing. 16 | <big></b>Onderbroken</b></big><br>Klik om het spel voort te zetten. 17 | 18 | 19 | <big><b>Game Over!</b></big><br>Click to start a new game. 20 | <big><b>Het spel is voorbij!</b></big><br>Klik om een nieuw spel te starten. 21 | 22 | 23 | 24 | LocaleDialog 25 | 26 | Select application language: 27 | Kies de programmataal: 28 | 29 | 30 | <System Language> 31 | <Systeem taal> 32 | 33 | 34 | Note 35 | Opmerking 36 | 37 | 38 | Please restart this application for the change in language to take effect. 39 | Herstart het programma om de taalwijziging door te voeren 40 | 41 | 42 | 43 | ScoresDialog 44 | 45 | Level 46 | Niveau 47 | 48 | 49 | Lines 50 | Aantal lijnen 51 | 52 | 53 | Score 54 | Score 55 | 56 | 57 | High Scores 58 | Topscores 59 | 60 | 61 | Rank 62 | Rang 63 | 64 | 65 | Name 66 | Naam 67 | 68 | 69 | #%1 70 | #%1 71 | 72 | 73 | Congratulations! 74 | Gefeliciteerd! 75 | 76 | 77 | You beat your top score! 78 | Je hebt je topscore verbroken! 79 | 80 | 81 | Well done! 82 | Goed gedaan! 83 | 84 | 85 | You have a new high score! 86 | Je hebt een nieuwe topscore neergezet! 87 | 88 | 89 | 90 | Window 91 | 92 | Gottet 93 | Gottet 94 | 95 | 96 | Click to start a new game. 97 | Klik om een nieuw spel te starten 98 | 99 | 100 | &Game 101 | &Spel 102 | 103 | 104 | &New 105 | &Nieuw 106 | 107 | 108 | &Pause 109 | &Onderbreken 110 | 111 | 112 | P 113 | P 114 | 115 | 116 | &Scores 117 | &Scores 118 | 119 | 120 | &Quit 121 | &Afsluiten 122 | 123 | 124 | &Settings 125 | In&stellingen 126 | 127 | 128 | Application &Language... 129 | Programmataal… 130 | 131 | 132 | &Help 133 | &Hulp 134 | 135 | 136 | &About 137 | &Over 138 | 139 | 140 | About &Qt 141 | Over &Qt 142 | 143 | 144 | Next Piece 145 | Volgend blokje 146 | 147 | 148 | Level 149 | Niveau 150 | 151 | 152 | Removed Lines 153 | Weggespeelde lijnen 154 | 155 | 156 | Score 157 | Score 158 | 159 | 160 | About 161 | Over 162 | 163 | 164 | Copyright &copy; 2008-%1 Graeme Gott. 165 | Copyright &copy; 2008-%1 Graeme Gott. 166 | 167 | 168 | Released under the <a href=%1>GPL 3</a> license 169 | Uitgebracht onder de <a href=%1>GPL 3</a>-licentie 170 | 171 | 172 | Ctrl+H 173 | Ctrl+H 174 | 175 | 176 | A simple falling blocks game 177 | Een eenvoudig vallendeblokkenspel 178 | 179 | 180 | 181 | -------------------------------------------------------------------------------- /translations/gottet_cs.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Board 6 | 7 | Question 8 | Otázka 9 | 10 | 11 | End the current game? 12 | končit nynější hru? 13 | 14 | 15 | <big><b>Paused</b></big><br>Click to resume playing. 16 | <big><b>Pozastaveno</b></big><br>Klepněte pro pokračování ve hře. 17 | 18 | 19 | <big><b>Game Over!</b></big><br>Click to start a new game. 20 | <big><b>Konec hry</b></big><br>Klepněte pro spuštění nové hry. 21 | 22 | 23 | 24 | LocaleDialog 25 | 26 | Select application language: 27 | Vybrat jazyk programu: 28 | 29 | 30 | <System Language> 31 | <Jazyk systému> 32 | 33 | 34 | Note 35 | Poznámka 36 | 37 | 38 | Please restart this application for the change in language to take effect. 39 | Spusťte, prosím, tento program znovu, aby se změna jazyka projevila. 40 | 41 | 42 | 43 | ScoresDialog 44 | 45 | Level 46 | Úroveň 47 | 48 | 49 | Lines 50 | Řádky 51 | 52 | 53 | Score 54 | Výsledek 55 | 56 | 57 | High Scores 58 | 59 | 60 | 61 | Rank 62 | 63 | 64 | 65 | Name 66 | 67 | 68 | 69 | #%1 70 | 71 | 72 | 73 | Congratulations! 74 | 75 | 76 | 77 | You beat your top score! 78 | 79 | 80 | 81 | Well done! 82 | 83 | 84 | 85 | You have a new high score! 86 | 87 | 88 | 89 | 90 | Window 91 | 92 | Gottet 93 | Gottet 94 | 95 | 96 | Click to start a new game. 97 | Klepněte pro spuštění nové hry. 98 | 99 | 100 | &Game 101 | &Hra 102 | 103 | 104 | &New 105 | &Nová 106 | 107 | 108 | &Pause 109 | &Pozastavit 110 | 111 | 112 | P 113 | P 114 | 115 | 116 | &Scores 117 | &Výsledky 118 | 119 | 120 | &Quit 121 | &Ukončit 122 | 123 | 124 | &Settings 125 | &Nastavení 126 | 127 | 128 | Application &Language... 129 | J&azyk programu... 130 | 131 | 132 | &Help 133 | &Nápověda 134 | 135 | 136 | &About 137 | O &programu 138 | 139 | 140 | About &Qt 141 | O &Qt 142 | 143 | 144 | Next Piece 145 | Další kousek 146 | 147 | 148 | Level 149 | Úroveň 150 | 151 | 152 | Removed Lines 153 | Odstraněné řádky 154 | 155 | 156 | Score 157 | Výsledek 158 | 159 | 160 | About 161 | O hře 162 | 163 | 164 | Copyright &copy; 2008-%1 Graeme Gott. 165 | Autorské právo &copy; 2008-%1 Graeme Gott. 166 | 167 | 168 | Released under the <a href=%1>GPL 3</a> license 169 | Vydáno pod licencí <a href=%1>GPL 3</a> 170 | 171 | 172 | Ctrl+H 173 | 174 | 175 | 176 | A simple falling blocks game 177 | 178 | 179 | 180 | 181 | -------------------------------------------------------------------------------- /translations/gottet_ms.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Board 6 | 7 | Question 8 | Soalan 9 | 10 | 11 | End the current game? 12 | Tamatkan permainan semasa? 13 | 14 | 15 | <big><b>Paused</b></big><br>Click to resume playing. 16 | <big><b>Dijeda</b></big><br>Klik untuk sambung semula permainan. 17 | 18 | 19 | <big><b>Game Over!</b></big><br>Click to start a new game. 20 | <big><b>Permainan Tamat!</b></big><br>Klik untuk mulakan permainan baru. 21 | 22 | 23 | 24 | LocaleDialog 25 | 26 | Select application language: 27 | Pilih bahasa aplikasi: 28 | 29 | 30 | <System Language> 31 | <Bahasa Sistem> 32 | 33 | 34 | Note 35 | Nota 36 | 37 | 38 | Please restart this application for the change in language to take effect. 39 | Sila mulakan semula aplikasi ini supaya perubahan bahasa berkesan. 40 | 41 | 42 | 43 | ScoresDialog 44 | 45 | Level 46 | Aras 47 | 48 | 49 | Lines 50 | Baris 51 | 52 | 53 | Score 54 | Skor 55 | 56 | 57 | High Scores 58 | 59 | 60 | 61 | Rank 62 | 63 | 64 | 65 | Name 66 | 67 | 68 | 69 | #%1 70 | 71 | 72 | 73 | Congratulations! 74 | 75 | 76 | 77 | You beat your top score! 78 | 79 | 80 | 81 | Well done! 82 | 83 | 84 | 85 | You have a new high score! 86 | 87 | 88 | 89 | 90 | Window 91 | 92 | Gottet 93 | Gottet 94 | 95 | 96 | Click to start a new game. 97 | Klik untuk mulakan permainan baru. 98 | 99 | 100 | &Game 101 | &Permainan 102 | 103 | 104 | &New 105 | &Baru 106 | 107 | 108 | &Pause 109 | &Jeda 110 | 111 | 112 | P 113 | P 114 | 115 | 116 | &Scores 117 | Sk&or 118 | 119 | 120 | &Quit 121 | &Keluar 122 | 123 | 124 | &Settings 125 | &Tetapan 126 | 127 | 128 | Application &Language... 129 | &Bahasa Aplikasi... 130 | 131 | 132 | &Help 133 | Ba&ntuan 134 | 135 | 136 | &About 137 | Perih&al 138 | 139 | 140 | About &Qt 141 | Perihal &Qt 142 | 143 | 144 | Next Piece 145 | Kepingan Berikutnya 146 | 147 | 148 | Level 149 | Aras 150 | 151 | 152 | Removed Lines 153 | Baris Dibuang 154 | 155 | 156 | Score 157 | Skor 158 | 159 | 160 | About 161 | Perihal 162 | 163 | 164 | Copyright &copy; 2008-%1 Graeme Gott. 165 | Hakcipta &copy; 2008-%1 Graeme Gott. 166 | 167 | 168 | Released under the <a href=%1>GPL 3</a> license 169 | Dikeluarkan dibawah lesen <a href=%1>GPL 3</a> 170 | 171 | 172 | Ctrl+H 173 | 174 | 175 | 176 | A simple falling blocks game 177 | 178 | 179 | 180 | 181 | -------------------------------------------------------------------------------- /translations/gottet_de.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Board 6 | 7 | Question 8 | Frage 9 | 10 | 11 | End the current game? 12 | Gegenwärtiges Spiel abbrechen? 13 | 14 | 15 | <big><b>Paused</b></big><br>Click to resume playing. 16 | <big><b>Pausiert</b></big><br>Klicken Sie um das Spiel fortzusetzen. 17 | 18 | 19 | <big><b>Game Over!</b></big><br>Click to start a new game. 20 | <big><b>Spiel vorbei!</b></big><br>Klicken Sie um ein neues Spiel zu starten. 21 | 22 | 23 | 24 | LocaleDialog 25 | 26 | Select application language: 27 | Anwendungssprache auswählen: 28 | 29 | 30 | <System Language> 31 | <Systemeinstellung> 32 | 33 | 34 | Note 35 | Hinweis 36 | 37 | 38 | Please restart this application for the change in language to take effect. 39 | Bitte starten Sie diese Anwendung neu um den Wechsel der Sprache auszuführen. 40 | 41 | 42 | 43 | ScoresDialog 44 | 45 | Level 46 | Level 47 | 48 | 49 | Lines 50 | Reihen 51 | 52 | 53 | Score 54 | Punkte 55 | 56 | 57 | High Scores 58 | 59 | 60 | 61 | Rank 62 | Rang 63 | 64 | 65 | Name 66 | Name 67 | 68 | 69 | #%1 70 | #%1 71 | 72 | 73 | Congratulations! 74 | Glückwunsch! 75 | 76 | 77 | You beat your top score! 78 | Du hast deine Bestmarke übertroffen! 79 | 80 | 81 | Well done! 82 | Gut gemacht! 83 | 84 | 85 | You have a new high score! 86 | 87 | 88 | 89 | 90 | Window 91 | 92 | Gottet 93 | Gottet 94 | 95 | 96 | Click to start a new game. 97 | Klicken Sie um ein neues Spiel zu starten. 98 | 99 | 100 | &Game 101 | &Spiel 102 | 103 | 104 | &New 105 | &Neu 106 | 107 | 108 | &Pause 109 | &Pause 110 | 111 | 112 | P 113 | P 114 | 115 | 116 | &Scores 117 | &Punkte 118 | 119 | 120 | &Quit 121 | &Beenden 122 | 123 | 124 | &Settings 125 | &Einstellungen 126 | 127 | 128 | Application &Language... 129 | &Anwendungssprache... 130 | 131 | 132 | &Help 133 | &Hilfe 134 | 135 | 136 | &About 137 | &Info 138 | 139 | 140 | About &Qt 141 | Info über &Qt 142 | 143 | 144 | Next Piece 145 | Nächster Stein 146 | 147 | 148 | Level 149 | Level 150 | 151 | 152 | Removed Lines 153 | Entfernte Reihen 154 | 155 | 156 | Score 157 | Punkte 158 | 159 | 160 | About 161 | Info 162 | 163 | 164 | Copyright &copy; 2008-%1 Graeme Gott. 165 | Copyright &copy; 2008-%1 Graeme Gott. 166 | 167 | 168 | Released under the <a href=%1>GPL 3</a> license 169 | Veröffentlicht unter der <a href=%1>GPL-3</a>-Lizenz 170 | 171 | 172 | Ctrl+H 173 | Strg+H 174 | 175 | 176 | A simple falling blocks game 177 | 178 | 179 | 180 | 181 | -------------------------------------------------------------------------------- /translations/gottet_pt.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Board 6 | 7 | Question 8 | Questão 9 | 10 | 11 | End the current game? 12 | Terminar o jogo atual? 13 | 14 | 15 | <big><b>Paused</b></big><br>Click to resume playing. 16 | <big><b>Pausado</b></big><br>Clique para continuar o jogo. 17 | 18 | 19 | <big><b>Game Over!</b></big><br>Click to start a new game. 20 | <big><b>Fim do Jogo!</b></big><br>Clique para começar um novo jogo. 21 | 22 | 23 | 24 | LocaleDialog 25 | 26 | Select application language: 27 | Selecione o idioma da aplicação: 28 | 29 | 30 | <System Language> 31 | <Idioma do Sistema> 32 | 33 | 34 | Note 35 | Nota 36 | 37 | 38 | Please restart this application for the change in language to take effect. 39 | Por favor reinicie a aplicação para a alteração ao idioma surtir efeito. 40 | 41 | 42 | 43 | ScoresDialog 44 | 45 | Level 46 | Nível 47 | 48 | 49 | Lines 50 | Linhas 51 | 52 | 53 | Score 54 | Pontuação 55 | 56 | 57 | High Scores 58 | 59 | 60 | 61 | Rank 62 | 63 | 64 | 65 | Name 66 | 67 | 68 | 69 | #%1 70 | 71 | 72 | 73 | Congratulations! 74 | 75 | 76 | 77 | You beat your top score! 78 | 79 | 80 | 81 | Well done! 82 | 83 | 84 | 85 | You have a new high score! 86 | 87 | 88 | 89 | 90 | Window 91 | 92 | Gottet 93 | Gottet 94 | 95 | 96 | Click to start a new game. 97 | Clique para começar um novo jogo 98 | 99 | 100 | &Game 101 | &Jogo 102 | 103 | 104 | &New 105 | &Novo 106 | 107 | 108 | &Pause 109 | &Pausa 110 | 111 | 112 | P 113 | P 114 | 115 | 116 | &Scores 117 | P&ontuações 118 | 119 | 120 | &Quit 121 | &Sair 122 | 123 | 124 | &Settings 125 | &Definições 126 | 127 | 128 | Application &Language... 129 | &Idioma da Aplicação 130 | 131 | 132 | &Help 133 | &Ajuda 134 | 135 | 136 | &About 137 | So&bre 138 | 139 | 140 | About &Qt 141 | Sobre o &Qt 142 | 143 | 144 | Next Piece 145 | Próxima Peça 146 | 147 | 148 | Level 149 | Nível 150 | 151 | 152 | Removed Lines 153 | Linhas Removidas 154 | 155 | 156 | Score 157 | Pontuação 158 | 159 | 160 | About 161 | Sobre 162 | 163 | 164 | Copyright &copy; 2008-%1 Graeme Gott. 165 | Direitos de autor &copy; 2008-%1 Graeme Gott. 166 | 167 | 168 | Released under the <a href=%1>GPL 3</a> license 169 | Lançado sob a licença <a href=%1>GPL 3</a> 170 | 171 | 172 | Ctrl+H 173 | 174 | 175 | 176 | A simple falling blocks game 177 | 178 | 179 | 180 | 181 | -------------------------------------------------------------------------------- /translations/gottet_ru.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Board 6 | 7 | Question 8 | Вопрос 9 | 10 | 11 | End the current game? 12 | Закончить текущую игру? 13 | 14 | 15 | <big><b>Paused</b></big><br>Click to resume playing. 16 | <big><b>Пауза</b></big><br>Кликните, чтобы продолжить игру. 17 | 18 | 19 | <big><b>Game Over!</b></big><br>Click to start a new game. 20 | <big><b>Игра закончена!</b></big><br>Кликните, чтобы начать новую. 21 | 22 | 23 | 24 | LocaleDialog 25 | 26 | Select application language: 27 | Выберите язык приложения: 28 | 29 | 30 | <System Language> 31 | <Язык системы> 32 | 33 | 34 | Note 35 | Заметка 36 | 37 | 38 | Please restart this application for the change in language to take effect. 39 | Пожалуйста, перезапустите программу, чтобы изменение используемого языка вступило в силу. 40 | 41 | 42 | 43 | ScoresDialog 44 | 45 | Level 46 | Уровень 47 | 48 | 49 | Lines 50 | Линии 51 | 52 | 53 | Score 54 | Счёт 55 | 56 | 57 | High Scores 58 | 59 | 60 | 61 | Rank 62 | 63 | 64 | 65 | Name 66 | 67 | 68 | 69 | #%1 70 | 71 | 72 | 73 | Congratulations! 74 | 75 | 76 | 77 | You beat your top score! 78 | 79 | 80 | 81 | Well done! 82 | 83 | 84 | 85 | You have a new high score! 86 | 87 | 88 | 89 | 90 | Window 91 | 92 | Gottet 93 | Gottet 94 | 95 | 96 | Click to start a new game. 97 | Кликните, чтобы начать новую игру. 98 | 99 | 100 | &Game 101 | &Игра 102 | 103 | 104 | &New 105 | &Новая 106 | 107 | 108 | &Pause 109 | &Пауза 110 | 111 | 112 | P 113 | P 114 | 115 | 116 | &Scores 117 | &Счёт 118 | 119 | 120 | &Quit 121 | &Выйти 122 | 123 | 124 | &Settings 125 | &Настройки 126 | 127 | 128 | Application &Language... 129 | &Язык приложения... 130 | 131 | 132 | &Help 133 | &Помощь 134 | 135 | 136 | &About 137 | &О программе 138 | 139 | 140 | About &Qt 141 | О &Qt 142 | 143 | 144 | Next Piece 145 | Следующая фигура 146 | 147 | 148 | Level 149 | Уровень 150 | 151 | 152 | Removed Lines 153 | Количество удалённых линий 154 | 155 | 156 | Score 157 | Счёт 158 | 159 | 160 | About 161 | О программе 162 | 163 | 164 | Copyright &copy; 2008-%1 Graeme Gott. 165 | Copyright &copy; 2008-%1 Graeme Gott. 166 | 167 | 168 | Released under the <a href=%1>GPL 3</a> license 169 | Программа выпущена под <a href=%1>GPL 3</a> 170 | 171 | 172 | Ctrl+H 173 | 174 | 175 | 176 | A simple falling blocks game 177 | 178 | 179 | 180 | 181 | -------------------------------------------------------------------------------- /translations/gottet_lt.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Board 6 | 7 | Question 8 | Klausimas 9 | 10 | 11 | End the current game? 12 | Baigti dabartinį žaidimą? 13 | 14 | 15 | <big><b>Paused</b></big><br>Click to resume playing. 16 | <big><b>Pauzė</b></big><br>Spustelėkite, norėdami tęsti žaidimą. 17 | 18 | 19 | <big><b>Game Over!</b></big><br>Click to start a new game. 20 | <big><b>Žaidimas baigtas!</b></big><br>Spustelėkite, norėdami pradėti naują žaidimą. 21 | 22 | 23 | 24 | LocaleDialog 25 | 26 | Select application language: 27 | Pasirinkite programos kalbą: 28 | 29 | 30 | <System Language> 31 | <Sistemos kalba> 32 | 33 | 34 | Note 35 | Pastaba 36 | 37 | 38 | Please restart this application for the change in language to take effect. 39 | Prašome paleisti programą iš naujo, kad įsigaliotų kalbos pakeitimai 40 | 41 | 42 | 43 | ScoresDialog 44 | 45 | Level 46 | Lygis 47 | 48 | 49 | Lines 50 | Eilutės 51 | 52 | 53 | Score 54 | Surinkta taškų 55 | 56 | 57 | High Scores 58 | Rekordai 59 | 60 | 61 | Rank 62 | Rangas 63 | 64 | 65 | Name 66 | Vardas 67 | 68 | 69 | #%1 70 | #%1 71 | 72 | 73 | Congratulations! 74 | Sveikiname! 75 | 76 | 77 | You beat your top score! 78 | Jūs sumušėte savo rekordą! 79 | 80 | 81 | Well done! 82 | Puikiai padirbėta! 83 | 84 | 85 | You have a new high score! 86 | Jūs pasiekėte naują rekordą! 87 | 88 | 89 | 90 | Window 91 | 92 | Gottet 93 | Gottet 94 | 95 | 96 | Click to start a new game. 97 | Spustelėkite, norėdami pradėti naują žaidimą. 98 | 99 | 100 | &Game 101 | Žai&dimas 102 | 103 | 104 | &New 105 | &Naujas 106 | 107 | 108 | &Pause 109 | Pau&zė 110 | 111 | 112 | P 113 | P 114 | 115 | 116 | &Scores 117 | &Surinkti taškai 118 | 119 | 120 | &Quit 121 | &Baigti 122 | 123 | 124 | &Settings 125 | &Nustatymai 126 | 127 | 128 | Application &Language... 129 | Programos &kalba 130 | 131 | 132 | &Help 133 | &Pagalba 134 | 135 | 136 | &About 137 | &Apie 138 | 139 | 140 | About &Qt 141 | Apie &Qt 142 | 143 | 144 | Next Piece 145 | Kita figūra 146 | 147 | 148 | Level 149 | Lygis 150 | 151 | 152 | Removed Lines 153 | Pašalinta eilučių 154 | 155 | 156 | Score 157 | Surinkta taškų 158 | 159 | 160 | About 161 | Apie 162 | 163 | 164 | Copyright &copy; 2008-%1 Graeme Gott. 165 | Autorių Teisės &copy; 2008-%1 Graeme Gott. 166 | 167 | 168 | Released under the <a href=%1>GPL 3</a> license 169 | Išleista pagal <a href=%1>GPL 3</a> licenciją 170 | 171 | 172 | Ctrl+H 173 | Ctrl+H 174 | 175 | 176 | A simple falling blocks game 177 | Paprastas krentančių blokų žaidimas 178 | 179 | 180 | 181 | -------------------------------------------------------------------------------- /translations/gottet_tr.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Board 6 | 7 | Question 8 | Soru 9 | 10 | 11 | End the current game? 12 | Şu anki oyun bitirilsin mi? 13 | 14 | 15 | <big><b>Paused</b></big><br>Click to resume playing. 16 | <big><b>Duraklatıldı</b></big><br>Oynamaya devam etmek için tıklayın. 17 | 18 | 19 | <big><b>Game Over!</b></big><br>Click to start a new game. 20 | <big><b>Oyun Bitti!</b></big><br>Yeni bir oyun başlatmak için tıklayın. 21 | 22 | 23 | 24 | LocaleDialog 25 | 26 | Select application language: 27 | Uygulama dilini seçin: 28 | 29 | 30 | <System Language> 31 | <Sistem Dili> 32 | 33 | 34 | Note 35 | Not 36 | 37 | 38 | Please restart this application for the change in language to take effect. 39 | Dil değişikliğinin etkin olması için lütfen bu uygulamayı yeniden başlatın. 40 | 41 | 42 | 43 | ScoresDialog 44 | 45 | Level 46 | Seviye 47 | 48 | 49 | Lines 50 | Çizgi 51 | 52 | 53 | Score 54 | Skor 55 | 56 | 57 | High Scores 58 | 59 | 60 | 61 | Rank 62 | 63 | 64 | 65 | Name 66 | 67 | 68 | 69 | #%1 70 | 71 | 72 | 73 | Congratulations! 74 | 75 | 76 | 77 | You beat your top score! 78 | 79 | 80 | 81 | Well done! 82 | 83 | 84 | 85 | You have a new high score! 86 | 87 | 88 | 89 | 90 | Window 91 | 92 | Gottet 93 | Gottet 94 | 95 | 96 | Click to start a new game. 97 | Yeni bir oyun başlatmak için tıklayın. 98 | 99 | 100 | &Game 101 | &Oyun 102 | 103 | 104 | &New 105 | &Yeni 106 | 107 | 108 | &Pause 109 | &Duraklat 110 | 111 | 112 | P 113 | P 114 | 115 | 116 | &Scores 117 | &Skorlar 118 | 119 | 120 | &Quit 121 | &Çık 122 | 123 | 124 | &Settings 125 | &Ayarlar 126 | 127 | 128 | Application &Language... 129 | Uydulama &Dili... 130 | 131 | 132 | &Help 133 | &Yardım 134 | 135 | 136 | &About 137 | &Hakkında 138 | 139 | 140 | About &Qt 141 | &Qt Hakkında 142 | 143 | 144 | Next Piece 145 | Sonraki Parça 146 | 147 | 148 | Level 149 | Seviye 150 | 151 | 152 | Removed Lines 153 | Yok Edilen Çizgiler 154 | 155 | 156 | Score 157 | Skor 158 | 159 | 160 | About 161 | Hakkında 162 | 163 | 164 | Copyright &copy; 2008-%1 Graeme Gott. 165 | Telif hakları saklıdır &copy; 2008-%1 Graeme Gott 166 | 167 | 168 | Released under the <a href=%1>GPL 3</a> license 169 | <a href=%1>GPL 3</a> lisansı altında yayınlanmıştır 170 | 171 | 172 | Ctrl+H 173 | 174 | 175 | 176 | A simple falling blocks game 177 | 178 | 179 | 180 | 181 | -------------------------------------------------------------------------------- /translations/gottet_vi.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Board 6 | 7 | Question 8 | Câu hỏi 9 | 10 | 11 | End the current game? 12 | Kết thúc màn chơi hiện tại? 13 | 14 | 15 | <big><b>Paused</b></big><br>Click to resume playing. 16 | <big><b>Tạm dừng</b></big><br>Click để chơi tiếp. 17 | 18 | 19 | <big><b>Game Over!</b></big><br>Click to start a new game. 20 | <big><b>Chết queo rồi !</b></big><br>Click để bắt đầu màn chơi mới. 21 | 22 | 23 | 24 | LocaleDialog 25 | 26 | Select application language: 27 | Chọn ngôn ngữ hiển thị: 28 | 29 | 30 | <System Language> 31 | <Ngôn ngữ theo hệ thống> 32 | 33 | 34 | Note 35 | Ghi chú 36 | 37 | 38 | Please restart this application for the change in language to take effect. 39 | Xin vui lòng khởi động lại ứng dụng này để thao tác thay đổi ngôn ngữ có hiệu lực. 40 | 41 | 42 | 43 | ScoresDialog 44 | 45 | Level 46 | Cấp độ 47 | 48 | 49 | Lines 50 | Dòng 51 | 52 | 53 | Score 54 | Điểm 55 | 56 | 57 | High Scores 58 | 59 | 60 | 61 | Rank 62 | 63 | 64 | 65 | Name 66 | 67 | 68 | 69 | #%1 70 | 71 | 72 | 73 | Congratulations! 74 | 75 | 76 | 77 | You beat your top score! 78 | 79 | 80 | 81 | Well done! 82 | 83 | 84 | 85 | You have a new high score! 86 | 87 | 88 | 89 | 90 | Window 91 | 92 | Gottet 93 | Gottet 94 | 95 | 96 | Click to start a new game. 97 | Click để bắt đầu màn chơi mới. 98 | 99 | 100 | &Game 101 | &Màn chơi 102 | 103 | 104 | &New 105 | &Tạo mới 106 | 107 | 108 | &Pause 109 | &Tạm dừng 110 | 111 | 112 | P 113 | P 114 | 115 | 116 | &Scores 117 | &Điểm số 118 | 119 | 120 | &Quit 121 | &Thoát 122 | 123 | 124 | &Settings 125 | &Thiết lập 126 | 127 | 128 | Application &Language... 129 | Ngôn ngữ &hiển thị.. 130 | 131 | 132 | &Help 133 | &Trợ giúp 134 | 135 | 136 | &About 137 | &Dịch bởi Vietnamesel10n 138 | 139 | 140 | About &Qt 141 | Thông tin về &Qt 142 | 143 | 144 | Next Piece 145 | Miếng tiếp theo 146 | 147 | 148 | Level 149 | Cấp độ 150 | 151 | 152 | Removed Lines 153 | Các dòng đã gỡ bỏ 154 | 155 | 156 | Score 157 | Điểm 158 | 159 | 160 | About 161 | Thông tin 162 | 163 | 164 | Copyright &copy; 2008-%1 Graeme Gott. 165 | Copyright &copy; 2008-%1 Graeme Gott. 166 | 167 | 168 | Released under the <a href=%1>GPL 3</a> license 169 | Phát hành dựa theo giấy phép <a href=%1>GPL 3</a> 170 | 171 | 172 | Ctrl+H 173 | 174 | 175 | 176 | A simple falling blocks game 177 | 178 | 179 | 180 | 181 | -------------------------------------------------------------------------------- /translations/gottet_ca.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Board 6 | 7 | Question 8 | Pregunta 9 | 10 | 11 | End the current game? 12 | Voleu finalitzar la partida actual? 13 | 14 | 15 | <big><b>Paused</b></big><br>Click to resume playing. 16 | <big><b>En pausa</b></big><br>Feu clic per continuar la partida.. 17 | 18 | 19 | <big><b>Game Over!</b></big><br>Click to start a new game. 20 | <big><b>Partida finalitzada</b></big><br>Feu clic per començar una partida nova. 21 | 22 | 23 | 24 | LocaleDialog 25 | 26 | Select application language: 27 | Seleccioneu l’idioma de l’aplicació: 28 | 29 | 30 | <System Language> 31 | <Idioma del sistema> 32 | 33 | 34 | Note 35 | Nota 36 | 37 | 38 | Please restart this application for the change in language to take effect. 39 | Reinicieu l‘aplicació perquè el canvi d’idioma tingui efecte. 40 | 41 | 42 | 43 | ScoresDialog 44 | 45 | Level 46 | Nivell 47 | 48 | 49 | Lines 50 | Línies 51 | 52 | 53 | Score 54 | Puntuació 55 | 56 | 57 | High Scores 58 | 59 | 60 | 61 | Rank 62 | 63 | 64 | 65 | Name 66 | 67 | 68 | 69 | #%1 70 | 71 | 72 | 73 | Congratulations! 74 | 75 | 76 | 77 | You beat your top score! 78 | 79 | 80 | 81 | Well done! 82 | 83 | 84 | 85 | You have a new high score! 86 | 87 | 88 | 89 | 90 | Window 91 | 92 | Gottet 93 | Gottet 94 | 95 | 96 | Click to start a new game. 97 | Feu clic per començar una partida nova. 98 | 99 | 100 | &Game 101 | &Partida 102 | 103 | 104 | &New 105 | &Nova 106 | 107 | 108 | &Pause 109 | &Pausa 110 | 111 | 112 | P 113 | P 114 | 115 | 116 | &Scores 117 | P&untuacions 118 | 119 | 120 | &Quit 121 | &Surt 122 | 123 | 124 | &Settings 125 | &Configuració 126 | 127 | 128 | Application &Language... 129 | Idioma de l’aplicació… 130 | 131 | 132 | &Help 133 | &Ajuda 134 | 135 | 136 | &About 137 | &Quant a 138 | 139 | 140 | About &Qt 141 | Q&uant al Qt 142 | 143 | 144 | Next Piece 145 | Peça següent 146 | 147 | 148 | Level 149 | Nivell 150 | 151 | 152 | Removed Lines 153 | Línies eliminades 154 | 155 | 156 | Score 157 | Puntuació 158 | 159 | 160 | About 161 | Quant a 162 | 163 | 164 | Copyright &copy; 2008-%1 Graeme Gott. 165 | Copyright &copy; 2008-%1 Graeme Gott. 166 | 167 | 168 | Released under the <a href=%1>GPL 3</a> license 169 | Publicat sota la llicència <a href=%1>GPL 3</a> 170 | 171 | 172 | Ctrl+H 173 | 174 | 175 | 176 | A simple falling blocks game 177 | 178 | 179 | 180 | 181 | -------------------------------------------------------------------------------- /translations/gottet_es.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Board 6 | 7 | Question 8 | Pregunta 9 | 10 | 11 | End the current game? 12 | ¿Quiere finalizar el juego actual? 13 | 14 | 15 | <big><b>Paused</b></big><br>Click to resume playing. 16 | <big><b>En pausa</b></big><br>Pulse para continuar la partida. 17 | 18 | 19 | <big><b>Game Over!</b></big><br>Click to start a new game. 20 | <big><b>Partida terminada</b></big><br>Pulse para comenzar una partida nueva. 21 | 22 | 23 | 24 | LocaleDialog 25 | 26 | Select application language: 27 | Seleccione el idioma de la aplicación: 28 | 29 | 30 | <System Language> 31 | <Idioma del sistema> 32 | 33 | 34 | Note 35 | Nota 36 | 37 | 38 | Please restart this application for the change in language to take effect. 39 | Reinicie esta aplicación para que el cambio de idioma surta efecto. 40 | 41 | 42 | 43 | ScoresDialog 44 | 45 | Level 46 | Nivel 47 | 48 | 49 | Lines 50 | Líneas 51 | 52 | 53 | Score 54 | Puntuación 55 | 56 | 57 | High Scores 58 | 59 | 60 | 61 | Rank 62 | 63 | 64 | 65 | Name 66 | 67 | 68 | 69 | #%1 70 | 71 | 72 | 73 | Congratulations! 74 | 75 | 76 | 77 | You beat your top score! 78 | 79 | 80 | 81 | Well done! 82 | 83 | 84 | 85 | You have a new high score! 86 | 87 | 88 | 89 | 90 | Window 91 | 92 | Gottet 93 | Gottet 94 | 95 | 96 | Click to start a new game. 97 | Pulse para iniciar una partida nueva. 98 | 99 | 100 | &Game 101 | &Partida 102 | 103 | 104 | &New 105 | &Nueva 106 | 107 | 108 | &Pause 109 | &Pausar 110 | 111 | 112 | P 113 | P 114 | 115 | 116 | &Scores 117 | P&untuaciones 118 | 119 | 120 | &Quit 121 | &Salir 122 | 123 | 124 | &Settings 125 | &Configuración 126 | 127 | 128 | Application &Language... 129 | &Idioma de la aplicación… 130 | 131 | 132 | &Help 133 | &Ayuda 134 | 135 | 136 | &About 137 | &Acerca de 138 | 139 | 140 | About &Qt 141 | Acerca de &Qt 142 | 143 | 144 | Next Piece 145 | Pieza siguiente 146 | 147 | 148 | Level 149 | Nivel 150 | 151 | 152 | Removed Lines 153 | Líneas eliminadas 154 | 155 | 156 | Score 157 | Puntuación 158 | 159 | 160 | About 161 | Acerca de 162 | 163 | 164 | Copyright &copy; 2008-%1 Graeme Gott. 165 | Copyright &copy; 2008-%1 Graeme Gott. 166 | 167 | 168 | Released under the <a href=%1>GPL 3</a> license 169 | Publicado bajo la licencia <a href=%1>GPL 3</a> 170 | 171 | 172 | Ctrl+H 173 | 174 | 175 | 176 | A simple falling blocks game 177 | 178 | 179 | 180 | 181 | -------------------------------------------------------------------------------- /translations/gottet_fr.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Board 6 | 7 | Question 8 | Question 9 | 10 | 11 | End the current game? 12 | Terminer la partie en cours ? 13 | 14 | 15 | <big><b>Paused</b></big><br>Click to resume playing. 16 | <big><b>En pause</b></big><br>Cliquez pour continuer la partie. 17 | 18 | 19 | <big><b>Game Over!</b></big><br>Click to start a new game. 20 | <big><b>Partie terminée !</b></big><br>Cliquez pour commencer une nouvelle partie. 21 | 22 | 23 | 24 | LocaleDialog 25 | 26 | Select application language: 27 | Sélectionner la langue de l'application : 28 | 29 | 30 | <System Language> 31 | <Langue du système> 32 | 33 | 34 | Note 35 | Remarque 36 | 37 | 38 | Please restart this application for the change in language to take effect. 39 | Veuillez relancer l'application pour que la modification prenne effet. 40 | 41 | 42 | 43 | ScoresDialog 44 | 45 | Level 46 | Niveau 47 | 48 | 49 | Lines 50 | Lignes 51 | 52 | 53 | Score 54 | Score 55 | 56 | 57 | High Scores 58 | 59 | 60 | 61 | Rank 62 | 63 | 64 | 65 | Name 66 | 67 | 68 | 69 | #%1 70 | 71 | 72 | 73 | Congratulations! 74 | 75 | 76 | 77 | You beat your top score! 78 | 79 | 80 | 81 | Well done! 82 | 83 | 84 | 85 | You have a new high score! 86 | 87 | 88 | 89 | 90 | Window 91 | 92 | Gottet 93 | Gottet 94 | 95 | 96 | Click to start a new game. 97 | Cliquez pour commencer une nouvelle partie. 98 | 99 | 100 | &Game 101 | &Jeu 102 | 103 | 104 | &New 105 | &Nouveau 106 | 107 | 108 | &Pause 109 | &Pause 110 | 111 | 112 | P 113 | P 114 | 115 | 116 | &Scores 117 | &Scores 118 | 119 | 120 | &Quit 121 | &Quitter 122 | 123 | 124 | &Settings 125 | &Paramètres 126 | 127 | 128 | Application &Language... 129 | &Langue de l'application… 130 | 131 | 132 | &Help 133 | &Aide 134 | 135 | 136 | &About 137 | À &propos de… 138 | 139 | 140 | About &Qt 141 | À propos de &Qt 142 | 143 | 144 | Next Piece 145 | Pièce suivante 146 | 147 | 148 | Level 149 | Niveau 150 | 151 | 152 | Removed Lines 153 | Lignes supprimées 154 | 155 | 156 | Score 157 | Score 158 | 159 | 160 | About 161 | À propos de… 162 | 163 | 164 | Copyright &copy; 2008-%1 Graeme Gott. 165 | Copyright &copy; 2008-%1 Graeme Gott. 166 | 167 | 168 | Released under the <a href=%1>GPL 3</a> license 169 | Distribué sous licence GNU <a href=%1>GPL 3</a> 170 | 171 | 172 | Ctrl+H 173 | 174 | 175 | 176 | A simple falling blocks game 177 | 178 | 179 | 180 | 181 | --------------------------------------------------------------------------------