+ `;
+ }
+
+ /**
+ * @param {HTMLElement} parent
+ * @param {Array} clickTrackers
+ */
+ bindEvents(parent, clickTrackers) {
+ this.element = this.getFormElement(parent);
+
+ for (let i = 0; i < this.items.length; ++i) {
+ const item = this.items[i];
+
+ const canvas = document.createElement("canvas");
+ canvas.width = 128;
+ canvas.height = 128;
+ const context = canvas.getContext("2d");
+ item.drawFullSizeOnCanvas(context, 128);
+ this.element.appendChild(canvas);
+
+ const detector = new ClickDetector(canvas, {});
+ clickTrackers.push(detector);
+ detector.click.add(() => {
+ this.chosenItem = item;
+ this.valueChosen.dispatch(item);
+ });
+ }
+ }
+
+ isValid() {
+ return true;
+ }
+
+ getValue() {
+ return null;
+ }
+
+ focus() {}
+}
diff --git a/src/js/core/utils.js b/src/js/core/utils.js
index 451b84bd..018a4173 100644
--- a/src/js/core/utils.js
+++ b/src/js/core/utils.js
@@ -667,3 +667,14 @@ export function safeModulo(n, m) {
export function smoothPulse(time) {
return Math.sin(time * 4) * 0.5 + 0.5;
}
+
+/**
+ * Fills in a tag
+ * @param {string} translation
+ * @param {string} link
+ */
+export function fillInLinkIntoTranslation(translation, link) {
+ return translation
+ .replace("", "")
+ .replace("", "");
+}
diff --git a/src/js/game/base_item.js b/src/js/game/base_item.js
index cbd89e7f..0075e6c1 100644
--- a/src/js/game/base_item.js
+++ b/src/js/game/base_item.js
@@ -1,82 +1,100 @@
-import { globalConfig } from "../core/config";
-import { DrawParameters } from "../core/draw_parameters";
-import { BasicSerializableObject } from "../savegame/serialization";
-
-/** @type {ItemType[]} **/
-export const itemTypes = ["shape", "color", "boolean"];
-
-/**
- * Class for items on belts etc. Not an entity for performance reasons
- */
-export class BaseItem extends BasicSerializableObject {
- constructor() {
- super();
- }
-
- static getId() {
- return "base_item";
- }
-
- /** @returns {object} */
- static getSchema() {
- return {};
- }
-
- /** @returns {ItemType} **/
- getItemType() {
- abstract;
- return "shape";
- }
-
- /**
- * Returns if the item equals the other itme
- * @param {BaseItem} other
- * @returns {boolean}
- */
- equals(other) {
- if (this.getItemType() !== other.getItemType()) {
- return false;
- }
- return this.equalsImpl(other);
- }
-
- /**
- * Override for custom comparison
- * @abstract
- * @param {BaseItem} other
- * @returns {boolean}
- */
- equalsImpl(other) {
- abstract;
- return false;
- }
-
- /**
- * Draws the item at the given position
- * @param {number} x
- * @param {number} y
- * @param {DrawParameters} parameters
- * @param {number=} diameter
- */
- drawItemCenteredClipped(x, y, parameters, diameter = globalConfig.defaultItemDiameter) {
- if (parameters.visibleRect.containsCircle(x, y, diameter / 2)) {
- this.drawItemCenteredImpl(x, y, parameters, diameter);
- }
- }
-
- /**
- * INTERNAL
- * @param {number} x
- * @param {number} y
- * @param {DrawParameters} parameters
- * @param {number=} diameter
- */
- drawItemCenteredImpl(x, y, parameters, diameter = globalConfig.defaultItemDiameter) {
- abstract;
- }
-
- getBackgroundColorAsResource() {
- abstract;
- return "";
- }
-}
+import { globalConfig } from "../core/config";
+import { DrawParameters } from "../core/draw_parameters";
+import { BasicSerializableObject } from "../savegame/serialization";
+
+/** @type {ItemType[]} **/
+export const itemTypes = ["shape", "color", "boolean"];
+
+/**
+ * Class for items on belts etc. Not an entity for performance reasons
+ */
+export class BaseItem extends BasicSerializableObject {
+ constructor() {
+ super();
+ }
+
+ static getId() {
+ return "base_item";
+ }
+
+ /** @returns {object} */
+ static getSchema() {
+ return {};
+ }
+
+ /** @returns {ItemType} **/
+ getItemType() {
+ abstract;
+ return "shape";
+ }
+
+ /**
+ * Returns a string id of the item
+ * @returns {string}
+ */
+ getAsCopyableKey() {
+ abstract;
+ return "";
+ }
+
+ /**
+ * Returns if the item equals the other itme
+ * @param {BaseItem} other
+ * @returns {boolean}
+ */
+ equals(other) {
+ if (this.getItemType() !== other.getItemType()) {
+ return false;
+ }
+ return this.equalsImpl(other);
+ }
+
+ /**
+ * Override for custom comparison
+ * @abstract
+ * @param {BaseItem} other
+ * @returns {boolean}
+ */
+ equalsImpl(other) {
+ abstract;
+ return false;
+ }
+
+ /**
+ * Draws the item to a canvas
+ * @param {CanvasRenderingContext2D} context
+ * @param {number} size
+ */
+ drawFullSizeOnCanvas(context, size) {
+ abstract;
+ }
+
+ /**
+ * Draws the item at the given position
+ * @param {number} x
+ * @param {number} y
+ * @param {DrawParameters} parameters
+ * @param {number=} diameter
+ */
+ drawItemCenteredClipped(x, y, parameters, diameter = globalConfig.defaultItemDiameter) {
+ if (parameters.visibleRect.containsCircle(x, y, diameter / 2)) {
+ this.drawItemCenteredImpl(x, y, parameters, diameter);
+ }
+ }
+
+ /**
+ * INTERNAL
+ * @param {number} x
+ * @param {number} y
+ * @param {DrawParameters} parameters
+ * @param {number=} diameter
+ */
+ drawItemCenteredImpl(x, y, parameters, diameter = globalConfig.defaultItemDiameter) {
+ abstract;
+ }
+
+ getBackgroundColorAsResource() {
+ abstract;
+ return "";
+ }
+}
diff --git a/src/js/game/blueprint.js b/src/js/game/blueprint.js
index a37ea20d..c26fb12f 100644
--- a/src/js/game/blueprint.js
+++ b/src/js/game/blueprint.js
@@ -1,12 +1,11 @@
+import { globalConfig } from "../core/config";
import { DrawParameters } from "../core/draw_parameters";
-import { Loader } from "../core/loader";
import { createLogger } from "../core/logging";
+import { findNiceIntegerValue } from "../core/utils";
import { Vector } from "../core/vector";
import { Entity } from "./entity";
import { GameRoot } from "./root";
-import { findNiceIntegerValue } from "../core/utils";
import { blueprintShape } from "./upgrades";
-import { globalConfig } from "../core/config";
const logger = createLogger("blueprint");
diff --git a/src/js/game/buildings/analyzer.js b/src/js/game/buildings/analyzer.js
index a18a3b56..8335f730 100644
--- a/src/js/game/buildings/analyzer.js
+++ b/src/js/game/buildings/analyzer.js
@@ -5,6 +5,7 @@ import { enumPinSlotType, WiredPinsComponent } from "../components/wired_pins";
import { Entity } from "../entity";
import { MetaBuilding } from "../meta_building";
import { GameRoot } from "../root";
+import { enumHubGoalRewards } from "../tutorial_goals";
const overlayMatrix = generateMatrixRotations([1, 1, 0, 1, 1, 1, 0, 1, 0]);
@@ -21,8 +22,7 @@ export class MetaAnalyzerBuilding extends MetaBuilding {
* @param {GameRoot} root
*/
getIsUnlocked(root) {
- // @todo
- return true;
+ return root.hubGoals.isRewardUnlocked(enumHubGoalRewards.reward_virtual_processing);
}
/** @returns {"wires"} **/
diff --git a/src/js/game/buildings/comparator.js b/src/js/game/buildings/comparator.js
index 0a284930..6738d514 100644
--- a/src/js/game/buildings/comparator.js
+++ b/src/js/game/buildings/comparator.js
@@ -4,6 +4,7 @@ import { enumPinSlotType, WiredPinsComponent } from "../components/wired_pins";
import { Entity } from "../entity";
import { MetaBuilding } from "../meta_building";
import { GameRoot } from "../root";
+import { enumHubGoalRewards } from "../tutorial_goals";
export class MetaComparatorBuilding extends MetaBuilding {
constructor() {
@@ -18,8 +19,7 @@ export class MetaComparatorBuilding extends MetaBuilding {
* @param {GameRoot} root
*/
getIsUnlocked(root) {
- // @todo
- return true;
+ return root.hubGoals.isRewardUnlocked(enumHubGoalRewards.reward_virtual_processing);
}
/** @returns {"wires"} **/
diff --git a/src/js/game/buildings/logic_gate.js b/src/js/game/buildings/logic_gate.js
index 1511f5ab..b61d4373 100644
--- a/src/js/game/buildings/logic_gate.js
+++ b/src/js/game/buildings/logic_gate.js
@@ -5,6 +5,7 @@ import { MetaBuilding, defaultBuildingVariant } from "../meta_building";
import { GameRoot } from "../root";
import { enumLogicGateType, LogicGateComponent } from "../components/logic_gate";
import { generateMatrixRotations } from "../../core/utils";
+import { enumHubGoalRewards } from "../tutorial_goals";
/** @enum {string} */
export const enumLogicGateVariants = {
@@ -48,8 +49,7 @@ export class MetaLogicGateBuilding extends MetaBuilding {
* @param {GameRoot} root
*/
getIsUnlocked(root) {
- // @todo
- return true;
+ return root.hubGoals.isRewardUnlocked(enumHubGoalRewards.reward_logic_gates);
}
/** @returns {"wires"} **/
diff --git a/src/js/game/buildings/transistor.js b/src/js/game/buildings/transistor.js
index 5a4be935..ebcfeac3 100644
--- a/src/js/game/buildings/transistor.js
+++ b/src/js/game/buildings/transistor.js
@@ -5,6 +5,7 @@ import { enumPinSlotType, WiredPinsComponent } from "../components/wired_pins";
import { Entity } from "../entity";
import { defaultBuildingVariant, MetaBuilding } from "../meta_building";
import { GameRoot } from "../root";
+import { enumHubGoalRewards } from "../tutorial_goals";
/** @enum {string} */
export const enumTransistorVariants = {
@@ -29,8 +30,7 @@ export class MetaTransistorBuilding extends MetaBuilding {
* @param {GameRoot} root
*/
getIsUnlocked(root) {
- // @todo
- return true;
+ return root.hubGoals.isRewardUnlocked(enumHubGoalRewards.reward_logic_gates);
}
/** @returns {"wires"} **/
diff --git a/src/js/game/buildings/virtual_processor.js b/src/js/game/buildings/virtual_processor.js
index fb0ef0e3..1d9f1135 100644
--- a/src/js/game/buildings/virtual_processor.js
+++ b/src/js/game/buildings/virtual_processor.js
@@ -110,7 +110,12 @@ export class MetaVirtualProcessorBuilding extends MetaBuilding {
pinComp.setSlots([
{
pos: new Vector(0, 0),
- direction: enumDirection.top,
+ direction: enumDirection.left,
+ type: enumPinSlotType.logicalEjector,
+ },
+ {
+ pos: new Vector(0, 0),
+ direction: enumDirection.right,
type: enumPinSlotType.logicalEjector,
},
{
diff --git a/src/js/game/buildings/wire_tunnel.js b/src/js/game/buildings/wire_tunnel.js
index 05d595df..296d3a35 100644
--- a/src/js/game/buildings/wire_tunnel.js
+++ b/src/js/game/buildings/wire_tunnel.js
@@ -53,6 +53,6 @@ export class MetaWireTunnelBuilding extends MetaBuilding {
* @param {Entity} entity
*/
setupEntityComponents(entity) {
- entity.addComponent(new WireTunnelComponent({}));
+ entity.addComponent(new WireTunnelComponent());
}
}
diff --git a/src/js/game/hub_goals.js b/src/js/game/hub_goals.js
index 2debeb5d..8b7be917 100644
--- a/src/js/game/hub_goals.js
+++ b/src/js/game/hub_goals.js
@@ -1,8 +1,10 @@
import { globalConfig } from "../core/config";
+import { RandomNumberGenerator } from "../core/rng";
import { clamp, findNiceIntegerValue, randomChoice, randomInt } from "../core/utils";
import { BasicSerializableObject, types } from "../savegame/serialization";
import { enumColors } from "./colors";
import { enumItemProcessorTypes } from "./components/item_processor";
+import { enumAnalyticsDataSource } from "./production_analytics";
import { GameRoot } from "./root";
import { enumSubShape, ShapeDefinition } from "./shape_definition";
import { enumHubGoalRewards, tutorialGoals } from "./tutorial_goals";
@@ -18,12 +20,6 @@ export class HubGoals extends BasicSerializableObject {
level: types.uint,
storedShapes: types.keyValueMap(types.uint),
upgradeLevels: types.keyValueMap(types.uint),
-
- currentGoal: types.structured({
- definition: types.knownType(ShapeDefinition),
- required: types.uint,
- reward: types.nullable(types.enum(enumHubGoalRewards)),
- }),
};
}
@@ -53,15 +49,7 @@ export class HubGoals extends BasicSerializableObject {
}
// Compute current goal
- const goal = tutorialGoals[this.level - 1];
- if (goal) {
- this.currentGoal = {
- /** @type {ShapeDefinition} */
- definition: this.root.shapeDefinitionMgr.getShapeFromShortKey(goal.shape),
- required: goal.required,
- reward: goal.reward,
- };
- }
+ this.computeNextGoal();
}
/**
@@ -92,6 +80,11 @@ export class HubGoals extends BasicSerializableObject {
*/
this.upgradeLevels = {};
+ // Reset levels
+ for (const key in UPGRADES) {
+ this.upgradeLevels[key] = 0;
+ }
+
/**
* Stores the improvements for all upgrades
* @type {Object}
@@ -101,7 +94,7 @@ export class HubGoals extends BasicSerializableObject {
this.upgradeImprovements[key] = 1;
}
- this.createNextGoal();
+ this.computeNextGoal();
// Allow quickly switching goals in dev mode
if (G_IS_DEV) {
@@ -150,6 +143,13 @@ export class HubGoals extends BasicSerializableObject {
* Returns how much of the current goal was already delivered
*/
getCurrentGoalDelivered() {
+ if (this.currentGoal.throughputOnly) {
+ return this.root.productionAnalytics.getCurrentShapeRate(
+ enumAnalyticsDataSource.delivered,
+ this.currentGoal.definition
+ );
+ }
+
return this.getShapesStored(this.currentGoal.definition);
}
@@ -184,9 +184,8 @@ export class HubGoals extends BasicSerializableObject {
this.root.signals.shapeDelivered.dispatch(definition);
// Check if we have enough for the next level
- const targetHash = this.currentGoal.definition.getHash();
if (
- this.storedShapes[targetHash] >= this.currentGoal.required ||
+ this.getCurrentGoalDelivered() >= this.currentGoal.required ||
(G_IS_DEV && globalConfig.debug.rewardsInstant)
) {
this.onGoalCompleted();
@@ -196,24 +195,28 @@ export class HubGoals extends BasicSerializableObject {
/**
* Creates the next goal
*/
- createNextGoal() {
+ computeNextGoal() {
const storyIndex = this.level - 1;
if (storyIndex < tutorialGoals.length) {
- const { shape, required, reward } = tutorialGoals[storyIndex];
+ const { shape, required, reward, throughputOnly } = tutorialGoals[storyIndex];
this.currentGoal = {
/** @type {ShapeDefinition} */
definition: this.root.shapeDefinitionMgr.getShapeFromShortKey(shape),
required,
reward,
+ throughputOnly,
};
return;
}
+ const required = 4 + (this.level - 27) * 0.25;
+
this.currentGoal = {
/** @type {ShapeDefinition} */
- definition: this.createRandomShape(),
- required: findNiceIntegerValue(1000 + Math.pow(this.level * 2000, 0.8)),
+ definition: this.computeFreeplayShape(this.level),
+ required,
reward: enumHubGoalRewards.no_reward_freeplay,
+ throughputOnly: true,
};
}
@@ -226,7 +229,7 @@ export class HubGoals extends BasicSerializableObject {
this.root.app.gameAnalytics.handleLevelCompleted(this.level);
++this.level;
- this.createNextGoal();
+ this.computeNextGoal();
this.root.signals.storyGoalCompleted.dispatch(this.level - 1, reward);
}
@@ -320,15 +323,85 @@ export class HubGoals extends BasicSerializableObject {
}
/**
+ * Picks random colors which are close to each other
+ * @param {RandomNumberGenerator} rng
+ */
+ generateRandomColorSet(rng, allowUncolored = false) {
+ const colorWheel = [
+ enumColors.red,
+ enumColors.yellow,
+ enumColors.green,
+ enumColors.cyan,
+ enumColors.blue,
+ enumColors.purple,
+ enumColors.red,
+ enumColors.yellow,
+ ];
+
+ const universalColors = [enumColors.white];
+ if (allowUncolored) {
+ universalColors.push(enumColors.uncolored);
+ }
+ const index = rng.nextIntRangeInclusive(0, colorWheel.length - 3);
+ const pickedColors = colorWheel.slice(index, index + 3);
+ pickedColors.push(rng.choice(universalColors));
+ return pickedColors;
+ }
+
+ /**
+ * Creates a (seeded) random shape
+ * @param {number} level
* @returns {ShapeDefinition}
*/
- createRandomShape() {
+ computeFreeplayShape(level) {
const layerCount = clamp(this.level / 25, 2, 4);
+
/** @type {Array} */
let layers = [];
- const randomColor = () => randomChoice(Object.values(enumColors));
- const randomShape = () => randomChoice(Object.values(enumSubShape));
+ const rng = new RandomNumberGenerator(this.root.map.seed + "/" + level);
+
+ const colors = this.generateRandomColorSet(rng, level > 35);
+
+ let pickedSymmetry = null; // pairs of quadrants that must be the same
+ let availableShapes = [enumSubShape.rect, enumSubShape.circle, enumSubShape.star];
+ if (rng.next() < 0.5) {
+ pickedSymmetry = [
+ // radial symmetry
+ [0, 2],
+ [1, 3],
+ ];
+ availableShapes.push(enumSubShape.windmill); // windmill looks good only in radial symmetry
+ } else {
+ const symmetries = [
+ [
+ // horizontal axis
+ [0, 3],
+ [1, 2],
+ ],
+ [
+ // vertical axis
+ [0, 1],
+ [2, 3],
+ ],
+ [
+ // diagonal axis
+ [0, 2],
+ [1],
+ [3],
+ ],
+ [
+ // other diagonal axis
+ [1, 3],
+ [0],
+ [2],
+ ],
+ ];
+ pickedSymmetry = rng.choice(symmetries);
+ }
+
+ const randomColor = () => rng.choice(colors);
+ const randomShape = () => rng.choice(Object.values(enumSubShape));
let anyIsMissingTwo = false;
@@ -336,23 +409,24 @@ export class HubGoals extends BasicSerializableObject {
/** @type {import("./shape_definition").ShapeLayer} */
const layer = [null, null, null, null];
- for (let quad = 0; quad < 4; ++quad) {
- layer[quad] = {
- subShape: randomShape(),
- color: randomColor(),
- };
- }
-
- // Sometimes shapes are missing
- if (Math.random() > 0.85) {
- layer[randomInt(0, 3)] = null;
+ for (let j = 0; j < pickedSymmetry.length; ++j) {
+ const group = pickedSymmetry[j];
+ const shape = randomShape();
+ const color = randomColor();
+ for (let k = 0; k < group.length; ++k) {
+ const quad = group[k];
+ layer[quad] = {
+ subShape: shape,
+ color,
+ };
+ }
}
// Sometimes they actually are missing *two* ones!
// Make sure at max only one layer is missing it though, otherwise we could
// create an uncreateable shape
- if (Math.random() > 0.95 && !anyIsMissingTwo) {
- layer[randomInt(0, 3)] = null;
+ if (level > 75 && rng.next() > 0.95 && !anyIsMissingTwo) {
+ layer[rng.nextIntRange(0, 4)] = null;
anyIsMissingTwo = true;
}
diff --git a/src/js/game/hud/hud.js b/src/js/game/hud/hud.js
index e0ddfd9d..3689d41a 100644
--- a/src/js/game/hud/hud.js
+++ b/src/js/game/hud/hud.js
@@ -44,6 +44,8 @@ import { HUDWireInfo } from "./parts/wire_info";
import { HUDLeverToggle } from "./parts/lever_toggle";
import { HUDLayerPreview } from "./parts/layer_preview";
import { HUDMinerHighlight } from "./parts/miner_highlight";
+import { HUDBetaOverlay } from "./parts/beta_overlay";
+import { HUDPerformanceWarning } from "./parts/performance_warning";
export class GameHUD {
/**
@@ -75,7 +77,6 @@ export class GameHUD {
pinnedShapes: new HUDPinnedShapes(this.root),
notifications: new HUDNotifications(this.root),
settingsMenu: new HUDSettingsMenu(this.root),
- // betaOverlay: new HUDBetaOverlay(this.root),
debugInfo: new HUDDebugInfo(this.root),
dialogs: new HUDModalDialogs(this.root),
screenshotExporter: new HUDScreenshotExporter(this.root),
@@ -85,6 +86,7 @@ export class GameHUD {
layerPreview: new HUDLayerPreview(this.root),
minerHighlight: new HUDMinerHighlight(this.root),
+ performanceWarning: new HUDPerformanceWarning(this.root),
// Typing hints
/* typehints:start */
@@ -137,6 +139,10 @@ export class GameHUD {
this.parts.sandboxController = new HUDSandboxController(this.root);
}
+ if (!G_IS_RELEASE) {
+ this.parts.betaOverlay = new HUDBetaOverlay(this.root);
+ }
+
const frag = document.createDocumentFragment();
for (const key in this.parts) {
this.parts[key].createElements(frag);
diff --git a/src/js/game/hud/parts/beta_overlay.js b/src/js/game/hud/parts/beta_overlay.js
index 517a15b7..e6c52a8b 100644
--- a/src/js/game/hud/parts/beta_overlay.js
+++ b/src/js/game/hud/parts/beta_overlay.js
@@ -3,7 +3,12 @@ import { makeDiv } from "../../../core/utils";
export class HUDBetaOverlay extends BaseHUDPart {
createElements(parent) {
- this.element = makeDiv(parent, "ingame_HUD_BetaOverlay", [], "CLOSED BETA");
+ this.element = makeDiv(
+ parent,
+ "ingame_HUD_BetaOverlay",
+ [],
+ "
CLOSED BETA VERSION
This version is unstable, might crash and is not final!"
+ );
}
initialize() {}
diff --git a/src/js/game/hud/parts/building_placer_logic.js b/src/js/game/hud/parts/building_placer_logic.js
index d5f69277..4f3a0570 100644
--- a/src/js/game/hud/parts/building_placer_logic.js
+++ b/src/js/game/hud/parts/building_placer_logic.js
@@ -334,7 +334,11 @@ export class HUDBuildingPlacerLogic extends BaseHUDPart {
const tileBelow = this.root.map.getLowerLayerContentXY(tile.x, tile.y);
// Check if there's a shape or color item below, if so select the miner
- if (tileBelow && this.root.app.settings.getAllSettings().pickMinerOnPatch) {
+ if (
+ tileBelow &&
+ this.root.app.settings.getAllSettings().pickMinerOnPatch &&
+ this.root.currentLayer === "regular"
+ ) {
this.currentMetaBuilding.set(gMetaBuildingRegistry.findByClass(MetaMinerBuilding));
// Select chained miner if available, since that's always desired once unlocked
diff --git a/src/js/game/hud/parts/performance_warning.js b/src/js/game/hud/parts/performance_warning.js
new file mode 100644
index 00000000..4875acc8
--- /dev/null
+++ b/src/js/game/hud/parts/performance_warning.js
@@ -0,0 +1,16 @@
+import { T } from "../../../translations";
+import { BaseHUDPart } from "../base_hud_part";
+
+export class HUDPerformanceWarning extends BaseHUDPart {
+ initialize() {
+ this.warningShown = false;
+ this.root.signals.entityManuallyPlaced.add(this.checkAfterPlace, this);
+ }
+
+ checkAfterPlace() {
+ if (!this.warningShown && this.root.entityMgr.entities.length > 10000) {
+ this.root.hud.parts.dialogs.showInfo(T.dialogs.entityWarning.title, T.dialogs.entityWarning.desc);
+ this.warningShown = true;
+ }
+ }
+}
diff --git a/src/js/game/hud/parts/pinned_shapes.js b/src/js/game/hud/parts/pinned_shapes.js
index c54554bf..941a679f 100644
--- a/src/js/game/hud/parts/pinned_shapes.js
+++ b/src/js/game/hud/parts/pinned_shapes.js
@@ -4,6 +4,8 @@ import { ShapeDefinition } from "../../shape_definition";
import { BaseHUDPart } from "../base_hud_part";
import { blueprintShape, UPGRADES } from "../../upgrades";
import { enumHubGoalRewards } from "../../tutorial_goals";
+import { enumAnalyticsDataSource } from "../../production_analytics";
+import { T } from "../../../translations";
/**
* Manages the pinned shapes on the left side of the screen
@@ -22,11 +24,13 @@ export class HUDPinnedShapes extends BaseHUDPart {
* convenient. Also allows for cleaning up handles.
* @type {Array<{
* key: string,
+ * definition: ShapeDefinition,
* amountLabel: HTMLElement,
* lastRenderedValue: string,
* element: HTMLElement,
* detector?: ClickDetector,
- * infoDetector?: ClickDetector
+ * infoDetector?: ClickDetector,
+ * throughputOnly?: boolean
* }>}
*/
this.handles = [];
@@ -163,29 +167,40 @@ export class HUDPinnedShapes extends BaseHUDPart {
this.handles = [];
// Pin story goal
- this.internalPinShape(currentKey, false, "goal");
+ this.internalPinShape({
+ key: currentKey,
+ canUnpin: false,
+ className: "goal",
+ throughputOnly: currentGoal.throughputOnly,
+ });
// Pin blueprint shape as well
if (this.root.hubGoals.isRewardUnlocked(enumHubGoalRewards.reward_blueprints)) {
- this.internalPinShape(blueprintShape, false, "blueprint");
+ this.internalPinShape({
+ key: blueprintShape,
+ canUnpin: false,
+ className: "blueprint",
+ });
}
// Pin manually pinned shapes
for (let i = 0; i < this.pinnedShapes.length; ++i) {
const key = this.pinnedShapes[i];
if (key !== currentKey) {
- this.internalPinShape(key);
+ this.internalPinShape({ key });
}
}
}
/**
* Pins a new shape
- * @param {string} key
- * @param {boolean} canUnpin
- * @param {string=} className
+ * @param {object} param0
+ * @param {string} param0.key
+ * @param {boolean=} param0.canUnpin
+ * @param {string=} param0.className
+ * @param {boolean=} param0.throughputOnly
*/
- internalPinShape(key, canUnpin = true, className = null) {
+ internalPinShape({ key, canUnpin = true, className = null, throughputOnly = false }) {
const definition = this.root.shapeDefinitionMgr.getShapeFromShortKey(key);
const element = makeDiv(this.element, null, ["shape"]);
@@ -229,11 +244,13 @@ export class HUDPinnedShapes extends BaseHUDPart {
this.handles.push({
key,
+ definition,
element,
amountLabel,
lastRenderedValue: "",
detector,
infoDetector,
+ throughputOnly,
});
}
@@ -244,8 +261,20 @@ export class HUDPinnedShapes extends BaseHUDPart {
for (let i = 0; i < this.handles.length; ++i) {
const handle = this.handles[i];
- const currentValue = this.root.hubGoals.getShapesStoredByKey(handle.key);
- const currentValueFormatted = formatBigNumber(currentValue);
+ let currentValue = this.root.hubGoals.getShapesStoredByKey(handle.key);
+ let currentValueFormatted = formatBigNumber(currentValue);
+
+ if (handle.throughputOnly) {
+ currentValue = this.root.productionAnalytics.getCurrentShapeRate(
+ enumAnalyticsDataSource.delivered,
+ handle.definition
+ );
+ currentValueFormatted = T.ingame.statistics.shapesDisplayUnits.second.replace(
+ "",
+ String(currentValue)
+ );
+ }
+
if (currentValueFormatted !== handle.lastRenderedValue) {
handle.lastRenderedValue = currentValueFormatted;
handle.amountLabel.innerText = currentValueFormatted;
diff --git a/src/js/game/hud/parts/sandbox_controller.js b/src/js/game/hud/parts/sandbox_controller.js
index c382cf84..f71b87e0 100644
--- a/src/js/game/hud/parts/sandbox_controller.js
+++ b/src/js/game/hud/parts/sandbox_controller.js
@@ -113,7 +113,7 @@ export class HUDSandboxController extends BaseHUDPart {
modifyLevel(amount) {
const hubGoals = this.root.hubGoals;
hubGoals.level = Math.max(1, hubGoals.level + amount);
- hubGoals.createNextGoal();
+ hubGoals.computeNextGoal();
// Clear all shapes of this level
hubGoals.storedShapes[hubGoals.currentGoal.definition.getHash()] = 0;
diff --git a/src/js/game/hud/parts/shop.js b/src/js/game/hud/parts/shop.js
index cfa78c29..6c1bdc3f 100644
--- a/src/js/game/hud/parts/shop.js
+++ b/src/js/game/hud/parts/shop.js
@@ -90,17 +90,15 @@ export class HUDShop extends BaseHUDPart {
// Max level
handle.elemDescription.innerText = T.ingame.shop.maximumLevel.replace(
"",
- currentTierMultiplier.toString()
+ formatBigNumber(currentTierMultiplier)
);
continue;
}
// Set description
handle.elemDescription.innerText = T.shopUpgrades[upgradeId].description
- .replace("", currentTierMultiplier.toString())
- .replace("", (currentTierMultiplier + tierHandle.improvement).toString())
- // Backwards compatibility
- .replace("", (tierHandle.improvement * 100.0).toString());
+ .replace("", formatBigNumber(currentTierMultiplier))
+ .replace("", formatBigNumber(currentTierMultiplier + tierHandle.improvement));
tierHandle.required.forEach(({ shape, amount }) => {
const container = makeDiv(handle.elemRequirements, null, ["requirement"]);
diff --git a/src/js/game/hud/parts/unlock_notification.js b/src/js/game/hud/parts/unlock_notification.js
index d88e2dbb..32c42f67 100644
--- a/src/js/game/hud/parts/unlock_notification.js
+++ b/src/js/game/hud/parts/unlock_notification.js
@@ -4,11 +4,12 @@ import { makeDiv } from "../../../core/utils";
import { SOUNDS } from "../../../platform/sound";
import { T } from "../../../translations";
import { defaultBuildingVariant } from "../../meta_building";
-import { enumHubGoalRewards } from "../../tutorial_goals";
+import { enumHubGoalRewards, tutorialGoals } from "../../tutorial_goals";
import { BaseHUDPart } from "../base_hud_part";
import { DynamicDomAttach } from "../dynamic_dom_attach";
import { enumHubGoalRewardsToContentUnlocked } from "../../tutorial_goals_mappings";
import { InputReceiver } from "../../../core/input_receiver";
+import { enumNotificationType } from "./notifications";
export class HUDUnlockNotification extends BaseHUDPart {
initialize() {
@@ -50,6 +51,14 @@ export class HUDUnlockNotification extends BaseHUDPart {
* @param {enumHubGoalRewards} reward
*/
showForLevel(level, reward) {
+ if (level > tutorialGoals.length) {
+ this.root.hud.signals.notification.dispatch(
+ T.ingame.notifications.freeplayLevelComplete.replace("", String(level)),
+ enumNotificationType.success
+ );
+ return;
+ }
+
this.root.app.inputMgr.makeSureAttachedAndOnTop(this.inputReciever);
this.elemTitle.innerText = T.ingame.levelCompleteNotification.levelTitle.replace(
"",
diff --git a/src/js/game/hud/parts/waypoints.js b/src/js/game/hud/parts/waypoints.js
index a585a4d1..1aed7df2 100644
--- a/src/js/game/hud/parts/waypoints.js
+++ b/src/js/game/hud/parts/waypoints.js
@@ -1,12 +1,18 @@
import { makeOffscreenBuffer } from "../../../core/buffer_utils";
-import { globalConfig, IS_DEMO } from "../../../core/config";
+import { globalConfig, IS_DEMO, THIRDPARTY_URLS } from "../../../core/config";
import { DrawParameters } from "../../../core/draw_parameters";
import { Loader } from "../../../core/loader";
import { DialogWithForm } from "../../../core/modal_dialog_elements";
import { FormElementInput } from "../../../core/modal_dialog_forms";
import { Rectangle } from "../../../core/rectangle";
import { STOP_PROPAGATION } from "../../../core/signal";
-import { arrayDeleteValue, lerp, makeDiv, removeAllChildren } from "../../../core/utils";
+import {
+ arrayDeleteValue,
+ fillInLinkIntoTranslation,
+ lerp,
+ makeDiv,
+ removeAllChildren,
+} from "../../../core/utils";
import { Vector } from "../../../core/vector";
import { T } from "../../../translations";
import { BaseItem } from "../../base_item";
@@ -272,7 +278,7 @@ export class HUDWaypoints extends BaseHUDPart {
const dialog = new DialogWithForm({
app: this.root.app,
title: waypoint ? T.dialogs.createMarker.titleEdit : T.dialogs.createMarker.title,
- desc: T.dialogs.createMarker.desc,
+ desc: fillInLinkIntoTranslation(T.dialogs.createMarker.desc, THIRDPARTY_URLS.shapeViewer),
formElements: [markerNameInput],
buttons: waypoint ? ["delete:bad", "cancel", "ok:good"] : ["cancel", "ok:good"],
});
diff --git a/src/js/game/hud/parts/wires_overlay.js b/src/js/game/hud/parts/wires_overlay.js
index 7d856d5f..7d956eba 100644
--- a/src/js/game/hud/parts/wires_overlay.js
+++ b/src/js/game/hud/parts/wires_overlay.js
@@ -1,13 +1,14 @@
import { makeOffscreenBuffer } from "../../../core/buffer_utils";
import { globalConfig } from "../../../core/config";
import { DrawParameters } from "../../../core/draw_parameters";
-import { KEYMAPPINGS } from "../../key_action_mapper";
-import { THEME } from "../../theme";
-import { BaseHUDPart } from "../base_hud_part";
import { Loader } from "../../../core/loader";
import { lerp } from "../../../core/utils";
+import { SOUNDS } from "../../../platform/sound";
+import { KEYMAPPINGS } from "../../key_action_mapper";
import { enumHubGoalRewards } from "../../tutorial_goals";
+import { BaseHUDPart } from "../base_hud_part";
+const copy = require("clipboard-copy");
const wiresBackgroundDpi = 4;
export class HUDWiresOverlay extends BaseHUDPart {
@@ -16,6 +17,7 @@ export class HUDWiresOverlay extends BaseHUDPart {
initialize() {
// Probably not the best location, but the one which makes most sense
this.root.keyMapper.getBinding(KEYMAPPINGS.ingame.switchLayers).add(this.switchLayers, this);
+ this.root.keyMapper.getBinding(KEYMAPPINGS.placement.copyWireValue).add(this.copyWireValue, this);
this.generateTilePattern();
@@ -54,7 +56,53 @@ export class HUDWiresOverlay extends BaseHUDPart {
update() {
const desiredAlpha = this.root.currentLayer === "wires" ? 1.0 : 0.0;
- this.currentAlpha = lerp(this.currentAlpha, desiredAlpha, 0.12);
+
+ // On low performance, skip the fade
+ if (this.root.entityMgr.entities.length > 5000 || this.root.dynamicTickrate.averageFps < 50) {
+ this.currentAlpha = desiredAlpha;
+ } else {
+ this.currentAlpha = lerp(this.currentAlpha, desiredAlpha, 0.12);
+ }
+ }
+
+ /**
+ * Copies the wires value below the cursor
+ */
+ copyWireValue() {
+ if (this.root.currentLayer !== "wires") {
+ return;
+ }
+
+ const mousePos = this.root.app.mousePosition;
+ if (!mousePos) {
+ return;
+ }
+
+ const tile = this.root.camera.screenToWorld(mousePos).toTileSpace();
+ const contents = this.root.map.getLayerContentXY(tile.x, tile.y, "wires");
+ if (!contents) {
+ return;
+ }
+
+ let value = null;
+ if (contents.components.Wire) {
+ const network = contents.components.Wire.linkedNetwork;
+ if (network && network.hasValue()) {
+ value = network.currentValue;
+ }
+ }
+
+ if (contents.components.ConstantSignal) {
+ value = contents.components.ConstantSignal.signal;
+ }
+
+ if (value) {
+ copy(value.getAsCopyableKey());
+ this.root.soundProxy.playUi(SOUNDS.copy);
+ } else {
+ copy("");
+ this.root.soundProxy.playUiError();
+ }
}
/**
diff --git a/src/js/game/hud/parts/wires_toolbar.js b/src/js/game/hud/parts/wires_toolbar.js
index 2e43386d..e44d7186 100644
--- a/src/js/game/hud/parts/wires_toolbar.js
+++ b/src/js/game/hud/parts/wires_toolbar.js
@@ -8,6 +8,9 @@ import { MetaVirtualProcessorBuilding } from "../../buildings/virtual_processor"
import { MetaTransistorBuilding } from "../../buildings/transistor";
import { MetaAnalyzerBuilding } from "../../buildings/analyzer";
import { MetaComparatorBuilding } from "../../buildings/comparator";
+import { MetaReaderBuilding } from "../../buildings/reader";
+import { MetaFilterBuilding } from "../../buildings/filter";
+import { MetaDisplayBuilding } from "../../buildings/display";
export class HUDWiresToolbar extends HUDBaseToolbar {
constructor(root) {
@@ -16,12 +19,17 @@ export class HUDWiresToolbar extends HUDBaseToolbar {
MetaWireBuilding,
MetaWireTunnelBuilding,
MetaConstantSignalBuilding,
- MetaLeverBuilding,
- MetaTransistorBuilding,
MetaLogicGateBuilding,
- MetaAnalyzerBuilding,
MetaVirtualProcessorBuilding,
+ MetaAnalyzerBuilding,
MetaComparatorBuilding,
+ MetaTransistorBuilding,
+ ],
+ secondaryBuildings: [
+ MetaReaderBuilding,
+ MetaLeverBuilding,
+ MetaFilterBuilding,
+ MetaDisplayBuilding,
],
visibilityCondition: () =>
!this.root.camera.getIsMapOverlayActive() && this.root.currentLayer === "wires",
diff --git a/src/js/game/items/boolean_item.js b/src/js/game/items/boolean_item.js
index 77e8bbb3..9ee3e3e5 100644
--- a/src/js/game/items/boolean_item.js
+++ b/src/js/game/items/boolean_item.js
@@ -26,6 +26,13 @@ export class BooleanItem extends BaseItem {
return "boolean";
}
+ /**
+ * @returns {string}
+ */
+ getAsCopyableKey() {
+ return this.value ? "1" : "0";
+ }
+
/**
* @param {number} value
*/
@@ -56,6 +63,21 @@ export class BooleanItem extends BaseItem {
}
sprite.drawCachedCentered(parameters, x, y, diameter);
}
+
+ /**
+ * Draws the item to a canvas
+ * @param {CanvasRenderingContext2D} context
+ * @param {number} size
+ */
+ drawFullSizeOnCanvas(context, size) {
+ let sprite;
+ if (this.value) {
+ sprite = Loader.getSprite("sprites/wires/boolean_true.png");
+ } else {
+ sprite = Loader.getSprite("sprites/wires/boolean_false.png");
+ }
+ sprite.drawCentered(context, size / 2, size / 2, size);
+ }
}
export const BOOL_FALSE_SINGLETON = new BooleanItem(0);
diff --git a/src/js/game/items/color_item.js b/src/js/game/items/color_item.js
index 02104282..fb7f1701 100644
--- a/src/js/game/items/color_item.js
+++ b/src/js/game/items/color_item.js
@@ -28,6 +28,13 @@ export class ColorItem extends BaseItem {
return "color";
}
+ /**
+ * @returns {string}
+ */
+ getAsCopyableKey() {
+ return this.color;
+ }
+
/**
* @param {BaseItem} other
*/
@@ -47,6 +54,18 @@ export class ColorItem extends BaseItem {
return THEME.map.resources[this.color];
}
+ /**
+ * Draws the item to a canvas
+ * @param {CanvasRenderingContext2D} context
+ * @param {number} size
+ */
+ drawFullSizeOnCanvas(context, size) {
+ if (!this.cachedSprite) {
+ this.cachedSprite = Loader.getSprite("sprites/colors/" + this.color + ".png");
+ }
+ this.cachedSprite.drawCentered(context, size / 2, size / 2, size);
+ }
+
/**
* @param {number} x
* @param {number} y
diff --git a/src/js/game/items/shape_item.js b/src/js/game/items/shape_item.js
index d99a7251..d61b8f2e 100644
--- a/src/js/game/items/shape_item.js
+++ b/src/js/game/items/shape_item.js
@@ -1,62 +1,78 @@
-import { DrawParameters } from "../../core/draw_parameters";
-import { types } from "../../savegame/serialization";
-import { BaseItem } from "../base_item";
-import { ShapeDefinition } from "../shape_definition";
-import { THEME } from "../theme";
-import { globalConfig } from "../../core/config";
-
-export class ShapeItem extends BaseItem {
- static getId() {
- return "shape";
- }
-
- static getSchema() {
- return types.string;
- }
-
- serialize() {
- return this.definition.getHash();
- }
-
- deserialize(data) {
- this.definition = ShapeDefinition.fromShortKey(data);
- }
-
- /** @returns {"shape"} **/
- getItemType() {
- return "shape";
- }
-
- /**
- * @param {BaseItem} other
- */
- equalsImpl(other) {
- return this.definition.getHash() === /** @type {ShapeItem} */ (other).definition.getHash();
- }
-
- /**
- * @param {ShapeDefinition} definition
- */
- constructor(definition) {
- super();
-
- /**
- * This property must not be modified on runtime, you have to clone the class in order to change the definition
- */
- this.definition = definition;
- }
-
- getBackgroundColorAsResource() {
- return THEME.map.resources.shape;
- }
-
- /**
- * @param {number} x
- * @param {number} y
- * @param {DrawParameters} parameters
- * @param {number=} diameter
- */
- drawItemCenteredImpl(x, y, parameters, diameter = globalConfig.defaultItemDiameter) {
- this.definition.drawCentered(x, y, parameters, diameter);
- }
-}
+import { DrawParameters } from "../../core/draw_parameters";
+import { types } from "../../savegame/serialization";
+import { BaseItem } from "../base_item";
+import { ShapeDefinition } from "../shape_definition";
+import { THEME } from "../theme";
+import { globalConfig } from "../../core/config";
+
+export class ShapeItem extends BaseItem {
+ static getId() {
+ return "shape";
+ }
+
+ static getSchema() {
+ return types.string;
+ }
+
+ serialize() {
+ return this.definition.getHash();
+ }
+
+ deserialize(data) {
+ this.definition = ShapeDefinition.fromShortKey(data);
+ }
+
+ /** @returns {"shape"} **/
+ getItemType() {
+ return "shape";
+ }
+
+ /**
+ * @returns {string}
+ */
+ getAsCopyableKey() {
+ return this.definition.getHash();
+ }
+
+ /**
+ * @param {BaseItem} other
+ */
+ equalsImpl(other) {
+ return this.definition.getHash() === /** @type {ShapeItem} */ (other).definition.getHash();
+ }
+
+ /**
+ * @param {ShapeDefinition} definition
+ */
+ constructor(definition) {
+ super();
+
+ /**
+ * This property must not be modified on runtime, you have to clone the class in order to change the definition
+ */
+ this.definition = definition;
+ }
+
+ getBackgroundColorAsResource() {
+ return THEME.map.resources.shape;
+ }
+
+ /**
+ * Draws the item to a canvas
+ * @param {CanvasRenderingContext2D} context
+ * @param {number} size
+ */
+ drawFullSizeOnCanvas(context, size) {
+ this.definition.drawFullSizeOnCanvas(context, size);
+ }
+
+ /**
+ * @param {number} x
+ * @param {number} y
+ * @param {DrawParameters} parameters
+ * @param {number=} diameter
+ */
+ drawItemCenteredImpl(x, y, parameters, diameter = globalConfig.defaultItemDiameter) {
+ this.definition.drawCentered(x, y, parameters, diameter);
+ }
+}
diff --git a/src/js/game/key_action_mapper.js b/src/js/game/key_action_mapper.js
index 7a519839..5114ea95 100644
--- a/src/js/game/key_action_mapper.js
+++ b/src/js/game/key_action_mapper.js
@@ -67,12 +67,11 @@ export const KEYMAPPINGS = {
wire: { keyCode: key("1") },
wire_tunnel: { keyCode: key("2") },
constant_signal: { keyCode: key("3") },
- lever_wires: { keyCode: key("4") },
- logic_gate: { keyCode: key("5") },
- virtual_processor: { keyCode: key("6") },
- transistor: { keyCode: key("7") },
- analyzer: { keyCode: key("8") },
- comparator: { keyCode: key("9") },
+ logic_gate: { keyCode: key("4") },
+ virtual_processor: { keyCode: key("5") },
+ analyzer: { keyCode: key("6") },
+ comparator: { keyCode: key("7") },
+ transistor: { keyCode: key("8") },
},
placement: {
@@ -82,6 +81,8 @@ export const KEYMAPPINGS = {
cycleBuildingVariants: { keyCode: key("T") },
cycleBuildings: { keyCode: 9 }, // TAB
switchDirectionLockSide: { keyCode: key("R") },
+
+ copyWireValue: { keyCode: key("Z") },
},
massSelect: {
diff --git a/src/js/game/shape_definition.js b/src/js/game/shape_definition.js
index 9060a1b5..b09d73c5 100644
--- a/src/js/game/shape_definition.js
+++ b/src/js/game/shape_definition.js
@@ -297,6 +297,15 @@ export class ShapeDefinition extends BasicSerializableObject {
parameters.context.drawImage(canvas, x - diameter / 2, y - diameter / 2, diameter, diameter);
}
+ /**
+ * Draws the item to a canvas
+ * @param {CanvasRenderingContext2D} context
+ * @param {number} size
+ */
+ drawFullSizeOnCanvas(context, size) {
+ this.internalGenerateShapeBuffer(null, context, size, size, 1);
+ }
+
/**
* Generates this shape as a canvas
* @param {number} size
diff --git a/src/js/game/systems/constant_signal.js b/src/js/game/systems/constant_signal.js
index 93417ef5..3af98460 100644
--- a/src/js/game/systems/constant_signal.js
+++ b/src/js/game/systems/constant_signal.js
@@ -1,6 +1,9 @@
import trim from "trim";
+import { THIRDPARTY_URLS } from "../../core/config";
import { DialogWithForm } from "../../core/modal_dialog_elements";
-import { FormElementInput } from "../../core/modal_dialog_forms";
+import { FormElementInput, FormElementItemChooser } from "../../core/modal_dialog_forms";
+import { fillInLinkIntoTranslation } from "../../core/utils";
+import { T } from "../../translations";
import { BaseItem } from "../base_item";
import { enumColors } from "../colors";
import { ConstantSignalComponent } from "../components/constant_signal";
@@ -9,6 +12,7 @@ import { GameSystemWithFilter } from "../game_system_with_filter";
import { BOOL_FALSE_SINGLETON, BOOL_TRUE_SINGLETON } from "../items/boolean_item";
import { COLOR_ITEM_SINGLETONS } from "../items/color_item";
import { ShapeDefinition } from "../shape_definition";
+import { blueprintShape } from "../upgrades";
export class ConstantSignalSystem extends GameSystemWithFilter {
constructor(root) {
@@ -41,23 +45,35 @@ export class ConstantSignalSystem extends GameSystemWithFilter {
const signalValueInput = new FormElementInput({
id: "signalValue",
- label: null,
+ label: fillInLinkIntoTranslation(T.dialogs.editSignal.descShortKey, THIRDPARTY_URLS.shapeViewer),
placeholder: "",
defaultValue: "",
validator: val => this.parseSignalCode(val),
});
+
+ const itemInput = new FormElementItemChooser({
+ id: "signalItem",
+ label: null,
+ items: [
+ BOOL_FALSE_SINGLETON,
+ BOOL_TRUE_SINGLETON,
+ ...Object.values(COLOR_ITEM_SINGLETONS),
+ this.root.shapeDefinitionMgr.getShapeItemFromShortKey(blueprintShape),
+ ],
+ });
+
const dialog = new DialogWithForm({
app: this.root.app,
- title: "Set Signal",
- desc: "Enter a shape code, color or '0' or '1'",
- formElements: [signalValueInput],
+ title: T.dialogs.editSignal.title,
+ desc: T.dialogs.editSignal.descItems,
+ formElements: [itemInput, signalValueInput],
buttons: ["cancel:bad:escape", "ok:good:enter"],
closeButton: false,
});
this.root.hud.parts.dialogs.internalShowDialog(dialog);
// When confirmed, set the signal
- dialog.buttonSignals.ok.add(() => {
+ const closeHandler = () => {
if (!this.root || !this.root.entityMgr) {
// Game got stopped
return;
@@ -75,8 +91,16 @@ export class ConstantSignalSystem extends GameSystemWithFilter {
return;
}
- constantComp.signal = this.parseSignalCode(signalValueInput.getValue());
- });
+ if (itemInput.chosenItem) {
+ console.log(itemInput.chosenItem);
+ constantComp.signal = itemInput.chosenItem;
+ } else {
+ constantComp.signal = this.parseSignalCode(signalValueInput.getValue());
+ }
+ };
+
+ dialog.buttonSignals.ok.add(closeHandler);
+ dialog.valueChosen.add(closeHandler);
// When cancelled, destroy the entity again
dialog.buttonSignals.cancel.add(() => {
diff --git a/src/js/game/systems/hub.js b/src/js/game/systems/hub.js
index 017d2f15..f7431e21 100644
--- a/src/js/game/systems/hub.js
+++ b/src/js/game/systems/hub.js
@@ -1,15 +1,15 @@
+import { globalConfig } from "../../core/config";
+import { smoothenDpi } from "../../core/dpi_manager";
import { DrawParameters } from "../../core/draw_parameters";
+import { drawSpriteClipped } from "../../core/draw_utils";
import { Loader } from "../../core/loader";
+import { Rectangle } from "../../core/rectangle";
+import { ORIGINAL_SPRITE_SCALE } from "../../core/sprites";
import { formatBigNumber } from "../../core/utils";
import { T } from "../../translations";
import { HubComponent } from "../components/hub";
import { Entity } from "../entity";
import { GameSystemWithFilter } from "../game_system_with_filter";
-import { globalConfig } from "../../core/config";
-import { smoothenDpi } from "../../core/dpi_manager";
-import { drawSpriteClipped } from "../../core/draw_utils";
-import { Rectangle } from "../../core/rectangle";
-import { ORIGINAL_SPRITE_SCALE } from "../../core/sprites";
const HUB_SIZE_TILES = 4;
const HUB_SIZE_PIXELS = HUB_SIZE_TILES * globalConfig.tileSize;
@@ -73,23 +73,36 @@ export class HubSystem extends GameSystemWithFilter {
const textOffsetX = 70;
const textOffsetY = 61;
- // Deliver count
- const delivered = this.root.hubGoals.getCurrentGoalDelivered();
- const deliveredText = "" + formatBigNumber(delivered);
+ if (goals.throughputOnly) {
+ // Throughput
+ const deliveredText = T.ingame.statistics.shapesDisplayUnits.second.replace(
+ "",
+ formatBigNumber(goals.required)
+ );
- if (delivered > 999) {
- context.font = "bold 16px GameFont";
+ context.font = "bold 12px GameFont";
+ context.fillStyle = "#64666e";
+ context.textAlign = "left";
+ context.fillText(deliveredText, textOffsetX, textOffsetY);
} else {
- context.font = "bold 25px GameFont";
- }
- context.fillStyle = "#64666e";
- context.textAlign = "left";
- context.fillText(deliveredText, textOffsetX, textOffsetY);
+ // Deliver count
+ const delivered = this.root.hubGoals.getCurrentGoalDelivered();
+ const deliveredText = "" + formatBigNumber(delivered);
- // Required
- context.font = "13px GameFont";
- context.fillStyle = "#a4a6b0";
- context.fillText("/ " + formatBigNumber(goals.required), textOffsetX, textOffsetY + 13);
+ if (delivered > 999) {
+ context.font = "bold 16px GameFont";
+ } else {
+ context.font = "bold 25px GameFont";
+ }
+ context.fillStyle = "#64666e";
+ context.textAlign = "left";
+ context.fillText(deliveredText, textOffsetX, textOffsetY);
+
+ // Required
+ context.font = "13px GameFont";
+ context.fillStyle = "#a4a6b0";
+ context.fillText("/ " + formatBigNumber(goals.required), textOffsetX, textOffsetY + 13);
+ }
// Reward
const rewardText = T.storyRewards[goals.reward].title.toUpperCase();
@@ -167,4 +180,4 @@ export class HubSystem extends GameSystemWithFilter {
originalH: HUB_SIZE_PIXELS * dpi,
});
}
-}
+}
\ No newline at end of file
diff --git a/src/js/game/systems/logic_gate.js b/src/js/game/systems/logic_gate.js
index 2de11f59..46d040c0 100644
--- a/src/js/game/systems/logic_gate.js
+++ b/src/js/game/systems/logic_gate.js
@@ -3,8 +3,9 @@ import { enumColors } from "../colors";
import { enumLogicGateType, LogicGateComponent } from "../components/logic_gate";
import { enumPinSlotType } from "../components/wired_pins";
import { GameSystemWithFilter } from "../game_system_with_filter";
-import { BOOL_FALSE_SINGLETON, BOOL_TRUE_SINGLETON, isTruthyItem } from "../items/boolean_item";
-import { COLOR_ITEM_SINGLETONS } from "../items/color_item";
+import { BOOL_FALSE_SINGLETON, BOOL_TRUE_SINGLETON, BooleanItem, isTruthyItem } from "../items/boolean_item";
+import { ColorItem, COLOR_ITEM_SINGLETONS } from "../items/color_item";
+import { ShapeItem } from "../items/shape_item";
import { ShapeDefinition } from "../shape_definition";
export class LogicGateSystem extends GameSystemWithFilter {
@@ -153,18 +154,22 @@ export class LogicGateSystem extends GameSystemWithFilter {
/**
* @param {Array} parameters
- * @returns {BaseItem}
+ * @returns {[BaseItem, BaseItem]}
*/
compute_ROTATE(parameters) {
const item = parameters[0];
if (!item || item.getItemType() !== "shape") {
// Not a shape
- return null;
+ return [null, null];
}
const definition = /** @type {ShapeItem} */ (item).definition;
- const rotatedDefinition = this.root.shapeDefinitionMgr.shapeActionRotateCW(definition);
- return this.root.shapeDefinitionMgr.getShapeItemFromDefinition(rotatedDefinition);
+ const rotatedDefinitionCCW = this.root.shapeDefinitionMgr.shapeActionRotateCCW(definition);
+ const rotatedDefinitionCW = this.root.shapeDefinitionMgr.shapeActionRotateCW(definition);
+ return [
+ this.root.shapeDefinitionMgr.getShapeItemFromDefinition(rotatedDefinitionCCW),
+ this.root.shapeDefinitionMgr.getShapeItemFromDefinition(rotatedDefinitionCW),
+ ];
}
/**
diff --git a/src/js/game/tutorial_goals.js b/src/js/game/tutorial_goals.js
index 3d1a36fd..ff385288 100644
--- a/src/js/game/tutorial_goals.js
+++ b/src/js/game/tutorial_goals.js
@@ -43,7 +43,7 @@ export const tutorialGoals = [
// Circle
{
shape: "CuCuCuCu", // belts t1
- required: 40,
+ required: 30,
reward: enumHubGoalRewards.reward_cutter_and_trash,
},
@@ -59,14 +59,14 @@ export const tutorialGoals = [
// Rectangle
{
shape: "RuRuRuRu", // miners t1
- required: 85,
+ required: 70,
reward: enumHubGoalRewards.reward_balancer,
},
// 4
{
shape: "RuRu----", // processors t2
- required: 100,
+ required: 70,
reward: enumHubGoalRewards.reward_rotater,
},
@@ -74,14 +74,14 @@ export const tutorialGoals = [
// Rotater
{
shape: "Cu----Cu", // belts t2
- required: 175,
+ required: 170,
reward: enumHubGoalRewards.reward_tunnel,
},
// 6
{
shape: "Cu------", // miners t2
- required: 250,
+ required: 270,
reward: enumHubGoalRewards.reward_painter,
},
@@ -89,14 +89,14 @@ export const tutorialGoals = [
// Painter
{
shape: "CrCrCrCr", // unused
- required: 500,
+ required: 300,
reward: enumHubGoalRewards.reward_rotater_ccw,
},
// 8
{
shape: "RbRb----", // painter t2
- required: 700,
+ required: 480,
reward: enumHubGoalRewards.reward_mixer,
},
@@ -104,7 +104,7 @@ export const tutorialGoals = [
// Mixing (purple)
{
shape: "CpCpCpCp", // belts t3
- required: 800,
+ required: 600,
reward: enumHubGoalRewards.reward_merger,
},
@@ -112,7 +112,7 @@ export const tutorialGoals = [
// STACKER: Star shape + cyan
{
shape: "ScScScSc", // miners t3
- required: 900,
+ required: 800,
reward: enumHubGoalRewards.reward_stacker,
},
@@ -128,7 +128,7 @@ export const tutorialGoals = [
// Blueprints
{
shape: "CbCbCbRb:CwCwCwCw",
- required: 1250,
+ required: 1000,
reward: enumHubGoalRewards.reward_blueprints,
},
@@ -136,24 +136,24 @@ export const tutorialGoals = [
// Tunnel Tier 2
{
shape: "RpRpRpRp:CwCwCwCw", // painting t3
- required: 5000,
+ required: 3800,
reward: enumHubGoalRewards.reward_underground_belt_tier_2,
},
// 14
// Belt reader
{
- // @todo
- shape: "CuCuCuCu",
- required: 7000,
+ shape: "--Cg----:--Cr----", // unused
+ required: 16, // Per second!
reward: enumHubGoalRewards.reward_belt_reader,
+ throughputOnly: true,
},
// 15
// Storage
{
shape: "SrSrSrSr:CyCyCyCy", // unused
- required: 7500,
+ required: 10000,
reward: enumHubGoalRewards.reward_storage,
},
@@ -161,7 +161,7 @@ export const tutorialGoals = [
// Quad Cutter
{
shape: "SrSrSrSr:CyCyCyCy:SwSwSwSw", // belts t4 (two variants)
- required: 12500,
+ required: 6000,
reward: enumHubGoalRewards.reward_cutter_quad,
},
@@ -169,15 +169,14 @@ export const tutorialGoals = [
// Double painter
{
shape: "CbRbRbCb:CwCwCwCw:WbWbWbWb", // miner t4 (two variants)
- required: 15000,
+ required: 20000,
reward: enumHubGoalRewards.reward_painter_double,
},
// 18
// Rotater (180deg)
{
- // @TODO
- shape: "CuCuCuCu",
+ shape: "Sg----Sg:CgCgCgCg:--CyCy--", // unused
required: 20000,
reward: enumHubGoalRewards.reward_rotater_180,
},
@@ -185,8 +184,7 @@ export const tutorialGoals = [
// 19
// Compact splitter
{
- // @TODO
- shape: "CuCuCuCu",
+ shape: "CpRpCp--:SwSwSwSw",
required: 25000,
reward: enumHubGoalRewards.reward_splitter,
},
@@ -195,15 +193,14 @@ export const tutorialGoals = [
// WIRES
{
shape: finalGameShape,
- required: 50000,
+ required: 25000,
reward: enumHubGoalRewards.reward_wires_filters_and_levers,
},
// 21
// Display
{
- // @TODO
- shape: "CuCuCuCu",
+ shape: "CrCrCrCr:CwCwCwCw:CrCrCrCr:CwCwCwCw",
required: 25000,
reward: enumHubGoalRewards.reward_display,
},
@@ -211,43 +208,37 @@ export const tutorialGoals = [
// 22
// Constant signal
{
- // @TODO
- shape: "CuCuCuCu",
- required: 30000,
+ shape: "Cg----Cr:Cw----Cw:Sy------:Cy----Cy",
+ required: 25000,
reward: enumHubGoalRewards.reward_constant_signal,
},
// 23
// Quad Painter
{
- // @TODO
- shape: "CuCuCuCu",
- // shape: "WrRgWrRg:CwCrCwCr:SgSgSgSg", // processors t4 (two variants)
- required: 35000,
+ shape: "CcSyCcSy:SyCcSyCc:CcSyCcSy",
+ required: 5000,
reward: enumHubGoalRewards.reward_painter_quad,
},
// 24 Logic gates
{
- // @TODO
- shape: "CuCuCuCu",
- required: 40000,
+ shape: "CcRcCcRc:RwCwRwCw:Sr--Sw--:CyCyCyCy",
+ required: 10000,
reward: enumHubGoalRewards.reward_logic_gates,
},
// 25 Virtual Processing
{
- // @TODO
- shape: "CuCuCuCu",
- required: 45000,
+ shape: "Rg--Rg--:CwRwCwRw:--Rg--Rg",
+ required: 10000,
reward: enumHubGoalRewards.reward_virtual_processing,
},
// 26 Freeplay
{
- // @TODO
- shape: "CuCuCuCu",
- required: 100000,
+ shape: "CbCuCbCu:Sr------:--CrSrCr:CwCwCwCw",
+ required: 10000,
reward: enumHubGoalRewards.reward_freeplay,
},
];
diff --git a/src/js/game/tutorial_goals_mappings.js b/src/js/game/tutorial_goals_mappings.js
index 4542acf3..f4c6df01 100644
--- a/src/js/game/tutorial_goals_mappings.js
+++ b/src/js/game/tutorial_goals_mappings.js
@@ -4,6 +4,7 @@ import { MetaConstantSignalBuilding } from "./buildings/constant_signal";
import { enumCutterVariants, MetaCutterBuilding } from "./buildings/cutter";
import { MetaDisplayBuilding } from "./buildings/display";
import { MetaLeverBuilding } from "./buildings/lever";
+import { MetaLogicGateBuilding } from "./buildings/logic_gate";
import { enumMinerVariants, MetaMinerBuilding } from "./buildings/miner";
import { MetaMixerBuilding } from "./buildings/mixer";
import { enumPainterVariants, MetaPainterBuilding } from "./buildings/painter";
@@ -53,7 +54,7 @@ export const enumHubGoalRewardsToContentUnlocked = {
[enumHubGoalRewards.reward_constant_signal]: typed([
[MetaConstantSignalBuilding, defaultBuildingVariant],
]),
- [enumHubGoalRewards.reward_logic_gates]: null, // @TODO!
+ [enumHubGoalRewards.reward_logic_gates]: typed([[MetaLogicGateBuilding, defaultBuildingVariant]]),
[enumHubGoalRewards.reward_virtual_processing]: null, // @TODO!
[enumHubGoalRewards.reward_wires_filters_and_levers]: typed([
diff --git a/src/js/game/upgrades.js b/src/js/game/upgrades.js
index c764ae88..f8f4f1eb 100644
--- a/src/js/game/upgrades.js
+++ b/src/js/game/upgrades.js
@@ -2,10 +2,28 @@ import { findNiceIntegerValue } from "../core/utils";
import { ShapeDefinition } from "./shape_definition";
export const finalGameShape = "RuCw--Cw:----Ru--";
+export const rocketShape = "CbCuCbCu:Sr------:--CrSrCr:CwCwCwCw";
export const blueprintShape = "CbCbCbRb:CwCwCwCw";
const fixedImprovements = [0.5, 0.5, 1, 1, 2, 2];
+const numEndgameUpgrades = G_IS_DEV || G_IS_STANDALONE ? 20 - fixedImprovements.length - 1 : 0;
+
+function generateEndgameUpgrades() {
+ return new Array(numEndgameUpgrades).fill(null).map((_, i) => ({
+ required: [
+ { shape: blueprintShape, amount: 30000 + i * 10000 },
+ { shape: finalGameShape, amount: 20000 + i * 5000 },
+ { shape: rocketShape, amount: 20000 + i * 5000 },
+ ],
+ excludePrevious: true,
+ }));
+}
+
+for (let i = 0; i < numEndgameUpgrades; ++i) {
+ fixedImprovements.push(0.1);
+}
+
/** @typedef {{
* shape: string,
* amount: number
@@ -23,95 +41,99 @@ const fixedImprovements = [0.5, 0.5, 1, 1, 2, 2];
export const UPGRADES = {
belt: [
{
- required: [{ shape: "CuCuCuCu", amount: 150 }],
+ required: [{ shape: "CuCuCuCu", amount: 60 }],
},
{
- required: [{ shape: "--CuCu--", amount: 1000 }],
+ required: [{ shape: "--CuCu--", amount: 500 }],
},
{
- required: [{ shape: "CpCpCpCp", amount: 5000 }],
+ required: [{ shape: "CpCpCpCp", amount: 1000 }],
},
{
- required: [{ shape: "SrSrSrSr:CyCyCyCy", amount: 12000 }],
+ required: [{ shape: "SrSrSrSr:CyCyCyCy", amount: 6000 }],
},
{
- required: [{ shape: "SrSrSrSr:CyCyCyCy:SwSwSwSw", amount: 20000 }],
+ required: [{ shape: "SrSrSrSr:CyCyCyCy:SwSwSwSw", amount: 25000 }],
},
{
required: [{ shape: finalGameShape, amount: 50000 }],
excludePrevious: true,
},
+ ...generateEndgameUpgrades(),
],
miner: [
{
- required: [{ shape: "RuRuRuRu", amount: 400 }],
+ required: [{ shape: "RuRuRuRu", amount: 300 }],
},
{
- required: [{ shape: "Cu------", amount: 3000 }],
+ required: [{ shape: "Cu------", amount: 800 }],
},
{
- required: [{ shape: "ScScScSc", amount: 7000 }],
+ required: [{ shape: "ScScScSc", amount: 3500 }],
},
{
- required: [{ shape: "CwCwCwCw:WbWbWbWb", amount: 15000 }],
+ required: [{ shape: "CwCwCwCw:WbWbWbWb", amount: 23000 }],
},
{
- required: [{ shape: "CbRbRbCb:CwCwCwCw:WbWbWbWb", amount: 30000 }],
+ required: [{ shape: "CbRbRbCb:CwCwCwCw:WbWbWbWb", amount: 50000 }],
},
{
- required: [{ shape: finalGameShape, amount: 65000 }],
+ required: [{ shape: finalGameShape, amount: 50000 }],
excludePrevious: true,
},
+ ...generateEndgameUpgrades(),
],
processors: [
{
- required: [{ shape: "SuSuSuSu", amount: 600 }],
+ required: [{ shape: "SuSuSuSu", amount: 500 }],
},
{
- required: [{ shape: "RuRu----", amount: 2000 }],
+ required: [{ shape: "RuRu----", amount: 600 }],
},
{
- required: [{ shape: "CgScScCg", amount: 15000 }],
+ required: [{ shape: "CgScScCg", amount: 3500 }],
},
{
- required: [{ shape: "CwCrCwCr:SgSgSgSg", amount: 20000 }],
+ required: [{ shape: "CwCrCwCr:SgSgSgSg", amount: 25000 }],
},
{
- required: [{ shape: "WrRgWrRg:CwCrCwCr:SgSgSgSg", amount: 30000 }],
+ required: [{ shape: "WrRgWrRg:CwCrCwCr:SgSgSgSg", amount: 50000 }],
},
{
- required: [{ shape: finalGameShape, amount: 75000 }],
+ required: [{ shape: finalGameShape, amount: 50000 }],
excludePrevious: true,
},
+ ...generateEndgameUpgrades(),
],
painting: [
{
- required: [{ shape: "RbRb----", amount: 1000 }],
+ required: [{ shape: "RbRb----", amount: 600 }],
},
{
- required: [{ shape: "WrWrWrWr", amount: 3000 }],
+ required: [{ shape: "WrWrWrWr", amount: 3800 }],
},
{
- required: [{ shape: "RpRpRpRp:CwCwCwCw", amount: 15000 }],
+ required: [{ shape: "RpRpRpRp:CwCwCwCw", amount: 6500 }],
},
{
- required: [{ shape: "WpWpWpWp:CwCwCwCw:WpWpWpWp", amount: 20000 }],
+ required: [{ shape: "WpWpWpWp:CwCwCwCw:WpWpWpWp", amount: 25000 }],
},
{
- required: [{ shape: "WpWpWpWp:CwCwCwCw:WpWpWpWp:CwCwCwCw", amount: 30000 }],
+ required: [{ shape: "WpWpWpWp:CwCwCwCw:WpWpWpWp:CwCwCwCw", amount: 50000 }],
},
{
- required: [{ shape: finalGameShape, amount: 100000 }],
+ required: [{ shape: finalGameShape, amount: 50000 }],
excludePrevious: true,
},
+ ...generateEndgameUpgrades(),
],
};
// Tiers need % of the previous tier as requirement too
-const tierGrowth = 1.8;
+const tierGrowth = 2.5;
// Automatically generate tier levels
for (const upgradeId in UPGRADES) {
diff --git a/src/js/globals.d.ts b/src/js/globals.d.ts
index 51e4a2c3..642745ca 100644
--- a/src/js/globals.d.ts
+++ b/src/js/globals.d.ts
@@ -19,9 +19,6 @@ declare const G_BUILD_VERSION: string;
declare const G_ALL_UI_IMAGES: Array;
declare const G_IS_RELEASE: boolean;
-// Node require
-declare function require(...args): any;
-
// Polyfills
declare interface String {
replaceAll(search: string, replacement: string): string;
diff --git a/src/js/platform/sound.js b/src/js/platform/sound.js
index 0678abcf..1fceaf3e 100644
--- a/src/js/platform/sound.js
+++ b/src/js/platform/sound.js
@@ -25,6 +25,7 @@ export const SOUNDS = {
destroyBuilding: "destroy_building",
placeBuilding: "place_building",
placeBelt: "place_belt",
+ copy: "copy",
};
export const MUSIC = {
diff --git a/src/js/savegame/schemas/1006.js b/src/js/savegame/schemas/1006.js
index e6b2e263..29f2c64f 100644
--- a/src/js/savegame/schemas/1006.js
+++ b/src/js/savegame/schemas/1006.js
@@ -19,6 +19,7 @@ import { getCodeFromBuildingData } from "../../game/building_codes.js";
import { StaticMapEntityComponent } from "../../game/components/static_map_entity.js";
import { Entity } from "../../game/entity.js";
import { defaultBuildingVariant, MetaBuilding } from "../../game/meta_building.js";
+import { finalGameShape } from "../../game/upgrades.js";
import { SavegameInterface_V1005 } from "./1005.js";
const schema = require("./1006.json");
@@ -151,11 +152,26 @@ export class SavegameInterface_V1006 extends SavegameInterface_V1005 {
stored[shapeKey] = rebalance(stored[shapeKey]);
}
+ stored[finalGameShape] = 0;
+
// Reduce goals
if (dump.hubGoals.currentGoal) {
dump.hubGoals.currentGoal.required = rebalance(dump.hubGoals.currentGoal.required);
}
+ let level = Math.min(19, dump.hubGoals.level);
+
+ const levelMapping = {
+ 14: 15,
+ 15: 16,
+ 16: 17,
+ 17: 18,
+ 18: 19,
+ 19: 20,
+ };
+
+ dump.hubGoals.level = levelMapping[level] || level;
+
// Update entities
const entities = dump.entities;
for (let i = 0; i < entities.length; ++i) {
diff --git a/sync-translations.js b/sync-translations.js
index d6b87278..8fc30f40 100644
--- a/sync-translations.js
+++ b/sync-translations.js
@@ -1,82 +1,80 @@
-// 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.hasOwnProperty(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.hasOwnProperty(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");
-}
+// Synchronizes all translations
+
+const fs = require("fs");
+const matchAll = require("match-all");
+const path = require("path");
+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.hasOwnProperty(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);
+ }
+ }
+
+ for (const key in translatedObj) {
+ if (!originalObj.hasOwnProperty(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 json = YAML.parse(translatedContents);
+ match(original, json, "/");
+
+ const stringified = YAML.stringify(json, {
+ indent: 4,
+ simpleKeys: true,
+ });
+ fs.writeFileSync(filePath, stringified, "utf-8");
+}
diff --git a/translations/base-ar.yaml b/translations/base-ar.yaml
index 17d822d9..ac7f0c20 100644
--- a/translations/base-ar.yaml
+++ b/translations/base-ar.yaml
@@ -1,36 +1,8 @@
-#
-# 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: `. They are encapsulated within angle brackets. The correct
-# translation for this one in German for example would be: `Taste: ` (notice
-# how the placeholder stayed '' 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 processing of increasingly complex shapes across an infinitely expanding map.
-
- # This is the text shown above the Discord link
+ shortText: shapez.io is a game about building factories to automate the creation
+ and processing of increasingly complex shapes across an infinitely
+ expanding map.
discordLink: Official Discord - Chat with me!
-
- # 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]
@@ -74,8 +46,7 @@ steamPage:
[b]This game is open source![/b]
- Anybody can contribute, I'm actively involved in the community and attempt to review all suggestions and take feedback into consideration where possible.
- Be sure to check out my trello board for the full roadmap!
+ Anybody can contribute, I'm actively involved in the community and attempt to review all suggestions and take feedback into consideration where possible. Be sure to check out my trello board for the full roadmap!
[b]Links[/b]
@@ -86,29 +57,18 @@ steamPage:
[*] [url=https://github.com/tobspr/shapez.io]Source code (GitHub)[/url]
[*] [url=https://github.com/tobspr/shapez.io/blob/master/translations/README.md]Help translate[/url]
[/list]
-
global:
loading: Loading
error: Error
-
- # How big numbers are rendered, e.g. "10,000"
thousandsDivider: ","
-
- # What symbol to use to seperate the integer part from the fractional part of a number, e.g. "0.4"
- decimalSeparator: "."
-
- # The suffix for large numbers, e.g. 1.3k, 400.2M, etc.
+ decimalSeparator: .
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: seconds ago
oneMinuteAgo: one minute ago
@@ -117,14 +77,10 @@ global:
xHoursAgo: hours ago
oneDayAgo: one day ago
xDaysAgo: days ago
-
- # Short formats for times, e.g. '5h 23m'
secondsShort: s
minutesAndSecondsShort: m s
hoursAndMinutesShort: h m
-
xMinutes: minutes
-
keys:
tab: TAB
control: CTRL
@@ -132,13 +88,9 @@ global:
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!
-
+ intro: Get the standalone to unlock all features!
mainMenu:
play: Play
continue: Continue
@@ -150,14 +102,11 @@ mainMenu:
discordLink: Official Discord Server
helpTranslate: Help translate!
madeBy: Made by
-
- # 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.
-
+ 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
savegameLevelUnknown: Unknown Level
-
+ savegameUnnamed: Unnamed
dialogs:
buttons:
ok: OK
@@ -171,112 +120,95 @@ dialogs:
viewUpdate: View Update
showUpgrades: Show Upgrades
showKeybindings: Show Keybindings
-
importSavegameError:
title: Import Error
- text: >-
- Failed to import your savegame:
-
+ text: "Failed to import your savegame:"
importSavegameSuccess:
title: Savegame Imported
- text: >-
- Your savegame has been successfully imported.
-
+ text: Your savegame has been successfully imported.
gameLoadFailure:
title: Game is broken
- text: >-
- Failed to load your savegame:
-
+ text: "Failed to load your savegame:"
confirmSavegameDelete:
title: Confirm deletion
- text: >-
- Are you sure you want to delete the game?
-
+ text: Are you sure you want to delete the game?
savegameDeletionError:
title: Failed to delete
- text: >-
- Failed to delete the savegame:
-
+ text: "Failed to delete the savegame:"
restartRequired:
title: Restart required
- text: >-
- You need to restart the game to apply the settings.
-
+ 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 () which is not available in the demo. Consider getting the standalone version for the full experience!
-
+ desc: You tried to access a feature () which is not available in the
+ demo. Consider getting the standalone version 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 version!
-
+ desc: You can only have one savegame at a time in the demo version. Please
+ remove the existing one or get the standalone version!
updateSummary:
title: New update!
- desc: >-
- Here are the changes since you last played:
-
+ desc: "Here are the changes since you last played:"
upgradesIntroduction:
title: Unlock Upgrades
- desc: >-
- All shapes you produce can be used to unlock upgrades - Don't destroy your old factories!
- The upgrades tab can be found on the top right corner of the screen.
-
+ desc: All shapes you produce can be used to unlock upgrades - Don't
+ destroy your old factories! 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 ( to be exact)! Are you sure you want to do this?
-
+ desc: You are deleting a lot of buildings ( to be exact)! Are you sure
+ you want to do this?
massCutConfirm:
title: Confirm cut
- desc: >-
- You are cutting a lot of buildings ( to be exact)! Are you sure you want to do this?
-
+ desc: You are cutting a lot of buildings ( to be exact)! Are you sure you
+ want to do this?
massCutInsufficientConfirm:
title: Confirm cut
- desc: >-
- You can not afford to paste this area! Are you sure you want to cut it?
-
+ desc: You can not afford to paste this area! Are you sure you want to cut it?
blueprintsNotUnlocked:
title: Not unlocked yet
- desc: >-
- Complete level 12 to unlock Blueprints!
-
+ 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 check out the keybindings!
- CTRL + Drag: Select an area.
- SHIFT: Hold to place multiple of one building.
- ALT: Invert orientation of placed belts.
-
+ desc: "This game has a lot of keybindings which make it easier to build big
+ factories. Here are a few, but be sure to check out the
+ keybindings!
CTRL +
+ Drag: Select an area. SHIFT:
+ Hold to place multiple of one building. ALT: Invert orientation of placed
+ belts. "
createMarker:
title: New Marker
titleEdit: Edit Marker
- desc: Give it a meaningful name, you can also include a short key of a shape (Which you can generate here)
-
+ desc: Give it a meaningful name, you can also include a short
+ key of a shape (Which you can generate here)
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!
-
+ 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!
+ editSignal:
+ title: Set Signal
+ descItems: "Choose a pre-defined item:"
+ descShortKey: ... or enter the short key of a shape (Which you
+ can generate here)
+ renameSavegame:
+ title: Rename Savegame
+ desc: You can rename your savegame here.
ingame:
- # This is shown in the top left corner and displays useful keybindings in
- # every situation
keybindingsOverlay:
moveMap: Move
selectBuildings: Select area
@@ -297,8 +229,6 @@ ingame:
clearSelection: Clear selection
pipette: Pipette
switchLayers: Switch layers
-
- # Names of the colors, used for the color blind mode
colors:
red: Red
green: Green
@@ -309,18 +239,9 @@ ingame:
white: White
black: Black
uncolored: Gray
-
- # 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 to cycle variants.
-
- # Shows the hotkey in the ui, e.g. "Hotkey: Q"
- hotkeyLabel: >-
- Hotkey:
-
+ hotkeyLabel: "Hotkey: "
infoTexts:
speed: Speed
range: Range
@@ -328,36 +249,42 @@ ingame:
oneItemPerSecond: 1 item / second
itemsPerSecond: items / s
itemsPerSecondDouble: (x2)
-
tiles: tiles
-
- # The notification when completing a level
levelCompleteNotification:
- # is replaced by the actual level, so this gets 'Level 03' for example.
levelTitle: Level
completed: Completed
unlockText: Unlocked !
buttonNextLevel: Next Level
-
- # Notifications on the lower right
notifications:
newUpgrade: A new upgrade is available!
gameSaved: Your game has been saved.
-
- # The "Upgrades" window
+ freeplayLevelComplete: Level has been completed!
shop:
title: Upgrades
buttonUnlock: Upgrade
-
- # Gets replaced to e.g. "Tier IX"
tier: 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
+ - XI
+ - XII
+ - XIII
+ - XIV
+ - XV
+ - XVI
+ - XVII
+ - XVIII
+ - XIX
+ - XX
maximumLevel: MAXIMUM LEVEL (Speed x)
-
- # The "Statistics" window
statistics:
title: Statistics
dataSources:
@@ -366,62 +293,58 @@ ingame:
description: Displaying amount of stored shapes in your central building.
produced:
title: Produced
- description: Displaying all shapes your whole factory produces, including intermediate products.
+ 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: / m
-
- # Settings menu, when you press "ESC"
+ shapesDisplayUnits:
+ second: / s
+ minute: / m
+ hour: / h
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.
Press to create a marker from the current view, or right-click to create a marker at the selected location.
+ description: Left-click a marker to jump to it, right-click to delete
+ it.
Press to create a marker from the current
+ view, or right-click to create a marker at the
+ selected location.
creationSuccessNotification: Marker has been created.
-
- # Shape viewer
shapeViewer:
title: Layers
empty: Empty
copyKey: Copy Key
-
- # Interactive tutorial
interactiveTutorial:
title: Tutorial
hints:
- 1_1_extractor: Place an extractor on top of a circle shape to extract it!
- 1_2_conveyor: >-
- Connect the extractor with a conveyor belt to your hub!
Tip: Click and drag the belt with your mouse!
-
- 1_3_expand: >-
- This is NOT an idle game! Build more extractors and belts to finish the goal quicker.
Tip: Hold SHIFT to place multiple extractors, and use R to rotate them.
-
-# All shop upgrades
+ 1_1_extractor: Place an extractor on top of a circle
+ shape to extract it!
+ 1_2_conveyor: "Connect the extractor with a conveyor belt to
+ your hub!
Tip: Click and drag the belt
+ with your mouse!"
+ 1_3_expand: "This is NOT an idle game! Build more extractors
+ and belts to finish the goal quicker.
Tip: Hold
+ SHIFT to place multiple extractors, and use
+ R to rotate them."
+ connectedMiners:
+ one_miner: 1 Miner
+ n_miners: Miners
+ limited_items: Limited to
shopUpgrades:
belt:
name: Belts, Distributor & Tunnels
@@ -435,249 +358,363 @@ shopUpgrades:
painting:
name: Mixing & Painting
description: Speed x → x
-
-# Buildings and their name / description
buildings:
hub:
deliver: Deliver
toUnlock: to unlock
levelShortcut: LVL
-
belt:
default:
- name: &belt Conveyor Belt
+ name: Conveyor Belt
description: Transports items, hold and drag to place multiple.
-
wire:
default:
- name: &wire Energy Wire
+ name: Energy Wire
description: Allows you to transport energy.
-
- # Internal name for the Extractor
+ second:
+ name: Wire
+ description: Transfers signals, which can be items, colors or booleans (1 / 0).
+ Different colored wires do not connect.
miner:
default:
- name: &miner Extractor
+ name: 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.
-
- # Internal name for the Tunnel
underground_belt:
default:
- name: &underground_belt Tunnel
+ name: Tunnel
description: Allows you to tunnel resources under buildings and belts.
-
tier2:
name: Tunnel Tier II
description: Allows you to tunnel resources under buildings and belts.
-
- # Internal name for the Balancer
- splitter:
- 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 halves. If you use only one part, be sure to destroy the other part or it will stall!
+ name: Cutter
+ description: Cuts shapes from top to bottom and outputs both halves. If
+ you use only one part, be sure to destroy the other part or it
+ will stall!
quad:
name: Cutter (Quad)
- description: Cuts shapes into four parts. If you use only one part, be sure to destroy the other parts or it will stall!
-
- advanced_processor:
- default:
- name: &advanced_processor Color Inverter
- description: Accepts a color or shape and inverts it.
-
+ description: Cuts shapes into four parts. If you use only one part, be
+ sure to destroy the other parts or it will stall!
rotater:
default:
- name: &rotater Rotate
+ name: Rotate
description: Rotates shapes clockwise by 90 degrees.
ccw:
name: Rotate (CCW)
description: Rotates shapes counter-clockwise by 90 degrees.
- fl:
+ rotate180:
name: Rotate (180)
description: Rotates shapes by 180 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.
-
+ name: 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
+ name: Color Mixer
description: Mixes two colors using additive blending.
-
painter:
default:
- name: &painter Painter
- description: &painter_desc Colors the whole shape on the left input with the color from the top input.
-
+ name: Painter
+ description: Colors the whole shape on the left input with the color from the
+ top input.
mirrored:
- name: *painter
- description: *painter_desc
-
+ name: 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.
+ description: Colors the shapes on the left inputs with the color from the top
+ input.
quad:
name: Painter (Quad)
- description: Allows you to color each quadrant of the shape with a different color.
-
+ description: Allows you to color each quadrant of the shape with a different
+ color.
trash:
default:
- name: &trash Trash
+ name: 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.
-
- energy_generator:
- deliver: Deliver
-
- # This will be shown before the amount, so for example 'For 123 Energy'
- toGenerateEnergy: For
-
+ balancer:
default:
- name: &energy_generator Energy Generator
- description: Generates energy by consuming shapes.
-
- wire_crossings:
- default:
- name: &wire_crossings Wire Splitter
- description: Splits a energy wire into two.
-
+ name: Balancer
+ description: Multifunctional - Evenly distributes all inputs onto all outputs.
merger:
- name: Wire Merger
- description: Merges two energy wires into one.
-
+ name: Merger (compact)
+ description: Merges two conveyor belts into one.
+ merger-inverse:
+ name: Merger (compact)
+ description: Merges two conveyor belts into one.
+ splitter:
+ name: Splitter (compact)
+ description: Splits one conveyor belt into two.
+ splitter-inverse:
+ name: Splitter (compact)
+ description: Splits one conveyor belt into two.
+ storage:
+ default:
+ name: Storage
+ description: Stores excess items, up to a given capacity. Prioritizes the left
+ output and can be used as an overflow gate.
+ wire_tunnel:
+ default:
+ name: Wire Crossing
+ description: Allows to cross two wires without connecting them.
+ constant_signal:
+ default:
+ name: Constant Signal
+ description: Emits a constant signal, which can be either a shape, color or
+ boolean (1 / 0).
+ lever:
+ default:
+ name: Switch
+ description: Can be toggled to emit a boolean signal (1 / 0) on the wires layer,
+ which can then be used to control for example an item filter.
+ logic_gate:
+ default:
+ name: AND Gate
+ description: Emits a boolean "1" if both inputs are truthy. (Truthy means shape,
+ color or boolean "1")
+ not:
+ name: NOT Gate
+ description: Emits a boolean "1" if the input is not truthy. (Truthy means
+ shape, color or boolean "1")
+ xor:
+ name: XOR Gate
+ description: Emits a boolean "1" if one of the inputs is truthy, but not both.
+ (Truthy means shape, color or boolean "1")
+ or:
+ name: OR Gate
+ description: Emits a boolean "1" if one of the inputs is truthy. (Truthy means
+ shape, color or boolean "1")
+ transistor:
+ default:
+ name: Transistor
+ description: Forwards the bottom input if the side input is truthy (a shape,
+ color or "1").
+ mirrored:
+ name: Transistor
+ description: Forwards the bottom input if the side input is truthy (a shape,
+ color or "1").
+ filter:
+ default:
+ name: Filter
+ description: Connect a signal to route all matching items to the top and the
+ remaining to the right. Can be controlled with boolean signals
+ too.
+ display:
+ default:
+ name: Display
+ description: Connect a signal to show it on the display - It can be a shape,
+ color or boolean.
+ reader:
+ default:
+ name: Belt Reader
+ description: Allows to measure the average belt throughput. Outputs the last
+ read item on the wires layer (once unlocked).
+ analyzer:
+ default:
+ name: Shape Analyzer
+ description: Analyzes the top right quadrant of the lowest layer of the shape
+ and returns its shape and color.
+ comparator:
+ default:
+ name: Compare
+ description: Returns boolean "1" if both signals are exactly equal. Can compare
+ shapes, items and booleans.
+ virtual_processor:
+ default:
+ name: Virtual Cutter
+ description: Virtually cuts the shape into two halves.
+ rotater:
+ name: Virtual Rotater
+ description: Virtually rotates the shape, both clockwise and counter-clockwise.
+ unstacker:
+ name: Virtual Unstacker
+ description: Virtually extracts the topmost layer to the right output and the
+ remaining ones to the left.
+ stacker:
+ name: Virtual Stacker
+ description: Virtually stacks the right shape onto the left.
+ painter:
+ name: Virtual Painter
+ description: Virtually paints the shape from the bottom input with the shape on
+ the right input.
storyRewards:
- # Those are the rewards gained from completing the store
reward_cutter_and_trash:
title: Cutting Shapes
- desc: You just unlocked the cutter - it cuts shapes half from top to bottom regardless of its orientation!
Be sure to get rid of the waste, or otherwise it will stall - For this purpose I gave you a trash, which destroys everything you put into it!
-
+ desc: You just unlocked the cutter - it cuts shapes half from
+ top to bottom regardless of its
+ orientation!
Be sure to get rid of the waste, or otherwise
+ it will stall - For this purpose I gave you a
+ trash, which destroys everything you put into it!
reward_rotater:
title: Rotating
- desc: The rotater has been unlocked! It rotates shapes clockwise by 90 degrees.
-
+ desc: The rotater has been unlocked! It rotates shapes
+ clockwise by 90 degrees.
reward_painter:
title: Painting
- desc: >-
- The painter 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!
PS: If you are colorblind, there is a colorblind mode in the settings!
-
+ desc: "The painter 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!
PS: If you are colorblind, there is a
+ colorblind mode in the settings!"
reward_mixer:
title: Color Mixing
- desc: The mixer has been unlocked - Combine two colors using additive blending with this building!
-
+ desc: The mixer has been unlocked - Combine two colors using
+ additive blending with this building!
reward_stacker:
title: Combiner
- desc: You can now combine shapes with the combiner! Both inputs are combined, and if they can be put next to each other, they will be fused. If not, the right input is stacked on top of the left input!
-
+ desc: You can now combine shapes with the combiner! Both inputs
+ are combined, and if they can be put next to each other, they will
+ be fused. If not, the right input is
+ stacked on top of the left input!
reward_splitter:
title: Splitter/Merger
- desc: The multifunctional balancer has been unlocked - It can be used to build bigger factories by splitting and merging items onto multiple belts!
-
+ desc: The multifunctional balancer has been unlocked - It can
+ be used to build bigger factories by splitting and merging
+ items onto multiple belts!
reward_tunnel:
title: Tunnel
- desc: The tunnel has been unlocked - You can now tunnel items through belts and buildings with it!
-
+ desc: The tunnel 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 rotater - It allows you to rotate shapes counter-clockwise! To build it, select the rotater and press 'T' to cycle through its variants!
-
+ desc: You have unlocked a variant of the rotater - It allows
+ you to rotate shapes counter-clockwise! To build it, select the
+ rotater and press 'T' to cycle through its
+ variants!
reward_miner_chainable:
title: Chaining Extractor
- desc: You have unlocked the chaining extractor! It can forward its resources to other extractors so you can more efficiently extract resources!
-
+ desc: You have unlocked the chaining extractor! It can
+ forward its resources 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 tunnel - It has a bigger range, 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 balancer - It accepts two inputs and merges them into one belt!
-
+ desc: You have unlocked a new variant of the tunnel - It has a
+ bigger range, and you can also mix-n-match those
+ tunnels now!
reward_cutter_quad:
title: Quad Cutting
- desc: You have unlocked a variant of the cutter - It allows you to cut shapes in four parts instead of just two!
-
+ desc: You have unlocked a variant of the cutter - It allows you
+ to cut shapes in four parts instead of just two!
reward_painter_double:
title: Double Painting
- desc: You have unlocked a variant of the painter - It works as the regular painter but processes two shapes at once consuming just one color instead of two!
-
+ desc: You have unlocked a variant of the painter - It works as
+ the regular painter but processes two shapes at
+ once consuming just one color instead of two!
reward_painter_quad:
title: Quad Painting
- desc: You have unlocked a variant of the painter - It allows you to paint each part of the shape individually!
-
+ desc: You have unlocked a variant of the painter - It allows
+ you to paint each part of the shape individually!
reward_storage:
title: Storage Buffer
- desc: You have unlocked a variant of the trash - It allows you to store items up to a given capacity!
-
+ desc: You have unlocked a variant of the trash - It allows you
+ to store items up to a given capacity!
reward_freeplay:
title: Freeplay
- desc: You did it! You unlocked the free-play mode! This means that shapes are now randomly generated! (No worries, more content is planned for the standalone!)
-
+ desc: You did it! You unlocked the free-play mode! 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 copy and paste parts of your factory! Select an area (Hold CTRL, then drag with your mouse), and press 'C' to copy it.
Pasting it is not free, you need to produce blueprint shapes to afford it! (Those you just delivered).
-
- # Special reward, which is shown when there is no reward actually
+ desc: You can now copy and paste parts of your factory! Select
+ an area (Hold CTRL, then drag with your mouse), and press 'C' to
+ copy it.
Pasting it is not free, you need to
+ produce blueprint shapes to afford it! (Those you
+ just delivered).
no_reward:
title: Next level
- desc: >-
- This level gave you no reward, but the next one will!
PS: Better don't destroy your existing factory - You need all those shapes later again to unlock upgrades!
-
+ desc: "This level gave you no reward, but the next one will!
PS: Better
+ don't destroy your existing factory - You need all
+ those shapes later again to unlock upgrades!"
no_reward_freeplay:
title: Next level
- desc: >-
- Congratulations! By the way, more content is planned for the standalone!
-
+ desc: Congratulations! By the way, more content is planned for the standalone!
+ reward_balancer:
+ title: Balancer
+ desc: The multifunctional balancer has been unlocked - It can
+ be used to build bigger factories by splitting and merging
+ items onto multiple belts!
+ reward_merger:
+ title: Compact Merger
+ desc: You have unlocked a merger variant of the
+ balancer - It accepts two inputs and merges them
+ into one belt!
+ reward_belt_reader:
+ title: Belt reader
+ desc: You have now unlocked the belt reader! It allows you to
+ measure the throughput of a belt.
And wait until you unlock
+ wires - then it gets really useful!
+ reward_rotater_180:
+ title: Rotater (180 degrees)
+ desc: You just unlocked the 180 degress rotater! - It allows
+ you to rotate a shape by 180 degress (Surprise! :D)
+ reward_wires_filters_and_levers:
+ title: "Wires: Filters & Levers"
+ desc: You just unlocked the wires layer! It is a separate layer
+ on top of the regular layer and introduces a lot of new
+ mechanics!
Since it can be overwhelming a bit, I added a
+ small tutorial - Be sure to have tutorials enabled
+ in the settings!
+ reward_display:
+ title: Display
+ desc: You have unlocked the Display - Connect a signal on the
+ wires layer to visualize its contents!
+ reward_constant_signal:
+ title: Constant Signal
+ desc: You unlocked the constant signal building on the wires
+ layer! This is useful to connect it to item filters
+ for example.
The constant signal can emit a
+ shape, color or
+ boolean (1 / 0).
+ reward_logic_gates:
+ title: Logic Gates
+ desc: You unlocked logic gates! You don't have to be excited
+ about this, but it's actually super cool!
With those gates
+ you can now compute AND, OR, XOR and NOT operations.
As a
+ bonus on top I also just gave you a transistor!
+ reward_virtual_processing:
+ title: Virtual Processing
+ desc: I just gave a whole bunch of new buildings which allow you to
+ simulate the processing of shapes!
You can
+ now simulate a cutter, rotater, stacker and more on the wires layer!
+ With this you now have three options to continue the game:
-
+ Build an automated machine to create any possible
+ shape requested by the HUB (I recommend to try it!).
- Build
+ something cool with wires.
- Continue to play
+ regulary.
Whatever you choose, remember to have fun!
settings:
title: Settings
categories:
general: General
userInterface: User Interface
advanced: Advanced
-
+ performance: Performance
versionBadges:
dev: Development
staging: Staging
prod: Production
buildDate: Built
-
labels:
uiScale:
title: Interface scale
- description: >-
- Changes the size of the user interface. The interface will still scale based on your device's resolution, but this setting controls the amount of scaling.
+ description: Changes the size of the user interface. The interface will still
+ scale based on your device's resolution, but this setting
+ controls the amount of scaling.
scales:
super_small: Super small
small: Small
regular: Regular
large: Large
huge: Huge
-
autosaveInterval:
title: Autosave Interval
- description: >-
- Controls how often the game saves automatically. You can also disable it entirely here.
-
+ description: Controls how often the game saves automatically. You can also
+ disable it entirely here.
intervals:
one_minute: 1 Minute
two_minutes: 2 Minutes
@@ -685,22 +722,18 @@ settings:
ten_minutes: 10 Minutes
twenty_minutes: 20 Minutes
disabled: Disabled
-
scrollWheelSensitivity:
title: Zoom sensitivity
- description: >-
- Changes how sensitive the zoom is (Either mouse wheel or trackpad).
+ 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
-
movementSpeed:
title: Movement speed
- description: >-
- Changes how fast the view moves when using the keyboard.
+ description: Changes how fast the view moves when using the keyboard.
speeds:
super_slow: Super slow
slow: Slow
@@ -708,87 +741,114 @@ settings:
fast: Fast
super_fast: Super Fast
extremely_fast: Extremely Fast
-
language:
title: Language
- description: >-
- Change the language. All translations are user-contributed and might be incomplete!
-
+ description: Change the language. All translations are user-contributed and
+ might be incomplete!
enableColorBlindHelper:
title: Color Blind Mode
- description: >-
- Enables various tools which allow you to play the game if you are color blind.
-
+ description: Enables various tools which allow you to play the game if you are
+ color blind.
fullscreen:
title: Fullscreen
- description: >-
- It is recommended to play the game in fullscreen to get the best experience. Only available in the standalone.
-
+ 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.
-
+ description: If enabled, mutes all sound effects.
musicMuted:
title: Mute Music
- description: >-
- If enabled, mutes all music.
-
+ description: If enabled, mutes all music.
theme:
title: Game theme
- description: >-
- Choose the game theme (light / dark).
+ 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.
-
+ 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.
-
+ 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 up to a given level to make it easier to get into the game.
-
+ description: Whether to offer hints and tutorials while playing. Also hides
+ certain UI elements up to a given level to make it easier to get
+ into the game.
enableTunnelSmartplace:
title: Smart Tunnels
- description: >-
- When enabled, placing tunnels will automatically remove unnecessary belts. This also enables you to drag tunnels and excess tunnels will get removed.
-
+ description: When enabled, placing tunnels will automatically remove unnecessary
+ belts. This also enables you to drag tunnels and excess tunnels
+ will get removed.
vignette:
title: Vignette
- description: >-
- Enables the vignette, which darkens the screen corners and makes text easier to read.
-
+ description: Enables the vignette, which darkens the screen corners and makes
+ text easier to read.
rotationByBuilding:
title: Rotation by building type
- description: >-
- Each building type remembers the rotation you last set it to individually. This may be more comfortable if you frequently switch between placing different building types.
-
+ description: Each building type remembers the rotation you last set it to
+ individually. This may be more comfortable if you frequently
+ switch between placing different building types.
compactBuildingInfo:
title: Compact Building Infos
- description: >-
- Shortens info boxes for buildings by only showing their ratios. Otherwise a description and image is shown.
-
+ description: Shortens info boxes for buildings by only showing their ratios.
+ Otherwise a description and image is shown.
disableCutDeleteWarnings:
title: Disable Cut/Delete Warnings
- description: >-
- Disables the warning dialogs brought up when cutting/deleting more than 100 entities.
-
+ description: Disables the warning dialogs brought up when cutting/deleting more
+ than 100 entities.
+ soundVolume:
+ title: Sound Volume
+ description: Set the volume for sound effects
+ musicVolume:
+ title: Music Volume
+ description: Set the volume for music
+ lowQualityMapResources:
+ title: Low Quality Map Resources
+ description: Simplifies the rendering of resources on the map when zoomed in to
+ improve performance. It even looks cleaner, so be sure to try it
+ out!
+ disableTileGrid:
+ title: Disable Grid
+ description: Disabling the tile grid can help with the performance. This also
+ makes the game look cleaner!
+ clearCursorOnDeleteWhilePlacing:
+ title: Clear Cursor on Right Click
+ description: Enabled by default, clears the cursor whenever you right click
+ while you have a building selected for placement. If disabled,
+ you can delete buildings by right-clicking while placing a
+ building.
+ lowQualityTextures:
+ title: Low quality textures (Ugly)
+ description: Uses low quality textures to save performance. This will make the
+ game look very ugly!
+ displayChunkBorders:
+ title: Display Chunk Borders
+ description: The game is divided into chunks of 16x16 tiles, if this setting is
+ enabled the borders of each chunk are displayed.
+ pickMinerOnPatch:
+ title: Pick miner on resource patch
+ description: Enabled by default, selects the miner if you use the pipette when
+ hovering a resource patch.
+ simplifiedBelts:
+ title: Simplified Belts (Ugly)
+ description: Does not render belt items except when hovering the belt to save
+ performance. I do not recommend to play with this setting if you
+ do not absolutely need the performance.
+ enableMousePan:
+ title: Enable Mouse Pan
+ description: Allows to move the map by moving the cursor to the edges of the
+ screen. The speed depends on the Movement Speed setting.
+ rangeSliderPercentage: %
keybindings:
title: Keybindings
- hint: >-
- Tip: Be sure to make use of CTRL, SHIFT and ALT! They enable different placement options.
-
+ 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
@@ -797,7 +857,6 @@ keybindings:
massSelect: Mass Select
buildings: Building Shortcuts
placementModifiers: Placement Modifiers
-
mappings:
confirm: Confirm
back: Back
@@ -807,58 +866,62 @@ keybindings:
mapMoveLeft: Move Left
mapMoveFaster: Move Faster
centerMap: Center Map
-
mapZoomIn: Zoom in
mapZoomOut: Zoom out
createMarker: Create Marker
-
menuOpenShop: Upgrades
menuOpenStats: Statistics
menuClose: Close Menu
-
toggleHud: Toggle HUD
toggleFPSInfo: Toggle FPS and Debug Info
switchLayers: Switch layers
exportScreenshot: Export whole Base as Image
- belt: *belt
- splitter: *splitter
- underground_belt: *underground_belt
- miner: *miner
- cutter: *cutter
- advanced_processor: *advanced_processor
- rotater: *rotater
- stacker: *stacker
- mixer: *mixer
- energy_generator: *energy_generator
- painter: *painter
- trash: *trash
- wire: *wire
-
+ belt: Conveyor Belt
+ underground_belt: Tunnel
+ miner: Extractor
+ cutter: Cutter
+ rotater: Rotate
+ stacker: Stacker
+ mixer: Color Mixer
+ painter: Painter
+ trash: Trash
+ wire: Energy Wire
pipette: Pipette
rotateWhilePlacing: Rotate
- rotateInverseModifier: >-
- Modifier: Rotate CCW instead
+ rotateInverseModifier: "Modifier: Rotate CCW instead"
cycleBuildingVariants: Cycle Variants
confirmMassDelete: Delete area
pasteLastBlueprint: Paste last blueprint
cycleBuildings: Cycle Buildings
lockBeltDirection: Enable belt planner
- switchDirectionLockSide: >-
- Planner: Switch side
-
+ switchDirectionLockSide: "Planner: Switch side"
massSelectStart: Hold and drag to start
massSelectSelectMultiple: Select multiple areas
massSelectCopy: Copy area
massSelectCut: Cut area
-
placementDisableAutoOrientation: Disable automatic orientation
placeMultiple: Stay in placement mode
placeInverse: Invert automatic belt orientation
-
+ balancer: Balancer
+ storage: Storage
+ constant_signal: Constant Signal
+ logic_gate: Logic Gate
+ lever: Switch (regular)
+ lever_wires: Switch (wires)
+ filter: Filter
+ wire_tunnel: Wire Crossing
+ display: Display
+ reader: Belt Reader
+ virtual_processor: Virtual Cutter
+ transistor: Transistor
+ analyzer: Shape Analyzer
+ comparator: Compare
about:
title: About this Game
body: >-
- This game is open source and developed by Tobias Springer (this is me).
+ This game is open source and developed by Tobias Springer
+ (this is me).
@@ -867,10 +930,8 @@ about:
The soundtrack was made by Peppsen - He's awesome.
Finally, huge thanks to my best friend Niklas - Without our Factorio sessions, this game would never have existed.
-
changelog:
title: Changelog
-
demo:
features:
restoringGames: Restoring savegames
@@ -878,5 +939,64 @@ demo:
oneGameLimit: Limited to one savegame
customizeKeybindings: Customizing Keybindings
exportingBase: Exporting whole Base as Image
-
settingNotAvailable: Not available in the demo.
+tips:
+ - The hub accepts input of any kind, not just the current shape!
+ - Make sure your factories are modular - it will pay out!
+ - Don't build too close to the hub, or it will be a huge chaos!
+ - If stacking does not work, try switching the inputs.
+ - You can toggle the belt planner direction by pressing R.
+ - Holding CTRL allows dragging of belts without auto-orientation.
+ - Ratios stay the same, as long as all upgrades are on the same Tier.
+ - Serial execution is more efficient than parallel.
+ - You will unlock more variants of buildings later in the game!
+ - You can use T to switch between different variants.
+ - Symmetry is key!
+ - You can weave different tiers of tunnels.
+ - Try to build compact factories - it will pay out!
+ - The painter has a mirrored variant which you can select with T
+ - Having the right building ratios will maximize efficiency.
+ - At maximum level, 5 extractors will fill a single belt.
+ - Don't forget about tunnels!
+ - You don't need to divide up items evenly for full efficiency.
+ - Holding SHIFT will activate the belt planner, letting you place
+ long lines of belts easily.
+ - Cutters always cut vertically, regardless of their orientation.
+ - To get white mix all three colors.
+ - The storage buffer priorities the first output.
+ - Invest time to build repeatable designs - it's worth it!
+ - Holding CTRL allows to place multiple buildings.
+ - You can hold ALT to invert the direction of placed belts.
+ - Efficiency is key!
+ - Shape patches that are further away from the hub are more complex.
+ - Machines have a limited speed, divide them up for maximum efficiency.
+ - Use balancers to maximize your efficiency.
+ - Organization is important. Try not to cross conveyors too much.
+ - Plan in advance, or it will be a huge chaos!
+ - Don't remove your old factories! You'll need them to unlock upgrades.
+ - Try beating level 20 on your own before seeking for help!
+ - Don't complicate things, try to stay simple and you'll go far.
+ - You may need to re-use factories later in the game. Plan your factories to
+ be re-usable.
+ - Sometimes, you can find a needed shape in the map without creating it with
+ stackers.
+ - Full windmills / pinwheels can never spawn naturally.
+ - Color your shapes before cutting for maximum efficiency.
+ - With modules, space is merely a perception; a concern for mortal men.
+ - Make a separate blueprint factory. They're important for modules.
+ - Have a closer look on the color mixer, and your questions will be answered.
+ - Use CTRL + Click to select an area.
+ - Building too close to the hub can get in the way of later projects.
+ - The pin icon next to each shape in the upgrade list pins it to the screen.
+ - Mix all primary colors together to make white!
+ - You have an infinite map, don't cramp your factory, expand!
+ - Also try Factorio! It's my favorite game.
+ - The quad cutter cuts clockwise starting from the top right!
+ - You can download your savegames in the main menu!
+ - This game has a lot of useful keybindings! Be sure to check out the
+ settings page.
+ - This game has a lot of settings, be sure to check them out!
+ - The marker to your hub has a small compass to indicate its direction!
+ - To clear belts, cut the area and then paste it at the same location.
+ - Press F4 to show your FPS and Tick Rate.
+ - Press F4 twice to show the tile of your mouse and camera.
diff --git a/translations/base-cat.yaml b/translations/base-cat.yaml
index b1870d77..9dd78bc8 100644
--- a/translations/base-cat.yaml
+++ b/translations/base-cat.yaml
@@ -1,36 +1,8 @@
-#
-# 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: `. They are encapsulated within angle brackets. The correct
-# translation for this one in German for example would be: `Taste: ` (notice
-# how the placeholder stayed '' 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 és un joc que té com a objectiu construir i automatitzar fàbriques per tal de produir figures cada cop més complexes en un mapa infinit.
-
- # This is the text shown above the Discord link
+ shortText: shapez.io és un joc que té com a objectiu construir i automatitzar
+ fàbriques per tal de produir figures cada cop més complexes en un mapa
+ infinit.
discordLink: Discord Oficial (en Anglès)
-
- # 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]
@@ -74,8 +46,7 @@ steamPage:
[b]Aquest joc és de codi obert![/b]
- Qualsevol pot contribuir, estic involucrat activament en la comunitat i intento revisar tots els suggeriments i tenir en compte els comentaris sempre que sigui possible.
- Assegureu-vos de consultar el meu tauler de trello per obtenir el full de ruta complet!
+ Qualsevol pot contribuir, estic involucrat activament en la comunitat i intento revisar tots els suggeriments i tenir en compte els comentaris sempre que sigui possible. Assegureu-vos de consultar el meu tauler de trello per obtenir el full de ruta complet!
[b]Enllaços[/b]
@@ -86,29 +57,18 @@ steamPage:
[*] [url=https://github.com/tobspr/shapez.io]Source code (GitHub)[/url]
[*] [url=https://github.com/tobspr/shapez.io/blob/master/translations/README.md]Help translate[/url]
[/list]
-
global:
loading: Carregant
error: Error
-
- # How big numbers are rendered, e.g. "10,000"
thousandsDivider: ","
-
- # What symbol to use to seperate the integer part from the fractional part of a number, e.g. "0.4"
- decimalSeparator: "."
-
- # The suffix for large numbers, e.g. 1.3k, 400.2M, etc.
+ decimalSeparator: .
suffix:
thousands: k
millions: M
billions: B
trillions: T
-
- # Shown for infinitely big numbers
infinite: inf
-
time:
- # Used for formatting past time dates
oneSecondAgo: fa un segon
xSecondsAgo: fa segons
oneMinuteAgo: fa un minut
@@ -117,14 +77,10 @@ global:
xHoursAgo: fa hores
oneDayAgo: fa un dia
xDaysAgo: fa dies
-
- # Short formats for times, e.g. '5h 23m'
secondsShort: s
minutesAndSecondsShort: m s
hoursAndMinutesShort: h m
-
xMinutes: minuts
-
keys:
tab: TAB
control: CTRL
@@ -132,12 +88,9 @@ global:
escape: ESC
shift: SHIFT
space: ESPAI
-
demoBanners:
- # This is the "advertisement" shown in the main menu and other various places
title: Demo - Versió de prova
- intro: >-
- Aconsegueix el joc complet per obtenir totes les característiques!
+ intro: Aconsegueix el joc complet per obtenir totes les característiques!
mainMenu:
play: Jugar
continue: Continuar
@@ -149,14 +102,12 @@ mainMenu:
discordLink: Servidor Discord oficial
helpTranslate: Ajuda a traduir-lo!
madeBy: Creat per
-
- # This is shown when using firefox and other browsers which are not supported.
browserWarning: >-
-
+
Disculpa, però el joc funcionarà lent al teu navegador! Aconsegueix el joc complet o descarrega't chrome per una millor experiència.
savegameLevel: Nivell
savegameLevelUnknown: Nivell desconegut
-
+ savegameUnnamed: Unnamed
dialogs:
buttons:
ok: OK
@@ -170,113 +121,99 @@ dialogs:
viewUpdate: Veure actualitzacions
showUpgrades: Mostrar millores
showKeybindings: Mostrar dreceres de teclat
-
importSavegameError:
title: Error en importar
- text: >-
- Ha ocurrit un error intentant importar la teva partida:
-
+ text: "Ha ocurrit un error intentant importar la teva partida:"
importSavegameSuccess:
title: Importar
- text: >-
- La partida ha sigut importada amb èxit.
-
+ text: La partida ha sigut importada amb èxit.
gameLoadFailure:
title: No es pot carregar la partida guardada
- text: >-
- Ha ocurrit un error al intentar carregar la teva partida:
-
+ text: "Ha ocurrit un error al intentar carregar la teva partida:"
confirmSavegameDelete:
title: Eliminar
- text: >-
- Estàs segur que vols eliminar la partida guardada?
-
+ text: Estàs segur que vols eliminar la partida guardada?
savegameDeletionError:
title: Error en eliminar
- text: >-
- Ha ocurrit un error al intentar eliminar la teva partida:
-
+ text: "Ha ocurrit un error al intentar eliminar la teva partida:"
restartRequired:
title: Reiniciar
- text: >-
- És necessari reiniciar el joc per aplicar els canvis.
-
+ text: És necessari reiniciar el joc per aplicar els canvis.
editKeybinding:
title: Cambiar dreceres de teclat
- desc: Pressiona la tecla o botó del ratolí que vols designar o ESC per cancel·lar.
-
+ desc: Pressiona la tecla o botó del ratolí que vols designar o ESC per
+ cancel·lar.
resetKeybindingsConfirmation:
title: Reiniciar dreceres de teclat
desc: Això reiniciarà tots els canvis realitzats, n'estàs segur?
-
keybindingsResetOk:
title: Cambiar dreceres de teclat
desc: Les dreceres han tornat en el seu estat predeterminat!
-
featureRestriction:
title: Demo - Versió de prova
- desc: Has intentat accedir a una característica () que no està disponible en la demo. Considera obtenir el joc complet per a una experiència completa!
-
+ desc: Has intentat accedir a una característica () que no està
+ disponible en la demo. Considera obtenir el joc complet per a una
+ experiència completa!
oneSavegameLimit:
title: Partides guardades limitades
- desc: Només pots tenir una sola partida guardada a la versió de demostració. Si vols, elimina la ja existent o fes-te amb la versió completa del joc!
-
+ desc: Només pots tenir una sola partida guardada a la versió de demostració. Si
+ vols, elimina la ja existent o fes-te amb la versió completa del
+ joc!
updateSummary:
title: Nova actualització!
- desc: >-
- Aquí tens els canvis des de l'últim cop que vas jugar:
-
+ desc: "Aquí tens els canvis des de l'últim cop que vas jugar:"
upgradesIntroduction:
title: Desbloquejar millora
- desc: >-
- Totes les figures poden ser usades per desbloquejar millores - No eliminis/es les teves fabriques anteriors!
- La pestanya de millores està a la part superior dreta de la pantalla.
-
+ desc: Totes les figures poden ser usades per desbloquejar millores - No
+ eliminis/es les teves fabriques anteriors! La pestanya de
+ millores està a la part superior dreta de la pantalla.
massDeleteConfirm:
title: Eliminar edificis
- desc: >-
- Estàs esborrant molts edificis de cop ( per ser exactes)! Estàs segur que vols seguir?
-
+ desc: Estàs esborrant molts edificis de cop ( per ser exactes)! Estàs
+ segur que vols seguir?
massCutConfirm:
title: Tallar edificis
- desc: >-
- Estàs tallant molts edificis de cop ( per ser exactes)! Estàs segur que vols seguir?
-
+ desc: Estàs tallant molts edificis de cop ( per ser exactes)! Estàs segur
+ que vols seguir?
massCutInsufficientConfirm:
title: Confirmar tallar
- desc: >-
- No pots aferrar a aquesta zona! Estàs segur de que vols tallarla?
-
+ desc: No pots aferrar a aquesta zona! Estàs segur de que vols tallarla?
blueprintsNotUnlocked:
title: Encara no s'ha desbloquejat
- desc: >-
- Completa el nivell 12 per poder desbloquejar aquesta característica.
-
+ desc: Completa el nivell 12 per poder desbloquejar aquesta característica.
keybindingsIntroduction:
title: Dreceres de teclat útils
- desc: >-
- El joc té moltes dreceres que faciliten la feina a l'hora de construir grans línies de producció.
- Aquí tens algunes, però asegura't de revisar les dreceres de teclat!
- CTRL + Arrossegar: Selecciona una àrea.
- SHIFT: Mentè pressionat per col·locar vàries vegades el mateix edifici.
- ALT: Invertir la orientació de les cintes transportadores ja col·locades.
-
+ desc: "El joc té moltes dreceres que faciliten la feina a l'hora de construir
+ grans línies de producció. Aquí tens algunes, però asegura't de
+ revisar les dreceres de teclat!
CTRL + Arrossegar: Selecciona una
+ àrea. SHIFT: Mentè pressionat
+ per col·locar vàries vegades el mateix edifici. ALT: Invertir la orientació de les cintes
+ transportadores ja col·locades. "
createMarker:
title: Nou Marcador
titleEdit: Edit Marker
- desc: >-
- Dona-li un nom significatiu, també pots usar claus de les figures (Pots generarles a: aquí)
-
+ desc: 'Dona-li un nom significatiu, també pots usar claus de
+ les figures (Pots generarles a: aquí)'
markerDemoLimit:
- desc: En la Demo només pots crear dos marcadors, aconsegueix la versió completa per gaudir de l'experiència completa!
-
+ desc: En la Demo només pots crear dos marcadors, aconsegueix la versió completa
+ per gaudir de l'experiència completa!
exportScreenshotWarning:
title: Exportar Captura de Pantalla
- desc: Has demanat exportar la teva/teua base com una captura de pantalla. Tin en conte que aquest procés pot ser molt lent i inclús crashear el teu joc!
-
+ desc: Has demanat exportar la teva/teua base com una captura de pantalla. Tin en
+ conte que aquest procés pot ser molt lent i inclús crashear el teu
+ joc!
+ editSignal:
+ title: Set Signal
+ descItems: "Choose a pre-defined item:"
+ descShortKey: ... or enter the short key of a shape (Which you
+ can generate here)
+ renameSavegame:
+ title: Rename Savegame
+ desc: You can rename your savegame here.
ingame:
- # This is shown in the top left corner and displays useful keybindings in
- # every situation
keybindingsOverlay:
moveMap: Moure
selectBuildings: Seleccionar àrea
@@ -297,8 +234,6 @@ ingame:
clearSelection: Buidar selecció
pipette: Pipeta
switchLayers: Intercanviar capes
-
- # Names of the colors, used for the color blind mode
colors:
red: Roig
green: Verd
@@ -309,18 +244,9 @@ ingame:
white: Blanc
black: Negre
uncolored: Sense color
-
- # 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: Prem per a ciclar entre variants.
-
- # Shows the hotkey in the ui, e.g. "Hotkey: Q"
- hotkeyLabel: >-
- Hotkey:
-
+ hotkeyLabel: "Hotkey: "
infoTexts:
speed: Velocitat
range: Distància
@@ -328,100 +254,104 @@ ingame:
oneItemPerSecond: 1 objecte / s
itemsPerSecond: objectes / s
itemsPerSecondDouble: (x2)
-
tiles: caselles
-
- # The notification when completing a level
levelCompleteNotification:
- # is replaced by the actual level, so this gets 'Level 03' for example.
levelTitle: Nivell
completed: Complet
unlockText: Desbloquejat !
buttonNextLevel: Següent nivell
-
- # Notifications on the lower right
notifications:
newUpgrade: Una nova millora està disponible!
gameSaved: La teva/ua partida s'ha guardat.
-
- # The "Upgrades" window
+ freeplayLevelComplete: Level has been completed!
shop:
title: Millores
buttonUnlock: Millorar
-
- # Gets replaced to e.g. "Tier IX"
tier: Nivell
-
- # 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
+ - XI
+ - XII
+ - XIII
+ - XIV
+ - XV
+ - XVI
+ - XVII
+ - XVIII
+ - XIX
+ - XX
maximumLevel: NIVELL MÀXIM (Velocitat x)
-
- # The "Statistics" window
statistics:
title: Estadístiques
dataSources:
stored:
title: Emmagatzemat
- description: Mostrant la quantitat de figures emmagatzemades en el teu edifici central.
+ description: Mostrant la quantitat de figures emmagatzemades en el teu edifici
+ central.
produced:
title: Produit
- description: Mostrant la producció total de figures de la fàbrica, incluïnt productes intermijos.
+ description: Mostrant la producció total de figures de la fàbrica, incluïnt
+ productes intermijos.
delivered:
title: Enviats
description: Mostrant les figures que són enviades a l'edifici central.
noShapesProduced: Ninguna figura s'ha produit fins ara.
-
- # Displays the shapes per minute, e.g. '523 / m'
- shapesPerMinute: / m
-
- # Settings menu, when you press "ESC"
+ shapesDisplayUnits:
+ second: / s
+ minute: / m
+ hour: / h
settingsMenu:
playtime: Temps de joc
-
buildingsPlaced: Edificis
beltsPlaced: Cintes transportadores
-
buttons:
continue: Continuar
settings: Configuració
menu: Tornar al menú
-
- # Bottom left tutorial hints
tutorialHints:
title: Necessites ajuda?
showHint: Mostrar pista
hideHint: Tancar
-
- # When placing a blueprint
blueprintPlacer:
cost: Cost
-
- # Map markers
waypoints:
waypoints: Marcadors
hub: NEXE
- description: Fes clic esquerre en un marcador per desplaçar-te cap a ell. Fes clic dret per esborrar-lo.
Pressiona per a crear un marcador des de la vista actual, o fes clic dret per a crear un marcador en el punt seleccionat.
+ description: Fes clic esquerre en un marcador per desplaçar-te cap a ell. Fes
+ clic dret per esborrar-lo.
Pressiona per a
+ crear un marcador des de la vista actual, o fes clic
+ dret per a crear un marcador en el punt seleccionat.
creationSuccessNotification: S'ha creat un marcador .
-
- # Shape viewer
shapeViewer:
title: Capes
empty: Buit
copyKey: Copiar clau
-
- # Interactive tutorial
interactiveTutorial:
title: Tutorial
hints:
- 1_1_extractor: Col·loca un extractor damunt d'una figura circular per extraure-la!
- 1_2_conveyor: >-
- Connecta l'extractor a la cinta transportadora cap al teu nexe!
Pista: Pots clicar i arrossegar la cinta transportadora amb el teu ratolí!
-
- 1_3_expand: >-
- Aquest NO és un joc d'espera! Contrueix més extractors i cintes per a completar l'objectiu més ràpidament.
Pista: Manté pressionat SHIFT per a col·locar més extractors, i utilitza R per a rotar-los.
-
-# All shop upgrades
+ 1_1_extractor: Col·loca un extractor damunt d'una
+ figura circular per extraure-la!
+ 1_2_conveyor: "Connecta l'extractor a la cinta transportadora
+ cap al teu nexe!
Pista: Pots clicar i
+ arrossegar la cinta transportadora amb el teu ratolí!"
+ 1_3_expand: "Aquest NO és un joc d'espera! Contrueix més
+ extractors i cintes per a completar l'objectiu més
+ ràpidament.
Pista: Manté pressionat
+ SHIFT per a col·locar més extractors, i
+ utilitza R per a rotar-los."
+ connectedMiners:
+ one_miner: 1 Miner
+ n_miners: Miners
+ limited_items: Limited to
shopUpgrades:
belt:
name: Cintes transportadores, Distribuidors i Túnels
@@ -435,249 +365,370 @@ shopUpgrades:
painting:
name: Mesclar i Pintar
description: Velocitat x → x
-
-# Buildings and their name / description
buildings:
hub:
deliver: Envia
toUnlock: per a desbloquejar
levelShortcut: NVL
-
belt:
default:
- name: &belt Cinta transportadora
- description: Transporta objectes, mantén pressionat i arrossega per a col·locar múltiples.
-
+ name: Cinta transportadora
+ description: Transporta objectes, mantén pressionat i arrossega per a col·locar
+ múltiples.
wire:
default:
- name: &wire Cable
+ name: Cable
description: Permet transportar energia.
-
- # Internal name for the Extractor
+ second:
+ name: Wire
+ description: Transfers signals, which can be items, colors or booleans (1 / 0).
+ Different colored wires do not connect.
miner:
default:
- name: &miner Extractor
+ name: Extractor
description: Posa-ho damunt d'una font de figures o colors per extraure'ls.
-
chainable:
name: Extractor (Cadena)
- description: Posa-ho damunt d'una font de figures o colors per extraure'ls. Pot ser encadenat!
-
- # Internal name for the Tunnel
+ description: Posa-ho damunt d'una font de figures o colors per extraure'ls. Pot
+ ser encadenat!
underground_belt:
default:
- name: &underground_belt Túnel
+ name: Túnel
description: Permet transportar recursos per sota d'edificis i cintes.
-
tier2:
name: Túnel de Nivell II
description: Permet transportar recursos per sota d'edificis i cintes.
-
- # Internal name for the Balancer
- splitter:
- default:
- name: &splitter Distribuïdor
- description: Multifuncional - Distribueix les entrades i sortides equitativament.
-
- compact:
- name: Fusionador (compacte)
- description: Fusiona dos cintes en una.
-
- compact-inverse:
- name: Fusionador (compacte)
- description: Fusiona dos cintes en una.
-
cutter:
default:
- name: &cutter Cisalla
- description: Talla figures de dalt a baix i produeix les dues meitats. Si utilitzes sols una part, assegura't de destruir l'altra o es pararà!
+ name: Cisalla
+ description: Talla figures de dalt a baix i produeix les dues meitats.
+ Si utilitzes sols una part, assegura't de destruir
+ l'altra o es pararà!
quad:
name: Cisalla (Quàdruple)
- description: Talla figures en quatre parts. Si no utilitzes totes les parts, assegura't de destruir les altres o es pararà!
-
- advanced_processor:
- default:
- name: &advanced_processor Processador avançat
- description: Processament de figures avançat.
-
+ description: Talla figures en quatre parts. Si no utilitzes totes les
+ parts, assegura't de destruir les altres o es pararà!
rotater:
default:
- name: &rotater Rotador
+ name: Rotador
description: Rota formes en sentit horari 90 graus.
ccw:
name: Rotador (Antihorari)
description: Rota formes en sentit antihorari 90 graus.
- fl:
+ rotate180:
name: Rotate (180)
description: Rotates shapes by 180 degrees.
-
stacker:
default:
- name: &stacker Apilador
- description: Fusiona o apila ambdues figures. Si no poden ser fusionades, la figura de la dreta es posarà damunt de la de l'esquerra.
-
+ name: Apilador
+ description: Fusiona o apila ambdues figures. Si no poden ser fusionades, la
+ figura de la dreta es posarà damunt de la de l'esquerra.
mixer:
default:
- name: &mixer Mesclador de colors
+ name: Mesclador de colors
description: Mescla dos colors amb mescla additiva.
-
painter:
default:
- name: &painter Pintor
- description: &painter_desc Pinta la figura sencera de l'esquerra amb el color de l'entrada de dalt.
-
+ name: Pintor
+ description: Pinta la figura sencera de l'esquerra amb el color de l'entrada de
+ dalt.
mirrored:
name: Pintor
- description: Pinta la figura sencera de l'esquerra amb el color de l'entrada de baix.
-
+ description: Pinta la figura sencera de l'esquerra amb el color de l'entrada de
+ baix.
double:
name: Pintor (Doble)
description: Pinta les figures de l'esquerra amb el color de dalt.
quad:
name: Pintor (Quàdruple)
description: Permet pintar cadascun dels quadrants de forma diferent.
-
trash:
default:
- name: &trash Paperera
+ name: Paperera
description: Acepta objectes de tots els costats i els destrueix. Permanentment.
-
- storage:
- name: Magatzem
- description: Emmagatzema objectes en excés, fins a una capacitat màxima. Es pot utilitzar com a control d'excedents.
-
- energy_generator:
- deliver: Envia
-
- # This will be shown before the amount, so for example 'For 123 Energy'
- toGenerateEnergy: Per a
-
+ balancer:
default:
- name: &energy_generator Generador d'energia
- description: Genera energia consumint figures. Cada generador requereix una figura diferent.
-
- wire_crossings:
- default:
- name: &wire_crossings Wire Splitter
- description: Splits a energy wire into two.
-
+ name: Balancer
+ description: Multifunctional - Evenly distributes all inputs onto all outputs.
merger:
- name: Wire Merger
- description: Merges two energy wires into one.
-
+ name: Merger (compact)
+ description: Merges two conveyor belts into one.
+ merger-inverse:
+ name: Merger (compact)
+ description: Merges two conveyor belts into one.
+ splitter:
+ name: Splitter (compact)
+ description: Splits one conveyor belt into two.
+ splitter-inverse:
+ name: Splitter (compact)
+ description: Splits one conveyor belt into two.
+ storage:
+ default:
+ name: Storage
+ description: Stores excess items, up to a given capacity. Prioritizes the left
+ output and can be used as an overflow gate.
+ wire_tunnel:
+ default:
+ name: Wire Crossing
+ description: Allows to cross two wires without connecting them.
+ constant_signal:
+ default:
+ name: Constant Signal
+ description: Emits a constant signal, which can be either a shape, color or
+ boolean (1 / 0).
+ lever:
+ default:
+ name: Switch
+ description: Can be toggled to emit a boolean signal (1 / 0) on the wires layer,
+ which can then be used to control for example an item filter.
+ logic_gate:
+ default:
+ name: AND Gate
+ description: Emits a boolean "1" if both inputs are truthy. (Truthy means shape,
+ color or boolean "1")
+ not:
+ name: NOT Gate
+ description: Emits a boolean "1" if the input is not truthy. (Truthy means
+ shape, color or boolean "1")
+ xor:
+ name: XOR Gate
+ description: Emits a boolean "1" if one of the inputs is truthy, but not both.
+ (Truthy means shape, color or boolean "1")
+ or:
+ name: OR Gate
+ description: Emits a boolean "1" if one of the inputs is truthy. (Truthy means
+ shape, color or boolean "1")
+ transistor:
+ default:
+ name: Transistor
+ description: Forwards the bottom input if the side input is truthy (a shape,
+ color or "1").
+ mirrored:
+ name: Transistor
+ description: Forwards the bottom input if the side input is truthy (a shape,
+ color or "1").
+ filter:
+ default:
+ name: Filter
+ description: Connect a signal to route all matching items to the top and the
+ remaining to the right. Can be controlled with boolean signals
+ too.
+ display:
+ default:
+ name: Display
+ description: Connect a signal to show it on the display - It can be a shape,
+ color or boolean.
+ reader:
+ default:
+ name: Belt Reader
+ description: Allows to measure the average belt throughput. Outputs the last
+ read item on the wires layer (once unlocked).
+ analyzer:
+ default:
+ name: Shape Analyzer
+ description: Analyzes the top right quadrant of the lowest layer of the shape
+ and returns its shape and color.
+ comparator:
+ default:
+ name: Compare
+ description: Returns boolean "1" if both signals are exactly equal. Can compare
+ shapes, items and booleans.
+ virtual_processor:
+ default:
+ name: Virtual Cutter
+ description: Virtually cuts the shape into two halves.
+ rotater:
+ name: Virtual Rotater
+ description: Virtually rotates the shape, both clockwise and counter-clockwise.
+ unstacker:
+ name: Virtual Unstacker
+ description: Virtually extracts the topmost layer to the right output and the
+ remaining ones to the left.
+ stacker:
+ name: Virtual Stacker
+ description: Virtually stacks the right shape onto the left.
+ painter:
+ name: Virtual Painter
+ description: Virtually paints the shape from the bottom input with the shape on
+ the right input.
storyRewards:
- # Those are the rewards gained from completing the store
reward_cutter_and_trash:
title: Tallar figures
- desc: Acabes de desbloquejar la Cisalla - talla les figures per la meitat de dalt a baix; sense importar la seva/ua orientació!
Assegura't d'eliminar les parts que no utilitzes, si no es pararà - Es per això que t'he donat una paperera, utilitza-la!
-
+ desc: Acabes de desbloquejar la Cisalla - talla les figures per
+ la meitat de dalt a baix; sense importar la seva/ua
+ orientació!
Assegura't d'eliminar les parts que no utilitzes,
+ si no es pararà - Es per això que t'he donat una
+ paperera, utilitza-la!
reward_rotater:
title: Rotar
- desc: El Rotador s'ha desbloquejat! Rota formes en sentit horari 90 graus.
-
+ desc: El Rotador s'ha desbloquejat! Rota formes en sentit
+ horari 90 graus.
reward_painter:
title: Pintar
- desc: >-
- El Pintor s'ha desbloquejat! - Extreu mena de color (de la mateixa forma que les figures) i pinta les figures amb el pintor!
- Si ets daltònic, pots activar l'opció per daltònics en les opcions!
-
+ desc: El Pintor s'ha desbloquejat! - Extreu mena de color (de
+ la mateixa forma que les figures) i pinta les figures amb el
+ pintor!
- Si ets daltònic, pots activar l'opció per
+ daltònics en les opcions!
reward_mixer:
title: Mesclar colors
- desc: El Mesclador de colors s'ha desbloquejat! - Combina dos colors utilitzant la mescla additiva amb aquest edifici!
-
+ desc: El Mesclador de colors s'ha desbloquejat! - Combina dos
+ colors utilitzant la mescla additiva amb aquest
+ edifici!
reward_stacker:
title: Apilador
- desc: Ara pots combinar figures amb el apilador! Ambdues entrades són combinades. Si es poden posar una vora l'altra, es fusionaran. Si no, l'entrada de la dreta s'apilarà damunt de la de l'esquerra!
-
+ desc: Ara pots combinar figures amb el apilador! Ambdues
+ entrades són combinades. Si es poden posar una vora l'altra, es
+ fusionaran. Si no, l'entrada de la dreta
+ s'apilarà damunt de la de l'esquerra!
reward_splitter:
title: Distribuïdor
- desc: El distribuïdor multifuncional s'ha desbloquejat - Pot ser utilitzat per a construir fàbriques més grans per mitjà de la separació i fusió de figures de diferents cintes!
-
+ desc: El distribuïdor multifuncional s'ha desbloquejat - Pot
+ ser utilitzat per a construir fàbriques més grans per mitjà de la
+ separació i fusió de figures de diferents
+ cintes!
reward_tunnel:
title: Túnel
- desc: El túnel s'ha desbloquejat - Ara pots passar objectes a través d'edificis i cintes transportadores!
-
+ desc: El túnel s'ha desbloquejat - Ara pots passar objectes a
+ través d'edificis i cintes transportadores!
reward_rotater_ccw:
title: Rotació antihorària
- desc: Has desbloquejat una variant del rotador - Et permet rotar en sentit antihorari! Per tal de construir-lo, selecciona el rotador i pressiona 'T' per a ciclar les diferents variants!
-
+ desc: Has desbloquejat una variant del rotador - Et permet
+ rotar en sentit antihorari! Per tal de construir-lo, selecciona el
+ rotador i pressiona 'T' per a ciclar les diferents
+ variants!
reward_miner_chainable:
title: Extractor en cadena
- desc: Has desbloquejat el extractor en cadena! Pot passar els seus recursos a altres extractors perquè pugues extraure recursos més eficientment!
-
+ desc: Has desbloquejat el extractor en cadena! Pot
+ passar els seus recursos a altres extractors perquè
+ pugues extraure recursos més eficientment!
reward_underground_belt_tier_2:
title: Túnel de Nivell II
- desc: Has desbloquejat una nova variant del túnel - Té una major distància màxima, i ara pots mesclar tipus de túnels!
-
- reward_splitter_compact:
- title: Distribuïdor compacte
- desc: >-
- Has desbloquejat una variant compacta del distribuïdor - Acepta dues entrades i les fusiona en una sola!
-
+ desc: Has desbloquejat una nova variant del túnel - Té una
+ major distància màxima, i ara pots mesclar tipus de
+ túnels!
reward_cutter_quad:
title: Cisalla quàdruple
- desc: Has desbloquejat una variant de la cisalla - Et permet tallar figures en quatre parts en lloc de sols en dos!
-
+ desc: Has desbloquejat una variant de la cisalla - Et permet
+ tallar figures en quatre parts en lloc de sols en
+ dos!
reward_painter_double:
title: Pintor doble
- desc: Has desbloquejat una variant del pintor - Funciona com el pintor regular però processa dos figures alhora, consumint sols un color en lloc de dos!
-
+ desc: Has desbloquejat una variant del pintor - Funciona com el
+ pintor regular però processa dos figures alhora,
+ consumint sols un color en lloc de dos!
reward_painter_quad:
title: Pintor quàdruple
- desc: Has desbloquejat una variant del pintor - Et permet pintar cada part de la figura individualment!
-
+ desc: Has desbloquejat una variant del pintor - Et permet
+ pintar cada part de la figura individualment!
reward_storage:
title: Magatzem de reserva
- desc: Has desbloquejat una variant de la paperera - Et permet emmagatzemar objectes fins a una capacitat màxima!
-
+ desc: Has desbloquejat una variant de la paperera - Et permet
+ emmagatzemar objectes fins a una capacitat màxima!
reward_freeplay:
title: Joc lliure
- desc: Ho has fet! Has desbloquejat el mode de joc lliure! Això significa que les figures ara són generades aleatòriament! (No t'angoixis/es, hi ha més contingut planejat per a la versió completa - fora del web)
-
+ desc: Ho has fet! Has desbloquejat el mode de joc lliure! Això
+ significa que les figures ara són generades aleatòriament! (No
+ t'angoixis/es, hi ha més contingut planejat per a la versió completa
+ - fora del web)
reward_blueprints:
title: Plànols
- desc: Ara pots copiar i apegar/enxegar parts de la teva/ua fàbrica! Selecciona una àrea (Mantén pressionat CTRL, i arrossega el ratolí), i pressiona 'C' per a copiar-la.
Apegar/enxegar-la no és gratis, necessites produir figures de plànols per a poder fer-ho! (Les que n'acabes d'enviar).
-
- # Special reward, which is shown when there is no reward actually
+ desc: Ara pots copiar i apegar/enxegar parts de la teva/ua
+ fàbrica! Selecciona una àrea (Mantén pressionat CTRL, i arrossega el
+ ratolí), i pressiona 'C' per a copiar-la.
Apegar/enxegar-la
+ no és gratis, necessites produir figures de
+ plànols per a poder fer-ho! (Les que n'acabes d'enviar).
no_reward:
title: Següent nivell
- desc: >-
- Aquest nivell no t'ha donat res, però el següent ho farà!
PD: És millor que no destrueixes la part de la fàbrica existent - Necessitaràs totes aquestes figures més tard per a desbloquejar millores!
-
+ desc: "Aquest nivell no t'ha donat res, però el següent ho farà!
PD: És
+ millor que no destrueixes la part de la fàbrica existent -
+ Necessitaràs totes aquestes figures més tard per a
+ desbloquejar millores!"
no_reward_freeplay:
title: Següent nivell
- desc: >-
- Enhorabona! Per cert, hi ha més contingut planejat per a la versió completa - fora del web!
-
+ desc: Enhorabona! Per cert, hi ha més contingut planejat per a la versió
+ completa - fora del web!
+ reward_balancer:
+ title: Balancer
+ desc: The multifunctional balancer has been unlocked - It can
+ be used to build bigger factories by splitting and merging
+ items onto multiple belts!
+ reward_merger:
+ title: Compact Merger
+ desc: You have unlocked a merger variant of the
+ balancer - It accepts two inputs and merges them
+ into one belt!
+ reward_belt_reader:
+ title: Belt reader
+ desc: You have now unlocked the belt reader! It allows you to
+ measure the throughput of a belt.
And wait until you unlock
+ wires - then it gets really useful!
+ reward_rotater_180:
+ title: Rotater (180 degrees)
+ desc: You just unlocked the 180 degress rotater! - It allows
+ you to rotate a shape by 180 degress (Surprise! :D)
+ reward_wires_filters_and_levers:
+ title: "Wires: Filters & Levers"
+ desc: You just unlocked the wires layer! It is a separate layer
+ on top of the regular layer and introduces a lot of new
+ mechanics!
Since it can be overwhelming a bit, I added a
+ small tutorial - Be sure to have tutorials enabled
+ in the settings!
+ reward_display:
+ title: Display
+ desc: You have unlocked the Display - Connect a signal on the
+ wires layer to visualize its contents!
+ reward_constant_signal:
+ title: Constant Signal
+ desc: You unlocked the constant signal building on the wires
+ layer! This is useful to connect it to item filters
+ for example.
The constant signal can emit a
+ shape, color or
+ boolean (1 / 0).
+ reward_logic_gates:
+ title: Logic Gates
+ desc: You unlocked logic gates! You don't have to be excited
+ about this, but it's actually super cool!
With those gates
+ you can now compute AND, OR, XOR and NOT operations.
As a
+ bonus on top I also just gave you a transistor!
+ reward_virtual_processing:
+ title: Virtual Processing
+ desc: I just gave a whole bunch of new buildings which allow you to
+ simulate the processing of shapes!
You can
+ now simulate a cutter, rotater, stacker and more on the wires layer!
+ With this you now have three options to continue the game:
-
+ Build an automated machine to create any possible
+ shape requested by the HUB (I recommend to try it!).
- Build
+ something cool with wires.
- Continue to play
+ regulary.
Whatever you choose, remember to have fun!
settings:
title: Opcions
categories:
general: General
userInterface: User Interface
advanced: Advanced
-
+ performance: Performance
versionBadges:
dev: Desenvolupament
staging: Staging
prod: Producció
buildDate: Generat
-
labels:
uiScale:
title: Escala de la interfície
- description: >-
- Canvia la dimensió de la interfície de l'usuari. La interfície se seguirà redimensionant depenent de la resolució del teu dispositiu, però aquesta opció controla la quantitat del redimensionat.
+ description: Canvia la dimensió de la interfície de l'usuari. La interfície se
+ seguirà redimensionant depenent de la resolució del teu
+ dispositiu, però aquesta opció controla la quantitat del
+ redimensionat.
scales:
super_small: Micro
small: Petit
regular: Estàndard
large: Gran
huge: Macro
-
autosaveInterval:
title: Interval de guardat automàtic
- description: >-
- Controla el temps entre guardats automàtics que fa el joc, pots deshabilitar-ho des d'aquí
-
+ description: Controla el temps entre guardats automàtics que fa el joc, pots
+ deshabilitar-ho des d'aquí
intervals:
one_minute: 1 Minut
two_minutes: 2 Minuts
@@ -685,22 +736,19 @@ settings:
ten_minutes: 10 Minuts
twenty_minutes: 20 Minuts
disabled: Desactivat
-
scrollWheelSensitivity:
title: Sensitivitat del Zoom
- description: >-
- Canvia la sensitivitat del zoom (Roda del ratolí o del trackpad).
+ description: Canvia la sensitivitat del zoom (Roda del ratolí o del trackpad).
sensitivity:
super_slow: Molt lent
slow: Lent
regular: Regular
fast: Ràpid
super_fast: Molt Ràpid
-
movementSpeed:
title: Velocitat de Moviment
- description: >-
- Canvia la rapidesa amb la que la vista es mou mentres empres el teclat.
+ description: Canvia la rapidesa amb la que la vista es mou mentres empres el
+ teclat.
speeds:
super_slow: Molt lent
slow: Lent
@@ -708,87 +756,116 @@ settings:
fast: Rápid
super_fast: Molt Ràpid
extremely_fast: Extremadament Ràpid
-
language:
title: Idioma
- description: >-
- Canvia l'idioma. Totes les traduccions són contribucions d'usuaris i poden estar incompletes!
-
+ description: Canvia l'idioma. Totes les traduccions són contribucions d'usuaris
+ i poden estar incompletes!
enableColorBlindHelper:
title: Mode per Daltònics
- description: >-
- Habilita diverses eines que et permeten jugar si ets Daltònic.
-
+ description: Habilita diverses eines que et permeten jugar si ets Daltònic.
fullscreen:
title: Pantalla Completa
- description: >-
- Es recomana jugar en Pantalla Completa per aconseguir la millor experiència. Només disponible a la versió completa del joc.
-
+ description: Es recomana jugar en Pantalla Completa per aconseguir la millor
+ experiència. Només disponible a la versió completa del joc.
soundsMuted:
title: Silencia els sons
- description: >-
- Si està activat, silencia tots els sons.
-
+ description: Si està activat, silencia tots els sons.
musicMuted:
title: Silencia la música
- description: >-
- Si està activat, silencia la música.
-
+ description: Si està activat, silencia la música.
theme:
title: Tema del joc (Visual)
- description: >-
- Tria el tema visual (clar / oscur).
+ description: Tria el tema visual (clar / oscur).
themes:
dark: Oscur
light: Clar
-
refreshRate:
title: Objectiu de Simulació
- description: >-
- Si tens un monitor de 144hz, canvia la tarifa de refresc aquí per que el joc es mostri de forma correcta a tarifes de refresc altes. Pot decrementar els FPS si el teu ordenador és massa lent.
-
+ description: Si tens un monitor de 144hz, canvia la tarifa de refresc aquí per
+ que el joc es mostri de forma correcta a tarifes de refresc
+ altes. Pot decrementar els FPS si el teu ordenador és massa
+ lent.
alwaysMultiplace:
title: Col·locació Múltiple
- description: >-
- Si s'activa, tots els edificis es mantindràn seleccionats després de col·locarlos fins que ho cancel·lis. Això és equivalent a mantenir SHIFT permanentment.
-
+ description: Si s'activa, tots els edificis es mantindràn seleccionats després
+ de col·locarlos fins que ho cancel·lis. Això és equivalent a
+ mantenir SHIFT permanentment.
offerHints:
title: Pistes i Tutorials
- description: >-
- Si s'activa, es mostraràn pistes i tutorials mentres es juga. També amaga certs elements visuals fins a un nivell per que sigui més fàcil aprendre a jugar.
-
+ description: Si s'activa, es mostraràn pistes i tutorials mentres es juga. També
+ amaga certs elements visuals fins a un nivell per que sigui més
+ fàcil aprendre a jugar.
enableTunnelSmartplace:
title: Túnels Intel·ligents
- description: >-
- Si s'activa, al col·locar túnels s'eliminaràn les cintes transportadores innecessaris. També et permet arrastrar túnels i els túnels sobrants s'eliminaràn.
-
+ description: Si s'activa, al col·locar túnels s'eliminaràn les cintes
+ transportadores innecessaris. També et permet arrastrar túnels i
+ els túnels sobrants s'eliminaràn.
vignette:
title: Vinyeta
- description: >-
- Activa la vinyeta, que obscureix els cantons de la pantalla i facilita la lectura de texte.
-
+ description: Activa la vinyeta, que obscureix els cantons de la pantalla i
+ facilita la lectura de texte.
rotationByBuilding:
title: Rotació segons el tipus d'edifici.
- description: >-
- Cada tipus d'edifici recorda la rotació que vau definir per última vegada de manera individual. Això pot ser més còmode si canvies freqüentment entre edificis.
-
+ description: Cada tipus d'edifici recorda la rotació que vau definir per última
+ vegada de manera individual. Això pot ser més còmode si canvies
+ freqüentment entre edificis.
compactBuildingInfo:
title: Informació sobre Edificis Compactes
- description: >-
- Escurça els quadres d’informació dels edificis només mostrant les seves velocitats. En cas contrari, es mostra una descripció i una imatge.
-
+ description: Escurça els quadres d’informació dels edificis només mostrant les
+ seves velocitats. En cas contrari, es mostra una descripció i
+ una imatge.
disableCutDeleteWarnings:
title: Desactiva els diàlegs de Talla/Borra
- description: >-
- Desactiva els diàlegs d'advertència que es mostren en tallar / suprimir més de 100 entitats.
-
+ description: Desactiva els diàlegs d'advertència que es mostren en tallar /
+ suprimir més de 100 entitats.
+ soundVolume:
+ title: Sound Volume
+ description: Set the volume for sound effects
+ musicVolume:
+ title: Music Volume
+ description: Set the volume for music
+ lowQualityMapResources:
+ title: Low Quality Map Resources
+ description: Simplifies the rendering of resources on the map when zoomed in to
+ improve performance. It even looks cleaner, so be sure to try it
+ out!
+ disableTileGrid:
+ title: Disable Grid
+ description: Disabling the tile grid can help with the performance. This also
+ makes the game look cleaner!
+ clearCursorOnDeleteWhilePlacing:
+ title: Clear Cursor on Right Click
+ description: Enabled by default, clears the cursor whenever you right click
+ while you have a building selected for placement. If disabled,
+ you can delete buildings by right-clicking while placing a
+ building.
+ lowQualityTextures:
+ title: Low quality textures (Ugly)
+ description: Uses low quality textures to save performance. This will make the
+ game look very ugly!
+ displayChunkBorders:
+ title: Display Chunk Borders
+ description: The game is divided into chunks of 16x16 tiles, if this setting is
+ enabled the borders of each chunk are displayed.
+ pickMinerOnPatch:
+ title: Pick miner on resource patch
+ description: Enabled by default, selects the miner if you use the pipette when
+ hovering a resource patch.
+ simplifiedBelts:
+ title: Simplified Belts (Ugly)
+ description: Does not render belt items except when hovering the belt to save
+ performance. I do not recommend to play with this setting if you
+ do not absolutely need the performance.
+ enableMousePan:
+ title: Enable Mouse Pan
+ description: Allows to move the map by moving the cursor to the edges of the
+ screen. The speed depends on the Movement Speed setting.
+ rangeSliderPercentage: %
keybindings:
title: Combinacions de tecles
- hint: >-
- Tip: Assegura't d'emprar CTRL, SHIFT i ALT! Et permeten col·locar objectes de formes diferents.
-
+ hint: "Tip: Assegura't d'emprar CTRL, SHIFT i ALT! Et permeten col·locar
+ objectes de formes diferents."
resetKeybindings: Resetejar les Combinacions de tecles
-
categoryLabels:
general: Aplicació
ingame: Joc
@@ -797,7 +874,6 @@ keybindings:
massSelect: Sel·lecció Massiva
buildings: Dreceres d'Edificis
placementModifiers: Modificadors de col·locació
-
mappings:
confirm: Confirmar
back: Enrere
@@ -807,58 +883,62 @@ keybindings:
mapMoveLeft: Moure Esquerra
mapMoveFaster: Moure més Ràpid
centerMap: Centrar Mapa
-
mapZoomIn: Apropar
mapZoomOut: Allunyar
createMarker: Crea un Marcador
-
menuOpenShop: Millores
menuOpenStats: Estadístiques
menuClose: Tancar Menú
-
toggleHud: Commutar HUD
toggleFPSInfo: Commutar FPS i Informació de Depuració
switchLayers: Canviar capes
exportScreenshot: Exportar la Base com a Imatge
- belt: *belt
- splitter: *splitter
- underground_belt: *underground_belt
- miner: *miner
- cutter: *cutter
- advanced_processor: *advanced_processor
- rotater: *rotater
- stacker: *stacker
- mixer: *mixer
- energy_generator: *energy_generator
- painter: *painter
- trash: *trash
- wire: *wire
-
+ belt: Cinta transportadora
+ underground_belt: Túnel
+ miner: Extractor
+ cutter: Cisalla
+ rotater: Rotador
+ stacker: Apilador
+ mixer: Mesclador de colors
+ painter: Pintor
+ trash: Paperera
+ wire: Cable
pipette: Pipeta
rotateWhilePlacing: Rotar
- rotateInverseModifier: >-
- Modifier: Rotar en sentit antihorari
+ rotateInverseModifier: "Modifier: Rotar en sentit antihorari"
cycleBuildingVariants: Rotar les Variants
confirmMassDelete: Eliminar àrea
pasteLastBlueprint: Afferar el darrer pla
cycleBuildings: Rotar els Buildings
lockBeltDirection: Habilitar el planificador de cintes transportadores
- switchDirectionLockSide: >-
- Planner: Canviar costat
-
+ switchDirectionLockSide: "Planner: Canviar costat"
massSelectStart: Manteniu premut i arrossegueu per començar
massSelectSelectMultiple: Seleccionar múltiples àrees
massSelectCopy: Copiar àrea
massSelectCut: Tallar àrea
-
placementDisableAutoOrientation: Desactivar orientació automàtica
placeMultiple: Mantenir-se en mode de col·locació
placeInverse: Invertir orientació automàtica de les cintes transportadores
-
+ balancer: Balancer
+ storage: Storage
+ constant_signal: Constant Signal
+ logic_gate: Logic Gate
+ lever: Switch (regular)
+ lever_wires: Switch (wires)
+ filter: Filter
+ wire_tunnel: Wire Crossing
+ display: Display
+ reader: Belt Reader
+ virtual_processor: Virtual Cutter
+ transistor: Transistor
+ analyzer: Shape Analyzer
+ comparator: Compare
about:
title: Sobre aquest Joc
body: >-
- Aquest joc és de codi obert i desenvolupat per Tobias Springer (sóc jo).
+ Aquest joc és de codi obert i desenvolupat per Tobias Springer
+ (sóc jo).
@@ -867,10 +947,8 @@ about:
Banda sonora creada perPeppsen - És increïble.
Finalment, gràcies al meu millor amic Niklas. Sense les nostres sessions de Factorio, aquest joc mai hauria existit.
-
changelog:
title: Registre de Canvis
-
demo:
features:
restoringGames: Restaurar partides guardats
@@ -878,5 +956,64 @@ demo:
oneGameLimit: Limitat a una partida guardada.
customizeKeybindings: Personalitzar teclats
exportingBase: Exportar la base com a Imatge
-
settingNotAvailable: No disponible en la versió de demostració.
+tips:
+ - The hub accepts input of any kind, not just the current shape!
+ - Make sure your factories are modular - it will pay out!
+ - Don't build too close to the hub, or it will be a huge chaos!
+ - If stacking does not work, try switching the inputs.
+ - You can toggle the belt planner direction by pressing R.
+ - Holding CTRL allows dragging of belts without auto-orientation.
+ - Ratios stay the same, as long as all upgrades are on the same Tier.
+ - Serial execution is more efficient than parallel.
+ - You will unlock more variants of buildings later in the game!
+ - You can use T to switch between different variants.
+ - Symmetry is key!
+ - You can weave different tiers of tunnels.
+ - Try to build compact factories - it will pay out!
+ - The painter has a mirrored variant which you can select with T
+ - Having the right building ratios will maximize efficiency.
+ - At maximum level, 5 extractors will fill a single belt.
+ - Don't forget about tunnels!
+ - You don't need to divide up items evenly for full efficiency.
+ - Holding SHIFT will activate the belt planner, letting you place
+ long lines of belts easily.
+ - Cutters always cut vertically, regardless of their orientation.
+ - To get white mix all three colors.
+ - The storage buffer priorities the first output.
+ - Invest time to build repeatable designs - it's worth it!
+ - Holding CTRL allows to place multiple buildings.
+ - You can hold ALT to invert the direction of placed belts.
+ - Efficiency is key!
+ - Shape patches that are further away from the hub are more complex.
+ - Machines have a limited speed, divide them up for maximum efficiency.
+ - Use balancers to maximize your efficiency.
+ - Organization is important. Try not to cross conveyors too much.
+ - Plan in advance, or it will be a huge chaos!
+ - Don't remove your old factories! You'll need them to unlock upgrades.
+ - Try beating level 20 on your own before seeking for help!
+ - Don't complicate things, try to stay simple and you'll go far.
+ - You may need to re-use factories later in the game. Plan your factories to
+ be re-usable.
+ - Sometimes, you can find a needed shape in the map without creating it with
+ stackers.
+ - Full windmills / pinwheels can never spawn naturally.
+ - Color your shapes before cutting for maximum efficiency.
+ - With modules, space is merely a perception; a concern for mortal men.
+ - Make a separate blueprint factory. They're important for modules.
+ - Have a closer look on the color mixer, and your questions will be answered.
+ - Use CTRL + Click to select an area.
+ - Building too close to the hub can get in the way of later projects.
+ - The pin icon next to each shape in the upgrade list pins it to the screen.
+ - Mix all primary colors together to make white!
+ - You have an infinite map, don't cramp your factory, expand!
+ - Also try Factorio! It's my favorite game.
+ - The quad cutter cuts clockwise starting from the top right!
+ - You can download your savegames in the main menu!
+ - This game has a lot of useful keybindings! Be sure to check out the
+ settings page.
+ - This game has a lot of settings, be sure to check them out!
+ - The marker to your hub has a small compass to indicate its direction!
+ - To clear belts, cut the area and then paste it at the same location.
+ - Press F4 to show your FPS and Tick Rate.
+ - Press F4 twice to show the tile of your mouse and camera.
diff --git a/translations/base-cz.yaml b/translations/base-cz.yaml
index 2ee35618..35429076 100644
--- a/translations/base-cz.yaml
+++ b/translations/base-cz.yaml
@@ -1,19 +1,10 @@
-# 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
+ 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ě.
longText: >-
[img]{STEAM_APP_IMAGE}/extras/store_page_gif.gif[/img]
- shapez.io is a game about building factories to automate the creation and processing of increasingly complex shapes across an infinitely expanding map.
- Upon delivering the requested shapes you will progress within the game and unlock upgrades to speed up your factory.
+ shapez.io is a game about building factories to automate the creation and processing of increasingly complex shapes across an infinitely expanding map. Upon delivering the requested shapes you will progress within the game and unlock upgrades to speed up your factory.
As the demand for shapes increases, you will have to scale up your factory to meet the demand - Don't forget about resources though, you will have to expand across the [b]infinite map[/b]!
@@ -51,8 +42,7 @@ steamPage:
[b]This game is open source![/b]
- Anybody can contribute, I'm actively involved in the community and attempt to review all suggestions and take feedback into consideration where possible.
- Be sure to check out my trello board for the full roadmap!
+ Anybody can contribute, I'm actively involved in the community and attempt to review all suggestions and take feedback into consideration where possible. Be sure to check out my trello board for the full roadmap!
[b]Links[/b]
@@ -63,31 +53,19 @@ steamPage:
[*] [url=https://github.com/tobspr/shapez.io]Source code (GitHub)[/url]
[*] [url=https://github.com/tobspr/shapez.io/blob/master/translations/README.md]Help translate[/url]
[/list]
-
discordLink: Official Discord - Chat with me!
-
global:
loading: Načítám
error: Chyba
-
- # How big numbers are rendered, e.g. "10,000"
thousandsDivider: " "
-
- # What symbol to use to seperate the integer part from the fractional part of a number, e.g. "0.4"
- decimalSeparator: "."
-
- # The suffix for large numbers, e.g. 1.3k, 400.2M, etc.
+ decimalSeparator: .
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 sekundami
oneMinuteAgo: před minutou
@@ -96,14 +74,10 @@ global:
xHoursAgo: před hodinami
oneDayAgo: včera
xDaysAgo: před dny
-
- # Short formats for times, e.g. '5h 23m'
secondsShort: s
minutesAndSecondsShort: m s
hoursAndMinutesShort: h m
-
xMinutes: minut
-
keys:
tab: TAB
control: CTRL
@@ -111,13 +85,9 @@ global:
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í!
-
+ intro: Získejte plnou verzi pro odemknutí všech funkcí!
mainMenu:
play: Hrát
changelog: Změny
@@ -125,19 +95,16 @@ mainMenu:
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.
-
+ 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ň
savegameLevelUnknown: Neznámá úroveň
-
continue: Pokračovat
newGame: Nová hra
madeBy: Vytvořil
subreddit: Reddit
-
+ savegameUnnamed: Unnamed
dialogs:
buttons:
ok: OK
@@ -151,113 +118,95 @@ dialogs:
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:
-
+ 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.
-
+ 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:
-
+ text: "Nepovedlo se načíst vaši uloženou hru:"
confirmSavegameDelete:
title: Potvrdit smazání
- text: >-
- Opravdu chcete smazat hru?
-
+ text: Opravdu chcete smazat hru?
savegameDeletionError:
title: Chyba mazání
- text: >-
- Nepovedlo se smazat vaši uloženou hru:
-
+ text: "Nepovedlo se smazat vaši uloženou hru:"
restartRequired:
title: Vyžadován restart
- text: >-
- Pro aplikování nastavení musíte restartovat hru.
-
+ 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í.
-
+ 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 (), která není v demo verzi. Pořiďte si plnou verzi pro lepší zážitek!
-
+ desc: Zkoušíte použít funkci (), 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!
-
+ 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ě:
-
+ 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í - Neničte své staré továrny!
- Karta vylepšení se nachází v pravém horním rohu obrazovky.
-
+ desc: Všechny tvary, které vytvoříte, lze použít k odemčení vylepšení -
+ Neničte své staré továrny! 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 )! Opravdu je chcete smazat?
-
+ desc: Odstraňujete spoustu budov (přesněji )! 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.
-
+ 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 ostatní klávesové zkratky!
- CTRL + Táhnout: Vybrání oblasti.
- SHIFT: Podržením můžete umístit více budov za sebout.
- ALT: Změnit orientaci umístěných pásů.
-
+ 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
+ ostatní klávesové zkratky!
CTRL + Táhnout: Vybrání oblasti. SHIFT: Podržením můžete umístit více budov
+ za sebout. ALT: Změnit orientaci
+ umístěných pásů. "
createMarker:
title: Nová značka
- desc: Pojmenuj jí nějak výstižně, též ji můžeš doplnit zkratkou pro tvar (Kterou si můžete vytvořit zde)
+ desc: Pojmenuj jí nějak výstižně, též ji můžeš doplnit zkratkou
+ pro tvar (Kterou si můžete vytvořit zde)
titleEdit: Upravit značku
-
markerDemoLimit:
- desc: V ukázce můžete vytvořit pouze dvě značky. Získejte plnou verzi pro neomezený počet značek!
+ desc: V ukázce můžete vytvořit pouze dvě značky. Získejte plnou verzi pro
+ neomezený počet značek!
massCutConfirm:
title: Potvrdit vyjmutí
- desc: >-
- Chceš vyjmout spoustu budov (přesněji řečeno )! Vážně to
- chceš udělat?
-
+ desc: Chceš vyjmout spoustu budov (přesněji řečeno )! Vážně to chceš
+ udělat?
exportScreenshotWarning:
title: Exportuj snímek obrazovky
- desc: >-
- Zažádal jsi o exportování své základny jako obrázek. Měj prosím na paměti, že to
- může zejména u větších základen dlouho trvat, nebo dokonce shodit hru!
-
+ desc: Zažádal jsi o exportování své základny jako obrázek. Měj prosím na paměti,
+ že to může zejména u větších základen dlouho trvat, nebo dokonce
+ shodit hru!
massCutInsufficientConfirm:
title: Potvrdit vyjmutí
desc: Nemůžeš si dovolit vložení této oblasti! Skutečně ji chceš vyjmout?
-
+ editSignal:
+ title: Set Signal
+ descItems: "Choose a pre-defined item:"
+ descShortKey: ... or enter the short key of a shape (Which you
+ can generate here)
+ renameSavegame:
+ title: Rename Savegame
+ desc: You can rename your savegame here.
ingame:
- # This is shown in the top left corner and displays useful keybindings in
- # every situation
keybindingsOverlay:
moveMap: Posun mapy
selectBuildings: Vybrat oblast
@@ -274,22 +223,13 @@ ingame:
lockBeltDirection: Zamknout směr pásu
plannerSwitchSide: Otočit strany plánovače
cutSelection: Vyjmout
- copySelection: Kopířovat
+ copySelection: Kopírovat
clearSelection: Zrušit výběr
pipette: Kapátko
- switchLayers: Switch layers
-
- # Everything related to placing buildings (I.e. as soon as you selected a building
- # from the toolbar)
+ switchLayers: Změnit vrstvi
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 pro přepínání mezi variantami.
-
- # Shows the hotkey in the ui, e.g. "Hotkey: Q"
- hotkeyLabel: >-
- Klávesová zkratka:
-
+ hotkeyLabel: "Klávesová zkratka: "
infoTexts:
speed: Rychlost
range: Dosah
@@ -297,36 +237,42 @@ ingame:
oneItemPerSecond: 1 tvar / sekundu
itemsPerSecond: tvarů / s
itemsPerSecondDouble: (x2)
-
tiles: dílků
-
- # The notification when completing a level
levelCompleteNotification:
- # is replaced by the actual level, so this gets 'Level 03' for example.
levelTitle: Úroveň
completed: Dokončeno
unlockText: "Odemčeno: !"
buttonNextLevel: Další úroveň
-
- # Notifications on the lower right
notifications:
newUpgrade: Nová aktualizace je k dispozici!
gameSaved: Hra byla uložena.
-
- # The "Upgrades" window
+ freeplayLevelComplete: Level has been completed!
shop:
title: Vylepšení
buttonUnlock: Vylepšit
-
- # Gets replaced to e.g. "Tier IX"
tier: Úroveň
-
- # 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
+ - XI
+ - XII
+ - XIII
+ - XIV
+ - XV
+ - XVI
+ - XVII
+ - XVIII
+ - XIX
+ - XX
maximumLevel: MAXIMÁLNÍ ÚROVEŇ (Rychlost x)
-
- # The "Statistics" window
statistics:
title: Statistiky
dataSources:
@@ -340,50 +286,45 @@ ingame:
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: / m
-
- # Settings menu, when you press "ESC"
+ shapesDisplayUnits:
+ second: / s
+ minute: / m
+ hour: / h
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.
Stisknutím klávesy vytvoříte značku na aktuálním místě, nebo klepnutím pravým tlačítkem vytvoříte značku na vybraném místě na mapě.
+ 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.
Stisknutím klávesy vytvoříte značku
+ na aktuálním místě, nebo klepnutím pravým tlačítkem
+ 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 extraktor na nalezištěkruhového tvaru a vytěžte jej!
- 1_2_conveyor: >-
- Připojte extraktor pomocí dopravníkového pásu k vašemu HUBu!
Tip: Klikněte a táhněte myší pro položení více pásů!
-
- 1_3_expand: >-
- Toto NENÍ hra o čekání! Sestavte další extraktory a pásy, abyste dosáhli cíle rychleji.
Tip: Chcete-li umístit více extraktorů, podržte SHIFT. Pomocí R je můžete otočit.
-
+ 1_1_extractor: Umístěte extraktor na nalezištěkruhového
+ tvaru a vytěžte jej!
+ 1_2_conveyor: "Připojte extraktor pomocí dopravníkového pásu k
+ vašemu HUBu!
Tip: Klikněte a táhněte
+ myší pro položení více pásů!"
+ 1_3_expand: "Toto NENÍ hra o čekání! Sestavte další extraktory
+ a pásy, abyste dosáhli cíle rychleji.
Tip: Chcete-li
+ umístit více extraktorů, podržte SHIFT. Pomocí
+ R je můžete otočit."
colors:
red: Červená
green: Zelená
@@ -398,8 +339,10 @@ ingame:
title: Vrstvy
empty: Prázdné
copyKey: Copy Key
-
-# All shop upgrades
+ connectedMiners:
+ one_miner: 1 Miner
+ n_miners: Miners
+ limited_items: Limited to
shopUpgrades:
belt:
name: Pásy, distribuce & tunely
@@ -413,83 +356,65 @@ shopUpgrades:
painting:
name: Míchání a barvení
description: Rychlost x → x
-
-# 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
+ name: 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:
default:
- name: &miner Extraktor
+ name: 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
+ description: Umístěte na náleziště tvaru nebo barvy pro zahájení těžby. Lze
+ zapojit po skupinách.
+ underground_belt:
default:
- name: &underground_belt Tunel
+ name: 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. Pokud použijete jen jednu půlku, nezapomeňte druhou smazat, jinak se vám produkce zasekne!
+ name: Pila
+ description: Rozřízne tvar svisle na dvě části. Pokud použijete jen
+ jednu půlku, nezapomeňte druhou smazat, jinak se vám produkce
+ zasekne!
quad:
name: Rozebírač
- description: Rozebere tvar na čtyři části. Pokud použijete jen některé části, nezapomeňte ostatní smazat, jinak se vám produkce zasekne!
-
+ description: Rozebere tvar na čtyři části. Pokud použijete jen některé
+ části, nezapomeňte ostatní smazat, jinak se vám produkce
+ zasekne!
rotater:
default:
- name: &rotater Rotor
+ name: 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
- fl:
+ rotate180:
name: Rotate (180)
description: Rotates shapes by 180 degrees.
-
stacker:
default:
- name: &stacker Kombinátor
- description: Spojí tvary dohromady. Pokud nemohou být spojeny, pravý tvar je položen na levý.
-
+ name: 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
+ name: Mixér na barvy
description: Smíchá dvě barvy.
-
painter:
default:
- name: &painter Barvič
- description: &painter_desc Obarví celý tvar v levém vstupu barvou z pravého vstupu.
+ name: 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.
@@ -497,202 +422,333 @@ buildings:
name: Barvič (čtyřnásobný)
description: Umožňuje obarvit každý dílek tvaru samostatně.
mirrored:
- name: *painter
- description: *painter_desc
-
+ name: Barvič
+ description: Obarví celý tvar v levém vstupu barvou z pravého vstupu.
trash:
default:
- name: &trash Koš
+ name: 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.
wire:
default:
name: Kabel
description: Dovoluje přenos energie.
- advanced_processor:
+ second:
+ name: Wire
+ description: Transfers signals, which can be items, colors or booleans (1 / 0).
+ Different colored wires do not connect.
+ balancer:
default:
- name: Invertor barev
- description: Přijme barvu či tvar a převrátí jej.
- energy_generator:
- deliver: Dodej
- toGenerateEnergy: Pro
- default:
- name: Generátor energie
- description: Vyrábí energii zpracováním tvarů.
- wire_crossings:
- default:
- name: Dělič kabelů
- description: Rozdělí kabel na dva.
+ name: Balancer
+ description: Multifunctional - Evenly distributes all inputs onto all outputs.
merger:
- name: Slučovač kabelů
- description: Spojí dva kabely do jednoho.
-
+ name: Merger (compact)
+ description: Merges two conveyor belts into one.
+ merger-inverse:
+ name: Merger (compact)
+ description: Merges two conveyor belts into one.
+ splitter:
+ name: Splitter (compact)
+ description: Splits one conveyor belt into two.
+ splitter-inverse:
+ name: Splitter (compact)
+ description: Splits one conveyor belt into two.
+ storage:
+ default:
+ name: Storage
+ description: Stores excess items, up to a given capacity. Prioritizes the left
+ output and can be used as an overflow gate.
+ wire_tunnel:
+ default:
+ name: Wire Crossing
+ description: Allows to cross two wires without connecting them.
+ constant_signal:
+ default:
+ name: Constant Signal
+ description: Emits a constant signal, which can be either a shape, color or
+ boolean (1 / 0).
+ lever:
+ default:
+ name: Switch
+ description: Can be toggled to emit a boolean signal (1 / 0) on the wires layer,
+ which can then be used to control for example an item filter.
+ logic_gate:
+ default:
+ name: AND Gate
+ description: Emits a boolean "1" if both inputs are truthy. (Truthy means shape,
+ color or boolean "1")
+ not:
+ name: NOT Gate
+ description: Emits a boolean "1" if the input is not truthy. (Truthy means
+ shape, color or boolean "1")
+ xor:
+ name: XOR Gate
+ description: Emits a boolean "1" if one of the inputs is truthy, but not both.
+ (Truthy means shape, color or boolean "1")
+ or:
+ name: OR Gate
+ description: Emits a boolean "1" if one of the inputs is truthy. (Truthy means
+ shape, color or boolean "1")
+ transistor:
+ default:
+ name: Transistor
+ description: Forwards the bottom input if the side input is truthy (a shape,
+ color or "1").
+ mirrored:
+ name: Transistor
+ description: Forwards the bottom input if the side input is truthy (a shape,
+ color or "1").
+ filter:
+ default:
+ name: Filter
+ description: Connect a signal to route all matching items to the top and the
+ remaining to the right. Can be controlled with boolean signals
+ too.
+ display:
+ default:
+ name: Display
+ description: Connect a signal to show it on the display - It can be a shape,
+ color or boolean.
+ reader:
+ default:
+ name: Belt Reader
+ description: Allows to measure the average belt throughput. Outputs the last
+ read item on the wires layer (once unlocked).
+ analyzer:
+ default:
+ name: Shape Analyzer
+ description: Analyzes the top right quadrant of the lowest layer of the shape
+ and returns its shape and color.
+ comparator:
+ default:
+ name: Compare
+ description: Returns boolean "1" if both signals are exactly equal. Can compare
+ shapes, items and booleans.
+ virtual_processor:
+ default:
+ name: Virtual Cutter
+ description: Virtually cuts the shape into two halves.
+ rotater:
+ name: Virtual Rotater
+ description: Virtually rotates the shape, both clockwise and counter-clockwise.
+ unstacker:
+ name: Virtual Unstacker
+ description: Virtually extracts the topmost layer to the right output and the
+ remaining ones to the left.
+ stacker:
+ name: Virtual Stacker
+ description: Virtually stacks the right shape onto the left.
+ painter:
+ name: Virtual Painter
+ description: Virtually paints the shape from the bottom input with the shape on
+ the right input.
storyRewards:
- # Those are the rewards gained from completing the store
reward_cutter_and_trash:
title: Řezání tvarů
- desc: Právě jste odemknuli pilu - řeže tvary svisle bez ohledu na svou orientaci!
Nezapomeňte se zbavovat odpadu, jinak se vám zasekne produkce - pro tento účel jsem vám odemknul koš, který můžete použít na mazání odpadu!
-
+ desc: Právě jste odemknuli pilu - řeže tvary
+ svisle bez ohledu na svou
+ orientaci!
Nezapomeňte se zbavovat odpadu, jinak se
+ vám zasekne produkce - pro tento účel jsem vám odemknul
+ koš, který můžete použít na mazání odpadu!
reward_rotater:
title: Otáčení
- desc: Rotor byl právě odemčen! Otáčí tvary po směru hodinových ručiček o 90 stupňů.
-
+ desc: Rotor byl právě odemčen! Otáčí tvary po směru hodinových
+ ručiček o 90 stupňů.
reward_painter:
title: Barvení
- desc: >-
- Barvič byl právě odemčen - Vytěžte nějaká ložiska barev (podobně jako těžíte tvary) a spojte je s tvarem v barviči pro jeho obarvení!
PS: Pokud jste barvoslepý, v nastavení naleznete režim pro barvoslepé!
-
+ desc: "Barvič byl právě odemčen - Vytěžte nějaká ložiska barev
+ (podobně jako těžíte tvary) a spojte je s tvarem v barviči pro jeho
+ obarvení!
PS: Pokud jste barvoslepý, v nastavení naleznete
+ režim pro barvoslepé!"
reward_mixer:
title: Míchání barev
- desc: Mixér byl právě odemčen - zkombinuje dvě barvy pomocí aditivního míchání!
-
+ desc: Mixér byl právě odemčen - zkombinuje dvě barvy pomocí
+ aditivního míchání!
reward_stacker:
title: Kombinátor
- desc: Nyní můžete spojovat tvary pomocí kombinátor! Pokud to jde, oba tvary se slepí k sobě. Pokud ne, tvar vpravo se nalepí na tvar vlevo!
-
+ desc: Nyní můžete spojovat tvary pomocí kombinátor! Pokud to
+ jde, oba tvary se slepí k sobě. Pokud ne, tvar
+ vpravo se nalepí na tvar vlevo!
reward_splitter:
title: Rozřazování/Spojování pásu
- desc: Multifuknční balancer byl právě odemčen - Může být použít pro stavbu větších továren díky tomu, že rozřazuje tvary mezi dva pásy!
-
+ desc: Multifuknční balancer byl právě odemčen - Může být použít
+ pro stavbu větších továren díky tomu, že rozřazuje
+ tvary mezi dva pásy!
reward_tunnel:
title: Tunel
- desc: Tunel byl právě odemčen - Umožňuje vézt suroviny pod budovami a pásy.
-
+ desc: Tunel 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 rotoru - Umožňuje vám otáčet proti směru hodinových ručiček. Vyberte rotor a zmáčkněte 'T' pro přepnutí mezi variantami!
-
+ desc: Odemknuli jste variantu rotoru - Umožňuje vám otáčet
+ proti směru hodinových ručiček. Vyberte rotor a zmáčkněte
+ 'T' pro přepnutí mezi variantami!
reward_miner_chainable:
title: Napojovací extraktor
- desc: Odemknuli jste variantu extraktoru! Může přesměrovat vytěžené zdroje do dalších extraktorů pro efektivnější těžbu!
-
+ desc: Odemknuli jste variantu extraktoru! Může
+ přesměrovat vytěžené zdroje do dalších extraktorů
+ pro efektivnější těžbu!
reward_underground_belt_tier_2:
title: Tunel II. úrovně
- desc: Odemknuli jste tunel II. úrovně - Má delší dosah a také můžete nyní míchat tunely dohromady!
-
- reward_splitter_compact:
- title: Kompaktní spojka
- desc: >-
- Odemknuli jste variantu balanceru - Spojuje dva pásy do jednoho!
-
+ desc: Odemknuli jste tunel II. úrovně - Má delší
+ dosah a také můžete nyní míchat tunely dohromady!
reward_cutter_quad:
title: Řezání na čtvrtiny
- desc: Odemknuli jste variantu pily - Rozebírač vám umožňuje rozdělit tvary na čtvrtiny místo na poloviny!
-
+ desc: Odemknuli jste variantu pily - Rozebírač vám umožňuje
+ rozdělit tvary na čtvrtiny místo na poloviny!
reward_painter_double:
title: Dvojité barvení
- desc: Odemknuli jste variantu barviče - Funguje stejně jako normální, ale nabarví dva tvary naráz pomocí jedné barvy!
-
+ desc: Odemknuli jste variantu barviče - Funguje stejně jako
+ normální, ale nabarví dva tvary naráz pomocí jedné
+ barvy!
reward_painter_quad:
title: Čtyřstranné barvení
- desc: Odemknuli jste variantu painter - Umožní vám nabarvit každou čtvrtinu tvaru jinou barvou!
-
+ desc: Odemknuli jste variantu painter - Umožní vám nabarvit
+ každou čtvrtinu tvaru jinou barvou!
reward_storage:
title: Sklad
- desc: Odemknuli jste variantu koše - Umožňuje vám skladovat věci až do určité kapacity!
-
+ desc: Odemknuli jste variantu koše - Umožňuje vám skladovat
+ věci až do určité kapacity!
reward_freeplay:
title: Volná hra
- desc: Dokázali jste to! Odemknuli jste volnou hru! Další tvary jsou již náhodně generované! (pro plnou verzi plánujeme více obsahu!)
-
+ desc: Dokázali jste to! Odemknuli jste volnou hru! Další tvary
+ jsou již náhodně generované! (pro plnou verzi plánujeme více
+ obsahu!)
reward_blueprints:
title: Plány
- desc: Nyní můžete kopírovat a vkládat části továrny! Vyberte oblast (Držte CTRL a táhněte myší) a zmáčkněte 'C' pro zkopírování.
Vkládání není zadarmo, potřebujete produkovat tvary pro plány na výstavbu! (Jsou to ty které jste právě dodali).
-
- # Special reward, which is shown when there is no reward actually
+ desc: Nyní můžete kopírovat a vkládat části továrny! Vyberte
+ oblast (Držte CTRL a táhněte myší) a zmáčkněte 'C' pro
+ zkopírování.
Vkládání není zadarmo,
+ potřebujete produkovat tvary pro plány na výstavbu!
+ (Jsou to ty které jste právě dodali).
no_reward:
title: Další úroveň
- desc: >-
- Tato úroveň vám nic neodemknula, ale s další to přijde!
PS: Radši neničte vaše stávající továrny - budete potřebovat všechny produkované tvary později na odemčení vylepšení!
-
+ desc: "Tato úroveň vám nic neodemknula, ale s další to přijde!
PS:
+ Radši neničte vaše stávající továrny - budete potřebovat
+ všechny produkované tvary později na
+ odemčení vylepšení!"
no_reward_freeplay:
title: Další úroveň
- desc: >-
- Gratuluji! Mimochodem, více obsahu najdete v plné verzi!
-
+ desc: Gratuluji! Mimochodem, více obsahu najdete v plné verzi!
+ reward_balancer:
+ title: Balancer
+ desc: The multifunctional balancer has been unlocked - It can
+ be used to build bigger factories by splitting and merging
+ items onto multiple belts!
+ reward_merger:
+ title: Compact Merger
+ desc: You have unlocked a merger variant of the
+ balancer - It accepts two inputs and merges them
+ into one belt!
+ reward_belt_reader:
+ title: Belt reader
+ desc: You have now unlocked the belt reader! It allows you to
+ measure the throughput of a belt.
And wait until you unlock
+ wires - then it gets really useful!
+ reward_rotater_180:
+ title: Rotater (180 degrees)
+ desc: You just unlocked the 180 degress rotater! - It allows
+ you to rotate a shape by 180 degress (Surprise! :D)
+ reward_wires_filters_and_levers:
+ title: "Wires: Filters & Levers"
+ desc: You just unlocked the wires layer! It is a separate layer
+ on top of the regular layer and introduces a lot of new
+ mechanics!
Since it can be overwhelming a bit, I added a
+ small tutorial - Be sure to have tutorials enabled
+ in the settings!
+ reward_display:
+ title: Display
+ desc: You have unlocked the Display - Connect a signal on the
+ wires layer to visualize its contents!
+ reward_constant_signal:
+ title: Constant Signal
+ desc: You unlocked the constant signal building on the wires
+ layer! This is useful to connect it to item filters
+ for example.
The constant signal can emit a
+ shape, color or
+ boolean (1 / 0).
+ reward_logic_gates:
+ title: Logic Gates
+ desc: You unlocked logic gates! You don't have to be excited
+ about this, but it's actually super cool!
With those gates
+ you can now compute AND, OR, XOR and NOT operations.
As a
+ bonus on top I also just gave you a transistor!
+ reward_virtual_processing:
+ title: Virtual Processing
+ desc: I just gave a whole bunch of new buildings which allow you to
+ simulate the processing of shapes!
You can
+ now simulate a cutter, rotater, stacker and more on the wires layer!
+ With this you now have three options to continue the game:
-
+ Build an automated machine to create any possible
+ shape requested by the HUB (I recommend to try it!).
- Build
+ something cool with wires.
- Continue to play
+ regulary.
Whatever you choose, remember to have fun!
settings:
title: Nastavení
categories:
general: Obecné
userInterface: Uživatelské rozhraní
advanced: Rozšířené
-
+ performance: Performance
versionBadges:
dev: Vývojová verze
staging: Testovací verze
prod: Produkční verze
buildDate: Sestaveno
-
labels:
uiScale:
title: Škálování 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.
+ 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).
+ 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í.
-
+ 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.
-
+ 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.
-
+ description: Ztlumí všechny zvuky.
musicMuted:
title: Ztlumit hudbu
- description: >-
- Ztlumí veškerou hudbu.
-
+ description: Ztlumí veškerou hudbu.
theme:
title: Motiv
- description: >-
- Vybere motiv (světlý / tmavý).
-
+ description: Vybere motiv (světlý / tmavý).
themes:
dark: Tmavý
light: Světlý
-
refreshRate:
title: Obnovovací frekvence
- 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č.
-
+ 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.
-
+ 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.
-
+ 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: Rychlost kamery
description: Mění, jak rychle se kamera posouvá při použití klávesnice.
@@ -705,18 +761,17 @@ settings:
extremely_fast: Extrémně Rychlá
enableTunnelSmartplace:
title: Chytré tunely
- description: >-
- Pokládání tunelů po zapnutí bude samo odstraňovat nepotřebné pásy.
- Umožňuje také potahování tunelů a nadbytečné tunely budou odstraněny.
+ description: Pokládání tunelů po zapnutí bude samo odstraňovat nepotřebné pásy.
+ Umožňuje také potahování tunelů a nadbytečné tunely budou
+ odstraněny.
vignette:
title: Viněta
- description: >-
- Zapne vinětu, která ztmaví rohy obrazovky, což umožňuje lepší čtení textu.
-
+ description: Zapne vinětu, která ztmaví rohy obrazovky, což umožňuje lepší čtení
+ textu.
autosaveInterval:
title: Interval automatického ukládání
- description: >-
- Určuje jak často se hra automaticky ukládá. Lze ji zde také úplně zakázat.
+ description: Určuje jak často se hra automaticky ukládá. Lze ji zde také úplně
+ zakázat.
intervals:
one_minute: 1 minuta
two_minutes: 2 minuty
@@ -724,36 +779,71 @@ settings:
ten_minutes: 10 minut
twenty_minutes: 20 minut
disabled: Zrušeno
-
compactBuildingInfo:
title: Kompaktní informace o stavbách
- description: >-
- Zkrátí informační políčka pro budovy tím, že pouze ukáže jejich koeficient.
- V opačném případě zobrazí popis a obrázek.
-
+ description: Zkrátí informační políčka pro budovy tím, že pouze ukáže jejich
+ koeficient. V opačném případě zobrazí popis a obrázek.
disableCutDeleteWarnings:
title: Zakázat upozornění o vyjmutí nebo odstranění
- description: >-
- Deaktivujte varovná dialogová okna vyvolaná při vymutí/mazání více než 100
- entit.
-
+ description: Deaktivujte varovná dialogová okna vyvolaná při vymutí/mazání více
+ než 100 entit.
enableColorBlindHelper:
title: Režim pro barvoslepé
- description: Zapné různé nástroje, které vám umožní hrát hru i pokud jste barvoslepí.
+ description: Zapné různé nástroje, které vám umožní hrát hru i pokud jste
+ barvoslepí.
rotationByBuilding:
title: Rotation by building type
- description: >-
- Each building type remembers the rotation you last set it to individually.
- This may be more comfortable if you frequently switch between placing
- different building types.
-
+ description: Each building type remembers the rotation you last set it to
+ individually. This may be more comfortable if you frequently
+ switch between placing different building types.
+ soundVolume:
+ title: Sound Volume
+ description: Set the volume for sound effects
+ musicVolume:
+ title: Music Volume
+ description: Set the volume for music
+ lowQualityMapResources:
+ title: Low Quality Map Resources
+ description: Simplifies the rendering of resources on the map when zoomed in to
+ improve performance. It even looks cleaner, so be sure to try it
+ out!
+ disableTileGrid:
+ title: Disable Grid
+ description: Disabling the tile grid can help with the performance. This also
+ makes the game look cleaner!
+ clearCursorOnDeleteWhilePlacing:
+ title: Clear Cursor on Right Click
+ description: Enabled by default, clears the cursor whenever you right click
+ while you have a building selected for placement. If disabled,
+ you can delete buildings by right-clicking while placing a
+ building.
+ lowQualityTextures:
+ title: Low quality textures (Ugly)
+ description: Uses low quality textures to save performance. This will make the
+ game look very ugly!
+ displayChunkBorders:
+ title: Display Chunk Borders
+ description: The game is divided into chunks of 16x16 tiles, if this setting is
+ enabled the borders of each chunk are displayed.
+ pickMinerOnPatch:
+ title: Pick miner on resource patch
+ description: Enabled by default, selects the miner if you use the pipette when
+ hovering a resource patch.
+ simplifiedBelts:
+ title: Simplified Belts (Ugly)
+ description: Does not render belt items except when hovering the belt to save
+ performance. I do not recommend to play with this setting if you
+ do not absolutely need the performance.
+ enableMousePan:
+ title: Enable Mouse Pan
+ description: Allows to move the map by moving the cursor to the edges of the
+ screen. The speed depends on the Movement Speed setting.
+ rangeSliderPercentage: %
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í.
-
+ 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
@@ -762,7 +852,6 @@ keybindings:
massSelect: Hromadný výběr
buildings: Zkratky pro stavbu
placementModifiers: Modifikátory umístění
-
mappings:
confirm: Potvrdit
back: Zpět
@@ -772,38 +861,30 @@ keybindings:
mapMoveLeft: Posun doleva
mapMoveFaster: Rychlejší posun
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
-
+ belt: Dopravníkový pás
+ underground_belt: Tunel
+ miner: Extraktor
+ cutter: Pila
+ rotater: Rotor
+ stacker: Kombinátor
+ mixer: Mixér na barvy
+ painter: Barvič
+ trash: Koš
rotateWhilePlacing: Otočit
- rotateInverseModifier: >-
- Modifikátor: Otočit proti směru hodinových ručiček
+ 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ů
@@ -813,35 +894,39 @@ keybindings:
lockBeltDirection: Zamknout směr pásu
switchDirectionLockSide: Otočit strany zámku plánovače
pipette: Kapátko
- menuClose: Close Menu
- switchLayers: Switch layers
- advanced_processor: Color Inverter
- energy_generator: Energy Generator
- wire: Energy Wire
-
+ menuClose: Zavřít menu
+ switchLayers: Změnit vrstvi
+ wire: Kabel
+ balancer: Balancer
+ storage: Storage
+ constant_signal: Constant Signal
+ logic_gate: Logic Gate
+ lever: Switch (regular)
+ lever_wires: Switch (wires)
+ filter: Filter
+ wire_tunnel: Wire Crossing
+ display: Display
+ reader: Belt Reader
+ virtual_processor: Virtual Cutter
+ transistor: Transistor
+ analyzer: Shape Analyzer
+ comparator: Compare
about:
title: O hře
body: >-
- Tato hra je open source a je vyvíjená Tobiasem Springerem (česky neumí, ale je to fakt frajer :) ).
+ Tato hra je open source a je vyvíjená Tobiasem Springerem
+ (česky neumí, ale je to fakt frajer :) ).
-
- V neposlední řadě by Tobias (já jen tlumočím) rád poděkoval skvělému kamarádovi Niklasi - Bez hodin strávených
- u factoria by tato hra nikdy neexistovala.
+ Soundtrack udělal Peppsen - Je úžasnej.
+ V neposlední řadě by Tobias (já jen tlumočím) rád poděkoval skvělému kamarádovi Niklasi - Bez hodin strávených u factoria by tato hra nikdy neexistovala.
changelog:
title: Seznam změn
-
demo:
features:
restoringGames: Nahrávání uložených her
@@ -849,5 +934,64 @@ demo:
oneGameLimit: Omezeno pouze na jednu uloženou hru
customizeKeybindings: Změna klávesových zkratek
exportingBase: Exportovat celou základnu jako obrázek
-
settingNotAvailable: Nedostupné v demo verzi.
+tips:
+ - The hub accepts input of any kind, not just the current shape!
+ - Make sure your factories are modular - it will pay out!
+ - Don't build too close to the hub, or it will be a huge chaos!
+ - If stacking does not work, try switching the inputs.
+ - You can toggle the belt planner direction by pressing R.
+ - Holding CTRL allows dragging of belts without auto-orientation.
+ - Ratios stay the same, as long as all upgrades are on the same Tier.
+ - Serial execution is more efficient than parallel.
+ - You will unlock more variants of buildings later in the game!
+ - You can use T to switch between different variants.
+ - Symmetry is key!
+ - You can weave different tiers of tunnels.
+ - Try to build compact factories - it will pay out!
+ - The painter has a mirrored variant which you can select with T
+ - Having the right building ratios will maximize efficiency.
+ - At maximum level, 5 extractors will fill a single belt.
+ - Don't forget about tunnels!
+ - You don't need to divide up items evenly for full efficiency.
+ - Holding SHIFT will activate the belt planner, letting you place
+ long lines of belts easily.
+ - Cutters always cut vertically, regardless of their orientation.
+ - To get white mix all three colors.
+ - The storage buffer priorities the first output.
+ - Invest time to build repeatable designs - it's worth it!
+ - Holding CTRL allows to place multiple buildings.
+ - You can hold ALT to invert the direction of placed belts.
+ - Efficiency is key!
+ - Shape patches that are further away from the hub are more complex.
+ - Machines have a limited speed, divide them up for maximum efficiency.
+ - Use balancers to maximize your efficiency.
+ - Organization is important. Try not to cross conveyors too much.
+ - Plan in advance, or it will be a huge chaos!
+ - Don't remove your old factories! You'll need them to unlock upgrades.
+ - Try beating level 20 on your own before seeking for help!
+ - Don't complicate things, try to stay simple and you'll go far.
+ - You may need to re-use factories later in the game. Plan your factories to
+ be re-usable.
+ - Sometimes, you can find a needed shape in the map without creating it with
+ stackers.
+ - Full windmills / pinwheels can never spawn naturally.
+ - Color your shapes before cutting for maximum efficiency.
+ - With modules, space is merely a perception; a concern for mortal men.
+ - Make a separate blueprint factory. They're important for modules.
+ - Have a closer look on the color mixer, and your questions will be answered.
+ - Use CTRL + Click to select an area.
+ - Building too close to the hub can get in the way of later projects.
+ - The pin icon next to each shape in the upgrade list pins it to the screen.
+ - Mix all primary colors together to make white!
+ - You have an infinite map, don't cramp your factory, expand!
+ - Also try Factorio! It's my favorite game.
+ - The quad cutter cuts clockwise starting from the top right!
+ - You can download your savegames in the main menu!
+ - This game has a lot of useful keybindings! Be sure to check out the
+ settings page.
+ - This game has a lot of settings, be sure to check them out!
+ - The marker to your hub has a small compass to indicate its direction!
+ - To clear belts, cut the area and then paste it at the same location.
+ - Press F4 to show your FPS and Tick Rate.
+ - Press F4 twice to show the tile of your mouse and camera.
diff --git a/translations/base-da.yaml b/translations/base-da.yaml
index abfe89a6..b8cad180 100644
--- a/translations/base-da.yaml
+++ b/translations/base-da.yaml
@@ -1,36 +1,8 @@
-#
-# 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: `. They are encapsulated within angle brackets. The correct
-# translation for this one in German for example would be: `Taste: ` (notice
-# how the placeholder stayed '' 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 handler om at bygge fabrikker på en grænseløs spilleflade for automatisk at skabe og kombinere figurer, der i stigende grad bliver mere komplicerede.
-
- # This is the text shown above the Discord link
+ shortText: shapez.io handler om at bygge fabrikker på en grænseløs spilleflade
+ for automatisk at skabe og kombinere figurer, der i stigende grad bliver
+ mere komplicerede.
discordLink: Officiel Discord - Snak lidt med mig!
-
- # 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]
@@ -74,8 +46,7 @@ steamPage:
[b]Dette spil er open source![/b]
- Enhver kan kontribuere, jeg er aktivt involveret i fælleskabet og prøver at gennemgå alle forslag og tage feedback i betragtning når det er muligt.
- Husk at tjekke mit trello board for den fulde køreplan!
+ Enhver kan kontribuere, jeg er aktivt involveret i fælleskabet og prøver at gennemgå alle forslag og tage feedback i betragtning når det er muligt. Husk at tjekke mit trello board for den fulde køreplan!
[b]Link[/b]
@@ -86,29 +57,18 @@ steamPage:
[*] [url=https://github.com/tobspr/shapez.io]Kildekode (GitHub)[/url]
[*] [url=https://github.com/tobspr/shapez.io/blob/master/translations/README.md]Hjælp med at oversætte[/url]
[/list]
-
global:
loading: Indlæser
error: Fejl
-
- # How big numbers are rendered, e.g. "10,000"
- thousandsDivider: "."
-
- # What symbol to use to seperate the integer part from the fractional part of a number, e.g. "0.4"
+ thousandsDivider: .
decimalSeparator: ","
-
- # The suffix for large numbers, e.g. 1.3k, 400.2M, etc.
suffix:
thousands: k
millions: mio
billions: mia
trillions: bio
-
- # Shown for infinitely big numbers
infinite: uendelig
-
time:
- # Used for formatting past time dates
oneSecondAgo: et sekund siden
xSecondsAgo: sekunder siden
oneMinuteAgo: et minut siden
@@ -117,14 +77,10 @@ global:
xHoursAgo: timer siden
oneDayAgo: en dag siden
xDaysAgo: dage siden
-
- # Short formats for times, e.g. '5h 23m'
secondsShort: s
minutesAndSecondsShort: m s
hoursAndMinutesShort: t m
-
xMinutes: minutter
-
keys:
tab: TAB
control: CTRL
@@ -132,13 +88,9 @@ global:
escape: ESC
shift: SKIFT
space: MELLEMRUM
-
demoBanners:
- # This is the "advertisement" shown in the main menu and other various places
title: Demo Version
- intro: >-
- Køb spillet for at få den fulde oplevelse!
-
+ intro: Køb spillet for at få den fulde oplevelse!
mainMenu:
play: Spil
continue: Fortsæt
@@ -150,14 +102,11 @@ mainMenu:
discordLink: Officiel Discord Server
helpTranslate: Hjælp med at oversætte!
madeBy: Lavet af
-
- # This is shown when using firefox and other browsers which are not supported.
- browserWarning: >-
- Undskyld, men spillet er kendt for at køre langsomt på denne browser! Køb spillet eller download chrome for den fulde oplevelse.
-
+ browserWarning: Undskyld, men spillet er kendt for at køre langsomt på denne
+ browser! Køb spillet eller download chrome for den fulde oplevelse.
savegameLevel: Niveau
savegameLevelUnknown: Ukendt Niveau
-
+ savegameUnnamed: Unnamed
dialogs:
buttons:
ok: OK
@@ -171,110 +120,97 @@ dialogs:
viewUpdate: Se Opdatering
showUpgrades: Vis Opgraderinger
showKeybindings: Vis Keybindings
-
importSavegameError:
title: Import Fejl
- text: >-
- Importering af gemt spil fejlede:
-
+ text: "Importering af gemt spil fejlede:"
importSavegameSuccess:
title: Gemt spil Importeret
- text: >-
- Dit gemte spil blev importet.
-
+ text: Dit gemte spil blev importet.
gameLoadFailure:
title: Spillet er i stykker
- text: >-
- Det lykkedes ikke at åbne dit gemte spil:
-
+ text: "Det lykkedes ikke at åbne dit gemte spil:"
confirmSavegameDelete:
title: Bekræft sletning
- text: >-
- Er du sikker på du vil slette dit gemte spil?
-
+ text: Er du sikker på du vil slette dit gemte spil?
savegameDeletionError:
title: Sletning fejlede
- text: >-
- Det lykkedes ikke at slette dit gemte spil:
-
+ text: "Det lykkedes ikke at slette dit gemte spil:"
restartRequired:
title: Genstart er nødvendig
- text: >-
- Du er nødt til at genstarte spillet for at anvende indstillingerne.
-
+ text: Du er nødt til at genstarte spillet for at anvende indstillingerne.
editKeybinding:
title: Ændr Keybinding
desc: Tryk på knappen du vil bruge, eller escape for at fortryde.
-
resetKeybindingsConfirmation:
title: Nulstil keybindings
- desc: Dette vil nulstille alle keybindings til deres standarder. Bekræft venligst.
-
+ desc: Dette vil nulstille alle keybindings til deres standarder. Bekræft
+ venligst.
keybindingsResetOk:
title: Keybindings nulstillet
desc: Keybindings er nulstillet til deres standarder!
-
featureRestriction:
title: Demoversion
- desc: Du prøvede at bruge en funktion () der ikke er tilgængelig i demoen. Overvej at købe spillet for den fulde oplevelse!
-
+ desc: Du prøvede at bruge en funktion () der ikke er tilgængelig i
+ demoen. Overvej at købe spillet for den fulde oplevelse!
oneSavegameLimit:
title: Begrænset mængde gemte spil
- desc: Du kan kun have et gemt spil ad gangen in demoversionen. Vær sød at slette det nuværende gemte spil eller at købe spillet!
-
+ desc: Du kan kun have et gemt spil ad gangen in demoversionen. Vær sød at slette
+ det nuværende gemte spil eller at købe spillet!
updateSummary:
title: Ny opdatering!
- desc: >-
- Dette har ændret sig siden sidst du spillede:
-
+ desc: "Dette har ændret sig siden sidst du spillede:"
upgradesIntroduction:
title: Få Opgraderinger
- desc: >-
- Alle figurer du producerer kan blive brugt til at få opgraderinger - Ødelæg ikke dine gamle fabrikker!
- Opgraderingeringsvinduet kan findes i det øverste højre hjørne af skærmen.
-
+ desc: Alle figurer du producerer kan blive brugt til at få opgraderinger -
+ Ødelæg ikke dine gamle fabrikker!
+ Opgraderingeringsvinduet kan findes i det øverste højre hjørne af
+ skærmen.
massDeleteConfirm:
title: Bekræft sletning
- desc: >-
- Du er ved at slette mange bygninger ( helt præcist)! Er du sikker på at det er det du vil gøre?
-
+ desc: Du er ved at slette mange bygninger ( helt præcist)! Er du sikker
+ på at det er det du vil gøre?
massCutConfirm:
title: Bekræft klip
- desc: >-
- Du er ved at klippe mange bygninger ( helt præcist)! Er du sikker på at det er det du vil gøre?
-
+ desc: Du er ved at klippe mange bygninger ( helt præcist)! Er du sikker
+ på at det er det du vil gøre?
blueprintsNotUnlocked:
title: Ikke tilgængeligt endnu
- desc: >-
- Gennemfør Niveau 12 for at bruge arbejdstegninger!
-
+ desc: Gennemfør Niveau 12 for at bruge arbejdstegninger!
keybindingsIntroduction:
title: Brugbare keybindings
- desc: >-
- Dette spil har mange keybindings, som gør det lettere at bygge store fabrikker.
- Her er et par, men husk at tjekke keybindings!
- CTRL + Træk: Vælg et område.
- SHIFT: Hold for at placere flere af en bygning.
- ALT: Vend retningen af placerede transportbånd.
-
+ desc: "Dette spil har mange keybindings, som gør det lettere at bygge store
+ fabrikker. Her er et par, men husk at tjekke
+ keybindings!
CTRL +
+ Træk: Vælg et område. SHIFT:
+ Hold for at placere flere af en bygning. ALT: Vend retningen af placerede
+ transportbånd. "
createMarker:
title: Ny Markør
- desc: Giv det et betydningsfuldt navn. du kan også inkludere en kort kode der repræsenterer en figur (Som du kan lave her)
+ desc: Giv det et betydningsfuldt navn. du kan også inkludere en kort
+ kode der repræsenterer en figur (Som du kan lave her)
titleEdit: Rediger Markør
-
markerDemoLimit:
desc: Du kan kun lave to markører i demoen. Køb spillet for uendelige markører!
-
exportScreenshotWarning:
title: Eksporter skærmbillede
- desc: Du bad om at eksportere din fabrik som et skærmbillede. Bemærk at dette kan være rimelig langsomt for en stor base og kan endda lukke dit spil!
+ desc: Du bad om at eksportere din fabrik som et skærmbillede. Bemærk at dette
+ kan være rimelig langsomt for en stor base og kan endda lukke dit
+ spil!
massCutInsufficientConfirm:
title: Bekræft klip
- desc: Du har ikke råd til at sætte dette område ind igen! Er du sikker på at du vil klippe det?
-
+ desc: Du har ikke råd til at sætte dette område ind igen! Er du sikker på at du
+ vil klippe det?
+ editSignal:
+ title: Set Signal
+ descItems: "Choose a pre-defined item:"
+ descShortKey: ... or enter the short key of a shape (Which you
+ can generate here)
+ renameSavegame:
+ title: Rename Savegame
+ desc: You can rename your savegame here.
ingame:
- # This is shown in the top left corner and displays useful keybindings in
- # every situation
keybindingsOverlay:
moveMap: Bevæg dig
selectBuildings: Marker område
@@ -295,8 +231,6 @@ ingame:
clearSelection: Ryd Selektion
pipette: Pipette
switchLayers: Skift Lag
-
- # Names of the colors, used for the color blind mode
colors:
red: Rød
green: Grøn
@@ -307,18 +241,9 @@ ingame:
white: Hvid
uncolored: Ingen farve
black: Sort
-
- # 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: Tryk for at vælge type.
-
- # Shows the hotkey in the ui, e.g. "Hotkey: Q"
- hotkeyLabel: >-
- Hotkey:
-
+ hotkeyLabel: "Hotkey: "
infoTexts:
speed: Fart
range: Rækkevidde
@@ -326,36 +251,42 @@ ingame:
oneItemPerSecond: 1 genstand / sekund
itemsPerSecond: genstande / s
itemsPerSecondDouble: (x2)
-
tiles: flader
-
- # The notification when completing a level
levelCompleteNotification:
- # is replaced by the actual level, so this gets 'Level 03' for example.
levelTitle: Niveau
completed: Klaret
unlockText: er nu tilgængelig!
buttonNextLevel: Næste Niveau
-
- # Notifications on the lower right
notifications:
newUpgrade: En ny opgradering er tilgængelig!
gameSaved: Dit spil er gemt.
-
- # The "Upgrades" window
+ freeplayLevelComplete: Level has been completed!
shop:
title: Opgraderinger
buttonUnlock: Opgrader
-
- # Gets replaced to e.g. "Tier IX"
tier: Trin
-
- # 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
+ - XI
+ - XII
+ - XIII
+ - XIV
+ - XV
+ - XVI
+ - XVII
+ - XVIII
+ - XIX
+ - XX
maximumLevel: HØJESTE NIVEAU (Speed x)
-
- # The "Statistics" window
statistics:
title: Statistikker
dataSources:
@@ -364,62 +295,58 @@ ingame:
description: Viser mængden af opbevarede figurer i din centrale bygning.
produced:
title: Produceret
- description: Viser alle de figurer hele din fabrik producerer, inklusiv produkter brugt til videre produktion.
+ description: Viser alle de figurer hele din fabrik producerer, inklusiv
+ produkter brugt til videre produktion.
delivered:
title: Afleveret
description: Viser figurer som er afleveret til din centrale bygning.
noShapesProduced: Ingen figurer er blevet produceret indtil videre.
-
- # Displays the shapes per minute, e.g. '523 / m'
- shapesPerMinute: / m
-
- # Settings menu, when you press "ESC"
+ shapesDisplayUnits:
+ second: / s
+ minute: / m
+ hour: / h
settingsMenu:
playtime: Spilletid
-
buildingsPlaced: Bygninger
beltsPlaced: Bælter
-
buttons:
continue: Fortsæt
settings: Indstillinger
menu: Hovedmenu
-
- # Bottom left tutorial hints
tutorialHints:
title: Har du brug for hjælp?
showHint: Vis hint
hideHint: Luk
-
- # When placing a blueprint
blueprintPlacer:
cost: Pris
-
- # Map markers
waypoints:
waypoints: Markører
hub: HUB
- description: Venstreklik en markør for at hoppe til den, højreklik for at slette den.
Tryk for at lave en markør på det nuværende sted, eller højreklik for at lave en markør på det valgte sted.
+ description: Venstreklik en markør for at hoppe til den, højreklik for at slette
+ den.
Tryk for at lave en markør på det nuværende
+ sted, eller højreklik for at lave en markør på det
+ valgte sted.
creationSuccessNotification: Markør er sat.
-
- # Shape viewer
shapeViewer:
title: Lag
empty: Tom
copyKey: Kopier Kode
-
- # Interactive tutorial
interactiveTutorial:
title: Tutorial
hints:
- 1_1_extractor: Sæt en udvinder på toppen af encirkelfigur for at begynde produktion af den!
- 1_2_conveyor: >-
- Forbind udvinderen til din hub med et transportbælte!
Tip: Tryk og træk bæltet med din mus!
-
- 1_3_expand: >-
- Dette er IKKE et idle game! Byg flere udvindere og bælter for at færdiggøre målet hurtigere.
Tip: Hold SKIFT for at sætte flere udvindere, og tryk R for at rotere dem.
-
-# All shop upgrades
+ 1_1_extractor: Sæt en udvinder på toppen af
+ encirkelfigur for at begynde produktion af den!
+ 1_2_conveyor: "Forbind udvinderen til din hub med et
+ transportbælte!
Tip: Tryk og
+ træk bæltet med din mus!"
+ 1_3_expand: "Dette er IKKE et idle game! Byg flere udvindere og
+ bælter for at færdiggøre målet hurtigere.
Tip: Hold
+ SKIFT for at sætte flere udvindere, og tryk
+ R for at rotere dem."
+ connectedMiners:
+ one_miner: 1 Miner
+ n_miners: Miners
+ limited_items: Limited to
shopUpgrades:
belt:
name: Bælter, Fordelere & Tuneller
@@ -433,243 +360,362 @@ shopUpgrades:
painting:
name: Blanding & Maling
description: Fart x → x
-
-# Buildings and their name / description
buildings:
hub:
deliver: Aflever
toUnlock: for at få adgang til
levelShortcut: NIV
-
belt:
default:
- name: &belt Transportbælte
+ name: Transportbælte
description: Transporterer figurer, hold og træk for at sætte flere.
-
- # Internal name for the Extractor
miner:
default:
- name: &miner Udvinder
+ name: Udvinder
description: Placer over en figur eller farve for at udvinde den.
-
chainable:
name: Udvinder (Kæde)
description: Placer over en figur eller farve for at udvinde den. Kan kædes.
-
- # Internal name for the Tunnel
underground_belt:
default:
- name: &underground_belt Tunnel
+ name: Tunnel
description: Laver tunneller under bygninger og bælter.
-
tier2:
name: Tunnel Trin II
description: Laver tunneller under bygninger og bælter.
-
- # Internal name for the Balancer
- splitter:
- default:
- name: &splitter Fordeler
- description: Flere funktioner - Fordeler alle modtagne varer jævnt.
-
- compact:
- name: Sammenlægger (kompakt)
- description: Lægger to bælter sammen til et.
-
- compact-inverse:
- name: Sammenlægger (kompakt)
- description: Lægger to bælter sammen til et.
-
cutter:
default:
- name: &cutter Klipper
- description: Klipper figurer fra top til bund og udsender begge halvdele. Hvis du kun bruger den ene halvdel så husk at ødelægge den anden del, ellers går maskinen i stå!
+ name: Klipper
+ description: Klipper figurer fra top til bund og udsender begge halvdele.
+ Hvis du kun bruger den ene halvdel så husk at ødelægge
+ den anden del, ellers går maskinen i stå!
quad:
name: Klipper (firdeler)
- description: Klipper figurer om til fire dele. Hvis du kun bruger nogle af dem så husk at ødelægge de andre dele, ellers går maskinen i stå!
-
+ description: Klipper figurer om til fire dele. Hvis du kun bruger nogle
+ af dem så husk at ødelægge de andre dele, ellers går maskinen i
+ stå!
rotater:
default:
- name: &rotater Drejer
+ name: Drejer
description: Drejer figurer 90 grader med uret.
ccw:
name: Drejer (mod uret)
description: Drejer figurer 90 grader mod uret.
- fl:
- name: Drejer (180)
- description: Drejer figurer 180 grader.
-
+ rotate180:
+ name: Rotate (180)
+ description: Rotates shapes by 180 degrees.
stacker:
default:
- name: &stacker Stabler
- description: Stabler begge figurer. Hvis de ikke kan sammensmeltes, så sættes den højre figur oven på den venstre.
-
+ name: Stabler
+ description: Stabler begge figurer. Hvis de ikke kan sammensmeltes, så sættes
+ den højre figur oven på den venstre.
mixer:
default:
- name: &mixer Farveblander
+ name: Farveblander
description: Blander to farver med additiv blanding.
-
painter:
default:
- name: &painter Maler
- description: &painter_desc Farver hele figuren fra venstre side med farven fra toppen.
-
+ name: Maler
+ description: Farver hele figuren fra venstre side med farven fra toppen.
mirrored:
- name: *painter
- description: *painter_desc
-
+ name: Maler
+ description: Farver hele figuren fra venstre side med farven fra toppen.
double:
name: Maler (Dobbelt)
description: Farver figurerne fra venstre side med farven fra toppen.
quad:
name: Maler (Quad)
description: Lader dig farve hver fjerdel af figuren med forskellige farver.
-
trash:
default:
- name: &trash Skraldespand
+ name: Skraldespand
description: Tillader input fra alle sider og ødelægger dem. For evigt.
-
- storage:
- name: Opbevaring
- description: Opbevarer ekstra figurer, til en given kapicitet. Kan bruges til at håndtere overproduktion.
-
- energy_generator:
- deliver: Aflever
- toGenerateEnergy: For energi
-
- default:
- name: &energy_generator Energigenerator
- description: Genererer energi ved at optage figurer. Hver energigenerator kræver forskellige figurer.
wire:
default:
name: Energiledning
description: Lader dig transportere energi.
- advanced_processor:
+ second:
+ name: Wire
+ description: Transfers signals, which can be items, colors or booleans (1 / 0).
+ Different colored wires do not connect.
+ balancer:
default:
- name: Farveomvender
- description: Tager imod en farve, og giver den modsatte.
- wire_crossings:
- default:
- name: Ledningsspalter
- description: Spalter en energiledning i to.
+ name: Balancer
+ description: Multifunctional - Evenly distributes all inputs onto all outputs.
merger:
- name: Ledningssammenlægger
- description: Lægger to energiledninger sammen til en.
-
+ name: Merger (compact)
+ description: Merges two conveyor belts into one.
+ merger-inverse:
+ name: Merger (compact)
+ description: Merges two conveyor belts into one.
+ splitter:
+ name: Splitter (compact)
+ description: Splits one conveyor belt into two.
+ splitter-inverse:
+ name: Splitter (compact)
+ description: Splits one conveyor belt into two.
+ storage:
+ default:
+ name: Storage
+ description: Stores excess items, up to a given capacity. Prioritizes the left
+ output and can be used as an overflow gate.
+ wire_tunnel:
+ default:
+ name: Wire Crossing
+ description: Allows to cross two wires without connecting them.
+ constant_signal:
+ default:
+ name: Constant Signal
+ description: Emits a constant signal, which can be either a shape, color or
+ boolean (1 / 0).
+ lever:
+ default:
+ name: Switch
+ description: Can be toggled to emit a boolean signal (1 / 0) on the wires layer,
+ which can then be used to control for example an item filter.
+ logic_gate:
+ default:
+ name: AND Gate
+ description: Emits a boolean "1" if both inputs are truthy. (Truthy means shape,
+ color or boolean "1")
+ not:
+ name: NOT Gate
+ description: Emits a boolean "1" if the input is not truthy. (Truthy means
+ shape, color or boolean "1")
+ xor:
+ name: XOR Gate
+ description: Emits a boolean "1" if one of the inputs is truthy, but not both.
+ (Truthy means shape, color or boolean "1")
+ or:
+ name: OR Gate
+ description: Emits a boolean "1" if one of the inputs is truthy. (Truthy means
+ shape, color or boolean "1")
+ transistor:
+ default:
+ name: Transistor
+ description: Forwards the bottom input if the side input is truthy (a shape,
+ color or "1").
+ mirrored:
+ name: Transistor
+ description: Forwards the bottom input if the side input is truthy (a shape,
+ color or "1").
+ filter:
+ default:
+ name: Filter
+ description: Connect a signal to route all matching items to the top and the
+ remaining to the right. Can be controlled with boolean signals
+ too.
+ display:
+ default:
+ name: Display
+ description: Connect a signal to show it on the display - It can be a shape,
+ color or boolean.
+ reader:
+ default:
+ name: Belt Reader
+ description: Allows to measure the average belt throughput. Outputs the last
+ read item on the wires layer (once unlocked).
+ analyzer:
+ default:
+ name: Shape Analyzer
+ description: Analyzes the top right quadrant of the lowest layer of the shape
+ and returns its shape and color.
+ comparator:
+ default:
+ name: Compare
+ description: Returns boolean "1" if both signals are exactly equal. Can compare
+ shapes, items and booleans.
+ virtual_processor:
+ default:
+ name: Virtual Cutter
+ description: Virtually cuts the shape into two halves.
+ rotater:
+ name: Virtual Rotater
+ description: Virtually rotates the shape, both clockwise and counter-clockwise.
+ unstacker:
+ name: Virtual Unstacker
+ description: Virtually extracts the topmost layer to the right output and the
+ remaining ones to the left.
+ stacker:
+ name: Virtual Stacker
+ description: Virtually stacks the right shape onto the left.
+ painter:
+ name: Virtual Painter
+ description: Virtually paints the shape from the bottom input with the shape on
+ the right input.
storyRewards:
- # Those are the rewards gained from completing the store
reward_cutter_and_trash:
title: Klippe Figurer
- desc: Du har lige fået adgang til klipperen - den klipper figurer i to fra top til bund uanset hvordan den vender!
Sørg for at ødelægge alt du ikke har brug for, ellers går den i stå - Til dette har jeg givet dig skraldespanden, som ødelægger alt du putter i den!
-
+ desc: Du har lige fået adgang til klipperen - den klipper
+ figurer i to fra top til bund uanset hvordan den
+ vender!
Sørg for at ødelægge alt du ikke har brug for, ellers
+ går den i stå - Til dette har jeg givet dig
+ skraldespanden, som ødelægger alt du putter i den!
reward_rotater:
title: Rotation
- desc: Drejeren er nu tilgængelig! Den drejer figurer 90 grader med uret.
-
+ desc: Drejeren er nu tilgængelig! Den drejer figurer 90 grader
+ med uret.
reward_painter:
title: Maling
- desc: >-
- Maleren er nu tilgængelig - Få noget farve med udvinderen (som du også gør med figurer) og kombiner det med en farve i maleren for at farve dem!
PS: Hvis du er farveblind, så er der en farveblindstilstand i indstillingerne!
-
+ desc: "Maleren er nu tilgængelig - Få noget farve med
+ udvinderen (som du også gør med figurer) og kombiner det med en
+ farve i maleren for at farve dem!
PS: Hvis du er farveblind,
+ så er der en farveblindstilstand i
+ indstillingerne!"
reward_mixer:
title: Farveblanding
- desc: Farveblanderen er nu tilgængelig - Kombiner to farver ved brug af (strong>additiv blanding med denne bygning!
-
+ desc: Farveblanderen er nu tilgængelig - Kombiner to farver ved
+ brug af (strong>additiv blanding med denne bygning!
reward_stacker:
title: Stabler
- desc: Du kan du stable figurer med stableren! Begge inputs stables. Hvis de kan sættes ved siden af hinanden, sammensmeltes de. Hvis ikke, bliver det højre input stablet ovenpå det venstre!
-
+ desc: Du kan du stable figurer med stableren! Begge inputs
+ stables. Hvis de kan sættes ved siden af hinanden,
+ sammensmeltes de. Hvis ikke, bliver det højre input
+ stablet ovenpå det venstre!
reward_splitter:
title: Fordeler/Sammenlægger
- desc: Den flerfunktionelle Fordeler er nu tilgængelig - Den kan bruges til at bygge større fabrikker ved at fordele og sammenlægge varer på flere bælter!
-
+ desc: Den flerfunktionelle Fordeler er nu tilgængelig - Den kan
+ bruges til at bygge større fabrikker ved at fordele og
+ sammenlægge varer på flere bælter!
reward_tunnel:
title: Tunnel
- desc: Tunnellen er nu tilgængelig - Du kan nu lave tuneller under bælter og bygninger!
-
+ desc: Tunnellen er nu tilgængelig - Du kan nu lave tuneller
+ under bælter og bygninger!
reward_rotater_ccw:
title: Rotation mod uret
- desc: Du har fået adgang til en variant af drejeren - Den lader dig dreje ting mod uret! For at bygge den skal du vælge drejeren og trykke 'T'!
-
+ desc: Du har fået adgang til en variant af drejeren - Den lader
+ dig dreje ting mod uret! For at bygge den skal du vælge drejeren og
+ trykke 'T'!
reward_miner_chainable:
title: Kædeudvinder
- desc: Kædeudvinder er nu tilgængelig! Den kan videregive sine resurser til andre udvindere, så du kan udvinde resurser mere effektivt!
-
+ desc: Kædeudvinder er nu tilgængelig! Den kan
+ videregive sine resurser til andre udvindere, så du
+ kan udvinde resurser mere effektivt!
reward_underground_belt_tier_2:
title: Tunnel Trin II
- desc: Du har fået adgang til en variant af tunnellen - Den har en større rækkevidde, og du kan også bruge begge typer tunneller på den samme strækning!
-
- reward_splitter_compact:
- title: Kompakt Fordeler
- desc: >-
- Du har fået adgang til en kompakt variant af fordeleren - Den tager to inputs og lægger dem sammen til en!
-
+ desc: Du har fået adgang til en variant af tunnellen - Den har
+ en større rækkevidde, og du kan også bruge begge
+ typer tunneller på den samme strækning!
reward_cutter_quad:
title: Quad Klipining
- desc: Du har fået adgang til en variant af klipperen - Den lader dig klippe figurer i fire dele i stedet for kun to!
-
+ desc: Du har fået adgang til en variant af klipperen - Den
+ lader dig klippe figurer i fire dele i stedet for
+ kun to!
reward_painter_double:
title: Dobbelt Maling
- desc: Du har fået adgang til en variant af maleren - Den virker som en normal maler, men maler to figurer samtidig og bruger kun en farve i stedet for to.
-
+ desc: Du har fået adgang til en variant af maleren - Den virker
+ som en normal maler, men maler to figurer samtidig
+ og bruger kun en farve i stedet for to.
reward_painter_quad:
title: Quad Maling
- desc: Du har fået adgang til en variant af maleren - Den lader dig male alle dele af en figur hver for sig!
-
+ desc: Du har fået adgang til en variant af maleren - Den lader
+ dig male alle dele af en figur hver for sig!
reward_storage:
title: Opbevaringsbuffer
- desc: Du har fået adgang til en variant af skraldespanden - Den lader dig opbevare varer til en hvis kapacitet!
-
+ desc: Du har fået adgang til en variant af skraldespanden - Den
+ lader dig opbevare varer til en hvis kapacitet!
reward_freeplay:
title: Frit spil
- desc: Du klarede det! Du har fået adgang til frit spil! Dette betyder at figurer nu er tilfældigt genereret! (Vær ikke bekymret, mere indhold er planlagt for den betalte version!)
-
+ desc: Du klarede det! Du har fået adgang til frit spil! Dette
+ betyder at figurer nu er tilfældigt genereret! (Vær ikke bekymret,
+ mere indhold er planlagt for den betalte version!)
reward_blueprints:
title: Arbejdstegninger
- desc: Du kan nu kopiere og indsætte dele af din fabrik! Vælg et område (Hold CTRL, og træk med musen), og tryk 'C' for at kopiere det.
At sætte det ind er ikke gratis. Du skal producere arbejdstegning figurer for at have råd til det! (Dem du lige har leveret).
-
- # Special reward, which is shown when there is no reward actually
+ desc: Du kan nu kopiere og indsætte dele af din fabrik! Vælg et
+ område (Hold CTRL, og træk med musen), og tryk 'C' for at kopiere
+ det.
At sætte det ind er ikke gratis. Du
+ skal producere arbejdstegning figurer for at have
+ råd til det! (Dem du lige har leveret).
no_reward:
title: Næste niveau
- desc: >-
- Dette niveau gav dig ingen belønninger, men det vil det næste!
PS: Du må hellere lade være med at ødelægge din fabrik - Du får brug for alle de figurer senere igen for at få opgraderinger!
-
+ desc: "Dette niveau gav dig ingen belønninger, men det vil det næste!
+ PS: Du må hellere lade være med at ødelægge din fabrik - Du får brug
+ for alle de figurer senere igen for at få
+ opgraderinger!"
no_reward_freeplay:
title: Næste niveau
- desc: >-
- Tillykke! Forresten er mere indhold planlagt for den betalte version!
-
+ desc: Tillykke! Forresten er mere indhold planlagt for den betalte version!
+ reward_balancer:
+ title: Balancer
+ desc: The multifunctional balancer has been unlocked - It can
+ be used to build bigger factories by splitting and merging
+ items onto multiple belts!
+ reward_merger:
+ title: Compact Merger
+ desc: You have unlocked a merger variant of the
+ balancer - It accepts two inputs and merges them
+ into one belt!
+ reward_belt_reader:
+ title: Belt reader
+ desc: You have now unlocked the belt reader! It allows you to
+ measure the throughput of a belt.
And wait until you unlock
+ wires - then it gets really useful!
+ reward_rotater_180:
+ title: Rotater (180 degrees)
+ desc: You just unlocked the 180 degress rotater! - It allows
+ you to rotate a shape by 180 degress (Surprise! :D)
+ reward_wires_filters_and_levers:
+ title: "Wires: Filters & Levers"
+ desc: You just unlocked the wires layer! It is a separate layer
+ on top of the regular layer and introduces a lot of new
+ mechanics!
Since it can be overwhelming a bit, I added a
+ small tutorial - Be sure to have tutorials enabled
+ in the settings!
+ reward_display:
+ title: Display
+ desc: You have unlocked the Display - Connect a signal on the
+ wires layer to visualize its contents!
+ reward_constant_signal:
+ title: Constant Signal
+ desc: You unlocked the constant signal building on the wires
+ layer! This is useful to connect it to item filters
+ for example.
The constant signal can emit a
+ shape, color or
+ boolean (1 / 0).
+ reward_logic_gates:
+ title: Logic Gates
+ desc: You unlocked logic gates! You don't have to be excited
+ about this, but it's actually super cool!
With those gates
+ you can now compute AND, OR, XOR and NOT operations.
As a
+ bonus on top I also just gave you a transistor!
+ reward_virtual_processing:
+ title: Virtual Processing
+ desc: I just gave a whole bunch of new buildings which allow you to
+ simulate the processing of shapes!
You can
+ now simulate a cutter, rotater, stacker and more on the wires layer!
+ With this you now have three options to continue the game:
-
+ Build an automated machine to create any possible
+ shape requested by the HUB (I recommend to try it!).
- Build
+ something cool with wires.
- Continue to play
+ regulary.
Whatever you choose, remember to have fun!
settings:
title: Indstillinger
categories:
general: Generelt
userInterface: Brugerflade
advanced: Avanceret
-
+ performance: Performance
versionBadges:
dev: Udvikling
staging: Iscenesættelse
prod: Produktion
buildDate: Bygget
-
labels:
uiScale:
title: Grænseflade størrelse
- description: >-
- Ændrer størrelsen på brugerfladen. Den vil stadig skalere baseret på opløsningen af din skærm, men denne indstilling bestemmer hvor meget den skalerer.
+ description: Ændrer størrelsen på brugerfladen. Den vil stadig skalere baseret
+ på opløsningen af din skærm, men denne indstilling bestemmer
+ hvor meget den skalerer.
scales:
super_small: Meget lille
small: Lille
regular: Normal
large: Store
huge: Kæmpe
-
autosaveInterval:
title: Autogem Interval
- description: >-
- Ændrer hvor ofte spillet gemmer automatisk. Du kan også slå det helt fra her.
-
+ description: Ændrer hvor ofte spillet gemmer automatisk. Du kan også slå det
+ helt fra her.
intervals:
one_minute: 1 Minut
two_minutes: 2 Minutter
@@ -677,22 +723,19 @@ settings:
ten_minutes: 10 Minutter
twenty_minutes: 20 Minutter
disabled: Slået fra
-
scrollWheelSensitivity:
title: Zoom følsomhed
- description: >-
- Ændrer hvor følsomt zoomet er (Enten musehjulet eller trackpad).
+ description: Ændrer hvor følsomt zoomet er (Enten musehjulet eller trackpad).
sensitivity:
super_slow: Meget langsom
slow: Langsom
regular: Normal
fast: Hurtig
super_fast: Meget hurtig
-
movementSpeed:
title: Bevægelseshastighed
- description: >-
- Ændrer hvor hurtigt du kan bevæge dit overblik når du bruger tastaturet.
+ description: Ændrer hvor hurtigt du kan bevæge dit overblik når du bruger
+ tastaturet.
speeds:
super_slow: Meget langsom
slow: Langsom
@@ -700,87 +743,116 @@ settings:
fast: Hurtig
super_fast: Meget hurtig
extremely_fast: Ekstremt hurtig
-
language:
title: Sprog
- description: >-
- Ændrer sproget. All oversættelser er lavet af fælleskabet og kan være ufuldstændige!
-
+ description: Ændrer sproget. All oversættelser er lavet af fælleskabet og kan
+ være ufuldstændige!
enableColorBlindHelper:
title: Farveblindstilstand
- description: >-
- Aktiverer forskellige redskaber der lader dig spille, selv hvis du er farveblind.
-
+ description: Aktiverer forskellige redskaber der lader dig spille, selv hvis du
+ er farveblind.
fullscreen:
title: Fuld skærm
- description: >-
- Det er foreslået at spille i fuld skærm for den bedste oplevelse. Kun tilgængelig i den betalte version.
-
+ description: Det er foreslået at spille i fuld skærm for den bedste oplevelse.
+ Kun tilgængelig i den betalte version.
soundsMuted:
title: Slå lydeffekterne fra
- description: >-
- Aktiver for at slå alle lydeffekter fra.
-
+ description: Aktiver for at slå alle lydeffekter fra.
musicMuted:
title: Slå musik fra
- description: >-
- Aktiver for at slå al musik fra.
-
+ description: Aktiver for at slå al musik fra.
theme:
title: Tema
- description: >-
- Vælg tema (lys / mørk).
+ description: Vælg tema (lys / mørk).
themes:
dark: Mørk
light: Lys
-
refreshRate:
title: Simulationsmål
- description: >-
- Hvis du har en 144hz skærm, så ændr opdateringshastigheden her så spillet vil simulere den højere opdateringshastighed korrekt. Dette kan faktisk sænke din FPS hvis din computer er for langsom.
-
+ description: Hvis du har en 144hz skærm, så ændr opdateringshastigheden her så
+ spillet vil simulere den højere opdateringshastighed korrekt.
+ Dette kan faktisk sænke din FPS hvis din computer er for
+ langsom.
alwaysMultiplace:
title: Multiplacér
- description: >-
- Aktiver for at alle bygninger fortsætter med at være valgt efter placering, indtil du vælger dem fra. Dette svarer til altid at holde SKIFT nede.
-
+ description: Aktiver for at alle bygninger fortsætter med at være valgt efter
+ placering, indtil du vælger dem fra. Dette svarer til altid at
+ holde SKIFT nede.
offerHints:
title: Hints & Vejledning
- description: >-
- Om spillet skal tilbyde hints og vejledning imens du spiller. Skjuler også visse dele af brugerfladen indtil et givent niveau for at gøre det nemmere at lære spillet at kende.
-
+ description: Om spillet skal tilbyde hints og vejledning imens du spiller.
+ Skjuler også visse dele af brugerfladen indtil et givent niveau
+ for at gøre det nemmere at lære spillet at kende.
enableTunnelSmartplace:
title: Smarte Tunneller
- description: >-
- Aktiver for at placering af tunneller automatisk fjerner unødige bælter. Dette gør igså at du kan trække tunneller så overskydende tunneller fjernes.
-
+ description: Aktiver for at placering af tunneller automatisk fjerner unødige
+ bælter. Dette gør igså at du kan trække tunneller så
+ overskydende tunneller fjernes.
vignette:
title: Vignette
- description: >-
- Aktiverer vignette hvilket mørkner kanterne af skærmen og gør teksten nemmere at læse.
-
+ description: Aktiverer vignette hvilket mørkner kanterne af skærmen og gør
+ teksten nemmere at læse.
rotationByBuilding:
title: Rotation baseret på bygningstype
- description: >-
- Hver bygningstype husker den rotation du sidst satte den til. Dette kan være komfortabelt hvis du ofte skifter mellem at placere forskellige bygninger.
-
+ description: Hver bygningstype husker den rotation du sidst satte den til. Dette
+ kan være komfortabelt hvis du ofte skifter mellem at placere
+ forskellige bygninger.
compactBuildingInfo:
title: Kompakt Bygningsinfo
- description: >-
- Forkorter infobokse til bygninger ved kun at vise deres forhold. Ellers er en beskrivelse og et billede også vist.
-
+ description: Forkorter infobokse til bygninger ved kun at vise deres forhold.
+ Ellers er en beskrivelse og et billede også vist.
disableCutDeleteWarnings:
title: Slå klip/slet advarsler fra
- description: >-
- Slå advarselsboksene, der dukker op når mere end 100 ting slettes, fra.
-
+ description: Slå advarselsboksene, der dukker op når mere end 100 ting slettes,
+ fra.
+ soundVolume:
+ title: Sound Volume
+ description: Set the volume for sound effects
+ musicVolume:
+ title: Music Volume
+ description: Set the volume for music
+ lowQualityMapResources:
+ title: Low Quality Map Resources
+ description: Simplifies the rendering of resources on the map when zoomed in to
+ improve performance. It even looks cleaner, so be sure to try it
+ out!
+ disableTileGrid:
+ title: Disable Grid
+ description: Disabling the tile grid can help with the performance. This also
+ makes the game look cleaner!
+ clearCursorOnDeleteWhilePlacing:
+ title: Clear Cursor on Right Click
+ description: Enabled by default, clears the cursor whenever you right click
+ while you have a building selected for placement. If disabled,
+ you can delete buildings by right-clicking while placing a
+ building.
+ lowQualityTextures:
+ title: Low quality textures (Ugly)
+ description: Uses low quality textures to save performance. This will make the
+ game look very ugly!
+ displayChunkBorders:
+ title: Display Chunk Borders
+ description: The game is divided into chunks of 16x16 tiles, if this setting is
+ enabled the borders of each chunk are displayed.
+ pickMinerOnPatch:
+ title: Pick miner on resource patch
+ description: Enabled by default, selects the miner if you use the pipette when
+ hovering a resource patch.
+ simplifiedBelts:
+ title: Simplified Belts (Ugly)
+ description: Does not render belt items except when hovering the belt to save
+ performance. I do not recommend to play with this setting if you
+ do not absolutely need the performance.
+ enableMousePan:
+ title: Enable Mouse Pan
+ description: Allows to move the map by moving the cursor to the edges of the
+ screen. The speed depends on the Movement Speed setting.
+ rangeSliderPercentage: %
keybindings:
title: Keybindings
- hint: >-
- Tip: Husk at bruge CTRL, SKIFT og ALT! De byder på forskellige placeringsmuligheder.
-
+ hint: "Tip: Husk at bruge CTRL, SKIFT og ALT! De byder på forskellige
+ placeringsmuligheder."
resetKeybindings: Nulstil Keybindings
-
categoryLabels:
general: Applikation
ingame: Spil
@@ -789,7 +861,6 @@ keybindings:
massSelect: Massemarkering
buildings: Bygningsgenveje
placementModifiers: Placeringsmodifikationer
-
mappings:
confirm: Bekræft
back: Tilbage
@@ -799,58 +870,62 @@ keybindings:
mapMoveLeft: Bevæg dig til venstre
mapMoveFaster: Bevæg dig hurtigere
centerMap: Centrer kortet
-
mapZoomIn: Zoom ind
mapZoomOut: Zoom ud
createMarker: Lav Markør
-
menuOpenShop: Opgraderinger
menuOpenStats: Statistikker
-
toggleHud: Slå HUD til/fra
toggleFPSInfo: Slå FPS og Debug Info til/fra
switchLayers: Skift lag
exportScreenshot: Eksporter hele basen som et billede
- belt: *belt
- splitter: *splitter
- underground_belt: *underground_belt
- miner: *miner
- cutter: *cutter
- rotater: *rotater
- stacker: *stacker
- mixer: *mixer
- energy_generator: *energy_generator
- painter: *painter
- trash: *trash
-
+ belt: Transportbælte
+ underground_belt: Tunnel
+ miner: Udvinder
+ cutter: Klipper
+ rotater: Drejer
+ stacker: Stabler
+ mixer: Farveblander
+ painter: Maler
+ trash: Skraldespand
pipette: Pipette
rotateWhilePlacing: Roter
- rotateInverseModifier: >-
- Modifier: Roter mod uret i stedet
+ rotateInverseModifier: "Modifier: Roter mod uret i stedet"
cycleBuildingVariants: Gennemgå Varianter
confirmMassDelete: Slet område
pasteLastBlueprint: Sæt sidste arbejdstegning ind
cycleBuildings: Gennemgå bygninger
lockBeltDirection: Slå bælteplanlægger til
- switchDirectionLockSide: >-
- Planner: Skift side
-
+ switchDirectionLockSide: "Planner: Skift side"
massSelectStart: Hold og træk for at starte
massSelectSelectMultiple: Vælg flere områder
massSelectCopy: Kopier område
massSelectCut: Klip område
-
placementDisableAutoOrientation: Slå automatisk rotation fra
placeMultiple: Bliv i placeringstilstand
placeInverse: Spejlvend automatisk bælteorientering
menuClose: Luk Menu
- advanced_processor: Farveomvender
wire: Energiledning
-
+ balancer: Balancer
+ storage: Storage
+ constant_signal: Constant Signal
+ logic_gate: Logic Gate
+ lever: Switch (regular)
+ lever_wires: Switch (wires)
+ filter: Filter
+ wire_tunnel: Wire Crossing
+ display: Display
+ reader: Belt Reader
+ virtual_processor: Virtual Cutter
+ transistor: Transistor
+ analyzer: Shape Analyzer
+ comparator: Compare
about:
title: Om dette spil
body: >-
- Dette spil er open source og er udviklet af Tobias Springer (det er mig).
+ Dette spil er open source og er udviklet af Tobias Springer
+ (det er mig).
@@ -859,10 +934,8 @@ about:
Lydsporet er lavet af Peppsen - Han er fantastisk.
Endelig, tusind tak til min bedste ven Niklas - Uden vi havde spillet factorio sammen ville dette spil aldrig have eksisteret.
-
changelog:
title: Changelog
-
demo:
features:
restoringGames: Genopretter gem
@@ -870,5 +943,64 @@ demo:
oneGameLimit: Afgrænset til et gem
customizeKeybindings: Tilpasser Keybindings
exportingBase: Eksportere hele basen som et billede
-
settingNotAvailable: Ikke tilgængelig i demoen.
+tips:
+ - The hub accepts input of any kind, not just the current shape!
+ - Make sure your factories are modular - it will pay out!
+ - Don't build too close to the hub, or it will be a huge chaos!
+ - If stacking does not work, try switching the inputs.
+ - You can toggle the belt planner direction by pressing R.
+ - Holding CTRL allows dragging of belts without auto-orientation.
+ - Ratios stay the same, as long as all upgrades are on the same Tier.
+ - Serial execution is more efficient than parallel.
+ - You will unlock more variants of buildings later in the game!
+ - You can use T to switch between different variants.
+ - Symmetry is key!
+ - You can weave different tiers of tunnels.
+ - Try to build compact factories - it will pay out!
+ - The painter has a mirrored variant which you can select with T
+ - Having the right building ratios will maximize efficiency.
+ - At maximum level, 5 extractors will fill a single belt.
+ - Don't forget about tunnels!
+ - You don't need to divide up items evenly for full efficiency.
+ - Holding SHIFT will activate the belt planner, letting you place
+ long lines of belts easily.
+ - Cutters always cut vertically, regardless of their orientation.
+ - To get white mix all three colors.
+ - The storage buffer priorities the first output.
+ - Invest time to build repeatable designs - it's worth it!
+ - Holding CTRL allows to place multiple buildings.
+ - You can hold ALT to invert the direction of placed belts.
+ - Efficiency is key!
+ - Shape patches that are further away from the hub are more complex.
+ - Machines have a limited speed, divide them up for maximum efficiency.
+ - Use balancers to maximize your efficiency.
+ - Organization is important. Try not to cross conveyors too much.
+ - Plan in advance, or it will be a huge chaos!
+ - Don't remove your old factories! You'll need them to unlock upgrades.
+ - Try beating level 20 on your own before seeking for help!
+ - Don't complicate things, try to stay simple and you'll go far.
+ - You may need to re-use factories later in the game. Plan your factories to
+ be re-usable.
+ - Sometimes, you can find a needed shape in the map without creating it with
+ stackers.
+ - Full windmills / pinwheels can never spawn naturally.
+ - Color your shapes before cutting for maximum efficiency.
+ - With modules, space is merely a perception; a concern for mortal men.
+ - Make a separate blueprint factory. They're important for modules.
+ - Have a closer look on the color mixer, and your questions will be answered.
+ - Use CTRL + Click to select an area.
+ - Building too close to the hub can get in the way of later projects.
+ - The pin icon next to each shape in the upgrade list pins it to the screen.
+ - Mix all primary colors together to make white!
+ - You have an infinite map, don't cramp your factory, expand!
+ - Also try Factorio! It's my favorite game.
+ - The quad cutter cuts clockwise starting from the top right!
+ - You can download your savegames in the main menu!
+ - This game has a lot of useful keybindings! Be sure to check out the
+ settings page.
+ - This game has a lot of settings, be sure to check them out!
+ - The marker to your hub has a small compass to indicate its direction!
+ - To clear belts, cut the area and then paste it at the same location.
+ - Press F4 to show your FPS and Tick Rate.
+ - Press F4 twice to show the tile of your mouse and camera.
diff --git a/translations/base-de.yaml b/translations/base-de.yaml
index fee9615a..fcbc7a63 100644
--- a/translations/base-de.yaml
+++ b/translations/base-de.yaml
@@ -1,36 +1,7 @@
-#
-# 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: `. They are encapsulated within angle brackets. The correct
-# translation for this one in German for example would be: `Taste: ` (notice
-# how the placeholder stayed '' 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: In shapez.io nutzt du die vorhandenen Ressourcen, um mit deinen Maschinen durch Kombination immer komplexere Formen zu erschaffen.
-
- # This is the text shown above the Discord link
+ shortText: In shapez.io nutzt du die vorhandenen Ressourcen, um mit deinen
+ Maschinen durch Kombination immer komplexere Formen zu erschaffen.
discordLink: Offizieller Discord - Hier kannst du mit mir schreiben!
-
- # 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]
@@ -74,8 +45,7 @@ steamPage:
[b]Das Spiel ist Open Source![/b]
- Jeder kann dazu beitragen! Ich bin aktiv in die Community involviert, versuche alle Vorschläge zu lesen und beziehe so viel Feedback wie möglich mit in die Entwicklung ein.
- Die komplette Roadmap gibt es auf dem Trello-Board zum Nachlesen.
+ Jeder kann dazu beitragen! Ich bin aktiv in die Community involviert, versuche alle Vorschläge zu lesen und beziehe so viel Feedback wie möglich mit in die Entwicklung ein. Die komplette Roadmap gibt es auf dem Trello-Board zum Nachlesen.
[b]Links[/b]
@@ -86,29 +56,18 @@ steamPage:
[*] [url=https://github.com/tobspr/shapez.io]Quelltext (GitHub)[/url]
[*] [url=https://github.com/tobspr/shapez.io/blob/master/translations/README.md]Hilf beim Übersetzen[/url]
[/list]
-
global:
loading: Laden
error: Fehler
-
- # How big numbers are rendered, e.g. "10,000"
- thousandsDivider: "."
-
- # What symbol to use to seperate the integer part from the fractional part of a number, e.g. "0.4"
+ thousandsDivider: .
decimalSeparator: ","
-
- # The suffix for large numbers, e.g. 1.3k, 400.2M, etc.
suffix:
thousands: k
millions: M
billions: G
trillions: T
-
- # Shown for infinitely big numbers
infinite: ∞
-
time:
- # Used for formatting past time dates
oneSecondAgo: vor einer Sekunde
xSecondsAgo: vor Sekunden
oneMinuteAgo: vor einer Minute
@@ -117,14 +76,10 @@ global:
xHoursAgo: vor Stunden
oneDayAgo: vor einem Tag
xDaysAgo: vor Tagen
-
- # Short formats for times, e.g. '5h 23m'
secondsShort: s
minutesAndSecondsShort: m s
hoursAndMinutesShort: h m
-
xMinutes: Minuten
-
keys:
tab: TAB
control: STRG
@@ -132,13 +87,9 @@ global:
escape: ESC
shift: UMSCH
space: LEER
-
demoBanners:
- # This is the "advertisement" shown in the main menu and other various places
title: Demo Version
- intro: >-
- Kauf die Standalone für alle Features!
-
+ intro: Kauf die Standalone für alle Features!
mainMenu:
play: Spielen
changelog: Änderungsprotokoll
@@ -150,14 +101,12 @@ mainMenu:
discordLink: Offizieller Discord Server
helpTranslate: Hilf beim Übersetzen!
madeBy: Ein Spiel von
-
- # This is shown when using firefox and other browsers which are not supported.
- browserWarning: >-
- Sorry, aber das Spiel wird in deinem Browser langsam laufen! Kaufe die Standalone-Version oder verwende Chrome für die beste Erfahrung!
-
+ browserWarning: Sorry, aber das Spiel wird in deinem Browser langsam laufen!
+ Kaufe die Standalone-Version oder verwende Chrome für die beste
+ Erfahrung!
savegameLevel: Level
savegameLevelUnknown: Unbekanntes Level
-
+ savegameUnnamed: Unnamed
dialogs:
buttons:
ok: OK
@@ -171,111 +120,99 @@ dialogs:
viewUpdate: Update anzeigen
showUpgrades: Upgrades anzeigen
showKeybindings: Kürzel anzeigen
-
importSavegameError:
title: Importierfehler
- text: >-
- Fehler beim Importieren deines Spielstands:
-
+ text: "Fehler beim Importieren deines Spielstands:"
importSavegameSuccess:
title: Spielstand importieren
- text: >-
- Dein Spielstand wurde erfolgreich importiert.
-
+ text: Dein Spielstand wurde erfolgreich importiert.
gameLoadFailure:
title: Der Spielstand ist kaputt
- text: >-
- Der Spielstand konnte nicht geladen werden.
-
+ text: Der Spielstand konnte nicht geladen werden.
confirmSavegameDelete:
title: Löschen bestätigen
- text: >-
- Bist du sicher, dass du den Spielstand löschen willst?
-
+ text: Bist du sicher, dass du den Spielstand löschen willst?
savegameDeletionError:
title: Löschen gescheitert
- text: >-
- Das Löschen des Spiels ist gescheitert:
-
+ text: "Das Löschen des Spiels ist gescheitert:"
restartRequired:
title: Neustart benötigt
- text: >-
- Du musst das Spiel neu starten, um die Einstellungen anzuwenden.
-
+ text: Du musst das Spiel neu starten, um die Einstellungen anzuwenden.
editKeybinding:
title: Tastenbelegung ändern
desc: Drücke die (Maus-)Taste, die du belegen möchtest, oder ESC um abzubrechen.
-
resetKeybindingsConfirmation:
title: Tastenbelegung zurücksetzen
- desc: Dies wird alle deine Tastenbelegungen auf den Standard zurücksetzen. Bist du dir sicher?
-
+ desc: Dies wird alle deine Tastenbelegungen auf den Standard zurücksetzen. Bist
+ du dir sicher?
keybindingsResetOk:
title: Tastenbelegung zurückgesetzt
desc: Die Tastenbelegung wurde auf den Standard zurückgesetzt!
-
featureRestriction:
title: Demo-Version
- desc: Du hast ein Feature gefunden (), welches nicht in der Demo enthalten ist. Erwerbe die Standalone für das volle Erlebnis!
-
+ desc: Du hast ein Feature gefunden (), welches nicht in der Demo
+ enthalten ist. Erwerbe die Standalone für das volle Erlebnis!
oneSavegameLimit:
title: Begrenzte Spielstände
- desc: Du kannst in der Demo nur einen Spielstand haben. Bitte lösche den existierenden Spielstand oder hole dir die Standalone!
-
+ desc: Du kannst in der Demo nur einen Spielstand haben. Bitte lösche den
+ existierenden Spielstand oder hole dir die Standalone!
updateSummary:
title: Neues Update!
- desc: >-
- Hier sind die Änderungen, seitdem du das letzte Mal gespielt hast:
-
+ desc: "Hier sind die Änderungen, seitdem du das letzte Mal gespielt hast:"
upgradesIntroduction:
title: Upgrades Freischalten
- desc: >-
- Viele deiner Formen können noch benutzt werden, um Upgrades freizuschalten - Zerstöre deine alten Fabriken nicht!
- Den Upgrade-Tab findest du oben rechts im Bildschirm.
-
+ desc: Viele deiner Formen können noch benutzt werden, um Upgrades freizuschalten
+ - Zerstöre deine alten Fabriken nicht! Den
+ Upgrade-Tab findest du oben rechts im Bildschirm.
massDeleteConfirm:
title: Löschen bestätigen
- desc: >-
- Du löscht sehr viele Gebäude ( um genau zu sein)! Bist du dir sicher?
-
+ desc: Du löscht sehr viele Gebäude ( um genau zu sein)! Bist du dir
+ sicher?
massCutConfirm:
title: Ausschneiden bestätigen
- desc: >-
- Du schneidest sehr viele Gebäude aus ( um genau zu sein)! Bist du dir sicher?
-
+ desc: Du schneidest sehr viele Gebäude aus ( um genau zu sein)! Bist du
+ dir sicher?
massCutInsufficientConfirm:
title: Ausschneiden bestätigen
- desc: Du kannst dir das Einfügen nicht leisten! Bist du sicher, dass du trotzdem Ausschneiden möchtest?
-
+ desc: Du kannst dir das Einfügen nicht leisten! Bist du sicher, dass du trotzdem
+ Ausschneiden möchtest?
blueprintsNotUnlocked:
title: Noch nicht freigeschaltet
- desc: >-
- Blaupausen werden erst in Level 12 freigeschaltet!
-
+ desc: Blaupausen werden erst in Level 12 freigeschaltet!
keybindingsIntroduction:
title: Nützliche Hotkeys
desc: >-
- Dieses Spiel hat viele Hotkeys, die den Bau von Fabriken vereinfachen und beschleunigen.
- Hier sind ein paar Beispiele, aber prüfe am besten die Tastenbelegung-Einstellungen!
+ Dieses Spiel hat viele Hotkeys, die den Bau von Fabriken
+ vereinfachen und beschleunigen. Hier sind ein paar Beispiele, aber
+ prüfe am besten die
+ Tastenbelegung-Einstellungen!
STRG + Ziehen: Wähle Areal aus. UMSCH: Halten, um mehrere Gebäude zu platzieren. ALT: Invertiere die Platzierungsrichtung der Förderbänder.
-
createMarker:
title: Neuer Marker
- desc: Gib ihm einen griffigen Namen. Du kannst sogar die Abkürzung einer Form eingeben (Diese kann hier generiert werden).
+ desc: Gib ihm einen griffigen Namen. Du kannst sogar die
+ Abkürzung einer Form eingeben (Diese kann hier generiert
+ werden).
titleEdit: Marker bearbeiten
-
markerDemoLimit:
- desc: Du kannst nur 2 Marker in der Demo benutzen. Hol dir die Standalone, um unendlich viele Marker zu erstellen!
-
+ desc: Du kannst nur 2 Marker in der Demo benutzen. Hol dir die Standalone, um
+ unendlich viele Marker zu erstellen!
exportScreenshotWarning:
title: Bildschirmfoto exportieren
- desc: Hier kannst du ein Bildschirmfoto von deiner ganzen Fabrik erstellen. Für extrem große Fabriken kann das jedoch sehr lange dauern und ggf. zum Spielabsturz führen!
-
+ desc: Hier kannst du ein Bildschirmfoto von deiner ganzen Fabrik erstellen. Für
+ extrem große Fabriken kann das jedoch sehr lange dauern und ggf. zum
+ Spielabsturz führen!
+ editSignal:
+ title: Set Signal
+ descItems: "Choose a pre-defined item:"
+ descShortKey: ... or enter the short key of a shape (Which you
+ can generate here)
+ renameSavegame:
+ title: Rename Savegame
+ desc: You can rename your savegame here.
ingame:
- # This is shown in the top left corner and displays useful keybindings in
- # every situation
keybindingsOverlay:
moveMap: Bewegen
selectBuildings: Areal markieren
@@ -296,8 +233,6 @@ ingame:
clearSelection: Auswahl aufheben
pipette: Pipette
switchLayers: Ebenen wechseln
-
- # Names of the colors, used for the color blind mode
colors:
red: Rot
green: Grün
@@ -308,18 +243,9 @@ ingame:
white: Weiß
black: Schwarz
uncolored: Farblos
-
- # 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: Wechsle Variante
-
- # Shows the hotkey in the ui, e.g. "Hotkey: Q"
- hotkeyLabel: >-
- Taste:
-
+ hotkeyLabel: "Taste: "
infoTexts:
speed: Geschw.
range: Reichweite
@@ -327,36 +253,42 @@ ingame:
oneItemPerSecond: 1 Item / s
itemsPerSecond: Items / s
itemsPerSecondDouble: (x2)
-
tiles: Felder
-
- # The notification when completing a level
levelCompleteNotification:
- # is replaced by the actual level, so this gets 'Level 03' for example.
levelTitle: Level
completed: Abgeschlossen
unlockText: freigeschaltet!
buttonNextLevel: Nächstes Level
-
- # Notifications on the lower right
notifications:
newUpgrade: Ein neues Upgrade ist verfügbar!
gameSaved: Dein Spiel wurde gespeichert.
-
- # The "Upgrades" window
+ freeplayLevelComplete: Level has been completed!
shop:
title: Upgrades
buttonUnlock: Upgrade
-
- # Gets replaced to e.g. "Tier IX"
tier: Stufe
-
- # 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
+ - XI
+ - XII
+ - XIII
+ - XIV
+ - XV
+ - XVI
+ - XVII
+ - XVIII
+ - XIX
+ - XX
maximumLevel: MAXIMALE STUFE (Geschw. x)
-
- # The "Statistics" window
statistics:
title: Statistiken
dataSources:
@@ -365,62 +297,59 @@ ingame:
description: Zeigt die Menge an Formen, die im Hub gelagert sind.
produced:
title: Produziert
- description: Zeigt die Menge an Formen, die deine gesamte Fabrik produziert (inkl. Zwischenprodukte).
+ description: Zeigt die Menge an Formen, die deine gesamte Fabrik produziert
+ (inkl. Zwischenprodukte).
delivered:
title: Abgeliefert
- description: Zeigt die Menge an Formen, die im zentralen Gebäude abgeliefert werden.
+ description: Zeigt die Menge an Formen, die im zentralen Gebäude abgeliefert
+ werden.
noShapesProduced: Es werden noch keine Formen produziert oder abgeliefert.
-
- # Displays the shapes per minute, e.g. '523 / m'
- shapesPerMinute: / m
-
- # Settings menu, when you press "ESC"
+ shapesDisplayUnits:
+ second: / s
+ minute: / m
+ hour: / h
settingsMenu:
playtime: Spielzeit
-
buildingsPlaced: Gebäude
beltsPlaced: Förderbänder
-
buttons:
continue: Weiter
settings: Einstellungen
menu: Zurück zum Menü
-
- # Bottom left tutorial hints
tutorialHints:
title: Brauchst du Hilfe?
showHint: Hinweis
hideHint: Schließen
-
- # When placing a blueprint
blueprintPlacer:
cost: Kosten
-
- # Map markers
waypoints:
waypoints: Markierungen
hub: Hub
- description: Linksklick auf einen Marker, um dort hinzugelangen. Rechtsklick, um ihn zu löschen.
Drücke , um einen Marker aus deinem Blickwinkel, oder rechtsklicke, um einen Marker auf der ausgewählten Position zu erschaffen.
+ description: Linksklick auf einen Marker, um dort hinzugelangen. Rechtsklick, um
+ ihn zu löschen.
Drücke , um einen Marker aus
+ deinem Blickwinkel, oder rechtsklicke, um einen
+ Marker auf der ausgewählten Position zu erschaffen.
creationSuccessNotification: Marker wurde erstellt.
-
- # Shape viewer
shapeViewer:
title: Ebenen
empty: Leer
copyKey: Schlüssel kopieren
-
- # Interactive tutorial
interactiveTutorial:
title: Tutorial
hints:
- 1_1_extractor: Platziere einen Extrahierer auf der Kreisform, um sie zu extrahieren!
- 1_2_conveyor: >-
- Verbinde den Extrahierer mit einem Förderband und schließe ihn am Hub an!
Tipp: Drücke und ziehe das Förderband mit der Maus!
-
- 1_3_expand: >-
- Dies ist KEIN Idle-Game! Baue mehr Extrahierer und Förderbänder, um das Ziel schneller zu erreichen.
Tipp: Halte UMSCH, um mehrere Gebäude zu platzieren und nutze R, um sie zu rotieren.
-
-# All shop upgrades
+ 1_1_extractor: Platziere einen Extrahierer auf der
+ Kreisform, um sie zu extrahieren!
+ 1_2_conveyor: "Verbinde den Extrahierer mit einem Förderband
+ und schließe ihn am Hub an!
Tipp: Drücke und
+ ziehe das Förderband mit der Maus!"
+ 1_3_expand: "Dies ist KEIN Idle-Game! Baue mehr Extrahierer und
+ Förderbänder, um das Ziel schneller zu erreichen.
Tipp:
+ Halte UMSCH, um mehrere Gebäude zu platzieren
+ und nutze R, um sie zu rotieren."
+ connectedMiners:
+ one_miner: 1 Miner
+ n_miners: Miners
+ limited_items: Limited to
shopUpgrades:
belt:
name: Förderbänder, Verteiler & Tunnel
@@ -434,244 +363,373 @@ shopUpgrades:
painting:
name: Mischer & Färber
description: Geschw. x → x
-
-# Buildings and their name / description
buildings:
hub:
deliver: Liefere
- toUnlock: >-
- Für folgende Belohnung:
+ toUnlock: "Für folgende Belohnung:"
levelShortcut: LVL
-
belt:
default:
- name: &belt Förderband
+ name: Förderband
description: Transportiert Items. Halte und ziehe, um mehrere zu platzieren.
-
- # Internal name for the Extractor
miner:
default:
- name: &miner Extrahierer
+ name: Extrahierer
description: Platziere ihn auf einer Form oder Farbe, um sie zu extrahieren.
-
chainable:
name: Extrahierer (Kette)
- description: Platziere ihn auf einer Form oder Farbe, um sie zu extrahieren. Kann verkettet werden.
-
- # Internal name for the Tunnel
+ description: Platziere ihn auf einer Form oder Farbe, um sie zu extrahieren.
+ Kann verkettet werden.
underground_belt:
default:
- name: &underground_belt Tunnel
- description: Erlaubt dir, Formen und Farbe unter Gebäuden und Förderbändern durchzuleiten.
-
+ name: Tunnel
+ description: Erlaubt dir, Formen und Farbe unter Gebäuden und Förderbändern
+ durchzuleiten.
tier2:
name: Tunnel Stufe II
- description: Erlaubt dir, Formen und Farbe unter Gebäuden und Förderbändern durchzuleiten. Höhere Reichweite.
-
- # Internal name for the Balancer
- splitter:
- default:
- name: &splitter Verteiler
- description: Multifunktional - Verteilt gleichmäßig von den Eingängen auf die Ausgänge.
-
- compact:
- name: Kombinierer (Kompakt)
- description: Vereint zwei Eingänge zu einem Ausgang.
-
- compact-inverse:
- name: Kombinierer (Kompakt)
- description: Vereint zwei Eingänge zu einem Ausgang.
-
+ description: Erlaubt dir, Formen und Farbe unter Gebäuden und Förderbändern
+ durchzuleiten. Höhere Reichweite.
cutter:
default:
- name: &cutter Schneider
- description: Zerschneidet Formen von oben nach unten. Benutze oder zerstöre beide Hälften, sonst verstopft die Maschine!
+ name: Schneider
+ description: Zerschneidet Formen von oben nach unten. Benutze oder
+ zerstöre beide Hälften, sonst verstopft die Maschine!
quad:
name: Schneider (4-fach)
- description: Zerschneidet Formen in vier Teile. Benutze oder zerstöre alle Viertel, sonst verstopft die Maschine!
-
+ description: Zerschneidet Formen in vier Teile. Benutze oder zerstöre
+ alle Viertel, sonst verstopft die Maschine!
rotater:
default:
- name: &rotater Rotierer (-90°)
+ name: Rotierer (-90°)
description: Rotiert Formen im Uhrzeigersinn um 90 Grad.
ccw:
name: Rotierer (+90°)
description: Rotiert Formen gegen den Uhrzeigersinn um 90 Grad.
- fl:
- name: Rotierer (180°)
- description: Rotiert die Formen um 180 Grad.
-
+ rotate180:
+ name: Rotate (180)
+ description: Rotates shapes by 180 degrees.
stacker:
default:
- name: &stacker Stapler
- description: Stapelt beide Formen. Wenn beide nicht vereint werden können, wird die rechte Form auf die linke Form gestapelt.
-
+ name: Stapler
+ description: Stapelt beide Formen. Wenn beide nicht vereint werden können, wird
+ die rechte Form auf die linke Form gestapelt.
mixer:
default:
- name: &mixer Farbmischer
+ name: Farbmischer
description: Mischt zwei Farben auf Basis der additiven Farbmischung.
-
painter:
default:
- name: &painter Färber
- description: &painter_desc Färbt die ganze Form aus dem linken Eingang mit der Farbe aus dem oberen Eingang.
-
+ name: Färber
+ description: Färbt die ganze Form aus dem linken Eingang mit der Farbe aus dem
+ oberen Eingang.
mirrored:
- name: *painter
- description: *painter_desc
-
+ name: Färber
+ description: Färbt die ganze Form aus dem linken Eingang mit der Farbe aus dem
+ oberen Eingang.
double:
name: Färber (2-fach)
- description: Färbt beide Formen aus dem linken Eingang mit der Farbe aus dem oberen Eingang.
-
+ description: Färbt beide Formen aus dem linken Eingang mit der Farbe aus dem
+ oberen Eingang.
quad:
name: Färber (4-fach)
description: Erlaubt es, jedes einzelne Viertel einer Form beliebig einzufärben.
-
trash:
default:
- name: &trash Mülleimer
- description: Akzeptiert Formen und Farben aus jeder Richtung und zerstört sie. Für immer ...
-
- storage:
- name: Lager
- description: Lagert Items bis zu einer gegebenen Kapazität und verwaltet den Überlauf.
-
+ name: Mülleimer
+ description: Akzeptiert Formen und Farben aus jeder Richtung und zerstört sie.
+ Für immer ...
wire:
default:
name: Stromkabel
description: Erlaubt dir Strom zu transportieren.
- advanced_processor:
+ second:
+ name: Wire
+ description: Transfers signals, which can be items, colors or booleans (1 / 0).
+ Different colored wires do not connect.
+ balancer:
default:
- name: Farbinvertierer
- description: Invertiert die Farbe. Geht auch bei Formen.
- energy_generator:
- deliver: Liefere
- toGenerateEnergy: für
- default:
- name: Stromgenerator
- description: Erzeugt Strom, indem er Formen verbraucht.
- wire_crossings:
- default:
- name: Kabelverteiler
- description: Teilt ein Stromkabel in zwei auf.
+ name: Balancer
+ description: Multifunctional - Evenly distributes all inputs onto all outputs.
merger:
- name: Kabelverbinder
- description: Verbindet zwei Stromkabel zu einem.
-
+ name: Merger (compact)
+ description: Merges two conveyor belts into one.
+ merger-inverse:
+ name: Merger (compact)
+ description: Merges two conveyor belts into one.
+ splitter:
+ name: Splitter (compact)
+ description: Splits one conveyor belt into two.
+ splitter-inverse:
+ name: Splitter (compact)
+ description: Splits one conveyor belt into two.
+ storage:
+ default:
+ name: Storage
+ description: Stores excess items, up to a given capacity. Prioritizes the left
+ output and can be used as an overflow gate.
+ wire_tunnel:
+ default:
+ name: Wire Crossing
+ description: Allows to cross two wires without connecting them.
+ constant_signal:
+ default:
+ name: Constant Signal
+ description: Emits a constant signal, which can be either a shape, color or
+ boolean (1 / 0).
+ lever:
+ default:
+ name: Switch
+ description: Can be toggled to emit a boolean signal (1 / 0) on the wires layer,
+ which can then be used to control for example an item filter.
+ logic_gate:
+ default:
+ name: AND Gate
+ description: Emits a boolean "1" if both inputs are truthy. (Truthy means shape,
+ color or boolean "1")
+ not:
+ name: NOT Gate
+ description: Emits a boolean "1" if the input is not truthy. (Truthy means
+ shape, color or boolean "1")
+ xor:
+ name: XOR Gate
+ description: Emits a boolean "1" if one of the inputs is truthy, but not both.
+ (Truthy means shape, color or boolean "1")
+ or:
+ name: OR Gate
+ description: Emits a boolean "1" if one of the inputs is truthy. (Truthy means
+ shape, color or boolean "1")
+ transistor:
+ default:
+ name: Transistor
+ description: Forwards the bottom input if the side input is truthy (a shape,
+ color or "1").
+ mirrored:
+ name: Transistor
+ description: Forwards the bottom input if the side input is truthy (a shape,
+ color or "1").
+ filter:
+ default:
+ name: Filter
+ description: Connect a signal to route all matching items to the top and the
+ remaining to the right. Can be controlled with boolean signals
+ too.
+ display:
+ default:
+ name: Display
+ description: Connect a signal to show it on the display - It can be a shape,
+ color or boolean.
+ reader:
+ default:
+ name: Belt Reader
+ description: Allows to measure the average belt throughput. Outputs the last
+ read item on the wires layer (once unlocked).
+ analyzer:
+ default:
+ name: Shape Analyzer
+ description: Analyzes the top right quadrant of the lowest layer of the shape
+ and returns its shape and color.
+ comparator:
+ default:
+ name: Compare
+ description: Returns boolean "1" if both signals are exactly equal. Can compare
+ shapes, items and booleans.
+ virtual_processor:
+ default:
+ name: Virtual Cutter
+ description: Virtually cuts the shape into two halves.
+ rotater:
+ name: Virtual Rotater
+ description: Virtually rotates the shape, both clockwise and counter-clockwise.
+ unstacker:
+ name: Virtual Unstacker
+ description: Virtually extracts the topmost layer to the right output and the
+ remaining ones to the left.
+ stacker:
+ name: Virtual Stacker
+ description: Virtually stacks the right shape onto the left.
+ painter:
+ name: Virtual Painter
+ description: Virtually paints the shape from the bottom input with the shape on
+ the right input.
storyRewards:
- # Those are the rewards gained from completing the store
reward_cutter_and_trash:
title: Formen zerschneiden
- desc: Du hast den Schneider freigeschaltet! Er zerschneidet Formen von oben nach unten, unabhängig von ihrer Orientierung.
Stelle sicher, dass du den Abfall loswirst, sonst verstopft die Maschine! Dafür habe ich dir extra einen Mülleimer freigeschaltet.
-
+ desc: Du hast den Schneider freigeschaltet! Er zerschneidet
+ Formen von oben nach unten, unabhängig von ihrer
+ Orientierung.
Stelle sicher, dass du den Abfall loswirst,
+ sonst verstopft die Maschine! Dafür habe ich dir
+ extra einen Mülleimer freigeschaltet.
reward_rotater:
title: Rotieren
- desc: Der Rotierer wurde freigeschaltet! Er rotiert Formen im Uhrzeigersinn um 90 Grad.
-
+ desc: Der Rotierer wurde freigeschaltet! Er rotiert Formen im
+ Uhrzeigersinn um 90 Grad.
reward_painter:
title: Färben
- desc: >-
- Der Färber wurde freigeschaltet. Extrahiere ein paar Farben (genauso wie bei Formen) und färbe damit eine Form im Färber.
PS: Falls du Farbenblind bist, gibt es einen Modus für Farbenblinde in den Einstellungen!
-
+ desc: "Der Färber wurde freigeschaltet. Extrahiere ein paar
+ Farben (genauso wie bei Formen) und färbe damit eine Form im
+ Färber.
PS: Falls du Farbenblind bist, gibt es einen
+ Modus für Farbenblinde in den Einstellungen!"
reward_mixer:
title: Farben mischen
- desc: Der Farbmischer wurde freigeschaltet! Kombiniere mit diesem Gebäude zwei Farben getreu der additiven Farbmischung.
-
+ desc: Der Farbmischer wurde freigeschaltet! Kombiniere mit
+ diesem Gebäude zwei Farben getreu der additiven
+ Farbmischung.
reward_stacker:
title: Stapler
- desc: Mit dem Stapler kannst du nun Formen kombinieren! Passen sie nebeneinander, werden sie verschmolzen. Anderenfalls wird die rechte auf die linke Form gestapelt.
-
+ desc: Mit dem Stapler kannst du nun Formen kombinieren! Passen
+ sie nebeneinander, werden sie verschmolzen.
+ Anderenfalls wird die rechte auf die linke Form
+ gestapelt.
reward_splitter:
title: Verteiler/Kombinierer
- desc: Der multifunktionale Verteiler wurde freigeschaltet! Er ermöglicht die Konstruktion größerer Fabriken, indem er Items auf mehrere Förderbänder verteilt oder diese zusammenführt!
-
+ desc: Der multifunktionale Verteiler wurde freigeschaltet! Er
+ ermöglicht die Konstruktion größerer Fabriken, indem er Items auf
+ mehrere Förderbänder verteilt oder diese
+ zusammenführt!
reward_tunnel:
title: Tunnel
- desc: Der Tunnel wurde freigeschaltet! Du kannst Items nun unter Gebäuden oder Förderbändern hindurchleiten.
-
+ desc: Der Tunnel wurde freigeschaltet! Du kannst Items nun
+ unter Gebäuden oder Förderbändern hindurchleiten.
reward_rotater_ccw:
title: Gegen UZS Rotieren
- desc: Du hast eine zweite Variante des Rotierers freigeschaltet! Damit können Items gegen den Uhrzeigensinn gedreht werden. Wähle den Rotierer aus und drücke 'T', um auf verschiedene Varianten zuzugreifen.
-
+ desc: Du hast eine zweite Variante des Rotierers
+ freigeschaltet! Damit können Items gegen den Uhrzeigensinn gedreht
+ werden. Wähle den Rotierer aus und drücke 'T', um auf
+ verschiedene Varianten zuzugreifen.
reward_miner_chainable:
title: Extrahierer (Kette)
- desc: Du hast den Extrahierer (Kette) freigeschaltet! Damit können die Ressourcen an den Nächsten weitergegeben werden, um Ressourcen effizienter zu extrahieren.
-
+ desc: Du hast den Extrahierer (Kette) freigeschaltet! Damit
+ können die Ressourcen an den Nächsten weitergegeben
+ werden, um Ressourcen effizienter zu extrahieren.
reward_underground_belt_tier_2:
title: Tunnel Stufe II
- desc: Du hast eine neue Variante des Tunnels freigeschaltet! Dieser hat eine höhere Reichweite und du kannst beide Tunnel miteinander mischen.
-
- reward_splitter_compact:
- title: Kompakter Kombinierer
- desc: >-
- Du hast eine kompakte Variante des Kombinierers freigeschaltet! Er hat zwei Eingänge und vereint diese zu einem Ausgang.
-
+ desc: Du hast eine neue Variante des Tunnels freigeschaltet!
+ Dieser hat eine höhere Reichweite und du kannst
+ beide Tunnel miteinander mischen.
reward_cutter_quad:
title: Schneider (4-fach)
- desc: Du hast eine neue Variante des Schneiders freigeschaltet! Damit kannst du Formen in alle vier Teile zerschneiden.
-
+ desc: Du hast eine neue Variante des Schneiders freigeschaltet!
+ Damit kannst du Formen in alle vier Teile
+ zerschneiden.
reward_painter_double:
title: Färber (2-fach)
- desc: Du hast eine neue Variante des Färbers freigeschaltet! Hiermit kannst du zwei Formen auf einmal färben und verbrauchst nur eine Farbe.
-
+ desc: Du hast eine neue Variante des Färbers freigeschaltet!
+ Hiermit kannst du zwei Formen auf einmal färben und
+ verbrauchst nur eine Farbe.
reward_painter_quad:
title: Färber (4-fach)
- desc: Du hast eine neue Variante des Färbers freigeschaltet! Er kann jedes Viertel einer Form einzeln färben, verbraucht aber auch jeweils eine Farbe.
-
+ desc: Du hast eine neue Variante des Färbers freigeschaltet! Er
+ kann jedes Viertel einer Form einzeln färben, verbraucht aber auch
+ jeweils eine Farbe.
reward_storage:
title: Zwischenlager
- desc: Du hast eine neue Variante des Mülleimers freigeschaltet! Bis zu einer gewissen Kapazität können hier Items zwischengelagert werden.
-
+ desc: Du hast eine neue Variante des Mülleimers freigeschaltet!
+ Bis zu einer gewissen Kapazität können hier Items zwischengelagert
+ werden.
reward_freeplay:
title: Freies Spiel
- desc: Du hast es geschafft! Du bist im freien Spiel angekommen! Das heißt, dass abzuliefernde Formen jetzt zufällig generiert werden! (Keine Sorge, für die Standaloneversion ist noch mehr geplant!)
-
+ desc: Du hast es geschafft! Du bist im freien Spiel angekommen!
+ Das heißt, dass abzuliefernde Formen jetzt zufällig generiert
+ werden! (Keine Sorge, für die Standaloneversion ist noch mehr
+ geplant!)
reward_blueprints:
title: Blaupause
- desc: Jetzt kannst du Teile deiner Fabrik kopieren und einfügen! Wähle ein Areal aus (Halte STRG und ziehe mit deiner Maus) und drücke 'C', um zu kopieren.
Einfügen ist nicht kostenlos, du musst Blaupausenformen produzieren, um die Kopierkosten zu decken (Welche du gerade produziert hast)!
-
- # Special reward, which is shown when there is no reward actually
+ desc: Jetzt kannst du Teile deiner Fabrik kopieren und
+ einfügen! Wähle ein Areal aus (Halte STRG und ziehe mit
+ deiner Maus) und drücke 'C', um zu kopieren.
Einfügen ist
+ nicht kostenlos, du musst
+ Blaupausenformen produzieren, um die Kopierkosten
+ zu decken (Welche du gerade produziert hast)!
no_reward:
title: Nächstes Level
- desc: >-
- Dieses Level hat dir keine Belohnung gegeben, aber im Nächsten gibt es eine!
PS: Denke daran, deine alten Fabriken nicht zu zerstören - Du wirst sie später alle noch brauchen, um Upgrades freizuschalten!
-
+ desc: "Dieses Level hat dir keine Belohnung gegeben, aber im Nächsten gibt es
+ eine!
PS: Denke daran, deine alten Fabriken nicht zu
+ zerstören - Du wirst sie später alle noch brauchen,
+ um Upgrades freizuschalten!"
no_reward_freeplay:
title: Nächstes Level
- desc: >-
- Herzlichen Glückwunsch! Apropos, in der Standalone-Version ist noch vieles mehr geplant!
-
+ desc: Herzlichen Glückwunsch! Apropos, in der Standalone-Version ist noch vieles
+ mehr geplant!
+ reward_balancer:
+ title: Balancer
+ desc: The multifunctional balancer has been unlocked - It can
+ be used to build bigger factories by splitting and merging
+ items onto multiple belts!
+ reward_merger:
+ title: Compact Merger
+ desc: You have unlocked a merger variant of the
+ balancer - It accepts two inputs and merges them
+ into one belt!
+ reward_belt_reader:
+ title: Belt reader
+ desc: You have now unlocked the belt reader! It allows you to
+ measure the throughput of a belt.
And wait until you unlock
+ wires - then it gets really useful!
+ reward_rotater_180:
+ title: Rotater (180 degrees)
+ desc: You just unlocked the 180 degress rotater! - It allows
+ you to rotate a shape by 180 degress (Surprise! :D)
+ reward_wires_filters_and_levers:
+ title: "Wires: Filters & Levers"
+ desc: You just unlocked the wires layer! It is a separate layer
+ on top of the regular layer and introduces a lot of new
+ mechanics!
Since it can be overwhelming a bit, I added a
+ small tutorial - Be sure to have tutorials enabled
+ in the settings!
+ reward_display:
+ title: Display
+ desc: You have unlocked the Display - Connect a signal on the
+ wires layer to visualize its contents!
+ reward_constant_signal:
+ title: Constant Signal
+ desc: You unlocked the constant signal building on the wires
+ layer! This is useful to connect it to item filters
+ for example.
The constant signal can emit a
+ shape, color or
+ boolean (1 / 0).
+ reward_logic_gates:
+ title: Logic Gates
+ desc: You unlocked logic gates! You don't have to be excited
+ about this, but it's actually super cool!
With those gates
+ you can now compute AND, OR, XOR and NOT operations.
As a
+ bonus on top I also just gave you a transistor!
+ reward_virtual_processing:
+ title: Virtual Processing
+ desc: I just gave a whole bunch of new buildings which allow you to
+ simulate the processing of shapes!
You can
+ now simulate a cutter, rotater, stacker and more on the wires layer!
+ With this you now have three options to continue the game:
-
+ Build an automated machine to create any possible
+ shape requested by the HUB (I recommend to try it!).
- Build
+ something cool with wires.
- Continue to play
+ regulary.
Whatever you choose, remember to have fun!
settings:
title: Einstellungen
categories:
general: Allgemein
userInterface: Benutzeroberfläche
advanced: Erweitert
-
+ performance: Performance
versionBadges:
dev: Entwicklung
staging: Beta
prod: Produktion
buildDate: Gebaut am
-
labels:
uiScale:
title: HUD Größe
- description: >-
- Ändert die Größe der Benutzeroberfläche, basierend auf der Bildschirmauflösung.
+ description: Ändert die Größe der Benutzeroberfläche, basierend auf der
+ Bildschirmauflösung.
scales:
super_small: Sehr klein
small: Klein
regular: Normal
large: Groß
huge: Riesig
-
autosaveInterval:
title: Intervall für automatisches Speichern
- description: >-
- Ändert das Intervall, in dem der Spielstand automatisch gespeichert wird. Die Funktion kann hier auch deaktiviert werden.
-
+ description: Ändert das Intervall, in dem der Spielstand automatisch gespeichert
+ wird. Die Funktion kann hier auch deaktiviert werden.
intervals:
one_minute: 1 Minute
two_minutes: 2 Minuten
@@ -679,22 +737,20 @@ settings:
ten_minutes: 10 Minuten
twenty_minutes: 20 Minuten
disabled: Deaktiviert
-
scrollWheelSensitivity:
title: Zoomempfindlichkeit
- description: >-
- Ändert die Empfindlichkeit des Zooms (Sowohl Mausrad, als auch Trackpad).
+ description: Ändert die Empfindlichkeit des Zooms (Sowohl Mausrad, als auch
+ Trackpad).
sensitivity:
super_slow: Sehr langsam
slow: Langsam
regular: Normal
fast: Schnell
super_fast: Sehr schnell
-
movementSpeed:
title: Bewegungsgeschwindigkeit
- description: >-
- Ändert die Geschwindigkeit, mit welcher der Bildschirm durch die Pfeiltasten bewegt wird.
+ description: Ändert die Geschwindigkeit, mit welcher der Bildschirm durch die
+ Pfeiltasten bewegt wird.
speeds:
super_slow: Sehr langsam
slow: Langsam
@@ -702,99 +758,119 @@ settings:
fast: Schnell
super_fast: Sehr schnell
extremely_fast: Extrem schnell
-
language:
title: Sprache
- description: >-
- Ändere die Sprache. Alle Übersetzungen werden von Nutzern erstellt und sind möglicherweise unvollständig!
-
+ description: Ändere die Sprache. Alle Übersetzungen werden von Nutzern erstellt
+ und sind möglicherweise unvollständig!
enableColorBlindHelper:
title: Modus für Farbenblinde
- description: >-
- Aktiviert verschiedene Werkzeuge, welche dir das Spielen trotz Farbenblindheit ermöglichen.
-
+ description: Aktiviert verschiedene Werkzeuge, welche dir das Spielen trotz
+ Farbenblindheit ermöglichen.
fullscreen:
title: Vollbild
- description: >-
- Für das beste Erlebnis im Spiel wird der Vollbildmodus empfohlen (Nur in der Standalone-Version verfügbar).
-
+ 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.
-
+ description: Bei Aktivierung werden alle Geräusche stummgeschaltet.
musicMuted:
title: Musik stummschalten
- description: >-
- Bei Aktivierung wird die Musik stummgeschaltet.
-
+ description: Bei Aktivierung wird die Musik stummgeschaltet.
soundVolume:
title: Geräuschlautstärke
- description: >-
- Regler für die Lautstärke von Geräuschen.
-
+ description: Regler für die Lautstärke von Geräuschen.
musicVolume:
title: Musiklautstärke
- description: >-
- Regler für die Lautstärke der Musik.
-
+ description: Regler für die Lautstärke der Musik.
theme:
title: Farbmodus
- description: >-
- Wähle zwischen dem dunklen und dem hellen Farbmodus.
+ description: Wähle zwischen dem dunklen und dem hellen Farbmodus.
themes:
dark: Dunkel
light: Hell
-
refreshRate:
title: Tickrate
- description: >-
- Das Spiel passt die Tickrate automatisch so an, dass sie immer zwischen diesem Wert und der Hälfte bleibt. Zum Beispiel bei einer Tickrate von 60 Hz versucht das Spiel, diese zu halten. Bei Bedarf regelt der Computer diese bis zu einer Untergrenze von 30 Hz herunter.
-
+ description: Das Spiel passt die Tickrate automatisch so an, dass sie immer
+ zwischen diesem Wert und der Hälfte bleibt. Zum Beispiel bei
+ einer Tickrate von 60 Hz versucht das Spiel, diese zu halten.
+ Bei Bedarf regelt der Computer diese bis zu einer Untergrenze
+ von 30 Hz herunter.
alwaysMultiplace:
title: Mehrfachplatzierung
- description: >-
- Bei Aktivierung wird das platzierte Gebäude nicht abgewählt. Das hat den gleichen Effekt, wie beim Platzieren UMSCH gedrückt zu halten.
-
+ description: Bei Aktivierung wird das platzierte Gebäude nicht abgewählt. Das
+ hat den gleichen Effekt, wie beim Platzieren 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.
-
+ 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.
enableTunnelSmartplace:
title: Intelligente Tunnel
- description: >-
- Aktiviert das automatische Entfernen von überflüssigen Förderbändern bei der Platzierung von Tunneln.
- Außerdem funktioniert das Ziehen von Tunneln und überschüssige werden ebenfalls entfernt.
-
+ description: Aktiviert das automatische Entfernen von überflüssigen
+ Förderbändern bei der Platzierung von Tunneln. Außerdem
+ funktioniert das Ziehen von Tunneln und überschüssige werden
+ ebenfalls entfernt.
vignette:
title: Vignette
- description: >-
- Aktiviert den Vignetteneffekt, der den Rand des Bildschirms zunehmend verdunkelt und das Lesen der Textfelder vereinfacht.
-
+ description: Aktiviert den Vignetteneffekt, der den Rand des Bildschirms
+ zunehmend verdunkelt und das Lesen der Textfelder vereinfacht.
rotationByBuilding:
title: Rotation pro Gebäudetyp
- description: >-
- Jeder Gebäudetyp merkt sich eigenständig, in welche Richtung er zeigt.
- Das fühlt sich möglicherweise besser an, wenn du häufig zwischen verschiedenen Gebäudetypen wechselst.
-
+ description: Jeder Gebäudetyp merkt sich eigenständig, in welche Richtung er
+ zeigt. Das fühlt sich möglicherweise besser an, wenn du häufig
+ zwischen verschiedenen Gebäudetypen wechselst.
compactBuildingInfo:
title: Kompakte Gebäudeinformationen
- description: >-
- Reduziert die Infoboxen der Gebäude auf ihre Arbeitsgeschwindigkeit. Anderenfalls wird ein Bild mit Beschreibung angezeigt.
-
+ description: Reduziert die Infoboxen der Gebäude auf ihre
+ Arbeitsgeschwindigkeit. Anderenfalls wird ein Bild mit
+ Beschreibung angezeigt.
disableCutDeleteWarnings:
title: Deaktiviere Warnungsdialog beim Löschen
- description: >-
- Deaktiviert die Warnung, welche beim Löschen und Ausschneiden von mehr als 100 Feldern angezeigt wird.
-
+ description: Deaktiviert die Warnung, welche beim Löschen und Ausschneiden von
+ mehr als 100 Feldern angezeigt wird.
+ lowQualityMapResources:
+ title: Low Quality Map Resources
+ description: Simplifies the rendering of resources on the map when zoomed in to
+ improve performance. It even looks cleaner, so be sure to try it
+ out!
+ disableTileGrid:
+ title: Disable Grid
+ description: Disabling the tile grid can help with the performance. This also
+ makes the game look cleaner!
+ clearCursorOnDeleteWhilePlacing:
+ title: Clear Cursor on Right Click
+ description: Enabled by default, clears the cursor whenever you right click
+ while you have a building selected for placement. If disabled,
+ you can delete buildings by right-clicking while placing a
+ building.
+ lowQualityTextures:
+ title: Low quality textures (Ugly)
+ description: Uses low quality textures to save performance. This will make the
+ game look very ugly!
+ displayChunkBorders:
+ title: Display Chunk Borders
+ description: The game is divided into chunks of 16x16 tiles, if this setting is
+ enabled the borders of each chunk are displayed.
+ pickMinerOnPatch:
+ title: Pick miner on resource patch
+ description: Enabled by default, selects the miner if you use the pipette when
+ hovering a resource patch.
+ simplifiedBelts:
+ title: Simplified Belts (Ugly)
+ description: Does not render belt items except when hovering the belt to save
+ performance. I do not recommend to play with this setting if you
+ do not absolutely need the performance.
+ enableMousePan:
+ title: Enable Mouse Pan
+ description: Allows to move the map by moving the cursor to the edges of the
+ screen. The speed depends on the Movement Speed setting.
+ rangeSliderPercentage: %
keybindings:
title: Tastenbelegung
- hint: >-
- Tipp: Benutze STRG, UMSCH and ALT! Sie aktivieren verschiedene Platzierungsoptionen.
-
+ hint: "Tipp: Benutze STRG, UMSCH and ALT! Sie aktivieren verschiedene
+ Platzierungsoptionen."
resetKeybindings: Tastenbelegung zurücksetzen
-
categoryLabels:
general: Anwendung
ingame: Spiel
@@ -803,7 +879,6 @@ keybindings:
massSelect: Bereichsauswahl
buildings: Gebäude
placementModifiers: Platzierungsmodifikatoren
-
mappings:
confirm: Bestätigen
back: Zurück
@@ -813,79 +888,72 @@ keybindings:
mapMoveLeft: Nach links bewegen
mapMoveFaster: Schneller bewegen
centerMap: Karte zentrieren
-
mapZoomIn: Reinzoomen
mapZoomOut: Rauszoomen
createMarker: Markierung erstellen
-
menuOpenShop: Upgrades
menuOpenStats: Statistiken
menuClose: Menü schließen
-
toggleHud: HUD an/aus
toggleFPSInfo: FPS und Debug-Info an/aus
switchLayers: Ebenen wechseln
exportScreenshot: Ganze Fabrik als Foto exportieren
-
- # --- Do not translate the values in this section
- belt: *belt
- splitter: *splitter
- underground_belt: *underground_belt
- miner: *miner
- cutter: *cutter
- rotater: *rotater
- stacker: *stacker
- mixer: *mixer
- painter: *painter
- trash: *trash
- # ---
-
+ belt: Förderband
+ underground_belt: Tunnel
+ miner: Extrahierer
+ cutter: Schneider
+ rotater: Rotierer (-90°)
+ stacker: Stapler
+ mixer: Farbmischer
+ painter: Färber
+ trash: Mülleimer
pipette: Pipette
rotateWhilePlacing: Rotieren
- rotateInverseModifier: >-
- Modifikator: stattdessen gegen den UZS rotieren
+ rotateInverseModifier: "Modifikator: stattdessen gegen den UZS rotieren"
cycleBuildingVariants: Nächste Variante auswählen
confirmMassDelete: Massenlöschung bestätigen
pasteLastBlueprint: Letzte Blaupause einfügen
cycleBuildings: Nächstes Gebäude auswählen
lockBeltDirection: Bandplaner aktivieren
- switchDirectionLockSide: >-
- Bandplaner: Seite wechseln
-
+ switchDirectionLockSide: "Bandplaner: Seite wechseln"
massSelectStart: Halten und ziehen zum Beginnen
massSelectSelectMultiple: Mehrere Areale markieren
massSelectCopy: Areal kopieren
massSelectCut: Areal ausschneiden
-
placementDisableAutoOrientation: Automatische Orientierung deaktivieren
placeMultiple: Im Platziermodus bleiben
placeInverse: Automatische Förderbandorientierung invertieren
- advanced_processor: Farbinvertierer
- energy_generator: Stromgenerator
wire: Stromkabel
-
+ balancer: Balancer
+ storage: Storage
+ constant_signal: Constant Signal
+ logic_gate: Logic Gate
+ lever: Switch (regular)
+ lever_wires: Switch (wires)
+ filter: Filter
+ wire_tunnel: Wire Crossing
+ display: Display
+ reader: Belt Reader
+ virtual_processor: Virtual Cutter
+ transistor: Transistor
+ analyzer: Shape Analyzer
+ comparator: Compare
about:
title: Über dieses Spiel
body: >-
- Dieses Spiel hat einen offenen Quellcode (Open Source) und wurde von Tobias Springer (das bin ich!) entwickelt.
+ Dieses Spiel hat einen offenen Quellcode (Open Source) und wurde von Tobias Springer
+ (das bin ich!) entwickelt.
- Wenn du etwas zum Spiel beitragen möchtest, dann schaue dir shapez.io auf GitHub an.
+ Wenn du etwas zum Spiel beitragen möchtest, dann schaue dir shapez.io auf GitHub an.
- Das Spiel wurde erst durch die großartige Discord-Community
- um meine Spiele möglich gemacht. Komm doch einfach mal auf dem Discord-Server vorbei!
+ Das Spiel wurde erst durch die großartige Discord-Community um meine Spiele möglich gemacht. Komm doch einfach mal auf dem Discord-Server vorbei!
- Der Soundtrack wurde von Peppsen komponiert! Klasse Typ.
-
- Abschließend möchte ich meinem Kumpel Niklas danken!
- Ohne unsere etlichen gemeinsamen Stunden in Factorio wäre dieses Projekt nie zustande gekommen.
+ Der Soundtrack wurde von Peppsen komponiert! Klasse Typ.
+ Abschließend möchte ich meinem Kumpel Niklas danken! Ohne unsere etlichen gemeinsamen Stunden in Factorio wäre dieses Projekt nie zustande gekommen.
changelog:
title: Änderungen
-
demo:
features:
restoringGames: Spiele wiederherstellen
@@ -893,5 +961,64 @@ demo:
oneGameLimit: Beschränkt auf einen Spielstand
customizeKeybindings: Tastenbelegung anpassen
exportingBase: Ganze Fabrik als Foto exportieren
-
settingNotAvailable: Nicht verfügbar in der Demo.
+tips:
+ - The hub accepts input of any kind, not just the current shape!
+ - Make sure your factories are modular - it will pay out!
+ - Don't build too close to the hub, or it will be a huge chaos!
+ - If stacking does not work, try switching the inputs.
+ - You can toggle the belt planner direction by pressing R.
+ - Holding CTRL allows dragging of belts without auto-orientation.
+ - Ratios stay the same, as long as all upgrades are on the same Tier.
+ - Serial execution is more efficient than parallel.
+ - You will unlock more variants of buildings later in the game!
+ - You can use T to switch between different variants.
+ - Symmetry is key!
+ - You can weave different tiers of tunnels.
+ - Try to build compact factories - it will pay out!
+ - The painter has a mirrored variant which you can select with T
+ - Having the right building ratios will maximize efficiency.
+ - At maximum level, 5 extractors will fill a single belt.
+ - Don't forget about tunnels!
+ - You don't need to divide up items evenly for full efficiency.
+ - Holding SHIFT will activate the belt planner, letting you place
+ long lines of belts easily.
+ - Cutters always cut vertically, regardless of their orientation.
+ - To get white mix all three colors.
+ - The storage buffer priorities the first output.
+ - Invest time to build repeatable designs - it's worth it!
+ - Holding CTRL allows to place multiple buildings.
+ - You can hold ALT to invert the direction of placed belts.
+ - Efficiency is key!
+ - Shape patches that are further away from the hub are more complex.
+ - Machines have a limited speed, divide them up for maximum efficiency.
+ - Use balancers to maximize your efficiency.
+ - Organization is important. Try not to cross conveyors too much.
+ - Plan in advance, or it will be a huge chaos!
+ - Don't remove your old factories! You'll need them to unlock upgrades.
+ - Try beating level 20 on your own before seeking for help!
+ - Don't complicate things, try to stay simple and you'll go far.
+ - You may need to re-use factories later in the game. Plan your factories to
+ be re-usable.
+ - Sometimes, you can find a needed shape in the map without creating it with
+ stackers.
+ - Full windmills / pinwheels can never spawn naturally.
+ - Color your shapes before cutting for maximum efficiency.
+ - With modules, space is merely a perception; a concern for mortal men.
+ - Make a separate blueprint factory. They're important for modules.
+ - Have a closer look on the color mixer, and your questions will be answered.
+ - Use CTRL + Click to select an area.
+ - Building too close to the hub can get in the way of later projects.
+ - The pin icon next to each shape in the upgrade list pins it to the screen.
+ - Mix all primary colors together to make white!
+ - You have an infinite map, don't cramp your factory, expand!
+ - Also try Factorio! It's my favorite game.
+ - The quad cutter cuts clockwise starting from the top right!
+ - You can download your savegames in the main menu!
+ - This game has a lot of useful keybindings! Be sure to check out the
+ settings page.
+ - This game has a lot of settings, be sure to check them out!
+ - The marker to your hub has a small compass to indicate its direction!
+ - To clear belts, cut the area and then paste it at the same location.
+ - Press F4 to show your FPS and Tick Rate.
+ - Press F4 twice to show the tile of your mouse and camera.
diff --git a/translations/base-el.yaml b/translations/base-el.yaml
index 30f825e5..26002a48 100644
--- a/translations/base-el.yaml
+++ b/translations/base-el.yaml
@@ -1,38 +1,11 @@
-#
-# 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: `. They are encapsulated within angle brackets. The correct
-# translation for this one in German for example would be: `Taste: ` (notice
-# how the placeholder stayed '' 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 χτήζεις εργοστάσια για να αυτοματοποιήσεις την δημιουργία και τον συνδιασμό σχημάτων αυξανόμενης πολυπλοκότητας σε έναν ατέλειωτο χάρτη.
-
- # 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
+ shortText: Στο shapez.io χτήζεις εργοστάσια για να αυτοματοποιήσεις την
+ δημιουργία και τον συνδιασμό σχημάτων αυξανόμενης πολυπλοκότητας σε έναν
+ ατέλειωτο χάρτη.
longText: >-
[img]{STEAM_APP_IMAGE}/extras/store_page_gif.gif[/img]
- Στο shapez.io χτήζεις εργοστάσια για να αυτοματοποιήσεις την δημιουργία και τον συνδιασμό σχημάτων αυξανόμενης πολυπλοκότητας σε έναν ατέλειωτο χάρτη.
- Όταν παραδώσεις τα απαιτούμενα σχήματα, θα προχωρήσεις στο παιχνίδι και θα ξεκλειδώσεις αναβαθμήσεις για να επιταχύνεις το εργοστάσιό σου.
+ Στο shapez.io χτήζεις εργοστάσια για να αυτοματοποιήσεις την δημιουργία και τον συνδιασμό σχημάτων αυξανόμενης πολυπλοκότητας σε έναν ατέλειωτο χάρτη. Όταν παραδώσεις τα απαιτούμενα σχήματα, θα προχωρήσεις στο παιχνίδι και θα ξεκλειδώσεις αναβαθμήσεις για να επιταχύνεις το εργοστάσιό σου.
Επειδή η ζήτηση για σχήματα αυξάνεται συνεχώς, θα πρέπει να επεκτείνεις το εργοστάσιό σου για να την ικανοποιήσεις - Μήν ξεχάσεις, για να βρείς όλους τους πόρους που χρειάζεσαι θα πρέπει να εξαπλωθείς στον [b]άτελείωτο χάρτη[/b]!
@@ -40,7 +13,7 @@ steamPage:
Το παιχνίδι έχει 18 βαθμιαία επίπεδα (που ήδη θα σε απασχολήσουν για ώρες!) και συνεχίζω να προσθέτω περιεχόμενο - Έχω ακόμα πολλά σχέδια!
- Αγόράζοντας το παιχνίδι λαμβάνεις την αυτόνομη έκδοση (standalone) με πολλές επιπλέον δυνατότητες, καθώς και πρόσβαση σε νέες δυνατότητες που ακόμα αναπτύσσονται.
+ Αγόράζοντας το παιχνίδι λαμβάνεις την αυτόνομη έκδοση (standalone) με πολλές επιπλέον δυνατότητες, καθώς και πρόσβαση σε νέες δυνατότητες που ακόμα αναπτύσσονται.
[b]Πλεονεκτήματα Αυτόνομης Έκδοσης[/b]
@@ -70,8 +43,7 @@ steamPage:
[b]Αυτό το παιχνίδι είναι ανοιχτού κώδικα![/b]
- Όλοι μπορούν να συνεισφέρουν, συμμετέχω ενεργά στην κοινότητα και προσπαθώ να εξετάσω όλες τις προτάσεις και να λάβω υπόψη τα σχόλια όπου είναι δυνατόν.
- Δείτε το trello board μου για τον πλήρη χάρτη πορείας!
+ Όλοι μπορούν να συνεισφέρουν, συμμετέχω ενεργά στην κοινότητα και προσπαθώ να εξετάσω όλες τις προτάσεις και να λάβω υπόψη τα σχόλια όπου είναι δυνατόν. Δείτε το trello board μου για τον πλήρη χάρτη πορείας!
[b]Σύνδεσμοι[/b]
@@ -82,32 +54,20 @@ steamPage:
[*] [url=https://github.com/tobspr/shapez.io]Πηγαίος κώδικας (GitHub)[/url]
[*] [url=https://github.com/tobspr/shapez.io/blob/master/translations/README.md]Βοήθησε με μεταφράσεις[/url]
[/list]
-
discordLink: Επίσημο Discord - Συνομίλησε μαζί μου!
-
global:
loading: Φόρτωση
error: Σφάλμα
-
- # How big numbers are rendered, e.g. "10,000"
thousandsDivider: ","
-
- # What symbol to use to seperate the integer part from the fractional part of a number, e.g. "0.4"
- decimalSeparator: "."
-
- # The suffix for large numbers, e.g. 1.3k, 400.2M, etc.
+ decimalSeparator: .
suffix:
thousands: χλ.
millions: εκ.
billions: δισ.
trillions: τρισ.
-
- # Shown for infinitely big numbers
infinite: άπειρο
-
time:
- # Used for formatting past time dates
- oneSecondAgo: πριν ένα δευτερόλεπτο
+ oneSecondAgo: πριν ένα δευτερόλεπτο
xSecondsAgo: πριν δευτερόλεπτα
oneMinuteAgo: πριν ένα λεπτό
xMinutesAgo: πριν λεπτά
@@ -115,14 +75,10 @@ global:
xHoursAgo: πριν ώρες
oneDayAgo: πριν μία ημέρα
xDaysAgo: πριν ημέρες
-
- # Short formats for times, e.g. '5h 23m'
secondsShort: δ
minutesAndSecondsShort: λ δ
hoursAndMinutesShort: ω λ
-
xMinutes: λεπτά
-
keys:
tab: TAB
control: CTRL
@@ -130,13 +86,9 @@ global:
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!
-
+ intro: Get the standalone to unlock all features!
mainMenu:
play: Παίξε
changelog: Changelog
@@ -144,19 +96,16 @@ mainMenu:
openSourceHint: Αυτό το παιχνίδι είναι ανοιχτού κώδικα!
discordLink: Επίσημο Discord Server
helpTranslate: Βοήθησε με μεταφράσεις!
-
- # This is shown when using firefox and other browsers which are not supported.
- browserWarning: >-
- Δυστυχώς, το παιχνίδι τρέχει αργά στο πρόγραμμα περιήγησής σας! Αποκτήστε την αυτόνομη έκδοση ή κατεβάστε το chrome για την πλήρη εμπειρία.
-
+ browserWarning: Δυστυχώς, το παιχνίδι τρέχει αργά στο πρόγραμμα περιήγησής σας!
+ Αποκτήστε την αυτόνομη έκδοση ή κατεβάστε το chrome για την πλήρη
+ εμπειρία.
savegameLevel: Επίπεδο
savegameLevelUnknown: Άγνωστο Επίπεδο
-
continue: Συνέχεια
newGame: Καινούριο παιχνίδι
madeBy: Made by
subreddit: Reddit
-
+ savegameUnnamed: Unnamed
dialogs:
buttons:
ok: OK
@@ -170,111 +119,104 @@ dialogs:
viewUpdate: Προβολή ενημέρωσης
showUpgrades: Εμφάνιση αναβαθμίσεων
showKeybindings: Συνδυασμοί πλήκτρων
-
importSavegameError:
title: Σφάλμα εισαγωγής
- text: >-
- Αποτυχία εισαγωγής του αποθηκευμένου παιχνιδιού:
-
+ text: "Αποτυχία εισαγωγής του αποθηκευμένου παιχνιδιού:"
importSavegameSuccess:
title: Εισαγωγή αποθηκευμένου παιχνιδιού
- text: >-
- Η Εισαγωγή του αποθηκευμένου παιχνιδιού ήταν επιτυχής.
-
+ text: Η Εισαγωγή του αποθηκευμένου παιχνιδιού ήταν επιτυχής.
gameLoadFailure:
title: Το παιχνίδι είναι κατεστραμμένο
- text: >-
- Η φώρτοση του αποθηκευμένου παιχνιδιού ήταν αποτυχής:
-
+ text: "Η φώρτοση του αποθηκευμένου παιχνιδιού ήταν αποτυχής:"
confirmSavegameDelete:
title: Επιβεβαίωση διαγραφής
- text: >-
- Είσαι βέβαιος/η ότι θέλεις να διαγράψεις το παιχνίδι;
-
+ text: Είσαι βέβαιος/η ότι θέλεις να διαγράψεις το παιχνίδι;
savegameDeletionError:
title: Αποτυχία διαγραφής
- text: >-
- Η διαγραφή του αποθηκευμένου παιχνιδιού ήταν αποτυχής:
-
+ text: "Η διαγραφή του αποθηκευμένου παιχνιδιού ήταν αποτυχής:"
restartRequired:
title: Χρειάζεται επανεκκίνηση
- text: >-
- Πρέπει να επανεκκινήσεις το παιχνίδι για να εφαρμόσεις τις ρυθμίσεις.
-
+ text: Πρέπει να επανεκκινήσεις το παιχνίδι για να εφαρμόσεις τις ρυθμίσεις.
editKeybinding:
title: Αλλαγή συνδιασμών πλήκτρων
- desc: Πάτησε το πλήκτρο ή το κουμπί του ποντικιού που θέλεις να αντιστοιχίσεις, ή escape για ακύρωση.
-
+ desc: Πάτησε το πλήκτρο ή το κουμπί του ποντικιού που θέλεις να αντιστοιχίσεις,
+ ή escape για ακύρωση.
resetKeybindingsConfirmation:
title: Επαναφορά συνδιασμών πλήκτρων
- desc: Όλες οι συνδιασμών πλήκτρων θα επαναφερθούν στις προεπιλεγμένες τιμές τους. Επιβεβαίωση;
-
+ desc: Όλες οι συνδιασμών πλήκτρων θα επαναφερθούν στις προεπιλεγμένες τιμές
+ τους. Επιβεβαίωση;
keybindingsResetOk:
title: Συνδιασμοί πλήκτρων επαναφέρθηκαν
desc: Οι συνδιασμών πλήκτρων επαναφέρθηκαν στις προεπιλεγμένες τιμές τους!
-
featureRestriction:
title: Έκδοση Demo
- desc: Προσπάθησες να χρησιμοποιήσεις μία δυνατότητα που δεν είναι διαθέσιμη στην έκδοση demo. Αποκτήστε την αυτόνομη έκδοση για την ολοκληρομένη εμπειρία!
-
+ desc: Προσπάθησες να χρησιμοποιήσεις μία δυνατότητα που δεν είναι διαθέσιμη στην
+ έκδοση demo. Αποκτήστε την αυτόνομη έκδοση για την ολοκληρομένη
+ εμπειρία!
oneSavegameLimit:
title: Περιορισμένα αποθηκευμένα παιχνίδια
- desc: Στην demo έκδοση μπορείς να έχεις μόνο ένα αποθηκευμένο παιχνίδι. Παρακαλώ διάγραψε το υπάρχον αποθηκευμένο παιχνίδι ή απόκτησε την αθτόνομη έκδοση!
-
+ desc: Στην demo έκδοση μπορείς να έχεις μόνο ένα αποθηκευμένο παιχνίδι. Παρακαλώ
+ διάγραψε το υπάρχον αποθηκευμένο παιχνίδι ή απόκτησε την αθτόνομη
+ έκδοση!
updateSummary:
title: Νέα αναβάθμιση!
- desc: >-
- Αυτές είναι οι αλλαγές από την τελευταία φορά που έπαιξες:
-
+ desc: "Αυτές είναι οι αλλαγές από την τελευταία φορά που έπαιξες:"
upgradesIntroduction:
title: Ξεκλείδωμα αναβαθμίσεων
- desc: >-
- Όλα τα σχήματα που παράγεις μπορούν να χρησιμοποιηθούν για να ξεκλειδώσεις αναβαθμίσεις - Μην καταστρέψεις τα παλιά σου εργοστάσια!
- Η καρτέλα αναβαθμίσεων βρίσκεται στην επάνω δεξιά γωνία της οθόνης.
-
+ desc: Όλα τα σχήματα που παράγεις μπορούν να χρησιμοποιηθούν για να ξεκλειδώσεις
+ αναβαθμίσεις - Μην καταστρέψεις τα παλιά σου εργοστάσια!
+ Η καρτέλα αναβαθμίσεων βρίσκεται στην επάνω δεξιά γωνία
+ της οθόνης.
massDeleteConfirm:
title: Επιβεβαίωση διαγραφής
- desc: >-
- Ετοιμάζεσαι να διαγράψεις πολλά κτήρια ( για την ακρίβεια)! Είσαι βέβαιος/η ότι θέλεις να το κάνεις αυτό;
-
+ desc: Ετοιμάζεσαι να διαγράψεις πολλά κτήρια (