1
0
mirror of https://github.com/tobspr/shapez.io.git synced 2026-02-12 02:49:20 +00:00
This commit is contained in:
Pascal Grossé 2020-06-13 14:25:43 +02:00
commit 1d3eb85283
99 changed files with 8780 additions and 2820 deletions

3
.gitignore vendored
View File

@ -112,3 +112,6 @@ tmp_standalone_files
# Github Actions files # Github Actions files
.github/workflows .github/workflows
# Local config
config.local.js

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:7697c34997a719bed9ddf9c16c19c672a0fdf9641edf0a9761aea9c2c7e17c6b oid sha256:6463b33b2cae50d1ecb11f0a845f06633aff331a5c2c0998d9eb93e40ad576b1
size 632609 size 636254

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:87ff03f1c77d8c245e4e2fe716b6243aecca174425ae24cfd19ffb5bd1df52f6 oid sha256:95a342ce958586280b9ebc69a41d5cc950915b787de83ddaf101dbb852bdaf86
size 1191627 size 1179560

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:e9341c471a5807f58c0277b1ae220499d85871ff62c653866074bce12ef1f0d7 oid sha256:47b6aca7fe07f4628b041f32ce813a840793cfdce8ffa27c7ff4562858ac05f9
size 201007 size 194245

View File

@ -107,9 +107,14 @@ gulp.task("utils.cleanup", $.sequence("utils.cleanBuildFolder", "utils.cleanBuil
// Requires no uncomitted files // Requires no uncomitted files
gulp.task("utils.requireCleanWorkingTree", cb => { gulp.task("utils.requireCleanWorkingTree", cb => {
const output = $.trim(execSync("git status -su").toString("ascii")); let output = $.trim(execSync("git status -su").toString("ascii")).replace(/\r/gi, "").split("\n");
// Filter files which are OK to be untracked
output = output.filter(x => x.indexOf(".local.js") < 0);
if (output.length > 0) { if (output.length > 0) {
console.error("\n\nYou have unstaged changes, please commit everything first!"); console.error("\n\nYou have unstaged changes, please commit everything first!");
console.error("Unstaged files:");
console.error(output.join("\n"));
process.exit(1); process.exit(1);
} }
cb(); cb();

View File

@ -40,6 +40,8 @@ module.exports = ({
G_ALL_UI_IMAGES: JSON.stringify(utils.getAllResourceImages()), G_ALL_UI_IMAGES: JSON.stringify(utils.getAllResourceImages()),
}; };
const minifyNames = environment === "prod";
return { return {
mode: "production", mode: "production",
entry: { entry: {
@ -91,15 +93,15 @@ module.exports = ({
parse: {}, parse: {},
module: true, module: true,
toplevel: true, toplevel: true,
keep_classnames: false, keep_classnames: !minifyNames,
keep_fnames: false, keep_fnames: !minifyNames,
keep_fargs: false, keep_fargs: !minifyNames,
safari10: true, safari10: true,
compress: { compress: {
arguments: false, // breaks arguments: false, // breaks
drop_console: false, drop_console: false,
global_defs: globalDefs, global_defs: globalDefs,
keep_fargs: false, keep_fargs: !minifyNames,
keep_infinity: true, keep_infinity: true,
passes: 2, passes: 2,
module: true, module: true,
@ -141,8 +143,8 @@ module.exports = ({
}, },
mangle: { mangle: {
eval: true, eval: true,
keep_classnames: false, keep_classnames: !minifyNames,
keep_fnames: false, keep_fnames: !minifyNames,
module: true, module: true,
toplevel: true, toplevel: true,
safari10: true, safari10: true,
@ -154,7 +156,7 @@ module.exports = ({
braces: false, braces: false,
ecma: es6 ? 6 : 5, ecma: es6 ? 6 : 5,
preamble: preamble:
"/* Shapez.io Codebase - Copyright 2020 Tobias Springer - " + "/* shapez.io Codebase - Copyright 2020 Tobias Springer - " +
utils.getVersion() + utils.getVersion() +
" @ " + " @ " +
utils.getRevision() + utils.getRevision() +

View File

@ -17,7 +17,8 @@
"publishOnSteam": "cd gulp/steampipe && ./upload.bat", "publishOnSteam": "cd gulp/steampipe && ./upload.bat",
"publishStandalone": "yarn publishOnItch && yarn publishOnSteam", "publishStandalone": "yarn publishOnItch && yarn publishOnSteam",
"publishWeb": "cd gulp && yarn main.deploy.prod", "publishWeb": "cd gulp && yarn main.deploy.prod",
"publish": "yarn publishStandalone && yarn publishWeb" "publish": "yarn publishStandalone && yarn publishWeb",
"syncTranslations": "node sync-translations.js"
}, },
"dependencies": { "dependencies": {
"@babel/core": "^7.5.4", "@babel/core": "^7.5.4",
@ -45,6 +46,7 @@
"logrocket": "^1.0.7", "logrocket": "^1.0.7",
"lz-string": "^1.4.4", "lz-string": "^1.4.4",
"markdown-loader": "^4.0.0", "markdown-loader": "^4.0.0",
"match-all": "^1.2.5",
"obfuscator-loader": "^1.1.2", "obfuscator-loader": "^1.1.2",
"phonegap-plugin-mobile-accessibility": "^1.0.5", "phonegap-plugin-mobile-accessibility": "^1.0.5",
"promise-polyfill": "^8.1.0", "promise-polyfill": "^8.1.0",
@ -65,7 +67,9 @@
"webpack-plugin-replace": "^1.1.1", "webpack-plugin-replace": "^1.1.1",
"webpack-strip-block": "^0.2.0", "webpack-strip-block": "^0.2.0",
"whatwg-fetch": "^3.0.0", "whatwg-fetch": "^3.0.0",
"worker-loader": "^2.0.0" "worker-loader": "^2.0.0",
"yaml": "^1.10.0",
"yawn-yaml": "^1.5.0"
}, },
"devDependencies": { "devDependencies": {
"@typescript-eslint/eslint-plugin": "^3.2.0", "@typescript-eslint/eslint-plugin": "^3.2.0",

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

99
res/ui/languages/kor.svg Normal file
View File

@ -0,0 +1,99 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<path style="fill:#F5F5F5;" d="M400,0H112C50.144,0,0,50.144,0,112v288c0,61.856,50.144,112,112,112h288
c61.856,0,112-50.144,112-112V112C512,50.144,461.856,0,400,0z"/>
<path style="fill:#FF4B55;" d="M305.008,182.532c-40.562-27.042-95.35-15.985-122.374,24.507
c-13.555,20.211-8.046,47.674,12.235,61.195c20.265,13.521,47.64,8.03,61.161-12.252c13.521-20.281,40.914-25.704,61.179-12.253
c20.297,13.521,25.756,40.984,12.217,61.195C356.468,264.362,345.537,209.574,305.008,182.532"/>
<path style="fill:#41479B;" d="M182.634,207.039c-13.555,20.211-8.046,47.674,12.235,61.195c20.265,13.521,47.64,8.03,61.161-12.252
c13.521-20.281,40.914-25.704,61.179-12.253c20.297,13.521,25.756,40.984,12.217,61.195
c-27.005,40.633-81.776,51.548-122.338,24.507C166.561,302.39,155.593,247.602,182.634,207.039"/>
<g>
<path style="fill:#464655;" d="M349.921,149.189l16.035,24.101c1.347,2.025,0.802,4.759-1.219,6.112l-4.066,2.723
c-2.029,1.359-4.775,0.812-6.129-1.22l-16.055-24.096c-1.351-2.027-0.804-4.766,1.222-6.118l4.086-2.728
C345.825,146.608,348.569,147.158,349.921,149.189z"/>
<path style="fill:#464655;" d="M374.66,186.351l16.087,24.087c1.358,2.034,0.804,4.785-1.237,6.134l-4.083,2.699
c-2.026,1.339-4.754,0.789-6.103-1.23l-16.078-24.061c-1.354-2.027-0.81-4.767,1.217-6.122l4.074-2.724
C370.564,183.778,373.306,184.323,374.66,186.351z"/>
<path style="fill:#464655;" d="M367.088,137.733l40.829,61.274c1.352,2.028,0.803,4.768-1.225,6.12l-4.102,2.735
c-2.028,1.352-4.769,0.804-6.121-1.224l-40.843-61.269c-1.353-2.029-0.803-4.771,1.227-6.122l4.115-2.739
C362.998,135.156,365.737,135.705,367.088,137.733z"/>
<path style="fill:#464655;" d="M384.211,126.291l16.07,24.149c1.353,2.034,0.797,4.78-1.241,6.128l-4.087,2.701
c-2.028,1.34-4.757,0.789-6.106-1.234l-16.082-24.117c-1.353-2.028-0.805-4.769,1.224-6.121l4.099-2.732
C380.117,123.711,382.859,124.261,384.211,126.291z"/>
<path style="fill:#464655;" d="M408.967,163.531l16.046,24.099c1.349,2.026,0.803,4.762-1.221,6.115l-4.075,2.725
c-2.029,1.357-4.774,0.809-6.127-1.223l-16.046-24.099c-1.349-2.026-0.803-4.762,1.221-6.115l4.075-2.725
C404.869,160.951,407.614,161.499,408.967,163.531z"/>
<path style="fill:#464655;" d="M132.72,293.982l40.824,61.208c1.352,2.027,0.806,4.767-1.221,6.12l-4.089,2.73
c-2.028,1.354-4.77,0.807-6.123-1.222l-40.824-61.208c-1.352-2.027-0.805-4.767,1.221-6.12l4.089-2.73
C128.626,291.406,131.367,291.954,132.72,293.982z"/>
<path style="fill:#464655;" d="M115.582,305.431l16.027,24.041c1.35,2.026,0.806,4.762-1.217,6.116l-4.066,2.722
c-2.027,1.357-4.771,0.812-6.126-1.217l-16.048-24.035c-1.354-2.027-0.807-4.768,1.22-6.122l4.086-2.728
C111.487,302.854,114.229,303.402,115.582,305.431z"/>
<path style="fill:#464655;" d="M140.351,342.605l16.047,24.101c1.349,2.026,0.803,4.763-1.221,6.115l-4.078,2.726
c-2.029,1.356-4.773,0.809-6.126-1.222l-16.057-24.097c-1.351-2.027-0.804-4.765,1.222-6.118l4.088-2.73
C136.255,340.026,138.999,340.574,140.351,342.605z"/>
<path style="fill:#464655;" d="M98.442,316.876l40.798,61.211c1.351,2.026,0.805,4.764-1.22,6.117l-4.077,2.725
c-2.028,1.356-4.771,0.809-6.125-1.22l-40.822-61.203c-1.353-2.028-0.805-4.769,1.224-6.122l4.101-2.734
C94.349,314.3,97.09,314.848,98.442,316.876z"/>
<path style="fill:#464655;" d="M121.295,210.441l40.818-61.257c1.353-2.03,4.095-2.578,6.124-1.223l4.087,2.729
c2.027,1.353,2.573,4.093,1.221,6.12l-40.834,61.222c-1.349,2.023-4.08,2.574-6.108,1.232l-4.071-2.694
C120.494,215.221,119.94,212.475,121.295,210.441z"/>
<path style="fill:#464655;" d="M104.147,199.009l40.826-61.269c1.353-2.031,4.097-2.578,6.126-1.222l4.077,2.725
c2.024,1.353,2.57,4.09,1.22,6.116l-40.815,61.273c-1.352,2.03-4.095,2.579-6.124,1.224l-4.088-2.729
C103.343,203.775,102.796,201.036,104.147,199.009z"/>
<path style="fill:#464655;" d="M86.991,187.625l40.829-61.33c1.353-2.032,4.098-2.58,6.127-1.223l4.077,2.726
c2.023,1.353,2.57,4.088,1.222,6.114L98.441,195.25c-1.351,2.031-4.093,2.581-6.123,1.228l-4.101-2.734
C86.189,192.392,85.64,189.653,86.991,187.625z"/>
<path style="fill:#464655;" d="M338.492,355.189l16.048-24.035c1.355-2.029,4.099-2.574,6.127-1.217l4.066,2.723
c2.023,1.354,2.567,4.091,1.217,6.116l-16.028,24.04c-1.353,2.029-4.095,2.577-6.123,1.223l-4.086-2.728
C337.685,359.957,337.138,357.217,338.492,355.189z"/>
<path style="fill:#464655;" d="M363.243,318.14l16.073-24.154c1.351-2.031,4.093-2.58,6.123-1.227l4.096,2.73
c2.03,1.353,2.577,4.096,1.222,6.124l-16.107,24.116c-1.35,2.022-4.082,2.571-6.109,1.228l-4.062-2.692
C362.445,322.916,361.891,320.172,363.243,318.14z"/>
<path style="fill:#464655;" d="M355.626,366.698l16.058-24.098c1.352-2.029,4.093-2.578,6.122-1.225l4.104,2.737
c2.027,1.352,2.576,4.09,1.225,6.118l-16.047,24.101c-1.351,2.029-4.091,2.579-6.12,1.228l-4.115-2.739
C354.824,371.469,354.274,368.728,355.626,366.698z"/>
<path style="fill:#464655;" d="M380.402,329.464l16.066-24.042c1.353-2.025,4.092-2.571,6.118-1.22l4.101,2.734
c2.03,1.353,2.577,4.096,1.221,6.125l-16.065,24.042c-1.353,2.025-4.091,2.571-6.118,1.22l-4.102-2.735
C379.594,334.235,379.047,331.492,380.402,329.464z"/>
<path style="fill:#464655;" d="M372.771,378.081l16.075-24.056c1.349-2.02,4.077-2.569,6.103-1.23l4.087,2.701
c2.04,1.348,2.595,4.097,1.239,6.131l-16.063,24.088c-1.352,2.028-4.092,2.576-6.121,1.224l-4.099-2.732
C371.963,382.853,371.416,380.109,372.771,378.081z"/>
<path style="fill:#464655;" d="M397.553,340.969l16.036-24.085c1.353-2.032,4.098-2.58,6.127-1.223l4.072,2.722
c2.025,1.354,2.57,4.093,1.218,6.119l-16.048,24.053c-1.35,2.023-4.083,2.573-6.11,1.229l-4.059-2.691
C396.754,345.746,396.201,343.001,397.553,340.969z"/>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

@ -607,6 +607,6 @@
"format": "RGBA8888", "format": "RGBA8888",
"size": {"w":407,"h":128}, "size": {"w":407,"h":128},
"scale": "0.1", "scale": "0.1",
"smartupdate": "$TexturePacker:SmartUpdate:feeaacb789d7182e6aef553861c19982:774c2c10210542582abaa8efc495510d:f159918d23e5952766c6d23ab52278c6$" "smartupdate": "$TexturePacker:SmartUpdate:3dd7a89f30024dd4787ad4af6b14588a:9ba11f8b02134c4376ab4e0a44f8b850:f159918d23e5952766c6d23ab52278c6$"
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 50 KiB

View File

@ -607,6 +607,6 @@
"format": "RGBA8888", "format": "RGBA8888",
"size": {"w":1997,"h":1801}, "size": {"w":1997,"h":1801},
"scale": "1", "scale": "1",
"smartupdate": "$TexturePacker:SmartUpdate:feeaacb789d7182e6aef553861c19982:774c2c10210542582abaa8efc495510d:f159918d23e5952766c6d23ab52278c6$" "smartupdate": "$TexturePacker:SmartUpdate:3dd7a89f30024dd4787ad4af6b14588a:9ba11f8b02134c4376ab4e0a44f8b850:f159918d23e5952766c6d23ab52278c6$"
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 752 KiB

After

Width:  |  Height:  |  Size: 743 KiB

View File

@ -607,6 +607,6 @@
"format": "RGBA8888", "format": "RGBA8888",
"size": {"w":510,"h":512}, "size": {"w":510,"h":512},
"scale": "0.25", "scale": "0.25",
"smartupdate": "$TexturePacker:SmartUpdate:feeaacb789d7182e6aef553861c19982:774c2c10210542582abaa8efc495510d:f159918d23e5952766c6d23ab52278c6$" "smartupdate": "$TexturePacker:SmartUpdate:3dd7a89f30024dd4787ad4af6b14588a:9ba11f8b02134c4376ab4e0a44f8b850:f159918d23e5952766c6d23ab52278c6$"
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 163 KiB

After

Width:  |  Height:  |  Size: 160 KiB

View File

@ -607,6 +607,6 @@
"format": "RGBA8888", "format": "RGBA8888",
"size": {"w":475,"h":1968}, "size": {"w":475,"h":1968},
"scale": "0.5", "scale": "0.5",
"smartupdate": "$TexturePacker:SmartUpdate:feeaacb789d7182e6aef553861c19982:774c2c10210542582abaa8efc495510d:f159918d23e5952766c6d23ab52278c6$" "smartupdate": "$TexturePacker:SmartUpdate:3dd7a89f30024dd4787ad4af6b14588a:9ba11f8b02134c4376ab4e0a44f8b850:f159918d23e5952766c6d23ab52278c6$"
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 380 KiB

After

Width:  |  Height:  |  Size: 374 KiB

View File

@ -607,6 +607,6 @@
"format": "RGBA8888", "format": "RGBA8888",
"size": {"w":2016,"h":1024}, "size": {"w":2016,"h":1024},
"scale": "0.75", "scale": "0.75",
"smartupdate": "$TexturePacker:SmartUpdate:feeaacb789d7182e6aef553861c19982:774c2c10210542582abaa8efc495510d:f159918d23e5952766c6d23ab52278c6$" "smartupdate": "$TexturePacker:SmartUpdate:3dd7a89f30024dd4787ad4af6b14588a:9ba11f8b02134c4376ab4e0a44f8b850:f159918d23e5952766c6d23ab52278c6$"
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 746 KiB

After

Width:  |  Height:  |  Size: 735 KiB

View File

@ -4,7 +4,7 @@
<key>fileFormatVersion</key> <key>fileFormatVersion</key>
<int>4</int> <int>4</int>
<key>texturePackerVersion</key> <key>texturePackerVersion</key>
<string>5.3.0</string> <string>5.4.0</string>
<key>autoSDSettings</key> <key>autoSDSettings</key>
<array> <array>
<struct type="AutoSDSettings"> <struct type="AutoSDSettings">
@ -445,6 +445,7 @@
<key type="filename">sprites/map_overview/belt_forward.png</key> <key type="filename">sprites/map_overview/belt_forward.png</key>
<key type="filename">sprites/map_overview/belt_left.png</key> <key type="filename">sprites/map_overview/belt_left.png</key>
<key type="filename">sprites/map_overview/belt_right.png</key> <key type="filename">sprites/map_overview/belt_right.png</key>
<key type="filename">sprites/misc/waypoint.png</key>
<struct type="IndividualSpriteSettings"> <struct type="IndividualSpriteSettings">
<key>pivotPoint</key> <key>pivotPoint</key>
<point_f>0.5,0.5</point_f> <point_f>0.5,0.5</point_f>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -1,5 +1,5 @@
# Requirements: numpy, scipy, Pillow, # Requirements: numpy, scipy, Pillow,
from __future__ import print_function
import sys import sys
import numpy as np import numpy as np
from scipy import ndimage from scipy import ndimage
@ -59,7 +59,7 @@ def save_image(data, outfilename, src_image):
def roberts_cross(infilename, outfilename): def roberts_cross(infilename, outfilename):
print "Processing", infilename print("Processing", infilename)
img = Image.open(infilename) img = Image.open(infilename)
img.load() img.load()
img = img.filter(ImageFilter.GaussianBlur(0.5)) img = img.filter(ImageFilter.GaussianBlur(0.5))
@ -72,7 +72,7 @@ def roberts_cross(infilename, outfilename):
def generateUiPreview(srcPath, buildingId): def generateUiPreview(srcPath, buildingId):
print srcPath, buildingId print(srcPath, buildingId)
img = Image.open(srcPath) img = Image.open(srcPath)
img.load() img.load()
img.thumbnail((110, 110), Image.ANTIALIAS) img.thumbnail((110, 110), Image.ANTIALIAS)

View File

@ -23,7 +23,7 @@ $icons: notification_saved, notification_success, notification_upgrade;
} }
$languages: en, de, cs, da, et, es-419, fr, it, pt-BR, sv, tr, el, ru, uk, zh-TW, nb, mt-MT, ar, nl, vi, th, $languages: en, de, cs, da, et, es-419, fr, it, pt-BR, sv, tr, el, ru, uk, zh-TW, nb, mt-MT, ar, nl, vi, th,
hu, pl, ja; hu, pl, ja, kor;
@each $language in $languages { @each $language in $languages {
[data-languageicon="#{$language}"] { [data-languageicon="#{$language}"] {

View File

@ -118,6 +118,10 @@
pointer-events: all; pointer-events: all;
@include S(width, 350px); @include S(width, 350px);
@include DarkThemeOverride {
color: #aaa;
}
strong { strong {
font-weight: bold; font-weight: bold;
} }

View File

@ -58,11 +58,20 @@
} }
} }
&:not(.placementActive) .binding.placementOnly { &:not(.placementActive) .binding.placementOnly,
&.mapOverviewActive .binding.placementOnly {
display: none; display: none;
} }
&.placementActive .noPlacementOnly { &.placementActive:not(.mapOverviewActive) .noPlacementOnly {
display: none;
}
&:not(.mapOverviewActive) .binding.overviewOnly {
display: none;
}
&.mapOverviewActive .noOverviewOnly {
display: none; display: none;
} }

View File

@ -74,25 +74,44 @@
&.goal, &.goal,
&.blueprint { &.blueprint {
.amountLabel { .amountLabel::after {
&::after { content: " ";
content: " "; position: absolute;
position: absolute; display: inline-block;
display: inline-block; @include S(width, 8px);
@include S(width, 8px); @include S(height, 8px);
@include S(height, 8px); @include S(top, 4px);
@include S(top, 4px); @include S(left, -7px);
@include S(left, -7px); background: center center / contain no-repeat;
background: uiResource("icons/current_goal_marker.png") center center / contain no-repeat; }
@include DarkThemeInvert; &.goal .amountLabel {
&::after {
background-image: uiResource("icons/current_goal_marker.png");
background-size: 90%;
}
@include DarkThemeOverride {
&::after {
background-image: uiResource("icons/current_goal_marker_inverted.png") !important;
}
} }
} }
&.blueprint .amountLabel::after { &.blueprint .amountLabel {
background-image: uiResource("icons/blueprint_marker.png"); &::after {
background-size: 90%; background-image: uiResource("icons/blueprint_marker.png");
background-size: 90%;
}
@include DarkThemeOverride {
&::after {
background-image: uiResource("icons/blueprint_marker_inverted.png") !important;
}
}
} }
} }
&.completed {
opacity: 0.5;
}
} }
} }

View File

@ -46,7 +46,7 @@
color: #fff; color: #fff;
text-align: center; text-align: center;
font-weight: bold; font-weight: bold;
@include S(width, 50px); @include S(min-width, 50px);
@include S(padding, 0px, 5px); @include S(padding, 0px, 5px);
&[data-tier="0"] { &[data-tier="0"] {

View File

@ -29,7 +29,7 @@
display: flex; display: flex;
align-items: center; align-items: center;
flex-direction: column; flex-direction: column;
max-height: 90vh; max-height: 100vh;
color: #fff; color: #fff;
text-align: center; text-align: center;
@ -55,7 +55,7 @@
.subTitle { .subTitle {
@include PlainText; @include PlainText;
display: inline-block; display: inline-block;
@include S(margin, 0px, 0, 20px); @include S(margin, 5px, 0, 20px);
color: $colorGreenBright; color: $colorGreenBright;
@include S(border-radius, $globalBorderRadius); @include S(border-radius, $globalBorderRadius);

View File

@ -79,7 +79,11 @@
@include S(grid-column-gap, 10px); @include S(grid-column-gap, 10px);
display: grid; display: grid;
grid-template-columns: 1fr 1fr; grid-template-columns: 1fr;
&.demo {
grid-template-columns: 1fr 1fr;
}
.standaloneBanner { .standaloneBanner {
background: rgb(255, 234, 245); background: rgb(255, 234, 245);

View File

@ -39,6 +39,10 @@
a { a {
color: $colorBlueBright; color: $colorBlueBright;
} }
li {
@include SuperSmallText;
@include S(margin-bottom, 10px);
}
} }
} }

View File

@ -14,13 +14,10 @@ import { Vector } from "./core/vector";
import { AdProviderInterface } from "./platform/ad_provider"; import { AdProviderInterface } from "./platform/ad_provider";
import { NoAdProvider } from "./platform/ad_providers/no_ad_provider"; import { NoAdProvider } from "./platform/ad_providers/no_ad_provider";
import { AnalyticsInterface } from "./platform/analytics"; import { AnalyticsInterface } from "./platform/analytics";
import { ShapezGameAnalytics } from "./platform/browser/game_analytics";
import { GoogleAnalyticsImpl } from "./platform/browser/google_analytics"; import { GoogleAnalyticsImpl } from "./platform/browser/google_analytics";
import { NoGameAnalytics } from "./platform/browser/no_game_analytics";
import { SoundImplBrowser } from "./platform/browser/sound"; import { SoundImplBrowser } from "./platform/browser/sound";
import { StorageImplBrowser } from "./platform/browser/storage";
import { StorageImplBrowserIndexedDB } from "./platform/browser/storage_indexed_db";
import { PlatformWrapperImplBrowser } from "./platform/browser/wrapper"; import { PlatformWrapperImplBrowser } from "./platform/browser/wrapper";
import { StorageImplElectron } from "./platform/electron/storage";
import { PlatformWrapperImplElectron } from "./platform/electron/wrapper"; import { PlatformWrapperImplElectron } from "./platform/electron/wrapper";
import { GameAnalyticsInterface } from "./platform/game_analytics"; import { GameAnalyticsInterface } from "./platform/game_analytics";
import { SoundInterface } from "./platform/sound"; import { SoundInterface } from "./platform/sound";
@ -36,7 +33,6 @@ import { MainMenuState } from "./states/main_menu";
import { MobileWarningState } from "./states/mobile_warning"; import { MobileWarningState } from "./states/mobile_warning";
import { PreloadState } from "./states/preload"; import { PreloadState } from "./states/preload";
import { SettingsState } from "./states/settings"; import { SettingsState } from "./states/settings";
import { NoGameAnalytics } from "./platform/browser/no_game_analytics";
const logger = createLogger("application"); const logger = createLogger("application");

View File

@ -1,9 +1,41 @@
export const CHANGELOG = [ export const CHANGELOG = [
{
version: "1.1.11",
date: "13.06.2020",
entries: [
"Pinned shapes are now smart, they dynamically update their goal and also unpin when no longer required. Completed objectives are now rendered transparent.",
"You can now cut areas, and also paste the last blueprint again! (by hexy)",
"You can now export your whole base as an image by pressing F3!",
"Improve upgrade number rounding, so there are no goals like '37.4k', instead it will now be '35k'",
"You can now configure the camera movement speed when using WASD (by mini-bomba)",
"Selecting an area now is relative to the world and thus does not move when moving the screen (by Dimava)",
"Allow higher tick-rates up to 500hz (This will burn your PC!)",
"Fix bug regarding number rounding",
"Fix dialog text being hardly readable in dark theme",
"Fix app not starting when the savegames were corrupted - there is now a better error message as well.",
"Further translation updates - Big thanks to all contributors!",
],
},
{
version: "1.1.10",
date: "12.06.2020",
entries: [
"There are now linux builds on steam! Please report any issues in the discord!",
"Steam cloud saves are now available!",
"Added and update more translations (Big thank you to all translators!)",
"Prevent invalid connection if existing underground tunnel entrance exists (by jaysc)",
],
},
{ {
version: "1.1.9", version: "1.1.9",
date: "unreleased", date: "11.06.2020",
entries: [ entries: [
"Support for translations! Interested in helping out? Check out the <a target='_blank' href='https://github.com/tobspr/shapez.io/tree/master/translations'>translation guide</a>!", "Support for translations! Interested in helping out? Check out the <a target='_blank' href='https://github.com/tobspr/shapez.io/tree/master/translations'>translation guide</a>!",
"Update stacker artwork to clarify how it works",
"Update keybinding hints on the top left to be more accurate",
"Make it more clear when blueprints are unlocked when trying to use them",
"Fix pinned shape icons not being visible in dark mode",
"Fix being able to select buildings via hotkeys in map overview mode",
"Make shapes unpinnable in the upgrades tab (By hexy)", "Make shapes unpinnable in the upgrades tab (By hexy)",
], ],
}, },

View File

@ -1,3 +1,5 @@
import { queryParamOptions } from "./query_parameters";
export const IS_DEBUG = export const IS_DEBUG =
G_IS_DEV && G_IS_DEV &&
typeof window !== "undefined" && typeof window !== "undefined" &&
@ -5,9 +7,10 @@ export const IS_DEBUG =
(window.location.host.indexOf("localhost:") >= 0 || window.location.host.indexOf("192.168.0.") >= 0) && (window.location.host.indexOf("localhost:") >= 0 || window.location.host.indexOf("192.168.0.") >= 0) &&
window.location.search.indexOf("nodebug") < 0; window.location.search.indexOf("nodebug") < 0;
export const IS_DEMO = export const IS_DEMO = queryParamOptions.fullVersion
(G_IS_PROD && !G_IS_STANDALONE) || ? false
(typeof window !== "undefined" && window.location.search.indexOf("demo") >= 0); : (G_IS_PROD && !G_IS_STANDALONE) ||
(typeof window !== "undefined" && window.location.search.indexOf("demo") >= 0);
const smoothCanvas = true; const smoothCanvas = true;
@ -79,40 +82,7 @@ export const globalConfig = {
}, },
rendering: {}, rendering: {},
debug: require("./config.local").default,
debug: {
/* dev:start */
// fastGameEnter: true,
// noArtificialDelays: true,
// disableSavegameWrite: true,
// showEntityBounds: true,
// showAcceptorEjectors: true,
// disableMusic: true,
// doNotRenderStatics: true,
// disableZoomLimits: true,
// showChunkBorders: true,
// rewardsInstant: true,
allBuildingsUnlocked: true,
blueprintsNoCost: true,
upgradesNoCost: true,
// disableUnlockDialog: true,
// disableLogicTicks: true,
// testClipping: true,
// framePausesBetweenTicks: 40,
// testTranslations: true,
// enableEntityInspector: true,
// testAds: true,
// disableMapOverview: true,
// disableTutorialHints: true,
disableUpgradeNotification: true,
// instantBelts: true,
// instantProcessors: true,
// instantMiners: true,
// resumeGameOnFastEnter: false,
// renderForTrailer: true,
/* dev:end */
},
// Secret vars // Secret vars
info: { info: {
@ -130,14 +100,15 @@ export const globalConfig = {
export const IS_MOBILE = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent); export const IS_MOBILE = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);
// Automatic calculations // Automatic calculations
globalConfig.minerSpeedItemsPerSecond = globalConfig.beltSpeedItemsPerSecond / 5; globalConfig.minerSpeedItemsPerSecond = globalConfig.beltSpeedItemsPerSecond / 5;
// Dynamic calculations
if (globalConfig.debug.disableMapOverview) { if (globalConfig.debug.disableMapOverview) {
globalConfig.mapChunkOverviewMinZoom = 0; globalConfig.mapChunkOverviewMinZoom = 0;
globalConfig.mapChunkPrerenderMinZoom = 0; globalConfig.mapChunkPrerenderMinZoom = 0;
} }
// Stuff for making the trailer
if (G_IS_DEV && globalConfig.debug.renderForTrailer) { if (G_IS_DEV && globalConfig.debug.renderForTrailer) {
globalConfig.debug.framePausesBetweenTicks = 32; globalConfig.debug.framePausesBetweenTicks = 32;
// globalConfig.mapChunkOverviewMinZoom = 0.0; // globalConfig.mapChunkOverviewMinZoom = 0.0;
@ -148,3 +119,7 @@ if (G_IS_DEV && globalConfig.debug.renderForTrailer) {
globalConfig.debug.disableSavegameWrite = true; globalConfig.debug.disableSavegameWrite = true;
// globalConfig.beltSpeedItemsPerSecond *= 2; // globalConfig.beltSpeedItemsPerSecond *= 2;
} }
if (globalConfig.debug.fastGameEnter) {
globalConfig.debug.noArtificalDelays = true;
}

View File

@ -0,0 +1,87 @@
export default {
// You can set any debug options here!
/* dev:start */
// -----------------------------------------------------------------------------------
// Quickly enters the game and skips the main menu - good for fast iterating
// fastGameEnter: true,
// -----------------------------------------------------------------------------------
// Skips any delays like transitions between states and such
// noArtificialDelays: true,
// -----------------------------------------------------------------------------------
// Disables writing of savegames, useful for testing the same savegame over and over
// disableSavegameWrite: true,
// -----------------------------------------------------------------------------------
// Shows bounds of all entities
// showEntityBounds: true,
// -----------------------------------------------------------------------------------
// Shows arrows for every ejector / acceptor
// showAcceptorEjectors: true,
// -----------------------------------------------------------------------------------
// Disables the music (Overrides any setting, can cause weird behaviour)
// disableMusic: true,
// -----------------------------------------------------------------------------------
// Do not render static map entities (=most buildings)
// doNotRenderStatics: true,
// -----------------------------------------------------------------------------------
// Allow to zoom freely without limits
// disableZoomLimits: true,
// -----------------------------------------------------------------------------------
// Shows a border arround every chunk
// showChunkBorders: true,
// -----------------------------------------------------------------------------------
// All rewards can be unlocked by passing just 1 of any shape
// rewardsInstant: true,
// -----------------------------------------------------------------------------------
// Unlocks all buildings
// allBuildingsUnlocked: true,
// -----------------------------------------------------------------------------------
// Disables cost of bluepirnts
// blueprintsNoCost: true,
// -----------------------------------------------------------------------------------
// Disables cost of upgrades
// upgradesNoCost: true,
// -----------------------------------------------------------------------------------
// Disables the dialog when completing a level
// disableUnlockDialog: true,
// -----------------------------------------------------------------------------------
// Disables the simulation - This effectively pauses the game.
// disableLogicTicks: true,
// -----------------------------------------------------------------------------------
// Test the rendering if everything is clipped out properly
// testClipping: true,
// -----------------------------------------------------------------------------------
// Allows to render slower, useful for recording at half speed to avoid stuttering
// framePausesBetweenTicks: 1,
// -----------------------------------------------------------------------------------
// Replace all translations with emojis to see which texts are translateable
// testTranslations: true,
// -----------------------------------------------------------------------------------
// Enables an inspector which shows information about the entity below the curosr
// enableEntityInspector: true,
// -----------------------------------------------------------------------------------
// Enables ads in the local build (normally they are deactivated there)
// testAds: true,
// -----------------------------------------------------------------------------------
// Disables the automatic switch to an overview when zooming out
// disableMapOverview: true,
// -----------------------------------------------------------------------------------
// Disables the notification when there are new entries in the changelog since last played
// disableUpgradeNotification: true,
// -----------------------------------------------------------------------------------
// Makes belts almost infinitely fast
// instantBelts: true,
// -----------------------------------------------------------------------------------
// Makes item processors almost infinitely fast
// instantProcessors: true,
// -----------------------------------------------------------------------------------
// Makes miners almost infinitely fast
// instantMiners: true,
// -----------------------------------------------------------------------------------
// When using fastGameEnter, controls whether a new game is started or the last one is resumed
// resumeGameOnFastEnter: false,
// -----------------------------------------------------------------------------------
// Special option used to render the trailer
// renderForTrailer: true,
// -----------------------------------------------------------------------------------
/* dev:end */
};

View File

@ -3,8 +3,14 @@ const options = queryString.parse(location.search);
export let queryParamOptions = { export let queryParamOptions = {
embedProvider: null, embedProvider: null,
fullVersion: false,
}; };
if (options.embed) { if (options.embed) {
queryParamOptions.embedProvider = options.embed; queryParamOptions.embedProvider = options.embed;
} }
// Allow testing full version outside of standalone
if (options.fullVersion && !G_IS_RELEASE) {
queryParamOptions.fullVersion = true;
}

View File

@ -377,7 +377,23 @@ export function findNiceValue(num) {
return 0; return 0;
} }
const roundAmount = 0.5 * Math_pow(10, Math_floor(Math_log10(num) - 1)); let roundAmount = 1;
if (num > 50000) {
roundAmount = 10000;
} else if (num > 20000) {
roundAmount = 5000;
} else if (num > 5000) {
roundAmount = 1000;
} else if (num > 2000) {
roundAmount = 500;
} else if (num > 1000) {
roundAmount = 100;
} else if (num > 100) {
roundAmount = 20;
} else if (num > 20) {
roundAmount = 5;
}
const niceValue = Math_floor(num / roundAmount) * roundAmount; const niceValue = Math_floor(num / roundAmount) * roundAmount;
if (num >= 10) { if (num >= 10) {
return Math_round(niceValue); return Math_round(niceValue);
@ -389,6 +405,8 @@ export function findNiceValue(num) {
return Math_round(niceValue * 100) / 100; return Math_round(niceValue * 100) / 100;
} }
window.fn = findNiceValue;
/** /**
* Finds a nice integer value * Finds a nice integer value
* @see findNiceValue * @see findNiceValue

View File

@ -10,6 +10,7 @@ import {
Math_atan2, Math_atan2,
Math_sin, Math_sin,
Math_cos, Math_cos,
Math_ceil,
} from "./builtins"; } from "./builtins";
const tileSize = globalConfig.tileSize; const tileSize = globalConfig.tileSize;
@ -303,13 +304,21 @@ export class Vector {
} }
/** /**
* Computes componentwise floor and return a new vector * Computes componentwise floor and returns a new vector
* @returns {Vector} * @returns {Vector}
*/ */
floor() { floor() {
return new Vector(Math_floor(this.x), Math_floor(this.y)); return new Vector(Math_floor(this.x), Math_floor(this.y));
} }
/**
* Computes componentwise ceil and returns a new vector
* @returns {Vector}
*/
ceil() {
return new Vector(Math_ceil(this.x), Math_ceil(this.y));
}
/** /**
* Computes componentwise round and return a new vector * Computes componentwise round and return a new vector
* @returns {Vector} * @returns {Vector}

View File

@ -175,6 +175,8 @@ export class MetaUndergroundBeltBuilding extends MetaBuilding {
rotationVariant: 0, rotationVariant: 0,
connectedEntities: [contents], connectedEntities: [contents],
}; };
} else {
break;
} }
} }
} }

View File

@ -901,8 +901,8 @@ export class Camera extends BasicSerializableObject {
forceX += 1; forceX += 1;
} }
this.center.x += moveAmount * forceX; this.center.x += moveAmount * forceX * this.root.app.settings.getMovementSpeed();
this.center.y += moveAmount * forceY; this.center.y += moveAmount * forceY * this.root.app.settings.getMovementSpeed();
} }
} }
} }

View File

@ -409,7 +409,7 @@ export class GameCore {
} }
if (G_IS_DEV) { if (G_IS_DEV) {
root.map.drawStaticEntities(params); root.map.drawStaticEntityDebugOverlays(params);
} }
// END OF GAME CONTENT // END OF GAME CONTENT

View File

@ -136,7 +136,7 @@ export class Entity extends BasicSerializableObject {
* Draws the entity, to override use @see Entity.drawImpl * Draws the entity, to override use @see Entity.drawImpl
* @param {DrawParameters} parameters * @param {DrawParameters} parameters
*/ */
draw(parameters) { drawDebugOverlays(parameters) {
const context = parameters.context; const context = parameters.context;
const staticComp = this.components.StaticMapEntity; const staticComp = this.components.StaticMapEntity;

View File

@ -2,6 +2,10 @@
import { GameRoot } from "../root"; import { GameRoot } from "../root";
/* typehints:end */ /* typehints:end */
/* dev:start */
import { TrailerMaker } from "./trailer_maker";
/* dev:end */
import { Signal } from "../../core/signal"; import { Signal } from "../../core/signal";
import { DrawParameters } from "../../core/draw_parameters"; import { DrawParameters } from "../../core/draw_parameters";
import { HUDProcessingOverlay } from "./parts/processing_overlay"; import { HUDProcessingOverlay } from "./parts/processing_overlay";
@ -29,10 +33,7 @@ import { HUDModalDialogs } from "./parts/modal_dialogs";
import { HUDPartTutorialHints } from "./parts/tutorial_hints"; import { HUDPartTutorialHints } from "./parts/tutorial_hints";
import { HUDWaypoints } from "./parts/waypoints"; import { HUDWaypoints } from "./parts/waypoints";
import { HUDInteractiveTutorial } from "./parts/interactive_tutorial"; import { HUDInteractiveTutorial } from "./parts/interactive_tutorial";
import { HUDScreenshotExporter } from "./parts/screenshot_exporter";
/* dev:start */
import { TrailerMaker } from "./trailer_maker";
/* dev:end */
export class GameHUD { export class GameHUD {
/** /**
@ -66,14 +67,16 @@ export class GameHUD {
// betaOverlay: new HUDBetaOverlay(this.root), // betaOverlay: new HUDBetaOverlay(this.root),
debugInfo: new HUDDebugInfo(this.root), debugInfo: new HUDDebugInfo(this.root),
dialogs: new HUDModalDialogs(this.root), dialogs: new HUDModalDialogs(this.root),
screenshotExporter: new HUDScreenshotExporter(this.root),
}; };
this.signals = { this.signals = {
selectedPlacementBuildingChanged: /** @type {TypedSignal<[MetaBuilding|null]>} */ (new Signal()), selectedPlacementBuildingChanged: /** @type {TypedSignal<[MetaBuilding|null]>} */ (new Signal()),
shapePinRequested: /** @type {TypedSignal<[ShapeDefinition, number]>} */ (new Signal()), shapePinRequested: /** @type {TypedSignal<[ShapeDefinition]>} */ (new Signal()),
shapeUnpinRequested: /** @type {TypedSignal<[string]>} */ (new Signal()), shapeUnpinRequested: /** @type {TypedSignal<[string]>} */ (new Signal()),
notification: /** @type {TypedSignal<[string, enumNotificationType]>} */ (new Signal()), notification: /** @type {TypedSignal<[string, enumNotificationType]>} */ (new Signal()),
buildingsSelectedForCopy: /** @type {TypedSignal<[Array<number>]>} */ (new Signal()), buildingsSelectedForCopy: /** @type {TypedSignal<[Array<number>]>} */ (new Signal()),
pasteBlueprintRequested: new Signal(),
}; };
if (!IS_MOBILE) { if (!IS_MOBILE) {

View File

@ -1,4 +1,4 @@
//www.youtube.com/watch?v=KyorY1uIqiQimport { DrawParameters } from "../../../core/draw_parameters"; import { DrawParameters } from "../../../core/draw_parameters";
import { STOP_PROPAGATION } from "../../../core/signal"; import { STOP_PROPAGATION } from "../../../core/signal";
import { TrackedState } from "../../../core/tracked_state"; import { TrackedState } from "../../../core/tracked_state";
import { Vector } from "../../../core/vector"; import { Vector } from "../../../core/vector";
@ -29,6 +29,8 @@ export class HUDBlueprintPlacer extends BaseHUDPart {
/** @type {TypedTrackedState<Blueprint?>} */ /** @type {TypedTrackedState<Blueprint?>} */
this.currentBlueprint = new TrackedState(this.onBlueprintChanged, this); this.currentBlueprint = new TrackedState(this.onBlueprintChanged, this);
/** @type {Blueprint?} */
this.lastBlueprintUsed = null;
const keyActionMapper = this.root.keyMapper; const keyActionMapper = this.root.keyMapper;
keyActionMapper.getBinding(KEYMAPPINGS.general.back).add(this.abortPlacement, this); keyActionMapper.getBinding(KEYMAPPINGS.general.back).add(this.abortPlacement, this);
@ -36,9 +38,7 @@ export class HUDBlueprintPlacer extends BaseHUDPart {
.getBinding(KEYMAPPINGS.placement.abortBuildingPlacement) .getBinding(KEYMAPPINGS.placement.abortBuildingPlacement)
.add(this.abortPlacement, this); .add(this.abortPlacement, this);
keyActionMapper.getBinding(KEYMAPPINGS.placement.rotateWhilePlacing).add(this.rotateBlueprint, this); keyActionMapper.getBinding(KEYMAPPINGS.placement.rotateWhilePlacing).add(this.rotateBlueprint, this);
keyActionMapper keyActionMapper.getBinding(KEYMAPPINGS.massSelect.pasteLastBlueprint).add(this.pasteBlueprint, this);
.getBinding(KEYMAPPINGS.placement.abortBuildingPlacement)
.add(this.abortPlacement, this);
this.root.camera.downPreHandler.add(this.onMouseDown, this); this.root.camera.downPreHandler.add(this.onMouseDown, this);
this.root.camera.movePreHandler.add(this.onMouseMove, this); this.root.camera.movePreHandler.add(this.onMouseMove, this);
@ -73,6 +73,7 @@ export class HUDBlueprintPlacer extends BaseHUDPart {
*/ */
onBlueprintChanged(blueprint) { onBlueprintChanged(blueprint) {
if (blueprint) { if (blueprint) {
this.lastBlueprintUsed = blueprint;
this.costDisplayText.innerText = "" + blueprint.getCost(); this.costDisplayText.innerText = "" + blueprint.getCost();
} }
} }
@ -144,6 +145,15 @@ export class HUDBlueprintPlacer extends BaseHUDPart {
} }
} }
pasteBlueprint() {
if (this.lastBlueprintUsed !== null) {
this.root.hud.signals.pasteBlueprintRequested.dispatch();
this.currentBlueprint.set(this.lastBlueprintUsed);
} else {
this.root.soundProxy.playUiError();
}
}
/** /**
* *
* @param {DrawParameters} parameters * @param {DrawParameters} parameters

View File

@ -40,6 +40,7 @@ export class HUDBuildingPlacer extends BaseHUDPart {
keyActionMapper.getBinding(KEYMAPPINGS.placement.cycleBuildingVariants).add(this.cycleVariants, this); keyActionMapper.getBinding(KEYMAPPINGS.placement.cycleBuildingVariants).add(this.cycleVariants, this);
this.root.hud.signals.buildingsSelectedForCopy.add(this.abortPlacement, this); this.root.hud.signals.buildingsSelectedForCopy.add(this.abortPlacement, this);
this.root.hud.signals.pasteBlueprintRequested.add(this.abortPlacement, this);
this.domAttach = new DynamicDomAttach(this.root, this.element, {}); this.domAttach = new DynamicDomAttach(this.root, this.element, {});

View File

@ -151,6 +151,11 @@ export class HUDBuildingsToolbar extends BaseHUDPart {
return; return;
} }
if (this.root.camera.getIsMapOverlayActive()) {
this.root.soundProxy.playUiError();
return;
}
// Allow clicking an item again to deselect it // Allow clicking an item again to deselect it
for (const buildingId in this.buildingHandles) { for (const buildingId in this.buildingHandles) {
const handle = this.buildingHandles[buildingId]; const handle = this.buildingHandles[buildingId];

View File

@ -39,7 +39,7 @@ export class HUDInteractiveTutorial extends BaseHUDPart {
"ingame_HUD_InteractiveTutorial", "ingame_HUD_InteractiveTutorial",
["animEven"], ["animEven"],
` `
<strong class="title">Tutorial</strong> <strong class="title">${T.ingame.interactiveTutorial.title}</strong>
` `
); );

View File

@ -2,6 +2,7 @@ import { makeDiv } from "../../../core/utils";
import { T } from "../../../translations"; import { T } from "../../../translations";
import { getStringForKeyCode, KEYMAPPINGS } from "../../key_action_mapper"; import { getStringForKeyCode, KEYMAPPINGS } from "../../key_action_mapper";
import { BaseHUDPart } from "../base_hud_part"; import { BaseHUDPart } from "../base_hud_part";
import { TrackedState } from "../../../core/tracked_state";
export class HUDKeybindingOverlay extends BaseHUDPart { export class HUDKeybindingOverlay extends BaseHUDPart {
initialize() { initialize() {
@ -9,6 +10,8 @@ export class HUDKeybindingOverlay extends BaseHUDPart {
this.onSelectedBuildingForPlacementChanged, this.onSelectedBuildingForPlacementChanged,
this this
); );
this.trackedMapOverviewActive = new TrackedState(this.applyCssClasses, this);
} }
createElements(parent) { createElements(parent) {
@ -31,15 +34,21 @@ export class HUDKeybindingOverlay extends BaseHUDPart {
<code class="keybinding">${getKeycode(KEYMAPPINGS.navigation.mapMoveDown)}</code> <code class="keybinding">${getKeycode(KEYMAPPINGS.navigation.mapMoveDown)}</code>
<code class="keybinding">${getKeycode(KEYMAPPINGS.navigation.mapMoveRight)}</code> <code class="keybinding">${getKeycode(KEYMAPPINGS.navigation.mapMoveRight)}</code>
<label>${T.ingame.keybindingsOverlay.moveMap}</label> <label>${T.ingame.keybindingsOverlay.moveMap}</label>
</div> </div>
<div class="binding noPlacementOnly"> <div class="binding noPlacementOnly noOverviewOnly">
<code class="keybinding rightMouse"></code> <code class="keybinding rightMouse"></code>
<label>${T.ingame.keybindingsOverlay.delete}</label> <label>${T.ingame.keybindingsOverlay.delete}</label>
</div> </div>
<div class="binding noPlacementOnly overviewOnly">
<code class="keybinding rightMouse"></code>
<label>${T.ingame.keybindingsOverlay.createMarker}</label>
</div>
<div class="binding noPlacementOnly"> <div class="binding noPlacementOnly">
<code class="keybinding builtinKey">${getKeycode( <code class="keybinding builtinKey">${getKeycode(
KEYMAPPINGS.massSelect.massSelectStart KEYMAPPINGS.massSelect.massSelectStart
@ -47,13 +56,12 @@ export class HUDKeybindingOverlay extends BaseHUDPart {
<code class="keybinding leftMouse"></code> <code class="keybinding leftMouse"></code>
<label>${T.ingame.keybindingsOverlay.selectBuildings}</label> <label>${T.ingame.keybindingsOverlay.selectBuildings}</label>
</div> </div>
<div class="binding placementOnly"> <div class="binding placementOnly">
<code class="keybinding leftMouse"></code> <code class="keybinding leftMouse"></code>
<label>${T.ingame.keybindingsOverlay.placeBuilding}</label> <label>${T.ingame.keybindingsOverlay.placeBuilding}</label>
</div> </div>
<div class="binding placementOnly"> <div class="binding placementOnly">
<code class="keybinding rightMouse"></code><i></i> <code class="keybinding rightMouse"></code><i></i>
<code class="keybinding">${getKeycode(KEYMAPPINGS.placement.abortBuildingPlacement)}</code> <code class="keybinding">${getKeycode(KEYMAPPINGS.placement.abortBuildingPlacement)}</code>
@ -65,12 +73,17 @@ export class HUDKeybindingOverlay extends BaseHUDPart {
<label>${T.ingame.keybindingsOverlay.rotateBuilding}</label> <label>${T.ingame.keybindingsOverlay.rotateBuilding}</label>
</div> </div>
` +
(this.root.app.settings.getAllSettings().alwaysMultiplace
? ""
: `
<div class="binding placementOnly"> <div class="binding placementOnly">
<code class="keybinding builtinKey shift">${getKeycode( <code class="keybinding builtinKey shift">${getKeycode(
KEYMAPPINGS.placementModifiers.placeMultiple KEYMAPPINGS.placementModifiers.placeMultiple
)}</code> )}</code>
<label>${T.ingame.keybindingsOverlay.placeMultiple}</label> <label>${T.ingame.keybindingsOverlay.placeMultiple}</label>
</div> </div>`) +
`
` `
); );
} }
@ -79,5 +92,11 @@ export class HUDKeybindingOverlay extends BaseHUDPart {
this.element.classList.toggle("placementActive", !!selectedMetaBuilding); this.element.classList.toggle("placementActive", !!selectedMetaBuilding);
} }
update() {} applyCssClasses() {
this.element.classList.toggle("mapOverviewActive", this.root.camera.getIsMapOverlayActive());
}
update() {
this.trackedMapOverviewActive.set(this.root.camera.getIsMapOverlayActive());
}
} }

View File

@ -22,6 +22,9 @@ export class HUDMassSelector extends BaseHUDPart {
.getBinding(KEYMAPPINGS.massSelect.confirmMassDelete) .getBinding(KEYMAPPINGS.massSelect.confirmMassDelete)
.getKeyCodeString(); .getKeyCodeString();
const abortKeybinding = this.root.keyMapper.getBinding(KEYMAPPINGS.general.back).getKeyCodeString(); const abortKeybinding = this.root.keyMapper.getBinding(KEYMAPPINGS.general.back).getKeyCodeString();
const cutKeybinding = this.root.keyMapper
.getBinding(KEYMAPPINGS.massSelect.massSelectCut)
.getKeyCodeString();
const copyKeybinding = this.root.keyMapper const copyKeybinding = this.root.keyMapper
.getBinding(KEYMAPPINGS.massSelect.massSelectCopy) .getBinding(KEYMAPPINGS.massSelect.massSelectCopy)
.getKeyCodeString(); .getKeyCodeString();
@ -32,6 +35,7 @@ export class HUDMassSelector extends BaseHUDPart {
[], [],
T.ingame.massSelect.infoText T.ingame.massSelect.infoText
.replace("<keyDelete>", `<code class='keybinding'>${removalKeybinding}</code>`) .replace("<keyDelete>", `<code class='keybinding'>${removalKeybinding}</code>`)
.replace("<keyCut>", `<code class='keybinding'>${cutKeybinding}</code>`)
.replace("<keyCopy>", `<code class='keybinding'>${copyKeybinding}</code>`) .replace("<keyCopy>", `<code class='keybinding'>${copyKeybinding}</code>`)
.replace("<keyCancel>", `<code class='keybinding'>${abortKeybinding}</code>`) .replace("<keyCancel>", `<code class='keybinding'>${abortKeybinding}</code>`)
); );
@ -40,7 +44,7 @@ export class HUDMassSelector extends BaseHUDPart {
initialize() { initialize() {
this.deletionMarker = Loader.getSprite("sprites/misc/deletion_marker.png"); this.deletionMarker = Loader.getSprite("sprites/misc/deletion_marker.png");
this.currentSelectionStart = null; this.currentSelectionStartWorld = null;
this.currentSelectionEnd = null; this.currentSelectionEnd = null;
this.selectedUids = new Set(); this.selectedUids = new Set();
@ -54,6 +58,7 @@ export class HUDMassSelector extends BaseHUDPart {
this.root.keyMapper this.root.keyMapper
.getBinding(KEYMAPPINGS.massSelect.confirmMassDelete) .getBinding(KEYMAPPINGS.massSelect.confirmMassDelete)
.add(this.confirmDelete, this); .add(this.confirmDelete, this);
this.root.keyMapper.getBinding(KEYMAPPINGS.massSelect.massSelectCut).add(this.confirmCut, this);
this.root.keyMapper.getBinding(KEYMAPPINGS.massSelect.massSelectCopy).add(this.startCopy, this); this.root.keyMapper.getBinding(KEYMAPPINGS.massSelect.massSelectCopy).add(this.startCopy, this);
this.domAttach = new DynamicDomAttach(this.root, this.element); this.domAttach = new DynamicDomAttach(this.root, this.element);
@ -123,6 +128,49 @@ export class HUDMassSelector extends BaseHUDPart {
} }
} }
confirmCut() {
if (!this.root.hubGoals.isRewardUnlocked(enumHubGoalRewards.reward_blueprints)) {
this.root.hud.parts.dialogs.showInfo(
T.dialogs.blueprintsNotUnlocked.title,
T.dialogs.blueprintsNotUnlocked.desc
);
} else if (this.selectedUids.size > 100) {
const { ok } = this.root.hud.parts.dialogs.showWarning(
T.dialogs.massCutConfirm.title,
T.dialogs.massCutConfirm.desc.replace(
"<count>",
"" + formatBigNumberFull(this.selectedUids.size)
),
["cancel:good", "ok:bad"]
);
ok.add(() => this.doCut());
} else {
this.doCut();
}
}
doCut() {
if (this.selectedUids.size > 0) {
const entityUids = Array.from(this.selectedUids);
// copy code relies on entities still existing, so must copy before deleting.
this.root.hud.signals.buildingsSelectedForCopy.dispatch(entityUids);
for (let i = 0; i < entityUids.length; ++i) {
const uid = entityUids[i];
const entity = this.root.entityMgr.findByUid(uid);
if (!this.root.logic.tryDeleteBuilding(entity)) {
logger.error("Error in mass cut, could not remove building");
this.selectedUids.delete(uid);
}
}
this.root.soundProxy.playUiClick();
} else {
this.root.soundProxy.playUiError();
}
}
/** /**
* mouse down pre handler * mouse down pre handler
* @param {Vector} pos * @param {Vector} pos
@ -146,7 +194,7 @@ export class HUDMassSelector extends BaseHUDPart {
this.selectedUids = new Set(); this.selectedUids = new Set();
} }
this.currentSelectionStart = pos.copy(); this.currentSelectionStartWorld = this.root.camera.screenToWorld(pos.copy());
this.currentSelectionEnd = pos.copy(); this.currentSelectionEnd = pos.copy();
return STOP_PROPAGATION; return STOP_PROPAGATION;
} }
@ -156,14 +204,14 @@ export class HUDMassSelector extends BaseHUDPart {
* @param {Vector} pos * @param {Vector} pos
*/ */
onMouseMove(pos) { onMouseMove(pos) {
if (this.currentSelectionStart) { if (this.currentSelectionStartWorld) {
this.currentSelectionEnd = pos.copy(); this.currentSelectionEnd = pos.copy();
} }
} }
onMouseUp() { onMouseUp() {
if (this.currentSelectionStart) { if (this.currentSelectionStartWorld) {
const worldStart = this.root.camera.screenToWorld(this.currentSelectionStart); const worldStart = this.currentSelectionStartWorld;
const worldEnd = this.root.camera.screenToWorld(this.currentSelectionEnd); const worldEnd = this.root.camera.screenToWorld(this.currentSelectionEnd);
const tileStart = worldStart.toTileSpace(); const tileStart = worldStart.toTileSpace();
@ -181,7 +229,7 @@ export class HUDMassSelector extends BaseHUDPart {
} }
} }
this.currentSelectionStart = null; this.currentSelectionStartWorld = null;
this.currentSelectionEnd = null; this.currentSelectionEnd = null;
} }
} }
@ -197,8 +245,8 @@ export class HUDMassSelector extends BaseHUDPart {
draw(parameters) { draw(parameters) {
const boundsBorder = 2; const boundsBorder = 2;
if (this.currentSelectionStart) { if (this.currentSelectionStartWorld) {
const worldStart = this.root.camera.screenToWorld(this.currentSelectionStart); const worldStart = this.currentSelectionStartWorld;
const worldEnd = this.root.camera.screenToWorld(this.currentSelectionEnd); const worldEnd = this.root.camera.screenToWorld(this.currentSelectionEnd);
const realWorldStart = worldStart.min(worldEnd); const realWorldStart = worldStart.min(worldEnd);

View File

@ -1,22 +1,54 @@
import { Math_max } from "../../../core/builtins"; import { Math_max } from "../../../core/builtins";
import { ClickDetector } from "../../../core/click_detector"; import { ClickDetector } from "../../../core/click_detector";
import { formatBigNumber, makeDiv } from "../../../core/utils"; import { formatBigNumber, makeDiv, arrayDelete, arrayDeleteValue } from "../../../core/utils";
import { ShapeDefinition } from "../../shape_definition"; import { ShapeDefinition } from "../../shape_definition";
import { BaseHUDPart } from "../base_hud_part"; import { BaseHUDPart } from "../base_hud_part";
import { blueprintShape } from "../../upgrades"; import { blueprintShape, UPGRADES } from "../../upgrades";
import { enumHubGoalRewards } from "../../tutorial_goals"; import { enumHubGoalRewards } from "../../tutorial_goals";
/**
* Manages the pinned shapes on the left side of the screen
*/
export class HUDPinnedShapes extends BaseHUDPart { export class HUDPinnedShapes extends BaseHUDPart {
constructor(root) {
super(root);
/**
* Store a list of pinned shapes
* @type {Array<string>}
*/
this.pinnedShapes = [];
/**
* Store handles to the currently rendered elements, so we can update them more
* convenient. Also allows for cleaning up handles.
* @type {Array<{
* key: string,
* amountLabel: HTMLElement,
* lastRenderedValue: string,
* element: HTMLElement,
* detector?: ClickDetector
* }>}
*/
this.handles = [];
}
createElements(parent) { createElements(parent) {
this.element = makeDiv(parent, "ingame_HUD_PinnedShapes", []); this.element = makeDiv(parent, "ingame_HUD_PinnedShapes", []);
} }
/**
* Serializes the pinned shapes
*/
serialize() { serialize() {
return { return {
shapes: this.pinnedShapes, shapes: this.pinnedShapes,
}; };
} }
/**
* Deserializes the pinned shapes
* @param {{ shapes: Array<string>}} data
*/
deserialize(data) { deserialize(data) {
if (!data || !data.shapes || !Array.isArray(data.shapes)) { if (!data || !data.shapes || !Array.isArray(data.shapes)) {
return "Invalid pinned shapes data"; return "Invalid pinned shapes data";
@ -24,48 +56,99 @@ export class HUDPinnedShapes extends BaseHUDPart {
this.pinnedShapes = data.shapes; this.pinnedShapes = data.shapes;
} }
/**
* Initializes the hud component
*/
initialize() { initialize() {
/** @type {Array<{ key: string, goal: number }>} */ // Connect to any relevant signals
this.pinnedShapes = [];
/** @type {Array<{key: string, amountLabel: HTMLElement, lastRenderedValue: number, element: HTMLElement, detector?: ClickDetector}>} */
this.handles = [];
this.rerenderFull();
this.root.signals.storyGoalCompleted.add(this.rerenderFull, this); this.root.signals.storyGoalCompleted.add(this.rerenderFull, this);
this.root.signals.upgradePurchased.add(this.updateShapesAfterUpgrade, this);
this.root.signals.postLoadHook.add(this.rerenderFull, this); this.root.signals.postLoadHook.add(this.rerenderFull, this);
this.root.hud.signals.shapePinRequested.add(this.pinNewShape, this); this.root.hud.signals.shapePinRequested.add(this.pinNewShape, this);
this.root.hud.signals.shapeUnpinRequested.add(this.unpinShape, this); this.root.hud.signals.shapeUnpinRequested.add(this.unpinShape, this);
// Perform initial render
this.updateShapesAfterUpgrade();
} }
/** /**
* Returns whether a given shape is pinned * Updates all shapes after an upgrade has been purchased and removes the unused ones
*/
updateShapesAfterUpgrade() {
for (let i = 0; i < this.pinnedShapes.length; ++i) {
const key = this.pinnedShapes[i];
if (key === blueprintShape) {
// Ignore blueprint shapes
continue;
}
let goal = this.findGoalValueForShape(key);
if (!goal) {
// Seems no longer relevant
this.pinnedShapes.splice(i, 1);
i -= 1;
}
}
this.rerenderFull();
}
/**
* Finds the current goal for the given key. If the key is the story goal, returns
* the story goal. If its the blueprint shape, no goal is returned. Otherwise
* it's searched for upgrades.
* @param {string} key
*/
findGoalValueForShape(key) {
if (key === this.root.hubGoals.currentGoal.definition.getHash()) {
return this.root.hubGoals.currentGoal.required;
}
if (key === blueprintShape) {
return null;
}
// Check if this shape is required for any upgrade
for (const upgradeId in UPGRADES) {
const { tiers } = UPGRADES[upgradeId];
const currentTier = this.root.hubGoals.getUpgradeLevel(upgradeId);
const tierHandle = tiers[currentTier];
if (!tierHandle) {
// Max level
continue;
}
for (let i = 0; i < tierHandle.required.length; ++i) {
const { shape, amount } = tierHandle.required[i];
if (shape === key) {
return amount;
}
}
}
return null;
}
/**
* Returns whether a given shape is currently pinned
* @param {string} key * @param {string} key
*/ */
isShapePinned(key) { isShapePinned(key) {
if (!this.pinnedShapes) { if (key === this.root.hubGoals.currentGoal.definition.getHash() || key === blueprintShape) {
return false; // This is a "special" shape which is always pinned
}
if (key === this.root.hubGoals.currentGoal.definition.getHash()) {
return true;
}
if (key === blueprintShape) {
return true; return true;
} }
for (let i = 0; i < this.pinnedShapes.length; ++i) { return this.pinnedShapes.indexOf(key) >= 0;
if (this.pinnedShapes[i].key === key) {
return true;
}
}
return false;
} }
/**
* Rerenders the whole component
*/
rerenderFull() { rerenderFull() {
const currentGoal = this.root.hubGoals.currentGoal; const currentGoal = this.root.hubGoals.currentGoal;
const currentKey = currentGoal.definition.getHash(); const currentKey = currentGoal.definition.getHash();
// First, remove old ones // First, remove all old shapes
for (let i = 0; i < this.handles.length; ++i) { for (let i = 0; i < this.handles.length; ++i) {
this.handles[i].element.remove(); this.handles[i].element.remove();
const detector = this.handles[i].detector; const detector = this.handles[i].detector;
@ -75,28 +158,30 @@ export class HUDPinnedShapes extends BaseHUDPart {
} }
this.handles = []; this.handles = [];
this.internalPinShape(currentKey, currentGoal.required, false, "goal"); // Pin story goal
this.internalPinShape(currentKey, false, "goal");
// Pin blueprint shape as well
if (this.root.hubGoals.isRewardUnlocked(enumHubGoalRewards.reward_blueprints)) { if (this.root.hubGoals.isRewardUnlocked(enumHubGoalRewards.reward_blueprints)) {
this.internalPinShape(blueprintShape, null, false, "blueprint"); this.internalPinShape(blueprintShape, false, "blueprint");
} }
// Pin manually pinned shapes
for (let i = 0; i < this.pinnedShapes.length; ++i) { for (let i = 0; i < this.pinnedShapes.length; ++i) {
const key = this.pinnedShapes[i].key; const key = this.pinnedShapes[i];
if (key !== currentKey) { if (key !== currentKey) {
this.internalPinShape(key, this.pinnedShapes[i].goal); this.internalPinShape(key);
} }
} }
} }
/** /**
* Pins a shape * Pins a new shape
* @param {string} key * @param {string} key
* @param {number} goal
* @param {boolean} canUnpin * @param {boolean} canUnpin
* @param {string=} className * @param {string=} className
*/ */
internalPinShape(key, goal, canUnpin = true, className = null) { internalPinShape(key, canUnpin = true, className = null) {
const definition = this.root.shapeDefinitionMgr.getShapeFromShortKey(key); const definition = this.root.shapeDefinitionMgr.getShapeFromShortKey(key);
const element = makeDiv(this.element, null, ["shape"]); const element = makeDiv(this.element, null, ["shape"]);
@ -121,6 +206,7 @@ export class HUDPinnedShapes extends BaseHUDPart {
const amountLabel = makeDiv(element, null, ["amountLabel"], ""); const amountLabel = makeDiv(element, null, ["amountLabel"], "");
const goal = this.findGoalValueForShape(key);
if (goal) { if (goal) {
makeDiv(element, null, ["goalLabel"], "/" + formatBigNumber(goal)); makeDiv(element, null, ["goalLabel"], "/" + formatBigNumber(goal));
} }
@ -129,18 +215,24 @@ export class HUDPinnedShapes extends BaseHUDPart {
key, key,
element, element,
amountLabel, amountLabel,
lastRenderedValue: -1, lastRenderedValue: "",
}); });
} }
/**
* Updates all amount labels
*/
update() { update() {
for (let i = 0; i < this.handles.length; ++i) { for (let i = 0; i < this.handles.length; ++i) {
const handle = this.handles[i]; const handle = this.handles[i];
const currentValue = this.root.hubGoals.getShapesStoredByKey(handle.key); const currentValue = this.root.hubGoals.getShapesStoredByKey(handle.key);
if (currentValue !== handle.lastRenderedValue) { const currentValueFormatted = formatBigNumber(currentValue);
handle.lastRenderedValue = currentValue; if (currentValueFormatted !== handle.lastRenderedValue) {
handle.amountLabel.innerText = formatBigNumber(currentValue); handle.lastRenderedValue = currentValueFormatted;
handle.amountLabel.innerText = currentValueFormatted;
const goal = this.findGoalValueForShape(handle.key);
handle.element.classList.toggle("completed", goal && currentValue > goal);
} }
} }
} }
@ -150,20 +242,15 @@ export class HUDPinnedShapes extends BaseHUDPart {
* @param {string} key * @param {string} key
*/ */
unpinShape(key) { unpinShape(key) {
for (let i = 0; i < this.pinnedShapes.length; ++i) { arrayDeleteValue(this.pinnedShapes, key);
if (this.pinnedShapes[i].key === key) { this.rerenderFull();
this.pinnedShapes.splice(i, 1);
this.rerenderFull();
return;
}
}
} }
/** /**
* Requests to pin a new shape
* @param {ShapeDefinition} definition * @param {ShapeDefinition} definition
* @param {number} goal
*/ */
pinNewShape(definition, goal) { pinNewShape(definition) {
const key = definition.getHash(); const key = definition.getHash();
if (key === this.root.hubGoals.currentGoal.definition.getHash()) { if (key === this.root.hubGoals.currentGoal.definition.getHash()) {
// Can not pin current goal // Can not pin current goal
@ -171,18 +258,16 @@ export class HUDPinnedShapes extends BaseHUDPart {
} }
if (key === blueprintShape) { if (key === blueprintShape) {
// Can not pin the blueprint shape
return; return;
} }
for (let i = 0; i < this.pinnedShapes.length; ++i) { // Check if its already pinned
if (this.pinnedShapes[i].key === key) { if (this.pinnedShapes.indexOf(key) >= 0) {
// Already pinned return;
this.pinnedShapes[i].goal = Math_max(this.pinnedShapes[i].goal, goal);
return;
}
} }
this.pinnedShapes.push({ key, goal }); this.pinnedShapes.push(key);
this.rerenderFull(); this.rerenderFull();
} }
} }

View File

@ -0,0 +1,105 @@
import { BaseHUDPart } from "../base_hud_part";
import { KEYMAPPINGS } from "../../key_action_mapper";
import { IS_DEMO, globalConfig } from "../../../core/config";
import { T } from "../../../translations";
import { createLogger } from "../../../core/logging";
import { StaticMapEntityComponent } from "../../components/static_map_entity";
import { Vector } from "../../../core/vector";
import { Math_max, Math_min } from "../../../core/builtins";
import { makeOffscreenBuffer } from "../../../core/buffer_utils";
import { DrawParameters } from "../../../core/draw_parameters";
import { Rectangle } from "../../../core/rectangle";
const logger = createLogger("screenshot_exporter");
export class HUDScreenshotExporter extends BaseHUDPart {
createElements() {}
initialize() {
this.root.keyMapper.getBinding(KEYMAPPINGS.ingame.exportScreenshot).add(this.startExport, this);
}
startExport() {
if (IS_DEMO) {
this.root.hud.parts.dialogs.showFeatureRestrictionInfo(T.demo.features.exportingBase);
return;
}
const { ok } = this.root.hud.parts.dialogs.showInfo(
T.dialogs.exportScreenshotWarning.title,
T.dialogs.exportScreenshotWarning.desc,
["cancel:good", "ok:bad"]
);
ok.add(this.doExport, this);
}
doExport() {
logger.log("Starting export ...");
// Find extends
const staticEntities = this.root.entityMgr.getAllWithComponent(StaticMapEntityComponent);
const minTile = new Vector(0, 0);
const maxTile = new Vector(0, 0);
for (let i = 0; i < staticEntities.length; ++i) {
const bounds = staticEntities[i].components.StaticMapEntity.getTileSpaceBounds();
minTile.x = Math_min(minTile.x, bounds.x);
minTile.y = Math_min(minTile.y, bounds.y);
maxTile.x = Math_max(maxTile.x, bounds.x + bounds.w);
maxTile.y = Math_max(maxTile.y, bounds.y + bounds.h);
}
const minChunk = minTile.divideScalar(globalConfig.mapChunkSize).floor();
const maxChunk = maxTile.divideScalar(globalConfig.mapChunkSize).ceil();
const dimensions = maxChunk.sub(minChunk);
logger.log("Dimensions:", dimensions);
const chunkSizePixels = 128;
const chunkScale = chunkSizePixels / (globalConfig.mapChunkSize * globalConfig.tileSize);
logger.log("Scale:", chunkScale);
logger.log("Allocating buffer, if the factory grew too big it will crash here");
const [canvas, context] = makeOffscreenBuffer(
dimensions.x * chunkSizePixels,
dimensions.y * chunkSizePixels,
{
smooth: true,
reusable: false,
label: "export-buffer",
}
);
logger.log("Got buffer, rendering now ...");
const visibleRect = new Rectangle(
minChunk.x * globalConfig.mapChunkSize * globalConfig.tileSize,
minChunk.y * globalConfig.mapChunkSize * globalConfig.tileSize,
dimensions.x * globalConfig.mapChunkSize * globalConfig.tileSize,
dimensions.y * globalConfig.mapChunkSize * globalConfig.tileSize
);
const parameters = new DrawParameters({
context,
visibleRect,
desiredAtlasScale: "1",
root: this.root,
zoomLevel: chunkScale,
});
context.scale(chunkScale, chunkScale);
context.translate(-visibleRect.x, -visibleRect.y);
// Render all relevant chunks
this.root.map.drawBackground(parameters);
this.root.map.drawForeground(parameters);
// Offer export
logger.log("Rendered buffer, exporting ...");
const image = canvas.toDataURL("image/png");
const link = document.createElement("a");
link.download = "base.png";
link.href = image;
link.click();
logger.log("Done!");
}
}

View File

@ -98,7 +98,9 @@ export class HUDShop extends BaseHUDPart {
// Set description // Set description
handle.elemDescription.innerText = T.shopUpgrades[upgradeId].description handle.elemDescription.innerText = T.shopUpgrades[upgradeId].description
.replace("<currentMult>", currentTierMultiplier.toString()) .replace("<currentMult>", currentTierMultiplier.toString())
.replace("<newMult>", (currentTierMultiplier + tierHandle.improvement).toString()); .replace("<newMult>", (currentTierMultiplier + tierHandle.improvement).toString())
// Backwards compatibility
.replace("<gain>", (tierHandle.improvement * 100.0).toString());
tierHandle.required.forEach(({ shape, amount }) => { tierHandle.required.forEach(({ shape, amount }) => {
const container = makeDiv(handle.elemRequirements, null, ["requirement"]); const container = makeDiv(handle.elemRequirements, null, ["requirement"]);
@ -137,7 +139,7 @@ export class HUDShop extends BaseHUDPart {
pinButton.classList.add("unpinned"); pinButton.classList.add("unpinned");
pinButton.classList.remove("pinned", "alreadyPinned"); pinButton.classList.remove("pinned", "alreadyPinned");
} else { } else {
this.root.hud.signals.shapePinRequested.dispatch(shapeDef, amount); this.root.hud.signals.shapePinRequested.dispatch(shapeDef);
pinButton.classList.add("pinned"); pinButton.classList.add("pinned");
pinButton.classList.remove("unpinned"); pinButton.classList.remove("unpinned");
} }

View File

@ -39,7 +39,7 @@ export class HUDUnlockNotification extends BaseHUDPart {
this.btnClose = document.createElement("button"); this.btnClose = document.createElement("button");
this.btnClose.classList.add("close", "styledButton"); this.btnClose.classList.add("close", "styledButton");
this.btnClose.innerText = "Next level"; this.btnClose.innerText = T.ingame.levelCompleteNotification.buttonNextLevel;
dialog.appendChild(this.btnClose); dialog.appendChild(this.btnClose);
this.trackClicks(this.btnClose, this.requestClose); this.trackClicks(this.btnClose, this.requestClose);

View File

@ -2,6 +2,7 @@ import { BaseHUDPart } from "../base_hud_part";
import { DrawParameters } from "../../../core/draw_parameters"; import { DrawParameters } from "../../../core/draw_parameters";
import { makeDiv } from "../../../core/utils"; import { makeDiv } from "../../../core/utils";
import { THIRDPARTY_URLS } from "../../../core/config"; import { THIRDPARTY_URLS } from "../../../core/config";
import { T } from "../../../translations";
export class HUDWatermark extends BaseHUDPart { export class HUDWatermark extends BaseHUDPart {
createElements(parent) { createElements(parent) {
@ -28,15 +29,15 @@ export class HUDWatermark extends BaseHUDPart {
parameters.context.fillStyle = "#f77"; parameters.context.fillStyle = "#f77";
parameters.context.font = "bold " + this.root.app.getEffectiveUiScale() * 17 + "px GameFont"; parameters.context.font = "bold " + this.root.app.getEffectiveUiScale() * 17 + "px GameFont";
// parameters.context.textAlign = "center"; // parameters.context.textAlign = "center";
parameters.context.fillText("DEMO VERSION", x, this.root.app.getEffectiveUiScale() * 27); parameters.context.fillText(
T.demoBanners.title.toUpperCase(),
x,
this.root.app.getEffectiveUiScale() * 27
);
parameters.context.font = "bold " + this.root.app.getEffectiveUiScale() * 12 + "px GameFont"; parameters.context.font = "bold " + this.root.app.getEffectiveUiScale() * 12 + "px GameFont";
// parameters.context.textAlign = "center"; // parameters.context.textAlign = "center";
parameters.context.fillText( parameters.context.fillText(T.demoBanners.intro, x, this.root.app.getEffectiveUiScale() * 45);
"Please consider to buy the full version!",
x,
this.root.app.getEffectiveUiScale() * 45
);
// parameters.context.textAlign = "left"; // parameters.context.textAlign = "left";
} }

View File

@ -24,7 +24,8 @@ export const KEYMAPPINGS = {
menuOpenStats: { keyCode: key("G") }, menuOpenStats: { keyCode: key("G") },
toggleHud: { keyCode: 113 }, // F2 toggleHud: { keyCode: 113 }, // F2
toggleFPSInfo: { keyCode: 115 }, // F1 exportScreenshot: { keyCode: 114 }, // F3
toggleFPSInfo: { keyCode: 115 }, // F4
}, },
navigation: { navigation: {
@ -65,7 +66,9 @@ export const KEYMAPPINGS = {
massSelectStart: { keyCode: 17 }, // CTRL massSelectStart: { keyCode: 17 }, // CTRL
massSelectSelectMultiple: { keyCode: 16 }, // SHIFT massSelectSelectMultiple: { keyCode: 16 }, // SHIFT
massSelectCopy: { keyCode: key("C") }, massSelectCopy: { keyCode: key("C") },
massSelectCut: { keyCode: key("X") },
confirmMassDelete: { keyCode: 46 }, // DEL confirmMassDelete: { keyCode: 46 }, // DEL
pasteLastBlueprint: { keyCode: key("V") },
}, },
placementModifiers: { placementModifiers: {

View File

@ -64,7 +64,7 @@ export class MapView extends BaseMap {
* Draws all static entities like buildings etc. * Draws all static entities like buildings etc.
* @param {DrawParameters} drawParameters * @param {DrawParameters} drawParameters
*/ */
drawStaticEntities(drawParameters) { drawStaticEntityDebugOverlays(drawParameters) {
const cullRange = drawParameters.visibleRect.toTileCullRectangle(); const cullRange = drawParameters.visibleRect.toTileCullRectangle();
const top = cullRange.top(); const top = cullRange.top();
const right = cullRange.right(); const right = cullRange.right();
@ -90,7 +90,7 @@ export class MapView extends BaseMap {
if (content) { if (content) {
let isBorder = x <= left - 1 || x >= right + 1 || y <= top - 1 || y >= bottom + 1; let isBorder = x <= left - 1 || x >= right + 1 || y <= top - 1 || y >= bottom + 1;
if (!isBorder) { if (!isBorder) {
content.draw(drawParameters); content.drawDebugOverlays(drawParameters);
} }
} }
} }

View File

@ -74,9 +74,7 @@ export class HubSystem extends GameSystemWithFilter {
context.fillText("" + formatBigNumber(delivered), pos.x + textOffsetX, pos.y + textOffsetY); context.fillText("" + formatBigNumber(delivered), pos.x + textOffsetX, pos.y + textOffsetY);
// Required // Required
context.font = "13px GameFont"; context.font = "13px GameFont";
context.fillStyle = "#a4a6b0"; context.fillStyle = "#a4a6b0";
context.fillText( context.fillText(
"/ " + formatBigNumber(goals.required), "/ " + formatBigNumber(goals.required),
@ -85,16 +83,40 @@ export class HubSystem extends GameSystemWithFilter {
); );
// Reward // Reward
context.font = "bold 11px GameFont"; const rewardText = T.storyRewards[goals.reward].title.toUpperCase();
if (rewardText.length > 12) {
context.font = "bold 9px GameFont";
} else {
context.font = "bold 11px GameFont";
}
context.fillStyle = "#fd0752"; context.fillStyle = "#fd0752";
context.textAlign = "center"; context.textAlign = "center";
context.fillText(T.storyRewards[goals.reward].title.toUpperCase(), pos.x, pos.y + 46);
context.fillText(rewardText, pos.x, pos.y + 46);
// Level // Level
context.font = "bold 11px GameFont"; context.font = "bold 11px GameFont";
context.fillStyle = "#fff"; context.fillStyle = "#fff";
context.fillText("" + this.root.hubGoals.level, pos.x - 42, pos.y - 36); context.fillText("" + this.root.hubGoals.level, pos.x - 42, pos.y - 36);
// Texts
context.textAlign = "center";
context.fillStyle = "#fff";
context.font = "bold 7px GameFont";
context.fillText(T.buildings.hub.levelShortcut, pos.x - 42, pos.y - 47);
context.fillStyle = "#64666e";
context.font = "bold 11px GameFont";
context.fillText(T.buildings.hub.deliver.toUpperCase(), pos.x, pos.y - 40);
const unlockText = T.buildings.hub.toUnlock.toUpperCase();
if (unlockText.length > 15) {
context.font = "bold 8px GameFont";
} else {
context.font = "bold 11px GameFont";
}
context.fillText(T.buildings.hub.toUnlock.toUpperCase(), pos.x, pos.y + 30);
context.textAlign = "left"; context.textAlign = "left";
} }
} }

View File

@ -26,4 +26,40 @@ export const LANGUAGES = {
code: "pt", code: "pt",
region: "BR", region: "BR",
}, },
"cs": {
name: "Čeština",
data: require("./built-temp/base-cz.json"),
code: "cs",
region: "",
},
"es-419": {
name: "Español (Latinoamérica)",
data: require("./built-temp/base-es.json"),
code: "es",
region: "419",
},
"pl": {
name: "Polski",
data: require("./built-temp/base-pl.json"),
code: "pl",
region: "",
},
"ru": {
name: "Русский",
data: require("./built-temp/base-ru.json"),
code: "ru",
region: "",
},
"kor": {
name: "한국어",
data: require("./built-temp/base-kor.json"),
code: "kor",
region: "",
},
"nl": {
name: "Nederlands",
data: require("./built-temp/base-nl.json"),
code: "nl",
region: "",
},
}; };

View File

@ -62,6 +62,33 @@ export const scrollWheelSensitivities = [
}, },
]; ];
export const movementSpeeds = [
{
id: "super_slow",
multiplier: 0.25,
},
{
id: "slow",
multiplier: 0.5,
},
{
id: "regular",
multiplier: 1,
},
{
id: "fast",
multiplier: 2,
},
{
id: "super_fast",
multiplier: 4,
},
{
id: "extremely_fast",
multiplier: 8,
},
];
/** @type {Array<BaseSetting>} */ /** @type {Array<BaseSetting>} */
export const allApplicationSettings = [ export const allApplicationSettings = [
new EnumSetting("language", { new EnumSetting("language", {
@ -117,24 +144,13 @@ export const allApplicationSettings = [
*/ */
(app, value) => app.sound.setMusicMuted(value) (app, value) => app.sound.setMusicMuted(value)
), ),
new EnumSetting("scrollWheelSensitivity", {
options: scrollWheelSensitivities.sort((a, b) => a.scale - b.scale),
valueGetter: scale => scale.id,
textGetter: scale => T.settings.labels.scrollWheelSensitivity.sensitivity[scale.id],
category: categoryApp,
restartRequired: false,
changeCb:
/**
* @param {Application} app
*/
(app, id) => app.updateAfterUiScaleChanged(),
}),
// GAME // GAME
new EnumSetting("theme", { new EnumSetting("theme", {
options: Object.keys(THEMES), options: Object.keys(THEMES),
valueGetter: theme => theme, valueGetter: theme => theme,
textGetter: theme => theme.substr(0, 1).toUpperCase() + theme.substr(1), textGetter: theme => T.settings.labels.theme.themes[theme],
category: categoryGame, category: categoryGame,
restartRequired: false, restartRequired: false,
changeCb: changeCb:
@ -149,7 +165,7 @@ export const allApplicationSettings = [
}), }),
new EnumSetting("refreshRate", { new EnumSetting("refreshRate", {
options: ["60", "100", "144", "165"], options: ["60", "100", "144", "165", "250", "500"],
valueGetter: rate => rate, valueGetter: rate => rate,
textGetter: rate => rate + " Hz", textGetter: rate => rate + " Hz",
category: categoryGame, category: categoryGame,
@ -158,6 +174,28 @@ export const allApplicationSettings = [
enabled: !IS_DEMO, enabled: !IS_DEMO,
}), }),
new EnumSetting("scrollWheelSensitivity", {
options: scrollWheelSensitivities.sort((a, b) => a.scale - b.scale),
valueGetter: scale => scale.id,
textGetter: scale => T.settings.labels.scrollWheelSensitivity.sensitivity[scale.id],
category: categoryGame,
restartRequired: false,
changeCb:
/**
* @param {Application} app
*/
(app, id) => app.updateAfterUiScaleChanged(),
}),
new EnumSetting("movementSpeed", {
options: movementSpeeds.sort((a, b) => a.multiplier - b.multiplier),
valueGetter: multiplier => multiplier.id,
textGetter: multiplier => T.settings.labels.movementSpeed.speeds[multiplier.id],
category: categoryGame,
restartRequired: false,
changeCb: (app, id) => {},
}),
new BoolSetting("alwaysMultiplace", categoryGame, (app, value) => {}), new BoolSetting("alwaysMultiplace", categoryGame, (app, value) => {}),
new BoolSetting("offerHints", categoryGame, (app, value) => {}), new BoolSetting("offerHints", categoryGame, (app, value) => {}),
]; ];
@ -176,6 +214,7 @@ class SettingsStorage {
this.theme = "light"; this.theme = "light";
this.refreshRate = "60"; this.refreshRate = "60";
this.scrollWheelSensitivity = "regular"; this.scrollWheelSensitivity = "regular";
this.movementSpeed = "regular";
this.language = "auto-detect"; this.language = "auto-detect";
this.alwaysMultiplace = false; this.alwaysMultiplace = false;
@ -263,6 +302,17 @@ export class ApplicationSettings extends ReadWriteProxy {
return 1; return 1;
} }
getMovementSpeed() {
const id = this.getAllSettings().movementSpeed;
for (let i = 0; i < movementSpeeds.length; ++i) {
if (movementSpeeds[i].id === id) {
return movementSpeeds[i].multiplier;
}
}
logger.error("Unknown movement speed id:", id);
return 1;
}
getIsFullScreen() { getIsFullScreen() {
return this.getAllSettings().fullscreen; return this.getAllSettings().fullscreen;
} }
@ -358,7 +408,7 @@ export class ApplicationSettings extends ReadWriteProxy {
} }
getCurrentVersion() { getCurrentVersion() {
return 9; return 10;
} }
/** @param {{settings: SettingsStorage, version: number}} data */ /** @param {{settings: SettingsStorage, version: number}} data */
@ -390,6 +440,11 @@ export class ApplicationSettings extends ReadWriteProxy {
data.version = 9; data.version = 9;
} }
if (data.version < 10) {
data.settings.movementSpeed = "regular";
data.version = 10;
}
return ExplainedResult.good(); return ExplainedResult.good();
} }
} }

View File

@ -9,10 +9,10 @@ import { SavegameSerializer } from "./savegame_serializer";
import { BaseSavegameInterface } from "./savegame_interface"; import { BaseSavegameInterface } from "./savegame_interface";
import { createLogger } from "../core/logging"; import { createLogger } from "../core/logging";
import { globalConfig } from "../core/config"; import { globalConfig } from "../core/config";
import { SavegameInterface_V1000 } from "./schemas/1000";
import { getSavegameInterface, savegameInterfaces } from "./savegame_interface_registry"; import { getSavegameInterface, savegameInterfaces } from "./savegame_interface_registry";
import { SavegameInterface_V1001 } from "./schemas/1001"; import { SavegameInterface_V1001 } from "./schemas/1001";
import { SavegameInterface_V1002 } from "./schemas/1002"; import { SavegameInterface_V1002 } from "./schemas/1002";
import { SavegameInterface_V1003 } from "./schemas/1003";
const logger = createLogger("savegame"); const logger = createLogger("savegame");
@ -44,7 +44,7 @@ export class Savegame extends ReadWriteProxy {
* @returns {number} * @returns {number}
*/ */
static getCurrentVersion() { static getCurrentVersion() {
return 1002; return 1003;
} }
/** /**
@ -93,6 +93,11 @@ export class Savegame extends ReadWriteProxy {
data.version = 1002; data.version = 1002;
} }
if (data.version === 1002) {
SavegameInterface_V1003.migrate1002to1003(data);
data.version = 1003;
}
return ExplainedResult.good(); return ExplainedResult.good();
} }

View File

@ -3,12 +3,14 @@ import { SavegameInterface_V1000 } from "./schemas/1000";
import { createLogger } from "../core/logging"; import { createLogger } from "../core/logging";
import { SavegameInterface_V1001 } from "./schemas/1001"; import { SavegameInterface_V1001 } from "./schemas/1001";
import { SavegameInterface_V1002 } from "./schemas/1002"; import { SavegameInterface_V1002 } from "./schemas/1002";
import { SavegameInterface_V1003 } from "./schemas/1003";
/** @type {Object.<number, typeof BaseSavegameInterface>} */ /** @type {Object.<number, typeof BaseSavegameInterface>} */
export const savegameInterfaces = { export const savegameInterfaces = {
1000: SavegameInterface_V1000, 1000: SavegameInterface_V1000,
1001: SavegameInterface_V1001, 1001: SavegameInterface_V1001,
1002: SavegameInterface_V1002, 1002: SavegameInterface_V1002,
1003: SavegameInterface_V1003,
}; };
const logger = createLogger("savegame_interface_registry"); const logger = createLogger("savegame_interface_registry");

View File

@ -0,0 +1,28 @@
import { createLogger } from "../../core/logging.js";
import { SavegameInterface_V1002 } from "./1002.js";
const schema = require("./1003.json");
const logger = createLogger("savegame_interface/1003");
export class SavegameInterface_V1003 extends SavegameInterface_V1002 {
getVersion() {
return 1003;
}
getSchemaUncached() {
return schema;
}
/**
* @param {import("../savegame_typedefs.js").SavegameData} data
*/
static migrate1002to1003(data) {
logger.log("Migrating 1002 to 1003");
const dump = data.dump;
if (!dump) {
return true;
}
dump.pinnedShapes = { shapes: [] };
}
}

View File

@ -0,0 +1,5 @@
{
"type": "object",
"required": [],
"additionalProperties": true
}

View File

@ -15,17 +15,9 @@ export class AboutState extends TextualGameState {
} }
getMainContentHTML() { getMainContentHTML() {
return ` return T.about.body
This game is open source and developed by <a href="https://github.com/tobspr" target="_blank">Tobias Springer</a> (this is me). .replace("<githublink>", THIRDPARTY_URLS.github)
<br><br> .replace("<discordlink>", THIRDPARTY_URLS.discord);
If you want to contribute, check out <a href="${THIRDPARTY_URLS.github}" target="_blank">shapez.io on github</a>.
<br><br>
This game wouldn't have been possible without the great discord community arround my games - You should really join the <a href="${THIRDPARTY_URLS.discord}" target="_blank">discord server</a>!
<br><br>
The soundtrack was made by <a href="https://soundcloud.com/pettersumelius" target="_blank">Peppsen</a> - He's awesome.
<br><br>
Finally, huge thanks to my best friend <a href="https://github.com/niklas-dahl" target="_blank">Niklas</a> - Without our factorio sessions this game would never have existed.
`;
} }
onEnter() { onEnter() {

View File

@ -29,8 +29,7 @@ export class MainMenuState extends GameState {
<a href="#" class="steamLink" target="_blank">Get the shapez.io standalone!</a> <a href="#" class="steamLink" target="_blank">Get the shapez.io standalone!</a>
`; `;
return ( return `
`
<div class="topButtons"> <div class="topButtons">
<button class="languageChoose" data-languageicon="${this.app.settings.getLanguage()}"></button> <button class="languageChoose" data-languageicon="${this.app.settings.getLanguage()}"></button>
@ -63,20 +62,6 @@ export class MainMenuState extends GameState {
<div class="sideContainer"> <div class="sideContainer">
${IS_DEMO ? `<div class="standaloneBanner">${bannerHtml}</div>` : ""} ${IS_DEMO ? `<div class="standaloneBanner">${bannerHtml}</div>` : ""}
<div class="contest">
<h3>${T.mainMenu.contests.contest_01_03062020.title}</h3>
` +
/*<p>${T.mainMenu.contests.contest_01_03062020.desc}</p>
<button class="styledButton participateContest">${
T.mainMenu.contests.showInfo
}</button>*/
`
<p>${T.mainMenu.contests.contestOver}</p>
</div>
</div> </div>
<div class="mainContainer"> <div class="mainContainer">
@ -111,8 +96,7 @@ export class MainMenuState extends GameState {
<div class="author">Made by <a class="producerLink" target="_blank">Tobias Springer</a></div> <div class="author">Made by <a class="producerLink" target="_blank">Tobias Springer</a></div>
</div> </div>
` `;
);
} }
requestImportSavegame() { requestImportSavegame() {
@ -382,11 +366,19 @@ export class MainMenuState extends GameState {
this.app.adProvider.showVideoAd().then(() => { this.app.adProvider.showVideoAd().then(() => {
this.app.analytics.trackUiClick("resume_game_adcomplete"); this.app.analytics.trackUiClick("resume_game_adcomplete");
const savegame = this.app.savegameMgr.getSavegameById(game.internalId); const savegame = this.app.savegameMgr.getSavegameById(game.internalId);
savegame.readAsync().then(() => { savegame
this.moveToState("InGameState", { .readAsync()
savegame, .then(() => {
this.moveToState("InGameState", {
savegame,
});
})
.catch(err => {
this.dialogs.showWarning(
T.dialogs.gameLoadFailure.title,
T.dialogs.gameLoadFailure.text + "<br><br>" + err
);
}); });
});
}); });
} }

View File

@ -68,38 +68,6 @@ export class PreloadState extends GameState {
startLoading() { startLoading() {
this.setStatus("Booting") this.setStatus("Booting")
.then(() => this.setStatus("Checking for updates"))
.then(() => {
if (G_IS_STANDALONE) {
return Promise.race([
new Promise(resolve => setTimeout(resolve, 10000)),
fetch(
"https://itch.io/api/1/x/wharf/latest?target=tobspr/shapezio&channel_name=windows",
{
cache: "no-cache",
}
)
.then(res => res.json())
.then(({ latest }) => {
if (latest !== G_BUILD_VERSION) {
const { ok } = this.dialogs.showInfo(
T.dialogs.newUpdate.title,
T.dialogs.newUpdate.desc,
["ok:good"]
);
return new Promise(resolve => {
ok.add(resolve);
});
}
})
.catch(err => {
logger.log("Failed to fetch version:", err);
}),
]);
}
})
.then(() => this.setStatus("Creating platform wrapper")) .then(() => this.setStatus("Creating platform wrapper"))
.then(() => this.app.platformWrapper.initialize()) .then(() => this.app.platformWrapper.initialize())
@ -170,15 +138,10 @@ export class PreloadState extends GameState {
.then(() => { .then(() => {
return this.app.savegameMgr.initialize().catch(err => { return this.app.savegameMgr.initialize().catch(err => {
logger.error("Failed to initialize savegames:", err); logger.error("Failed to initialize savegames:", err);
return new Promise(resolve => { alert(
// const { ok } = this.dialogs.showWarning( "Your savegames failed to load, it seems your data files got corrupted. I'm so sorry!\n\n(This can happen if your pc crashed while a game was saved).\n\nYou can try re-importing your savegames."
// T.preload.savegame_corrupt_dialog.title, );
// T.preload.savegame_corrupt_dialog.content, return this.app.savegameMgr.writeAsync();
// ["ok:good"]
// );
// ok.add(resolve);
alert("Your savegames failed to load. They might not show up. Sorry!");
});
}); });
}) })

View File

@ -19,7 +19,7 @@ export class SettingsState extends TextualGameState {
${ ${
this.app.platformWrapper.getSupportsKeyboard() this.app.platformWrapper.getSupportsKeyboard()
? ` ? `
<button class="styledButton editKeybindings">Keybindings</button> <button class="styledButton editKeybindings">${T.keybindings.title}</button>
` `
: "" : ""
} }

View File

@ -84,7 +84,6 @@ export function autoDetectLanguageId() {
} else { } else {
logger.warn("Navigator has no languages prop"); logger.warn("Navigator has no languages prop");
} }
languages = ["de-De"];
for (let i = 0; i < languages.length; ++i) { for (let i = 0; i < languages.length; ++i) {
logger.log("Trying to find language target for", languages[i]); logger.log("Trying to find language target for", languages[i]);
@ -93,7 +92,9 @@ export function autoDetectLanguageId() {
return trans; return trans;
} }
} }
return null;
// Fallback
return "en";
} }
function matchDataRecursive(dest, src) { function matchDataRecursive(dest, src) {

82
sync-translations.js Normal file
View File

@ -0,0 +1,82 @@
// Synchronizes all translations
const fs = require("fs");
const matchAll = require("match-all");
const path = require("path");
const YAWN = require("yawn-yaml/cjs");
const YAML = require("yaml");
const files = fs
.readdirSync(path.join(__dirname, "translations"))
.filter(x => x.endsWith(".yaml"))
.filter(x => x.indexOf("base-en") < 0);
const originalContents = fs
.readFileSync(path.join(__dirname, "translations", "base-en.yaml"))
.toString("utf-8");
const original = YAML.parse(originalContents);
const placeholderRegexp = /<([a-zA-Z_0-9]+)>/gi;
function match(originalObj, translatedObj, path = "/") {
for (const key in originalObj) {
if (!translatedObj[key]) {
console.warn(" | Missing key", path + key);
translatedObj[key] = originalObj[key];
continue;
}
const valueOriginal = originalObj[key];
const valueMatching = translatedObj[key];
if (typeof valueOriginal !== typeof valueMatching) {
console.warn(" | MISMATCHING type (obj|non-obj) in", path + key);
continue;
}
if (typeof valueOriginal === "object") {
match(valueOriginal, valueMatching, path + key + "/");
} else if (typeof valueOriginal === "string") {
// todo
const originalPlaceholders = matchAll(valueOriginal, placeholderRegexp).toArray();
const translatedPlaceholders = matchAll(valueMatching, placeholderRegexp).toArray();
if (originalPlaceholders.length !== translatedPlaceholders.length) {
console.warn(
" | Mismatching placeholders in",
path + key,
"->",
originalPlaceholders,
"vs",
translatedPlaceholders
);
translatedObj[key] = originalObj[key];
continue;
}
} else {
console.warn(" | Unknown type: ", typeof valueOriginal);
}
// const matching = translatedObj[key];
}
for (const key in translatedObj) {
if (!originalObj[key]) {
console.warn(" | Obsolete key", path + key);
delete translatedObj[key];
}
}
}
for (let i = 0; i < files.length; ++i) {
const filePath = path.join(__dirname, "translations", files[i]);
console.log("Processing", files[i]);
const translatedContents = fs.readFileSync(filePath).toString("utf-8");
const translated = YAML.parse(translatedContents);
const handle = new YAWN(translatedContents);
const json = handle.json;
match(original, json, "/");
handle.json = json;
fs.writeFileSync(filePath, handle.yaml, "utf-8");
}

View File

@ -20,6 +20,11 @@ The base translation is `base-en.yaml`. It will always contain the latest phrase
- [Chinese (Simplified)](base-zh-CN.yaml) - [Chinese (Simplified)](base-zh-CN.yaml)
- [Chinese (Traditional)](base-zh-TW.yaml) - [Chinese (Traditional)](base-zh-TW.yaml)
- [Spanish](base-es.yaml) - [Spanish](base-es.yaml)
- [Hungarian](base-hu.yaml)
- [Turkish](base-tr.yaml)
- [Japanese](base-ja.yaml)
- [Lithuanian](base-lt.yaml)
- [Arabic](base-ar.yaml)
(If you want to translate into a new language, see below!) (If you want to translate into a new language, see below!)
@ -40,4 +45,4 @@ PS: I'm super busy, but I'll give my best to do it quickly!
## Updating a language to the latest version ## Updating a language to the latest version
Right now there is no possibility to automatically update a translation to the latest version. It is required to manually check the base translation (`base-en.yaml`) and compare it to the other translations to remove unused keys and add new ones. Run `yarn syncTranslations` in the root directory to synchronize all translations to the latest version! This will remove obsolete keys and add newly added keys. (Run `yarn` before to install packes).

766
translations/base-ar.yaml Normal file
View File

@ -0,0 +1,766 @@
#
# GAME TRANSLATIONS
#
# Contributing:
#
# If you want to contribute, please make a pull request on this respository
# and I will have a look.
#
# Placeholders:
#
# Do *not* replace placeholders! Placeholders have a special syntax like
# `Hotkey: <key>`. They are encapsulated within angle brackets. The correct
# translation for this one in German for example would be: `Taste: <key>` (notice
# how the placeholder stayed '<key>' and was not replaced!)
#
# Adding a new language:
#
# If you want to add a new language, ask me in the discord and I will setup
# the basic structure so the game also detects it.
#
steamPage:
# This is the short text appearing on the steam page
shortText: shapez.io is a game about building factories to automate the creation and combination of increasingly complex shapes within an infinite map.
# This is the long description for the steam page - It is contained here so you can help to translate it, and I will regulary update the store page.
# NOTICE:
# - Do not translate the first line (This is the gif image at the start of the store)
# - Please keep the markup (Stuff like [b], [list] etc) in the same format
longText: >-
[img]{STEAM_APP_IMAGE}/extras/store_page_gif.gif[/img]
shapez.io is a game about building factories to automate the creation and combination of shapes. Deliver the requested, increasingly complex shapes to progress within the game and unlock upgrades to speed up your factory.
Since the demand raises you will have to scale up your factory to fit the needs - Don't forget about resources though, you will have to expand in the [b]infinite map[/b]!
Since shapes can get boring soon you need to mix colors and paint your shapes with it - Combine red, green and blue color resources to produce different colors and paint shapes with it to satisfy the demand.
This game features 18 levels (Which should keep you busy for hours already!) but I'm constantly adding new content - There is a lot planned!
[b]Standalone Advantages[/b]
[list]
[*] Waypoints
[*] Unlimited Savegames
[*] Dark Mode
[*] More settings
[*] Allow me to further develop shapez.io ❤️
[*] More features in the future!
[/list]
[b]Planned features & Community suggestions[/b]
This game is open source - Anybody can contribute! Besides of that, I listen [b]a lot[/b] to the community! I try to read all suggestions and take as much feedback into account as possible.
[list]
[*] Story mode where buildings cost shapes
[*] More levels & buildings (standalone exclusive)
[*] Different maps, and maybe map obstacles
[*] Configurable map creation (Edit number and size of patches, seed, and more)
[*] More types of shapes
[*] More performance improvements (Although the game already runs pretty good!)
[*] Color blind mode
[*] And much more!
[/list]
Be sure to check out my trello board for the full roadmap! https://trello.com/b/ISQncpJP/shapezio
global:
loading: Loading
error: Error
# How big numbers are rendered, e.g. "10,000"
thousandsDivider: ","
# The suffix for large numbers, e.g. 1.3k, 400.2M, etc.
suffix:
thousands: k
millions: M
billions: B
trillions: T
# Shown for infinitely big numbers
infinite: inf
time:
# Used for formatting past time dates
oneSecondAgo: one second ago
xSecondsAgo: <x> seconds ago
oneMinuteAgo: one minute ago
xMinutesAgo: <x> minutes ago
oneHourAgo: one hour ago
xHoursAgo: <x> hours ago
oneDayAgo: one day ago
xDaysAgo: <x> days ago
# Short formats for times, e.g. '5h 23m'
secondsShort: <seconds>s
minutesAndSecondsShort: <minutes>m <seconds>s
hoursAndMinutesShort: <hours>h <minutes>m
xMinutes: <x> minutes
keys:
tab: TAB
control: CTRL
alt: ALT
escape: ESC
shift: SHIFT
space: SPACE
demoBanners:
# This is the "advertisement" shown in the main menu and other various places
title: Demo Version
intro: >-
Get the standalone to unlock all features!
mainMenu:
play: Play
changelog: Changelog
importSavegame: Import
openSourceHint: This game is open source!
discordLink: Official Discord Server
helpTranslate: Help translate!
# This is shown when using firefox and other browsers which are not supported.
browserWarning: >-
Sorry, but the game is known to run slow on your browser! Get the standalone version or download chrome for the full experience.
savegameLevel: Level <x>
savegameLevelUnknown: Unknown Level
contests:
contest_01_03062020:
title: "Contest #01"
desc: Win <strong>$25</strong> for the coolest base!
longDesc: >-
To give something back to you, I thought it would be cool to make weekly contests!
<br><br>
<strong>This weeks topic:</strong> Build the coolest base!
<br><br>
Here's the deal:<br>
<ul class="bucketList">
<li>Submit a screenshot of your base to <strong>contest@shapez.io</strong></li>
<li>Bonus points if you share it on social media!</li>
<li>I will choose 5 screenshots and propose it to the <strong>discord</strong> community to vote.</li>
<li>The winner gets <strong>$25</strong> (Paypal, Amazon Gift Card, whatever you prefer)</li>
<li>Deadline: 07.06.2020 12:00 AM CEST</li>
</ul>
<br>
I'm looking forward to seeing your awesome creations!
showInfo: View
contestOver: This contest has ended - Join the discord to get noticed about new contests!
dialogs:
buttons:
ok: OK
delete: Delete
cancel: Cancel
later: Later
restart: Restart
reset: Reset
getStandalone: Get Standalone
deleteGame: I know what I do
viewUpdate: View Update
showUpgrades: Show Upgrades
showKeybindings: Show Keybindings
importSavegameError:
title: Import Error
text: >-
Failed to import your savegame:
importSavegameSuccess:
title: Savegame Imported
text: >-
Your savegame has been successfully imported.
gameLoadFailure:
title: Game is broken
text: >-
Failed to load your savegame:
confirmSavegameDelete:
title: Confirm deletion
text: >-
Are you sure you want to delete the game?
savegameDeletionError:
title: Failed to delete
text: >-
Failed to delete the savegame:
restartRequired:
title: Restart required
text: >-
You need to restart the game to apply the settings.
editKeybinding:
title: Change Keybinding
desc: Press the key or mouse button you want to assign, or escape to cancel.
resetKeybindingsConfirmation:
title: Reset keybindings
desc: This will reset all keybindings to their default values. Please confirm.
keybindingsResetOk:
title: Keybindings reset
desc: The keybindings have been reset to their respective defaults!
featureRestriction:
title: Demo Version
desc: You tried to access a feature (<feature>) which is not available in the demo. Consider to get the standalone for the full experience!
oneSavegameLimit:
title: Limited savegames
desc: You can only have one savegame at a time in the demo version. Please remove the existing one or get the standalone!
updateSummary:
title: New update!
desc: >-
Here are the changes since you last played:
upgradesIntroduction:
title: Unlock Upgrades
desc: >-
All shapes you produce can be used to unlock upgrades - <strong>Don't destroy your old factories!</strong>
The upgrades tab can be found on the top right corner of the screen.
massDeleteConfirm:
title: Confirm delete
desc: >-
You are deleting a lot of buildings (<count> to be exact)! Are you sure you want to do this?
blueprintsNotUnlocked:
title: Not unlocked yet
desc: >-
Complete level 12 to unlock Blueprints!
keybindingsIntroduction:
title: Useful keybindings
desc: >-
This game has a lot of keybindings which make it easier to build big factories.
Here are a few, but be sure to <strong>check out the keybindings</strong>!<br><br>
<code class='keybinding'>CTRL</code> + Drag: Select an area.<br>
<code class='keybinding'>SHIFT</code>: Hold to place multiple of one building.<br>
<code class='keybinding'>ALT</code>: Invert orientation of placed belts.<br>
createMarker:
title: New Marker
desc: Give it a meaningful name
markerDemoLimit:
desc: You can only create two custom markers in the demo. Get the standalone for unlimited markers!
massCutConfirm:
title: Confirm cut
desc: >-
You are cutting a lot of buildings (<count> to be exact)! Are you sure you
want to do this?
exportScreenshotWarning:
title: Export screenshot
desc: >-
You requested to export your base as a screenshot. Please note that this can
be quite slow for a big base and even crash your game!
ingame:
# This is shown in the top left corner and displays useful keybindings in
# every situation
keybindingsOverlay:
moveMap: Move
selectBuildings: Select area
stopPlacement: Stop placement
rotateBuilding: Rotate building
placeMultiple: Place multiple
reverseOrientation: Reverse orientation
disableAutoOrientation: Disable auto orientation
toggleHud: Toggle HUD
placeBuilding: Place building
createMarker: Create Marker
delete: Destroy
pasteLastBlueprint: Paste last blueprint
# Everything related to placing buildings (I.e. as soon as you selected a building
# from the toolbar)
buildingPlacement:
# Buildings can have different variants which are unlocked at later levels,
# and this is the hint shown when there are multiple variants available.
cycleBuildingVariants: Press <key> to cycle variants.
# Shows the hotkey in the ui, e.g. "Hotkey: Q"
hotkeyLabel: >-
Hotkey: <key>
infoTexts:
speed: Speed
range: Range
storage: Storage
oneItemPerSecond: 1 item / second
itemsPerSecond: <x> items / s
itemsPerSecondDouble: (x2)
tiles: <x> tiles
# The notification when completing a level
levelCompleteNotification:
# <level> is replaced by the actual level, so this gets 'Level 03' for example.
levelTitle: Level <level>
completed: Completed
unlockText: Unlocked <reward>!
buttonNextLevel: Next Level
# Notifications on the lower right
notifications:
newUpgrade: A new upgrade is available!
gameSaved: Your game has been saved.
# Mass select information, this is when you hold CTRL and then drag with your mouse
# to select multiple buildings
massSelect:
infoText: Press <keyCut> to cut, <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel.
# The "Upgrades" window
shop:
title: Upgrades
buttonUnlock: Upgrade
# Gets replaced to e.g. "Tier IX"
tier: Tier <x>
# The roman number for each tier
tierLabels: [I, II, III, IV, V, VI, VII, VIII, IX, X]
maximumLevel: MAXIMUM LEVEL (Speed x<currentMult>)
# The "Statistics" window
statistics:
title: Statistics
dataSources:
stored:
title: Stored
description: Displaying amount of stored shapes in your central building.
produced:
title: Produced
description: Displaying all shapes your whole factory produces, including intermediate products.
delivered:
title: Delivered
description: Displaying shapes which are delivered to your central building.
noShapesProduced: No shapes have been produced so far.
# Displays the shapes per minute, e.g. '523 / m'
shapesPerMinute: <shapes> / m
# Settings menu, when you press "ESC"
settingsMenu:
playtime: Playtime
buildingsPlaced: Buildings
beltsPlaced: Belts
buttons:
continue: Continue
settings: Settings
menu: Return to menu
# Bottom left tutorial hints
tutorialHints:
title: Need help?
showHint: Show hint
hideHint: Close
# When placing a blueprint
blueprintPlacer:
cost: Cost
# Map markers
waypoints:
waypoints: Markers
hub: HUB
description: Left-click a marker to jump to it, right-click to delete it.<br><br>Press <keybinding> to create a marker from the current view, or <strong>right-click</strong> to create a marker at the selected location.
creationSuccessNotification: Marker has been created.
# Interactive tutorial
interactiveTutorial:
title: Tutorial
hints:
1_1_extractor: Place an <strong>extractor</strong> on top of a <strong>circle shape</strong> to extract it!
1_2_conveyor: >-
Connect the extractor with a <strong>conveyor belt</strong> to your hub!<br><br>Tip: <strong>Click and drag</strong> the belt with your mouse!
1_3_expand: >-
This is <strong>NOT</strong> an idle game! Build more extractors and belts to finish the goal quicker.<br><br>Tip: Hold <strong>SHIFT</strong> to place multiple extractors, and use <strong>R</strong> to rotate them.
# All shop upgrades
shopUpgrades:
belt:
name: Belts, Distributor & Tunnels
description: Speed x<currentMult> → x<newMult>
miner:
name: Extraction
description: Speed x<currentMult> → x<newMult>
processors:
name: Cutting, Rotating & Stacking
description: Speed x<currentMult> → x<newMult>
painting:
name: Mixing & Painting
description: Speed x<currentMult> → x<newMult>
# Buildings and their name / description
buildings:
hub:
deliver: Deliver
toUnlock: to unlock
levelShortcut: LVL
belt:
default:
name: &belt Conveyor Belt
description: Transports items, hold and drag to place multiple.
miner: # Internal name for the Extractor
default:
name: &miner Extractor
description: Place over a shape or color to extract it.
chainable:
name: Extractor (Chain)
description: Place over a shape or color to extract it. Can be chained.
underground_belt: # Internal name for the Tunnel
default:
name: &underground_belt Tunnel
description: Allows to tunnel resources under buildings and belts.
tier2:
name: Tunnel Tier II
description: Allows to tunnel resources under buildings and belts.
splitter: # Internal name for the Balancer
default:
name: &splitter Balancer
description: Multifunctional - Evenly distributes all inputs onto all outputs.
compact:
name: Merger (compact)
description: Merges two conveyor belts into one.
compact-inverse:
name: Merger (compact)
description: Merges two conveyor belts into one.
cutter:
default:
name: &cutter Cutter
description: Cuts shapes from top to bottom and outputs both halfs. <strong>If you use only one part, be sure to destroy the other part or it will stall!</strong>
quad:
name: Cutter (Quad)
description: Cuts shapes into four parts. <strong>If you use only one part, be sure to destroy the other parts or it will stall!</strong>
rotater:
default:
name: &rotater Rotate
description: Rotates shapes clockwise by 90 degrees.
ccw:
name: Rotate (CCW)
description: Rotates shapes counter clockwise by 90 degrees.
stacker:
default:
name: &stacker Stacker
description: Stacks both items. If they can not be merged, the right item is placed above the left item.
mixer:
default:
name: &mixer Color Mixer
description: Mixes two colors using additive blending.
painter:
default:
name: &painter Painter
description: Colors the whole shape on the left input with the color from the top input.
double:
name: Painter (Double)
description: Colors the shapes on the left inputs with the color from the top input.
quad:
name: Painter (Quad)
description: Allows to color each quadrant of the shape with a different color.
trash:
default:
name: &trash Trash
description: Accepts inputs from all sides and destroys them. Forever.
storage:
name: Storage
description: Stores excess items, up to a given capacity. Can be used as an overflow gate.
storyRewards:
# Those are the rewards gained from completing the store
reward_cutter_and_trash:
title: Cutting Shapes
desc: You just unlocked the <strong>cutter</strong> - it cuts shapes half from <strong>top to bottom</strong> regardless of its orientation!<br><br>Be sure to get rid of the waste, or otherwise <strong>it will stall</strong> - For this purpose I gave you a trash, which destroys everything you put into it!
reward_rotater:
title: Rotating
desc: The <strong>rotater</strong> has been unlocked! It rotates shapes clockwise by 90 degrees.
reward_painter:
title: Painting
desc: >-
The <strong>painter</strong> has been unlocked - Extract some color veins (just as you do with shapes) and combine it with a shape in the painter to color them!<br><br>PS: If you are colorblind, I'm working on a solution already!
reward_mixer:
title: Color Mixing
desc: The <strong>mixer</strong> has been unlocked - Combine two colors using <strong>additive blending</strong> with this building!
reward_stacker:
title: Combiner
desc: You can now combine shapes with the <strong>combiner</strong>! Both inputs are combined, and if they can be put next to each other, they will be <strong>fused</strong>. If not, the right input is <strong>stacked on top</strong> of the left input!
reward_splitter:
title: Splitter/Merger
desc: The multifunctional <strong>balancer</strong> has been unlocked - It can be used to build bigger factories by <strong>splitting and merging items</strong> onto multiple belts!<br><br>
reward_tunnel:
title: Tunnel
desc: The <strong>tunnel</strong> has been unlocked - You can now tunnel items through belts and buildings with it!
reward_rotater_ccw:
title: CCW Rotating
desc: You have unlocked a variant of the <strong>rotater</strong> - It allows to rotate counter clockwise! To build it, select the rotater and <strong>press 'T' to cycle its variants</strong>!
reward_miner_chainable:
title: Chaining Extractor
desc: You have unlocked the <strong>chaining extractor</strong>! It can <strong>forward its resources</strong> to other extractors so you can more efficiently extract resources!
reward_underground_belt_tier_2:
title: Tunnel Tier II
desc: You have unlocked a new variant of the <strong>tunnel</strong> - It has a <strong>bigger range</strong>, and you can also mix-n-match those tunnels now!
reward_splitter_compact:
title: Compact Balancer
desc: >-
You have unlocked a compact variant of the <strong>balancer</strong> - It accepts two inputs and merges them into one!
reward_cutter_quad:
title: Quad Cutting
desc: You have unlocked a variant of the <strong>cutter</strong> - It allows you to cut shapes in <strong>four parts</strong> instead of just two!
reward_painter_double:
title: Double Painting
desc: You have unlocked a variant of the <strong>painter</strong> - It works as the regular painter but processes <strong>two shapes at once</strong> consuming just one color instead of two!
reward_painter_quad:
title: Quad Painting
desc: You have unlocked a variant of the <strong>painter</strong> - It allows to paint each part of the shape individually!
reward_storage:
title: Storage Buffer
desc: You have unlocked a variant of the <strong>trash</strong> - It allows to store items up to a given capacity!
reward_freeplay:
title: Freeplay
desc: You did it! You unlocked the <strong>free-play mode</strong>! This means that shapes are now randomly generated! (No worries, more content is planned for the standalone!)
reward_blueprints:
title: Blueprints
desc: You can now <strong>copy and paste</strong> parts of your factory! Select an area (Hold CTRL, then drag with your mouse), and press 'C' to copy it.<br><br>Pasting it is <strong>not free</strong>, you need to produce <strong>blueprint shapes</strong> to afford it! (Those you just delivered).
# Special reward, which is shown when there is no reward actually
no_reward:
title: Next level
desc: >-
This level gave you no reward, but the next one will! <br><br> PS: Better don't destroy your existing factory - You need <strong>all</strong> those shapes later again to <strong>unlock upgrades</strong>!
no_reward_freeplay:
title: Next level
desc: >-
Congratulations! By the way, more content is planned for the standalone!
settings:
title: Settings
categories:
game: Game
app: Application
versionBadges:
dev: Development
staging: Staging
prod: Production
buildDate: Built <at-date>
labels:
uiScale:
title: Interface scale
description: >-
Changes the size of the user interface. The interface will still scale based on your device resolution, but this setting controls the amount of scale.
scales:
super_small: Super small
small: Small
regular: Regular
large: Large
huge: Huge
scrollWheelSensitivity:
title: Zoom sensitivity
description: >-
Changes how sensitive the zoom is (Either mouse wheel or trackpad).
sensitivity:
super_slow: Super slow
slow: Slow
regular: Regular
fast: Fast
super_fast: Super fast
language:
title: Language
description: >-
Change the language. All translations are user contributed and might be incomplete!
fullscreen:
title: Fullscreen
description: >-
It is recommended to play the game in fullscreen to get the best experience. Only available in the standalone.
soundsMuted:
title: Mute Sounds
description: >-
If enabled, mutes all sound effects.
musicMuted:
title: Mute Music
description: >-
If enabled, mutes all music.
theme:
title: Game theme
description: >-
Choose the game theme (light / dark).
themes:
dark: Dark
light: Light
refreshRate:
title: Simulation Target
description: >-
If you have a 144hz monitor, change the refresh rate here so the game will properly simulate at higher refresh rates. This might actually decrease the FPS if your computer is too slow.
alwaysMultiplace:
title: Multiplace
description: >-
If enabled, all buildings will stay selected after placement until you cancel it. This is equivalent to holding SHIFT permanently.
offerHints:
title: Hints & Tutorials
description: >-
Whether to offer hints and tutorials while playing. Also hides certain UI elements onto a given level to make it easier to get into the game.
movementSpeed:
title: Movement speed
description: Changes how fast the view moves when using the keyboard.
speeds:
super_slow: Super slow
slow: Slow
regular: Regular
fast: Fast
super_fast: Super Fast
extremely_fast: Extremely Fast
keybindings:
title: Keybindings
hint: >-
Tip: Be sure to make use of CTRL, SHIFT and ALT! They enable different placement options.
resetKeybindings: Reset Keybindings
categoryLabels:
general: Application
ingame: Game
navigation: Navigating
placement: Placement
massSelect: Mass Select
buildings: Building Shortcuts
placementModifiers: Placement Modifiers
mappings:
confirm: Confirm
back: Back
mapMoveUp: Move Up
mapMoveRight: Move Right
mapMoveDown: Move Down
mapMoveLeft: Move Left
centerMap: Center Map
mapZoomIn: Zoom in
mapZoomOut: Zoom out
createMarker: Create Marker
menuOpenShop: Upgrades
menuOpenStats: Statistics
toggleHud: Toggle HUD
toggleFPSInfo: Toggle FPS and Debug Info
belt: *belt
splitter: *splitter
underground_belt: *underground_belt
miner: *miner
cutter: *cutter
rotater: *rotater
stacker: *stacker
mixer: *mixer
painter: *painter
trash: *trash
abortBuildingPlacement: Abort Placement
rotateWhilePlacing: Rotate
rotateInverseModifier: >-
Modifier: Rotate CCW instead
cycleBuildingVariants: Cycle Variants
confirmMassDelete: Confirm Mass Delete
cycleBuildings: Cycle Buildings
massSelectStart: Hold and drag to start
massSelectSelectMultiple: Select multiple areas
massSelectCopy: Copy area
placementDisableAutoOrientation: Disable automatic orientation
placeMultiple: Stay in placement mode
placeInverse: Invert automatic belt orientation
pasteLastBlueprint: Paste last blueprint
massSelectCut: Cut area
exportScreenshot: Export whole Base as Image
about:
title: About this Game
body: >-
This game is open source and developed by <a href="https://github.com/tobspr"
target="_blank">Tobias Springer</a> (this is me).<br><br>
If you want to contribute, check out <a href="<githublink>"
target="_blank">shapez.io on github</a>.<br><br>
This game wouldn't have been possible without the great discord community
around my games - You should really join the <a href="<discordlink>"
target="_blank">discord server</a>!<br><br>
The soundtrack was made by <a href="https://soundcloud.com/pettersumelius"
target="_blank">Peppsen</a> - He's awesome.<br><br>
Finally, huge thanks to my best friend <a
href="https://github.com/niklas-dahl" target="_blank">Niklas</a> - Without our
factorio sessions this game would never have existed.
changelog:
title: Changelog
demo:
features:
restoringGames: Restoring savegames
importingGames: Importing savegames
oneGameLimit: Limited to one savegame
customizeKeybindings: Customizing Keybindings
exportingBase: Exporting whole Base as Image
settingNotAvailable: Not available in the demo.

749
translations/base-cz.yaml Normal file
View File

@ -0,0 +1,749 @@
# Czech translation
steamPage:
# This is the short text appearing on the steam page
shortText: shapez.io je hra o stavbě továren pro automatizaci výroby a kombinování čím dál složitějších tvarů na nekonečné mapě.
# This is the long description for the steam page - It is contained here so you can help to translate it, and I will regulary update the store page.
# NOTICE:
# - Do not translate the first line (This is the gif image at the start of the store)
# - Please keep the markup (Stuff like [b], [list] etc) in the same format
longText: >-
[img]{STEAM_APP_IMAGE}/extras/store_page_gif.gif[/img]
shapez.io je hra o stavbě továren pro automatizaci výroby a kombinování tvarů. Poskytněte vyžadované, stále složitější tvary, aby jste postoupili ve hře dále, a odemkněte vylepšení pro zrychlení vaší továrny.
Protože poptávka postupně roste, musíte svou továrnu rozšiřovat tak, aby vyhověla potřebám - Nové zdroje, najdete na [b]nekonečné mapě[/b]!
Jen tvary by byly nuda, proto máme pigmenty kterými musíte dílky obarvit - zkombinujte červené, zelené a modré barvivo pro vytvoření dalších odstínů a obarvěte s nimi tvary pro uspokojení poptávky.
Hra obsahuje 18 úrovní (což by vás mělo zaměstnat na spoustu hodin!), ale nový obsah je neustále přidáván - je toho hodně naplánováno!
[b]Výhody plné hry[/b]
[list]
[*] Označování pozic na mapě
[*] Neomezený počet uložených her
[*] Tmavý motiv
[*] Více nastavení
[*] Pomůžete mi dále vyvíjet shapez.io ❤️
[*] Více funkcí v budoucnu!
[/list]
[b]Plánované funkce a komunitní návrhy[/b]
Tato hra je open source - kdokoli může přispět! Kromě toho [b]hodně[/b] poslouchám komunitu! Snažím se přečíst si všechny návrhy a vzít v úvahu zpětnou vazbu.
[list]
[*] Mód s příběhem, kde stavba budov stojí tvary
[*] Více úrovní a budov (exkluzivní pro plnou verzi)
[*] Různé mapy a zábrany na mapě
[*] Konfigurace generátoru map (úprava počtu a velikosti nálezišť, seed map, a další)
[*] Více tvarů
[*] Další zlepšení výkonu (I když hra již běží docela dobře!)
[*] Režim pro barvoslepé
[*] A mnohem více!
[/list]
Nezapomeňte se podívat na moji Trello nástěnku pro úplný plán! https://trello.com/b/ISQncpJP/shapezio
global:
loading: Načítám
error: Chyba
# How big numbers are rendered, e.g. "10,000"
thousandsDivider: " "
# The suffix for large numbers, e.g. 1.3k, 400.2M, etc.
suffix:
thousands: k
millions: M
billions: B
trillions: T
# Shown for infinitely big numbers
infinite: nekonečno
time:
# Used for formatting past time dates
oneSecondAgo: před sekundou
xSecondsAgo: před <x> sekundami
oneMinuteAgo: před minutou
xMinutesAgo: před <x> minutami
oneHourAgo: před hodinou
xHoursAgo: před <x> hodinami
oneDayAgo: včera
xDaysAgo: před <x> dny
# Short formats for times, e.g. '5h 23m'
secondsShort: <seconds>s
minutesAndSecondsShort: <minutes>m <seconds>s
hoursAndMinutesShort: <hours>h <minutes>m
xMinutes: <x> minut
keys:
tab: TAB
control: CTRL
alt: ALT
escape: ESC
shift: SHIFT
space: SPACE
demoBanners:
# This is the "advertisement" shown in the main menu and other various places
title: Demo verze
intro: >-
Získejte plnou verzi pro odemknutí všech funkcí!
mainMenu:
play: Hrát
changelog: Změny
importSavegame: Importovat
openSourceHint: Tato hra je open source!
discordLink: Oficiální Discord Server
helpTranslate: Pomozte přeložit hru!
# This is shown when using firefox and other browsers which are not supported.
browserWarning: >-
Hrajete v nepodporovaném prohlížeči, je možné že hra poběží pomalu! Pořiďte si samostatnou verzi nebo vyzkoušejte prohlížeč Chrome pro plnohodnotný zážitek.
savegameLevel: Úroveň <x>
savegameLevelUnknown: Neznámá úroveň
contests:
contest_01_03062020:
title: "Soutěž #01"
desc: Vyhraj <strong>$25</strong> za nejvíc cool základnu!
longDesc: >-
Abych vám poděkoval, myslel jsem, že by bylo skvělé dělat týdenní soutěže!
<br><br>
<strong>Téma tohoto týdne:</strong> Postavte nejvíc cool základnu!
<br><br>
Zde je zadání:<br>
<ul class="bucketList">
<li>Zašlete screenshot své základny na <strong>contest@shapez.io</strong></li>
<li>Bonusové body za sdílení na sociálních médiích!</li>
<li>Vyberu 5 screenshotů a <strong>Discord</strong> komunita bude hlasovat o vítězi.</li>
<li>Vítěz dostane <strong>$25</strong> (Paypal, Amazon Dárkový Poukaz, co preferujete)</li>
<li>Uzávěrka: 07.06.2020 12:00 CEST</li>
</ul>
<br>
Těším se na vaše úžasné výtvory!
showInfo: Zobrazit
contestOver: Tato soutěž skončila - Připojte se na Discord a získejte informace o nových soutěžích!
dialogs:
buttons:
ok: OK
delete: Smazat
cancel: Zrušit
later: Později
restart: Restart
reset: Reset
getStandalone: Získejte Plnou verzi
deleteGame: Vím co dělám
viewUpdate: Zobrazit aktualizaci
showUpgrades: Zobrazit vylepšení
showKeybindings: Zobrazit klávesové zkratky
importSavegameError:
title: Chyba Importu
text: >-
Nepovedlo se importovat vaši uloženou hru:
importSavegameSuccess:
title: Uložená hra importována
text: >-
Vaše uložená hra byla úspěšně importována.
gameLoadFailure:
title: Uložená hra je poškozená
text: >-
Nepovedlo se načíst vaši uloženou hru:
confirmSavegameDelete:
title: Potvrdit smazání
text: >-
Opravdu chcete smazat hru?
savegameDeletionError:
title: Chyba mazání
text: >-
Nepovedlo se smazat vaši uloženou hru:
restartRequired:
title: Vyžadován restart
text: >-
Pro aplikování nastavení musíte restartovat hru.
editKeybinding:
title: Změna klávesové zkratky
desc: Zmáčkněte klávesu nebo tlačítko na myši pro přiřazení nebo Escape pro zrušení.
resetKeybindingsConfirmation:
title: Reset klávesových zkratek
desc: Opravdu chcete vrátit klávesové zkratky zpět do původního nastavení?
keybindingsResetOk:
title: Reset klávesových zkratek
desc: Vaše klávesové zkratky byly resetovány do původního nastavení!
featureRestriction:
title: Demo verze
desc: Zkoušíte použít funkci (<feature>), která není v demo verzi. Pořiďte si plnou verzi pro lepší zážitek!
oneSavegameLimit:
title: Omezené ukládání
desc: Ve zkušební verzi můžete mít pouze jednu uloženou hru. Odstraňte stávající uloženou hru nebo si pořiďte plnou verzi!
updateSummary:
title: Nová aktualizace!
desc: >-
Tady jsou změny od posledně:
upgradesIntroduction:
title: Odemknout vylepšení
desc: >-
Všechny tvary, které vytvoříte, lze použít k odemčení vylepšení - <strong>Neničte své staré továrny!</strong>
Karta vylepšení se nachází v pravém horním rohu obrazovky.
massDeleteConfirm:
title: Potvrdit smazání
desc: >-
Odstraňujete spoustu budov (přesněji <count>)! Opravdu je chcete smazat?
blueprintsNotUnlocked:
title: Zatím neodemčeno
desc: >-
Plány ještě nebyly odemčeny! Chcete-li je odemknout, dokončete úroveň 12.
keybindingsIntroduction:
title: Užitečné klávesové zkratky
desc: >-
Hra má spoustu klávesových zkratek, které usnadňují stavbu velkých továren.
Zde jsou některé, ale nezapomeňte se podívat i na <strong>ostatní klávesové zkratky</strong>!<br><br>
<code class='keybinding'>CTRL</code> + Táhnout: Vybrání oblasti.<br>
<code class='keybinding'>SHIFT</code>: Podržením můžete umístit více budov za sebout.<br>
<code class='keybinding'>ALT</code>: Změnit orientaci umístěných pásů.<br>
createMarker:
title: Nová značka
desc: Dejte jí smysluplné jméno
markerDemoLimit:
desc: V ukázce můžete vytvořit pouze dvě značky. Získejte plnou verzi pro neomezený počet značek!
massCutConfirm:
title: Confirm cut
desc: >-
You are cutting a lot of buildings (<count> to be exact)! Are you sure you
want to do this?
exportScreenshotWarning:
title: Export screenshot
desc: >-
You requested to export your base as a screenshot. Please note that this can
be quite slow for a big base and even crash your game!
ingame:
# This is shown in the top left corner and displays useful keybindings in
# every situation
keybindingsOverlay:
moveMap: Posun mapy
selectBuildings: Vybrat oblast
stopPlacement: Ukončit pokládání
rotateBuilding: Otočit budovu
placeMultiple: Položit více budov
reverseOrientation: Změnit orientaci
disableAutoOrientation: Vypnout automatickou orientaci
toggleHud: Přepnout HUD
placeBuilding: Položit budovu
createMarker: Vytvořit značku
delete: Zničit
pasteLastBlueprint: Paste last blueprint
# Everything related to placing buildings (I.e. as soon as you selected a building
# from the toolbar)
buildingPlacement:
# Buildings can have different variants which are unlocked at later levels,
# and this is the hint shown when there are multiple variants available.
cycleBuildingVariants: Zmáčkněte <key> pro přepínání mezi variantami.
# Shows the hotkey in the ui, e.g. "Hotkey: Q"
hotkeyLabel: >-
Klávesová zkratka: <key>
infoTexts:
speed: Rychlost
range: Dosah
storage: Úložný prostor
oneItemPerSecond: 1 tvar / sekundu
itemsPerSecond: <x> tvarů / s
itemsPerSecondDouble: (x2)
tiles: <x> dílků
# The notification when completing a level
levelCompleteNotification:
# <level> is replaced by the actual level, so this gets 'Level 03' for example.
levelTitle: Úroveň <level>
completed: Dokončeno
unlockText: "Odemčeno: <reward>!"
buttonNextLevel: Další úroveň
# Notifications on the lower right
notifications:
newUpgrade: Nová aktualizace je k dispozici!
gameSaved: Hra byla uložena.
# Mass select information, this is when you hold CTRL and then drag with your mouse
# to select multiple buildings
massSelect:
infoText: Press <keyCut> to cut, <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel.
# The "Upgrades" window
shop:
title: Vylepšení
buttonUnlock: Vylepšit
# Gets replaced to e.g. "Tier IX"
tier: Úroveň <x>
# The roman number for each tier
tierLabels: [I, II, III, IV, V, VI, VII, VIII, IX, X]
maximumLevel: MAXIMÁLNÍ ÚROVEŇ (Rychlost x<currentMult>)
# The "Statistics" window
statistics:
title: Statistiky
dataSources:
stored:
title: Uloženo
description: Tvary uložené ve vaší centrální budově.
produced:
title: Vyprodukováno
description: Tvary která vaše továrna produkuje, včetně meziproduktů.
delivered:
title: Dodáno
description: Tvary které jsou dodávány do vaší centrální budovy.
noShapesProduced: Žádné tvary zatím nebyly vyprodukovány.
# Displays the shapes per minute, e.g. '523 / m'
shapesPerMinute: <shapes> / m
# Settings menu, when you press "ESC"
settingsMenu:
playtime: Herní čas
buildingsPlaced: Budovy
beltsPlaced: Pásy
buttons:
continue: Pokračovat
settings: Nastavení
menu: Návrat do menu
# Bottom left tutorial hints
tutorialHints:
title: Potřebujete pomoct?
showHint: Zobrazit nápovědu
hideHint: Zavřít
# When placing a blueprint
blueprintPlacer:
cost: Cena
# Map markers
waypoints:
waypoints: Značky
hub: HUB
description: Klepnutím levým tlačítkem myši na značku se přesunete na její umístění, klepnutím pravým tlačítkem ji odstraníte.<br><br>Stisknutím klávesy <keybinding> vytvoříte značku na aktuálním místě, nebo <strong>klepnutím pravým tlačítkem</strong> vytvoříte značku na vybraném místě na mapě.
creationSuccessNotification: Značka byla vytvořena.
# Interactive tutorial
interactiveTutorial:
title: Tutoriál
hints:
1_1_extractor: Umístěte <strong>extraktor</strong> na naleziště<strong>kruhového tvaru</strong> a vytěžte jej!
1_2_conveyor: >-
Připojte extraktor pomocí <strong>dopravníkového pásu</strong> k vašemu HUBu!<br><br>Tip: <strong>Klikněte a táhněte</strong> myší pro položení více pásů!
1_3_expand: >-
Toto <strong>NENÍ</strong> hra o čekání! Sestavte další extraktory a pásy, abyste dosáhli cíle rychleji.<br><br>Tip: Chcete-li umístit více extraktorů, podržte <strong>SHIFT</strong>. Pomocí <strong>R</strong> je můžete otočit.
# All shop upgrades
shopUpgrades:
belt:
name: Pásy, distribuce & tunely
description: Rychlost x<currentMult> → x<newMult>
miner:
name: Extrakce
description: Rychlost x<currentMult> → x<newMult>
processors:
name: Řezání, otáčení a spojování
description: Rychlost x<currentMult> → x<newMult>
painting:
name: Míchání a barvení
description: Rychlost x<currentMult> → x<newMult>
# Buildings and their name / description
buildings:
hub:
deliver: Dodejte
toUnlock: pro odemčení
levelShortcut: LVL
belt:
default:
name: &belt Dopravníkový pás
description: Přepravuje tvary a barvy, přidržením můžete umístit více pásů za sebe tahem.
miner: # Internal name for the Extractor
default:
name: &miner Extraktor
description: Umístěte na náleziště tvaru nebo barvy pro zahájení těžby.
chainable:
name: Extraktor (Navazující)
description: Umístěte na náleziště tvaru nebo barvy pro zahájení těžby. Lze zapojit po skupinách.
underground_belt: # Internal name for the Tunnel
default:
name: &underground_belt Tunel
description: Umožňuje vézt suroviny pod budovami a pásy.
tier2:
name: Tunel II. úrovně
description: Umožňuje vézt suroviny pod budovami a pásy.
splitter: # Internal name for the Balancer
default:
name: &splitter Balancer
description: Multifunkční - Rozděluje vstupy do výstupů.
compact:
name: Spojka (levá)
description: Spojí dva pásy do jednoho.
compact-inverse:
name: Spojka (pravá)
description: Spojí dva pásy do jednoho.
cutter:
default:
name: &cutter Pila
description: Rozřízne tvar svisle na dvě části. <strong>Pokud použijete jen jednu půlku, nezapomeňte druhou smazat, jinak se vám produkce zasekne!</strong>
quad:
name: Rozebírač
description: Rozebere tvar na čtyři části. <strong>Pokud použijete jen některé části, nezapomeňte ostatní smazat, jinak se vám produkce zasekne!</strong>
rotater:
default:
name: &rotater Rotor
description: Otáčí tvary o 90 stupňů po směru hodinových ručiček.
ccw:
name: Rotor (opačný)
description: Otáčí tvary o 90 stupňů proti směru hodinových ručiček
stacker:
default:
name: &stacker Kombinátor
description: Spojí tvary dohromady. Pokud nemohou být spojeny, pravý tvar je položen na levý.
mixer:
default:
name: &mixer Mixér na barvy
description: Smíchá dvě barvy.
painter:
default:
name: &painter Barvič
description: Obarví celý tvar v levém vstupu barvou z pravého vstupu.
double:
name: Barvič (dvojnásobný)
description: Obarví tvary z levých vstupů barvou z horního vstupu.
quad:
name: Barvič (čtyřnásobný)
description: Umožňuje obarvit každý dílek tvaru samostatně.
trash:
default:
name: &trash Koš
description: Příjmá tvary a barvy ze všech stran a smaže je. Navždy.
storage:
name: Sklad
description: Skladuje věci navíc až do naplnění kapacity. Může být použit na skladování surovin navíc.
storyRewards:
# Those are the rewards gained from completing the store
reward_cutter_and_trash:
title: Řezání tvarů
desc: Právě jste odemknuli <strong>pilu</strong> - řeže tvary <strong>svisle</strong> bez ohledu na svou orientaci!<br><br>Nezapomeňte se zbavovat odpadu, jinak <strong>se vám zasekne produkce</strong> - pro tento účel jsem vám odemknul koš, který můžete použít na mazání odpadu!
reward_rotater:
title: Otáčení
desc: <strong>Rotor</strong> byl právě odemčen! Otáčí tvary po směru hodinových ručiček o 90 stupňů.
reward_painter:
title: Barvení
desc: >-
<strong>Barvič</strong> byl právě odemčen - vytěžte nějakou barvu (stejně jako těžíte tvary) a skombinujte ji v barviči s tvarem pro obarvení!<br><br>PS: Pokud jste barvoslepí, nebojte, již pracuju na řešení.!
reward_mixer:
title: Míchání barev
desc: <strong>Mixér</strong> byl právě odemčen - zkombinuje dvě barvy pomocí <strong>aditivního míchání</strong>!
reward_stacker:
title: Kombinátor
desc: Nyní můžete spojovat tvary pomocí <strong>kombinátor</strong>! Pokud to jde, oba tvary se <strong>slepí</strong> k sobě. Pokud ne, tvar vpravo se <strong>nalepí na</strong> tvar vlevo!
reward_splitter:
title: Rozřazování/Spojování pásu
desc: Multifuknční <strong>balancer</strong> byl právě odemčen - Může být použít pro stavbu větších továren díky tomu, že <strong>rozřazuje</strong> tvary mezi dva pásy!<br><br>
reward_tunnel:
title: Tunel
desc: <strong>Tunel</strong> byl právě odemčen - Umožňuje vézt suroviny pod budovami a pásy.
reward_rotater_ccw:
title: Otáčení II
desc: Odemknuli jste variantu <strong>rotoru</strong> - Umožňuje vám otáčet proti směru hodinových ručiček. Vyberte rotor a <strong>zmáčkněte 'T' pro přepnutí mezi variantami</strong>!
reward_miner_chainable:
title: Napojovací extraktor
desc: Odemknuli jste variantu <strong>extraktoru</strong>! Může <strong>přesměrovat vytěžené zdroje</strong> do dalších extraktorů pro efektivnější těžbu!
reward_underground_belt_tier_2:
title: Tunel II. úrovně
desc: Odemknuli jste <strong>tunel II. úrovně</strong> - Má <strong>delší dosah</strong> a také můžete nyní míchat tunely dohromady!
reward_splitter_compact:
title: Kompaktní spojka
desc: >-
Odemknuli jste variantu <strong>balanceru</strong> - Spojuje dva pásy do jednoho!
reward_cutter_quad:
title: Řezání na čtvrtiny
desc: Odemknuli jste variantu <strong>pily</strong> - Rozebírač vám umožňuje rozdělit tvary <strong> na čtvrtiny</strong> místo na poloviny!
reward_painter_double:
title: Dvojité barvení
desc: Odemknuli jste variantu <strong>barviče</strong> - Funguje stejně jako normální, ale nabarví <strong>dva tvary naráz</strong> pomocí jedné barvy!
reward_painter_quad:
title: Quad Painting
desc: Odemknuli jste variantu <strong>painter</strong> - Umožní vám nabarvit každou čtvrtinu tvaru jinou barvou!
reward_storage:
title: Sklad
desc: Odemknuli jste variantu <strong>koše</strong> - Umožňuje vám skladovat věci až do určité kapacity!
reward_freeplay:
title: Volná hra
desc: Dokázali jste to! Odemknuli jste <strong>volnou hru</strong>! Další tvary jsou již náhodně generované! (pro plnou verzi plánujeme více obsahu!)
reward_blueprints:
title: Plány
desc: Nyní můžete <strong>kopírovat a vkládat</strong> části továrny! Vyberte oblast (Držte CTRL a táhněte myší) a zmáčkněte 'C' pro zkopírování.<br><br>Vkládání <strong>není zadarmo</strong>, potřebujete produkovat <strong>tvary pro plány</strong> na výstavbu! (Jsou to ty které jste právě dodali).
# Special reward, which is shown when there is no reward actually
no_reward:
title: Další úroveň
desc: >-
Tato úroveň vám nic neodemknula, ale s další to přijde! <br><br> PS: Radši neničte vaše stávající továrny - budete potřebovat <strong>všechny</strong> produkované tvary později na <strong>odemčení vylepšení</strong>!
no_reward_freeplay:
title: Další úroveň
desc: >-
Gratuluji! Mimochodem, více obsahu najdete v plné verzi!
settings:
title: Nastavení
categories:
game: Hra
app: Aplikace
versionBadges:
dev: Vývojová verze
staging: Testovací verze
prod: Produkční verze
buildDate: Sestaveno <at-date>
labels:
uiScale:
title: Škála UI
description: >-
Změní velikost uživatelského rozhraní. Rozhraní se bude stále přizpůsobovoat rozlišení vaší obrazovky, toto nastavení pouze mění jeho škálu.
scales:
super_small: Velmi malé
small: Malé
regular: Normální
large: Velké
huge: Obrovské
scrollWheelSensitivity:
title: Citlivost přibížení
description: >-
Změní citlivost přiblížení (kolečkem myši nebo trackpadem).
sensitivity:
super_slow: Hodně pomalé
slow: Pomalé
regular: Normální
fast: Rychlé
super_fast: Hodně rychlé
language:
title: Jazyk
description: >-
Změní jazyk. Všechny překlady jsou vytvářeny komunitou a nemusí být kompletní.
fullscreen:
title: Celá obrazovka
description: >-
Doporučujeme hrát v režimu celé obrazovky pro nejlepší zážitek. Dostupné pouze v plné verzi.
soundsMuted:
title: Ztlumit zvuky
description: >-
Ztlumí všechny zvuky.
musicMuted:
title: Ztlumit hudbu
description: >-
Ztlumí veškerou hudbu.
theme:
title: Motiv
description: >-
Vybere motiv (světlý / tmavý).
themes:
dark: Dark
light: Light
refreshRate:
title: Cíl simulace
description: >-
Pokud máte 144 Hz monitor, změňte si rychlost obnovování obrazu. Toto nastavení může snížit FPS, pokud máte pomalý počítač.
alwaysMultiplace:
title: Několikanásobné pokládání
description: >-
Pokud bude zapnuté, zůstanou budovy vybrané i po postavení do té doby než je zrušíte. Má to stejný efekt jako držení klávesy SHIFT.
offerHints:
title: Tipy & Nápovědy
description: >-
Pokud zapnuté, budou se ve hře zobrazovat tipy a nápovědy. Také schová určité elementy na obrazovce pro jednodušší dostání se do hry.
movementSpeed:
title: Movement speed
description: Changes how fast the view moves when using the keyboard.
speeds:
super_slow: Super slow
slow: Slow
regular: Regular
fast: Fast
super_fast: Super Fast
extremely_fast: Extremely Fast
keybindings:
title: Klávesové zkratky
hint: >-
Tip: Nezapomeňte používat CTRL, SHIFT a ALT! Díky nim můžete měnit způsob stavění.
resetKeybindings: Resetovat nastavení klávesových zkratek
categoryLabels:
general: Aplikace
ingame: Hra
navigation: Posun mapy
placement: Stavba
massSelect: Hromadný výběr
buildings: Zkratky pro stavbu
placementModifiers: Modifikátory umístění
mappings:
confirm: Potvrdit
back: Zpět
mapMoveUp: Posun nahoru
mapMoveRight: Posun doprava
mapMoveDown: Posun dolů
mapMoveLeft: Posun doleva
centerMap: Vycentrovat mapu
mapZoomIn: Přiblížit
mapZoomOut: Oddálit
createMarker: Vytvořit značku
menuOpenShop: Vylepšení
menuOpenStats: Statistiky
toggleHud: Přepnout HUD
toggleFPSInfo: Přepnout zobrazení FPS a ladících informací
belt: *belt
splitter: *splitter
underground_belt: *underground_belt
miner: *miner
cutter: *cutter
rotater: *rotater
stacker: *stacker
mixer: *mixer
painter: *painter
trash: *trash
abortBuildingPlacement: Zrušit stavbu
rotateWhilePlacing: Otočit
rotateInverseModifier: >-
Modifikátor: Otočit proti směru hodinových ručiček
cycleBuildingVariants: Změnit variantu
confirmMassDelete: Potvrdit hromadné smazání
cycleBuildings: Změnit budovu
massSelectStart: Držte a táhněte pro vybrání oblasti
massSelectSelectMultiple: Vybrat více oblastí
massSelectCopy: Zkopírovat oblast
placementDisableAutoOrientation: Zrušit automatickou orientaci
placeMultiple: Zůstat ve stavebním módu
placeInverse: Přepnout automatickou orientaci pásů
pasteLastBlueprint: Paste last blueprint
massSelectCut: Cut area
exportScreenshot: Export whole Base as Image
about:
title: O hře
body: >-
This game is open source and developed by <a href="https://github.com/tobspr"
target="_blank">Tobias Springer</a> (this is me).<br><br>
If you want to contribute, check out <a href="<githublink>"
target="_blank">shapez.io on github</a>.<br><br>
This game wouldn't have been possible without the great discord community
around my games - You should really join the <a href="<discordlink>"
target="_blank">discord server</a>!<br><br>
The soundtrack was made by <a href="https://soundcloud.com/pettersumelius"
target="_blank">Peppsen</a> - He's awesome.<br><br>
Finally, huge thanks to my best friend <a
href="https://github.com/niklas-dahl" target="_blank">Niklas</a> - Without our
factorio sessions this game would never have existed.
changelog:
title: Seznam změn
demo:
features:
restoringGames: Nahrávání uložených her
importingGames: Importování uložených her
oneGameLimit: Omezeno pouze na jednu uloženou hru
customizeKeybindings: Změna klávesových zkratek
exportingBase: Exporting whole Base as Image
settingNotAvailable: Nedostupné v demo verzi.

View File

@ -21,7 +21,7 @@
steamPage: steamPage:
# This is the short text appearing on the steam page # This is the short text appearing on the steam page
shortText: shapez.io is a game about building factories to automate the creation and combination of increasingly complex shapes within an infinite map. shortText: shapez.io ist ein Spiel über den Bau von Fabriken, um die Erstellung und Kombination immer komplexerer Formen zu automatisieren.
# This is the long description for the steam page - It is contained here so you can help to translate it, and I will regulary update the store page. # This is the long description for the steam page - It is contained here so you can help to translate it, and I will regulary update the store page.
# NOTICE: # NOTICE:
@ -30,42 +30,41 @@ steamPage:
longText: >- longText: >-
[img]{STEAM_APP_IMAGE}/extras/store_page_gif.gif[/img] [img]{STEAM_APP_IMAGE}/extras/store_page_gif.gif[/img]
shapez.io is a game about building factories to automate the creation and combination of shapes. Deliver the requested, increasingly complex shapes to progress within the game and unlock upgrades to speed up your factory. shapez.io ist ein Spiel über den Bau von Fabriken um die Erstellung und Kombination von Formen zu automatisieren. Liefere die gewünschten, stetig komplexer werdenden Formen, um im Spiel voranzukommen und schalte Upgrades frei, die deine Fabrik zu beschleunigen!
Since the demand raises you will have to scale up your factory to fit the needs - Don't forget about resources though, you will have to expand in the [b]infinite map[/b]! Da die Nachfrage steigt, wirst du deine Fabrik vergrößern müssen, um den Bedürfnissen gerecht zu werden - vergiss jedoch nicht die Ressourcen, du wirst in der [b]unendlichen Karte[/b] expandieren müssen!
Since shapes can get boring soon you need to mix colors and paint your shapes with it - Combine red, green and blue color resources to produce different colors and paint shapes with it to satisfy the demand. Da Formen natürlich langweilig werden können, musst du Farben mischen und deine Formen damit bemalen - Kombiniere rote, grüne und blaue Farbressourcen, um verschiedene Farben herzustellen und Formen damit zu bemalen, um die Nachfrage zu befriedigen.
This game features 18 levels (Which should keep you busy for hours already!) but I'm constantly adding new content - There is a lot planned! Dieses Spiel hat 18 verschiedene Level (Was dich schon Stunden beschäftig hält!) aber ich werde konstant neue Inhalte hinzufügen - Es ist echt viel geplant!
[b]Vorteile der Standalone[/b]
[b]Standalone Advantages[/b]
[list] [list]
[*] Wegpunkte [*] Wegpunkte
[*] Unbegrenzte Anzahl von Spielständen [*] Unbegrenzte Anzahl von Spielständen
[*] Dunkler Modus [*] Dark-Mode
[*] Mehr Einstellungen [*] Mehr Einstellungen
[*] Erlaube es mir weiter an shapez.io zu entwickeln ❤️ [*] Erlaube es mir weiter an shapez.io zu entwickeln ❤️
[*] Mehr Funktionen in der Zukunft! [*] Mehr Funktionen in der Zukunft!
[/list] [/list]
[b]Geplante Funktionen & Community vorschläge[/b] [b]Geplante Funktionen & Community Vorschläge[/b]
Diese Spiel ist open source - Jeder kann dazu beitragen! Abgesehen davon höre ich [b]sehr viel[/b] auf die Community! Ich versuche alle vorschläge zu lesen und soviel feedback einzubeziehen wie nur möglich. Diese Spiel ist open source - Jeder kann dazu beitragen! Abgesehen davon höre ich auf die Community! Ich versuche alle Vorschläge zu lesen und so viel Feedback einzubeziehen wie nur möglich.
[list] [list]
[*] Story-Modus, in dem Gebäude Formen kosten [*] Story-Modus, in dem Gebäude Formen kosten
[*] Mehr Gebäude und Levels (nur in der einzelstehenden Version) [*] Mehr Gebäude und Level (nur in der Standalone-Version)
[*] Mehr Karten und villeicht auch Hindernisse auf diesen [*] Mehr Karten und vielleicht auch Hindernisse
[*] Einstellbare Kartenerstellung (Ändere die Grösse und Anzahl von Resourcenflicken, Seed, und mehr) [*] Einstellbare Kartenerstellung (Ändere die Grösse und Anzahl von Ressourcenflecken, Seed, und mehr)
[*] Mehr Typen von Formen [*] Mehr Typen von Formen
[*] Mehr Performanceverbesserungen (Auch wenn das Spiel bereits ganz gut läuft) [*] Mehr Performanceverbesserungen (Auch wenn das Spiel bereits ganz gut läuft)
[*] Farbenblinder-Modus [*] Farbenblind-Modus
[*] Und viel mehr! [*] Und viel mehr!
[/list] [/list]
Schau dir auch das Trello-board for alle Planungen an! https://trello.com/b/ISQncpJP/shapezio Schau dir auch das Trello-board für die komplette Planung an! https://trello.com/b/ISQncpJP/shapezio
global: global:
loading: Laden loading: Laden
@ -76,13 +75,13 @@ global:
# The suffix for large numbers, e.g. 1.3k, 400.2M, etc. # The suffix for large numbers, e.g. 1.3k, 400.2M, etc.
suffix: suffix:
thousands: k thousands: T
millions: M millions: M
billions: B billions: B
trillions: T trillions: tr
# Shown for infinitely big numbers # Shown for infinitely big numbers
infinite: inf infinite: unend
time: time:
# Used for formatting past time dates # Used for formatting past time dates
@ -98,23 +97,23 @@ global:
# Short formats for times, e.g. '5h 23m' # Short formats for times, e.g. '5h 23m'
secondsShort: <seconds>s secondsShort: <seconds>s
minutesAndSecondsShort: <minutes>m <seconds>s minutesAndSecondsShort: <minutes>m <seconds>s
hoursAndMinutesShort: <hours>h <minutes>s hoursAndMinutesShort: <hours>h <minutes>m
xMinutes: <x> Minuten xMinutes: <x> Minuten
keys: keys:
tab: TAB tab: TAB
control: CTRL control: STRG
alt: ALT alt: ALT
escape: ESC escape: ESC
shift: SHIFT shift: UMSCH
space: LEER space: LEER
demoBanners: demoBanners:
# This is the "advertisement" shown in the main menu and other various places # This is the "advertisement" shown in the main menu and other various places
title: Demo Version title: Demo Version
intro: >- intro: >-
Kaufe die Standalone für alle Features! Kauf die Standalone für alle Features!
mainMenu: mainMenu:
play: Spielen play: Spielen
@ -133,7 +132,7 @@ mainMenu:
contests: contests:
contest_01_03062020: contest_01_03062020:
title: "Contest #01" title: "Contest #01"
desc: Gewinne <strong>$25</strong> für dir beste Basis! desc: Gewinne <strong>$25</strong> für die beste Basis!
longDesc: >- longDesc: >-
Um euch etwas zurückzugeben dachte ich, dass es eine coole Idee ist, wöchentliche Wettbewerbe durchzuführen! Um euch etwas zurückzugeben dachte ich, dass es eine coole Idee ist, wöchentliche Wettbewerbe durchzuführen!
<br><br> <br><br>
@ -151,7 +150,8 @@ mainMenu:
Ich freue mich deine tollen Kreationen zu sehen! Ich freue mich deine tollen Kreationen zu sehen!
showInfo: Anschauen showInfo: Anschauen
contestOver: Dieser Wettbewerb ist vorbei! Tritt dem discord server bei, um über neue Wettbewerbe informiert zu werden! contestOver: Dieser Wettbewerb ist vorbei! Tritt dem Discord Server bei, um über neue Wettbewerbe informiert zu werden!
helpTranslate: Help translate!
dialogs: dialogs:
buttons: buttons:
@ -170,7 +170,7 @@ dialogs:
importSavegameError: importSavegameError:
title: Import Fehler title: Import Fehler
text: >- text: >-
Fehler beim Importieren deines Speicherstands: Fehler beim Importieren deines Spielstands:
importSavegameSuccess: importSavegameSuccess:
title: Spielstand importieren title: Spielstand importieren
@ -183,147 +183,143 @@ dialogs:
Der Spielstand konnte nicht geladen werden. Der Spielstand konnte nicht geladen werden.
confirmSavegameDelete: confirmSavegameDelete:
title: Confirm deletion title: Bestätige Löschen
text: >- text: >-
Are you sure you want to delete the game? Bist du sicher, dass du das Spiel löschen willst?
savegameDeletionError: savegameDeletionError:
title: Failed to delete title: Löschen gescheitert
text: >- text: >-
Failed to delete the savegame: Das Löschen des Spiels ist gescheitert:
restartRequired: restartRequired:
title: Restart required title: Neustart benötigt
text: >- text: >-
You need to restart the game to apply the settings. Du muss das Spiel neu starten, um die Einstellungen anzuwenden
editKeybinding: editKeybinding:
title: Change Keybinding title: Ändere Tastenbelegung
desc: Press the key or mouse button you want to assign, or escape to cancel. desc: Drücke die Taste oder Maustaste, die du vergeben willst, oder ESC um abzubrechen.
resetKeybindingsConfirmation: resetKeybindingsConfirmation:
title: Reset keybindings title: Tastenbelegung zurücksetzen
desc: This will reset all keybindings to their default values. Please confirm. desc: Das wird all deine Tastenbelegungen auf den Standard zurücksetzen. Bitte bestätige.
keybindingsResetOk: keybindingsResetOk:
title: Keybindings reset title: Tastenbelegung zurückgesetzt
desc: The keybindings have been reset to their respective defaults! desc: Die Tastenbelegung wurde auf den Standard zurückgesetzt!
featureRestriction: featureRestriction:
title: Demo Version title: Demo Version
desc: You tried to access a feature (<feature>) which is not available in the demo. Consider to get the standalone for the full experience! desc: Du hast ein Feature probiert (<feature>), welches nicht in der Demo enthalten ist. Erwerbe die Standalone für das volle Erlebnis!
saveNotPossibleInDemo:
desc: Your game has been saved, but restoring it is only possible in the standalone version. Consider to get the standalone for the full experience!
leaveNotPossibleInDemo:
title: Demo version
desc: Your game has been saved, but you will not be able to restore it in the demo. Restoring your savegames is only possible in the full version. Are you sure?
newUpdate:
title: Update available
desc: There is an update for this game available, be sure to download it!
oneSavegameLimit: oneSavegameLimit:
title: Limited savegames title: Begrenzte Spielstände
desc: You can only have one savegame at a time in the demo version. Please remove the existing one or get the standalone! desc: Du kannst in der Demo nur einen Spielstand haben. Bitte lösche das Spiel oder hole dir die Standalone!
updateSummary: updateSummary:
title: New update! title: Neues Update!
desc: >- desc: >-
Here are the changes since you last played: Hier sind die Änderungen, seit dem du das letzte Mal gespielt hast:
hintDescription:
title: Tutorial
desc: >-
Whenever you need help or are stuck, check out the 'Show hint' button in the lower left and I'll give my best to help you!
upgradesIntroduction: upgradesIntroduction:
title: Unlock Upgrades title: Upgrades Freischalten
desc: >- desc: >-
All shapes you produce can be used to unlock upgrades - <strong>Don't destroy your old factories!</strong> Viele deiner Formen können noch benutzt werden, um Upgrades freizuschalten - <strong>Zerstöre deine alten Fabriken nicht!</strong>
The upgrades tab can be found on the top right corner of the screen. Den Upgrade Tab kannst du oben rechts im Bildschirm finden.
massDeleteConfirm: massDeleteConfirm:
title: Confirm delete title: Bestätige Löschen
desc: >- desc: >-
You are deleting a lot of buildings (<count> to be exact)! Are you sure you want to do this? Du löscht sehr viele Gebäude (<count> um genau zu sein)! Bist du dir sicher?
blueprintsNotUnlocked: blueprintsNotUnlocked:
title: Not unlocked yet title: Noch nicht freigeschaltet
desc: >- desc: >-
Blueprints have not been unlocked yet! Complete more levels to unlock them. Blueprints werden erst in Level 12 freigeschalten!
keybindingsIntroduction: keybindingsIntroduction:
title: Useful keybindings title: Nützliche Tastenbelegung
desc: >- desc: >-
This game has a lot of keybindings which make it easier to build big factories. Dieses Spiel hat viele Tastenbelegungen, die es einfacher machen, Fabriken zu bauen.
Here are a few, but be sure to <strong>check out the keybindings</strong>!<br><br> Hier sind ein paar, aber prüfe am besten die <strong>Tastenkürzel-Einstellungen</strong>!<br><br>
<code class='keybinding'>CTRL</code> + Drag: Select area to copy / delete.<br> <code class='keybinding'>STRG</code> + Ziehen: Wähle Areal aus.<br>
<code class='keybinding'>SHIFT</code>: Hold to place multiple of one building.<br> <code class='keybinding'>UMSCH</code>: Halten, um mehrere Gebäude zu platzieren.<br>
<code class='keybinding'>ALT</code>: Invert orientation of placed belts.<br> <code class='keybinding'>ALT</code>: Invertiere die Platzierung der Förderbänder.<br>
createMarker: createMarker:
title: New Marker title: Neuer Marker
desc: Give it a meaningful name desc: Gib ihm einen sinnvollen Namen
markerDemoLimit: markerDemoLimit:
desc: You can only create two custom markers in the demo. Get the standalone for unlimited markers! desc: Du kannst nur 2 benutzerdefinierte Marker in der Demo benutzen. Hol dir die Standalone um unendlich viele Marker zu benutzen!
massCutConfirm:
title: Confirm cut
desc: >-
You are cutting a lot of buildings (<count> to be exact)! Are you sure you
want to do this?
exportScreenshotWarning:
title: Export screenshot
desc: >-
You requested to export your base as a screenshot. Please note that this can
be quite slow for a big base and even crash your game!
ingame: ingame:
# This is shown in the top left corner and displays useful keybindings in # This is shown in the top left corner and displays useful keybindings in
# every situation # every situation
keybindingsOverlay: keybindingsOverlay:
moveMap: Move moveMap: Bewegen
selectBuildings: Select area selectBuildings: Wähle Areal
stopPlacement: Stop placement stopPlacement: Stoppe Platzierung
rotateBuilding: Rotate building rotateBuilding: Rotiere Gebäude
placeMultiple: Place multiple placeMultiple: Platziere Mehrere
reverseOrientation: Reverse orientation reverseOrientation: Umgedrehte Orientierung
disableAutoOrientation: Disable auto orientation disableAutoOrientation: Deaktiviere Auto-Orientierung
toggleHud: Toggle HUD toggleHud: Umschaltung HUD Sichtbarkeit
placeBuilding: Place building placeBuilding: Platziere Gebäude
createMarker: Create Marker createMarker: Erstelle Marker
delete: Destroy delete: Löschen
pasteLastBlueprint: Paste last blueprint
# Everything related to placing buildings (I.e. as soon as you selected a building # Everything related to placing buildings (I.e. as soon as you selected a building
# from the toolbar) # from the toolbar)
buildingPlacement: buildingPlacement:
# Buildings can have different variants which are unlocked at later levels, # Buildings can have different variants which are unlocked at later levels,
# and this is the hint shown when there are multiple variants available. # and this is the hint shown when there are multiple variants available.
cycleBuildingVariants: Press <key> to cycle variants. cycleBuildingVariants: Drücke <key> um zwischen den Varianten zu wählen.
# Shows the hotkey in the ui, e.g. "Hotkey: Q" # Shows the hotkey in the ui, e.g. "Hotkey: Q"
hotkeyLabel: >- hotkeyLabel: >-
Hotkey: <key> Taste: <key>
infoTexts: infoTexts:
speed: Speed speed: Geschwindigkeit
range: Range range: Reichweite
storage: Storage storage: Kapazität
oneItemPerSecond: 1 item / second oneItemPerSecond: 1 Item / Sekunde
itemsPerSecond: <x> items / s itemsPerSecond: <x> Items / s
itemsPerSecondDouble: (x2) itemsPerSecondDouble: (x2)
tiles: <x> tiles tiles: <x> Felder
# The notification when completing a level # The notification when completing a level
levelCompleteNotification: levelCompleteNotification:
# <level> is replaced by the actual level, so this gets 'Level 03' for example. # <level> is replaced by the actual level, so this gets 'Level 03' for example.
levelTitle: Level <level> levelTitle: Level <level>
completed: Completed completed: Abgeschlossen
unlockText: Unlocked <reward>! unlockText: <reward> freigeschalten!
buttonNextLevel: Next Level buttonNextLevel: Nächstes Level
# Notifications on the lower right # Notifications on the lower right
notifications: notifications:
newUpgrade: A new upgrade is available! newUpgrade: Ein neues Upgrade ist verfügbar!
gameSaved: Your game has been saved. gameSaved: Dein Spiel wurde gespeichert.
# Mass select information, this is when you hold CTRL and then drag with your mouse # Mass select information, this is when you hold CTRL and then drag with your mouse
# to select multiple buildings # to select multiple buildings
massSelect: massSelect:
infoText: Press <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel. infoText: Press <keyCut> to cut, <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel.
# The "Upgrades" window # The "Upgrades" window
shop: shop:
@ -331,204 +327,213 @@ ingame:
buttonUnlock: Upgrade buttonUnlock: Upgrade
# Gets replaced to e.g. "Tier IX" # Gets replaced to e.g. "Tier IX"
tier: Tier <x> tier: Level <x>
# The roman number for each tier # The roman number for each tier
tierLabels: [I, II, III, IV, V, VI, VII, VIII, IX, X] tierLabels: [I, II, III, IV, V, VI, VII, VIII, IX, X]
maximumLevel: MAXIMUM LEVEL (Speed x<currentMult>) maximumLevel: MAXIMALES LEVEL (Geschw. x<currentMult>)
# The "Statistics" window # The "Statistics" window
statistics: statistics:
title: Statistics title: Statistiken
dataSources: dataSources:
stored: stored:
title: Stored title: Gelagert
description: Displaying amount of stored shapes in your central building. description: Zeigt die Menge an Formen, die im zentralen Gebäude gelagert sind.
produced: produced:
title: Produced title: Produziert
description: Displaying all shapes your whole factory produces, including intermediate products. description: Zeigt die Menge an Formen, die deine ganze Fabrik produziert (auch Zwischenprodukte).
delivered: delivered:
title: Delivered title: Eingeliefert
description: Displaying shapes which are delivered to your central building. description: Zeigt die Menge an Formen, die ins zentrale Gebäude eingeliefert werden.
noShapesProduced: No shapes have been produced so far. noShapesProduced: Bisher wurden keine Formen produziert.
# Displays the shapes per minute, e.g. '523 / m' # Displays the shapes per minute, e.g. '523 / m'
shapesPerMinute: <shapes> / m shapesPerMinute: <shapes> / m
# Settings menu, when you press "ESC" # Settings menu, when you press "ESC"
settingsMenu: settingsMenu:
playtime: Playtime playtime: Spielzeit
buildingsPlaced: Buildings buildingsPlaced: Gebäude
beltsPlaced: Belts beltsPlaced: Förderbänder
buttons: buttons:
continue: Continue continue: Weiter
settings: Settings settings: Einstellungen
menu: Return to menu menu: Zurück zum Menü
# Bottom left tutorial hints # Bottom left tutorial hints
tutorialHints: tutorialHints:
title: Need help? title: Brauchst du Hilfe?
showHint: Show hint showHint: Hinweis
hideHint: Close hideHint: Schließen
# When placing a blueprint # When placing a blueprint
blueprintPlacer: blueprintPlacer:
cost: Cost cost: Kosten
# Map markers # Map markers
waypoints: waypoints:
waypoints: Markers waypoints: Markierungen
hub: HUB hub: HUB
description: Left-click a marker to jump to it, right-click to delete it.<br><br>Press <keybinding> to create a marker from the current view, or <strong>right-click</strong> to create a marker at the selected location. description: Linksklick auf einen Marker um dort hinzugelangen, Rechts-Klick um ihn zu löschen.<br><br>Drücke <keybinding> um einen Marker aus deinem Blickwinkel zu erschaffen, oder <strong>Rechts-Klicke</strong> um einen Marker auf deiner ausgewählten Position zu erschaffen.
creationSuccessNotification: Marker has been created. creationSuccessNotification: Marker wurde erstellt.
# Interactive tutorial # Interactive tutorial
interactiveTutorial: interactiveTutorial:
title: Tutorial title: Tutorial
hints: hints:
1_1_extractor: Place an <strong>extractor</strong> on top of a <strong>circle shape</strong> to extract it! 1_1_extractor: Platziere einen <strong>Extrahierer</strong> auf der <strong>Kreis-Form</strong> um sie zu extrahieren!
1_2_conveyor: >- 1_2_conveyor: >-
Connect the extractor with a <strong>conveyor belt</strong> to your hub!<br><br>Tip: <strong>Click and drag</strong> the belt with your mouse! Verbinde den Extrahierer mit einem <strong>Förderband</strong> und schließe ihn am zentralen Gebäude an!<br><br>Tipp: <strong>Drück und Ziehe</strong> das Förderband mit der Maus!
1_3_expand: >- 1_3_expand: >-
This is <strong>NOT</strong> an idle game! Build more extractors and belts to finish the goal quicker.<br><br>Tip: Hold <strong>SHIFT</strong> to place multiple extractors, and use <strong>R</strong> to rotate them. Dies ist <strong>KEIN</strong> Idle-Game! Baue mehr Extrahierer und Fördebänder, um das Ziel schneller zu erreichen.<br><br>Tipp: Halte <strong>UMSCH</strong>, um mehrere Gebäude zu platzieren und nutze <strong>R</strong> um sie zu rotieren.
# All shop upgrades # All shop upgrades
shopUpgrades: shopUpgrades:
belt: belt:
name: Belts, Distributor & Tunnels name: Förderbänder, Verteiler & Tunnel
description: Speed x<currentMult> → x<newMult> description: Geschw. x<currentMult> → x<newMult>
miner: miner:
name: Extraction name: Extrahierer
description: Speed x<currentMult> → x<newMult> description: Geschw. x<currentMult> → x<newMult>
processors: processors:
name: Cutting, Rotating & Stacking name: Schneiden, Rotieren & Stapeln
description: Speed x<currentMult> → x<newMult> description: Geschw. x<currentMult> → x<newMult>
painting: painting:
name: Mixing & Painting name: Mischen & Färben
description: Speed x<currentMult> → x<newMult> description: Geschw. x<currentMult> → x<newMult>
# Buildings and their name / description # Buildings and their name / description
buildings: buildings:
belt: belt:
default: default:
name: &belt Conveyor Belt name: &belt Förderband
description: Transports items, hold and drag to place multiple. description: Transportiert Items, halte und ziehe um mehrere zu platzieren.
miner: # Internal name for the Extractor miner: # Internal name for the Extractor
default: default:
name: &miner Extractor name: &miner Extrahierer
description: Place over a shape or color to extract it. description: Platziere in über einer Form oder Farbe um sie zu extrahieren.
chainable: chainable:
name: Extractor (Chain) name: Extrahierer (Kette)
description: Place over a shape or color to extract it. Can be chained. description: Platziere ihn auf einer Form oder Farbe um sie zu extrahieren. Kann verkettet werden.
underground_belt: # Internal name for the Tunnel underground_belt: # Internal name for the Tunnel
default: default:
name: &underground_belt Tunnel name: &underground_belt Tunnel
description: Allows to tunnel resources under buildings and belts. description: Erlaubt dir, Formen und Farbe unter Gebäuden und Förderbändern durchzuleiten.
tier2: tier2:
name: Tunnel Tier II name: Tunnel Level II
description: Allows to tunnel resources under buildings and belts. description: Erlaubt dir, Formen und Farbe unter Gebäuden und Förderbändern durchzuleiten.
splitter: # Internal name for the Balancer splitter: # Internal name for the Balancer
default: default:
name: &splitter Balancer name: &splitter Verteiler
description: Multifunctional - Evenly distributes all inputs onto all outputs. description: Multifunktional - Verteilt gleichmäßig vom Eingang auf den Ausgang.
compact: compact:
name: Merger (compact) name: Kombinierer (Kompakt)
description: Merges two conveyor belts into one. description: Vereint zwei Förderbänder in eins.
compact-inverse: compact-inverse:
name: Merger (compact) name: Kombinierer (Kompakt)
description: Merges two conveyor belts into one. description: Vereint zwei Förderbänder in eins.
cutter: cutter:
default: default:
name: &cutter Cutter name: &cutter Zerschneider
description: Cuts shapes from top to bottom and outputs both halfs. <strong>If you use only one part, be sure to destroy the other part or it will stall!</strong> description: Zerschneidet Formen von oben nach unten. <strong>Benutze oder zerstöre beide Hälften, sonst verstopft die Maschine!</strong>
quad: quad:
name: Cutter (Quad) name: Zerschneider (4-fach)
description: Cuts shapes into four parts. <strong>If you use only one part, be sure to destroy the other part or it will stall!</strong> description: Zerschneidet Formen in vier Teile. <strong>Benutze oder zerstöre alle Viertel, sonst verstopft die Maschine!</strong>
rotater: rotater:
default: default:
name: &rotater Rotate name: &rotater Rotierer
description: Rotates shapes clockwise by 90 degrees. description: Rotiert Formen im Uhrzeigersinn um 90 Grad.
ccw: ccw:
name: Rotate (CCW) name: Rotate (CCW)
description: Rotates shapes counter clockwise by 90 degrees. description: Rotates shapes counter clockwise by 90 degrees.
stacker: stacker:
default: default:
name: &stacker Stacker name: &stacker Stapler
description: Stacks both items. If they can not be merged, the right item is placed above the left item. description: Stapelt beide Formen. Wenn beide nicht vereint werden können, wird die rechte Form auf die linke Form gestapelt.
mixer: mixer:
default: default:
name: &mixer Color Mixer name: &mixer Farbmischer
description: Mixes two colors using additive blending. description: Mischt zwei Farben auf Basis der additiven Farbmischung.
painter: painter:
default: default:
name: &painter Painter name: &painter Färber
description: Colors the whole shape on the left input with the color from the right input. description: Färbt die ganze Form aus dem linken Eingang mit der Farbe aus dem oberen Eingang.
double: double:
name: Painter (Double) name: Färber (2-Fach)
description: Colors the shapes on the left inputs with the color from the top input. description: Färbt die Formen aus dem linken Eingang mit der Farbe aus dem oberen Eingang.
quad: quad:
name: Painter (Quad) name: Färber (4-Fach)
description: Allows to color each quadrant of the shape with a different color. description: Erlaubt jedes einzelne Viertel einer Form beliebig einzufärben.
trash: trash:
default: default:
name: &trash Trash name: &trash Mülleimer
description: Accepts inputs from all sides and destroys them. Forever. description: Akzeptiert Formen und Farben aus jeder Richtung und zerstört sie. Für immer ...
storage: storage:
name: Storage name: Lager
description: Stores excess items, up to a given capacity. Can be used as an overflow gate. description: Lagert den Überschuss, bis zu einer gegebenen Kapazität. Kann als Überlauftor agieren.
hub:
deliver: Liefere
toUnlock: >-
Für folgende Belohnung:
levelShortcut: LVL
storyRewards: storyRewards:
# Those are the rewards gained from completing the store # Those are the rewards gained from completing the store
reward_cutter_and_trash: reward_cutter_and_trash:
title: Cutting Shapes title: Formen zerschneiden
desc: You just unlocked the <strong>cutter</strong> - it cuts shapes half from <strong>top to bottom</strong> regardless of its orientation!<br><br>Be sure to get rid of the waste, or otherwise <strong>it will stall</strong> - For this purpose I gave you a trash, which destroys everything you put into it! desc: Du hast den <strong>Zerschneider</strong> freigeschaltet! - Er zerschneidet Formen von <strong>oben nach unten</strong> unabhängig von ihrer Orientierung!<br><br>Stelle sicher, dass du den Abfall loswirst, sonst <strong>verstopft die Maschine</strong>! - Dafür habe ich dir extra einen Mülleimer freigeschalten.
reward_rotater: reward_rotater:
title: Rotating title: Rotieren
desc: The <strong>rotater</strong> has been unlocked! It rotates shapes clockwise by 90 degrees. desc: Der <strong>Rotierer</strong> wurde freigeschaltet! Er rotiert Formen im Uhrzeigersinn um 90 Grad!
reward_painter: reward_painter:
title: Painting title: Färben
desc: >- desc: >-
The <strong>painter</strong> has been unlocked - Extract some color veins (just as you do with shapes) and combine it with a shape in the painter to color them!<br><br>PS: If you are colorblind, I'm working on a solution already! Der <strong>Färber</strong> wurde freigeschaltet! Extrahiere ein paar Farben (genauso wie die Formen) und lasse sie vom Färber bemalen!<br><br>PS: Falls du farbenblind bist: Ich arbeite bereits an einer Lösung!
reward_mixer: reward_mixer:
title: Color Mixing title: Farben mischen
desc: The <strong>mixer</strong> has been unlocked - Combine two colors using <strong>additive blending</strong> with this building! desc: Der <strong>Farbmischer</strong> wurde freigeschaltet! Kombiniere mit diesem Gebäude zwei Farben getreu der <strong>additiven Farbmischung</strong>!
reward_stacker: reward_stacker:
title: Combiner title: Stapler
desc: You can now combine shapes with the <strong>combiner</strong>! Both inputs are combined, and if they can be put next to each other, they will be <strong>fused</strong>. If not, the right input is <strong>stacked on top</strong> of the left input! desc: Mit dem <strong>Stapler</strong> kannst du nun Formen kombinieren! Passen sie nebeneinander, werden sie <strong>verschmolzen</strong>. Anderenfalls wird die rechte auf die linke Form <strong>gestapelt</strong>!
reward_splitter: reward_splitter:
title: Splitter/Merger title: Verteiler/Kombinierer
desc: The multifunctional <strong>balancer</strong> has been unlocked - It can be used to build bigger factories by <strong>splitting and merging items</strong> onto multiple belts!<br><br> desc: Der multifunktionale <strong>Verteiler</strong> wurde freigeschaltet! Er ermöglicht die Konstruktion größerer Fabriken, indem er Items auf mehrere Förderbänder <strong>verteilt oder diese zusammenführt</strong>!<br><br>
reward_tunnel: reward_tunnel:
title: Tunnel title: Tunnel
desc: The <strong>tunnel</strong> has been unlocked - You can now pipe items through belts and buildings with it! desc: Der <strong>Tunnel</strong> wurde freigeschaltet! Du kannst Items nun unter Gebäuden oder Förderbändern hindurchleiten!
reward_rotater_ccw: reward_rotater_ccw:
title: CCW Rotating title: GdUZ Rotieren
desc: You have unlocked a variant of the <strong>rotater</strong> - It allows to rotate counter clockwise! To build it, select the rotater and <strong>press 'T' to cycle its variants</strong>! desc: Du hast eine zweite Variante des <strong>Rotierers</strong> freigeschaltet! Damit können Items gegen den Uhrzeigensinn gedreht werden. Wähle den Rotierer aus und <strong>drücke 'T', um auf verschiedene Varianten zuzugreifen</strong>!
reward_miner_chainable: reward_miner_chainable:
title: Chaining Extractor title: Chaining Extractor
@ -579,94 +584,113 @@ storyRewards:
Congratulations! By the way, more content is planned for the standalone! Congratulations! By the way, more content is planned for the standalone!
settings: settings:
title: Settings title: Einstellungen
categories: categories:
game: Game game: Spiel
app: Application app: Applikation
versionBadges: versionBadges:
dev: Development dev: Entwicklung
staging: Staging staging: Beta
prod: Production prod: Produktion
buildDate: Built <at-date> buildDate: Gebaut <at-date>
labels: labels:
uiScale: uiScale:
title: Interface scale title: HUD Größe
description: >- description: >-
Changes the size of the user interface. The interface will still scale based on your device resolution, but this setting controls the amount of scale. Ändert die Größe der Benutzeroberfläche, basierend auf der Bildschirmauflösung.
scales: scales:
super_small: Super small super_small: Sehr klein
small: Small small: Klein
regular: Regular regular: Normal
large: Large large: Groß
huge: Huge huge: Riesig
scrollWheelSensitivity: scrollWheelSensitivity:
title: Zoom sensitivity title: Zoomempfindlichkeit
description: >- description: >-
Changes how sensitive the zoom is (Either mouse wheel or trackpad). Ändert die Sensitivität des Zooms (Sowohl Mausrad, als auch Trackpad).
sensitivity: sensitivity:
super_slow: Sehr langsam
slow: Langsam
regular: Normal
fast: Schnell
super_fast: Sehr schnell
fullscreen:
title: Vollbild
description: >-
Für das beste Erlebnis im Spiel wird der Vollbildmodus empfohlen (Nur in der Standalone-Version verfügbar).
soundsMuted:
title: Geräusche stummschalten
description: >-
Bei Aktivierung werden alle Geräusche stummgeschaltet.
musicMuted:
title: Musik stummschalten
description: >-
Bei Aktivierung wird die Musik stummgeschaltet.
theme:
title: Farbmodus
description: >-
Wähle zwischen dunklem und hellem Farbmodus.
themes:
dark: Dunkel
light: Hell
refreshRate:
title: Zielbildwiederholrate
description: >-
Für z.B einen 144-Hz-Monitor kann die Bildwiederholrate hier korrekt eingestellt werden. Bei einem zu langsamen Computer kann dies die Leistung beeinträchtigen.
alwaysMultiplace:
title: Mehrfachplatzierung
description: >-
Bei Aktivierung wird das platzierte Gebäude nicht abgewählt. Das hat den gleichen Effekt wie beim Platzieren permanent UMSCH gedrückt zu halten.
offerHints:
title: Hinweise & Tutorials
description: >-
Schaltet Hinweise und das Tutorial beim Spielen an und aus. Außerdem werden zu den Levels bestimmte Textfelder versteckt, die den Einstieg erleichtern sollen.
language:
title: Sprache
description: >-
Ändere die Sprache. Alle Übersetzungen werden von Nutzern erstellt und sind möglicherweise unvollständig!
movementSpeed:
title: Movement speed
description: Changes how fast the view moves when using the keyboard.
speeds:
super_slow: Super slow super_slow: Super slow
slow: Slow slow: Slow
regular: Regular regular: Regular
fast: Fast fast: Fast
super_fast: Super fast super_fast: Super Fast
extremely_fast: Extremely Fast
fullscreen:
title: Fullscreen
description: >-
It is recommended to play the game in fullscreen to get the best experience. Only available in the standalone.
soundsMuted:
title: Mute Sounds
description: >-
If enabled, mutes all sound effects.
musicMuted:
title: Mute Music
description: >-
If enabled, mutes all music.
theme:
title: Game theme
description: >-
Choose the game theme (light / dark).
refreshRate:
title: Simulation Target
description: >-
If you have a 144hz monitor, change the refresh rate here so the game will properly simulate at higher refresh rates. This might actually decrease the FPS if your computer is too slow.
alwaysMultiplace:
title: Multiplace
description: >-
If enabled, all buildings will stay selected after placement until you cancel it. This is equivalent to holding SHIFT permanently.
offerHints:
title: Hints & Tutorials
description: >-
Whether to offer hints and tutorials while playing. Also hides certain UI elements onto a given level to make it easier to get into the game.
keybindings: keybindings:
title: Keybindings title: Tastenkürzel
hint: >- hint: >-
Tip: Be sure to make use of CTRL, SHIFT and ALT! They enable different placement options. Tipp: Benutze STRG, UMSCH and ALT! Sie aktivieren verschiedene Platzierungsoptionen!
resetKeybindings: Reset Keyinbindings resetKeybindings: Tastenkürzel zurücksetzen.
categoryLabels: categoryLabels:
general: Application general: Applikation
ingame: Game ingame: Spiel
navigation: Navigating navigation: Navigation
placement: Placement placement: Platzierung
massSelect: Mass Select massSelect: Bereichsauswahl
buildings: Building Shortcuts buildings: Gebäude-Kürzel
placementModifiers: Placement Modifiers placementModifiers: Platzierungs-Modifikatoren
mappings: mappings:
confirm: Confirm confirm: Bestätigen
back: Back back: Zurück
mapMoveUp: Move Up mapMoveUp: Move Up
mapMoveRight: Move Right mapMoveRight: Move Right
mapMoveDown: Move Down mapMoveDown: Move Down
@ -708,18 +732,39 @@ keybindings:
placementDisableAutoOrientation: Disable automatic orientation placementDisableAutoOrientation: Disable automatic orientation
placeMultiple: Stay in placement mode placeMultiple: Stay in placement mode
placeInverse: Invert automatic belt orientation placeInverse: Invert automatic belt orientation
pasteLastBlueprint: Paste last blueprint
massSelectCut: Cut area
exportScreenshot: Export whole Base as Image
about: about:
title: About this Game title: Über dieses Spiel
body: >-
This game is open source and developed by <a href="https://github.com/tobspr"
target="_blank">Tobias Springer</a> (this is me).<br><br>
If you want to contribute, check out <a href="<githublink>"
target="_blank">shapez.io on github</a>.<br><br>
This game wouldn't have been possible without the great discord community
around my games - You should really join the <a href="<discordlink>"
target="_blank">discord server</a>!<br><br>
The soundtrack was made by <a href="https://soundcloud.com/pettersumelius"
target="_blank">Peppsen</a> - He's awesome.<br><br>
Finally, huge thanks to my best friend <a
href="https://github.com/niklas-dahl" target="_blank">Niklas</a> - Without our
factorio sessions this game would never have existed.
changelog: changelog:
title: Changelog title: Änderungen
demo: demo:
features: features:
restoringGames: Restoring savegames restoringGames: Spiele wiederherstellen
importingGames: Importing savegames importingGames: Spiele importieren
oneGameLimit: Limited to one savegame oneGameLimit: Beschränkt auf einen Spielstand
customizeKeybindings: Customizing Keybindings customizeKeybindings: Tastenkürzel anpassen
exportingBase: Exporting whole Base as Image
settingNotAvailable: Not available in the demo. settingNotAvailable: Nicht verfügbar in der Demo.

View File

@ -36,7 +36,7 @@ steamPage:
Since shapes can get boring soon you need to mix colors and paint your shapes with it - Combine red, green and blue color resources to produce different colors and paint shapes with it to satisfy the demand. Since shapes can get boring soon you need to mix colors and paint your shapes with it - Combine red, green and blue color resources to produce different colors and paint shapes with it to satisfy the demand.
This game features 18 levels (Which should keep you busy for hours already!) but I'm constantly adding new content - There is a lot planned! This game features 18 levels (Which should keep you busy for hours already!) but I'm constantly adding new content - There is a lot planned!
[b]Standalone Advantages[/b] [b]Standalone Advantages[/b]
@ -214,17 +214,6 @@ dialogs:
title: Demo Version title: Demo Version
desc: You tried to access a feature (<feature>) which is not available in the demo. Consider to get the standalone for the full experience! desc: You tried to access a feature (<feature>) which is not available in the demo. Consider to get the standalone for the full experience!
saveNotPossibleInDemo:
desc: Your game has been saved, but restoring it is only possible in the standalone version. Consider to get the standalone for the full experience!
leaveNotPossibleInDemo:
title: Demo version
desc: Your game has been saved, but you will not be able to restore it in the demo. Restoring your savegames is only possible in the full version. Are you sure?
newUpdate:
title: Update available
desc: There is an update for this game available, be sure to download it!
oneSavegameLimit: oneSavegameLimit:
title: Limited savegames title: Limited savegames
desc: You can only have one savegame at a time in the demo version. Please remove the existing one or get the standalone! desc: You can only have one savegame at a time in the demo version. Please remove the existing one or get the standalone!
@ -234,11 +223,6 @@ dialogs:
desc: >- desc: >-
Here are the changes since you last played: Here are the changes since you last played:
hintDescription:
title: Tutorial
desc: >-
Whenever you need help or are stuck, check out the 'Show hint' button in the lower left and I'll give my best to help you!
upgradesIntroduction: upgradesIntroduction:
title: Unlock Upgrades title: Unlock Upgrades
desc: >- desc: >-
@ -270,6 +254,17 @@ dialogs:
markerDemoLimit: markerDemoLimit:
desc: You can only create two custom markers in the demo. Get the standalone for unlimited markers! desc: You can only create two custom markers in the demo. Get the standalone for unlimited markers!
massCutConfirm:
title: Confirm cut
desc: >-
You are cutting a lot of buildings (<count> to be exact)! Are you sure you
want to do this?
exportScreenshotWarning:
title: Export screenshot
desc: >-
You requested to export your base as a screenshot. Please note that this can
be quite slow for a big base and even crash your game!
ingame: ingame:
# This is shown in the top left corner and displays useful keybindings in # This is shown in the top left corner and displays useful keybindings in
@ -286,6 +281,7 @@ ingame:
placeBuilding: Place building placeBuilding: Place building
createMarker: Create Marker createMarker: Create Marker
delete: Destroy delete: Destroy
pasteLastBlueprint: Paste last blueprint
# Everything related to placing buildings (I.e. as soon as you selected a building # Everything related to placing buildings (I.e. as soon as you selected a building
# from the toolbar) # from the toolbar)
@ -324,7 +320,7 @@ ingame:
# Mass select information, this is when you hold CTRL and then drag with your mouse # Mass select information, this is when you hold CTRL and then drag with your mouse
# to select multiple buildings # to select multiple buildings
massSelect: massSelect:
infoText: Press <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel. infoText: Press <keyCut> to cut, <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel.
# The "Upgrades" window # The "Upgrades" window
shop: shop:
@ -496,6 +492,11 @@ buildings:
name: Storage name: Storage
description: Stores excess items, up to a given capacity. Can be used as an overflow gate. description: Stores excess items, up to a given capacity. Can be used as an overflow gate.
hub:
deliver: Deliver
toUnlock: to unlock
levelShortcut: LVL
storyRewards: storyRewards:
# Those are the rewards gained from completing the store # Those are the rewards gained from completing the store
reward_cutter_and_trash: reward_cutter_and_trash:
@ -639,6 +640,10 @@ settings:
description: >- description: >-
Choose the game theme (light / dark). Choose the game theme (light / dark).
themes:
dark: Dark
light: Light
refreshRate: refreshRate:
title: Simulation Target title: Simulation Target
description: >- description: >-
@ -654,6 +659,17 @@ settings:
description: >- description: >-
Whether to offer hints and tutorials while playing. Also hides certain UI elements onto a given level to make it easier to get into the game. Whether to offer hints and tutorials while playing. Also hides certain UI elements onto a given level to make it easier to get into the game.
movementSpeed:
title: Movement speed
description: Changes how fast the view moves when using the keyboard.
speeds:
super_slow: Super slow
slow: Slow
regular: Regular
fast: Fast
super_fast: Super Fast
extremely_fast: Extremely Fast
keybindings: keybindings:
title: Keybindings title: Keybindings
hint: >- hint: >-
@ -714,9 +730,29 @@ keybindings:
placementDisableAutoOrientation: Disable automatic orientation placementDisableAutoOrientation: Disable automatic orientation
placeMultiple: Stay in placement mode placeMultiple: Stay in placement mode
placeInverse: Invert automatic belt orientation placeInverse: Invert automatic belt orientation
pasteLastBlueprint: Paste last blueprint
massSelectCut: Cut area
exportScreenshot: Export whole Base as Image
about: about:
title: About this Game title: About this Game
body: >-
This game is open source and developed by <a href="https://github.com/tobspr"
target="_blank">Tobias Springer</a> (this is me).<br><br>
If you want to contribute, check out <a href="<githublink>"
target="_blank">shapez.io on github</a>.<br><br>
This game wouldn't have been possible without the great discord community
around my games - You should really join the <a href="<discordlink>"
target="_blank">discord server</a>!<br><br>
The soundtrack was made by <a href="https://soundcloud.com/pettersumelius"
target="_blank">Peppsen</a> - He's awesome.<br><br>
Finally, huge thanks to my best friend <a
href="https://github.com/niklas-dahl" target="_blank">Niklas</a> - Without our
factorio sessions this game would never have existed.
changelog: changelog:
title: Changelog title: Changelog
@ -727,5 +763,6 @@ demo:
importingGames: Importing savegames importingGames: Importing savegames
oneGameLimit: Limited to one savegame oneGameLimit: Limited to one savegame
customizeKeybindings: Customizing Keybindings customizeKeybindings: Customizing Keybindings
exportingBase: Exporting whole Base as Image
settingNotAvailable: Not available in the demo. settingNotAvailable: Not available in the demo.

View File

@ -36,7 +36,7 @@ steamPage:
Since shapes can get boring soon you need to mix colors and paint your shapes with it - Combine red, green and blue color resources to produce different colors and paint shapes with it to satisfy the demand. Since shapes can get boring soon you need to mix colors and paint your shapes with it - Combine red, green and blue color resources to produce different colors and paint shapes with it to satisfy the demand.
This game features 18 levels (Which should keep you busy for hours already!) but I'm constantly adding new content - There is a lot planned! This game features 18 levels (Which should keep you busy for hours already!) but I'm constantly adding new content - There is a lot planned!
[b]Standalone Advantages[/b] [b]Standalone Advantages[/b]
@ -98,7 +98,7 @@ global:
# Short formats for times, e.g. '5h 23m' # Short formats for times, e.g. '5h 23m'
secondsShort: <seconds>s secondsShort: <seconds>s
minutesAndSecondsShort: <minutes>m <seconds>s minutesAndSecondsShort: <minutes>m <seconds>s
hoursAndMinutesShort: <hours>h <minutes>s hoursAndMinutesShort: <hours>h <minutes>m
xMinutes: <x> minutes xMinutes: <x> minutes
@ -214,17 +214,6 @@ dialogs:
title: Demo Version title: Demo Version
desc: You tried to access a feature (<feature>) which is not available in the demo. Consider to get the standalone for the full experience! desc: You tried to access a feature (<feature>) which is not available in the demo. Consider to get the standalone for the full experience!
saveNotPossibleInDemo:
desc: Your game has been saved, but restoring it is only possible in the standalone version. Consider to get the standalone for the full experience!
leaveNotPossibleInDemo:
title: Demo version
desc: Your game has been saved, but you will not be able to restore it in the demo. Restoring your savegames is only possible in the full version. Are you sure?
newUpdate:
title: Update available
desc: There is an update for this game available, be sure to download it!
oneSavegameLimit: oneSavegameLimit:
title: Limited savegames title: Limited savegames
desc: You can only have one savegame at a time in the demo version. Please remove the existing one or get the standalone! desc: You can only have one savegame at a time in the demo version. Please remove the existing one or get the standalone!
@ -234,11 +223,6 @@ dialogs:
desc: >- desc: >-
Here are the changes since you last played: Here are the changes since you last played:
hintDescription:
title: Tutorial
desc: >-
Whenever you need help or are stuck, check out the 'Show hint' button in the lower left and I'll give my best to help you!
upgradesIntroduction: upgradesIntroduction:
title: Unlock Upgrades title: Unlock Upgrades
desc: >- desc: >-
@ -250,17 +234,22 @@ dialogs:
desc: >- desc: >-
You are deleting a lot of buildings (<count> to be exact)! Are you sure you want to do this? You are deleting a lot of buildings (<count> to be exact)! Are you sure you want to do this?
massCutConfirm:
title: Confirm cut
desc: >-
You are cutting a lot of buildings (<count> to be exact)! Are you sure you want to do this?
blueprintsNotUnlocked: blueprintsNotUnlocked:
title: Not unlocked yet title: Not unlocked yet
desc: >- desc: >-
Blueprints have not been unlocked yet! Complete more levels to unlock them. Complete level 12 to unlock Blueprints!
keybindingsIntroduction: keybindingsIntroduction:
title: Useful keybindings title: Useful keybindings
desc: >- desc: >-
This game has a lot of keybindings which make it easier to build big factories. This game has a lot of keybindings which make it easier to build big factories.
Here are a few, but be sure to <strong>check out the keybindings</strong>!<br><br> Here are a few, but be sure to <strong>check out the keybindings</strong>!<br><br>
<code class='keybinding'>CTRL</code> + Drag: Select area to copy / delete.<br> <code class='keybinding'>CTRL</code> + Drag: Select an area.<br>
<code class='keybinding'>SHIFT</code>: Hold to place multiple of one building.<br> <code class='keybinding'>SHIFT</code>: Hold to place multiple of one building.<br>
<code class='keybinding'>ALT</code>: Invert orientation of placed belts.<br> <code class='keybinding'>ALT</code>: Invert orientation of placed belts.<br>
@ -271,6 +260,10 @@ dialogs:
markerDemoLimit: markerDemoLimit:
desc: You can only create two custom markers in the demo. Get the standalone for unlimited markers! desc: You can only create two custom markers in the demo. Get the standalone for unlimited markers!
exportScreenshotWarning:
title: Export screenshot
desc: You requested to export your base as a screenshot. Please note that this can be quite slow for a big base and even crash your game!
ingame: ingame:
# This is shown in the top left corner and displays useful keybindings in # This is shown in the top left corner and displays useful keybindings in
# every situation # every situation
@ -286,6 +279,7 @@ ingame:
placeBuilding: Place building placeBuilding: Place building
createMarker: Create Marker createMarker: Create Marker
delete: Destroy delete: Destroy
pasteLastBlueprint: Paste last blueprint
# Everything related to placing buildings (I.e. as soon as you selected a building # Everything related to placing buildings (I.e. as soon as you selected a building
# from the toolbar) # from the toolbar)
@ -324,7 +318,7 @@ ingame:
# Mass select information, this is when you hold CTRL and then drag with your mouse # Mass select information, this is when you hold CTRL and then drag with your mouse
# to select multiple buildings # to select multiple buildings
massSelect: massSelect:
infoText: Press <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel. infoText: Press <keyCut> to cut, <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel.
# The "Upgrades" window # The "Upgrades" window
shop: shop:
@ -414,6 +408,11 @@ shopUpgrades:
# Buildings and their name / description # Buildings and their name / description
buildings: buildings:
hub:
deliver: Deliver
toUnlock: to unlock
levelShortcut: LVL
belt: belt:
default: default:
name: &belt Conveyor Belt name: &belt Conveyor Belt
@ -456,7 +455,7 @@ buildings:
description: Cuts shapes from top to bottom and outputs both halfs. <strong>If you use only one part, be sure to destroy the other part or it will stall!</strong> description: Cuts shapes from top to bottom and outputs both halfs. <strong>If you use only one part, be sure to destroy the other part or it will stall!</strong>
quad: quad:
name: Cutter (Quad) name: Cutter (Quad)
description: Cuts shapes into four parts. <strong>If you use only one part, be sure to destroy the other part or it will stall!</strong> description: Cuts shapes into four parts. <strong>If you use only one part, be sure to destroy the other parts or it will stall!</strong>
rotater: rotater:
default: default:
@ -479,7 +478,7 @@ buildings:
painter: painter:
default: default:
name: &painter Painter name: &painter Painter
description: Colors the whole shape on the left input with the color from the right input. description: Colors the whole shape on the left input with the color from the top input.
double: double:
name: Painter (Double) name: Painter (Double)
description: Colors the shapes on the left inputs with the color from the top input. description: Colors the shapes on the left inputs with the color from the top input.
@ -525,7 +524,7 @@ storyRewards:
reward_tunnel: reward_tunnel:
title: Tunnel title: Tunnel
desc: The <strong>tunnel</strong> has been unlocked - You can now pipe items through belts and buildings with it! desc: The <strong>tunnel</strong> has been unlocked - You can now tunnel items through belts and buildings with it!
reward_rotater_ccw: reward_rotater_ccw:
title: CCW Rotating title: CCW Rotating
@ -614,6 +613,18 @@ settings:
fast: Fast fast: Fast
super_fast: Super fast super_fast: Super fast
movementSpeed:
title: Movement speed
description: >-
Changes how fast the view moves when using the keyboard.
speeds:
super_slow: Super slow
slow: Slow
regular: Regular
fast: Fast
super_fast: Super Fast
extremely_fast: Extremely Fast
language: language:
title: Language title: Language
description: >- description: >-
@ -638,6 +649,9 @@ settings:
title: Game theme title: Game theme
description: >- description: >-
Choose the game theme (light / dark). Choose the game theme (light / dark).
themes:
dark: Dark
light: Light
refreshRate: refreshRate:
title: Simulation Target title: Simulation Target
@ -659,7 +673,7 @@ keybindings:
hint: >- hint: >-
Tip: Be sure to make use of CTRL, SHIFT and ALT! They enable different placement options. Tip: Be sure to make use of CTRL, SHIFT and ALT! They enable different placement options.
resetKeybindings: Reset Keyinbindings resetKeybindings: Reset Keybindings
categoryLabels: categoryLabels:
general: Application general: Application
@ -688,6 +702,7 @@ keybindings:
toggleHud: Toggle HUD toggleHud: Toggle HUD
toggleFPSInfo: Toggle FPS and Debug Info toggleFPSInfo: Toggle FPS and Debug Info
exportScreenshot: Export whole Base as Image
belt: *belt belt: *belt
splitter: *splitter splitter: *splitter
underground_belt: *underground_belt underground_belt: *underground_belt
@ -705,11 +720,13 @@ keybindings:
Modifier: Rotate CCW instead Modifier: Rotate CCW instead
cycleBuildingVariants: Cycle Variants cycleBuildingVariants: Cycle Variants
confirmMassDelete: Confirm Mass Delete confirmMassDelete: Confirm Mass Delete
pasteLastBlueprint: Paste last blueprint
cycleBuildings: Cycle Buildings cycleBuildings: Cycle Buildings
massSelectStart: Hold and drag to start massSelectStart: Hold and drag to start
massSelectSelectMultiple: Select multiple areas massSelectSelectMultiple: Select multiple areas
massSelectCopy: Copy area massSelectCopy: Copy area
massSelectCut: Cut area
placementDisableAutoOrientation: Disable automatic orientation placementDisableAutoOrientation: Disable automatic orientation
placeMultiple: Stay in placement mode placeMultiple: Stay in placement mode
@ -717,6 +734,16 @@ keybindings:
about: about:
title: About this Game title: About this Game
body: >-
This game is open source and developed by <a href="https://github.com/tobspr" target="_blank">Tobias Springer</a> (this is me).<br><br>
If you want to contribute, check out <a href="<githublink>" target="_blank">shapez.io on github</a>.<br><br>
This game wouldn't have been possible without the great discord community around my games - You should really join the <a href="<discordlink>" target="_blank">discord server</a>!<br><br>
The soundtrack was made by <a href="https://soundcloud.com/pettersumelius" target="_blank">Peppsen</a> - He's awesome.<br><br>
Finally, huge thanks to my best friend <a href="https://github.com/niklas-dahl" target="_blank">Niklas</a> - Without our factorio sessions this game would never have existed.
changelog: changelog:
title: Changelog title: Changelog
@ -727,5 +754,6 @@ demo:
importingGames: Importing savegames importingGames: Importing savegames
oneGameLimit: Limited to one savegame oneGameLimit: Limited to one savegame
customizeKeybindings: Customizing Keybindings customizeKeybindings: Customizing Keybindings
exportingBase: Exporting whole Base as Image
settingNotAvailable: Not available in the demo. settingNotAvailable: Not available in the demo.

File diff suppressed because it is too large Load Diff

View File

@ -99,7 +99,7 @@ global:
# Short formats for times, e.g. '5h 23m' # Short formats for times, e.g. '5h 23m'
secondsShort: <seconds>s secondsShort: <seconds>s
minutesAndSecondsShort: <minutes>m <seconds>s minutesAndSecondsShort: <minutes>m <seconds>s
hoursAndMinutesShort: <hours>h <minutes>s hoursAndMinutesShort: <hours>h <minutes>m
xMinutes: <x> minutes xMinutes: <x> minutes
@ -123,6 +123,7 @@ mainMenu:
importSavegame: Importer importSavegame: Importer
openSourceHint: Ce jeu est open source! openSourceHint: Ce jeu est open source!
discordLink: Serveur Discord officiel discordLink: Serveur Discord officiel
helpTranslate: Contribuez à la traduction !
# This is shown when using firefox and other browsers which are not supported. # This is shown when using firefox and other browsers which are not supported.
browserWarning: >- browserWarning: >-
@ -214,17 +215,6 @@ dialogs:
title: Version démo title: Version démo
desc: Vous avez essayé d'accéder à la fonction (<feature>) qui n'est pas disponible dans la démo. Considérez l'achat de la version complète pour une expérience optimale! desc: Vous avez essayé d'accéder à la fonction (<feature>) qui n'est pas disponible dans la démo. Considérez l'achat de la version complète pour une expérience optimale!
saveNotPossibleInDemo:
desc: Votre partie a été sauvegardée, mais la charger n'est possible que dans la version complète. Considérez son achat pour une expérience optimale!
leaveNotPossibleInDemo:
title: Version démo
desc: Votre partie a été sauvée mais nous ne pourrez pas la charger dans la démo. Charger les parties n'est disponible que dans la version complète. Etes-vous certain?
newUpdate:
title: Mise-à-jour disponible
desc: Une mise-à-jour est disponible pour ce jeu!
oneSavegameLimit: oneSavegameLimit:
title: Sauvegardes limitées title: Sauvegardes limitées
desc: Vous ne pouvez avoir qu'une seule sauvegarde en même temps dans la version démo. Merci de soit effacer l'actuelle ou de vous procurer la version complète! desc: Vous ne pouvez avoir qu'une seule sauvegarde en même temps dans la version démo. Merci de soit effacer l'actuelle ou de vous procurer la version complète!
@ -234,11 +224,6 @@ dialogs:
desc: >- desc: >-
Voici les modifications depuis votre dernière session: Voici les modifications depuis votre dernière session:
hintDescription:
title: Tutorial
desc: >-
Si vous avez besoin d'aide ou êtes coincé, vérifiez le bouton 'Aide' dans le coin inférieur gauche et j'essayerai de vous aider au mieux!
upgradesIntroduction: upgradesIntroduction:
title: Débloquer les améliorations title: Débloquer les améliorations
desc: >- desc: >-
@ -250,6 +235,12 @@ dialogs:
desc: >- desc: >-
Vous allez supprimer pas mal de bâtiments (<count> pour être exact)! Etes vous certains de vouloir faire ça ? Vous allez supprimer pas mal de bâtiments (<count> pour être exact)! Etes vous certains de vouloir faire ça ?
massCutConfirm:
title: Confirmer la coupure
desc: >-
Vous vous appretez à couper beaucoup de bâtiments (<count> pour être précis) ! Êtes-vous
certains de vouloir faire ceci ?
blueprintsNotUnlocked: blueprintsNotUnlocked:
title: Pas encore débloqué title: Pas encore débloqué
desc: >- desc: >-
@ -271,6 +262,13 @@ dialogs:
markerDemoLimit: markerDemoLimit:
desc: Vous ne pouvez créer que deux balises dans la démo. Achetez la version complète pour en faire tant que vous voulez ! desc: Vous ne pouvez créer que deux balises dans la démo. Achetez la version complète pour en faire tant que vous voulez !
exportScreenshotWarning:
title: Exporter une capture d'écran
desc: >-
Vous avez demandé à exporter votre base sous la forme d'une capture d'écran. Soyez conscient
que cela peut s'avérer relativement lent pour une grande base, voire même planter votre jeu !
ingame: ingame:
# This is shown in the top left corner and displays useful keybindings in # This is shown in the top left corner and displays useful keybindings in
# every situation # every situation
@ -286,6 +284,7 @@ ingame:
placeBuilding: Placer un bâtiment placeBuilding: Placer un bâtiment
createMarker: Créer une balise createMarker: Créer une balise
delete: Supprimer delete: Supprimer
pasteLastBlueprint: Paste last blueprint
# Everything related to placing buildings (I.e. as soon as you selected a building # Everything related to placing buildings (I.e. as soon as you selected a building
# from the toolbar) # from the toolbar)
@ -324,7 +323,7 @@ ingame:
# Mass select information, this is when you hold CTRL and then drag with your mouse # Mass select information, this is when you hold CTRL and then drag with your mouse
# to select multiple buildings # to select multiple buildings
massSelect: massSelect:
infoText: Appuyez sur <keyCopy> pour copier, <keyDelete> pour supprimer et <keyCancel> pour annuler. infoText: Press <keyCut> to cut, <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel.
# The "Upgrades" window # The "Upgrades" window
shop: shop:
@ -336,8 +335,7 @@ ingame:
# The roman number for each tier # The roman number for each tier
tierLabels: [I, II, III, IV, V, VI, VII, VIII, IX, X] tierLabels: [I, II, III, IV, V, VI, VII, VIII, IX, X]
maximumLevel: MAXIMUM LEVEL (Speed x<currentMult>)
maximumLevel: Niveau maximum
# The "Statistics" window # The "Statistics" window
statistics: statistics:
@ -401,16 +399,19 @@ ingame:
shopUpgrades: shopUpgrades:
belt: belt:
name: Convoyeurs, Distributeurs et Tunnels name: Convoyeurs, Distributeurs et Tunnels
description: Vitesse +<gain>% description: Speed x<currentMult> → x<newMult>
miner: miner:
name: Extraction name: Extraction
description: Vitesse +<gain>% description: Speed x<currentMult> → x<newMult>
processors: processors:
name: Découpage, Rotation et Empilage name: Découpage, Rotation et Empilage
description: Vitesse +<gain>% description: Speed x<currentMult> → x<newMult>
painting: painting:
name: Mélange et Peinture name: Mélange et Peinture
description: Vitesse +<gain>% description: Speed x<currentMult> → x<newMult>
# Buildings and their name / description # Buildings and their name / description
buildings: buildings:
@ -495,6 +496,10 @@ buildings:
storage: storage:
name: Stockage name: Stockage
description: Stocke les formes en trop jusqu'à une certaine capacité. Peut être utilisé comme tampon. description: Stocke les formes en trop jusqu'à une certaine capacité. Peut être utilisé comme tampon.
hub:
deliver: Deliver
toUnlock: to unlock
levelShortcut: LVL
storyRewards: storyRewards:
# Those are the rewards gained from completing the store # Those are the rewards gained from completing the store
@ -519,8 +524,6 @@ storyRewards:
title: Combineur title: Combineur
desc: Vous pouvez maintenant combiner deux formes avec le <strong>combineur</strong> ! Les deux entrées sont combinée et si elles ne peuvent êtres mises l'une à côté de l'autre, elles sont <strong>fusionnées</strong>. Sinon, la forme de droite est <strong>placée au dessus</strong> de la forme de gauche après avoir été légèrement réduite. desc: Vous pouvez maintenant combiner deux formes avec le <strong>combineur</strong> ! Les deux entrées sont combinée et si elles ne peuvent êtres mises l'une à côté de l'autre, elles sont <strong>fusionnées</strong>. Sinon, la forme de droite est <strong>placée au dessus</strong> de la forme de gauche après avoir été légèrement réduite.
# Suggestion from the translator: "après avoir été légèrement réduite" = "after having been slightly scaled down": I think this part of the explanation is missing in the original text, and I struggled a lot at the beginning to understand this important fact of mixing shapes.
reward_splitter: reward_splitter:
title: Distributeur/Rassembleur title: Distributeur/Rassembleur
desc: Le <strong>répartiteur</strong> multifonctionnel a été débloqué - Il peut être utilisé pour construire de plus grandes usines en <strong>distribuant équitablement et rassemblant les formes</strong> entre plusieurs convoyeurs!<br><br> desc: Le <strong>répartiteur</strong> multifonctionnel a été débloqué - Il peut être utilisé pour construire de plus grandes usines en <strong>distribuant équitablement et rassemblant les formes</strong> entre plusieurs convoyeurs!<br><br>
@ -576,9 +579,7 @@ storyRewards:
no_reward: no_reward:
title: Niveau suivant title: Niveau suivant
desc: >- desc: >-
Ce niveau n'a pas de récompense mais le prochain, oui ! <br><br>PS: Vous ne devriez pas détruires votre usine actuelle - Vous aurez besoin de <strong>toutes</strong> ces formes plus tard pour <strong>débloquer des améliorations</strong> Ce niveau n'a pas de récompense mais le prochain, oui ! <br><br>PS: Vous ne devriez pas détruire votre usine actuelle - Vous aurez besoin de <strong>toutes</strong> ces formes plus tard pour <strong>débloquer des améliorations</strong>
# Question from the translator: Is the "desc: >-" syntaxically correct ?
no_reward_freeplay: no_reward_freeplay:
title: Niveau suivant title: Niveau suivant
@ -640,6 +641,10 @@ settings:
description: >- description: >-
Choisissez votre thème (clair / sombre). Choisissez votre thème (clair / sombre).
themes:
dark: Dark
light: Light
refreshRate: refreshRate:
title: Fréquence de simulation title: Fréquence de simulation
description: >- description: >-
@ -655,6 +660,23 @@ settings:
description: >- description: >-
Affiche ou non le bouton 'Afficher un indice' dans le coin inférieur gauche. Affiche ou non le bouton 'Afficher un indice' dans le coin inférieur gauche.
language:
title: Language
description: >-
Change the language. All translations are user contributed and might be
incomplete!
movementSpeed:
title: Movement speed
description: Changes how fast the view moves when using the keyboard.
speeds:
super_slow: Super slow
slow: Slow
regular: Regular
fast: Fast
super_fast: Super Fast
extremely_fast: Extremely Fast
keybindings: keybindings:
title: Contrôles title: Contrôles
hint: >- hint: >-
@ -715,10 +737,30 @@ keybindings:
placementDisableAutoOrientation: Désactiver l'orientation automatique placementDisableAutoOrientation: Désactiver l'orientation automatique
placeMultiple: Rester en mode placement placeMultiple: Rester en mode placement
placeInverse: Inverser le mode d'orientation automatique placeInverse: Inverser le mode d'orientation automatique
pasteLastBlueprint: Paste last blueprint
massSelectCut: Cut area
exportScreenshot: Export whole Base as Image
about: about:
title: À propos de ce jeu title: À propos de ce jeu
body: >-
Ce jeu est open source et développé par <a href="https://github.com/tobspr"
target="_blank">Tobias Springer</a> (c'est moi).<br><br>
Si vous souhaitez contribuer, allez voir <a href="<githublink>"
target="_blank">shapez.io sur github</a>.<br><br>
Ce jeu n'aurait pu être réalisé sans la précieuse communauté discord autour de
mes jeux - Vous devriez vraiment envisager de joindre le <a href="<discordlink>"
target="_blank">serveur discord</a> !<br><br>
La bande son a été créée par <a href="https://soundcloud.com/pettersumelius"
target="_blank">Peppsen</a> - Il est impressionnant.<br><br>
Pour terminer, un immense merci à mon meilleur amis <a
href="https://github.com/niklas-dahl" target="_blank">Niklas</a> - Sans nos
sessions sur factorio, ce jeu n'aurait jamais existé.
changelog: changelog:
title: Historique title: Historique
@ -728,6 +770,7 @@ demo:
importingGames: Importer des sauvegardes importingGames: Importer des sauvegardes
oneGameLimit: Limité à une sauvegarde oneGameLimit: Limité à une sauvegarde
customizeKeybindings: Personnalisation des contrôles customizeKeybindings: Personnalisation des contrôles
exportingBase: Exporting whole Base as Image
settingNotAvailable: Indisponible dans la démo. settingNotAvailable: Indisponible dans la démo.
# #

767
translations/base-hu.yaml Normal file
View File

@ -0,0 +1,767 @@
#
# GAME TRANSLATIONS
#
# Contributing:
#
# If you want to contribute, please make a pull request on this respository
# and I will have a look.
#
# Placeholders:
#
# Do *not* replace placeholders! Placeholders have a special syntax like
# `Hotkey: <key>`. They are encapsulated within angle brackets. The correct
# translation for this one in German for example would be: `Taste: <key>` (notice
# how the placeholder stayed '<key>' and was not replaced!)
#
# Adding a new language:
#
# If you want to add a new language, ask me in the discord and I will setup
# the basic structure so the game also detects it.
#
steamPage:
# This is the short text appearing on the steam page
shortText: shapez.io is a game about building factories to automate the creation and combination of increasingly complex shapes within an infinite map.
# This is the long description for the steam page - It is contained here so you can help to translate it, and I will regulary update the store page.
# NOTICE:
# - Do not translate the first line (This is the gif image at the start of the store)
# - Please keep the markup (Stuff like [b], [list] etc) in the same format
longText: >-
[img]{STEAM_APP_IMAGE}/extras/store_page_gif.gif[/img]
shapez.io is a game about building factories to automate the creation and combination of shapes. Deliver the requested, increasingly complex shapes to progress within the game and unlock upgrades to speed up your factory.
Since the demand raises you will have to scale up your factory to fit the needs - Don't forget about resources though, you will have to expand in the [b]infinite map[/b]!
Since shapes can get boring soon you need to mix colors and paint your shapes with it - Combine red, green and blue color resources to produce different colors and paint shapes with it to satisfy the demand.
This game features 18 levels (Which should keep you busy for hours already!) but I'm constantly adding new content - There is a lot planned!
[b]Standalone Advantages[/b]
[list]
[*] Waypoints
[*] Végtelen mentések
[*] Sötét Mód
[*] Több beállítás
[*] Lehetővé teszed, hogy tovább fejlesszem a shapez.io-t ❤️
[*] More features in the future!
[/list]
[b]Planned features & Community suggestions[/b]
Ez a játék nyílt forráskódú - Anybody can contribute! Besides of that, I listen [b]a lot[/b] to the community! I try to read all suggestions and take as much feedback into account as possible.
[list]
[*] Sztori mód, ahol az épületek alakzatokba kerülnek
[*] Több szint és épület (standalone exclusive)
[*] Különböző térképek, és talán akadályok
[*] Configurable map creation (Edit number and size of patches, seed, and more)
[*] Sokkal több alakzat
[*] More performance improvements (Bár a játék így is elég jól fut!)
[*] Színvak mód
[*] And much more!
[/list]
Be sure to check out my trello board for the full roadmap! https://trello.com/b/ISQncpJP/shapezio
global:
loading: Betöltés
error: Hiba
# How big numbers are rendered, e.g. "10,000"
thousandsDivider: ","
# The suffix for large numbers, e.g. 1.3k, 400.2M, etc.
suffix:
thousands: E
millions: M
billions: Mlrd
trillions: T
# Shown for infinitely big numbers
infinite: inf
time:
# Used for formatting past time dates
oneSecondAgo: egy másodperccel ezelőtt
xSecondsAgo: <x> másodperccel ezelőtt
oneMinuteAgo: egy perccel ezelőtt
xMinutesAgo: <x> perccel ezelőtt
oneHourAgo: egy órával ezelőtt
xHoursAgo: <x> órával ezelőtt
oneDayAgo: egy nappal ezelőtt
xDaysAgo: <x> nappal ezelőtt
# Short formats for times, e.g. '5h 23m'
secondsShort: <seconds>mp
minutesAndSecondsShort: <minutes>p <seconds>mp
hoursAndMinutesShort: <hours>ó <minutes>p
xMinutes: <x> perc
keys:
tab: TAB
control: CTRL
alt: ALT
escape: ESC
shift: SHIFT
space: SPACE
demoBanners:
# This is the "advertisement" shown in the main menu and other various places
title: Demó verzi
intro: >-
Get the standalone to unlock all features!
mainMenu:
play: Játék
changelog: Changelog
importSavegame: Importálás
openSourceHint: Ez a játék nyílt forráskódú!
discordLink: Hivatalos Discord Szerver
helpTranslate: Segíts a fordításban!
# This is shown when using firefox and other browsers which are not supported.
browserWarning: >-
Sorry, but the game is known to run slow on your browser! Get the standalone version or download chrome for the full experience.
savegameLevel: <x>. szint
savegameLevelUnknown: Ismeretlen szint
contests:
contest_01_03062020:
title: "Contest #01"
desc: Win <strong>$25</strong> for the coolest base!
longDesc: >-
To give something back to you, I thought it would be cool to make weekly contests!
<br><br>
<strong>This weeks topic:</strong> Build the coolest base!
<br><br>
Here's the deal:<br>
<ul class="bucketList">
<li>Submit a screenshot of your base to <strong>contest@shapez.io</strong></li>
<li>Bonus points if you share it on social media!</li>
<li>I will choose 5 screenshots and propose it to the <strong>discord</strong> community to vote.</li>
<li>The winner gets <strong>$25</strong> (Paypal, Amazon Gift Card, whatever you prefer)</li>
<li>Deadline: 07.06.2020 12:00 AM CEST</li>
</ul>
<br>
I'm looking forward to seeing your awesome creations!
showInfo: View
contestOver: This contest has ended - Join the discord to get noticed about new contests!
dialogs:
buttons:
ok: OK
delete: Törlés
cancel: Megszakítás
later: Később
restart: Újrakezdés
reset: Visszaállítás
getStandalone: Get Standalone
deleteGame: Tudom mit csinálok
viewUpdate: View Update
showUpgrades: Show Upgrades
showKeybindings: Show Keybindings
importSavegameError:
title: Importálás Hiba
text: >-
Failed to import your savegame: Nem sikerült importálni a mentésed.
importSavegameSuccess:
title: Mentés Importálva
text: >-
A mentésed sikeresen importálva lett.
gameLoadFailure:
title: Game is broken
text: >-
Failed to load your savegame: Nem sikerült betölteni a mentésed
confirmSavegameDelete:
title: Confirm deletion
text: >-
Biztos, hogy ki akarod törölni?
savegameDeletionError:
title: Sikertelen törlés
text: >-
Failed to delete the savegame: Nem sikerült törölni a mentésed.
restartRequired:
title: Újraindítás szükséges
text: >-
Újra kell indítanod a játékot, hogy életbe lépjenek a módosítások.
editKeybinding:
title: Change Keybinding
desc: Press the key or mouse button you want to assign, or escape to cancel.
resetKeybindingsConfirmation:
title: Reset keybindings
desc: This will reset all keybindings to their default values. Please confirm.
keybindingsResetOk:
title: Keybindings reset
desc: The keybindings have been reset to their respective defaults!
featureRestriction:
title: Demo Version
desc: You tried to access a feature (<feature>) which is not available in the demo. Consider to get the standalone for the full experience!
oneSavegameLimit:
title: Limited savegames
desc: You can only have one savegame at a time in the demo version. Please remove the existing one or get the standalone!
updateSummary:
title: Új frissítés!
desc: >-
Here are the changes since you last played:
upgradesIntroduction:
title: Unlock Upgrades
desc: >-
All shapes you produce can be used to unlock upgrades - <strong>Don't destroy your old factories!</strong>
The upgrades tab can be found on the top right corner of the screen.
massDeleteConfirm:
title: Confirm delete
desc: >-
You are deleting a lot of buildings (<count> to be exact)! Are you sure you want to do this?
blueprintsNotUnlocked:
title: Még nincs feloldva
desc: >-
Blueprints have not been unlocked yet! Complete more levels to unlock them.
keybindingsIntroduction:
title: Useful keybindings
desc: >-
This game has a lot of keybindings which make it easier to build big factories.
Here are a few, but be sure to <strong>check out the keybindings</strong>!<br><br>
<code class='keybinding'>CTRL</code> + Drag: Select area to copy / delete.<br>
<code class='keybinding'>SHIFT</code>: Hold to place multiple of one building.<br>
<code class='keybinding'>ALT</code>: Invert orientation of placed belts.<br>
createMarker:
title: New Marker
desc: Adj neki egy értelmes nevet
markerDemoLimit:
desc: You can only create two custom markers in the demo. Get the standalone for unlimited markers!
massCutConfirm:
title: Confirm cut
desc: >-
You are cutting a lot of buildings (<count> to be exact)! Are you sure you
want to do this?
exportScreenshotWarning:
title: Export screenshot
desc: >-
You requested to export your base as a screenshot. Please note that this can
be quite slow for a big base and even crash your game!
ingame:
# This is shown in the top left corner and displays useful keybindings in
# every situation
keybindingsOverlay:
moveMap: Move
selectBuildings: Terület kijelölése
stopPlacement: Stop placement
rotateBuilding: Épület forgatása
placeMultiple: Place multiple
reverseOrientation: Reverse orientation
disableAutoOrientation: Disable auto orientation
toggleHud: Toggle HUD
placeBuilding: Place building
createMarker: Create Marker
delete: Destroy
pasteLastBlueprint: Paste last blueprint
# Everything related to placing buildings (I.e. as soon as you selected a building
# from the toolbar)
buildingPlacement:
# Buildings can have different variants which are unlocked at later levels,
# and this is the hint shown when there are multiple variants available.
cycleBuildingVariants: Nyomd meg a <key>-t, hogy válts a variációk között.
# Shows the hotkey in the ui, e.g. "Hotkey: Q"
hotkeyLabel: >-
Hotkey: <key>
infoTexts:
speed: Gyorsaság
range: Range
storage: Storage
oneItemPerSecond: 1 tárgy / mp
itemsPerSecond: <x> tárgy / mp
itemsPerSecondDouble: (x2)
tiles: <x> tiles
# The notification when completing a level
levelCompleteNotification:
# <level> is replaced by the actual level, so this gets 'Level 03' for example.
levelTitle: <level>. szint
completed: Completed
unlockText: Feloldva <reward>!
buttonNextLevel: Következő Szint
# Notifications on the lower right
notifications:
newUpgrade: Egy új fejlesztés elérhető!
gameSaved: A játékod el lett mentve.
# Mass select information, this is when you hold CTRL and then drag with your mouse
# to select multiple buildings
massSelect:
infoText: Press <keyCut> to cut, <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel.
# The "Upgrades" window
shop:
title: Fejlesztések
buttonUnlock: Fejlesztés
# Gets replaced to e.g. "Tier IX"
tier: Tier <x>
# The roman number for each tier
tierLabels: [I, II, III, IV, V, VI, VII, VIII, IX, X]
maximumLevel: MAXIMUM LEVEL (Speed x<currentMult>)
# The "Statistics" window
statistics:
title: Statisztikák
dataSources:
stored:
title: Tárolva
description: Displaying amount of stored shapes in your central building.
produced:
title: Gyártva
description: Displaying all shapes your whole factory produces, including intermediate products.
delivered:
title: Delivered
description: Displaying shapes which are delivered to your central building.
noShapesProduced: No shapes have been produced so far.
# Displays the shapes per minute, e.g. '523 / m'
shapesPerMinute: <shapes> / p
# Settings menu, when you press "ESC"
settingsMenu:
playtime: Játékidő
buildingsPlaced: Épület
beltsPlaced: Futószalag
buttons:
continue: Folytatás
settings: Beállítások
menu: Vissza a menübe
# Bottom left tutorial hints
tutorialHints:
title: Segítségre van szükséged?
showHint: Segítség mutatása
hideHint: Bezárás
# When placing a blueprint
blueprintPlacer:
cost: Ár
# Map markers
waypoints:
waypoints: Markers
hub: HUB
description: Left-click a marker to jump to it, right-click to delete it.<br><br>Press <keybinding> to create a marker from the current view, or <strong>right-click</strong> to create a marker at the selected location.
creationSuccessNotification: Marker has been created.
# Interactive tutorial
interactiveTutorial:
title: Tutorial
hints:
1_1_extractor: Place an <strong>extractor</strong> on top of a <strong>circle shape</strong> to extract it!
1_2_conveyor: >-
Connect the extractor with a <strong>conveyor belt</strong> to your hub!<br><br>Tip: <strong>Click and drag</strong> the belt with your mouse!
1_3_expand: >-
This is <strong>NOT</strong> an idle game! Build more extractors and belts to finish the goal quicker.<br><br>Tip: Hold <strong>SHIFT</strong> to place multiple extractors, and use <strong>R</strong> to rotate them.
# All shop upgrades
shopUpgrades:
belt:
name: Belts, Distributor & Tunnels
description: Speed x<currentMult> → x<newMult>
miner:
name: Extraction
description: Speed x<currentMult> → x<newMult>
processors:
name: Cutting, Rotating & Stacking
description: Speed x<currentMult> → x<newMult>
painting:
name: Mixing & Painting
description: Speed x<currentMult> → x<newMult>
# Buildings and their name / description
buildings:
belt:
default:
name: &belt Conveyor Belt
description: Transports items, hold and drag to place multiple.
miner: # Internal name for the Extractor
default:
name: &miner Extractor
description: Place over a shape or color to extract it.
chainable:
name: Extractor (Chain)
description: Place over a shape or color to extract it. Can be chained.
underground_belt: # Internal name for the Tunnel
default:
name: &underground_belt Tunnel
description: Allows to tunnel resources under buildings and belts.
tier2:
name: Tunnel Tier II
description: Allows to tunnel resources under buildings and belts.
splitter: # Internal name for the Balancer
default:
name: &splitter Balancer
description: Multifunctional - Evenly distributes all inputs onto all outputs.
compact:
name: Merger (compact)
description: Merges two conveyor belts into one.
compact-inverse:
name: Merger (compact)
description: Merges two conveyor belts into one.
cutter:
default:
name: &cutter Cutter
description: Cuts shapes from top to bottom and outputs both halfs. <strong>If you use only one part, be sure to destroy the other part or it will stall!</strong>
quad:
name: Cutter (Quad)
description: Cuts shapes into four parts. <strong>If you use only one part, be sure to destroy the other part or it will stall!</strong>
rotater:
default:
name: &rotater Rotate
description: Rotates shapes clockwise by 90 degrees.
ccw:
name: Rotate (CCW)
description: Rotates shapes counter clockwise by 90 degrees.
stacker:
default:
name: &stacker Stacker
description: Stacks both items. If they can not be merged, the right item is placed above the left item.
mixer:
default:
name: &mixer Color Mixer
description: Mixes two colors using additive blending.
painter:
default:
name: &painter Painter
description: Colors the whole shape on the left input with the color from the right input.
double:
name: Painter (Double)
description: Colors the shapes on the left inputs with the color from the top input.
quad:
name: Painter (Quad)
description: Allows to color each quadrant of the shape with a different color.
trash:
default:
name: &trash Trash
description: Accepts inputs from all sides and destroys them. Forever.
storage:
name: Storage
description: Stores excess items, up to a given capacity. Can be used as an overflow gate.
hub:
deliver: Deliver
toUnlock: to unlock
levelShortcut: LVL
storyRewards:
# Those are the rewards gained from completing the store
reward_cutter_and_trash:
title: Cutting Shapes
desc: You just unlocked the <strong>cutter</strong> - it cuts shapes half from <strong>top to bottom</strong> regardless of its orientation!<br><br>Be sure to get rid of the waste, or otherwise <strong>it will stall</strong> - For this purpose I gave you a trash, which destroys everything you put into it!
reward_rotater:
title: Rotating
desc: The <strong>rotater</strong> has been unlocked! It rotates shapes clockwise by 90 degrees.
reward_painter:
title: Painting
desc: >-
The <strong>painter</strong> has been unlocked - Extract some color veins (just as you do with shapes) and combine it with a shape in the painter to color them!<br><br>PS: If you are colorblind, I'm working on a solution already!
reward_mixer:
title: Color Mixing
desc: The <strong>mixer</strong> has been unlocked - Combine two colors using <strong>additive blending</strong> with this building!
reward_stacker:
title: Combiner
desc: You can now combine shapes with the <strong>combiner</strong>! Both inputs are combined, and if they can be put next to each other, they will be <strong>fused</strong>. If not, the right input is <strong>stacked on top</strong> of the left input!
reward_splitter:
title: Splitter/Merger
desc: The multifunctional <strong>balancer</strong> has been unlocked - It can be used to build bigger factories by <strong>splitting and merging items</strong> onto multiple belts!<br><br>
reward_tunnel:
title: Tunnel
desc: The <strong>tunnel</strong> has been unlocked - You can now pipe items through belts and buildings with it!
reward_rotater_ccw:
title: CCW Rotating
desc: You have unlocked a variant of the <strong>rotater</strong> - It allows to rotate counter clockwise! To build it, select the rotater and <strong>press 'T' to cycle its variants</strong>!
reward_miner_chainable:
title: Chaining Extractor
desc: You have unlocked the <strong>chaining extractor</strong>! It can <strong>forward its resources</strong> to other extractors so you can more efficiently extract resources!
reward_underground_belt_tier_2:
title: Tunnel Tier II
desc: You have unlocked a new variant of the <strong>tunnel</strong> - It has a <strong>bigger range</strong>, and you can also mix-n-match those tunnels now!
reward_splitter_compact:
title: Compact Balancer
desc: >-
You have unlocked a compact variant of the <strong>balancer</strong> - It accepts two inputs and merges them into one!
reward_cutter_quad:
title: Quad Cutting
desc: You have unlocked a variant of the <strong>cutter</strong> - It allows you to cut shapes in <strong>four parts</strong> instead of just two!
reward_painter_double:
title: Double Painting
desc: You have unlocked a variant of the <strong>painter</strong> - It works as the regular painter but processes <strong>two shapes at once</strong> consuming just one color instead of two!
reward_painter_quad:
title: Quad Painting
desc: You have unlocked a variant of the <strong>painter</strong> - It allows to paint each part of the shape individually!
reward_storage:
title: Storage Buffer
desc: You have unlocked a variant of the <strong>trash</strong> - It allows to store items up to a given capacity!
reward_freeplay:
title: Freeplay
desc: You did it! You unlocked the <strong>free-play mode</strong>! This means that shapes are now randomly generated! (No worries, more content is planned for the standalone!)
reward_blueprints:
title: Blueprints
desc: You can now <strong>copy and paste</strong> parts of your factory! Select an area (Hold CTRL, then drag with your mouse), and press 'C' to copy it.<br><br>Pasting it is <strong>not free</strong>, you need to produce <strong>blueprint shapes</strong> to afford it! (Those you just delivered).
# Special reward, which is shown when there is no reward actually
no_reward:
title: Next level
desc: >-
This level gave you no reward, but the next one will! <br><br> PS: Better don't destroy your existing factory - You need <strong>all</strong> those shapes later again to <strong>unlock upgrades</strong>!
no_reward_freeplay:
title: Next level
desc: >-
Congratulations! By the way, more content is planned for the standalone!
settings:
title: Beállítások
categories:
game: Game
app: Application
versionBadges:
dev: Development
staging: Staging
prod: Production
buildDate: Built <at-date>
labels:
uiScale:
title: Interfész nagyság
description: >-
Changes the size of the user interface. The interface will still scale based on your device resolution, but this setting controls the amount of scale.
scales:
super_small: Szuper kicsi
small: Kicsi
regular: Közepes
large: Nagy
huge: Hatalmas
scrollWheelSensitivity:
title: Zoom sensitivity
description: >-
Changes how sensitive the zoom is (Either mouse wheel or trackpad).
sensitivity:
super_slow: Szuper lassú
slow: Lassú
regular: Közepes
fast: Gyors
super_fast: Szuper gyors
language:
title: Nyelv
description: >-
Change the language. All translations are user contributed and might be incomplete!
fullscreen:
title: Fullscreen
description: >-
It is recommended to play the game in fullscreen to get the best experience. Only available in the standalone.
soundsMuted:
title: Hangok Némítása
description: >-
If enabled, mutes all sound effects.
musicMuted:
title: Zene Némítása
description: >-
If enabled, mutes all music.
theme:
title: Game theme
description: >-
Choose the game theme (light / dark).
themes:
dark: Sötét
light: Világos
refreshRate:
title: Simulation Target
description: >-
If you have a 144hz monitor, change the refresh rate here so the game will properly simulate at higher refresh rates. This might actually decrease the FPS if your computer is too slow.
alwaysMultiplace:
title: Multiplace
description: >-
If enabled, all buildings will stay selected after placement until you cancel it. This is equivalent to holding SHIFT permanently.
offerHints:
title: Hints & Tutorials
description: >-
Whether to offer hints and tutorials while playing. Also hides certain UI elements onto a given level to make it easier to get into the game.
movementSpeed:
title: Movement speed
description: Changes how fast the view moves when using the keyboard.
speeds:
super_slow: Super slow
slow: Slow
regular: Regular
fast: Fast
super_fast: Super Fast
extremely_fast: Extremely Fast
keybindings:
title: Keybindings
hint: >-
Tip: Be sure to make use of CTRL, SHIFT and ALT! They enable different placement options.
resetKeybindings: Reset Keyinbindings
categoryLabels:
general: Application
ingame: Game
navigation: Navigating
placement: Placement
massSelect: Mass Select
buildings: Building Shortcuts
placementModifiers: Placement Modifiers
mappings:
confirm: Confirm
back: Vissza
mapMoveUp: Move Up
mapMoveRight: Move Right
mapMoveDown: Move Down
mapMoveLeft: Move Left
centerMap: Center Map
mapZoomIn: Zoom in
mapZoomOut: Zoom out
createMarker: Create Marker
menuOpenShop: Fejlesztések
menuOpenStats: Statisztikák
toggleHud: Toggle HUD
toggleFPSInfo: Toggle FPS and Debug Info
belt: *belt
splitter: *splitter
underground_belt: *underground_belt
miner: *miner
cutter: *cutter
rotater: *rotater
stacker: *stacker
mixer: *mixer
painter: *painter
trash: *trash
abortBuildingPlacement: Abort Placement
rotateWhilePlacing: Rotate
rotateInverseModifier: >-
Modifier: Rotate CCW instead
cycleBuildingVariants: Cycle Variants
confirmMassDelete: Confirm Mass Delete
cycleBuildings: Cycle Buildings
massSelectStart: Hold and drag to start
massSelectSelectMultiple: Select multiple areas
massSelectCopy: Copy area
placementDisableAutoOrientation: Disable automatic orientation
placeMultiple: Stay in placement mode
placeInverse: Invert automatic belt orientation
pasteLastBlueprint: Paste last blueprint
massSelectCut: Cut area
exportScreenshot: Export whole Base as Image
about:
title: A játékról
body: >-
This game is open source and developed by <a href="https://github.com/tobspr"
target="_blank">Tobias Springer</a> (this is me).<br><br>
If you want to contribute, check out <a href="<githublink>"
target="_blank">shapez.io on github</a>.<br><br>
This game wouldn't have been possible without the great discord community
around my games - You should really join the <a href="<discordlink>"
target="_blank">discord server</a>!<br><br>
The soundtrack was made by <a href="https://soundcloud.com/pettersumelius"
target="_blank">Peppsen</a> - He's awesome.<br><br>
Finally, huge thanks to my best friend <a
href="https://github.com/niklas-dahl" target="_blank">Niklas</a> - Without our
factorio sessions this game would never have existed.
changelog:
title: Changelog
demo:
features:
restoringGames: Mentések visszaállítása
importingGames: Mentések importálása
oneGameLimit: Egy mentésre van limitálva
customizeKeybindings: Customizing Keybindings
exportingBase: Exporting whole Base as Image
settingNotAvailable: Nem elérhető a demóban.

View File

@ -36,7 +36,7 @@ steamPage:
Since shapes can get boring soon you need to mix colors and paint your shapes with it - Combine red, green and blue color resources to produce different colors and paint shapes with it to satisfy the demand. Since shapes can get boring soon you need to mix colors and paint your shapes with it - Combine red, green and blue color resources to produce different colors and paint shapes with it to satisfy the demand.
This game features 18 levels (Which should keep you busy for hours already!) but I'm constantly adding new content - There is a lot planned! This game features 18 levels (Which should keep you busy for hours already!) but I'm constantly adding new content - There is a lot planned!
[b]Standalone Advantages[/b] [b]Standalone Advantages[/b]
@ -214,17 +214,6 @@ dialogs:
title: Demo Version title: Demo Version
desc: You tried to access a feature (<feature>) which is not available in the demo. Consider to get the standalone for the full experience! desc: You tried to access a feature (<feature>) which is not available in the demo. Consider to get the standalone for the full experience!
saveNotPossibleInDemo:
desc: Your game has been saved, but restoring it is only possible in the standalone version. Consider to get the standalone for the full experience!
leaveNotPossibleInDemo:
title: Demo version
desc: Your game has been saved, but you will not be able to restore it in the demo. Restoring your savegames is only possible in the full version. Are you sure?
newUpdate:
title: Update available
desc: There is an update for this game available, be sure to download it!
oneSavegameLimit: oneSavegameLimit:
title: Limited savegames title: Limited savegames
desc: You can only have one savegame at a time in the demo version. Please remove the existing one or get the standalone! desc: You can only have one savegame at a time in the demo version. Please remove the existing one or get the standalone!
@ -234,11 +223,6 @@ dialogs:
desc: >- desc: >-
Here are the changes since you last played: Here are the changes since you last played:
hintDescription:
title: Tutorial
desc: >-
Whenever you need help or are stuck, check out the 'Show hint' button in the lower left and I'll give my best to help you!
upgradesIntroduction: upgradesIntroduction:
title: Unlock Upgrades title: Unlock Upgrades
desc: >- desc: >-
@ -270,6 +254,17 @@ dialogs:
markerDemoLimit: markerDemoLimit:
desc: You can only create two custom markers in the demo. Get the standalone for unlimited markers! desc: You can only create two custom markers in the demo. Get the standalone for unlimited markers!
massCutConfirm:
title: Confirm cut
desc: >-
You are cutting a lot of buildings (<count> to be exact)! Are you sure you
want to do this?
exportScreenshotWarning:
title: Export screenshot
desc: >-
You requested to export your base as a screenshot. Please note that this can
be quite slow for a big base and even crash your game!
ingame: ingame:
# This is shown in the top left corner and displays useful keybindings in # This is shown in the top left corner and displays useful keybindings in
@ -286,6 +281,7 @@ ingame:
placeBuilding: Place building placeBuilding: Place building
createMarker: Create Marker createMarker: Create Marker
delete: Destroy delete: Destroy
pasteLastBlueprint: Paste last blueprint
# Everything related to placing buildings (I.e. as soon as you selected a building # Everything related to placing buildings (I.e. as soon as you selected a building
# from the toolbar) # from the toolbar)
@ -324,7 +320,7 @@ ingame:
# Mass select information, this is when you hold CTRL and then drag with your mouse # Mass select information, this is when you hold CTRL and then drag with your mouse
# to select multiple buildings # to select multiple buildings
massSelect: massSelect:
infoText: Press <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel. infoText: Press <keyCut> to cut, <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel.
# The "Upgrades" window # The "Upgrades" window
shop: shop:
@ -496,6 +492,11 @@ buildings:
name: Storage name: Storage
description: Stores excess items, up to a given capacity. Can be used as an overflow gate. description: Stores excess items, up to a given capacity. Can be used as an overflow gate.
hub:
deliver: Deliver
toUnlock: to unlock
levelShortcut: LVL
storyRewards: storyRewards:
# Those are the rewards gained from completing the store # Those are the rewards gained from completing the store
reward_cutter_and_trash: reward_cutter_and_trash:
@ -639,6 +640,10 @@ settings:
description: >- description: >-
Choose the game theme (light / dark). Choose the game theme (light / dark).
themes:
dark: Dark
light: Light
refreshRate: refreshRate:
title: Simulation Target title: Simulation Target
description: >- description: >-
@ -654,6 +659,17 @@ settings:
description: >- description: >-
Whether to offer hints and tutorials while playing. Also hides certain UI elements onto a given level to make it easier to get into the game. Whether to offer hints and tutorials while playing. Also hides certain UI elements onto a given level to make it easier to get into the game.
movementSpeed:
title: Movement speed
description: Changes how fast the view moves when using the keyboard.
speeds:
super_slow: Super slow
slow: Slow
regular: Regular
fast: Fast
super_fast: Super Fast
extremely_fast: Extremely Fast
keybindings: keybindings:
title: Keybindings title: Keybindings
hint: >- hint: >-
@ -714,9 +730,29 @@ keybindings:
placementDisableAutoOrientation: Disable automatic orientation placementDisableAutoOrientation: Disable automatic orientation
placeMultiple: Stay in placement mode placeMultiple: Stay in placement mode
placeInverse: Invert automatic belt orientation placeInverse: Invert automatic belt orientation
pasteLastBlueprint: Paste last blueprint
massSelectCut: Cut area
exportScreenshot: Export whole Base as Image
about: about:
title: About this Game title: About this Game
body: >-
This game is open source and developed by <a href="https://github.com/tobspr"
target="_blank">Tobias Springer</a> (this is me).<br><br>
If you want to contribute, check out <a href="<githublink>"
target="_blank">shapez.io on github</a>.<br><br>
This game wouldn't have been possible without the great discord community
around my games - You should really join the <a href="<discordlink>"
target="_blank">discord server</a>!<br><br>
The soundtrack was made by <a href="https://soundcloud.com/pettersumelius"
target="_blank">Peppsen</a> - He's awesome.<br><br>
Finally, huge thanks to my best friend <a
href="https://github.com/niklas-dahl" target="_blank">Niklas</a> - Without our
factorio sessions this game would never have existed.
changelog: changelog:
title: Changelog title: Changelog
@ -727,5 +763,6 @@ demo:
importingGames: Importing savegames importingGames: Importing savegames
oneGameLimit: Limited to one savegame oneGameLimit: Limited to one savegame
customizeKeybindings: Customizing Keybindings customizeKeybindings: Customizing Keybindings
exportingBase: Exporting whole Base as Image
settingNotAvailable: Not available in the demo. settingNotAvailable: Not available in the demo.

768
translations/base-ja.yaml Normal file
View File

@ -0,0 +1,768 @@
#
# GAME TRANSLATIONS
#
# Contributing:
#
# If you want to contribute, please make a pull request on this respository
# and I will have a look.
#
# Placeholders:
#
# Do *not* replace placeholders! Placeholders have a special syntax like
# `Hotkey: <key>`. They are encapsulated within angle brackets. The correct
# translation for this one in German for example would be: `Taste: <key>` (notice
# how the placeholder stayed '<key>' and was not replaced!)
#
# Adding a new language:
#
# If you want to add a new language, ask me in the discord and I will setup
# the basic structure so the game also detects it.
#
steamPage:
# This is the short text appearing on the steam page
shortText: shapez.io is a game about building factories to automate the creation and combination of increasingly complex shapes within an infinite map.
# This is the long description for the steam page - It is contained here so you can help to translate it, and I will regulary update the store page.
# NOTICE:
# - Do not translate the first line (This is the gif image at the start of the store)
# - Please keep the markup (Stuff like [b], [list] etc) in the same format
longText: >-
[img]{STEAM_APP_IMAGE}/extras/store_page_gif.gif[/img]
shapez.io is a game about building factories to automate the creation and combination of shapes. Deliver the requested, increasingly complex shapes to progress within the game and unlock upgrades to speed up your factory.
Since the demand raises you will have to scale up your factory to fit the needs - Don't forget about resources though, you will have to expand in the [b]infinite map[/b]!
Since shapes can get boring soon you need to mix colors and paint your shapes with it - Combine red, green and blue color resources to produce different colors and paint shapes with it to satisfy the demand.
This game features 18 levels (Which should keep you busy for hours already!) but I'm constantly adding new content - There is a lot planned!
[b]Standalone Advantages[/b]
[list]
[*] Waypoints
[*] Unlimited Savegames
[*] Dark Mode
[*] More settings
[*] Allow me to further develop shapez.io ❤️
[*] More features in the future!
[/list]
[b]Planned features & Community suggestions[/b]
This game is open source - Anybody can contribute! Besides of that, I listen [b]a lot[/b] to the community! I try to read all suggestions and take as much feedback into account as possible.
[list]
[*] Story mode where buildings cost shapes
[*] More levels & buildings (standalone exclusive)
[*] Different maps, and maybe map obstacles
[*] Configurable map creation (Edit number and size of patches, seed, and more)
[*] More types of shapes
[*] More performance improvements (Although the game already runs pretty good!)
[*] Color blind mode
[*] And much more!
[/list]
Be sure to check out my trello board for the full roadmap! https://trello.com/b/ISQncpJP/shapezio
global:
loading: Loading
error: Error
# How big numbers are rendered, e.g. "10,000"
thousandsDivider: ","
# The suffix for large numbers, e.g. 1.3k, 400.2M, etc.
suffix:
thousands: k
millions: M
billions: B
trillions: T
# Shown for infinitely big numbers
infinite: inf
time:
# Used for formatting past time dates
oneSecondAgo: one second ago
xSecondsAgo: <x> seconds ago
oneMinuteAgo: one minute ago
xMinutesAgo: <x> minutes ago
oneHourAgo: one hour ago
xHoursAgo: <x> hours ago
oneDayAgo: one day ago
xDaysAgo: <x> days ago
# Short formats for times, e.g. '5h 23m'
secondsShort: <seconds>s
minutesAndSecondsShort: <minutes>m <seconds>s
hoursAndMinutesShort: <hours>h <minutes>m
xMinutes: <x> minutes
keys:
tab: TAB
control: CTRL
alt: ALT
escape: ESC
shift: SHIFT
space: SPACE
demoBanners:
# This is the "advertisement" shown in the main menu and other various places
title: Demo Version
intro: >-
Get the standalone to unlock all features!
mainMenu:
play: Play
changelog: Changelog
importSavegame: Import
openSourceHint: This game is open source!
discordLink: Official Discord Server
helpTranslate: Help translate!
# This is shown when using firefox and other browsers which are not supported.
browserWarning: >-
Sorry, but the game is known to run slow on your browser! Get the standalone version or download chrome for the full experience.
savegameLevel: Level <x>
savegameLevelUnknown: Unknown Level
contests:
contest_01_03062020:
title: "Contest #01"
desc: Win <strong>$25</strong> for the coolest base!
longDesc: >-
To give something back to you, I thought it would be cool to make weekly contests!
<br><br>
<strong>This weeks topic:</strong> Build the coolest base!
<br><br>
Here's the deal:<br>
<ul class="bucketList">
<li>Submit a screenshot of your base to <strong>contest@shapez.io</strong></li>
<li>Bonus points if you share it on social media!</li>
<li>I will choose 5 screenshots and propose it to the <strong>discord</strong> community to vote.</li>
<li>The winner gets <strong>$25</strong> (Paypal, Amazon Gift Card, whatever you prefer)</li>
<li>Deadline: 07.06.2020 12:00 AM CEST</li>
</ul>
<br>
I'm looking forward to seeing your awesome creations!
showInfo: View
contestOver: This contest has ended - Join the discord to get noticed about new contests!
dialogs:
buttons:
ok: OK
delete: Delete
cancel: Cancel
later: Later
restart: Restart
reset: Reset
getStandalone: Get Standalone
deleteGame: I know what I do
viewUpdate: View Update
showUpgrades: Show Upgrades
showKeybindings: Show Keybindings
importSavegameError:
title: Import Error
text: >-
Failed to import your savegame:
importSavegameSuccess:
title: Savegame Imported
text: >-
Your savegame has been successfully imported.
gameLoadFailure:
title: Game is broken
text: >-
Failed to load your savegame:
confirmSavegameDelete:
title: Confirm deletion
text: >-
Are you sure you want to delete the game?
savegameDeletionError:
title: Failed to delete
text: >-
Failed to delete the savegame:
restartRequired:
title: Restart required
text: >-
You need to restart the game to apply the settings.
editKeybinding:
title: Change Keybinding
desc: Press the key or mouse button you want to assign, or escape to cancel.
resetKeybindingsConfirmation:
title: Reset keybindings
desc: This will reset all keybindings to their default values. Please confirm.
keybindingsResetOk:
title: Keybindings reset
desc: The keybindings have been reset to their respective defaults!
featureRestriction:
title: Demo Version
desc: You tried to access a feature (<feature>) which is not available in the demo. Consider to get the standalone for the full experience!
oneSavegameLimit:
title: Limited savegames
desc: You can only have one savegame at a time in the demo version. Please remove the existing one or get the standalone!
updateSummary:
title: New update!
desc: >-
Here are the changes since you last played:
upgradesIntroduction:
title: Unlock Upgrades
desc: >-
All shapes you produce can be used to unlock upgrades - <strong>Don't destroy your old factories!</strong>
The upgrades tab can be found on the top right corner of the screen.
massDeleteConfirm:
title: Confirm delete
desc: >-
You are deleting a lot of buildings (<count> to be exact)! Are you sure you want to do this?
blueprintsNotUnlocked:
title: Not unlocked yet
desc: >-
Complete level 12 to unlock Blueprints!
keybindingsIntroduction:
title: Useful keybindings
desc: >-
This game has a lot of keybindings which make it easier to build big factories.
Here are a few, but be sure to <strong>check out the keybindings</strong>!<br><br>
<code class='keybinding'>CTRL</code> + Drag: Select area to delete.<br>
<code class='keybinding'>SHIFT</code>: Hold to place multiple of one building.<br>
<code class='keybinding'>ALT</code>: Invert orientation of placed belts.<br>
createMarker:
title: New Marker
desc: Give it a meaningful name
markerDemoLimit:
desc: You can only create two custom markers in the demo. Get the standalone for unlimited markers!
massCutConfirm:
title: Confirm cut
desc: >-
You are cutting a lot of buildings (<count> to be exact)! Are you sure you
want to do this?
exportScreenshotWarning:
title: Export screenshot
desc: >-
You requested to export your base as a screenshot. Please note that this can
be quite slow for a big base and even crash your game!
ingame:
# This is shown in the top left corner and displays useful keybindings in
# every situation
keybindingsOverlay:
moveMap: Move
selectBuildings: Select area
stopPlacement: Stop placement
rotateBuilding: Rotate building
placeMultiple: Place multiple
reverseOrientation: Reverse orientation
disableAutoOrientation: Disable auto orientation
toggleHud: Toggle HUD
placeBuilding: Place building
createMarker: Create Marker
delete: Destroy
pasteLastBlueprint: Paste last blueprint
# Everything related to placing buildings (I.e. as soon as you selected a building
# from the toolbar)
buildingPlacement:
# Buildings can have different variants which are unlocked at later levels,
# and this is the hint shown when there are multiple variants available.
cycleBuildingVariants: Press <key> to cycle variants.
# Shows the hotkey in the ui, e.g. "Hotkey: Q"
hotkeyLabel: >-
Hotkey: <key>
infoTexts:
speed: Speed
range: Range
storage: Storage
oneItemPerSecond: 1 item / second
itemsPerSecond: <x> items / s
itemsPerSecondDouble: (x2)
tiles: <x> tiles
# The notification when completing a level
levelCompleteNotification:
# <level> is replaced by the actual level, so this gets 'Level 03' for example.
levelTitle: Level <level>
completed: Completed
unlockText: Unlocked <reward>!
buttonNextLevel: Next Level
# Notifications on the lower right
notifications:
newUpgrade: A new upgrade is available!
gameSaved: Your game has been saved.
# Mass select information, this is when you hold CTRL and then drag with your mouse
# to select multiple buildings
massSelect:
infoText: Press <keyCut> to cut, <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel.
# The "Upgrades" window
shop:
title: Upgrades
buttonUnlock: Upgrade
# Gets replaced to e.g. "Tier IX"
tier: Tier <x>
# The roman number for each tier
tierLabels: [I, II, III, IV, V, VI, VII, VIII, IX, X]
maximumLevel: MAXIMUM LEVEL (Speed x<currentMult>)
# The "Statistics" window
statistics:
title: Statistics
dataSources:
stored:
title: Stored
description: Displaying amount of stored shapes in your central building.
produced:
title: Produced
description: Displaying all shapes your whole factory produces, including intermediate products.
delivered:
title: Delivered
description: Displaying shapes which are delivered to your central building.
noShapesProduced: No shapes have been produced so far.
# Displays the shapes per minute, e.g. '523 / m'
shapesPerMinute: <shapes> / m
# Settings menu, when you press "ESC"
settingsMenu:
playtime: Playtime
buildingsPlaced: Buildings
beltsPlaced: Belts
buttons:
continue: Continue
settings: Settings
menu: Return to menu
# Bottom left tutorial hints
tutorialHints:
title: Need help?
showHint: Show hint
hideHint: Close
# When placing a blueprint
blueprintPlacer:
cost: Cost
# Map markers
waypoints:
waypoints: Markers
hub: HUB
description: Left-click a marker to jump to it, right-click to delete it.<br><br>Press <keybinding> to create a marker from the current view, or <strong>right-click</strong> to create a marker at the selected location.
creationSuccessNotification: Marker has been created.
# Interactive tutorial
interactiveTutorial:
title: Tutorial
hints:
1_1_extractor: Place an <strong>extractor</strong> on top of a <strong>circle shape</strong> to extract it!
1_2_conveyor: >-
Connect the extractor with a <strong>conveyor belt</strong> to your hub!<br><br>Tip: <strong>Click and drag</strong> the belt with your mouse!
1_3_expand: >-
This is <strong>NOT</strong> an idle game! Build more extractors and belts to finish the goal quicker.<br><br>Tip: Hold <strong>SHIFT</strong> to place multiple extractors, and use <strong>R</strong> to rotate them.
# All shop upgrades
shopUpgrades:
belt:
name: Belts, Distributor & Tunnels
description: Speed x<currentMult> → x<newMult>
miner:
name: Extraction
description: Speed x<currentMult> → x<newMult>
processors:
name: Cutting, Rotating & Stacking
description: Speed x<currentMult> → x<newMult>
painting:
name: Mixing & Painting
description: Speed x<currentMult> → x<newMult>
# Buildings and their name / description
buildings:
hub:
deliver: Deliver
toUnlock: to unlock
levelShortcut: LVL
belt:
default:
name: &belt Conveyor Belt
description: Transports items, hold and drag to place multiple.
miner: # Internal name for the Extractor
default:
name: &miner Extractor
description: Place over a shape or color to extract it.
chainable:
name: Extractor (Chain)
description: Place over a shape or color to extract it. Can be chained.
underground_belt: # Internal name for the Tunnel
default:
name: &underground_belt Tunnel
description: Allows to tunnel resources under buildings and belts.
tier2:
name: Tunnel Tier II
description: Allows to tunnel resources under buildings and belts.
splitter: # Internal name for the Balancer
default:
name: &splitter Balancer
description: Multifunctional - Evenly distributes all inputs onto all outputs.
compact:
name: Merger (compact)
description: Merges two conveyor belts into one.
compact-inverse:
name: Merger (compact)
description: Merges two conveyor belts into one.
cutter:
default:
name: &cutter Cutter
description: Cuts shapes from top to bottom and outputs both halfs. <strong>If you use only one part, be sure to destroy the other part or it will stall!</strong>
quad:
name: Cutter (Quad)
description: Cuts shapes into four parts. <strong>If you use only one part, be sure to destroy the other part or it will stall!</strong>
rotater:
default:
name: &rotater Rotate
description: Rotates shapes clockwise by 90 degrees.
ccw:
name: Rotate (CCW)
description: Rotates shapes counter clockwise by 90 degrees.
stacker:
default:
name: &stacker Stacker
description: Stacks both items. If they can not be merged, the right item is placed above the left item.
mixer:
default:
name: &mixer Color Mixer
description: Mixes two colors using additive blending.
painter:
default:
name: &painter Painter
description: Colors the whole shape on the left input with the color from the right input.
double:
name: Painter (Double)
description: Colors the shapes on the left inputs with the color from the top input.
quad:
name: Painter (Quad)
description: Allows to color each quadrant of the shape with a different color.
trash:
default:
name: &trash Trash
description: Accepts inputs from all sides and destroys them. Forever.
storage:
name: Storage
description: Stores excess items, up to a given capacity. Can be used as an overflow gate.
storyRewards:
# Those are the rewards gained from completing the store
reward_cutter_and_trash:
title: Cutting Shapes
desc: You just unlocked the <strong>cutter</strong> - it cuts shapes half from <strong>top to bottom</strong> regardless of its orientation!<br><br>Be sure to get rid of the waste, or otherwise <strong>it will stall</strong> - For this purpose I gave you a trash, which destroys everything you put into it!
reward_rotater:
title: Rotating
desc: The <strong>rotater</strong> has been unlocked! It rotates shapes clockwise by 90 degrees.
reward_painter:
title: Painting
desc: >-
The <strong>painter</strong> has been unlocked - Extract some color veins (just as you do with shapes) and combine it with a shape in the painter to color them!<br><br>PS: If you are colorblind, I'm working on a solution already!
reward_mixer:
title: Color Mixing
desc: The <strong>mixer</strong> has been unlocked - Combine two colors using <strong>additive blending</strong> with this building!
reward_stacker:
title: Combiner
desc: You can now combine shapes with the <strong>combiner</strong>! Both inputs are combined, and if they can be put next to each other, they will be <strong>fused</strong>. If not, the right input is <strong>stacked on top</strong> of the left input!
reward_splitter:
title: Splitter/Merger
desc: The multifunctional <strong>balancer</strong> has been unlocked - It can be used to build bigger factories by <strong>splitting and merging items</strong> onto multiple belts!<br><br>
reward_tunnel:
title: Tunnel
desc: The <strong>tunnel</strong> has been unlocked - You can now pipe items through belts and buildings with it!
reward_rotater_ccw:
title: CCW Rotating
desc: You have unlocked a variant of the <strong>rotater</strong> - It allows to rotate counter clockwise! To build it, select the rotater and <strong>press 'T' to cycle its variants</strong>!
reward_miner_chainable:
title: Chaining Extractor
desc: You have unlocked the <strong>chaining extractor</strong>! It can <strong>forward its resources</strong> to other extractors so you can more efficiently extract resources!
reward_underground_belt_tier_2:
title: Tunnel Tier II
desc: You have unlocked a new variant of the <strong>tunnel</strong> - It has a <strong>bigger range</strong>, and you can also mix-n-match those tunnels now!
reward_splitter_compact:
title: Compact Balancer
desc: >-
You have unlocked a compact variant of the <strong>balancer</strong> - It accepts two inputs and merges them into one!
reward_cutter_quad:
title: Quad Cutting
desc: You have unlocked a variant of the <strong>cutter</strong> - It allows you to cut shapes in <strong>four parts</strong> instead of just two!
reward_painter_double:
title: Double Painting
desc: You have unlocked a variant of the <strong>painter</strong> - It works as the regular painter but processes <strong>two shapes at once</strong> consuming just one color instead of two!
reward_painter_quad:
title: Quad Painting
desc: You have unlocked a variant of the <strong>painter</strong> - It allows to paint each part of the shape individually!
reward_storage:
title: Storage Buffer
desc: You have unlocked a variant of the <strong>trash</strong> - It allows to store items up to a given capacity!
reward_freeplay:
title: Freeplay
desc: You did it! You unlocked the <strong>free-play mode</strong>! This means that shapes are now randomly generated! (No worries, more content is planned for the standalone!)
reward_blueprints:
title: Blueprints
desc: You can now <strong>copy and paste</strong> parts of your factory! Select an area (Hold CTRL, then drag with your mouse), and press 'C' to copy it.<br><br>Pasting it is <strong>not free</strong>, you need to produce <strong>blueprint shapes</strong> to afford it! (Those you just delivered).
# Special reward, which is shown when there is no reward actually
no_reward:
title: Next level
desc: >-
This level gave you no reward, but the next one will! <br><br> PS: Better don't destroy your existing factory - You need <strong>all</strong> those shapes later again to <strong>unlock upgrades</strong>!
no_reward_freeplay:
title: Next level
desc: >-
Congratulations! By the way, more content is planned for the standalone!
settings:
title: Settings
categories:
game: Game
app: Application
versionBadges:
dev: Development
staging: Staging
prod: Production
buildDate: Built <at-date>
labels:
uiScale:
title: Interface scale
description: >-
Changes the size of the user interface. The interface will still scale based on your device resolution, but this setting controls the amount of scale.
scales:
super_small: Super small
small: Small
regular: Regular
large: Large
huge: Huge
scrollWheelSensitivity:
title: Zoom sensitivity
description: >-
Changes how sensitive the zoom is (Either mouse wheel or trackpad).
sensitivity:
super_slow: Super slow
slow: Slow
regular: Regular
fast: Fast
super_fast: Super fast
language:
title: Language
description: >-
Change the language. All translations are user contributed and might be incomplete!
fullscreen:
title: Fullscreen
description: >-
It is recommended to play the game in fullscreen to get the best experience. Only available in the standalone.
soundsMuted:
title: Mute Sounds
description: >-
If enabled, mutes all sound effects.
musicMuted:
title: Mute Music
description: >-
If enabled, mutes all music.
theme:
title: Game theme
description: >-
Choose the game theme (light / dark).
themes:
dark: Dark
light: Light
refreshRate:
title: Simulation Target
description: >-
If you have a 144hz monitor, change the refresh rate here so the game will properly simulate at higher refresh rates. This might actually decrease the FPS if your computer is too slow.
alwaysMultiplace:
title: Multiplace
description: >-
If enabled, all buildings will stay selected after placement until you cancel it. This is equivalent to holding SHIFT permanently.
offerHints:
title: Hints & Tutorials
description: >-
Whether to offer hints and tutorials while playing. Also hides certain UI elements onto a given level to make it easier to get into the game.
movementSpeed:
title: Movement speed
description: Changes how fast the view moves when using the keyboard.
speeds:
super_slow: Super slow
slow: Slow
regular: Regular
fast: Fast
super_fast: Super Fast
extremely_fast: Extremely Fast
keybindings:
title: Keybindings
hint: >-
Tip: Be sure to make use of CTRL, SHIFT and ALT! They enable different placement options.
resetKeybindings: Reset Keyinbindings
categoryLabels:
general: Application
ingame: Game
navigation: Navigating
placement: Placement
massSelect: Mass Select
buildings: Building Shortcuts
placementModifiers: Placement Modifiers
mappings:
confirm: Confirm
back: Back
mapMoveUp: Move Up
mapMoveRight: Move Right
mapMoveDown: Move Down
mapMoveLeft: Move Left
centerMap: Center Map
mapZoomIn: Zoom in
mapZoomOut: Zoom out
createMarker: Create Marker
menuOpenShop: Upgrades
menuOpenStats: Statistics
toggleHud: Toggle HUD
toggleFPSInfo: Toggle FPS and Debug Info
belt: *belt
splitter: *splitter
underground_belt: *underground_belt
miner: *miner
cutter: *cutter
rotater: *rotater
stacker: *stacker
mixer: *mixer
painter: *painter
trash: *trash
abortBuildingPlacement: Abort Placement
rotateWhilePlacing: Rotate
rotateInverseModifier: >-
Modifier: Rotate CCW instead
cycleBuildingVariants: Cycle Variants
confirmMassDelete: Confirm Mass Delete
cycleBuildings: Cycle Buildings
massSelectStart: Hold and drag to start
massSelectSelectMultiple: Select multiple areas
massSelectCopy: Copy area
placementDisableAutoOrientation: Disable automatic orientation
placeMultiple: Stay in placement mode
placeInverse: Invert automatic belt orientation
pasteLastBlueprint: Paste last blueprint
massSelectCut: Cut area
exportScreenshot: Export whole Base as Image
about:
title: About this Game
body: >-
This game is open source and developed by <a href="https://github.com/tobspr"
target="_blank">Tobias Springer</a> (this is me).<br><br>
If you want to contribute, check out <a href="<githublink>"
target="_blank">shapez.io on github</a>.<br><br>
This game wouldn't have been possible without the great discord community
around my games - You should really join the <a href="<discordlink>"
target="_blank">discord server</a>!<br><br>
The soundtrack was made by <a href="https://soundcloud.com/pettersumelius"
target="_blank">Peppsen</a> - He's awesome.<br><br>
Finally, huge thanks to my best friend <a
href="https://github.com/niklas-dahl" target="_blank">Niklas</a> - Without our
factorio sessions this game would never have existed.
changelog:
title: Changelog
demo:
features:
restoringGames: Restoring savegames
importingGames: Importing savegames
oneGameLimit: Limited to one savegame
customizeKeybindings: Customizing Keybindings
exportingBase: Exporting whole Base as Image
settingNotAvailable: Not available in the demo.

File diff suppressed because it is too large Load Diff

767
translations/base-lt.yaml Normal file
View File

@ -0,0 +1,767 @@
#
# GAME TRANSLATIONS
#
# Contributing:
#
# If you want to contribute, please make a pull request on this respository
# and I will have a look.
#
# Placeholders:
#
# Do *not* replace placeholders! Placeholders have a special syntax like
# `Hotkey: <key>`. They are encapsulated within angle brackets. The correct
# translation for this one in German for example would be: `Taste: <key>` (notice
# how the placeholder stayed '<key>' and was not replaced!)
#
# Adding a new language:
#
# If you want to add a new language, ask me in the discord and I will setup
# the basic structure so the game also detects it.
#
steamPage:
# This is the short text appearing on the steam page
shortText: shapez.io is a game about building factories to automate the creation and combination of increasingly complex shapes within an infinite map.
# This is the long description for the steam page - It is contained here so you can help to translate it, and I will regulary update the store page.
# NOTICE:
# - Do not translate the first line (This is the gif image at the start of the store)
# - Please keep the markup (Stuff like [b], [list] etc) in the same format
longText: >-
[img]{STEAM_APP_IMAGE}/extras/store_page_gif.gif[/img]
shapez.io is a game about building factories to automate the creation and combination of shapes. Deliver the requested, increasingly complex shapes to progress within the game and unlock upgrades to speed up your factory.
Since the demand raises you will have to scale up your factory to fit the needs - Don't forget about resources though, you will have to expand in the [b]infinite map[/b]!
Since shapes can get boring soon you need to mix colors and paint your shapes with it - Combine red, green and blue color resources to produce different colors and paint shapes with it to satisfy the demand.
This game features 18 levels (Which should keep you busy for hours already!) but I'm constantly adding new content - There is a lot planned!
[b]Standalone Advantages[/b]
[list]
[*] Waypoints
[*] Unlimited Savegames
[*] Dark Mode
[*] More settings
[*] Allow me to further develop shapez.io ❤️
[*] More features in the future!
[/list]
[b]Planned features & Community suggestions[/b]
This game is open source - Anybody can contribute! Besides of that, I listen [b]a lot[/b] to the community! I try to read all suggestions and take as much feedback into account as possible.
[list]
[*] Story mode where buildings cost shapes
[*] More levels & buildings (standalone exclusive)
[*] Different maps, and maybe map obstacles
[*] Configurable map creation (Edit number and size of patches, seed, and more)
[*] More types of shapes
[*] More performance improvements (Although the game already runs pretty good!)
[*] Color blind mode
[*] And much more!
[/list]
Be sure to check out my trello board for the full roadmap! https://trello.com/b/ISQncpJP/shapezio
global:
loading: Loading
error: Error
# How big numbers are rendered, e.g. "10,000"
thousandsDivider: ","
# The suffix for large numbers, e.g. 1.3k, 400.2M, etc.
suffix:
thousands: k
millions: M
billions: B
trillions: T
# Shown for infinitely big numbers
infinite: inf
time:
# Used for formatting past time dates
oneSecondAgo: one second ago
xSecondsAgo: <x> seconds ago
oneMinuteAgo: one minute ago
xMinutesAgo: <x> minutes ago
oneHourAgo: one hour ago
xHoursAgo: <x> hours ago
oneDayAgo: one day ago
xDaysAgo: <x> days ago
# Short formats for times, e.g. '5h 23m'
secondsShort: <seconds>s
minutesAndSecondsShort: <minutes>m <seconds>s
hoursAndMinutesShort: <hours>h <minutes>m
xMinutes: <x> minutes
keys:
tab: TAB
control: CTRL
alt: ALT
escape: ESC
shift: SHIFT
space: SPACE
demoBanners:
# This is the "advertisement" shown in the main menu and other various places
title: Demo Version
intro: >-
Get the standalone to unlock all features!
mainMenu:
play: Play
changelog: Changelog
importSavegame: Import
openSourceHint: This game is open source!
discordLink: Official Discord Server
helpTranslate: Help translate!
# This is shown when using firefox and other browsers which are not supported.
browserWarning: >-
Sorry, but the game is known to run slow on your browser! Get the standalone version or download chrome for the full experience.
savegameLevel: Level <x>
savegameLevelUnknown: Unknown Level
contests:
contest_01_03062020:
title: "Contest #01"
desc: Win <strong>$25</strong> for the coolest base!
longDesc: >-
To give something back to you, I thought it would be cool to make weekly contests!
<br><br>
<strong>This weeks topic:</strong> Build the coolest base!
<br><br>
Here's the deal:<br>
<ul class="bucketList">
<li>Submit a screenshot of your base to <strong>contest@shapez.io</strong></li>
<li>Bonus points if you share it on social media!</li>
<li>I will choose 5 screenshots and propose it to the <strong>discord</strong> community to vote.</li>
<li>The winner gets <strong>$25</strong> (Paypal, Amazon Gift Card, whatever you prefer)</li>
<li>Deadline: 07.06.2020 12:00 AM CEST</li>
</ul>
<br>
I'm looking forward to seeing your awesome creations!
showInfo: View
contestOver: This contest has ended - Join the discord to get noticed about new contests!
dialogs:
buttons:
ok: OK
delete: Delete
cancel: Cancel
later: Later
restart: Restart
reset: Reset
getStandalone: Get Standalone
deleteGame: I know what I do
viewUpdate: View Update
showUpgrades: Show Upgrades
showKeybindings: Show Keybindings
importSavegameError:
title: Import Error
text: >-
Failed to import your savegame:
importSavegameSuccess:
title: Savegame Imported
text: >-
Your savegame has been successfully imported.
gameLoadFailure:
title: Game is broken
text: >-
Failed to load your savegame:
confirmSavegameDelete:
title: Confirm deletion
text: >-
Are you sure you want to delete the game?
savegameDeletionError:
title: Failed to delete
text: >-
Failed to delete the savegame:
restartRequired:
title: Restart required
text: >-
You need to restart the game to apply the settings.
editKeybinding:
title: Change Keybinding
desc: Press the key or mouse button you want to assign, or escape to cancel.
resetKeybindingsConfirmation:
title: Reset keybindings
desc: This will reset all keybindings to their default values. Please confirm.
keybindingsResetOk:
title: Keybindings reset
desc: The keybindings have been reset to their respective defaults!
featureRestriction:
title: Demo Version
desc: You tried to access a feature (<feature>) which is not available in the demo. Consider to get the standalone for the full experience!
oneSavegameLimit:
title: Limited savegames
desc: You can only have one savegame at a time in the demo version. Please remove the existing one or get the standalone!
updateSummary:
title: New update!
desc: >-
Here are the changes since you last played:
upgradesIntroduction:
title: Unlock Upgrades
desc: >-
All shapes you produce can be used to unlock upgrades - <strong>Don't destroy your old factories!</strong>
The upgrades tab can be found on the top right corner of the screen.
massDeleteConfirm:
title: Confirm delete
desc: >-
You are deleting a lot of buildings (<count> to be exact)! Are you sure you want to do this?
blueprintsNotUnlocked:
title: Not unlocked yet
desc: >-
Complete level 12 to unlock Blueprints!
keybindingsIntroduction:
title: Useful keybindings
desc: >-
This game has a lot of keybindings which make it easier to build big factories.
Here are a few, but be sure to <strong>check out the keybindings</strong>!<br><br>
<code class='keybinding'>CTRL</code> + Drag: Select an area.<br>
<code class='keybinding'>SHIFT</code>: Hold to place multiple of one building.<br>
<code class='keybinding'>ALT</code>: Invert orientation of placed belts.<br>
createMarker:
title: New Marker
desc: Give it a meaningful name
markerDemoLimit:
desc: You can only create two custom markers in the demo. Get the standalone for unlimited markers!
massCutConfirm:
title: Confirm cut
desc: >-
You are cutting a lot of buildings (<count> to be exact)! Are you sure you
want to do this?
exportScreenshotWarning:
title: Export screenshot
desc: >-
You requested to export your base as a screenshot. Please note that this can
be quite slow for a big base and even crash your game!
ingame:
# This is shown in the top left corner and displays useful keybindings in
# every situation
keybindingsOverlay:
moveMap: Move
selectBuildings: Select area
stopPlacement: Stop placement
rotateBuilding: Rotate building
placeMultiple: Place multiple
reverseOrientation: Reverse orientation
disableAutoOrientation: Disable auto orientation
toggleHud: Toggle HUD
placeBuilding: Place building
createMarker: Create Marker
delete: Destroy
pasteLastBlueprint: Paste last blueprint
# Everything related to placing buildings (I.e. as soon as you selected a building
# from the toolbar)
buildingPlacement:
# Buildings can have different variants which are unlocked at later levels,
# and this is the hint shown when there are multiple variants available.
cycleBuildingVariants: Press <key> to cycle variants.
# Shows the hotkey in the ui, e.g. "Hotkey: Q"
hotkeyLabel: >-
Hotkey: <key>
infoTexts:
speed: Speed
range: Range
storage: Storage
oneItemPerSecond: 1 item / second
itemsPerSecond: <x> items / s
itemsPerSecondDouble: (x2)
tiles: <x> tiles
# The notification when completing a level
levelCompleteNotification:
# <level> is replaced by the actual level, so this gets 'Level 03' for example.
levelTitle: Level <level>
completed: Completed
unlockText: Unlocked <reward>!
buttonNextLevel: Next Level
# Notifications on the lower right
notifications:
newUpgrade: A new upgrade is available!
gameSaved: Your game has been saved.
# Mass select information, this is when you hold CTRL and then drag with your mouse
# to select multiple buildings
massSelect:
infoText: Press <keyCut> to cut, <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel.
# The "Upgrades" window
shop:
title: Upgrades
buttonUnlock: Upgrade
# Gets replaced to e.g. "Tier IX"
tier: Tier <x>
# The roman number for each tier
tierLabels: [I, II, III, IV, V, VI, VII, VIII, IX, X]
maximumLevel: MAXIMUM LEVEL (Speed x<currentMult>)
# The "Statistics" window
statistics:
title: Statistics
dataSources:
stored:
title: Stored
description: Displaying amount of stored shapes in your central building.
produced:
title: Produced
description: Displaying all shapes your whole factory produces, including intermediate products.
delivered:
title: Delivered
description: Displaying shapes which are delivered to your central building.
noShapesProduced: No shapes have been produced so far.
# Displays the shapes per minute, e.g. '523 / m'
shapesPerMinute: <shapes> / m
# Settings menu, when you press "ESC"
settingsMenu:
playtime: Playtime
buildingsPlaced: Buildings
beltsPlaced: Belts
buttons:
continue: Continue
settings: Settings
menu: Return to menu
# Bottom left tutorial hints
tutorialHints:
title: Need help?
showHint: Show hint
hideHint: Close
# When placing a blueprint
blueprintPlacer:
cost: Cost
# Map markers
waypoints:
waypoints: Markers
hub: HUB
description: Left-click a marker to jump to it, right-click to delete it.<br><br>Press <keybinding> to create a marker from the current view, or <strong>right-click</strong> to create a marker at the selected location.
creationSuccessNotification: Marker has been created.
# Interactive tutorial
interactiveTutorial:
title: Tutorial
hints:
1_1_extractor: Place an <strong>extractor</strong> on top of a <strong>circle shape</strong> to extract it!
1_2_conveyor: >-
Connect the extractor with a <strong>conveyor belt</strong> to your hub!<br><br>Tip: <strong>Click and drag</strong> the belt with your mouse!
1_3_expand: >-
This is <strong>NOT</strong> an idle game! Build more extractors and belts to finish the goal quicker.<br><br>Tip: Hold <strong>SHIFT</strong> to place multiple extractors, and use <strong>R</strong> to rotate them.
# All shop upgrades
shopUpgrades:
belt:
name: Belts, Distributor & Tunnels
description: Speed x<currentMult> → x<newMult>
miner:
name: Extraction
description: Speed x<currentMult> → x<newMult>
processors:
name: Cutting, Rotating & Stacking
description: Speed x<currentMult> → x<newMult>
painting:
name: Mixing & Painting
description: Speed x<currentMult> → x<newMult>
# Buildings and their name / description
buildings:
hub:
deliver: Deliver
toUnlock: to unlock
levelShortcut: LVL
belt:
default:
name: &belt Conveyor Belt
description: Transports items, hold and drag to place multiple.
miner: # Internal name for the Extractor
default:
name: &miner Extractor
description: Place over a shape or color to extract it.
chainable:
name: Extractor (Chain)
description: Place over a shape or color to extract it. Can be chained.
underground_belt: # Internal name for the Tunnel
default:
name: &underground_belt Tunnel
description: Allows to tunnel resources under buildings and belts.
tier2:
name: Tunnel Tier II
description: Allows to tunnel resources under buildings and belts.
splitter: # Internal name for the Balancer
default:
name: &splitter Balancer
description: Multifunctional - Evenly distributes all inputs onto all outputs.
compact:
name: Merger (compact)
description: Merges two conveyor belts into one.
compact-inverse:
name: Merger (compact)
description: Merges two conveyor belts into one.
cutter:
default:
name: &cutter Cutter
description: Cuts shapes from top to bottom and outputs both halfs. <strong>If you use only one part, be sure to destroy the other part or it will stall!</strong>
quad:
name: Cutter (Quad)
description: Cuts shapes into four parts. <strong>If you use only one part, be sure to destroy the other parts or it will stall!</strong>
rotater:
default:
name: &rotater Rotate
description: Rotates shapes clockwise by 90 degrees.
ccw:
name: Rotate (CCW)
description: Rotates shapes counter clockwise by 90 degrees.
stacker:
default:
name: &stacker Stacker
description: Stacks both items. If they can not be merged, the right item is placed above the left item.
mixer:
default:
name: &mixer Color Mixer
description: Mixes two colors using additive blending.
painter:
default:
name: &painter Painter
description: Colors the whole shape on the left input with the color from the top input.
double:
name: Painter (Double)
description: Colors the shapes on the left inputs with the color from the top input.
quad:
name: Painter (Quad)
description: Allows to color each quadrant of the shape with a different color.
trash:
default:
name: &trash Trash
description: Accepts inputs from all sides and destroys them. Forever.
storage:
name: Storage
description: Stores excess items, up to a given capacity. Can be used as an overflow gate.
storyRewards:
# Those are the rewards gained from completing the store
reward_cutter_and_trash:
title: Cutting Shapes
desc: You just unlocked the <strong>cutter</strong> - it cuts shapes half from <strong>top to bottom</strong> regardless of its orientation!<br><br>Be sure to get rid of the waste, or otherwise <strong>it will stall</strong> - For this purpose I gave you a trash, which destroys everything you put into it!
reward_rotater:
title: Rotating
desc: The <strong>rotater</strong> has been unlocked! It rotates shapes clockwise by 90 degrees.
reward_painter:
title: Painting
desc: >-
The <strong>painter</strong> has been unlocked - Extract some color veins (just as you do with shapes) and combine it with a shape in the painter to color them!<br><br>PS: If you are colorblind, I'm working on a solution already!
reward_mixer:
title: Color Mixing
desc: The <strong>mixer</strong> has been unlocked - Combine two colors using <strong>additive blending</strong> with this building!
reward_stacker:
title: Combiner
desc: You can now combine shapes with the <strong>combiner</strong>! Both inputs are combined, and if they can be put next to each other, they will be <strong>fused</strong>. If not, the right input is <strong>stacked on top</strong> of the left input!
reward_splitter:
title: Splitter/Merger
desc: The multifunctional <strong>balancer</strong> has been unlocked - It can be used to build bigger factories by <strong>splitting and merging items</strong> onto multiple belts!<br><br>
reward_tunnel:
title: Tunnel
desc: The <strong>tunnel</strong> has been unlocked - You can now tunnel items through belts and buildings with it!
reward_rotater_ccw:
title: CCW Rotating
desc: You have unlocked a variant of the <strong>rotater</strong> - It allows to rotate counter clockwise! To build it, select the rotater and <strong>press 'T' to cycle its variants</strong>!
reward_miner_chainable:
title: Chaining Extractor
desc: You have unlocked the <strong>chaining extractor</strong>! It can <strong>forward its resources</strong> to other extractors so you can more efficiently extract resources!
reward_underground_belt_tier_2:
title: Tunnel Tier II
desc: You have unlocked a new variant of the <strong>tunnel</strong> - It has a <strong>bigger range</strong>, and you can also mix-n-match those tunnels now!
reward_splitter_compact:
title: Compact Balancer
desc: >-
You have unlocked a compact variant of the <strong>balancer</strong> - It accepts two inputs and merges them into one!
reward_cutter_quad:
title: Quad Cutting
desc: You have unlocked a variant of the <strong>cutter</strong> - It allows you to cut shapes in <strong>four parts</strong> instead of just two!
reward_painter_double:
title: Double Painting
desc: You have unlocked a variant of the <strong>painter</strong> - It works as the regular painter but processes <strong>two shapes at once</strong> consuming just one color instead of two!
reward_painter_quad:
title: Quad Painting
desc: You have unlocked a variant of the <strong>painter</strong> - It allows to paint each part of the shape individually!
reward_storage:
title: Storage Buffer
desc: You have unlocked a variant of the <strong>trash</strong> - It allows to store items up to a given capacity!
reward_freeplay:
title: Freeplay
desc: You did it! You unlocked the <strong>free-play mode</strong>! This means that shapes are now randomly generated! (No worries, more content is planned for the standalone!)
reward_blueprints:
title: Blueprints
desc: You can now <strong>copy and paste</strong> parts of your factory! Select an area (Hold CTRL, then drag with your mouse), and press 'C' to copy it.<br><br>Pasting it is <strong>not free</strong>, you need to produce <strong>blueprint shapes</strong> to afford it! (Those you just delivered).
# Special reward, which is shown when there is no reward actually
no_reward:
title: Next level
desc: >-
This level gave you no reward, but the next one will! <br><br> PS: Better don't destroy your existing factory - You need <strong>all</strong> those shapes later again to <strong>unlock upgrades</strong>!
no_reward_freeplay:
title: Next level
desc: >-
Congratulations! By the way, more content is planned for the standalone!
settings:
title: Settings
categories:
game: Game
app: Application
versionBadges:
dev: Development
staging: Staging
prod: Production
buildDate: Built <at-date>
labels:
uiScale:
title: Interface scale
description: >-
Changes the size of the user interface. The interface will still scale based on your device resolution, but this setting controls the amount of scale.
scales:
super_small: Super small
small: Small
regular: Regular
large: Large
huge: Huge
scrollWheelSensitivity:
title: Zoom sensitivity
description: >-
Changes how sensitive the zoom is (Either mouse wheel or trackpad).
sensitivity:
super_slow: Super slow
slow: Slow
regular: Regular
fast: Fast
super_fast: Super fast
language:
title: Language
description: >-
Change the language. All translations are user contributed and might be incomplete!
fullscreen:
title: Fullscreen
description: >-
It is recommended to play the game in fullscreen to get the best experience. Only available in the standalone.
soundsMuted:
title: Mute Sounds
description: >-
If enabled, mutes all sound effects.
musicMuted:
title: Mute Music
description: >-
If enabled, mutes all music.
theme:
title: Game theme
description: >-
Choose the game theme (light / dark).
themes:
dark: Dark
light: Light
refreshRate:
title: Simulation Target
description: >-
If you have a 144hz monitor, change the refresh rate here so the game will properly simulate at higher refresh rates. This might actually decrease the FPS if your computer is too slow.
alwaysMultiplace:
title: Multiplace
description: >-
If enabled, all buildings will stay selected after placement until you cancel it. This is equivalent to holding SHIFT permanently.
offerHints:
title: Hints & Tutorials
description: >-
Whether to offer hints and tutorials while playing. Also hides certain UI elements onto a given level to make it easier to get into the game.
movementSpeed:
title: Movement speed
description: Changes how fast the view moves when using the keyboard.
speeds:
super_slow: Super slow
slow: Slow
regular: Regular
fast: Fast
super_fast: Super Fast
extremely_fast: Extremely Fast
keybindings:
title: Keybindings
hint: >-
Tip: Be sure to make use of CTRL, SHIFT and ALT! They enable different placement options.
resetKeybindings: Reset Keybindings
categoryLabels:
general: Application
ingame: Game
navigation: Navigating
placement: Placement
massSelect: Mass Select
buildings: Building Shortcuts
placementModifiers: Placement Modifiers
mappings:
confirm: Confirm
back: Back
mapMoveUp: Move Up
mapMoveRight: Move Right
mapMoveDown: Move Down
mapMoveLeft: Move Left
centerMap: Center Map
mapZoomIn: Zoom in
mapZoomOut: Zoom out
createMarker: Create Marker
menuOpenShop: Upgrades
menuOpenStats: Statistics
toggleHud: Toggle HUD
toggleFPSInfo: Toggle FPS and Debug Info
belt: *belt
splitter: *splitter
underground_belt: *underground_belt
miner: *miner
cutter: *cutter
rotater: *rotater
stacker: *stacker
mixer: *mixer
painter: *painter
trash: *trash
abortBuildingPlacement: Abort Placement
rotateWhilePlacing: Rotate
rotateInverseModifier: >-
Modifier: Rotate CCW instead
cycleBuildingVariants: Cycle Variants
confirmMassDelete: Confirm Mass Delete
cycleBuildings: Cycle Buildings
massSelectStart: Hold and drag to start
massSelectSelectMultiple: Select multiple areas
massSelectCopy: Copy area
placementDisableAutoOrientation: Disable automatic orientation
placeMultiple: Stay in placement mode
placeInverse: Invert automatic belt orientation
pasteLastBlueprint: Paste last blueprint
massSelectCut: Cut area
exportScreenshot: Export whole Base as Image
about:
title: About this Game
body: >-
This game is open source and developed by <a href="https://github.com/tobspr"
target="_blank">Tobias Springer</a> (this is me).<br><br>
If you want to contribute, check out <a href="<githublink>"
target="_blank">shapez.io on github</a>.<br><br>
This game wouldn't have been possible without the great discord community
around my games - You should really join the <a href="<discordlink>"
target="_blank">discord server</a>!<br><br>
The soundtrack was made by <a href="https://soundcloud.com/pettersumelius"
target="_blank">Peppsen</a> - He's awesome.<br><br>
Finally, huge thanks to my best friend <a
href="https://github.com/niklas-dahl" target="_blank">Niklas</a> - Without our
factorio sessions this game would never have existed.
changelog:
title: Changelog
demo:
features:
restoringGames: Restoring savegames
importingGames: Importing savegames
oneGameLimit: Limited to one savegame
customizeKeybindings: Customizing Keybindings
exportingBase: Exporting whole Base as Image
settingNotAvailable: Not available in the demo.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -36,7 +36,7 @@ steamPage:
Since shapes can get boring soon you need to mix colors and paint your shapes with it - Combine red, green and blue color resources to produce different colors and paint shapes with it to satisfy the demand. Since shapes can get boring soon you need to mix colors and paint your shapes with it - Combine red, green and blue color resources to produce different colors and paint shapes with it to satisfy the demand.
This game features 18 levels (Which should keep you busy for hours already!) but I'm constantly adding new content - There is a lot planned! This game features 18 levels (Which should keep you busy for hours already!) but I'm constantly adding new content - There is a lot planned!
[b]Standalone Advantages[/b] [b]Standalone Advantages[/b]
@ -98,7 +98,7 @@ global:
# Short formats for times, e.g. '5h 23m' # Short formats for times, e.g. '5h 23m'
secondsShort: <seconds>s secondsShort: <seconds>s
minutesAndSecondsShort: <minutes>m <seconds>s minutesAndSecondsShort: <minutes>m <seconds>s
hoursAndMinutesShort: <hours>h <minutes>s hoursAndMinutesShort: <hours>h <minutes>m
xMinutes: <x> minutos xMinutes: <x> minutos
@ -151,6 +151,8 @@ mainMenu:
Estou ansioso para ver suas criações incríveis! Estou ansioso para ver suas criações incríveis!
showInfo: Participate showInfo: Participate
contestOver: This contest has ended - Join the discord to get noticed about new contests!
helpTranslate: Help translate!
dialogs: dialogs:
buttons: buttons:
@ -212,17 +214,6 @@ dialogs:
title: Versão Demo title: Versão Demo
desc: Você tentou acessar um recurso (<feature>) que não está disponível na demo. Considere obter a versão completa para a proceder! desc: Você tentou acessar um recurso (<feature>) que não está disponível na demo. Considere obter a versão completa para a proceder!
saveNotPossibleInDemo:
desc: Seu jogo foi salvo, mas a restauração só é possível na versão completa. Considere obter a versão completa!
leaveNotPossibleInDemo:
title: Demo version
desc: Seu jogo foi salvo, mas você não poderá restaurá-lo na demo. Restaurar seus savegames só é possível na versão completa. Você tem certeza?
newUpdate:
title: Atualização disponível
desc: Uma atualização para esse jogo esta disponível!
oneSavegameLimit: oneSavegameLimit:
title: Save limitado title: Save limitado
desc: Você pode ter apenas um savegame por vez na versão demo. Remova o existente ou obtenha a versão completa! desc: Você pode ter apenas um savegame por vez na versão demo. Remova o existente ou obtenha a versão completa!
@ -232,11 +223,6 @@ dialogs:
desc: >- desc: >-
Aqui estão as alterações desde a última vez que você jogou: Aqui estão as alterações desde a última vez que você jogou:
hintDescription:
title: Tutorial
desc: >-
Sempre que precisar de ajuda ou estiver parado, confira o botão 'Mostrar dica' no canto inferior esquerdo e darei o meu melhor para ajudá-lo!
upgradesIntroduction: upgradesIntroduction:
title: Desbloquear updates title: Desbloquear updates
desc: >- desc: >-
@ -265,12 +251,29 @@ dialogs:
createMarker: createMarker:
title: Nova Marcação title: Nova Marcação
desc: De um nome desc: De um nome
markerDemoLimit:
desc: >-
You can only create two custom markers in the demo. Get the standalone for
unlimited markers!
massCutConfirm:
title: Confirm cut
desc: >-
You are cutting a lot of buildings (<count> to be exact)! Are you sure you
want to do this?
exportScreenshotWarning:
title: Export screenshot
desc: >-
You requested to export your base as a screenshot. Please note that this can
be quite slow for a big base and even crash your game!
ingame: ingame:
# This is shown in the top left corner and displays useful keybindings in # This is shown in the top left corner and displays useful keybindings in
# every situation # every situation
keybindingsOverlay: keybindingsOverlay:
moveMap: Mover moveMap: Mover
removeBuildings: Deletar
stopPlacement: Parar stopPlacement: Parar
rotateBuilding: Rotação rotateBuilding: Rotação
placeMultiple: Colocar vários placeMultiple: Colocar vários
@ -280,6 +283,8 @@ ingame:
placeBuilding: Colocar construção placeBuilding: Colocar construção
createMarker: Criar marcador createMarker: Criar marcador
delete: Destruir delete: Destruir
selectBuildings: Select area
pasteLastBlueprint: Paste last blueprint
# Everything related to placing buildings (I.e. as soon as you selected a building # Everything related to placing buildings (I.e. as soon as you selected a building
# from the toolbar) # from the toolbar)
@ -318,7 +323,7 @@ ingame:
# Mass select information, this is when you hold CTRL and then drag with your mouse # Mass select information, this is when you hold CTRL and then drag with your mouse
# to select multiple buildings # to select multiple buildings
massSelect: massSelect:
infoText: Aperte <keyCopy> para copiar, <keyDelete> para excluir e <keyCancel> para cancelar. infoText: Press <keyCut> to cut, <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel.
# The "Upgrades" window # The "Upgrades" window
shop: shop:
@ -330,8 +335,7 @@ ingame:
# The roman number for each tier # The roman number for each tier
tierLabels: [I, II, III, IV, V, VI, VII, VIII, IX, X] tierLabels: [I, II, III, IV, V, VI, VII, VIII, IX, X]
maximumLevel: MAXIMUM LEVEL (Speed x<currentMult>)
maximumLevel: Level Máximo
# The "Statistics" window # The "Statistics" window
statistics: statistics:
@ -395,16 +399,19 @@ ingame:
shopUpgrades: shopUpgrades:
belt: belt:
name: Esteiras, Distribuidores e Túneis name: Esteiras, Distribuidores e Túneis
description: Velocidade +<gain>% description: Speed x<currentMult> → x<newMult>
miner: miner:
name: Extração name: Extração
description: Velocidade +<gain>% description: Speed x<currentMult> → x<newMult>
processors: processors:
name: Cortar, Rotacionar e Empilhamento name: Cortar, Rotacionar e Empilhamento
description: Velocidade +<gain>% description: Speed x<currentMult> → x<newMult>
painting: painting:
name: Misturador e pintura name: Misturador e pintura
description: Velocidade +<gain>% description: Speed x<currentMult> → x<newMult>
# Buildings and their name / description # Buildings and their name / description
buildings: buildings:
@ -489,6 +496,10 @@ buildings:
storage: storage:
name: Estoque name: Estoque
description: Armazena itens em excesso, até uma determinada capacidade. Pode ser usado como uma porta de transbordamento. description: Armazena itens em excesso, até uma determinada capacidade. Pode ser usado como uma porta de transbordamento.
hub:
deliver: Deliver
toUnlock: to unlock
levelShortcut: LVL
storyRewards: storyRewards:
# Those are the rewards gained from completing the store # Those are the rewards gained from completing the store
@ -515,7 +526,10 @@ storyRewards:
reward_splitter: reward_splitter:
title: Divisor/fusão title: Divisor/fusão
desc: O balanceador multifuncional <strong> </strong> foi desbloqueado - ele pode ser usado para construir fábricas maiores dividindo e mesclando itens </strong>! <br> <br> desc: >-
The multifunctional <strong>balancer</strong> has been unlocked - It can be
used to build bigger factories by <strong>splitting and merging items</strong>
onto multiple belts!<br><br>
reward_tunnel: reward_tunnel:
title: Túnel title: Túnel
@ -628,6 +642,10 @@ settings:
description: >- description: >-
Escolha o tema entre (Branco / Preto). Escolha o tema entre (Branco / Preto).
themes:
dark: Dark
light: Light
refreshRate: refreshRate:
title: Frequencia title: Frequencia
description: >- description: >-
@ -643,6 +661,23 @@ settings:
description: >- description: >-
Se deve oferecer dicas e tutoriais enquanto estiver jogando.v. Se deve oferecer dicas e tutoriais enquanto estiver jogando.v.
language:
title: Language
description: >-
Change the language. All translations are user contributed and might be
incomplete!
movementSpeed:
title: Movement speed
description: Changes how fast the view moves when using the keyboard.
speeds:
super_slow: Super slow
slow: Slow
regular: Regular
fast: Fast
super_fast: Super Fast
extremely_fast: Extremely Fast
keybindings: keybindings:
title: Comandos title: Comandos
hint: >- hint: >-
@ -703,9 +738,29 @@ keybindings:
placementDisableAutoOrientation: Desligar orientações automaticas placementDisableAutoOrientation: Desligar orientações automaticas
placeMultiple: Permanecer no modo de produção placeMultiple: Permanecer no modo de produção
placeInverse: Inverter orientação de esteira placeInverse: Inverter orientação de esteira
pasteLastBlueprint: Paste last blueprint
massSelectCut: Cut area
exportScreenshot: Export whole Base as Image
about: about:
title: Sobre o jogo title: Sobre o jogo
body: >-
This game is open source and developed by <a href="https://github.com/tobspr"
target="_blank">Tobias Springer</a> (this is me).<br><br>
If you want to contribute, check out <a href="<githublink>"
target="_blank">shapez.io on github</a>.<br><br>
This game wouldn't have been possible without the great discord community
around my games - You should really join the <a href="<discordlink>"
target="_blank">discord server</a>!<br><br>
The soundtrack was made by <a href="https://soundcloud.com/pettersumelius"
target="_blank">Peppsen</a> - He's awesome.<br><br>
Finally, huge thanks to my best friend <a
href="https://github.com/niklas-dahl" target="_blank">Niklas</a> - Without our
factorio sessions this game would never have existed.
changelog: changelog:
title: Changelog title: Changelog
@ -716,6 +771,6 @@ demo:
importingGames: Carregando jogos salvos importingGames: Carregando jogos salvos
oneGameLimit: Limitado para um savegamne oneGameLimit: Limitado para um savegamne
customizeKeybindings: Modificando Teclas customizeKeybindings: Modificando Teclas
creatingMarkers: Criando marcações exportingBase: Exporting whole Base as Image
settingNotAvailable: Não disponível na versão demo. settingNotAvailable: Não disponível na versão demo.

File diff suppressed because it is too large Load Diff

View File

@ -36,7 +36,7 @@ steamPage:
Since shapes can get boring soon you need to mix colors and paint your shapes with it - Combine red, green and blue color resources to produce different colors and paint shapes with it to satisfy the demand. Since shapes can get boring soon you need to mix colors and paint your shapes with it - Combine red, green and blue color resources to produce different colors and paint shapes with it to satisfy the demand.
This game features 18 levels (Which should keep you busy for hours already!) but I'm constantly adding new content - There is a lot planned! This game features 18 levels (Which should keep you busy for hours already!) but I'm constantly adding new content - There is a lot planned!
[b]Standalone Advantages[/b] [b]Standalone Advantages[/b]
@ -214,17 +214,6 @@ dialogs:
title: Demo Version title: Demo Version
desc: You tried to access a feature (<feature>) which is not available in the demo. Consider to get the standalone for the full experience! desc: You tried to access a feature (<feature>) which is not available in the demo. Consider to get the standalone for the full experience!
saveNotPossibleInDemo:
desc: Your game has been saved, but restoring it is only possible in the standalone version. Consider to get the standalone for the full experience!
leaveNotPossibleInDemo:
title: Demo version
desc: Your game has been saved, but you will not be able to restore it in the demo. Restoring your savegames is only possible in the full version. Are you sure?
newUpdate:
title: Update available
desc: There is an update for this game available, be sure to download it!
oneSavegameLimit: oneSavegameLimit:
title: Limited savegames title: Limited savegames
desc: You can only have one savegame at a time in the demo version. Please remove the existing one or get the standalone! desc: You can only have one savegame at a time in the demo version. Please remove the existing one or get the standalone!
@ -234,11 +223,6 @@ dialogs:
desc: >- desc: >-
Here are the changes since you last played: Here are the changes since you last played:
hintDescription:
title: Tutorial
desc: >-
Whenever you need help or are stuck, check out the 'Show hint' button in the lower left and I'll give my best to help you!
upgradesIntroduction: upgradesIntroduction:
title: Unlock Upgrades title: Unlock Upgrades
desc: >- desc: >-
@ -270,6 +254,17 @@ dialogs:
markerDemoLimit: markerDemoLimit:
desc: You can only create two custom markers in the demo. Get the standalone for unlimited markers! desc: You can only create two custom markers in the demo. Get the standalone for unlimited markers!
massCutConfirm:
title: Confirm cut
desc: >-
You are cutting a lot of buildings (<count> to be exact)! Are you sure you
want to do this?
exportScreenshotWarning:
title: Export screenshot
desc: >-
You requested to export your base as a screenshot. Please note that this can
be quite slow for a big base and even crash your game!
ingame: ingame:
# This is shown in the top left corner and displays useful keybindings in # This is shown in the top left corner and displays useful keybindings in
@ -286,6 +281,7 @@ ingame:
placeBuilding: Place building placeBuilding: Place building
createMarker: Create Marker createMarker: Create Marker
delete: Destroy delete: Destroy
pasteLastBlueprint: Paste last blueprint
# Everything related to placing buildings (I.e. as soon as you selected a building # Everything related to placing buildings (I.e. as soon as you selected a building
# from the toolbar) # from the toolbar)
@ -324,7 +320,7 @@ ingame:
# Mass select information, this is when you hold CTRL and then drag with your mouse # Mass select information, this is when you hold CTRL and then drag with your mouse
# to select multiple buildings # to select multiple buildings
massSelect: massSelect:
infoText: Press <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel. infoText: Press <keyCut> to cut, <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel.
# The "Upgrades" window # The "Upgrades" window
shop: shop:
@ -495,6 +491,10 @@ buildings:
storage: storage:
name: Storage name: Storage
description: Stores excess items, up to a given capacity. Can be used as an overflow gate. description: Stores excess items, up to a given capacity. Can be used as an overflow gate.
hub:
deliver: Deliver
toUnlock: to unlock
levelShortcut: LVL
storyRewards: storyRewards:
# Those are the rewards gained from completing the store # Those are the rewards gained from completing the store
@ -639,6 +639,10 @@ settings:
description: >- description: >-
Choose the game theme (light / dark). Choose the game theme (light / dark).
themes:
dark: Dark
light: Light
refreshRate: refreshRate:
title: Simulation Target title: Simulation Target
description: >- description: >-
@ -654,6 +658,17 @@ settings:
description: >- description: >-
Whether to offer hints and tutorials while playing. Also hides certain UI elements onto a given level to make it easier to get into the game. Whether to offer hints and tutorials while playing. Also hides certain UI elements onto a given level to make it easier to get into the game.
movementSpeed:
title: Movement speed
description: Changes how fast the view moves when using the keyboard.
speeds:
super_slow: Super slow
slow: Slow
regular: Regular
fast: Fast
super_fast: Super Fast
extremely_fast: Extremely Fast
keybindings: keybindings:
title: Keybindings title: Keybindings
hint: >- hint: >-
@ -714,9 +729,29 @@ keybindings:
placementDisableAutoOrientation: Disable automatic orientation placementDisableAutoOrientation: Disable automatic orientation
placeMultiple: Stay in placement mode placeMultiple: Stay in placement mode
placeInverse: Invert automatic belt orientation placeInverse: Invert automatic belt orientation
pasteLastBlueprint: Paste last blueprint
massSelectCut: Cut area
exportScreenshot: Export whole Base as Image
about: about:
title: About this Game title: About this Game
body: >-
This game is open source and developed by <a href="https://github.com/tobspr"
target="_blank">Tobias Springer</a> (this is me).<br><br>
If you want to contribute, check out <a href="<githublink>"
target="_blank">shapez.io on github</a>.<br><br>
This game wouldn't have been possible without the great discord community
around my games - You should really join the <a href="<discordlink>"
target="_blank">discord server</a>!<br><br>
The soundtrack was made by <a href="https://soundcloud.com/pettersumelius"
target="_blank">Peppsen</a> - He's awesome.<br><br>
Finally, huge thanks to my best friend <a
href="https://github.com/niklas-dahl" target="_blank">Niklas</a> - Without our
factorio sessions this game would never have existed.
changelog: changelog:
title: Changelog title: Changelog
@ -727,5 +762,6 @@ demo:
importingGames: Importing savegames importingGames: Importing savegames
oneGameLimit: Limited to one savegame oneGameLimit: Limited to one savegame
customizeKeybindings: Customizing Keybindings customizeKeybindings: Customizing Keybindings
exportingBase: Exporting whole Base as Image
settingNotAvailable: Not available in the demo. settingNotAvailable: Not available in the demo.

File diff suppressed because it is too large Load Diff

View File

@ -36,7 +36,7 @@ steamPage:
Since shapes can get boring soon you need to mix colors and paint your shapes with it - Combine red, green and blue color resources to produce different colors and paint shapes with it to satisfy the demand. Since shapes can get boring soon you need to mix colors and paint your shapes with it - Combine red, green and blue color resources to produce different colors and paint shapes with it to satisfy the demand.
This game features 18 levels (Which should keep you busy for hours already!) but I'm constantly adding new content - There is a lot planned! This game features 18 levels (Which should keep you busy for hours already!) but I'm constantly adding new content - There is a lot planned!
[b]Standalone Advantages[/b] [b]Standalone Advantages[/b]
@ -214,17 +214,6 @@ dialogs:
title: Demo Version title: Demo Version
desc: You tried to access a feature (<feature>) which is not available in the demo. Consider to get the standalone for the full experience! desc: You tried to access a feature (<feature>) which is not available in the demo. Consider to get the standalone for the full experience!
saveNotPossibleInDemo:
desc: Your game has been saved, but restoring it is only possible in the standalone version. Consider to get the standalone for the full experience!
leaveNotPossibleInDemo:
title: Demo version
desc: Your game has been saved, but you will not be able to restore it in the demo. Restoring your savegames is only possible in the full version. Are you sure?
newUpdate:
title: Update available
desc: There is an update for this game available, be sure to download it!
oneSavegameLimit: oneSavegameLimit:
title: Limited savegames title: Limited savegames
desc: You can only have one savegame at a time in the demo version. Please remove the existing one or get the standalone! desc: You can only have one savegame at a time in the demo version. Please remove the existing one or get the standalone!
@ -234,11 +223,6 @@ dialogs:
desc: >- desc: >-
Here are the changes since you last played: Here are the changes since you last played:
hintDescription:
title: Tutorial
desc: >-
Whenever you need help or are stuck, check out the 'Show hint' button in the lower left and I'll give my best to help you!
upgradesIntroduction: upgradesIntroduction:
title: Unlock Upgrades title: Unlock Upgrades
desc: >- desc: >-
@ -270,6 +254,17 @@ dialogs:
markerDemoLimit: markerDemoLimit:
desc: You can only create two custom markers in the demo. Get the standalone for unlimited markers! desc: You can only create two custom markers in the demo. Get the standalone for unlimited markers!
massCutConfirm:
title: Confirm cut
desc: >-
You are cutting a lot of buildings (<count> to be exact)! Are you sure you
want to do this?
exportScreenshotWarning:
title: Export screenshot
desc: >-
You requested to export your base as a screenshot. Please note that this can
be quite slow for a big base and even crash your game!
ingame: ingame:
# This is shown in the top left corner and displays useful keybindings in # This is shown in the top left corner and displays useful keybindings in
@ -286,6 +281,7 @@ ingame:
placeBuilding: Place building placeBuilding: Place building
createMarker: Create Marker createMarker: Create Marker
delete: Destroy delete: Destroy
pasteLastBlueprint: Paste last blueprint
# Everything related to placing buildings (I.e. as soon as you selected a building # Everything related to placing buildings (I.e. as soon as you selected a building
# from the toolbar) # from the toolbar)
@ -324,7 +320,7 @@ ingame:
# Mass select information, this is when you hold CTRL and then drag with your mouse # Mass select information, this is when you hold CTRL and then drag with your mouse
# to select multiple buildings # to select multiple buildings
massSelect: massSelect:
infoText: Press <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel. infoText: Press <keyCut> to cut, <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel.
# The "Upgrades" window # The "Upgrades" window
shop: shop:
@ -495,6 +491,10 @@ buildings:
storage: storage:
name: Storage name: Storage
description: Stores excess items, up to a given capacity. Can be used as an overflow gate. description: Stores excess items, up to a given capacity. Can be used as an overflow gate.
hub:
deliver: Deliver
toUnlock: to unlock
levelShortcut: LVL
storyRewards: storyRewards:
# Those are the rewards gained from completing the store # Those are the rewards gained from completing the store
@ -639,6 +639,10 @@ settings:
description: >- description: >-
Choose the game theme (light / dark). Choose the game theme (light / dark).
themes:
dark: Dark
light: Light
refreshRate: refreshRate:
title: Simulation Target title: Simulation Target
description: >- description: >-
@ -654,6 +658,17 @@ settings:
description: >- description: >-
Whether to offer hints and tutorials while playing. Also hides certain UI elements onto a given level to make it easier to get into the game. Whether to offer hints and tutorials while playing. Also hides certain UI elements onto a given level to make it easier to get into the game.
movementSpeed:
title: Movement speed
description: Changes how fast the view moves when using the keyboard.
speeds:
super_slow: Super slow
slow: Slow
regular: Regular
fast: Fast
super_fast: Super Fast
extremely_fast: Extremely Fast
keybindings: keybindings:
title: Keybindings title: Keybindings
hint: >- hint: >-
@ -714,9 +729,29 @@ keybindings:
placementDisableAutoOrientation: Disable automatic orientation placementDisableAutoOrientation: Disable automatic orientation
placeMultiple: Stay in placement mode placeMultiple: Stay in placement mode
placeInverse: Invert automatic belt orientation placeInverse: Invert automatic belt orientation
pasteLastBlueprint: Paste last blueprint
massSelectCut: Cut area
exportScreenshot: Export whole Base as Image
about: about:
title: About this Game title: About this Game
body: >-
This game is open source and developed by <a href="https://github.com/tobspr"
target="_blank">Tobias Springer</a> (this is me).<br><br>
If you want to contribute, check out <a href="<githublink>"
target="_blank">shapez.io on github</a>.<br><br>
This game wouldn't have been possible without the great discord community
around my games - You should really join the <a href="<discordlink>"
target="_blank">discord server</a>!<br><br>
The soundtrack was made by <a href="https://soundcloud.com/pettersumelius"
target="_blank">Peppsen</a> - He's awesome.<br><br>
Finally, huge thanks to my best friend <a
href="https://github.com/niklas-dahl" target="_blank">Niklas</a> - Without our
factorio sessions this game would never have existed.
changelog: changelog:
title: Changelog title: Changelog
@ -727,5 +762,6 @@ demo:
importingGames: Importing savegames importingGames: Importing savegames
oneGameLimit: Limited to one savegame oneGameLimit: Limited to one savegame
customizeKeybindings: Customizing Keybindings customizeKeybindings: Customizing Keybindings
exportingBase: Exporting whole Base as Image
settingNotAvailable: Not available in the demo. settingNotAvailable: Not available in the demo.

768
translations/base-tr.yaml Normal file
View File

@ -0,0 +1,768 @@
#
# GAME TRANSLATIONS
#
# Contributing:
#
# If you want to contribute, please make a pull request on this respository
# and I will have a look.
#
# Placeholders:
#
# Do *not* replace placeholders! Placeholders have a special syntax like
# `Hotkey: <key>`. They are encapsulated within angle brackets. The correct
# translation for this one in German for example would be: `Taste: <key>` (notice
# how the placeholder stayed '<key>' and was not replaced!)
#
# Adding a new language:
#
# If you want to add a new language, ask me in the discord and I will setup
# the basic structure so the game also detects it.
#
steamPage:
# This is the short text appearing on the steam page
shortText: shapez.io is a game about building factories to automate the creation and combination of increasingly complex shapes within an infinite map.
# This is the long description for the steam page - It is contained here so you can help to translate it, and I will regulary update the store page.
# NOTICE:
# - Do not translate the first line (This is the gif image at the start of the store)
# - Please keep the markup (Stuff like [b], [list] etc) in the same format
longText: >-
[img]{STEAM_APP_IMAGE}/extras/store_page_gif.gif[/img]
shapez.io is a game about building factories to automate the creation and combination of shapes. Deliver the requested, increasingly complex shapes to progress within the game and unlock upgrades to speed up your factory.
Since the demand raises you will have to scale up your factory to fit the needs - Don't forget about resources though, you will have to expand in the [b]infinite map[/b]!
Since shapes can get boring soon you need to mix colors and paint your shapes with it - Combine red, green and blue color resources to produce different colors and paint shapes with it to satisfy the demand.
This game features 18 levels (Which should keep you busy for hours already!) but I'm constantly adding new content - There is a lot planned!
[b]Standalone Advantages[/b]
[list]
[*] Waypoints
[*] Unlimited Savegames
[*] Dark Mode
[*] More settings
[*] Allow me to further develop shapez.io ❤️
[*] More features in the future!
[/list]
[b]Planned features & Community suggestions[/b]
This game is open source - Anybody can contribute! Besides of that, I listen [b]a lot[/b] to the community! I try to read all suggestions and take as much feedback into account as possible.
[list]
[*] Story mode where buildings cost shapes
[*] More levels & buildings (standalone exclusive)
[*] Different maps, and maybe map obstacles
[*] Configurable map creation (Edit number and size of patches, seed, and more)
[*] More types of shapes
[*] More performance improvements (Although the game already runs pretty good!)
[*] Color blind mode
[*] And much more!
[/list]
Be sure to check out my trello board for the full roadmap! https://trello.com/b/ISQncpJP/shapezio
global:
loading: Loading
error: Error
# How big numbers are rendered, e.g. "10,000"
thousandsDivider: ","
# The suffix for large numbers, e.g. 1.3k, 400.2M, etc.
suffix:
thousands: k
millions: M
billions: B
trillions: T
# Shown for infinitely big numbers
infinite: inf
time:
# Used for formatting past time dates
oneSecondAgo: one second ago
xSecondsAgo: <x> seconds ago
oneMinuteAgo: one minute ago
xMinutesAgo: <x> minutes ago
oneHourAgo: one hour ago
xHoursAgo: <x> hours ago
oneDayAgo: one day ago
xDaysAgo: <x> days ago
# Short formats for times, e.g. '5h 23m'
secondsShort: <seconds>s
minutesAndSecondsShort: <minutes>m <seconds>s
hoursAndMinutesShort: <hours>h <minutes>m
xMinutes: <x> minutes
keys:
tab: TAB
control: CTRL
alt: ALT
escape: ESC
shift: SHIFT
space: SPACE
demoBanners:
# This is the "advertisement" shown in the main menu and other various places
title: Demo Version
intro: >-
Get the standalone to unlock all features!
mainMenu:
play: Play
changelog: Changelog
importSavegame: Import
openSourceHint: This game is open source!
discordLink: Official Discord Server
helpTranslate: Help translate!
# This is shown when using firefox and other browsers which are not supported.
browserWarning: >-
Sorry, but the game is known to run slow on your browser! Get the standalone version or download chrome for the full experience.
savegameLevel: Level <x>
savegameLevelUnknown: Unknown Level
contests:
contest_01_03062020:
title: "Contest #01"
desc: Win <strong>$25</strong> for the coolest base!
longDesc: >-
To give something back to you, I thought it would be cool to make weekly contests!
<br><br>
<strong>This weeks topic:</strong> Build the coolest base!
<br><br>
Here's the deal:<br>
<ul class="bucketList">
<li>Submit a screenshot of your base to <strong>contest@shapez.io</strong></li>
<li>Bonus points if you share it on social media!</li>
<li>I will choose 5 screenshots and propose it to the <strong>discord</strong> community to vote.</li>
<li>The winner gets <strong>$25</strong> (Paypal, Amazon Gift Card, whatever you prefer)</li>
<li>Deadline: 07.06.2020 12:00 AM CEST</li>
</ul>
<br>
I'm looking forward to seeing your awesome creations!
showInfo: View
contestOver: This contest has ended - Join the discord to get noticed about new contests!
dialogs:
buttons:
ok: OK
delete: Delete
cancel: Cancel
later: Later
restart: Restart
reset: Reset
getStandalone: Get Standalone
deleteGame: I know what I do
viewUpdate: View Update
showUpgrades: Show Upgrades
showKeybindings: Show Keybindings
importSavegameError:
title: Import Error
text: >-
Failed to import your savegame:
importSavegameSuccess:
title: Savegame Imported
text: >-
Your savegame has been successfully imported.
gameLoadFailure:
title: Game is broken
text: >-
Failed to load your savegame:
confirmSavegameDelete:
title: Confirm deletion
text: >-
Are you sure you want to delete the game?
savegameDeletionError:
title: Failed to delete
text: >-
Failed to delete the savegame:
restartRequired:
title: Restart required
text: >-
You need to restart the game to apply the settings.
editKeybinding:
title: Change Keybinding
desc: Press the key or mouse button you want to assign, or escape to cancel.
resetKeybindingsConfirmation:
title: Reset keybindings
desc: This will reset all keybindings to their default values. Please confirm.
keybindingsResetOk:
title: Keybindings reset
desc: The keybindings have been reset to their respective defaults!
featureRestriction:
title: Demo Version
desc: You tried to access a feature (<feature>) which is not available in the demo. Consider to get the standalone for the full experience!
oneSavegameLimit:
title: Limited savegames
desc: You can only have one savegame at a time in the demo version. Please remove the existing one or get the standalone!
updateSummary:
title: New update!
desc: >-
Here are the changes since you last played:
upgradesIntroduction:
title: Unlock Upgrades
desc: >-
All shapes you produce can be used to unlock upgrades - <strong>Don't destroy your old factories!</strong>
The upgrades tab can be found on the top right corner of the screen.
massDeleteConfirm:
title: Confirm delete
desc: >-
You are deleting a lot of buildings (<count> to be exact)! Are you sure you want to do this?
blueprintsNotUnlocked:
title: Not unlocked yet
desc: >-
Complete level 12 to unlock Blueprints!
keybindingsIntroduction:
title: Useful keybindings
desc: >-
This game has a lot of keybindings which make it easier to build big factories.
Here are a few, but be sure to <strong>check out the keybindings</strong>!<br><br>
<code class='keybinding'>CTRL</code> + Drag: Select area to delete.<br>
<code class='keybinding'>SHIFT</code>: Hold to place multiple of one building.<br>
<code class='keybinding'>ALT</code>: Invert orientation of placed belts.<br>
createMarker:
title: New Marker
desc: Give it a meaningful name
markerDemoLimit:
desc: You can only create two custom markers in the demo. Get the standalone for unlimited markers!
massCutConfirm:
title: Confirm cut
desc: >-
You are cutting a lot of buildings (<count> to be exact)! Are you sure you
want to do this?
exportScreenshotWarning:
title: Export screenshot
desc: >-
You requested to export your base as a screenshot. Please note that this can
be quite slow for a big base and even crash your game!
ingame:
# This is shown in the top left corner and displays useful keybindings in
# every situation
keybindingsOverlay:
moveMap: Move
selectBuildings: Select area
stopPlacement: Stop placement
rotateBuilding: Rotate building
placeMultiple: Place multiple
reverseOrientation: Reverse orientation
disableAutoOrientation: Disable auto orientation
toggleHud: Toggle HUD
placeBuilding: Place building
createMarker: Create Marker
delete: Destroy
pasteLastBlueprint: Paste last blueprint
# Everything related to placing buildings (I.e. as soon as you selected a building
# from the toolbar)
buildingPlacement:
# Buildings can have different variants which are unlocked at later levels,
# and this is the hint shown when there are multiple variants available.
cycleBuildingVariants: Press <key> to cycle variants.
# Shows the hotkey in the ui, e.g. "Hotkey: Q"
hotkeyLabel: >-
Hotkey: <key>
infoTexts:
speed: Speed
range: Range
storage: Storage
oneItemPerSecond: 1 item / second
itemsPerSecond: <x> items / s
itemsPerSecondDouble: (x2)
tiles: <x> tiles
# The notification when completing a level
levelCompleteNotification:
# <level> is replaced by the actual level, so this gets 'Level 03' for example.
levelTitle: Level <level>
completed: Completed
unlockText: Unlocked <reward>!
buttonNextLevel: Next Level
# Notifications on the lower right
notifications:
newUpgrade: A new upgrade is available!
gameSaved: Your game has been saved.
# Mass select information, this is when you hold CTRL and then drag with your mouse
# to select multiple buildings
massSelect:
infoText: Press <keyCut> to cut, <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel.
# The "Upgrades" window
shop:
title: Upgrades
buttonUnlock: Upgrade
# Gets replaced to e.g. "Tier IX"
tier: Tier <x>
# The roman number for each tier
tierLabels: [I, II, III, IV, V, VI, VII, VIII, IX, X]
maximumLevel: MAXIMUM LEVEL (Speed x<currentMult>)
# The "Statistics" window
statistics:
title: Statistics
dataSources:
stored:
title: Stored
description: Displaying amount of stored shapes in your central building.
produced:
title: Produced
description: Displaying all shapes your whole factory produces, including intermediate products.
delivered:
title: Delivered
description: Displaying shapes which are delivered to your central building.
noShapesProduced: No shapes have been produced so far.
# Displays the shapes per minute, e.g. '523 / m'
shapesPerMinute: <shapes> / m
# Settings menu, when you press "ESC"
settingsMenu:
playtime: Playtime
buildingsPlaced: Buildings
beltsPlaced: Belts
buttons:
continue: Continue
settings: Settings
menu: Return to menu
# Bottom left tutorial hints
tutorialHints:
title: Need help?
showHint: Show hint
hideHint: Close
# When placing a blueprint
blueprintPlacer:
cost: Cost
# Map markers
waypoints:
waypoints: Markers
hub: HUB
description: Left-click a marker to jump to it, right-click to delete it.<br><br>Press <keybinding> to create a marker from the current view, or <strong>right-click</strong> to create a marker at the selected location.
creationSuccessNotification: Marker has been created.
# Interactive tutorial
interactiveTutorial:
title: Tutorial
hints:
1_1_extractor: Place an <strong>extractor</strong> on top of a <strong>circle shape</strong> to extract it!
1_2_conveyor: >-
Connect the extractor with a <strong>conveyor belt</strong> to your hub!<br><br>Tip: <strong>Click and drag</strong> the belt with your mouse!
1_3_expand: >-
This is <strong>NOT</strong> an idle game! Build more extractors and belts to finish the goal quicker.<br><br>Tip: Hold <strong>SHIFT</strong> to place multiple extractors, and use <strong>R</strong> to rotate them.
# All shop upgrades
shopUpgrades:
belt:
name: Belts, Distributor & Tunnels
description: Speed x<currentMult> → x<newMult>
miner:
name: Extraction
description: Speed x<currentMult> → x<newMult>
processors:
name: Cutting, Rotating & Stacking
description: Speed x<currentMult> → x<newMult>
painting:
name: Mixing & Painting
description: Speed x<currentMult> → x<newMult>
# Buildings and their name / description
buildings:
hub:
deliver: Deliver
toUnlock: to unlock
levelShortcut: LVL
belt:
default:
name: &belt Conveyor Belt
description: Transports items, hold and drag to place multiple.
miner: # Internal name for the Extractor
default:
name: &miner Extractor
description: Place over a shape or color to extract it.
chainable:
name: Extractor (Chain)
description: Place over a shape or color to extract it. Can be chained.
underground_belt: # Internal name for the Tunnel
default:
name: &underground_belt Tunnel
description: Allows to tunnel resources under buildings and belts.
tier2:
name: Tunnel Tier II
description: Allows to tunnel resources under buildings and belts.
splitter: # Internal name for the Balancer
default:
name: &splitter Balancer
description: Multifunctional - Evenly distributes all inputs onto all outputs.
compact:
name: Merger (compact)
description: Merges two conveyor belts into one.
compact-inverse:
name: Merger (compact)
description: Merges two conveyor belts into one.
cutter:
default:
name: &cutter Cutter
description: Cuts shapes from top to bottom and outputs both halfs. <strong>If you use only one part, be sure to destroy the other part or it will stall!</strong>
quad:
name: Cutter (Quad)
description: Cuts shapes into four parts. <strong>If you use only one part, be sure to destroy the other part or it will stall!</strong>
rotater:
default:
name: &rotater Rotate
description: Rotates shapes clockwise by 90 degrees.
ccw:
name: Rotate (CCW)
description: Rotates shapes counter clockwise by 90 degrees.
stacker:
default:
name: &stacker Stacker
description: Stacks both items. If they can not be merged, the right item is placed above the left item.
mixer:
default:
name: &mixer Color Mixer
description: Mixes two colors using additive blending.
painter:
default:
name: &painter Painter
description: Colors the whole shape on the left input with the color from the right input.
double:
name: Painter (Double)
description: Colors the shapes on the left inputs with the color from the top input.
quad:
name: Painter (Quad)
description: Allows to color each quadrant of the shape with a different color.
trash:
default:
name: &trash Trash
description: Accepts inputs from all sides and destroys them. Forever.
storage:
name: Storage
description: Stores excess items, up to a given capacity. Can be used as an overflow gate.
storyRewards:
# Those are the rewards gained from completing the store
reward_cutter_and_trash:
title: Cutting Shapes
desc: You just unlocked the <strong>cutter</strong> - it cuts shapes half from <strong>top to bottom</strong> regardless of its orientation!<br><br>Be sure to get rid of the waste, or otherwise <strong>it will stall</strong> - For this purpose I gave you a trash, which destroys everything you put into it!
reward_rotater:
title: Rotating
desc: The <strong>rotater</strong> has been unlocked! It rotates shapes clockwise by 90 degrees.
reward_painter:
title: Painting
desc: >-
The <strong>painter</strong> has been unlocked - Extract some color veins (just as you do with shapes) and combine it with a shape in the painter to color them!<br><br>PS: If you are colorblind, I'm working on a solution already!
reward_mixer:
title: Color Mixing
desc: The <strong>mixer</strong> has been unlocked - Combine two colors using <strong>additive blending</strong> with this building!
reward_stacker:
title: Combiner
desc: You can now combine shapes with the <strong>combiner</strong>! Both inputs are combined, and if they can be put next to each other, they will be <strong>fused</strong>. If not, the right input is <strong>stacked on top</strong> of the left input!
reward_splitter:
title: Splitter/Merger
desc: The multifunctional <strong>balancer</strong> has been unlocked - It can be used to build bigger factories by <strong>splitting and merging items</strong> onto multiple belts!<br><br>
reward_tunnel:
title: Tunnel
desc: The <strong>tunnel</strong> has been unlocked - You can now pipe items through belts and buildings with it!
reward_rotater_ccw:
title: CCW Rotating
desc: You have unlocked a variant of the <strong>rotater</strong> - It allows to rotate counter clockwise! To build it, select the rotater and <strong>press 'T' to cycle its variants</strong>!
reward_miner_chainable:
title: Chaining Extractor
desc: You have unlocked the <strong>chaining extractor</strong>! It can <strong>forward its resources</strong> to other extractors so you can more efficiently extract resources!
reward_underground_belt_tier_2:
title: Tunnel Tier II
desc: You have unlocked a new variant of the <strong>tunnel</strong> - It has a <strong>bigger range</strong>, and you can also mix-n-match those tunnels now!
reward_splitter_compact:
title: Compact Balancer
desc: >-
You have unlocked a compact variant of the <strong>balancer</strong> - It accepts two inputs and merges them into one!
reward_cutter_quad:
title: Quad Cutting
desc: You have unlocked a variant of the <strong>cutter</strong> - It allows you to cut shapes in <strong>four parts</strong> instead of just two!
reward_painter_double:
title: Double Painting
desc: You have unlocked a variant of the <strong>painter</strong> - It works as the regular painter but processes <strong>two shapes at once</strong> consuming just one color instead of two!
reward_painter_quad:
title: Quad Painting
desc: You have unlocked a variant of the <strong>painter</strong> - It allows to paint each part of the shape individually!
reward_storage:
title: Storage Buffer
desc: You have unlocked a variant of the <strong>trash</strong> - It allows to store items up to a given capacity!
reward_freeplay:
title: Freeplay
desc: You did it! You unlocked the <strong>free-play mode</strong>! This means that shapes are now randomly generated! (No worries, more content is planned for the standalone!)
reward_blueprints:
title: Blueprints
desc: You can now <strong>copy and paste</strong> parts of your factory! Select an area (Hold CTRL, then drag with your mouse), and press 'C' to copy it.<br><br>Pasting it is <strong>not free</strong>, you need to produce <strong>blueprint shapes</strong> to afford it! (Those you just delivered).
# Special reward, which is shown when there is no reward actually
no_reward:
title: Next level
desc: >-
This level gave you no reward, but the next one will! <br><br> PS: Better don't destroy your existing factory - You need <strong>all</strong> those shapes later again to <strong>unlock upgrades</strong>!
no_reward_freeplay:
title: Next level
desc: >-
Congratulations! By the way, more content is planned for the standalone!
settings:
title: Settings
categories:
game: Game
app: Application
versionBadges:
dev: Development
staging: Staging
prod: Production
buildDate: Built <at-date>
labels:
uiScale:
title: Interface scale
description: >-
Changes the size of the user interface. The interface will still scale based on your device resolution, but this setting controls the amount of scale.
scales:
super_small: Super small
small: Small
regular: Regular
large: Large
huge: Huge
scrollWheelSensitivity:
title: Zoom sensitivity
description: >-
Changes how sensitive the zoom is (Either mouse wheel or trackpad).
sensitivity:
super_slow: Super slow
slow: Slow
regular: Regular
fast: Fast
super_fast: Super fast
language:
title: Language
description: >-
Change the language. All translations are user contributed and might be incomplete!
fullscreen:
title: Fullscreen
description: >-
It is recommended to play the game in fullscreen to get the best experience. Only available in the standalone.
soundsMuted:
title: Mute Sounds
description: >-
If enabled, mutes all sound effects.
musicMuted:
title: Mute Music
description: >-
If enabled, mutes all music.
theme:
title: Game theme
description: >-
Choose the game theme (light / dark).
themes:
dark: Dark
light: Light
refreshRate:
title: Simulation Target
description: >-
If you have a 144hz monitor, change the refresh rate here so the game will properly simulate at higher refresh rates. This might actually decrease the FPS if your computer is too slow.
alwaysMultiplace:
title: Multiplace
description: >-
If enabled, all buildings will stay selected after placement until you cancel it. This is equivalent to holding SHIFT permanently.
offerHints:
title: Hints & Tutorials
description: >-
Whether to offer hints and tutorials while playing. Also hides certain UI elements onto a given level to make it easier to get into the game.
movementSpeed:
title: Movement speed
description: Changes how fast the view moves when using the keyboard.
speeds:
super_slow: Super slow
slow: Slow
regular: Regular
fast: Fast
super_fast: Super Fast
extremely_fast: Extremely Fast
keybindings:
title: Keybindings
hint: >-
Tip: Be sure to make use of CTRL, SHIFT and ALT! They enable different placement options.
resetKeybindings: Reset Keyinbindings
categoryLabels:
general: Application
ingame: Game
navigation: Navigating
placement: Placement
massSelect: Mass Select
buildings: Building Shortcuts
placementModifiers: Placement Modifiers
mappings:
confirm: Confirm
back: Back
mapMoveUp: Move Up
mapMoveRight: Move Right
mapMoveDown: Move Down
mapMoveLeft: Move Left
centerMap: Center Map
mapZoomIn: Zoom in
mapZoomOut: Zoom out
createMarker: Create Marker
menuOpenShop: Upgrades
menuOpenStats: Statistics
toggleHud: Toggle HUD
toggleFPSInfo: Toggle FPS and Debug Info
belt: *belt
splitter: *splitter
underground_belt: *underground_belt
miner: *miner
cutter: *cutter
rotater: *rotater
stacker: *stacker
mixer: *mixer
painter: *painter
trash: *trash
abortBuildingPlacement: Abort Placement
rotateWhilePlacing: Rotate
rotateInverseModifier: >-
Modifier: Rotate CCW instead
cycleBuildingVariants: Cycle Variants
confirmMassDelete: Confirm Mass Delete
cycleBuildings: Cycle Buildings
massSelectStart: Hold and drag to start
massSelectSelectMultiple: Select multiple areas
massSelectCopy: Copy area
placementDisableAutoOrientation: Disable automatic orientation
placeMultiple: Stay in placement mode
placeInverse: Invert automatic belt orientation
pasteLastBlueprint: Paste last blueprint
massSelectCut: Cut area
exportScreenshot: Export whole Base as Image
about:
title: About this Game
body: >-
This game is open source and developed by <a href="https://github.com/tobspr"
target="_blank">Tobias Springer</a> (this is me).<br><br>
If you want to contribute, check out <a href="<githublink>"
target="_blank">shapez.io on github</a>.<br><br>
This game wouldn't have been possible without the great discord community
around my games - You should really join the <a href="<discordlink>"
target="_blank">discord server</a>!<br><br>
The soundtrack was made by <a href="https://soundcloud.com/pettersumelius"
target="_blank">Peppsen</a> - He's awesome.<br><br>
Finally, huge thanks to my best friend <a
href="https://github.com/niklas-dahl" target="_blank">Niklas</a> - Without our
factorio sessions this game would never have existed.
changelog:
title: Changelog
demo:
features:
restoringGames: Restoring savegames
importingGames: Importing savegames
oneGameLimit: Limited to one savegame
customizeKeybindings: Customizing Keybindings
exportingBase: Exporting whole Base as Image
settingNotAvailable: Not available in the demo.

View File

@ -36,7 +36,7 @@ steamPage:
Since shapes can get boring soon you need to mix colors and paint your shapes with it - Combine red, green and blue color resources to produce different colors and paint shapes with it to satisfy the demand. Since shapes can get boring soon you need to mix colors and paint your shapes with it - Combine red, green and blue color resources to produce different colors and paint shapes with it to satisfy the demand.
This game features 18 levels (Which should keep you busy for hours already!) but I'm constantly adding new content - There is a lot planned! This game features 18 levels (Which should keep you busy for hours already!) but I'm constantly adding new content - There is a lot planned!
[b]Standalone Advantages[/b] [b]Standalone Advantages[/b]
@ -214,17 +214,6 @@ dialogs:
title: Demo Version title: Demo Version
desc: You tried to access a feature (<feature>) which is not available in the demo. Consider to get the standalone for the full experience! desc: You tried to access a feature (<feature>) which is not available in the demo. Consider to get the standalone for the full experience!
saveNotPossibleInDemo:
desc: Your game has been saved, but restoring it is only possible in the standalone version. Consider to get the standalone for the full experience!
leaveNotPossibleInDemo:
title: Demo version
desc: Your game has been saved, but you will not be able to restore it in the demo. Restoring your savegames is only possible in the full version. Are you sure?
newUpdate:
title: Update available
desc: There is an update for this game available, be sure to download it!
oneSavegameLimit: oneSavegameLimit:
title: Limited savegames title: Limited savegames
desc: You can only have one savegame at a time in the demo version. Please remove the existing one or get the standalone! desc: You can only have one savegame at a time in the demo version. Please remove the existing one or get the standalone!
@ -234,11 +223,6 @@ dialogs:
desc: >- desc: >-
Here are the changes since you last played: Here are the changes since you last played:
hintDescription:
title: Tutorial
desc: >-
Whenever you need help or are stuck, check out the 'Show hint' button in the lower left and I'll give my best to help you!
upgradesIntroduction: upgradesIntroduction:
title: Unlock Upgrades title: Unlock Upgrades
desc: >- desc: >-
@ -270,6 +254,17 @@ dialogs:
markerDemoLimit: markerDemoLimit:
desc: You can only create two custom markers in the demo. Get the standalone for unlimited markers! desc: You can only create two custom markers in the demo. Get the standalone for unlimited markers!
massCutConfirm:
title: Confirm cut
desc: >-
You are cutting a lot of buildings (<count> to be exact)! Are you sure you
want to do this?
exportScreenshotWarning:
title: Export screenshot
desc: >-
You requested to export your base as a screenshot. Please note that this can
be quite slow for a big base and even crash your game!
ingame: ingame:
# This is shown in the top left corner and displays useful keybindings in # This is shown in the top left corner and displays useful keybindings in
@ -286,6 +281,7 @@ ingame:
placeBuilding: Place building placeBuilding: Place building
createMarker: Create Marker createMarker: Create Marker
delete: Destroy delete: Destroy
pasteLastBlueprint: Paste last blueprint
# Everything related to placing buildings (I.e. as soon as you selected a building # Everything related to placing buildings (I.e. as soon as you selected a building
# from the toolbar) # from the toolbar)
@ -324,7 +320,7 @@ ingame:
# Mass select information, this is when you hold CTRL and then drag with your mouse # Mass select information, this is when you hold CTRL and then drag with your mouse
# to select multiple buildings # to select multiple buildings
massSelect: massSelect:
infoText: Press <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel. infoText: Press <keyCut> to cut, <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel.
# The "Upgrades" window # The "Upgrades" window
shop: shop:
@ -495,6 +491,10 @@ buildings:
storage: storage:
name: Storage name: Storage
description: Stores excess items, up to a given capacity. Can be used as an overflow gate. description: Stores excess items, up to a given capacity. Can be used as an overflow gate.
hub:
deliver: Deliver
toUnlock: to unlock
levelShortcut: LVL
storyRewards: storyRewards:
# Those are the rewards gained from completing the store # Those are the rewards gained from completing the store
@ -639,6 +639,10 @@ settings:
description: >- description: >-
Choose the game theme (light / dark). Choose the game theme (light / dark).
themes:
dark: Dark
light: Light
refreshRate: refreshRate:
title: Simulation Target title: Simulation Target
description: >- description: >-
@ -654,6 +658,17 @@ settings:
description: >- description: >-
Whether to offer hints and tutorials while playing. Also hides certain UI elements onto a given level to make it easier to get into the game. Whether to offer hints and tutorials while playing. Also hides certain UI elements onto a given level to make it easier to get into the game.
movementSpeed:
title: Movement speed
description: Changes how fast the view moves when using the keyboard.
speeds:
super_slow: Super slow
slow: Slow
regular: Regular
fast: Fast
super_fast: Super Fast
extremely_fast: Extremely Fast
keybindings: keybindings:
title: Keybindings title: Keybindings
hint: >- hint: >-
@ -714,9 +729,29 @@ keybindings:
placementDisableAutoOrientation: Disable automatic orientation placementDisableAutoOrientation: Disable automatic orientation
placeMultiple: Stay in placement mode placeMultiple: Stay in placement mode
placeInverse: Invert automatic belt orientation placeInverse: Invert automatic belt orientation
pasteLastBlueprint: Paste last blueprint
massSelectCut: Cut area
exportScreenshot: Export whole Base as Image
about: about:
title: About this Game title: About this Game
body: >-
This game is open source and developed by <a href="https://github.com/tobspr"
target="_blank">Tobias Springer</a> (this is me).<br><br>
If you want to contribute, check out <a href="<githublink>"
target="_blank">shapez.io on github</a>.<br><br>
This game wouldn't have been possible without the great discord community
around my games - You should really join the <a href="<discordlink>"
target="_blank">discord server</a>!<br><br>
The soundtrack was made by <a href="https://soundcloud.com/pettersumelius"
target="_blank">Peppsen</a> - He's awesome.<br><br>
Finally, huge thanks to my best friend <a
href="https://github.com/niklas-dahl" target="_blank">Niklas</a> - Without our
factorio sessions this game would never have existed.
changelog: changelog:
title: Changelog title: Changelog
@ -727,5 +762,6 @@ demo:
importingGames: Importing savegames importingGames: Importing savegames
oneGameLimit: Limited to one savegame oneGameLimit: Limited to one savegame
customizeKeybindings: Customizing Keybindings customizeKeybindings: Customizing Keybindings
exportingBase: Exporting whole Base as Image
settingNotAvailable: Not available in the demo. settingNotAvailable: Not available in the demo.

View File

@ -36,7 +36,7 @@ steamPage:
Since shapes can get boring soon you need to mix colors and paint your shapes with it - Combine red, green and blue color resources to produce different colors and paint shapes with it to satisfy the demand. Since shapes can get boring soon you need to mix colors and paint your shapes with it - Combine red, green and blue color resources to produce different colors and paint shapes with it to satisfy the demand.
This game features 18 levels (Which should keep you busy for hours already!) but I'm constantly adding new content - There is a lot planned! This game features 18 levels (Which should keep you busy for hours already!) but I'm constantly adding new content - There is a lot planned!
[b]Standalone Advantages[/b] [b]Standalone Advantages[/b]
@ -214,17 +214,6 @@ dialogs:
title: Demo Version title: Demo Version
desc: You tried to access a feature (<feature>) which is not available in the demo. Consider to get the standalone for the full experience! desc: You tried to access a feature (<feature>) which is not available in the demo. Consider to get the standalone for the full experience!
saveNotPossibleInDemo:
desc: Your game has been saved, but restoring it is only possible in the standalone version. Consider to get the standalone for the full experience!
leaveNotPossibleInDemo:
title: Demo version
desc: Your game has been saved, but you will not be able to restore it in the demo. Restoring your savegames is only possible in the full version. Are you sure?
newUpdate:
title: Update available
desc: There is an update for this game available, be sure to download it!
oneSavegameLimit: oneSavegameLimit:
title: Limited savegames title: Limited savegames
desc: You can only have one savegame at a time in the demo version. Please remove the existing one or get the standalone! desc: You can only have one savegame at a time in the demo version. Please remove the existing one or get the standalone!
@ -234,11 +223,6 @@ dialogs:
desc: >- desc: >-
Here are the changes since you last played: Here are the changes since you last played:
hintDescription:
title: Tutorial
desc: >-
Whenever you need help or are stuck, check out the 'Show hint' button in the lower left and I'll give my best to help you!
upgradesIntroduction: upgradesIntroduction:
title: Unlock Upgrades title: Unlock Upgrades
desc: >- desc: >-
@ -270,6 +254,17 @@ dialogs:
markerDemoLimit: markerDemoLimit:
desc: You can only create two custom markers in the demo. Get the standalone for unlimited markers! desc: You can only create two custom markers in the demo. Get the standalone for unlimited markers!
massCutConfirm:
title: Confirm cut
desc: >-
You are cutting a lot of buildings (<count> to be exact)! Are you sure you
want to do this?
exportScreenshotWarning:
title: Export screenshot
desc: >-
You requested to export your base as a screenshot. Please note that this can
be quite slow for a big base and even crash your game!
ingame: ingame:
# This is shown in the top left corner and displays useful keybindings in # This is shown in the top left corner and displays useful keybindings in
@ -286,6 +281,7 @@ ingame:
placeBuilding: Place building placeBuilding: Place building
createMarker: Create Marker createMarker: Create Marker
delete: Destroy delete: Destroy
pasteLastBlueprint: Paste last blueprint
# Everything related to placing buildings (I.e. as soon as you selected a building # Everything related to placing buildings (I.e. as soon as you selected a building
# from the toolbar) # from the toolbar)
@ -324,7 +320,7 @@ ingame:
# Mass select information, this is when you hold CTRL and then drag with your mouse # Mass select information, this is when you hold CTRL and then drag with your mouse
# to select multiple buildings # to select multiple buildings
massSelect: massSelect:
infoText: Press <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel. infoText: Press <keyCut> to cut, <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel.
# The "Upgrades" window # The "Upgrades" window
shop: shop:
@ -495,6 +491,10 @@ buildings:
storage: storage:
name: Storage name: Storage
description: Stores excess items, up to a given capacity. Can be used as an overflow gate. description: Stores excess items, up to a given capacity. Can be used as an overflow gate.
hub:
deliver: Deliver
toUnlock: to unlock
levelShortcut: LVL
storyRewards: storyRewards:
# Those are the rewards gained from completing the store # Those are the rewards gained from completing the store
@ -639,6 +639,10 @@ settings:
description: >- description: >-
Choose the game theme (light / dark). Choose the game theme (light / dark).
themes:
dark: Dark
light: Light
refreshRate: refreshRate:
title: Simulation Target title: Simulation Target
description: >- description: >-
@ -654,6 +658,17 @@ settings:
description: >- description: >-
Whether to offer hints and tutorials while playing. Also hides certain UI elements onto a given level to make it easier to get into the game. Whether to offer hints and tutorials while playing. Also hides certain UI elements onto a given level to make it easier to get into the game.
movementSpeed:
title: Movement speed
description: Changes how fast the view moves when using the keyboard.
speeds:
super_slow: Super slow
slow: Slow
regular: Regular
fast: Fast
super_fast: Super Fast
extremely_fast: Extremely Fast
keybindings: keybindings:
title: Keybindings title: Keybindings
hint: >- hint: >-
@ -714,9 +729,29 @@ keybindings:
placementDisableAutoOrientation: Disable automatic orientation placementDisableAutoOrientation: Disable automatic orientation
placeMultiple: Stay in placement mode placeMultiple: Stay in placement mode
placeInverse: Invert automatic belt orientation placeInverse: Invert automatic belt orientation
pasteLastBlueprint: Paste last blueprint
massSelectCut: Cut area
exportScreenshot: Export whole Base as Image
about: about:
title: About this Game title: About this Game
body: >-
This game is open source and developed by <a href="https://github.com/tobspr"
target="_blank">Tobias Springer</a> (this is me).<br><br>
If you want to contribute, check out <a href="<githublink>"
target="_blank">shapez.io on github</a>.<br><br>
This game wouldn't have been possible without the great discord community
around my games - You should really join the <a href="<discordlink>"
target="_blank">discord server</a>!<br><br>
The soundtrack was made by <a href="https://soundcloud.com/pettersumelius"
target="_blank">Peppsen</a> - He's awesome.<br><br>
Finally, huge thanks to my best friend <a
href="https://github.com/niklas-dahl" target="_blank">Niklas</a> - Without our
factorio sessions this game would never have existed.
changelog: changelog:
title: Changelog title: Changelog
@ -727,5 +762,6 @@ demo:
importingGames: Importing savegames importingGames: Importing savegames
oneGameLimit: Limited to one savegame oneGameLimit: Limited to one savegame
customizeKeybindings: Customizing Keybindings customizeKeybindings: Customizing Keybindings
exportingBase: Exporting whole Base as Image
settingNotAvailable: Not available in the demo. settingNotAvailable: Not available in the demo.

View File

@ -1 +1 @@
1.1.8 1.1.11

View File

@ -5334,6 +5334,14 @@ js-yaml@^3.13.1:
argparse "^1.0.7" argparse "^1.0.7"
esprima "^4.0.0" esprima "^4.0.0"
js-yaml@^3.4.2:
version "3.14.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482"
integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==
dependencies:
argparse "^1.0.7"
esprima "^4.0.0"
jsesc@^2.5.1: jsesc@^2.5.1:
version "2.5.2" version "2.5.2"
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
@ -5609,7 +5617,7 @@ lodash.uniq@^4.5.0:
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.3.0: lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.3.0:
version "4.17.15" version "4.17.15"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
@ -5744,6 +5752,11 @@ marked@^0.5.0:
resolved "https://registry.yarnpkg.com/marked/-/marked-0.5.2.tgz#3efdb27b1fd0ecec4f5aba362bddcd18120e5ba9" resolved "https://registry.yarnpkg.com/marked/-/marked-0.5.2.tgz#3efdb27b1fd0ecec4f5aba362bddcd18120e5ba9"
integrity sha512-fdZvBa7/vSQIZCi4uuwo2N3q+7jJURpMVCcbaX0S1Mg65WZ5ilXvC67MviJAsdjqqgD+CEq4RKo5AYGgINkVAA== integrity sha512-fdZvBa7/vSQIZCi4uuwo2N3q+7jJURpMVCcbaX0S1Mg65WZ5ilXvC67MviJAsdjqqgD+CEq4RKo5AYGgINkVAA==
match-all@^1.2.5:
version "1.2.5"
resolved "https://registry.yarnpkg.com/match-all/-/match-all-1.2.5.tgz#f709af311a7cb9ae464d9107a4f0fe08d3326eff"
integrity sha512-KW4trRDMYbVkAKZ1J655vh0931mk3XM1lIJ480TXUL3KBrOsZ6WpryYJELonvtXC1O4erLYB069uHidLkswbjQ==
md5.js@^1.3.4: md5.js@^1.3.4:
version "1.3.5" version "1.3.5"
resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
@ -9771,6 +9784,16 @@ yallist@^3.0.2:
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
yaml-js@^0.1.3:
version "0.1.5"
resolved "https://registry.yarnpkg.com/yaml-js/-/yaml-js-0.1.5.tgz#a01369010b3558d8aaed2394615dfd0780fd8fac"
integrity sha1-oBNpAQs1WNiq7SOUYV39B4D9j6w=
yaml@^1.10.0:
version "1.10.0"
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e"
integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==
yargs-parser@^13.1.0: yargs-parser@^13.1.0:
version "13.1.2" version "13.1.2"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38"
@ -9875,6 +9898,15 @@ yauzl@^2.4.2:
buffer-crc32 "~0.2.3" buffer-crc32 "~0.2.3"
fd-slicer "~1.1.0" fd-slicer "~1.1.0"
yawn-yaml@^1.5.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/yawn-yaml/-/yawn-yaml-1.5.0.tgz#95fba7544d5375fce3dc84514f12218ed0d2ebcb"
integrity sha512-sH2zX9K1QiWhWh9U19pye660qlzrEAd5c4ebw/6lqz17LZw7xYi7nqXlBoVLVtc2FZFXDKiJIsvVcKGYbLVyFQ==
dependencies:
js-yaml "^3.4.2"
lodash "^4.17.11"
yaml-js "^0.1.3"
yeast@0.1.2: yeast@0.1.2:
version "0.1.2" version "0.1.2"
resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"