diff --git a/gulp/gulpfile.js b/gulp/gulpfile.js index cdf9541e..04d3c9c9 100644 --- a/gulp/gulpfile.js +++ b/gulp/gulpfile.js @@ -290,11 +290,7 @@ gulp.task( // Bundling (pre upload) gulp.task( "bundle.steam.from-darwin", - gulp.series( - "utils.cleanBuildOutputFolder", - "bundle.standalone-steam.from-darwin", - "bundle.standalone-steam-china.from-darwin" - ) + gulp.series("utils.cleanBuildOutputFolder", "bundle.standalone-steam.from-darwin") ); gulp.task( "bundle.steam.from-windows", diff --git a/package.json b/package.json index d414f5e3..07f1fa1b 100644 --- a/package.json +++ b/package.json @@ -28,8 +28,6 @@ "@babel/plugin-transform-classes": "^7.5.5", "@babel/preset-env": "^7.5.4", "@nastyox/rando.js": "^2.0.5", - "@openreplay/tracker": "^3.5.12", - "@openreplay/tracker-fetch": "^3.5.3", "@types/cordova": "^0.0.34", "@types/filesystem": "^0.0.32", "ajv": "^6.10.2", diff --git a/res/ui/vignette-strong.lossless.png b/res/ui/vignette-strong.lossless.png new file mode 100644 index 00000000..e432a31e Binary files /dev/null and b/res/ui/vignette-strong.lossless.png differ diff --git a/src/css/common.scss b/src/css/common.scss index b3b3b103..448ebe4f 100644 --- a/src/css/common.scss +++ b/src/css/common.scss @@ -83,7 +83,7 @@ body { right: 0; bottom: 0; background: rgba(50, 60, 70, 0.8); - z-index: 9999; + z-index: 999999; display: flex; justify-content: center; align-items: center; diff --git a/src/css/ingame_hud/standalone_advantages.scss b/src/css/ingame_hud/standalone_advantages.scss index 0e8de09c..a75ace4c 100644 --- a/src/css/ingame_hud/standalone_advantages.scss +++ b/src/css/ingame_hud/standalone_advantages.scss @@ -142,22 +142,25 @@ > .discount { position: absolute; - @include S(top, -7px); - @include S(right, -5px); + @include S(top, -12px); + @include S(right, -15px); background: #4c6b22; color: #c5ea3f; @include S(border-radius, $globalBorderRadius); @include S(padding, 1px, 3px, 1px, 4px); - @include SuperSmallText; + @include PlainText; text-transform: uppercase; - transform: rotate(1deg); - @include InlineAnimation(1.3s ease-in-out infinite) { - 50% { - transform: rotate(4deg) scale(1.1); - } - } + transform: rotate(3deg); } } + + .specialOffer { + color: #000000; + @include PlainText; + align-self: center; + text-align: center; + @include S(margin-top, 5px); + } } .point { diff --git a/src/css/states/main_menu.scss b/src/css/states/main_menu.scss index 42ca9210..025d4719 100644 --- a/src/css/states/main_menu.scss +++ b/src/css/states/main_menu.scss @@ -38,6 +38,7 @@ .exitAppButton { background-image: uiResource("icons/main_menu_exit.png"); + background-size: 56%; } .languageChoose { @@ -51,14 +52,13 @@ } } - &::before, &::after { position: absolute; top: 0; left: 0; right: 0; bottom: 0; - background: uiResource("vignette.lossless.png") center center / cover no-repeat; + background: uiResource("vignette-strong.lossless.png") center center / cover no-repeat; pointer-events: none; z-index: 2; content: ""; @@ -185,6 +185,23 @@ transition: transform 0.5s ease-in-out; } + .close { + position: absolute; + pointer-events: all; + background: uiResource("icons/main_menu_exit.png") center center / 50% no-repeat; + display: inline-flex; + @include S(width, 15px); + @include S(height, 15px); + @include S(top, 2px); + opacity: 0.3; + @include S(right, 2px); + z-index: 200; + transition: opacity 0.12s ease-in-out; + &:hover { + opacity: 0.7; + } + } + &:hover::before { transform: translate(0, -51%); } @@ -309,13 +326,20 @@ color: #c5ea3f; @include S(border-radius, $globalBorderRadius); @include S(padding, 1px, 3px, 1px, 4px); - @include SuperSmallText; + @include PlainText; text-transform: uppercase; - transform: rotate(1deg); - @include InlineAnimation(1.3s ease-in-out infinite) { - 50% { - transform: rotate(4deg) scale(1.1); - } + transform: rotate(5deg); + } + } + .specialOffer { + color: #000000; + @include PlainText; + align-self: center; + text-align: center; + @include S(margin-top, 5px); + @include InlineAnimation(1s ease-in-out infinite) { + 50% { + transform: scale(1.02, 1.03) translateY(2%); } } } @@ -788,6 +812,9 @@ .description { @include SuperSmallText; color: rgba(0, 10, 20, 0.5); + @include DarkThemeOverride { + color: rgba(#fff, 0.7); + } } // &:hover { // .tooltip { @@ -854,6 +881,10 @@ text-align: center; @include S(padding, 0, 20px); opacity: 0.5; + + @include DarkThemeOverride { + color: #fff; + } } .savegames { @@ -1233,22 +1264,5 @@ color: $accentColorBright; } } - - .footer { - > a, - .sidelinks > a { - background-color: rgba($darkModeControlsBackground, 0.3); - color: #333538; - - &:hover { - background-color: rgba(darken($darkModeControlsBackground, 5), 0.4); - } - } - - .thirdpartyLogo.githubLogo { - // filter: invert(1); - opacity: 0.7; - } - } } } diff --git a/src/js/application.js b/src/js/application.js index 78d4518d..d31e6e3f 100644 --- a/src/js/application.js +++ b/src/js/application.js @@ -134,6 +134,9 @@ export class Application { /** @type {TypedTrackedState} */ this.trackedIsRenderable = new TrackedState(this.onAppRenderableStateChanged, this); + /** @type {TypedTrackedState} */ + this.trackedIsPlaying = new TrackedState(this.onAppPlayingStateChanged, this); + // Dimensions this.screenWidth = 0; this.screenHeight = 0; @@ -330,6 +333,14 @@ export class Application { this.sound.onPageRenderableStateChanged(renderable); } + onAppPlayingStateChanged(playing) { + try { + this.adProvider.setPlayStatus(playing); + } catch (ex) { + console.warn("Play status changed"); + } + } + /** * Internal before-unload handler */ @@ -386,6 +397,7 @@ export class Application { } const currentState = this.stateMgr.getCurrentState(); + this.trackedIsPlaying.set(currentState && currentState.getIsIngame()); if (currentState) { currentState.onRender(dt); } diff --git a/src/js/core/background_resources_loader.js b/src/js/core/background_resources_loader.js index edface62..01e74479 100644 --- a/src/js/core/background_resources_loader.js +++ b/src/js/core/background_resources_loader.js @@ -31,6 +31,11 @@ const INGAME_ASSETS = { css: ["async-resources.css"], }; +if (G_IS_STANDALONE) { + MAIN_MENU_ASSETS.sounds = [...Array.from(Object.values(MUSIC)), ...Array.from(Object.values(SOUNDS))]; + INGAME_ASSETS.sounds = []; +} + const LOADER_TIMEOUT_PER_RESOURCE = 180000; // Cloudflare does not send content-length headers with brotli compression, diff --git a/src/js/core/config.js b/src/js/core/config.js index 344c673e..3c013f1d 100644 --- a/src/js/core/config.js +++ b/src/js/core/config.js @@ -22,9 +22,7 @@ export const THIRDPARTY_URLS = { twitter: "https://twitter.com/tobspr", privacyPolicy: "https://tobspr.io/privacy.html", - standaloneCampaignLink: G_IS_STANDALONE - ? "https://get.shapez.io/bundle/$campaign" - : "https://get.shapez.io/$campaign", + standaloneCampaignLink: "https://get.shapez.io/bundle/$campaign", puzzleDlcStorePage: "https://get.shapez.io/mm_puzzle_dlc?target=dlc", levelTutorialVideos: { diff --git a/src/js/core/game_state.js b/src/js/core/game_state.js index d71d3e52..6f276e99 100644 --- a/src/js/core/game_state.js +++ b/src/js/core/game_state.js @@ -229,6 +229,14 @@ export class GameState { return MUSIC.menu; } + /** + * Should return true if the player is currently ingame + * @returns {boolean} + */ + getIsIngame() { + return false; + } + /** * Should return whether to clear the whole body content before entering the state. * @returns {boolean} diff --git a/src/js/core/query_parameters.js b/src/js/core/query_parameters.js index 4183b60e..5d145644 100644 --- a/src/js/core/query_parameters.js +++ b/src/js/core/query_parameters.js @@ -4,6 +4,9 @@ const options = queryString.parse(location.search); export let queryParamOptions = { embedProvider: null, abtVariant: null, + campaign: null, + fbclid: null, + gclid: null, }; if (options.embed) { @@ -13,3 +16,14 @@ if (options.embed) { if (options.abtVariant) { queryParamOptions.abtVariant = options.abtVariant; } + +if (options.fbclid) { + queryParamOptions.fbclid = options.fbclid; +} + +if (options.gclid) { + queryParamOptions.gclid = options.gclid; +} +if (options.utm_campaign) { + queryParamOptions.campaign = options.utm_campaign; +} diff --git a/src/js/game/camera.js b/src/js/game/camera.js index 4c5def81..fc08d73f 100644 --- a/src/js/game/camera.js +++ b/src/js/game/camera.js @@ -168,7 +168,11 @@ export class Camera extends BasicSerializableObject { * Finds a good initial zoom level */ findInitialZoom() { - const desiredWorldSpaceWidth = 18 * globalConfig.tileSize; + let desiredWorldSpaceWidth = 18 * globalConfig.tileSize; + if (window.innerWidth < 1000) { + desiredWorldSpaceWidth = 12 * globalConfig.tileSize; + } + const zoomLevelX = this.root.gameWidth / desiredWorldSpaceWidth; const zoomLevelY = this.root.gameHeight / desiredWorldSpaceWidth; diff --git a/src/js/game/hud/parts/settings_menu.js b/src/js/game/hud/parts/settings_menu.js index 16da0440..f5314cd6 100644 --- a/src/js/game/hud/parts/settings_menu.js +++ b/src/js/game/hud/parts/settings_menu.js @@ -61,7 +61,9 @@ export class HUDSettingsMenu extends BaseHUDPart { } returnToMenu() { - this.root.gameState.goBackToMenu(); + this.root.app.adProvider.showVideoAd().then(() => { + this.root.gameState.goBackToMenu(); + }); } goToSettings() { diff --git a/src/js/game/hud/parts/standalone_advantages.js b/src/js/game/hud/parts/standalone_advantages.js index 86634729..95968f64 100644 --- a/src/js/game/hud/parts/standalone_advantages.js +++ b/src/js/game/hud/parts/standalone_advantages.js @@ -42,10 +42,14 @@ export class HUDStandaloneAdvantages extends BaseHUDPart { + ${!G_IS_STEAM_DEMO ? `${T.global.discountSummerSale}` : ""} @@ -121,15 +125,16 @@ export class HUDStandaloneAdvantages extends BaseHUDPart { this.root.app.gameAnalytics.noteMinor("game.std_advg.show"); this.root.app.gameAnalytics.noteMinor("game.std_advg.show-" + (final ? "final" : "nonfinal")); } + this.lastShown = this.root.time.now(); this.visible = true; this.final = final; this.root.app.inputMgr.makeSureAttachedAndOnTop(this.inputReciever); - if (this.root.time.now() < 120) { - this.title.innerText = ""; - } else if (this.final) { + if (this.final) { this.title.innerText = T.ingame.standaloneAdvantages.titleExpiredV2; + } else if (this.root.time.now() < 120) { + this.title.innerText = ""; } else { this.title.innerText = T.ingame.standaloneAdvantages.titleEnjoyingDemo; } diff --git a/src/js/game/hud/parts/unlock_notification.js b/src/js/game/hud/parts/unlock_notification.js index ff09cb4e..ba129f00 100644 --- a/src/js/game/hud/parts/unlock_notification.js +++ b/src/js/game/hud/parts/unlock_notification.js @@ -28,6 +28,10 @@ export class HUDUnlockNotification extends BaseHUDPart { this.root.app.gameAnalytics.noteMinor("game.started"); } + shouldPauseGame() { + return !G_IS_STANDALONE && this.visible; + } + createElements(parent) { this.inputReciever = new InputReceiver("unlock-notification"); diff --git a/src/js/game/hud/parts/watermark.js b/src/js/game/hud/parts/watermark.js index eb877261..c9be8058 100644 --- a/src/js/game/hud/parts/watermark.js +++ b/src/js/game/hud/parts/watermark.js @@ -13,7 +13,10 @@ export class HUDWatermark extends BaseHUDPart { globalConfig.currentDiscount > 0 ? ["withDiscount"] : [], linkText + (globalConfig.currentDiscount > 0 - ? `-${globalConfig.currentDiscount}%!` + ? `${T.global.discount.replace( + "", + String(globalConfig.currentDiscount) + )}` : "") ); this.trackClicks(this.linkElement, () => { diff --git a/src/js/game/modes/levels.js b/src/js/game/modes/levels.js index 1976c8c7..d6533448 100644 --- a/src/js/game/modes/levels.js +++ b/src/js/game/modes/levels.js @@ -1,3 +1,6 @@ +/* typehints:start */ +import { Application } from "../../application"; +/* typehints:end */ import { WEB_STEAM_SSO_AUTHENTICATED } from "../../core/steam_sso"; import { enumHubGoalRewards } from "../tutorial_goals"; @@ -7,73 +10,82 @@ const chinaShapes = G_WEGAME_VERSION || G_CHINA_VERSION; //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// -const WEB_DEMO_LEVELS = () => [ - // 1 - // Circle - { - shape: "CuCuCuCu", // belts t1 - required: 10, - reward: enumHubGoalRewards.reward_cutter_and_trash, - }, +/** + * + * @param {Application} app + * @returns + */ +const WEB_DEMO_LEVELS = app => { + const levels = [ + // 1 + // Circle + { + shape: "CuCuCuCu", // belts t1 + required: 10, + reward: enumHubGoalRewards.reward_cutter_and_trash, + }, - // 2 - // Cutter - { - shape: "----CuCu", // - required: 20, - reward: enumHubGoalRewards.no_reward, - }, + // 2 + // Cutter + { + shape: "----CuCu", // + required: 20, + reward: enumHubGoalRewards.no_reward, + }, - // 3 - // Rectangle - { - shape: "RuRuRuRu", // miners t1 - required: 50, - reward: enumHubGoalRewards.reward_balancer, - }, + // 3 + // Rectangle + { + shape: "RuRuRuRu", // miners t1 + required: 30, + reward: enumHubGoalRewards.reward_balancer, + }, - // 4 - { - shape: "RuRu----", // processors t2 - required: 30, - reward: enumHubGoalRewards.reward_rotater, - }, + // 4 + { + shape: "RuRu----", // processors t2 + required: 30, + reward: enumHubGoalRewards.reward_rotater, + }, - // 5 - // Rotater - { - shape: "Cu----Cu", // belts t2 - required: 75, - reward: enumHubGoalRewards.reward_tunnel, - }, + // 5 + // Rotater + { + shape: "Cu----Cu", // belts t2 + required: 75, + reward: enumHubGoalRewards.reward_tunnel, + }, - // 6 - { - shape: "Cu------", // miners t2 - required: 75, - reward: enumHubGoalRewards.reward_painter, - }, + // 6 + // Painter + { + shape: "Cu------", // miners t2 + required: 50, + reward: enumHubGoalRewards.reward_painter, + }, - // 7 - // Painter - { - shape: "CrCrCrCr", // unused - required: 120, - reward: enumHubGoalRewards.reward_rotater_ccw, - }, - // 8 - { - shape: "RbRb----", // painter t2 - required: 170, - reward: enumHubGoalRewards.reward_mixer, - }, - // End of demo - { - shape: "RbRb----", - required: 0, - reward: enumHubGoalRewards.reward_demo_end, - }, -]; + // 7 + { + shape: "CrCrCrCr", // unused + required: 85, + reward: enumHubGoalRewards.reward_rotater_ccw, + }, + + // 8 + { + shape: "RbRb----", // painter t2 + required: 100, + reward: enumHubGoalRewards.reward_mixer, + }, + { + shape: "RpRp----", + required: 0, + reward: enumHubGoalRewards.reward_demo_end, + }, + ]; + + return levels; +}; //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// @@ -140,7 +152,7 @@ const STEAM_DEMO_LEVELS = () => [ }, // End of demo { - shape: "RbRb----", + shape: "CpCpCpCp", required: 0, reward: enumHubGoalRewards.reward_demo_end, }, @@ -354,11 +366,11 @@ const STANDALONE_LEVELS = () => [ /** * Generates the level definitions */ -export function generateLevelsForVariant() { +export function generateLevelsForVariant(app) { if (G_IS_STEAM_DEMO) { return STEAM_DEMO_LEVELS(); } else if (G_IS_STANDALONE || WEB_STEAM_SSO_AUTHENTICATED) { return STANDALONE_LEVELS(); } - return WEB_DEMO_LEVELS(); + return WEB_DEMO_LEVELS(app); } diff --git a/src/js/game/modes/regular.js b/src/js/game/modes/regular.js index f0d62211..8d5d6633 100644 --- a/src/js/game/modes/regular.js +++ b/src/js/game/modes/regular.js @@ -299,11 +299,11 @@ let levelDefinitionsCache = null; /** * Generates the level definitions */ -export function generateLevelDefinitions() { +export function generateLevelDefinitions(app) { if (levelDefinitionsCache) { return levelDefinitionsCache; } - const levelDefinitions = generateLevelsForVariant(); + const levelDefinitions = generateLevelsForVariant(app); MOD_SIGNALS.modifyLevelDefinitions.dispatch(levelDefinitions); if (G_IS_DEV) { levelDefinitions.forEach(({ shape }) => { @@ -403,7 +403,7 @@ export class RegularGameMode extends GameMode { * @returns {Array} */ getLevelDefinitions() { - return generateLevelDefinitions(); + return generateLevelDefinitions(this.root.app); } /** diff --git a/src/js/globals.d.ts b/src/js/globals.d.ts index 3ab4c50a..003df6b7 100644 --- a/src/js/globals.d.ts +++ b/src/js/globals.d.ts @@ -93,6 +93,7 @@ declare interface Window { grecaptcha: any; gtag: any; cpmstarAPI: any; + CrazyGames: any; // Mods $shapez_registerMod: any; diff --git a/src/js/main.js b/src/js/main.js index e0fd3fc7..17c971ee 100644 --- a/src/js/main.js +++ b/src/js/main.js @@ -39,7 +39,7 @@ if (G_IS_DEV && IS_DEBUG) { /* typehints:start */ // @ts-ignore -assert(false, "typehints built in, this should never be the case!"); +throw new Error("typehints built in, this should never be the case!"); /* typehints:end */ /* dev:start */ diff --git a/src/js/platform/ad_provider.js b/src/js/platform/ad_provider.js index 4aa8949c..6b96768e 100644 --- a/src/js/platform/ad_provider.js +++ b/src/js/platform/ad_provider.js @@ -44,4 +44,6 @@ export class AdProviderInterface { showVideoAd() { return Promise.resolve(); } + + setPlayStatus(playing) {} } diff --git a/src/js/platform/ad_providers/crazygames.js b/src/js/platform/ad_providers/crazygames.js new file mode 100644 index 00000000..5f70cea4 --- /dev/null +++ b/src/js/platform/ad_providers/crazygames.js @@ -0,0 +1,99 @@ +import { AdProviderInterface } from "../ad_provider"; +import { createLogger } from "../../core/logging"; +import { timeoutPromise } from "../../core/utils"; + +const logger = createLogger("crazygames"); + +export class CrazygamesAdProvider extends AdProviderInterface { + getHasAds() { + return true; + } + + getCanShowVideoAd() { + return this.getHasAds() && this.sdkInstance; + } + + get sdkInstance() { + try { + return window.CrazyGames.CrazySDK.getInstance(); + } catch (ex) { + return null; + } + } + + initialize() { + if (!this.getHasAds()) { + return Promise.resolve(); + } + + logger.log("🎬 Initializing crazygames SDK"); + + const scriptTag = document.createElement("script"); + scriptTag.type = "text/javascript"; + + return timeoutPromise( + new Promise((resolve, reject) => { + scriptTag.onload = resolve; + scriptTag.onerror = reject; + scriptTag.src = "https://sdk.crazygames.com/crazygames-sdk-v1.js"; + document.head.appendChild(scriptTag); + }) + .then(() => { + logger.log("🎬 Crazygames SDK loaded, now initializing"); + this.sdkInstance.init(); + }) + .catch(ex => { + console.warn("Failed to init crazygames SDK:", ex); + }) + ); + } + + showVideoAd() { + const instance = this.sdkInstance; + if (!instance) { + return Promise.resolve(); + } + + logger.log("Set sound volume to 0"); + this.app.sound.setMusicVolume(0); + this.app.sound.setSoundVolume(0); + + return timeoutPromise( + new Promise(resolve => { + console.log("🎬 crazygames: Start ad"); + document.body.classList.add("externalAdOpen"); + + const finish = () => { + instance.removeEventListener("adError", finish); + instance.removeEventListener("adFinished", finish); + resolve(); + }; + + instance.addEventListener("adError", finish); + instance.addEventListener("adFinished", finish); + + instance.requestAd(); + }), + 60000 + ) + .catch(ex => { + console.warn("Error while resolving video ad:", ex); + }) + .then(() => { + document.body.classList.remove("externalAdOpen"); + + logger.log("Restored sound volume"); + + this.app.sound.setMusicVolume(this.app.settings.getSetting("musicVolume")); + this.app.sound.setSoundVolume(this.app.settings.getSetting("soundVolume")); + }); + } + setPlayStatus(playing) { + console.log("crazygames::playing:", playing); + if (playing) { + this.sdkInstance.gameplayStart(); + } else { + this.sdkInstance.gameplayStop(); + } + } +} diff --git a/src/js/platform/ad_providers/gamedistribution.js b/src/js/platform/ad_providers/gamedistribution.js index 5a91646f..be8e41a3 100644 --- a/src/js/platform/ad_providers/gamedistribution.js +++ b/src/js/platform/ad_providers/gamedistribution.js @@ -32,8 +32,6 @@ export class GamedistributionAdProvider extends AdProviderInterface { * When we showed the last video ad */ this.lastVideoAdShowTime = -1e20; - - console.error("X"); } getHasAds() { diff --git a/src/js/platform/analytics.js b/src/js/platform/analytics.js index ac70ef60..2a844522 100644 --- a/src/js/platform/analytics.js +++ b/src/js/platform/analytics.js @@ -35,4 +35,7 @@ export class AnalyticsInterface { * @param {string} name */ trackDecision(name) {} + + // LEGACY 1.5.3 + trackUiClick() {} } diff --git a/src/js/platform/browser/game_analytics.js b/src/js/platform/browser/game_analytics.js index 090eccf2..894f877a 100644 --- a/src/js/platform/browser/game_analytics.js +++ b/src/js/platform/browser/game_analytics.js @@ -1,4 +1,4 @@ -import { globalConfig, THIRDPARTY_URLS } from "../../core/config"; +import { globalConfig } from "../../core/config"; import { createLogger } from "../../core/logging"; import { queryParamOptions } from "../../core/query_parameters"; import { randomInt } from "../../core/utils"; @@ -10,26 +10,8 @@ import { InGameState } from "../../states/ingame"; import { SteamAchievementProvider } from "../electron/steam_achievement_provider"; import { GameAnalyticsInterface } from "../game_analytics"; import { FILE_NOT_FOUND } from "../storage"; - -import OR from "@openreplay/tracker"; -import OR_fetch from "@openreplay/tracker-fetch"; import { WEB_STEAM_SSO_AUTHENTICATED } from "../../core/steam_sso"; -let eventConnector; -if (!G_IS_STANDALONE && !G_IS_DEV) { - eventConnector = new OR({ - projectKey: "mhZgUFQBI6QAtt3PRLer", - respectDoNotTrack: true, - revID: G_BUILD_COMMIT_HASH, - // @ts-ignore - heatmaps: false, - verbose: false, - captureIFrames: false, - }); - eventConnector.start({}); - eventConnector.use(OR_fetch({ overrideGlobal: true })); -} - const logger = createLogger("game_analytics"); const analyticsUrl = G_IS_DEV ? "http://localhost:8001" : "https://analytics.shapez.io"; @@ -37,7 +19,7 @@ const analyticsUrl = G_IS_DEV ? "http://localhost:8001" : "https://analytics.sha // Be sure to increment the ID whenever it changes const analyticsLocalFile = G_IS_STEAM_DEMO ? "shapez_token_steamdemo.bin" : "shapez_token_123.bin"; -const CURRENT_ABT = "abt_mmnd"; +const CURRENT_ABT = "abt_bsl2"; const CURRENT_ABT_COUNT = 1; export class ShapezGameAnalytics extends GameAnalyticsInterface { @@ -124,15 +106,7 @@ export class ShapezGameAnalytics extends GameAnalyticsInterface { } } - noteMinor(action, payload = "") { - if (eventConnector) { - try { - eventConnector.event(action, payload); - } catch (ex) { - console.warn("Failed to note event:", ex); - } - } - } + noteMinor(action, payload = "") {} /** * @returns {Promise} @@ -176,9 +150,6 @@ export class ShapezGameAnalytics extends GameAnalyticsInterface { syncKey => { this.syncKey = syncKey; logger.log("Player sync key read:", this.syncKey); - if (eventConnector) { - eventConnector.setUserID(syncKey); - } }, error => { // File was not found, retrieve new key @@ -218,9 +189,6 @@ export class ShapezGameAnalytics extends GameAnalyticsInterface { this.syncKey = res.key; logger.log("Key retrieved:", this.syncKey); this.app.storage.writeFileAsync(analyticsLocalFile, res.key); - if (eventConnector) { - eventConnector.setUserID(eventConnector); - } } else { throw new Error("Bad response from analytics server: " + res); } diff --git a/src/js/platform/browser/wrapper.js b/src/js/platform/browser/wrapper.js index 267fce08..94d174f3 100644 --- a/src/js/platform/browser/wrapper.js +++ b/src/js/platform/browser/wrapper.js @@ -3,6 +3,7 @@ import { createLogger } from "../../core/logging"; import { queryParamOptions } from "../../core/query_parameters"; import { WEB_STEAM_SSO_AUTHENTICATED } from "../../core/steam_sso"; import { clamp } from "../../core/utils"; +import { CrazygamesAdProvider } from "../ad_providers/crazygames"; import { GamedistributionAdProvider } from "../ad_providers/gamedistribution"; import { NoAdProvider } from "../ad_providers/no_ad_provider"; import { SteamAchievementProvider } from "../electron/steam_achievement_provider"; @@ -22,13 +23,11 @@ export class PlatformWrapperImplBrowser extends PlatformWrapperInterface { adProvider: NoAdProvider, iframed: false, externalLinks: true, - iogLink: true, }; if (!G_IS_STANDALONE && !WEB_STEAM_SSO_AUTHENTICATED && queryParamOptions.embedProvider) { const providerId = queryParamOptions.embedProvider; this.embedProvider.iframed = true; - this.embedProvider.iogLink = false; switch (providerId) { case "armorgames": { @@ -38,7 +37,6 @@ export class PlatformWrapperImplBrowser extends PlatformWrapperInterface { case "iogames.space": { this.embedProvider.id = "iogames.space"; - this.embedProvider.iogLink = true; break; } @@ -61,6 +59,7 @@ export class PlatformWrapperImplBrowser extends PlatformWrapperInterface { case "crazygames": { this.embedProvider.id = "crazygames"; + this.embedProvider.adProvider = CrazygamesAdProvider; break; } diff --git a/src/js/profile/application_settings.js b/src/js/profile/application_settings.js index 33dd9e84..85156dc0 100644 --- a/src/js/profile/application_settings.js +++ b/src/js/profile/application_settings.js @@ -140,7 +140,7 @@ function initializeSettings() { options: Object.keys(LANGUAGES), valueGetter: key => key, textGetter: key => LANGUAGES[key].name, - category: enumCategories.general, + category: G_CHINA_VERSION || G_WEGAME_VERSION ? null : enumCategories.general, restartRequired: true, changeCb: (app, id) => null, magicValue: "auto-detect", @@ -286,7 +286,10 @@ function initializeSettings() { new BoolSetting("lowQualityMapResources", enumCategories.performance, (app, value) => {}), new BoolSetting("disableTileGrid", enumCategories.performance, (app, value) => {}), new BoolSetting("lowQualityTextures", enumCategories.performance, (app, value) => {}), + new BoolSetting("simplifiedBelts", enumCategories.performance, (app, value) => {}), + + new BoolSetting("showKiwiClicker", null, (app, value) => {}), ]; } @@ -331,6 +334,8 @@ class SettingsStorage { * @type {Object.} */ this.keybindingOverrides = {}; + + this.showKiwiClicker = true; } } @@ -547,7 +552,7 @@ export class ApplicationSettings extends ReadWriteProxy { } getCurrentVersion() { - return 31; + return 32; } /** @param {{settings: SettingsStorage, version: number}} data */ @@ -699,6 +704,11 @@ export class ApplicationSettings extends ReadWriteProxy { data.version = 31; } + if (data.version < 32) { + data.settings.showKiwiClicker = true; + data.version = 32; + } + // MODS if (!THEMES[data.settings.theme] || !this.app.restrictionMgr.getHasExtendedSettings()) { console.log("Resetting theme because its no longer available: " + data.settings.theme); diff --git a/src/js/states/ingame.js b/src/js/states/ingame.js index aaf37269..ec410b1a 100644 --- a/src/js/states/ingame.js +++ b/src/js/states/ingame.js @@ -203,6 +203,14 @@ export class InGameState extends GameState { // do nothing } + getIsIngame() { + return ( + this.stage === GAME_LOADING_STATES.s10_gameRunning && + this.core && + !this.core.root.hud.shouldPauseGame() + ); + } + /** * Called when the game somehow failed to initialize. Resets everything to basic state and * then goes to the main menu, showing the error diff --git a/src/js/states/login.js b/src/js/states/login.js index 64f599e4..cd8d8007 100644 --- a/src/js/states/login.js +++ b/src/js/states/login.js @@ -30,11 +30,6 @@ export class LoginState extends GameState { throw new Error("No next state id"); } - if (this.app.clientApi.isLoggedIn()) { - this.finishLoading(); - return; - } - this.dialogs = new HUDModalDialogs(null, this.app); const dialogsElement = document.body.querySelector(".modalDialogParent"); this.dialogs.initializeToElement(dialogsElement); diff --git a/src/js/states/main_menu.js b/src/js/states/main_menu.js index ebbf2747..92187ee5 100644 --- a/src/js/states/main_menu.js +++ b/src/js/states/main_menu.js @@ -4,6 +4,7 @@ import { GameState } from "../core/game_state"; import { DialogWithForm } from "../core/modal_dialog_elements"; import { FormElementInput } from "../core/modal_dialog_forms"; import { ReadWriteProxy } from "../core/read_write_proxy"; +import { STOP_PROPAGATION } from "../core/signal"; import { WEB_STEAM_SSO_AUTHENTICATED } from "../core/steam_sso"; import { formatSecondsToTimeAgo, @@ -41,8 +42,7 @@ export class MainMenuState extends GameState { const showLanguageIcon = !G_CHINA_VERSION && !G_WEGAME_VERSION; const showExitAppButton = G_IS_STANDALONE; const showPuzzleDLC = - G_IS_DEV || - (!G_WEGAME_VERSION && (G_IS_STANDALONE || WEB_STEAM_SSO_AUTHENTICATED) && !G_IS_STEAM_DEMO); + !G_WEGAME_VERSION && (G_IS_STANDALONE || WEB_STEAM_SSO_AUTHENTICATED) && !G_IS_STEAM_DEMO; const showWegameFooter = G_WEGAME_VERSION; const hasMods = MODS.anyModsActive(); @@ -65,7 +65,8 @@ export class MainMenuState extends GameState { } const showDemoAdvertisement = - showExternalLinks && this.app.restrictionMgr.getIsStandaloneMarketingActive(); + (showExternalLinks || G_CHINA_VERSION) && + this.app.restrictionMgr.getIsStandaloneMarketingActive(); const ownsPuzzleDLC = WEB_STEAM_SSO_AUTHENTICATED || @@ -73,6 +74,8 @@ export class MainMenuState extends GameState { !G_IS_STEAM_DEMO && /** @type { PlatformWrapperImplElectron}*/ (this.app.platformWrapper).dlcs.puzzle); + const showKiwiClicker = this.app.settings.getSetting("showKiwiClicker") && MODS.mods.length === 0; + const bannerHtml = `

${T.demoBanners.titleV2}

@@ -99,11 +102,15 @@ export class MainMenuState extends GameState { ${ globalConfig.currentDiscount > 0 - ? `-${globalConfig.currentDiscount}%!` + ? `${T.global.discount.replace( + "", + String(globalConfig.currentDiscount) + )}` : "" } Play shapez on Steam + ${!G_IS_STEAM_DEMO ? `${T.global.discountSummerSale}` : ""} ${!G_IS_STEAM_DEMO ? `
` : ""} `; @@ -138,14 +145,18 @@ export class MainMenuState extends GameState {
${ - G_IS_STANDALONE || WEB_STEAM_SSO_AUTHENTICATED - ? "" - : `` + : "" } ${ WEB_STEAM_SSO_AUTHENTICATED @@ -191,10 +202,15 @@ export class MainMenuState extends GameState { } -
+ ${ + showKiwiClicker + ? `
Check out this small side project I am working on right now!
+
-
+
` + : "" + } ` : "" } @@ -258,7 +274,7 @@ export class MainMenuState extends GameState { - - -
Build ${G_BUILD_VERSION} @ ${G_BUILD_COMMIT_HASH} diff --git a/src/js/states/settings.js b/src/js/states/settings.js index 9ea38855..0927fbf9 100644 --- a/src/js/states/settings.js +++ b/src/js/states/settings.js @@ -88,8 +88,7 @@ export class SettingsState extends TextualGameState { for (let i = 0; i < this.app.settings.settingHandles.length; ++i) { const setting = this.app.settings.settingHandles[i]; - - if ((G_CHINA_VERSION || G_WEGAME_VERSION) && setting.id === "language") { + if (!setting.categoryId) { continue; } @@ -170,7 +169,7 @@ export class SettingsState extends TextualGameState { initSettings() { this.app.settings.settingHandles.forEach(setting => { - if ((G_CHINA_VERSION || G_WEGAME_VERSION) && setting.id === "language") { + if (!setting.categoryId) { return; } diff --git a/translations/base-ar.yaml b/translations/base-ar.yaml index 02469947..08f440e3 100644 --- a/translations/base-ar.yaml +++ b/translations/base-ar.yaml @@ -52,6 +52,8 @@ global: space: SPACE loggingIn: Logging in loadingResources: Downloading additional resources ( %) + discount: -% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: Demo Version intro: |- @@ -99,6 +101,7 @@ mainMenu: logout: Logout noActiveSavegames: No active savegames found - Click play to start a new game! playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + playFullVersionStandalone: You can now also play the full version in your Browser! dialogs: buttons: ok: OK diff --git a/translations/base-cat.yaml b/translations/base-cat.yaml index cae2cd94..1c8b3584 100644 --- a/translations/base-cat.yaml +++ b/translations/base-cat.yaml @@ -55,6 +55,8 @@ global: space: ESPAI loggingIn: Logging in loadingResources: Downloading additional resources ( %) + discount: -% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: Demo - Versió de prova intro: |- @@ -103,6 +105,7 @@ mainMenu: logout: Logout noActiveSavegames: No active savegames found - Click play to start a new game! playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + playFullVersionStandalone: You can now also play the full version in your Browser! dialogs: buttons: ok: OK diff --git a/translations/base-cz.yaml b/translations/base-cz.yaml index b092c21c..3dac1670 100644 --- a/translations/base-cz.yaml +++ b/translations/base-cz.yaml @@ -51,6 +51,8 @@ global: space: SPACE loggingIn: Přihlašuji loadingResources: Stahování dalších zdrojů ( %) + discount: -% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: Demo verze intro: |- @@ -99,6 +101,7 @@ mainMenu: logout: Logout noActiveSavegames: No active savegames found - Click play to start a new game! playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + playFullVersionStandalone: You can now also play the full version in your Browser! dialogs: buttons: ok: OK diff --git a/translations/base-da.yaml b/translations/base-da.yaml index 97382e6b..6a510d60 100644 --- a/translations/base-da.yaml +++ b/translations/base-da.yaml @@ -53,6 +53,8 @@ global: space: MELLEMRUM loggingIn: Logging in loadingResources: Downloader yderligere ressourcer ( %) + discount: -% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: Demoversion intro: |- @@ -100,6 +102,7 @@ mainMenu: logout: Logout noActiveSavegames: No active savegames found - Click play to start a new game! playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + playFullVersionStandalone: You can now also play the full version in your Browser! dialogs: buttons: ok: OK diff --git a/translations/base-de.yaml b/translations/base-de.yaml index 07747223..f944cb11 100644 --- a/translations/base-de.yaml +++ b/translations/base-de.yaml @@ -55,6 +55,8 @@ global: shift: UMSCH space: LEER loadingResources: Lade zusätzliche Ressourcen ( %) + discount: -% + discountSummerSale: SONDERANGEBOT! Angebot endet am 7. Juli demoBanners: title: Demoversion titleV2: "Spiele jetzt die Vollversion für:" @@ -103,7 +105,9 @@ mainMenu: Vollversion im Browser! playingFullVersion: Du spielst jetzt die Vollversion! logout: Ausloggen - noActiveSavegames: Keine Speicherstände gefunden - Klicke Spielen um ein neues Spiel zu starten! + noActiveSavegames: Keine Speicherstände gefunden - Klicke Spielen um ein neues + Spiel zu starten! + playFullVersionStandalone: You can now also play the full version in your Browser! puzzleMenu: play: Spielen edit: Bearbeiten diff --git a/translations/base-el.yaml b/translations/base-el.yaml index 73c88866..8e1c4d51 100644 --- a/translations/base-el.yaml +++ b/translations/base-el.yaml @@ -55,6 +55,8 @@ global: space: SPACE loggingIn: Logging in loadingResources: Downloading additional resources ( %) + discount: -% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: Demo Version intro: |- @@ -103,6 +105,7 @@ mainMenu: logout: Logout noActiveSavegames: No active savegames found - Click play to start a new game! playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + playFullVersionStandalone: You can now also play the full version in your Browser! dialogs: buttons: ok: OK diff --git a/translations/base-en.yaml b/translations/base-en.yaml index f2ced923..b2dbd736 100644 --- a/translations/base-en.yaml +++ b/translations/base-en.yaml @@ -58,6 +58,9 @@ global: # What symbol to use to separate the integer part from the fractional part of a number, e.g. "0.4" decimalSeparator: "." + discount: -% + discountSummerSale: "SPECIAL PROMOTION! Offer ends 7 July" + # The suffix for large numbers, e.g. 1.3k, 400.2M, etc. suffix: thousands: k @@ -133,6 +136,7 @@ mainMenu: noActiveSavegames: No active savegames found - Click play to start a new game! playFullVersionV2: Bought shapez on Steam? Play the full version in your Browser! + playFullVersionStandalone: You can now also play the full version in your Browser! playingFullVersion: You are now playing the full version! logout: Logout diff --git a/translations/base-es.yaml b/translations/base-es.yaml index 7f0c292a..5dbea916 100644 --- a/translations/base-es.yaml +++ b/translations/base-es.yaml @@ -54,7 +54,9 @@ global: shift: SHIFT space: ESPACIO loggingIn: Iniciando sesión - loadingResources: Downloading additional resources ( %) + loadingResources: Descargando recursos adicionales ( %) + discount: -% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: Versión de prueba intro: >- @@ -97,15 +99,18 @@ mainMenu: puzzleDlcText: ¿Disfrutas compactando y optimizando fábricas? ¡Consigue ahora el DLC de Puzles en Steam para aún más diversión! puzzleDlcWishlist: ¡Añádelo ahora a tu lista de deseos! - puzzleDlcViewNow: Ver Dlc + puzzleDlcViewNow: Ver DLC mods: - title: Active Mods - warningPuzzleDLC: Playing the Puzzle DLC is not possible with mods. Please - disable all mods to play the DLC. - playingFullVersion: You are now playing the full version! - logout: Logout - noActiveSavegames: No active savegames found - Click play to start a new game! - playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + title: Mods Activos + warningPuzzleDLC: No es posible jugar el DLC Puzzle con mods. Por favor + desactiva todos los mods para jugar el DLC. + playingFullVersion: ¡Estás jugando la versión completa! + logout: Cerrar Sesión + noActiveSavegames: No se encontraron partidas guardadas activas - ¡Haz click en + Jugar para empezar una nueva partida! + playFullVersionV2: Has comprado shapez en Steam? ¡Juega la versión completa + desde tu navegador! + playFullVersionStandalone: ¡Ahora puedes jugar la versión completa desde tu navegador! dialogs: buttons: ok: OK @@ -230,7 +235,7 @@ dialogs: title: Fallo al cargar los Puzles desc: Desafortunadamente, no se pudieron cargar los puzles. submitPuzzle: - title: Enviar Puzzle + title: Enviar Puzle descName: "Nombra tu puzle:" descIcon: "Por favor ingresa una clave única, que será el icono de tu puzle (Puedes generarlas aquí, o escoger una de las formas @@ -291,36 +296,38 @@ dialogs: title: ¿Eliminar Puzle? desc: ¿Estas seguro de querer eliminar ''? ¡Esto no se puede deshacer! modsDifference: - title: Mod Warning - desc: The currently installed mods differ from the mods the savegame was created - with. This might cause the savegame to break or not load at all. Are - you sure you want to continue? - missingMods: Missing Mods - newMods: Newly installed Mods + title: Advertencia por Mod + desc: Los mods instalados actualmente difieren a los mods de la partida guardada + en el momento de la creación. Esto puede causar que la partida + guardada se corrompa o no funcione. ¿Estás seguro de querer + consitnuar? + missingMods: Mods Faltantes + newMods: Mods Nuevos Instalados resourceLoadFailed: - title: Resources failed to load - demoLinkText: shapez demo on Steam - descWeb: "One ore more resources could not be loaded. Make sure you have a - stable internet connection and try again. If this still doesn't - work, make sure to also disable any browser extensions (including - adblockers).<br><br> As an alternative, you can also play the - <demoOnSteamLinkText>. <br><br> Error Message:" - descSteamDemo: "One ore more resources could not be loaded. Try restarting the - game - If that does not help, try reinstalling and verifying the - game files via Steam. <br><br> Error Message:" + title: Recursos fallaron en cargar + demoLinkText: Demo de shapez en Steam + descWeb: "Uno o más recrusos no pudieron cargar. Asegurate de tener una conexión + estable de internet y vuelve a intentar. Si todavía no funciona, + asegurate de tambien desactivar extensiones del navegador + (incluyendo adblockers).<br><br> Como alternativa, puedes tambien + jugar el <demoOnSteamLinkText>. <br><br> Mensaje de Error:" + descSteamDemo: "Uno o más recursos no puedieron cargar. Intenta reiniciar el + juego - Si eso no ayuda, intenta reinstalar y verificar los archivos + del juego en Steam. <br><br> Mensaje de Error:" steamSsoError: - title: Full Version Logout - desc: You have been logged out from the Full Browser Version since either your - network connection is unstable or you are playing on another - device.<br><br> Please make sure you don't have shapez open in any - other browser tab or another computer with the same Steam - account.<br><br> You can login again in the main menu. + title: Cierre de sesión de versión completa + desc: Se te ha cerrado sesión desde la versión completa por navegaador debido a + que tu conexión de internet es inestable o estás jugando desde otro + dispositivo.<br><br> Por favor asegurate de que no tienes shapez + abierto en otra pestaña del navegador o en otra computadora con la + misma cuenta de Steam.<br><br> Puedes iniciar sesión nuevamente + desde el menú principal. steamSsoNoOwnership: - title: Full Edition not owned - desc: In order to play the Full Edition in your Browser, you need to own both - the base game and the Puzzle DLC on your Steam account.<br><br> - Please make sure you own both, signed in with the correct Steam - account and then try again. + title: No eres dueño de la Edición completa + desc: En orden de poder jugar la versión completa en tu nevagador, debes comprar + el juego base y el DLC Puzzle desde tu cuenta de Steam.<br><br> Por + favor asegurate de tener ambos, iniciendo sesión con la cuenta + correcta de Steam y vuelve a intentar. ingame: keybindingsOverlay: moveMap: Mover @@ -468,7 +475,7 @@ ingame: desc: Presiona aquí para ver que tiene la versión de Steam! get_on_steam: Consiguelo en Steam standaloneAdvantages: - no_thanks: ¡No grácias! + no_thanks: ¡No gracias! points: levels: title: 12 nuevos niveles @@ -492,11 +499,11 @@ ingame: title: Logros desc: Atrapalos a todos! mods: - title: Modding support! - desc: Over 80 mods available! - titleV2: "Get the full version now on Steam to unlock:" - titleExpiredV2: Demo completed! - titleEnjoyingDemo: Enjoy the demo? + title: ¡Soporte de Modificaciones! + desc: ¡Más de 80 modificaciones disponibles! + titleV2: "Obten la versión completa en Steam para desbloquear:" + titleExpiredV2: ¡Demo completada! + titleEnjoyingDemo: ¿Estás disfrutando la demo? puzzleEditorSettings: zoneTitle: Área zoneWidth: Anchura @@ -506,7 +513,7 @@ ingame: share: Compartir report: Reportar clearBuildings: Borrar Edificios - resetPuzzle: Reiniciar Puzzle + resetPuzzle: Reiniciar Puzle puzzleEditorControls: title: Editor de Puzles instructions: @@ -534,7 +541,7 @@ ingame: titleRatingDesc: Tu puntuación me ayudará a hacerte mejores sugerencias en el futuro continueBtn: Continuar Jugando menuBtn: Menú - nextPuzzle: Siguiente Puzzle + nextPuzzle: Siguiente Puzle puzzleMetadata: author: Autor shortKey: Clave @@ -1128,7 +1135,7 @@ keybindings: massSelect: Selección masiva buildings: Atajos de edificios placementModifiers: Modificadores de colocación - mods: Provided by Mods + mods: Provisto por Mods mappings: confirm: Confirmar back: Atrás @@ -1242,7 +1249,7 @@ tips: - Tener una buena proporción entre edificion maximizará su eficiencia - A su máximo nivel, 5 extractores llenarán por completo una cinta transportadora. - - ¡No te olvides de utilizár túneles! + - ¡No te olvides de utilizar túneles! - No es necesario dividir los items de manera uniforme para conseguír la mayor eficiencia. - Mantener apretado <b>SHIFT</b> activará el planeador de cintas, @@ -1308,7 +1315,7 @@ puzzleMenu: loadPuzzle: Cargar reviewPuzzle: Revisar y Publicar validatingPuzzle: Validando Puzle - submittingPuzzle: Enviando Puzzle + submittingPuzzle: Enviando Puzle noPuzzles: Ahora mismo no hay puzles en esta sección. categories: levels: Niveles @@ -1349,7 +1356,7 @@ puzzleMenu: derecho a shapez.io en tu biblioteca, selecionando propiedades > DLCs. search: action: Buscar - placeholder: Escribe un nombre de puzzle o autor + placeholder: Escribe un nombre de puzle o autor includeCompleted: Incluir completado difficulties: any: Cualquier dificultad @@ -1391,20 +1398,22 @@ backendErrors: no-permission: No tienes los permisos necesarios para llevar a cabo esta acción. mods: title: Mods - author: Author - version: Version - modWebsite: Website - openFolder: Open Mods Folder - folderOnlyStandalone: Opening the mod folder is only possible when running the standalone. - browseMods: Browse Mods - modsInfo: To install and manage mods, copy them to the mods folder within the - game directory. You can also use the 'Open Mods Folder' button on the - top right. - noModSupport: You need the standalone version on Steam to install mods. + author: Autor + version: Versión + modWebsite: Pagina Web + openFolder: Abrir Carpeta de Mods + folderOnlyStandalone: Solo es posible abrir la carpeta de mods corriendo la + versión de escritorio. + browseMods: Examinar Mods + modsInfo: Para instalar y manejar mods, copialos en la carpeta de mods dentro + del directorio del juego. Tambien puedes usar el boton 'Abrir Carpeta de + Mods' en la esquina superior derecha. + noModSupport: Necesitas la versión de escritorio de Steam para instalar mods. togglingComingSoon: - title: Coming Soon - description: Enabling or disabling mods is currently only possible by copying - the mod file from or to the mods/ folder. However, being able to - toggle them here is planned for a future update! - browserNoSupport: Due to browser restrictions it is currently only possible to - install mods in the Steam version - Sorry! + title: Proximamente + description: Solo es posible activar o desactivar mods copiando o removiendo el + archivo del mod desde o en la carpeta mods/. Sin embargo, la + posibilidad de activarlos o desactivarlos aquí está planeada para + una actualización futura! + browserNoSupport: Debido a restricciones del navegador, solo es posible instalar + mods en la versión de Steam - Disculpas! diff --git a/translations/base-fi.yaml b/translations/base-fi.yaml index 5bceb3aa..71847829 100644 --- a/translations/base-fi.yaml +++ b/translations/base-fi.yaml @@ -55,6 +55,8 @@ global: space: VÄLILYÖNTI loggingIn: Logging in loadingResources: Downloading additional resources (<percentage> %) + discount: -<percentage>% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: Demoversio intro: |- @@ -89,20 +91,22 @@ mainMenu: savegameLevel: Taso <x> savegameLevelUnknown: Tuntematon taso savegameUnnamed: Nimetön - puzzleMode: Puzzle Mode - back: Back - puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle - DLC now on Steam for even more fun! - puzzleDlcWishlist: Wishlist now! - puzzleDlcViewNow: View Dlc + puzzleMode: Pulmatila + back: Takaisin + puzzleDlcText: Nautitko tehtaiden pienentämisestä ja optimoinnista? Hanki pulma + DLC nyt Steamista lisähuviksi! + puzzleDlcWishlist: Lisää nyt toivelistallesi! + puzzleDlcViewNow: Katso DLC mods: - title: Active Mods - warningPuzzleDLC: Playing the Puzzle DLC is not possible with mods. Please - disable all mods to play the DLC. - playingFullVersion: You are now playing the full version! - logout: Logout - noActiveSavegames: No active savegames found - Click play to start a new game! - playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + title: Aktiiviset modit + warningPuzzleDLC: Pulma DLC:n pelaaminen ei ole mahdollista modien kanssa. kytke + kaikki modit pois päältä pelataksesi DLC:tä. + playingFullVersion: Pelaat nyt täyttä versiota! + logout: Kirjaudu ulos + noActiveSavegames: Aktiivisia pelitallennuksia ei löytynyt - Klikkaa pelaa + aloittaaksesi uuden pelin! + playFullVersionV2: Ostitko Shapezin Steamista? Pelaa täyttä versiota selaimellasi! + playFullVersionStandalone: Voit nyt myös pelatatäyttä versiota selaimellasi! dialogs: buttons: ok: OK @@ -116,9 +120,9 @@ dialogs: viewUpdate: Näytä päivitys showUpgrades: Näytä päivitykset showKeybindings: Näytä pikanäppäimet - retry: Retry - continue: Continue - playOffline: Play Offline + retry: Yritä uudelleen + continue: Jatka + playOffline: Pelaa Offline-tilassa importSavegameError: title: Tuontivirhe text: "Tallennuksen tuonti epäonnistui:" @@ -215,51 +219,51 @@ dialogs: title: Ohjevideo saatavilla desc: Tästä tasosta on saatavilla ohjevideo! Haluaisitko katsoa sen? editConstantProducer: - title: Set Item + title: Aseta Muoto puzzleLoadFailed: - title: Puzzles failed to load - desc: "Unfortunately the puzzles could not be loaded:" + title: Pulman lataus epäonnistui + desc: "Valitettavasti pulmaa ei pystytty lataamaan:" submitPuzzle: - title: Submit Puzzle - descName: "Give your puzzle a name:" - descIcon: "Please enter a unique short key, which will be shown as the icon of - your puzzle (You can generate them <link>here</link>, or choose one - of the randomly suggested shapes below):" - placeholderName: Puzzle Title + title: Toimita Pulma + descName: "Anna pulmallesi nimi:" + descIcon: "Syötä yksilöllinen lyhyt avain, joka tulee olemaan pulmasi kuvake + (Voit generoida sen <link>täällä</link>, tai valitse yksi + satunnaisesti ehdotetuista muodoista alta):" + placeholderName: Pulman Nimi puzzleResizeBadBuildings: - title: Resize not possible - desc: You can't make the zone any smaller, because then some buildings would be - outside the zone. + title: Koon muuttaminen ei ole mahdollista + desc: Et voi tehdä alueesta pienempää, koska jotkin rakennukset jäisivät alueen + ulkopuolelle. puzzleLoadError: - title: Bad Puzzle - desc: "The puzzle failed to load:" + title: Huono Pulma + desc: "Pulman lataus epäonnistui:" offlineMode: - title: Offline Mode - desc: We couldn't reach the servers, so the game has to run in offline mode. - Please make sure you have an active internet connection. + title: Offline tila + desc: Emme pystyneet tavoittamaan palvelinta, joten pelin täytyy olla offline + tilassa. Tarkista että sinulla on aktiivinen internet-yhteys. puzzleDownloadError: - title: Download Error - desc: "Failed to download the puzzle:" + title: Latausvirhe + desc: "Pulman lataus epäonnistui:" puzzleSubmitError: - title: Submission Error - desc: "Failed to submit your puzzle:" + title: Toimitusvirhe + desc: "Pulman toimitus epäonnistui:" puzzleSubmitOk: - title: Puzzle Published - desc: Congratulations! Your puzzle has been published and can now be played by - others. You can now find it in the "My puzzles" section. + title: Pulma Julkaistu + desc: Onnittelut! Pulmasi on nyt julkaistu ja muut voivat pelata sitä. Voit nyt + löytää sen "Omat pulmani" osiosta. puzzleCreateOffline: - title: Offline Mode - desc: Since you are offline, you will not be able to save and/or publish your - puzzle. Would you still like to continue? + title: Offline Tila + desc: Koska olet offline-tilassa, et voi tallentaa ja/tai julkaista pulmaasi. + Haluatko silti jatkaa? puzzlePlayRegularRecommendation: - title: Recommendation - desc: I <strong>strongly</strong> recommend playing the normal game to level 12 - before attempting the puzzle DLC, otherwise you may encounter - mechanics not yet introduced. Do you still want to continue? + title: Suositus + desc: Suosittelen <strong>suuresti</strong> pelata tavallista peliä tasolle 12 + ennen pulma DLC:n yrittämistä, muuten voit kohdata mekaniikkoja + joita ei ole esitelty. Haluatko silti jatkaa? puzzleShare: - title: Short Key Copied - desc: The short key of the puzzle (<key>) has been copied to your clipboard! It - can be entered in the puzzle menu to access the puzzle. + title: Lyhyt Avain Kopioitu + desc: Pulman lyhyt avain (<key>) on kopioitu leikepöydällesi! Se voidaan syöttää + pulmavalikossa pulmaan pääsemiseksi. puzzleReport: title: Report Puzzle options: diff --git a/translations/base-fr.yaml b/translations/base-fr.yaml index bf587d72..169e3cfe 100644 --- a/translations/base-fr.yaml +++ b/translations/base-fr.yaml @@ -52,6 +52,8 @@ global: space: ESPACE loggingIn: Se connecter loadingResources: Chargement de ressources supplémentaires (<percentage> %) + discount: -<percentage>% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: Version de démo intro: >- @@ -102,6 +104,7 @@ mainMenu: logout: Logout noActiveSavegames: No active savegames found - Click play to start a new game! playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + playFullVersionStandalone: You can now also play the full version in your Browser! dialogs: buttons: ok: OK diff --git a/translations/base-he.yaml b/translations/base-he.yaml index 2183c12b..c0b61ef4 100644 --- a/translations/base-he.yaml +++ b/translations/base-he.yaml @@ -51,6 +51,8 @@ global: space: SPACE loggingIn: Logging in loadingResources: Downloading additional resources (<percentage> %) + discount: -<percentage>% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: גרסאת דמו intro: |- @@ -98,6 +100,7 @@ mainMenu: logout: Logout noActiveSavegames: No active savegames found - Click play to start a new game! playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + playFullVersionStandalone: You can now also play the full version in your Browser! dialogs: buttons: ok: אישור diff --git a/translations/base-hr.yaml b/translations/base-hr.yaml index 5e617ed4..28e83978 100644 --- a/translations/base-hr.yaml +++ b/translations/base-hr.yaml @@ -54,6 +54,8 @@ global: space: SPACE loggingIn: Logging in loadingResources: Downloading additional resources (<percentage> %) + discount: -<percentage>% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: Demo Verzija intro: |- @@ -101,6 +103,7 @@ mainMenu: logout: Logout noActiveSavegames: No active savegames found - Click play to start a new game! playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + playFullVersionStandalone: You can now also play the full version in your Browser! dialogs: buttons: ok: OK diff --git a/translations/base-hu.yaml b/translations/base-hu.yaml index 782fc363..1e9afe17 100644 --- a/translations/base-hu.yaml +++ b/translations/base-hu.yaml @@ -52,6 +52,8 @@ global: space: SZÓKÖZ loggingIn: Bejelentkezés loadingResources: Downloading additional resources (<percentage> %) + discount: -<percentage>% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: Demó verzió intro: |- @@ -100,6 +102,7 @@ mainMenu: logout: Logout noActiveSavegames: No active savegames found - Click play to start a new game! playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + playFullVersionStandalone: You can now also play the full version in your Browser! dialogs: buttons: ok: OK diff --git a/translations/base-ind.yaml b/translations/base-ind.yaml index bdf87eb6..7aa95ae4 100644 --- a/translations/base-ind.yaml +++ b/translations/base-ind.yaml @@ -52,6 +52,8 @@ global: space: SPACE loggingIn: Logging in loadingResources: Downloading additional resources (<percentage> %) + discount: -<percentage>% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: Versi Demo intro: |- @@ -99,6 +101,7 @@ mainMenu: logout: Logout noActiveSavegames: No active savegames found - Click play to start a new game! playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + playFullVersionStandalone: You can now also play the full version in your Browser! dialogs: buttons: ok: OK diff --git a/translations/base-it.yaml b/translations/base-it.yaml index 89e664bf..5935d5f1 100644 --- a/translations/base-it.yaml +++ b/translations/base-it.yaml @@ -55,6 +55,8 @@ global: space: SPAZIO loggingIn: Logging in loadingResources: Downloading additional resources (<percentage> %) + discount: -<percentage>% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: Versione Demo intro: |- @@ -104,6 +106,7 @@ mainMenu: logout: Logout noActiveSavegames: No active savegames found - Click play to start a new game! playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + playFullVersionStandalone: You can now also play the full version in your Browser! dialogs: buttons: ok: OK diff --git a/translations/base-ja.yaml b/translations/base-ja.yaml index 70b775a1..65a2c5a9 100644 --- a/translations/base-ja.yaml +++ b/translations/base-ja.yaml @@ -47,6 +47,8 @@ global: space: SPACE loggingIn: Logging in loadingResources: 追加リソースのダウンロード(<percentage>%) + discount: -<percentage>% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: デモ版 intro: |- @@ -93,6 +95,7 @@ mainMenu: logout: Logout noActiveSavegames: No active savegames found - Click play to start a new game! playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + playFullVersionStandalone: You can now also play the full version in your Browser! dialogs: buttons: ok: OK @@ -393,9 +396,11 @@ ingame: 切断機はそれの向きに関わらず、<strong>縦の線</strong>で切断します。" 2_2_place_trash: 切断機は<strong>詰まる</strong>場合があります!<br><br> <strong>ゴミ箱</strong>を利用して、不必要な部品を廃棄できます。 - 2_3_more_cutters: "いいですね! <strong>更に2つ以上の切断機</strong>を設置して処理をスピードアップさせましょう!<br>\ + 2_3_more_cutters: + "いいですね! <strong>更に2つ以上の切断機</strong>を設置して処理をスピードアップさせましょう!<br>\ <br> 追記: <strong>0から9 のホットキー</strong>を使用すると素早く部品にアクセスできます。" - 3_1_rectangles: "それでは四角形を抽出しましょう! <strong>4つの抽出機を作成</strong>してそれをハブに接続します。<br><\ + 3_1_rectangles: + "それでは四角形を抽出しましょう! <strong>4つの抽出機を作成</strong>してそれをハブに接続します。<br><\ br> 追記: <strong>SHIFT</strong>を押しながらベルトを引くと ベルトプランナーが有効になります!" 21_1_place_quad_painter: <strong>四色着色機</strong>を設置して、 <strong>円</strong>、<strong>白</strong>そして @@ -681,14 +686,16 @@ buildings: storyRewards: reward_cutter_and_trash: title: 形の切断 - desc: <strong>切断機</strong>が利用可能になりました。これは入力された形を、<strong>向きを考慮せず上下の直線で</strong>半分に切断します! <br><br>利用しない側の出力に注意しましょう、破棄しなければ<strong>詰まって停止してしまいます。</strong> + desc: + <strong>切断機</strong>が利用可能になりました。これは入力された形を、<strong>向きを考慮せず上下の直線で</strong>半分に切断します! <br><br>利用しない側の出力に注意しましょう、破棄しなければ<strong>詰まって停止してしまいます。</strong> - このために<strong>ゴミ箱</strong>も用意しました。入力アイテムをすべて破棄できます! reward_rotater: title: 回転 desc: <strong>回転機</strong>が利用可能になりました! 形を時計回り方向に90度回転させます。 reward_painter: title: 着色 - desc: "<strong>着色機</strong>が利用可能になりました。(今まで形状でやってきた方法で)色を抽出し、形状と合成することで着色します! <\ + desc: + "<strong>着色機</strong>が利用可能になりました。(今まで形状でやってきた方法で)色を抽出し、形状と合成することで着色します! <\ br><br>追伸: もし色覚特性をお持ちでしたら、 設定に<strong>色覚特性モード</strong>があります!" reward_mixer: title: 混色 @@ -707,7 +714,8 @@ storyRewards: desc: <strong>回転機</strong>のバリエーションが利用可能になりました。反時計回りの回転ができるようになります! 回転機を選択し、<strong>'T'キーを押すことで方向の切り替えができます。</strong> reward_miner_chainable: title: 連鎖抽出機 - desc: "<strong>連鎖抽出機</strong>が利用可能になりました! 他の抽出機に<strong>出力を渡す</strong>ことができるので、 + desc: + "<strong>連鎖抽出機</strong>が利用可能になりました! 他の抽出機に<strong>出力を渡す</strong>ことができるので、 資源の抽出がより効率的になります!<br><br> 補足: ツールバーの 旧い抽出機が置き換えられました!" reward_underground_belt_tier_2: title: トンネル レベルII @@ -732,7 +740,8 @@ storyRewards: 通常の着色機と同様に機能しますが、ひとつの色の消費で<strong>一度に2つの形</strong>を着色処理できます! reward_storage: title: ストレージ - desc: <strong>ストレージ</strong>が利用可能になりました。 - 容量上限までアイテムを格納できます!<br><br> + desc: + <strong>ストレージ</strong>が利用可能になりました。 - 容量上限までアイテムを格納できます!<br><br> 左側の出力を優先するため、<strong>オーバーフローゲート</strong>としても使用できます! reward_blueprints: title: ブループリント @@ -751,7 +760,8 @@ storyRewards: 設定で<strong>ヒントを有効にする</strong>と、 ワイヤのチュートリアルが有効になります。" reward_filter: title: アイテムフィルタ - desc: <strong>アイテムフィルタ</strong>が利用可能になりました! ワイヤレイヤの信号と一致するかどうかに応じて、アイテムを上側または右側の出力に分離します。<br><br> + desc: + <strong>アイテムフィルタ</strong>が利用可能になりました! ワイヤレイヤの信号と一致するかどうかに応じて、アイテムを上側または右側の出力に分離します。<br><br> また、真偽値(0/1)信号を入力すれば全てのアイテムの通過・非通過を制御できます。 reward_display: title: ディスプレイ @@ -760,11 +770,13 @@ storyRewards: ベルトリーダーとストレージが最後に通過したアイテムを出力していることに気づきましたか? それをディスプレイに表示してみてください!" reward_constant_signal: title: 定数信号 - desc: <strong>定数信号</strong>がワイヤレイヤで利用可能になりました! これは例えば<strong>アイテムフィルタ</strong>に接続すると便利です。<br><br> + desc: + <strong>定数信号</strong>がワイヤレイヤで利用可能になりました! これは例えば<strong>アイテムフィルタ</strong>に接続すると便利です。<br><br> 発信できる信号は<strong>形状</strong>、<strong>色</strong>、<strong>真偽値</strong>(1か0)です。 reward_logic_gates: title: 論理ゲート - desc: <strong>論理ゲート</strong>が利用可能になりました! 興奮する必要はありませんが、これは非常に優秀なんですよ!<br><br> + desc: + <strong>論理ゲート</strong>が利用可能になりました! 興奮する必要はありませんが、これは非常に優秀なんですよ!<br><br> これでAND, OR, XOR, NOTを計算できます。<br><br> ボーナスとして<strong>トランジスタ</strong>も追加しました! reward_virtual_processing: @@ -776,7 +788,8 @@ storyRewards: - ワイヤでイカしたものを作る。<br><br> - 今までのように工場を建設する。<br><br> いずれにしても、楽しんでください! no_reward: title: 次のレベル - desc: "このレベルには報酬はありません。次はきっとありますよ! <br><br> 補足: すでに作った生産ラインは削除しないようにしましょう。 - + desc: + "このレベルには報酬はありません。次はきっとありますよ! <br><br> 補足: すでに作った生産ラインは削除しないようにしましょう。 - 生産された形は<strong>すべて</strong>、後で<strong>アップグレードの解除</strong>に必要になります!" no_reward_freeplay: title: 次のレベル @@ -902,7 +915,8 @@ settings: description: 配置用のグリッドを無効にして、パフォーマンスを向上させます。 これにより、ゲームの見た目もすっきりします。 clearCursorOnDeleteWhilePlacing: title: 右クリックで配置をキャンセル - description: デフォルトで有効です。建物を設置しているときに右クリックすると、選択中の建物がキャンセルされます。 + description: + デフォルトで有効です。建物を設置しているときに右クリックすると、選択中の建物がキャンセルされます。 無効にすると、建物の設置中に右クリックで建物を削除できます。 lowQualityTextures: title: 低品質のテクスチャ(視認性低下) diff --git a/translations/base-kor.yaml b/translations/base-kor.yaml index 2f8619e7..e6daa9e0 100644 --- a/translations/base-kor.yaml +++ b/translations/base-kor.yaml @@ -49,6 +49,8 @@ global: space: SPACE loggingIn: 로그인 중 loadingResources: Downloading additional resources (<percentage> %) + discount: -<percentage>% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: 체험판 버전 intro: |- @@ -72,7 +74,8 @@ mainMenu: openSourceHint: 이 게임은 오픈 소스입니다! discordLink: 공식 디스코드 서버 helpTranslate: 번역을 도와주세요! - browserWarning: 이 게임은 현재 브라우저에서 느리게 작동하는 것으로 알려져 있습니다! 더 좋은 성능을 위해 정식 버전을 구매하거나 + browserWarning: + 이 게임은 현재 브라우저에서 느리게 작동하는 것으로 알려져 있습니다! 더 좋은 성능을 위해 정식 버전을 구매하거나 Google Chrome 브라우저를 다운로드하세요. savegameLevel: 레벨 <x> savegameLevelUnknown: 미확인 레벨 @@ -93,6 +96,7 @@ mainMenu: logout: Logout noActiveSavegames: No active savegames found - Click play to start a new game! playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + playFullVersionStandalone: You can now also play the full version in your Browser! dialogs: buttons: ok: 확인 @@ -148,7 +152,8 @@ dialogs: desc: 지난번 플레이 이후 변경 사항은 다음과 같습니다. upgradesIntroduction: title: 업그레이드 하기 - desc: <strong>기존의 공장을 허물지 마세요!</strong> 여러분이 그동안 만들어 수집한 모든 도형은 업그레이드에 사용됩니다. + desc: + <strong>기존의 공장을 허물지 마세요!</strong> 여러분이 그동안 만들어 수집한 모든 도형은 업그레이드에 사용됩니다. 업그레이드 버튼은 화면의 오른쪽 위에 있습니다. massDeleteConfirm: title: 삭제 확인 @@ -161,7 +166,8 @@ dialogs: desc: 12 레벨부터 청사진 기능이 해금됩니다! keybindingsIntroduction: title: 유용한 조작법 - desc: "이 게임에는 거대한 공장을 수월하게 세우기 위한 많은 조작법이 있습니다. 아래는 그 대표적인 것이며, 자세한 조작법은 + desc: + "이 게임에는 거대한 공장을 수월하게 세우기 위한 많은 조작법이 있습니다. 아래는 그 대표적인 것이며, 자세한 조작법은 <strong>조작법 설정</strong>을 참고해주세요!<br><br> <code class='keybinding'>CTRL</code> + 드래그: 영역을 선택합니다.<br> <code class='keybinding'>SHIFT</code>: 누르는 동안 같은 건물을 여러개 배치할 수 있습니다.<br> @@ -175,7 +181,8 @@ dialogs: desc: 체험판 버전에서는 마커를 2개 까지만 배치할 수 있습니다. 정식 버전을 구입하면 마커를 무제한으로 배치할 수 있습니다! exportScreenshotWarning: title: 스크린샷 내보내기 - desc: 당신의 공장을 스크린샷으로 내보내려 합니다. 매우 거대한 크기의 공장이라면 그 처리 시간이 상당히 오래 걸릴 것이며, 최악의 경우 + desc: + 당신의 공장을 스크린샷으로 내보내려 합니다. 매우 거대한 크기의 공장이라면 그 처리 시간이 상당히 오래 걸릴 것이며, 최악의 경우 게임이 중단될 수 있습니다! massCutInsufficientConfirm: title: 자르기 확인 @@ -201,7 +208,8 @@ dialogs: submitPuzzle: title: 퍼즐 보내기 descName: "퍼즐에 이름을 지어 주세요:" - descIcon: "퍼즐의 아이콘으로 보여지게 될 짧은 단어를 지정해 주세요. (<link>이곳</link>에서 생성하시거나, 아래 랜덤한 도형 + descIcon: + "퍼즐의 아이콘으로 보여지게 될 짧은 단어를 지정해 주세요. (<link>이곳</link>에서 생성하시거나, 아래 랜덤한 도형 중 하나를 선택하세요):" placeholderName: 퍼즐 제목 puzzleResizeBadBuildings: @@ -227,7 +235,8 @@ dialogs: desc: 오프라인 모드임으로 퍼즐을 저장하거나 업로드할 수 없습니다. 그래도 계속하시겠습니까? puzzlePlayRegularRecommendation: title: 권장 사항 - desc: 퍼즐 DLC 플레이시 소개되지 않은 요소를 접하시게 될 수 있으므로, 적어도 일반 게임을 12레벨까지 플레이하시는것을 + desc: + 퍼즐 DLC 플레이시 소개되지 않은 요소를 접하시게 될 수 있으므로, 적어도 일반 게임을 12레벨까지 플레이하시는것을 <strong>강력히</strong> 권장드립니다. 그래도 계속하시겠습니까? puzzleShare: title: 짧은 키 복사됨 @@ -358,25 +367,31 @@ ingame: waypoints: waypoints: 마커 hub: 허브 - description: 마커를 좌클릭하여 그곳으로 이동하고, 우클릭으로 삭제할 수 있습니다.<br><br>마커를 배치하기 위해 + description: + 마커를 좌클릭하여 그곳으로 이동하고, 우클릭으로 삭제할 수 있습니다.<br><br>마커를 배치하기 위해 <keybinding> 키로 지금 있는 위치에, 또는 <strong>우클릭</strong>하여 원하는 위치에 배치할 수 있습니다. creationSuccessNotification: 마커가 성공적으로 생성되었습니다. interactiveTutorial: title: 튜토리얼 hints: - 1_1_extractor: <strong>원형 도형</strong>을 추출하기 위해 그 위에 <strong>추출기</strong>를 선택한 뒤 + 1_1_extractor: + <strong>원형 도형</strong>을 추출하기 위해 그 위에 <strong>추출기</strong>를 선택한 뒤 배치하여 추출하세요! - 1_2_conveyor: "이제 <strong>컨베이어 벨트</strong>를 추출기와 허브를 서로 연결하세요!<br><br> 팁: 벨트를 + 1_2_conveyor: + "이제 <strong>컨베이어 벨트</strong>를 추출기와 허브를 서로 연결하세요!<br><br> 팁: 벨트를 마우스로 <strong>클릭한 뒤 드래그</strong>하세요!" - 1_3_expand: "이 게임은 방치형 게임이 <strong>아닙니다</strong>! 더 많은 추출기와 벨트를 만들어 지정된 목표를 빨리 + 1_3_expand: + "이 게임은 방치형 게임이 <strong>아닙니다</strong>! 더 많은 추출기와 벨트를 만들어 지정된 목표를 빨리 달성하세요.<br><br> 팁: <strong>SHIFT</strong> 키를 누른 상태에서는 빠르게 배치할 수 있고, <strong>R</strong> 키를 눌러 회전할 수 있습니다." - 2_1_place_cutter: "이제 <strong>절단기</strong>를 배치해 원형 도형을 반으로 잘라보세요!<br><br> 참고: + 2_1_place_cutter: + "이제 <strong>절단기</strong>를 배치해 원형 도형을 반으로 잘라보세요!<br><br> 참고: 절단기는 놓는 방향에 상관없이 항상 <strong>위에서 아래로만</strong> 자릅니다." 2_2_place_trash: 절단기가 <strong>막히거나 멈출 수 있습니다</strong>!<br><br> <strong>휴지통</strong>을 사용하여 현재 필요없는 쓰레기 도형 (!)을 제거하세요. - 2_3_more_cutters: "잘하셨습니다! 느린 처리 속도를 보완하기 위해 <strong>절단기를 두 개</strong> 이상 + 2_3_more_cutters: + "잘하셨습니다! 느린 처리 속도를 보완하기 위해 <strong>절단기를 두 개</strong> 이상 배치해보세요!<br><br> 추신: <strong>상단 숫자 단축키 (0~9)</strong>를 사용하여 건물을 빠르게 선택할 수 있습니다!" 3_1_rectangles: "이제 사각형 도형을 추출해 볼까요! <strong>추출기 네 개를 배치</strong>하고 허브와 @@ -384,10 +399,12 @@ ingame: 누른 채 드래그하세요!" 21_1_place_quad_painter: <strong>4단 색칠기</strong>를 배치하여 <strong>흰색</strong>과 <strong>빨간색</strong>이 칠해진 <strong>원형 도형</strong>을 만들어보세요! - 21_2_switch_to_wires: <strong>E 키</strong>를 눌러 전선 레이어 로 전환하세요!<br><br> 그 후 색칠기의 + 21_2_switch_to_wires: + <strong>E 키</strong>를 눌러 전선 레이어 로 전환하세요!<br><br> 그 후 색칠기의 <strong>네 입력 부분</strong>을 모두 케이블로 연결하세요! 21_3_place_button: 훌륭해요! 이제 <strong>스위치</strong>를 배치하고 전선으로 연결하세요! - 21_4_press_button: "스위치를 눌러서 색칠기에 <strong>참 신호를 보내</strong> 활성화해보세요.<br><br> 추신: + 21_4_press_button: + "스위치를 눌러서 색칠기에 <strong>참 신호를 보내</strong> 활성화해보세요.<br><br> 추신: 모든 입력을 연결할 필요는 없습니다! 두개만 연결해 보세요." 1_2_hold_and_drag: 잡고 드래그Przytrzymaj i przeciągnij colors: @@ -517,11 +534,13 @@ buildings: cutter: default: name: 절단기 - description: 도형을 수직으로 잘라 두 가지 도형으로 나눕니다. <strong>한쪽만 사용할 경우라면 다른 부분을 파괴하지 않을 경우 + description: + 도형을 수직으로 잘라 두 가지 도형으로 나눕니다. <strong>한쪽만 사용할 경우라면 다른 부분을 파괴하지 않을 경우 절단기가 막혀 멈추게 됩니다!</strong> quad: name: 4단 절단기 - description: 도형을 즉시 네 개로 자릅니다. <strong>한쪽만 사용할 경우라면 다른 부분을 파괴하지 않을 경우 절단기가 막혀 + description: + 도형을 즉시 네 개로 자릅니다. <strong>한쪽만 사용할 경우라면 다른 부분을 파괴하지 않을 경우 절단기가 막혀 멈추게 됩니다!</strong> rotater: default: @@ -536,7 +555,8 @@ buildings: stacker: default: name: 결합기 - description: 도형을 서로 결합하고 쌓습니다. 서로 결합할 수 있다면 두 도형을 붙여 하나로 만들고, 그렇지 않으면 오른쪽 도형이 왼쪽 + description: + 도형을 서로 결합하고 쌓습니다. 서로 결합할 수 있다면 두 도형을 붙여 하나로 만들고, 그렇지 않으면 오른쪽 도형이 왼쪽 도형 위에 쌓이게 됩니다. mixer: default: @@ -551,7 +571,8 @@ buildings: description: 색소를 이용해 도형을 색칠합니다. 위쪽에서 받는 색소로 왼쪽에서 받는 도형 전체를 색칠합니다. quad: name: 4단 색칠기 - description: 도형의 각 사분면에 개별적으로 색상을 칠할 수 있습니다. 전선 레이어를 통해 <strong>참 신호</strong>가 + description: + 도형의 각 사분면에 개별적으로 색상을 칠할 수 있습니다. 전선 레이어를 통해 <strong>참 신호</strong>가 있는 슬롯만 칠해집니다! mirrored: name: 색칠기 @@ -598,7 +619,8 @@ buildings: lever: default: name: 스위치 - description: 전선 레이어에서 불 값 (1 또는 0)을 방출하도록 전환할 수 있으며, 그 후 아이템 선별같은 구성 요소를 제어하는 데 + description: + 전선 레이어에서 불 값 (1 또는 0)을 방출하도록 전환할 수 있으며, 그 후 아이템 선별같은 구성 요소를 제어하는 데 사용될 수 있습니다. logic_gate: default: @@ -609,7 +631,8 @@ buildings: description: 입력이 거짓일 경우 불 값 "1"을 내보냅니다 (참은 도형, 색상, 불 값 "1"을 의미합니다). xor: name: XOR 회로 - description: 입력 중 하나만 참이고 둘 다 같지 않을 경우 불 값 "1"을 내보냅니다 (참은 도형, 색상, 불 값 "1"을 + description: + 입력 중 하나만 참이고 둘 다 같지 않을 경우 불 값 "1"을 내보냅니다 (참은 도형, 색상, 불 값 "1"을 의미합니다). or: name: OR 회로 @@ -676,7 +699,8 @@ buildings: storyRewards: reward_cutter_and_trash: title: 절단기 - desc: <strong>절단기</strong>가 잠금 해제되었습니다! 절단기는 들어오는 도형이 어떤 도형을 하고 있던 수직으로 잘라 + desc: + <strong>절단기</strong>가 잠금 해제되었습니다! 절단기는 들어오는 도형이 어떤 도형을 하고 있던 수직으로 잘라 <strong>반으로 나눕니다</strong>!<br><br> 쓰지 않는 도형은 쓰레기로 처리하세요, 그렇지 않으면 <strong>작동을 멈출 것입니다</strong>! 이러한 목적을 위해 <strong>휴지통</strong>도 함께 지급되었습니다. 휴지통에 들어간 것은 모두 파괴됩니다! @@ -685,7 +709,8 @@ storyRewards: desc: <strong>회전기</strong>가 잠금 해제되었습니다! 회전기는 들어오는 도형을 시계 방향으로 90도 회전시켜줍니다. reward_painter: title: 색칠기 - desc: "<strong>색칠기</strong>가 잠금 해제되었습니다! 도형과 마찬가지로 색소를 추출하고 색칠기에 넣거 도형과 결합하여 색칠된 + desc: + "<strong>색칠기</strong>가 잠금 해제되었습니다! 도형과 마찬가지로 색소를 추출하고 색칠기에 넣거 도형과 결합하여 색칠된 도형을 만들도록 하세요!<br><br>추신: 만약 당신이 색맹이라면, 설정에서 <strong>색맹 모드</strong>를 활성화하세요!" reward_mixer: @@ -694,24 +719,28 @@ storyRewards: 색소</strong>를 얻을 수 있습니다! reward_stacker: title: 결합기 - desc: <strong>결합기</strong>가 잠금 해제되었습니다! 이제 결합기를 통해 여러 도형을 붙이고 결합할 수 있습니다! 들어오는 두 + desc: + <strong>결합기</strong>가 잠금 해제되었습니다! 이제 결합기를 통해 여러 도형을 붙이고 결합할 수 있습니다! 들어오는 두 도형의 도형이 서로 나란히 붙일 수 있다면, 하나의 도형으로 <strong>결합</strong>됩니다. 만약 서로 겹쳐진다면, 오른쪽 도형이 왼쪽 도형의 <strong>위에 쌓이게</strong> 됩니다! reward_splitter: title: 압축형 분배기 - desc: <strong>밸런서</strong>의 새로운 형태인 <strong>분배기</strong>가 잠금 해제되었습니다! 이제 벨트 한 줄을 + desc: + <strong>밸런서</strong>의 새로운 형태인 <strong>분배기</strong>가 잠금 해제되었습니다! 이제 벨트 한 줄을 즉시 두 줄로 분배합니다! reward_tunnel: title: 터널 desc: <strong>터널</strong>이 잠금 해제되었습니다! 이제 벨트와 건물 아래로 공간을 만들어내 옮길 수 있습니다! reward_rotater_ccw: title: 반시계 방향 회전기 - desc: <strong>반시계 방향 회전기</strong>가 잠금 해제되었습니다! 반시계 방향 회전기는 회전기의 다른 형태로, 이름처럼 + desc: + <strong>반시계 방향 회전기</strong>가 잠금 해제되었습니다! 반시계 방향 회전기는 회전기의 다른 형태로, 이름처럼 들어오는 도형을 반시계 방향으로 90도만큼 회전시킵니다! 제작하려면 회전기를 선택한 후 <strong>'T' 키를 눌러 다른 형태로 전환</strong>하세요! reward_miner_chainable: title: 연쇄 추출기 - desc: "<strong>연쇄 추출기</strong>가 잠금 해제되었습니다! 자원을 보다 더욱 효율적으로 추출할 수 있도록 <strong>앞에 + desc: + "<strong>연쇄 추출기</strong>가 잠금 해제되었습니다! 자원을 보다 더욱 효율적으로 추출할 수 있도록 <strong>앞에 있는 추출기로 자원을 보낼 수 있습니다</strong>!<br><br> 추신: 이제 툴바에 있는 기존 추출기는 연쇄 추출기로 대체되었습니다!" reward_underground_belt_tier_2: @@ -720,15 +749,18 @@ storyRewards: 거리</strong>를 운송할 수 있고 기존 터널과 겹쳐지지 않고도 자원을 보낼 수 있습니다! reward_cutter_quad: title: 4단 절단기 - desc: 새로운 종류의 <strong>절단기</strong>가 잠금 해제되었습니다! 4단 절단기는 도형을 두 조각이 아닌 <strong>네 + desc: + 새로운 종류의 <strong>절단기</strong>가 잠금 해제되었습니다! 4단 절단기는 도형을 두 조각이 아닌 <strong>네 조각</strong>으로 자를 수 있습니다! reward_painter_double: title: 2단 색칠기 - desc: 새로운 종류의 <strong>절단기</strong>가 잠금 해제되었습니다! 일반적인 색칠기와 거의 동일하지만, 하나의 색소를 사용하여 + desc: + 새로운 종류의 <strong>절단기</strong>가 잠금 해제되었습니다! 일반적인 색칠기와 거의 동일하지만, 하나의 색소를 사용하여 <strong>동시에 두 개의 도형을 색칠</strong>할 수 있습니다! reward_storage: title: 저장고 - desc: <strong>저장고</strong>가 잠금 해제되었습니다! 저장고는 최대 용량까지 도형을 저장할 수 있습니다!<br><br> 왼쪽 + desc: + <strong>저장고</strong>가 잠금 해제되었습니다! 저장고는 최대 용량까지 도형을 저장할 수 있습니다!<br><br> 왼쪽 출력이 우선되므로 <strong>오버플로 회로</strong>로도 활용될 수 있습니다! reward_freeplay: title: 자유플레이 @@ -738,32 +770,38 @@ storyRewards: 레이어를 통해 내보내므로 이를 분석하는 구조를 기반으로 하여 공장을 자동으로 구성하기만 하면 됩니다. reward_blueprints: title: 청사진 - desc: 이제 공장의 일부를 <strong>복사하고 붙여넣는 기능</strong>을 사용할 수 있습니다! 영역을 선택 (CTRL 키를 누른 채 + desc: + 이제 공장의 일부를 <strong>복사하고 붙여넣는 기능</strong>을 사용할 수 있습니다! 영역을 선택 (CTRL 키를 누른 채 마우스로 드래그)한 뒤 'C' 키를 눌러 복사할 수 있습니다.<br><br>하지만 <strong>공짜는 아닙니다</strong>, <strong>청사진 도형 도형</strong>을 허브에 저장하고 그것을 일부 사용해 붙여넣기 기능을 사용할 수 있습니다! (방금 당신이 만든 것입니다.) no_reward: title: 다음 레벨 - desc: "이번 레벨의 보상은 없네요. 대신 다음 레벨에서 줄겁니다!<br><br> 추신: 기존 공장을 파괴하지는 마세요. 후에 + desc: + "이번 레벨의 보상은 없네요. 대신 다음 레벨에서 줄겁니다!<br><br> 추신: 기존 공장을 파괴하지는 마세요. 후에 <strong>업그레이드 잠금 해제</strong>되면 <strong>기존의 모든</strong> 도형이 필요합니다!" no_reward_freeplay: title: 다음 레벨 desc: 축하드립니다! reward_balancer: title: 밸런서 - desc: <strong>밸런서</strong>가 잠금 해제되었습니다! 다목적 밸런서를 통해 여러 벨트의 아이템을 서로 <strong>다른 + desc: + <strong>밸런서</strong>가 잠금 해제되었습니다! 다목적 밸런서를 통해 여러 벨트의 아이템을 서로 <strong>다른 벨트로 분할하거나 합침</strong>으로써 더욱 거대한 공장을 만들 수 있습니다! reward_merger: title: 압축형 병합기 - desc: <strong>밸런서</strong>의 새로운 형태인 <strong>병합기</strong>가 잠금 해제되었습니다! 이제 벨트 두 줄을 + desc: + <strong>밸런서</strong>의 새로운 형태인 <strong>병합기</strong>가 잠금 해제되었습니다! 이제 벨트 두 줄을 즉시 한 줄로 병합합니다! reward_belt_reader: title: 벨트 판독기 - desc: <strong>벨트 판독기</strong>가 잠금 해제되었습니다! 이제 벨트의 처리량을 확인할 수 있습니다.<br><br>그리고, + desc: + <strong>벨트 판독기</strong>가 잠금 해제되었습니다! 이제 벨트의 처리량을 확인할 수 있습니다.<br><br>그리고, 전선이 잠금 해제될 때 까지 기다리신다면 정말 유용하게 사용할 수 있을 겁니다! reward_rotater_180: title: 220도 회전기 - desc: <strong>180도 회전기</strong>가 잠금 해제되었습니다! 이제 도형을 바로 180도로 회전시킬 수 있습니다. (짜잔! + desc: + <strong>180도 회전기</strong>가 잠금 해제되었습니다! 이제 도형을 바로 180도로 회전시킬 수 있습니다. (짜잔! :D) reward_display: title: 디스플레이 @@ -771,32 +809,37 @@ storyRewards: 있습니다.<br><br> 추신: 벨트 판독기와 저장고가 마지막으로 읽은 아이템을 출력했나요? 디스플레이로 한번 봐보세요!" reward_constant_signal: title: 일정 신호기 - desc: 전선 레이어에서 구축할 수 있는 <strong>일정 신호기</strong>가 잠금 해제되었습니다! 간단한 예시로, + desc: + 전선 레이어에서 구축할 수 있는 <strong>일정 신호기</strong>가 잠금 해제되었습니다! 간단한 예시로, <strong>아이템 선별</strong>에 연결하여 사용하는 데 유용합니다.<br><br> 일정 신호기는 <strong>도형</strong>, <strong>색상</strong>, 또는 <strong>불 값</strong> (1 또는 0)을 출력할 수 있습니다. reward_logic_gates: title: 논리 회로 - desc: <strong>논리 회로</strong>가 잠금 해제되었습니다! 굳이 흥분할 필요는 없지만, 진짜 멋진 기술입니다!<br><br> + desc: + <strong>논리 회로</strong>가 잠금 해제되었습니다! 굳이 흥분할 필요는 없지만, 진짜 멋진 기술입니다!<br><br> 논리 회로를 통해 이제 AND, OR, XOR, NOT 논리 연산을 할 수 있습니다.<br><br> 보너스로, <strong>트랜지스터</strong>도 지급되었습니다! reward_virtual_processing: title: 가상 처리 - desc: <strong>도형의 처리를 시뮬레이션</strong>할 수 있는 다양한 새로운 건물이 잠금 해제되었습니다!<br><br> 이제 전선 + desc: + <strong>도형의 처리를 시뮬레이션</strong>할 수 있는 다양한 새로운 건물이 잠금 해제되었습니다!<br><br> 이제 전선 레이어에서 도형에 대한 절단기, 회전기, 결합기 등을 가상으로 시뮬레이션할 수 있습니다! 이제 게임 진행에 있어 다음 세 가지의 방법이 존재합니다:<br><br> - <strong>완전 자동화된 기계</strong>를 구축하고 허브에서 요구되는 도형을 제작합니다. (먼저 시도해볼 것을 권합니다!).<br><br> - 전선을 통해 멋진 것들 만듭니다.<br><br> - 평소처럼 게임을 진행합니다.<br><br> 어떤 방식으로든, 재미있게 게임을 플레이해주시길 바랍니다! reward_wires_painter_and_levers: title: 전선과 4단 색칠기 - desc: " 방금 <strong>전선 레이어</strong>를 활성화하셨습니다: 이것은 일반 레이어 위에 존재하는 별개의 레이어로 수많은 + desc: + " 방금 <strong>전선 레이어</strong>를 활성화하셨습니다: 이것은 일반 레이어 위에 존재하는 별개의 레이어로 수많은 새로운 요소를 사용할 수 있습니다!<br><br> <strong>4단 색칠기</strong>를 활성화해 드리겠습니다 - 전선 레이어에서 색을 칠할 부분에 연결해 보세요!<br><br> 전선 레이어로 전환하시려면 <strong>E</strong>키를 눌러주세요.<br><br> 추신: <strong>힌트를 활성화</strong>해서 전선 튜토리얼을 활성화해 보세요!" reward_filter: title: 아이템 선별기 - desc: <strong>아이템 선별기</strong>가 잠금 해제되었습니다! 전선 레이어의 신호와 일치하는지에 대한 여부로 아이템을 위쪽 + desc: + <strong>아이템 선별기</strong>가 잠금 해제되었습니다! 전선 레이어의 신호와 일치하는지에 대한 여부로 아이템을 위쪽 출력이나 오른쪽 출력으로 보냅니다.<br><br> 불 값 (1 또는 0)을 전달하여 완전히 활성화과 비활성화를 전환할 수 있습니다. reward_demo_end: @@ -817,7 +860,8 @@ settings: labels: uiScale: title: UI 크기 - description: 사용자 인터페이스의 크기를 변경합니다. 인터페이스는 당신의 해상도에 따라 확장되는데 이 설정은 그 확장의 정도를 + description: + 사용자 인터페이스의 크기를 변경합니다. 인터페이스는 당신의 해상도에 따라 확장되는데 이 설정은 그 확장의 정도를 제어합니다. scales: super_small: 매우 작게 @@ -864,15 +908,18 @@ settings: light: 라이트 refreshRate: title: 틱 빈도 - description: 이것은 초당 발생하는 게임 틱 수를 결정합니다. 일반적으로 틱 속도가 높을수록 정밀도는 향상되나 성능은 낮아집니다. 낮은 + description: + 이것은 초당 발생하는 게임 틱 수를 결정합니다. 일반적으로 틱 속도가 높을수록 정밀도는 향상되나 성능은 낮아집니다. 낮은 틱 빈도에서는 처리량이 정확하지 않을 수 있습니다. alwaysMultiplace: title: 다수 배치 항시 켜기 - description: 활성화할 경우 모든 건물은 배치한 후 취소할 때 까지 커서에 선택된 상태를 유지합니다. 이 기능은 SHIFT 키를 계속 + description: + 활성화할 경우 모든 건물은 배치한 후 취소할 때 까지 커서에 선택된 상태를 유지합니다. 이 기능은 SHIFT 키를 계속 누르는 것과 같습니다. offerHints: title: 힌트와 튜토리얼 - description: 게임 플레이하는 동안 힌트와 튜토리얼을 보여줄 지를 결정합니다. 또한 게임에 더 쉽게 빠져들 수 있도록 특정 레벨까지 + description: + 게임 플레이하는 동안 힌트와 튜토리얼을 보여줄 지를 결정합니다. 또한 게임에 더 쉽게 빠져들 수 있도록 특정 레벨까지 특정한 UI 요소를 숨깁니다. enableTunnelSmartplace: title: 지능적인 터널 배치 @@ -901,7 +948,8 @@ settings: description: 색맹 사용자를 위해 게임을 플레이하는 데 도움을 주는 다양한 도구를 활성화합니다. rotationByBuilding: title: 건물 유형에 따른 방향 - description: 각 건물 유형마다 개별적으로 마지막으로 설정했던 방향을 기억하도록 합니다. 다른 건물 변형을 자주 전환하는 경우 이 + description: + 각 건물 유형마다 개별적으로 마지막으로 설정했던 방향을 기억하도록 합니다. 다른 건물 변형을 자주 전환하는 경우 이 방법이 더욱 편할 수 있습니다. soundVolume: title: 효과음 볼륨 @@ -917,7 +965,8 @@ settings: description: 성능 향상을 위해 타일 그리드를 비활성화할 수 있습니다. 이 역시 게임을 더욱 깨끗하게 보여줍니다! clearCursorOnDeleteWhilePlacing: title: 우클릭 시 커서 지우기 - description: 기본적으로 활성화되어 있으며, 배치할 건물을 선택한 상태에서 마우스 우클릭 시 커서를 지웁니다. 비활성화할 경우, 건물을 + description: + 기본적으로 활성화되어 있으며, 배치할 건물을 선택한 상태에서 마우스 우클릭 시 커서를 지웁니다. 비활성화할 경우, 건물을 커서에 선택한 채로 우클릭하면 바로 건물을 삭제할 수 있습니다. lowQualityTextures: title: 저품질 텍스처 (못생김) @@ -930,7 +979,8 @@ settings: description: 기본적으로 활성화되어 있으며, 자원 패치에서 피펫 기능을 사용 시 즉시 추출기를 선택합니다. simplifiedBelts: title: 벨트 단순화 (못생김) - description: 성능 향상을 위해 벨트를 가리킬 때를 제외한 모든 상황에서 벨트 아이템을 렌더링하지 않습니다. 이 기능을 사용할 정도로 + description: + 성능 향상을 위해 벨트를 가리킬 때를 제외한 모든 상황에서 벨트 아이템을 렌더링하지 않습니다. 이 기능을 사용할 정도로 심각한 성능 문제가 일어나지 않는 한, 이 설정을 사용할 필요는 없습니다. enableMousePan: title: 화면 가장자리 패닝 @@ -1148,7 +1198,8 @@ puzzleMenu: medium: 중간 hard: 어려움 unknown: Unrated - dlcHint: DLC를 이미 구입하셨나요? 라이브러리에서 shapez.io를 오른쪽 클릭한 다음 속성… > DLC 메뉴를 선택해서 + dlcHint: + DLC를 이미 구입하셨나요? 라이브러리에서 shapez.io를 오른쪽 클릭한 다음 속성… > DLC 메뉴를 선택해서 활성화되었는지 확인해주세요. search: action: Search @@ -1198,7 +1249,8 @@ mods: noModSupport: 모드를 사용하기 위해 정식버전이 필요합니다. togglingComingSoon: title: 곧 업데이트 됩니다! - description: 지금은 mods/ 폴더에 모드 파일을 넣고 빼는 방식으로만 모드를 활성화/비활성화할 수 있습니다. 모드를 이곳에서 켜고 + description: + 지금은 mods/ 폴더에 모드 파일을 넣고 빼는 방식으로만 모드를 활성화/비활성화할 수 있습니다. 모드를 이곳에서 켜고 끌수 있는 기능은 추후 업데이트될 예정입니다. 모드폴더에 넣고/빼는것으로 할수있습니다. 모드를 토글하는 기능은 곧 업데이트 됩니다! browserNoSupport: Due to browser restrictions it is currently only possible to diff --git a/translations/base-lt.yaml b/translations/base-lt.yaml index e944c3f7..0b557fde 100644 --- a/translations/base-lt.yaml +++ b/translations/base-lt.yaml @@ -54,6 +54,8 @@ global: space: SPACE loggingIn: Prisijungiama loadingResources: Downloading additional resources (<percentage> %) + discount: -<percentage>% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: Demo Versija intro: |- @@ -102,6 +104,7 @@ mainMenu: logout: Logout noActiveSavegames: No active savegames found - Click play to start a new game! playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + playFullVersionStandalone: You can now also play the full version in your Browser! dialogs: buttons: ok: OK diff --git a/translations/base-nl.yaml b/translations/base-nl.yaml index dd615216..9ce9173f 100644 --- a/translations/base-nl.yaml +++ b/translations/base-nl.yaml @@ -55,6 +55,8 @@ global: space: SPATIE loggingIn: Inloggen loadingResources: Downloading additional resources (<percentage> %) + discount: -<percentage>% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: Demoversie intro: |- @@ -103,6 +105,7 @@ mainMenu: logout: Logout noActiveSavegames: No active savegames found - Click play to start a new game! playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + playFullVersionStandalone: You can now also play the full version in your Browser! dialogs: buttons: ok: OK diff --git a/translations/base-no.yaml b/translations/base-no.yaml index 481042ec..8576ccf0 100644 --- a/translations/base-no.yaml +++ b/translations/base-no.yaml @@ -55,6 +55,8 @@ global: space: MELLOMROM loggingIn: Logger inn loadingResources: Laster ned tilleggsressurser (<percentage> %) + discount: -<percentage>% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: Demo Versjon intro: |- @@ -103,6 +105,7 @@ mainMenu: logout: Logout noActiveSavegames: No active savegames found - Click play to start a new game! playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + playFullVersionStandalone: You can now also play the full version in your Browser! dialogs: buttons: ok: OK diff --git a/translations/base-pl.yaml b/translations/base-pl.yaml index d1903fff..5ca595d7 100644 --- a/translations/base-pl.yaml +++ b/translations/base-pl.yaml @@ -55,6 +55,8 @@ global: space: SPACJA loggingIn: Logowanie loadingResources: Pobieranie dodatkowych zasobów (<percentage> %) + discount: -<percentage>% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: Wersja demonstracyjna intro: |- @@ -102,6 +104,7 @@ mainMenu: logout: Logout noActiveSavegames: No active savegames found - Click play to start a new game! playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + playFullVersionStandalone: You can now also play the full version in your Browser! dialogs: buttons: ok: Ok diff --git a/translations/base-pt-BR.yaml b/translations/base-pt-BR.yaml index 684fdbae..9265c375 100644 --- a/translations/base-pt-BR.yaml +++ b/translations/base-pt-BR.yaml @@ -54,6 +54,8 @@ global: space: Espaço loggingIn: Entrando loadingResources: Downloading additional resources (<percentage> %) + discount: -<percentage>% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: Versão Demo intro: |- @@ -102,6 +104,7 @@ mainMenu: logout: Logout noActiveSavegames: No active savegames found - Click play to start a new game! playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + playFullVersionStandalone: You can now also play the full version in your Browser! dialogs: buttons: ok: OK diff --git a/translations/base-pt-PT.yaml b/translations/base-pt-PT.yaml index ca0f1c6e..2d9a3dd2 100644 --- a/translations/base-pt-PT.yaml +++ b/translations/base-pt-PT.yaml @@ -53,8 +53,10 @@ global: escape: ESC shift: SHIFT space: SPACE - loggingIn: Logging in + loggingIn: A conectar loadingResources: A Baixar recursos adicionais (<percentage> %) + discount: -<percentage>% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: Versão Demo intro: |- @@ -101,8 +103,9 @@ mainMenu: desativa todos os modos antes de jogares o DLC playingFullVersion: Estás agora a jogar a versão completa! logout: Desconectar - noActiveSavegames: No active savegames found - Click play to start a new game! - playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + noActiveSavegames: Não foram encontrados savegames - Clica para começar um jogo novo! + playFullVersionV2: Compraste o Shapez na Steam? Joga a versão completa no teu Browser! + playFullVersionStandalone: You can now also play the full version in your Browser! dialogs: buttons: ok: OK @@ -180,8 +183,8 @@ dialogs: desc: "Este jogo tem vários Atalhos que tornarão mais fácil a construção de grandes fábricas. Aqui estão alguns, mas <strong>verifica os restantes Atalhos</strong>!<br><br> <code - class='keybinding'>CTRL</code> + Drag: Seleciona a área para copiar - / eliminar.<br> <code class='keybinding'>SHIFT</code>: Mantém + class='keybinding'>CTRL</code> + Arrasta: Seleciona a área para + copiar / eliminar.<br> <code class='keybinding'>SHIFT</code>: Mantém pressionado para colocar várias construções.<br> <code class='keybinding'>ALT</code>: Inverte as posições.<br>" createMarker: @@ -362,7 +365,7 @@ ingame: notifications: newUpgrade: Está disponível um novo upgrade! gameSaved: O teu jogo foi guardado. - freeplayLevelComplete: Level <level> has been completed! + freeplayLevelComplete: Nível <level> completo! shop: title: Upgrades buttonUnlock: Upgrade @@ -1107,8 +1110,8 @@ settings: zoom out). shapeTooltipAlwaysOn: title: Shape Tooltip - Mostrar Sempre - description: Whether to always show the shape tooltip when hovering buildings, - instead of having to hold 'ALT'. + description: Mostrar sempre a shape tooltip quando passar sobre construções, em + vez de pressionar 'ALT'. rangeSliderPercentage: <amount> % tickrateHz: <amount> Hz newBadge: Novo! @@ -1186,10 +1189,10 @@ keybindings: comparator: Comparador item_producer: Produtor de Itens (Sandbox) copyWireValue: "Fios: Copia o valor debaixo do cursor" - rotateToUp: "Rotate: Point Up" - rotateToDown: "Rotate: Point Down" - rotateToRight: "Rotate: Point Right" - rotateToLeft: "Rotate: Point Left" + rotateToUp: "Rotação: Para cima" + rotateToDown: "Rotação: Para baixo" + rotateToRight: "Rotação: Para a diretia" + rotateToLeft: "Rotação: Para a esquerda" constant_producer: Produtor Constante goal_acceptor: Recetor de Objetivo block: Bloqueador diff --git a/translations/base-ro.yaml b/translations/base-ro.yaml index 755f3fc4..c471c54c 100644 --- a/translations/base-ro.yaml +++ b/translations/base-ro.yaml @@ -55,6 +55,8 @@ global: space: SPACE loggingIn: Logare loadingResources: Downloading additional resources (<percentage> %) + discount: -<percentage>% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: Versiunea Demo intro: |- @@ -104,6 +106,7 @@ mainMenu: logout: Logout noActiveSavegames: No active savegames found - Click play to start a new game! playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + playFullVersionStandalone: You can now also play the full version in your Browser! dialogs: buttons: ok: OK diff --git a/translations/base-ru.yaml b/translations/base-ru.yaml index 165c47dc..994aecc4 100644 --- a/translations/base-ru.yaml +++ b/translations/base-ru.yaml @@ -1,24 +1,24 @@ steamPage: - shortText: shapez.io — это игра о строительстве фабрик для автоматизации - создания и объединения все более сложных фигур на бесконечной карте. + shortText: shapez — это игра о строительстве фабрик для автоматизации создания и + объединения все более сложных фигур на бесконечной карте. discordLinkShort: Официальный Discord сервер intro: >- Любите игры про автоматизацию? Тогда вы по адресу! - shapez.io это спокойная игра, в которой вам предстоит строить фабрики по автоматизированному производству геометрических фигур. По мере управления уровня, фигуры становятся все сложнее, так что придется расширять фабрику за счет бесконечной карты. + shapez это спокойная игра, в которой вам предстоит строить фабрики по автоматизированному производству геометрических фигур. По мере прохождения, фигуры становятся все сложнее, так что Вам придется расширять фабрику за счет бесконечной карты. - Если этого мало, то Вам так же придется экспоненциально увеличивать производство, чтобы удовлетворить потребности Вашей фабрики. Ключ к успеху - масштабирование! И если в начале вам понадобится обрабатывать только формы, то позже вы начнёте их раскрашивать, добывая и комбинируя красители. + Если этого мало, то Вам так же придется экспоненциально увеличивать производство, чтобы удовлетворить потребности Вашей фабрики. Ключ к успеху - масштабирование! Вначале игры Вам понадобится производить только фигуры, однако позже фигуры надо будет окрашивать. Для этого добывайте и смешивайте краски! Приобретение игры в Steam предоставляет доступ к полной версии игры, но вы можете опробовать демоверсию игры на shapez.io и принять решение позже! - what_others_say: Что говорят люди о shapez.io + what_others_say: Что говорят люди о shapez nothernlion_comment: Отличная игра, в которой теряешь ход времени. notch_comment: Ох! Мне определенно нужно поспать, но я узнал как собрать - компьютер в shapez.io ! + компьютер в shapez! steam_review_comment: Игра похитила меня из реальной жизни, но я не хочу обратно! Спокойная игра про строительство фабрик. Постоянно думаю о том - как эффективно настроить линии. + как сделать производство более эффективным. global: loading: Загрузка error: Ошибка @@ -51,12 +51,15 @@ global: shift: SHIFT space: ПРОБЕЛ loggingIn: Вход - loadingResources: Downloading additional resources (<percentage> %) + loadingResources: Скачивание дополнительных ресурсов (<percentage> %) + discount: -<percentage>% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: Демоверсия - intro: |- - Получите полную версию игры <strong>сейчас</strong> чтобы получить:<ul> - <li>Все 26 уровней + бесконечную Свободную игру</li> + intro: >- + Приобретите полную версию игры <strong>сейчас</strong> чтобы + получить:<ul> + <li>Все 26 уровней + бесконечную свободную игру</li> <li>22 новых строения</li> <li>Поддержку модификаций</li> <li>Достижения</li> @@ -64,16 +67,15 @@ demoBanners: <li>... и многое другое!</li> </ul> playtimeDisclaimer: Полная версия содержит более <strong>20 часов контента</strong>. - playerCount: <playerCount> игроки, подобные вам, в настоящее время играют в - shapez на Steam - untilEndOfDemo: До окончания демонстрации + playerCount: <playerCount> игроков, как Вы, сейчас играют в shapez в Steam + untilEndOfDemo: До окончания демоверсии playtimeDisclaimerDownload: Вы можете продолжить сохранение в полной версии! - Нажмите <strong>здесь</strong>, чтобы загрузить сохраненную игру. + Нажмите <strong>здесь</strong>, чтобы скачать файл сохранения. titleV2: "Играйте в полную версию прямо сейчас:" mainMenu: play: Играть continue: Продолжить - newGame: Новая Игра + newGame: Новая игра changelog: Список изменений subreddit: Reddit importSavegame: Импорт @@ -81,7 +83,7 @@ mainMenu: discordLink: Официальный Дискорд сервер helpTranslate: Помоги с переводом! madeBy: Создал <author-link> - browserWarning: Извините, но игра работает медленно в вашем браузере! + browserWarning: Извините, но игра работает медленно в Вашем браузере! Приобретите полную версию или загрузите Google Chrome, чтобы ознакомится с игрой в полной мере. savegameLevel: Уровень <x> @@ -89,19 +91,20 @@ mainMenu: savegameUnnamed: Без названия puzzleMode: Головоломка back: Назад - puzzleDlcText: Нравится оптимизировать фабрики и делать их меньше? Купите - обновление «Головоломка» в Steam сейчас и получите еще больше - удовольствия! + puzzleDlcText: Нравится оптимизировать фабрики и делать их меньше? Купите Puzzle + DLC в Steam сейчас и получите еще больше удовольствия! puzzleDlcWishlist: Добавь в список желаемого! puzzleDlcViewNow: Посмотреть mods: title: Активные моды - warningPuzzleDLC: Обновление «Головоломка» несовместима с модами. Пожалуйста, - отключите все моды, чтобы играть в DLC. - playingFullVersion: You are now playing the full version! - logout: Logout - noActiveSavegames: No active savegames found - Click play to start a new game! - playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + warningPuzzleDLC: Puzzle DLC несовместима с модами. Пожалуйста, отключите все + моды, чтобы играть в DLC. + playingFullVersion: Вы играете в полную версию игры! + logout: Выход + noActiveSavegames: Сохранения не найдены - нажмите "Играть", чтобы начать новую игру! + playFullVersionV2: Приобрели shapez в Steam? Вы можете играть в полную версию + прямо в Вашем браузере! + playFullVersionStandalone: You can now also play the full version in your Browser! dialogs: buttons: ok: OK @@ -111,10 +114,10 @@ dialogs: restart: Перезапустить reset: Сбросить getStandalone: Приобрести полную версию - deleteGame: Я знаю, что я делаю - viewUpdate: Посмотреть Обновление - showUpgrades: Показать Улучшения - showKeybindings: Показать Управление (Привязку клавиш) + deleteGame: Я знаю, что делаю + viewUpdate: Посмотреть обновление + showUpgrades: Показать улучшения + showKeybindings: Показать управление (Привязку клавиш) retry: Заново continue: Продолжить playOffline: Играть оффлайн @@ -144,22 +147,22 @@ dialogs: resetKeybindingsConfirmation: title: Сброс управления desc: Это сбросит все настройки управления к значениям по умолчанию. Подтвердите - это действие. + это действие! keybindingsResetOk: title: Сброс управления desc: Настройки управления сброшены до соответствующих значений по умолчанию! featureRestriction: title: Демоверсия desc: Вы попытались получить доступ к функции (<feature>), которая недоступна в - демоверсии. Вы можете приобрести полную версию, чтобы пользоваться - всеми функциями! + демоверсии. Вы можете приобрести полную версию, чтобы получить + доступ ко всем функциям! oneSavegameLimit: title: Лимит сохранений desc: Вы можете иметь только одно сохранение игры в демоверсии. Пожалуйста, удалите существующее или приобретите полную версию! updateSummary: title: Новое обновление! - desc: "Здесь изменения с тех пор, когда вы в последний раз играли:" + desc: "Вот что мы обновили с тех пор, когда вы в последний раз играли:" upgradesIntroduction: title: Улучшения открыты! desc: Все формы, которые вы производите, могут быть использованы для @@ -186,7 +189,7 @@ dialogs: desc: "В этой игре много горячих клавиш, которые облегчат строительство больших фабрик. Вот несколько, но обязательно <strong>проверьте настройки управления</strong>!<br><br> <code class='keybinding'>CTRL</code> + - Потащить: Выбор области для копирования / удаления.<br> <code + выделение: Выбор области для копирования / удаления.<br> <code class='keybinding'>SHIFT</code>: Удерживайте, чтобы разместить несколько зданий.<br> <code class='keybinding'>ALT</code>: Инвертировать направление размещаемых конвейерных лент.<br>" @@ -194,38 +197,38 @@ dialogs: title: Новый маркер titleEdit: Редактирование маркера desc: Дайте ему значимое название, вы также можете добавить <strong>короткий - ключ</strong> фигуры (Который можно сгенерировать + ключ</strong> фигуры (который можно сгенерировать <link>здесь</link>) editSignal: - title: Установить Сигнал + title: Установить сигнал descItems: "Выберите объект:" - descShortKey: ... или введите <strong>короткий ключ</strong> фигуры (Который + descShortKey: ... или введите <strong>короткий ключ</strong> фигуры (который можно сгенерировать <link>здесь</link>) markerDemoLimit: desc: Вы можете создать только 2 своих маркера в демоверсии. Приобретите полную - версию для безлимитных маркеров. + версию, чтобы снять это ограничение. exportScreenshotWarning: title: Экспорт скриншота desc: Вы собираетесь экспортировать вашу базу в виде скриншота. Обратите внимание, что это может быть довольно медленным процессом для большой базы и даже привести к аварийному завершению игры! renameSavegame: - title: Переименовать Сохранение + title: Переименовать сохранение desc: Здесь вы можете изменить название своего сохранения. tutorialVideoAvailable: title: Доступно обучение - desc: Для этого уровня доступно видео-обучение! Посмотрите его? + desc: Для этого уровня доступно видео-обучение! Хотите его посмотреть? tutorialVideoAvailableForeignLanguage: title: Доступно обучение desc: Для этого уровня доступно видео-обучение, но только на английском языке. - Посмотрите его? + Хотите его посмотреть? editConstantProducer: title: Установить предмет puzzleLoadFailed: title: Не удалось загрузить головоломки desc: "К сожалению, не удалось загрузить головоломки:" submitPuzzle: - title: Отправить головоломку + title: Опубликовать головоломку descName: "Дайте имя вашей головоломке:" descIcon: "Введите уникальный короткий ключ, который будет показан как иконка вашей головоломки (Вы можете сгенерировать их <link>здесь</link>, @@ -236,22 +239,22 @@ dialogs: desc: Нельзя уменьшить область, потому что некоторые постройки будут вне области. puzzleLoadError: - title: Ошибка паззла + title: Ошибка загрузки desc: "Не удалось загрузить головоломки:" offlineMode: title: Оффлайн режим - desc: Нам не удалось связаться с сервеами, поэтому игра будет работать в оффлайн - режиме. Убедитесь, что вы подключены к интернету. + desc: Нам не удалось связаться с серверами, поэтому игра будет работать в + оффлайн режиме. Убедитесь, что вы подключены к интернету. puzzleDownloadError: title: Ошибка загрузки - desc: "Не удалось загрузить головломку:" + desc: "Не удалось загрузить головоломки:" puzzleSubmitError: title: Ошибка отправки - desc: "Не удалось отправить вашу головоломку:" + desc: "Не удалось опубликовать вашу головоломку:" puzzleSubmitOk: title: Головоломка опубликована desc: Поздравляю! Ваша головоломка была опубликована, и теперь в неё могут - играть остальные. Теперь вы можете найти её в разделе "Мои + играть другие игроки. Теперь вы можете найти её в разделе "Мои головоломки". puzzleCreateOffline: title: Оффлайн режим @@ -259,9 +262,9 @@ dialogs: головоломки. Вы все еще хотите продолжить? puzzlePlayRegularRecommendation: title: Рекомендация - desc: Я <strong>настоятельно</strong> рекомендую пройти обычную игру до уровня - 12 перед игрой в Puzzle DLC, иначе вы можете встретить - непредставленные механики. Вы все еще хотите продолжить? + desc: <strong>Настоятельно</strong> рекомендуется пройти обычную игру до уровня + 12 перед игрой в Puzzle DLC, иначе вы можете встретить неизвестные + Вам механики. Вы все еще хотите продолжить? puzzleShare: title: Короткий ключ скопирован desc: Короткий ключ головоломки (<key>) был скопирован в буфер обмена! Он может @@ -274,9 +277,9 @@ dialogs: trolling: Троллинг puzzleReportComplete: title: Спасибо за ваш отзыв! - desc: Головоломка была помечена. + desc: Жалоба на головоломку отправлена. puzzleReportError: - title: Не удалось сообщить + title: Не удалось отправить жалобу desc: "Ваша жалоба не может быть обработана:" puzzleLoadShortKey: title: Ввод короткого ключа @@ -285,37 +288,37 @@ dialogs: title: Удалить головоломку? desc: Вы уверены, что хотите удалить '<title>'? Это действие нельзя отменить! modsDifference: - title: Предупреждение Мода - desc: Установленные в данный момент моды отличаются от модов, с которыми была - создана игра сохранения с ним. Это может привести к тому, что - сохранение не загрузится или вообще ничего не загрузится. Вы вы - уверены, что хотите продолжить? - missingMods: Отсутствуют Моды - newMods: Недавно установленные Моды + title: Предупреждение совместимости + desc: Установленные в данный момент моды отличаются от модов, с которыми игра + была сохранена. Это может привести к тому, что сохранение не + загрузится или повредится. Вы уверены, что хотите продолжить? + missingMods: Отсутствуют моды + newMods: Недавно установленные моды resourceLoadFailed: - title: Resources failed to load - demoLinkText: shapez demo on Steam - descWeb: "One ore more resources could not be loaded. Make sure you have a - stable internet connection and try again. If this still doesn't - work, make sure to also disable any browser extensions (including - adblockers).<br><br> As an alternative, you can also play the - <demoOnSteamLinkText>. <br><br> Error Message:" - descSteamDemo: "One ore more resources could not be loaded. Try restarting the - game - If that does not help, try reinstalling and verifying the - game files via Steam. <br><br> Error Message:" + title: Ошибка загрузки ресурсов + demoLinkText: Демоверсия shapez в Steam + descWeb: "Один или более ресурсов не могут быть загружены. Убедитесь в наличии + стабильного интернет соединения и повторите попытку. Если ошибка + повторяется - убедитесь, что сторонние браузерные расширения + отключены (включая блокировщики рекламы).<br><br> В качестве + альтернативы, Вы также можете играть в <demoOnSteamLinkText>. + <br><br> Ошибка:" + descSteamDemo: "Один или более ресурсов не могут быть загружены. Попробуйте + перезапустить игру - если это не помогает, попробуйте переустановить + игру и проверить целостность локальных файлов в Steam. <br><br> + Ошибка:" steamSsoError: - title: Full Version Logout - desc: You have been logged out from the Full Browser Version since either your - network connection is unstable or you are playing on another - device.<br><br> Please make sure you don't have shapez open in any - other browser tab or another computer with the same Steam - account.<br><br> You can login again in the main menu. + title: Выход из полной версии + desc: Вы вышли из полной браузерной версии игры, так как либо у Вас нестабильное + подключение к интернету или вы уже играете на другом устройстве. + <br><br> Пожалуйста, убедитесь, что shapez не открыт в другой + вкладке браузера или на другом компьютере под той же учётной записью + Steam <br><br> Вы можете снова войти в главном меню. steamSsoNoOwnership: - title: Full Edition not owned - desc: In order to play the Full Edition in your Browser, you need to own both - the base game and the Puzzle DLC on your Steam account.<br><br> - Please make sure you own both, signed in with the correct Steam - account and then try again. + title: Вы не владеете полной версией игры + desc: Чтобы играть в полную браузерную версиию, вам необходимо приобрести игру и + Puzzle DLC в Steam.<br><br> Пожалуйста убедитесь, что вы владеете + ими, вошли в правильный Steam аккаунт и повторите попытку. ingame: keybindingsOverlay: moveMap: Передвижение @@ -323,14 +326,14 @@ ingame: stopPlacement: Прекратить размещение rotateBuilding: Повернуть постройку placeMultiple: Поставить несколько - reverseOrientation: Реверсировать направление + reverseOrientation: Изменить направление disableAutoOrientation: Отключить автоопределение направления - toggleHud: Переключить HUD + toggleHud: Включить/выключить интерфейс placeBuilding: Разместить постройку createMarker: Создать маркер delete: Удалить pasteLastBlueprint: Вставить последний чертеж - lockBeltDirection: Включить конвейерный планировщик + lockBeltDirection: Включить планировщик конвееров plannerSwitchSide: Поменять местами стороны планировщика cutSelection: Вырезать copySelection: Копировать @@ -346,7 +349,7 @@ ingame: purple: Фиолетовый cyan: Бирюзовый white: Белый - uncolored: Бесцветный + uncolored: Неокрашенный black: Черный buildingPlacement: cycleBuildingVariants: Нажмите <key> для переключения вариантов. @@ -404,10 +407,10 @@ ingame: waypoints: waypoints: Маркеры hub: ХАБ - description: ЛКМ по маркеру, чтобы переместиться к нему, ПКМ, чтобы удалить. - <br><br> Нажмите <keybinding> чтобы создать маркер в текущей позиции - или <strong>ПКМ</strong>, чтобы выбрать другое место для создания - маркера. + description: ЛКМ по маркеру, чтобы переместиться к нему, ПКМ, чтобы + редактировать. <br><br> Нажмите <keybinding> чтобы создать маркер + здесь или <strong>ПКМ</strong>, чтобы выбрать другое место для + создания маркера. creationSuccessNotification: Маркер создан. shapeViewer: title: Слои @@ -424,38 +427,37 @@ ingame: 1_3_expand: "Это <strong>НЕ</strong> idle-игра! Постройте больше экстракторов и конвейеров, чтобы достичь цели быстрее.<br><br> Подсказка: Удерживайте <strong>SHIFT</strong>, чтобы разместить несколько - экстракторов, а <strong>R</strong>, чтобы вращать их." - 2_1_place_cutter: "Разместите <strong>Резак</strong> для разрезания кругов на - две половины!<br><br> Подсказка: Резак всегда разрезает + экстракторов или <strong>R</strong>, чтобы вращать их." + 2_1_place_cutter: "Разместите <strong>резак</strong> для разрезания кругов на + две половины!<br><br> Подсказка: резак всегда разрезает <strong>сверху вниз</strong> независимо от ориентации." 2_2_place_trash: Резак может <strong>засориться и остановиться</strong>!<br><br> - Используйте <strong>мусорку</strong>, чтобы избавиться в данный - момент (!) от ненужных частей. + Используйте <strong>мусорку</strong>, чтобы избавиться от + ненужных в данный момент (!) частей. 2_3_more_cutters: "Хорошая работа! Теперь разместите <strong>ещё 2 резака</strong>, чтобы ускорить этот медленный процесс!<br><br> - Подсказка: Используйте <strong>клавиши 0-9 </strong> для - быстрого доступа к постройкам!" + Подсказка: Используйте <strong>клавиши 0-9</strong> для быстрого + доступа к постройкам!" 3_1_rectangles: "Теперь давайте извлечём немного прямоугольников! <strong>Постройте 4 экстрактора</strong>и соедините их с - хабом.<br><br> Подсказка: Удерживайте <strong>SHIFT</strong> во - время удерживания конвейера для активации планировщика - конвейеров!" + хабом.<br><br> Подсказка: Удерживайте <strong>SHIFT</strong> + после выбора конвейера для активации планировщика конвейеров!" 21_1_place_quad_painter: Разместите <strong>покрасчик для 4 предметов</strong> и получите <strong>круги</strong>, <strong>белого</strong> и <strong>красного</strong> цветов! 21_2_switch_to_wires: Переключите слой проводов нажатием клавиши <strong>E</strong>!<br><br> Потом <strong>соедините все входы</strong> покрасчика кабелями! - 21_3_place_button: Отлично! Теперь разместите <strong>Переключатель</strong> и - присоедини его проводами! + 21_3_place_button: Отлично! Теперь разместите <strong>переключатель</strong> и + присоедините его проводами! 21_4_press_button: "Нажмите на переключатель, чтобы заставить его - <strong>выдавать истинный сигнал </strong> и активировать этим + <strong>выдавать истинный сигнал</strong> и активировать покрасчик.<br><br> Подсказка: Не обязательно соединять все входы! Достаточно двух." 1_2_hold_and_drag: Удерживайте и перетаскивайте connectedMiners: - one_miner: 1 Экстрактор - n_miners: <amount> Экстрактора(-ов) + one_miner: 1 экстрактор + n_miners: <amount> экстрактора(-ов) limited_items: Ограничено до <max_throughput> watermark: title: Демоверсия @@ -465,32 +467,32 @@ ingame: no_thanks: Нет, спасибо! points: levels: - title: 12 Новых Уровней + title: 12 новых уровней desc: Всего 26 уровней! buildings: - title: 22 новых Построек + title: 22 новых построек desc: Полностью автоматизируйте свою фабрику! achievements: title: Достижения - desc: Получи их все! + desc: Получите их все! markers: - title: ∞ Маркеров + title: ∞ маркеров desc: Никогда не теряйтесь в своей фабрике! wires: title: Провода desc: Полноценное дополнительное измерение! darkmode: - title: Темная Тема + title: Темная тема desc: Дайте глазам отдохнуть! support: title: Поддержите меня desc: Я занимаюсь разработкой в свободное время! mods: - title: Modding support! - desc: Over 80 mods available! - titleV2: "Get the full version now on Steam to unlock:" - titleExpiredV2: Demo completed! - titleEnjoyingDemo: Enjoy the demo? + title: Поддержка модов + desc: Доступно более 80 модов! + titleV2: "Приобретите полную версию в Steam, чтобы разблокировать:" + titleExpiredV2: Вы прошли демоверсию! + titleEnjoyingDemo: Понравилась демоверсия? puzzleEditorSettings: zoneTitle: Область zoneWidth: Ширина @@ -504,27 +506,27 @@ ingame: puzzleEditorControls: title: Редактор головоломок instructions: - - 1. Разместите <strong>постоянный производитель</strong>, чтоб + - 1. Разместите <strong>постоянный производитель</strong>, чтобы предоставить фигуры и цвета игроку - 2. Постройте одну или несколько фигур, которые вы хотите, чтобы игрок построил позже, и доставьте их к одному или нескольким <strong>приемникам цели</strong> - - 3. Как только приемник цели получил фигуру определенное количество - раз, он <strong>сохраняет фигуру как цель</strong>, которую игрок - должен произвести позже (Обозначается <strong>зеленым + - 3. Как только приемник цели получит фигуру определенное количество + раз, он <strong>сохранит фигуру как цель</strong>, которую игрок + должен произвести позже (обозначается <strong>зеленым значком</strong>). - - 4. Нажмите <strong>кнопу блокировки</strong> на здании, чтоб + - 4. Нажмите <strong>кнопу блокировки</strong> на здании, чтобы выключить его. - - 5. Как только вы нажали "Обзор", ваша головоломка будет проверена + - 5. Как только вы нажмёте "обзор", ваша головоломка будет проверена и вы сможете опубликовать ее. - 6. После публикации, <strong>все постройки будут удалены</strong> - за исключением производителей и приемников цели - Это часть, в + за исключением производителей и приемников цели - это часть, в которой игрок должен разобраться сам :) puzzleCompletion: title: Головоломка завершена! - titleLike: "Нажмите на сердечко, если головоломка вам понравилась:" + titleLike: "Нажмите на сердечко, если головоломка Вам понравилась:" titleRating: Насколько сложной была головоломка? - titleRatingDesc: Ваша оценка поможет мне в будущем делать вам лучшие предложения + titleRatingDesc: Ваша оценка поможет мне предложить похожие головоломки в будущем continueBtn: Продолжить игру menuBtn: Меню nextPuzzle: Следующая головоломка @@ -536,27 +538,27 @@ ingame: completionRate: Процент завершения shopUpgrades: belt: - name: Конвейеры, Разделители & Туннели + name: Конвейеры, Разделители и Туннели description: Скорость x<currentMult> → x<newMult> miner: name: Добыча description: Скорость x<currentMult> → x<newMult> processors: - name: Нарезка, Вращение & Объединение + name: Нарезка, Вращение и Объединение description: Скорость x<currentMult> → x<newMult> painting: - name: Смешивание & Покраска + name: Смешивание и Покраска description: Скорость x<currentMult> → x<newMult> buildings: hub: - deliver: Доставить + deliver: Доставьте toUnlock: чтобы открыть levelShortcut: Ур. - endOfDemo: Конец Демо + endOfDemo: Конец демоверсии belt: default: name: Конвейер - description: Транспортирует предметы. Держите и тащите, чтобы разместить + description: Транспортирует предметы. Нажмите и перетаскивайте, чтобы разместить несколько. miner: default: @@ -576,7 +578,7 @@ buildings: description: Позволяет перевозить ресурсы под зданиями и конвейерами. balancer: default: - name: Балансер + name: Балансировщик description: Многофункциональный - равномерно распределяет все входы на выходы. merger: name: Соединитель (компактный) @@ -597,7 +599,7 @@ buildings: вы собираетесь использовать только одну часть, уничтожьте другую, иначе производство остановится!</strong> quad: - name: Резак (4Вых.) + name: Резак (4 вых.) description: Разрезает фигуры на четыре части. <strong>Если вы собираетесь использовать не все части - уничтожьте оставшиеся, иначе производство остановится!</strong> @@ -606,10 +608,10 @@ buildings: name: Вращатель description: Поворачивает фигуры по часовой стрелке на 90 градусов. ccw: - name: Вращатель (Обр.) + name: Вращатель (обр.) description: Поворачивает фигуры против часовой стрелки на 90 градусов. rotate180: - name: Вращатель (180) + name: Вращатель (180°) description: Поворачивает фигуры на 180 градусов. stacker: default: @@ -619,7 +621,7 @@ buildings: mixer: default: name: Смешиватель - description: Аддитивно смешивает цвета двух красителей. + description: Смешивает цвета двух красителей. painter: default: name: Покрасчик @@ -628,20 +630,20 @@ buildings: name: Покрасчик description: Красит всю фигуру из левого входа красителем из перпендикулярного. double: - name: Покрасчик (2Вх.) + name: Покрасчик (2 вх.) description: Красит фигуру из левых входов красителем из перпендикулярного. quad: - name: Покрасчик (4Вх.) + name: Покрасчик (4 вх.) description: Позволяет отдельно окрашивать каждую часть фигуры. Только ячейки с - <strong>положительным сигналом</strong> на слое с проводами - будут окрашены! + <strong>истинным сигналом</strong> на слое с проводами будут + окрашены! trash: default: name: Мусорка description: Имеет входы со всех сторон. Уничтожает все принимаемые ресурсы. storage: default: - name: Буферное Хранилище + name: Буферное хранилище description: Хранит излишние ресурсы пока есть место. Левый выход в приоритете, может быть использован как буфер. wire: @@ -655,38 +657,36 @@ buildings: соединяются. wire_tunnel: default: - name: Пересечение Проводов + name: Пересечение проводов description: Позволяет пересекать провода при этом не соединяя их. constant_signal: default: - name: Постоянный Сигнал - description: Издает постоянный сигнал, который может быть ресурсом, цветом или + name: Постоянный сигнал + description: Передаёт постоянный сигнал, который может быть ресурсом, цветом или логическим значением (1 / 0). lever: default: name: Переключатель - description: Может быть переключен, чтобы издавать логический сигнал (1 / 0) на - слое с проводами, который может быть использован, например, для - управления Фильтром. + description: Может быть переключен, чтобы передавать логический сигнал (1 / 0) + на слое с проводами, который может быть использован, например, + для управления фильтром. logic_gate: default: name: И - description: Издает значение "1" если оба входа положительны. (Положительный - - значит ресурс, цвет или логическое значение "1") + description: Передаёт значение "1" если оба входа истинны. (Истина - это ресурс, + цвет или логическое значение "1") not: name: НЕ - description: Издает значение "1" если вход не положительный. (Положительный - - значит ресурс, цвет или логическое значение "1") + description: Передаёт значение "1" если вход ложен. (Истина - это ресурс, цвет + или логическое значение "1") xor: name: Исключающее ИЛИ - description: Издает значение "1" только один из входов положительный. - (Положительный - значит ресурс, цвет или логическое значение - "1") + description: Передаёт значение "1" если только один из входов истинен. (Истина - + это ресурс, цвет или логическое значение "1") or: name: ИЛИ - description: Издает значение "1" если хотя бы один вход положительный. - (Положительный - значит ресурс, цвет или логическое значение - "1") + description: Передаёт значение "1" если хотя бы один вход истинен. (Истина - это + ресурс, цвет или логическое значение "1") transistor: default: name: Транзистор @@ -715,36 +715,36 @@ buildings: разблокировано). analyzer: default: - name: Анализатор Фигур - description: Анализирует правую верхнюю часть низшего слоя фигуры и возвращает + name: Анализатор фигур + description: Анализирует правую верхнюю часть нижнего слоя фигуры и возвращает её форму и цвет. comparator: default: - name: Сравнить + name: Сравнитель description: Возвращает значение "1" если оба сигнала полностью одинаковы. Может сравнивать фигуры, цвета и логические значения. virtual_processor: default: - name: Виртуальный Резак + name: Виртуальный резак description: Виртуально разрезает фигуру пополам. rotater: - name: Виртуальный Вращатель + name: Виртуальный вращатель description: Виртуально вращает фигуру как по часовой стрелке, так и против часовой стрелки. unstacker: - name: Виртуальный Разъединитель + name: Виртуальный разъединитель description: Виртуально извлекает самый верхний слой фигуры направо, а все остальное налево. stacker: - name: Виртуальный Объединитель + name: Виртуальный объединитель description: Виртуально помещает правый предмет поверх левого. painter: - name: Виртуальный Покрасчик + name: Виртуальный покрасчик description: Виртуально окрашивает фигуру из нижнего входа цветом из правого входа. item_producer: default: - name: Генератор Ресурсов + name: Генератор ресурсов description: Доступен только в режиме песочницы, производит заданный на слое с проводами сигнал на обычном слое. constant_producer: @@ -761,12 +761,12 @@ buildings: description: Блокирует это место от установки чего-либо storyRewards: reward_cutter_and_trash: - title: Разрезание Фигур + title: Разрезание фигур desc: Разблокирован <strong>резак</strong>, который разрезает фигуры пополам по вертикали <strong>независимо от ориентации</strong>!<br><br> Не забудьте избавляться от излишков, иначе <strong>он забьется и - остановится</strong> - для этого я также открыл для Вас - <strong>мусорку</strong>, которая уничтожает все, что в неё + остановится</strong> - для этого для Вас также доступна + <strong>мусорка</strong>, которая уничтожает все, что в неё попадает! reward_rotater: title: Вращение @@ -777,9 +777,9 @@ storyRewards: desc: "Разблокирован <strong>покрасчик</strong>! Добудьте краситель из жилы (так же, как и фигуры) и объедините его с фигурой в покрасчике, чтобы раскрасить её!<br><br> Подсказка: Если вы дальтоник, то в настройках - есть <strong>Режим Дальтоника</strong>!" + есть <strong>режим для дальтоников</strong>!" reward_mixer: - title: Смешивание Цветов + title: Смешивание цветов desc: Разблокирован <strong>смешиватель</strong>! Позволяет объединять два цвета, используя <strong>аддитивное смешивание</strong>! reward_stacker: @@ -789,8 +789,8 @@ storyRewards: друг с другом, они будут <strong>соединены</strong>, иначе фигура из правого входа <strong>наложится</strong> на фигуру из левого! reward_balancer: - title: Балансер - desc: Многофункциональный <strong>балансер</strong> разблокирован - Он + title: Балансировщик + desc: Разблокирован многофункциональный <strong>балансировщик</strong> - он используется для <strong>разделения и обьединения потока предметов</strong> на несколько конвейеров! reward_tunnel: @@ -798,12 +798,12 @@ storyRewards: desc: Разблокирован <strong>туннель</strong>! Теперь вы можете транспортировать предметы под другими конвейерами и зданиями! reward_rotater_ccw: - title: Обратный Вращатель + title: Обратный вращатель desc: Разблокирован вариант <strong>вращателя</strong>, вращающий фигуры против часовой стрелки! Чтобы построить его, выберите вращатель и <strong>нажмите 'T', чтобы переключить вариант</strong>! reward_miner_chainable: - title: Цепной Экстрактор + title: Цепной экстрактор desc: "Разблокирован <strong>цепной экстрактор</strong>! Он может <strong>передавать свои ресурсы</strong> другим экстракторам, чтобы вы могли эффективнее извлекать ресурсы!<br><br> Подсказка: Старый @@ -811,93 +811,94 @@ storyRewards: reward_underground_belt_tier_2: title: Туннель II desc: Разблокирован новый вариант <strong>туннеля</strong> с <strong>большей - дальностью</strong>, а также вы можете совмещать эти туннели! + дальностью</strong>, также вы можете совмещать эти туннели без их + пересечения! reward_merger: - title: Компактный Соединитель + title: Компактный соединитель desc: Разблокирован <strong>соединитель</strong> - вариант - <strong>балансера</strong> - он принимает два входа и объединяет их - в один конвейер. + <strong>балансировщика</strong> - он принимает два входа и + объединяет их в один конвейер. reward_splitter: - title: Разделитель / Соединитель + title: Компактный разделитель desc: Разблокирован <strong>разделитель</strong>, один из вариантов - <strong>балансера</strong> - он принимает один вход и разделяет его - на два! + <strong>балансировщика</strong> - он принимает один вход и разделяет + его на два! reward_belt_reader: title: Измеритель desc: Разблокирован <strong>измеритель</strong>! Он позволяет измерять пропускную способность конвейера.<br><br> Вы узнаете, как он полезен, когда разблокируете провода! reward_cutter_quad: - title: Резак (4 Выхода) + title: Резак (4 выхода) desc: Разблокирован вариант <strong>резака</strong>, разрезающий фигуры на <strong>четыре части</strong> вместо двух! reward_painter_double: - title: Двойной Покрасчик + title: Двойной покрасчик desc: Разблокирован вариант <strong>покрасчика</strong> - он работает как обычный покрасчик, но обрабатывает <strong>две фигуры одновременно</strong>, потребляя только один краситель вместо двух! reward_storage: - title: Буферное Хранилище + title: Буферное хранилище desc: Разблокировано <strong>буферное хранилище</strong> - оно позволяет хранить - в нем ресурсы пока есть место!<br><br> Левый выход в приоритете, - может быть использован как <strong>буфер</strong>! + в нем ресурсы пока есть место!<br><br> Левый выход в приоритете, а + значит хранилиже может быть использовано как <strong>буфер</strong>! reward_blueprints: title: Чертежи desc: Теперь вы можете <strong>копировать и вставлять</strong> части вашей - фабрики! Выберите область (Удерживая CTRL, перетащите мышь) и + фабрики! Выберите область (удерживая CTRL и перетаскивая курсор) и нажмите 'C', чтобы скопировать её.<br><br> Вставка <strong>не бесплатна</strong>, для этого необходимо произвести <strong>фигуры - для чертежей</strong>! (Которые вы только что доставили) + для чертежей</strong> (которые вы только что доставили)! reward_rotater_180: - title: Вращатель (180 градусов) - desc: Разблокирован <strong>вращатель</strong> на 180 градусов! - Он позволяет - вращать фигуры на 180 градусов (Сюрприз! :D) + title: Вращатель (180°) + desc: Разблокирован <strong>вращатель</strong> на 180 градусов! - он позволяет + вращать фигуры на 180 градусов (если Вы не догадались :D) reward_wires_painter_and_levers: - title: Провода & Покрасчик (4 входа) - desc: "Вы разблокировали <strong>Слой проводов</strong>: Это отдельный слой выше - обычного слоя и он предоставляет много новых механик!<br><br> Для - начала я разблокировал вам <strong>Покрасчик на 4 входа</strong> - - Соедини слоты которые нужно покрасить на слое проводов!<br><br> Для - переключения видимости слоя проводов, нажми - <strong>E</strong>.<br><br> Подсказка: <strong>Включи - подсказки</strong> в настройках, чтобы активировать обучение по - проводам!" + title: Провода и покрасчик (4 входа) + desc: "Вы разблокировали <strong>слой проводов</strong>: это отдельный слой выше + обычного слоя, предоставляющий много новых механик!<br><br> Для + начала Вам доступен <strong>покрасчик на 4 входа</strong> - + соедините слоты, соответствующие частям фигуры, которые нужно + покрасить на слое проводов!<br><br> Для переключения видимости слоя + проводов, нажмите <strong>E</strong>.<br><br> Подсказка: + <strong>включите подсказки</strong> в настройках, чтобы активировать + обучение по проводам!" reward_filter: title: Фильтр - desc: Разблокирован <strong>Фильтр</strong>! Он направит ресурсы наверх или + desc: Разблокирован <strong>фильтр</strong>! Он направит ресурсы наверх или направо в зависмости от того, совпадают ли они с установленным сигналом.<br><br> Вы также можете передавать логические значения (1 / 0), чтобы полностью отключить или включить его. reward_display: title: Экран - desc: "Разблокирован <strong>Экран</strong> - Подключите сигнал на слое с - проводами, чтобы отобразить его!<br><br> Подсказка: Заметили ли вы, + desc: "Разблокирован <strong>экран</strong> - подключите сигнал на слое с + проводами, чтобы отобразить его!<br><br> Подсказка: заметили ли вы, что измеритель и буферное хранилище отображают последний ресурс, прошедший через них? Попробуйте отобразить его на экране!" reward_constant_signal: - title: Постоянный Сигнал + title: Постоянный сигнал desc: Разблокирован <strong>постоянный сигнал</strong> на слое с проводами! Он полезен, например, для подключения к - <strong>фильтрам</strong>.<br><br> Постоянный сигнал может издавать - <strong>фигуру</strong>, <strong>цвет</strong> или + <strong>фильтрам</strong>.<br><br> Постоянный сигнал может + передавать <strong>фигуру</strong>, <strong>цвет</strong> или <strong>логическое значение</strong> (1 / 0). reward_logic_gates: - title: Логические Элементы + title: Логические элементы desc: Разблокированы <strong>логические элементы</strong>! Вы не обязаны радоваться по этому поводу, но вообще это очень круто!<br><br> С - этими элементами теперь вы можете производить И, ИЛИ, исключающее - ИЛИ и НЕ операции.<br><br> Как бонус, я также дал вам + этими элементами теперь вы можете производить логические операции И, + ИЛИ, исключающее ИЛИ и НЕ.<br><br> Как бонус, также разблокирован <strong>транзистор</strong>! reward_virtual_processing: - title: Виртуальное Производство - desc: Только что я открыл вам множество новых построек, которые позволят - <strong>симулировать производство фигур</strong>!<br><br> Теперь вы + title: Виртуальное производство + desc: Разблокировано множество новых построек, которые позволят + <strong>симулировать производство фигур</strong>!<br><br> Теперь Вы можете симулировать резак, вращатель, объединитель и др. на слое с проводами! Теперь у вас есть три варианта продолжения игры:<br><br> - Построить <strong>автоматический механизм</strong> для - производства любой фигуры, запрашиваемой ХАБ (рекомендую + производства любой фигуры, запрашиваемой ХАБом (рекомендую попробовать!).<br><br> - Построить что-то клевое, используя - провода.<br><br> - Продолжить обычную игру.<br><br> Чтобы вы не + провода.<br><br> - Продолжить обычную игру.<br><br> Чтобы Вы не выбрали, не забывайте хорошо проводить время! no_reward: title: Следующий уровень @@ -907,7 +908,7 @@ storyRewards: улучшения</strong>!" no_reward_freeplay: title: Следующий уровень - desc: Поздравляем! Кстати, больше контента планируется для полной версии! + desc: Поздравляем! reward_freeplay: title: Свободная игра desc: У Вас получилось! Разблокирован <strong>свободный режим</strong>! Это @@ -919,7 +920,7 @@ storyRewards: фигуру на слое с проводами, так что все, что необходимо сделать, - это проанализировать её и автоматически настроить вашу фабрику. reward_demo_end: - title: Конец Демо + title: Конец демоверсии desc: Вы достигли конца демоверсии игры! settings: title: Настройки @@ -929,9 +930,9 @@ settings: advanced: Продвинутые performance: Производительность versionBadges: - dev: Разработчик - staging: Постановка - prod: Произведена + dev: Разработка + staging: Тестирование + prod: Релиз buildDate: Сборка <at-date> rangeSliderPercentage: <amount> % labels: @@ -952,16 +953,15 @@ settings: description: Управляет тем, как часто игра автоматически сохраняется. Также здесь можно полностью отключить автосохранение. intervals: - one_minute: 1 Минута - two_minutes: 2 Минуты - five_minutes: 5 Минут - ten_minutes: 10 Минут - twenty_minutes: 20 Минут + one_minute: 1 минута + two_minutes: 2 минуты + five_minutes: 5 минут + ten_minutes: 10 минут + twenty_minutes: 20 минут disabled: Отключено scrollWheelSensitivity: title: Чувствительность зума - description: Изменяет чувствительность зума (колесико мыши или сенсорная - панель). + description: Изменяет чувствительность зума (от колесика мыши или тачпада). sensitivity: super_slow: Очень медленно slow: Медленно @@ -984,7 +984,7 @@ settings: description: Выберите язык. Все переводы сделаны пользователями и могут быть не законченными! enableColorBlindHelper: - title: Режим Дальтоника + title: Режим для дальтоников description: Включает различные инструменты, которые позволяют играть в игру дальтоникам. fullscreen: @@ -998,7 +998,7 @@ settings: title: Выключить музыку description: Если включено, выключает музыку. soundVolume: - title: Громкость Звука + title: Громкость звука description: Задает громкость звуковых эффектов. musicVolume: title: Громкость музыки @@ -1021,13 +1021,13 @@ settings: пока вы не отмените выбор. Это эквивалентно постоянному удержанию SHIFT. offerHints: - title: Подсказки & Обучение + title: Подсказки и обучение description: Стоит ли предлагать подсказки и обучающий материал во время игры. Также скрывает определенные элементы пользовательского интерфейса для данного уровня, предназначенные для облегчения - "входа" в игру. + первоначальной игры. enableTunnelSmartplace: - title: Умные Туннели + title: Умные туннели description: Если включено, то при размещении туннелей автоматически удаляются ненужные конвейеры. Это также позволяет протягивать туннели, причем лишние туннели будут удалены. @@ -1041,12 +1041,12 @@ settings: установлен. С этой настройкой может быть удобнее, при частом переключении между различными типами зданий. compactBuildingInfo: - title: Компактная Информация о Зданиях + title: Компактная информация о зданиях description: Сокращает отображаемую информацию о зданиях, показывая только их множители. Иначе информация отображается с описанием и изображением. disableCutDeleteWarnings: - title: Отключить Предупреждение о Вырезании/Удалении + title: Отключить предупреждение о вырезании/Удалении description: Отключает диалоговые окна с предупреждениями, появляющиеся при вырезании/удалении более 100 объектов. lowQualityMapResources: @@ -1055,16 +1055,16 @@ settings: улучшения производительности. Оно даже выглядит аккуратнее, поэтому обязательно попробуйте! disableTileGrid: - title: Отключить Сетку + title: Отключить сетку description: Отключение разделительной сетки может помочь улучшить производительность. Кроме того, делает игру визуально проще! clearCursorOnDeleteWhilePlacing: - title: Очистить Курсор на ПКМ + title: Очистить курсор на ПКМ description: Включено по умолчанию, очищает курсор от выбранной постройки при нажатии на ПКМ. Если отключено, вы можете удалять постройки при нажатии на ПКМ во время строительства. lowQualityTextures: - title: Низкое качество текстур (Некрасиво) + title: Низкое качество текстур (некрасиво) description: Использует низкое качество текстур, чтобы улучшить производительность. Это сделает игру очень некрасивой! displayChunkBorders: @@ -1072,16 +1072,16 @@ settings: description: Эта игра разделена на чанки, состоящие из 16x16 ячеек, если эта настройка включена, границы чанков будут отображаться. pickMinerOnPatch: - title: Выбрать Экстрактор над Жилой + title: Выбрать экстрактор над жилой description: Включено по умолчанию, выбирает экстрактор, если использовать пипетку над жилой с ресурсами. simplifiedBelts: - title: Упрощенные Конвейеры (Некрасиво) + title: Упрощенные конвейеры (некрасиво) description: Для улучшения производительности не отображает ресурсы, находящиеся на конвейере, если не навести курсор. Не рекомендую играть с этой настройкой, если вас устраивает производительность. enableMousePan: - title: Включить Перемещение Мышкой + title: Включить перемещение мышкой description: Позволяет двигать карту, перемещая курсор к краям экрана. Скорость зависит от настройки Скорости движения. zoomToCursor: @@ -1109,8 +1109,8 @@ keybindings: placement: Размещение massSelect: Множественный Выбор buildings: Постройки - placementModifiers: Модификаторы Размещения - mods: Provided by Mods + placementModifiers: Модификаторы пазмещения + mods: Настройки модов mappings: confirm: Подтвердить back: Назад @@ -1126,12 +1126,12 @@ keybindings: menuOpenShop: Улучшения menuOpenStats: Статистика menuClose: Закрыть меню - toggleHud: Переключить HUD + toggleHud: Включить/выключить интерфейс toggleFPSInfo: Включить/выключить FPS и информацию отладки switchLayers: Переключить слои - exportScreenshot: Экспорт всей Базы в виде Изображения + exportScreenshot: Экспорт всей базы в виде изображения belt: Конвейер - balancer: Балансер + balancer: Балансировщик underground_belt: Туннель miner: Экстрактор cutter: Резак @@ -1140,33 +1140,33 @@ keybindings: mixer: Смешиватель painter: Покрасчик trash: Мусорка - storage: Буферное Хранилище + storage: Буферное хранилище wire: Энергетический провод - constant_signal: Постоянный Сигнал - logic_gate: Логический Элемент + constant_signal: Постоянный сигнал + logic_gate: Логический элемент lever: Переключатель (обычный) filter: Фильтр - wire_tunnel: Пересечение Проводов + wire_tunnel: Пересечение проводов display: Экран reader: Измеритель - virtual_processor: Виртуальный Резак + virtual_processor: Виртуальный резак transistor: Транзистор - analyzer: Анализатор Фигур - comparator: Сравнить - item_producer: Генератор Ресурсов (Песочница) + analyzer: Анализатор фигур + comparator: Сравнитель + item_producer: Генератор ресурсов (песочница) pipette: Пипетка rotateWhilePlacing: Вращать rotateInverseModifier: "Модификатор: Вращать против часовой стрелки" - rotateToUp: "Повернуть: Направление Вверх" - rotateToDown: "Повернуть: Направление Вниз" - rotateToRight: "Повернуть: Направление Вправо" - rotateToLeft: "Повернуть: Направление Влево" - cycleBuildingVariants: Переключение Вариантов - confirmMassDelete: Подтверждение Массового Удаления + rotateToUp: "Повернуть: направление вверх" + rotateToDown: "Повернуть: направление вниз" + rotateToRight: "Повернуть: направление вправо" + rotateToLeft: "Повернуть: направление влево" + cycleBuildingVariants: Переключение вариантов + confirmMassDelete: Подтверждение массового удаления pasteLastBlueprint: Вставить последний чертеж - cycleBuildings: Переключение Построек + cycleBuildings: Переключение построек lockBeltDirection: Включает конвейерный планировщик - switchDirectionLockSide: "Планировщик: Переключение сторон" + switchDirectionLockSide: "Планировщик: переключение сторон" copyWireValue: "Провода: скопировать значение под курсором" massSelectStart: Модификатор для выделения области massSelectSelectMultiple: Выбрать несколько областей @@ -1187,13 +1187,13 @@ about: href="https://github.com/tobspr" target="_blank">Тобиасом Спрингером</a> (это я).<br><br> - Если вы хотите внести свой вклад игре - <a href="<githublink>" target="_blank">shapez.io в github</a>.<br><br> + Если вы хотите внести свой вклад в игру, перейдите на страницу <a href="<githublink>" target="_blank">shapez на github</a>.<br><br> Эта игра не была бы возможна без большого сообщества в Discord, которое собралось вокруг моих игр - Вам действительно стоит присоединиться к <a href="<discordlink>" target="_blank">серверу Discord!</a>!<br><br> - Саундтрек сделал <a href="https://soundcloud.com/pettersumelius" target="_blank">Peppsen</a> - Он потрясающий.<br><br> + Саундтрек сделал <a href="https://soundcloud.com/pettersumelius" target="_blank">Peppsen</a> - потрясающий человек.<br><br> - Наконец, огромное спасибо моему лучшему другу <a href="https://github.com/niklas-dahl" target="_blank">Niklas</a> - Без наших игровых сессий в Factorio эта игра никогда не существовала бы. + Наконец, огромное спасибо моему лучшему другу <a href="https://github.com/niklas-dahl" target="_blank">Niklas</a> - без наших игровых сессий в Factorio эта игра никогда не существовала бы. changelog: title: Список изменений demo: @@ -1201,16 +1201,17 @@ demo: restoringGames: Восстановить сохранения игр importingGames: Импортировать сохранения игр oneGameLimit: Ограниченность одним сохранением игры - customizeKeybindings: Пользовательская настройка Управления - exportingBase: Экспорт всей Базы в виде Изображения + customizeKeybindings: Пользовательская настройка управления + exportingBase: Экспорт всей базы в виде изображения settingNotAvailable: Недоступно в демоверсии. tips: - ХАБ принимает любые ресурсы, не только текущую фигуру! - Старайтесь создавать модульные фабрики - вы не пожалеете! - - Не стройте слишком близко к ХАБ-у, иначе начнется ужасный хаос! + - Не стройте слишком близко к ХАБу, иначе начнется полный хаос! - Если не получается объединить фигуры, попробуйте поменять входы местами! - Вы можете изменить направление конвейера при строительстве, нажав <b>R</b>. - - Удерживая <b>CTRL</b>, вы можете перемещать конвейеры без авто ориентации. + - Удерживая <b>CTRL</b>, вы можете перемещать конвейеры без автоматической + ориентации. - Соотношения всегда одинаковы, если уровни улучшений равны. - Последовательное выполнение эффективнее, чем параллельное. - Вам будут открываться новые варианты построек по мере прохождения! @@ -1218,7 +1219,7 @@ tips: - Симметрия - ключ к успеху! - Вы можете переплетать между собой туннели разных уровней. - Попробуйте строить компактные фабрики - вы не пожалеете! - - Покрасчик имеет зеркальный вариант, который может быть выбран, нажав + - Покрасчик имеет зеркальный вариант, который может быть выбран с помощью <b>T</b>. - Правильные соотношения построек позволяет улучшить эффективность фабрики. - На максимальном уровне, 5 экстракторов заполняют один конвейер. @@ -1228,21 +1229,21 @@ tips: постройку длинных конвейеров. - Резаки всегда разрезают пополам по вертикали вне зависимости от ориентации. - Чтобы получить белый цвет, смешайте все три цвета. - - Буффер хранилища с большим приоритетом выдаёт предметы на левый выход. + - В буферном хранилище левый выход - приоритетный. - Вкладывайте время в строительство повторяемых механизмов - оно того стоит! - Удерживание <b>SHIFT</b> даёт возможность размещения нескольких построек. - Можно зажать <b>ALT</b> для инвертирования направления размещаемых конвейеров. - Эффективность - ключ к успеху! - - Чем дальше от ХАБ-а, тем сложнее формы в жилах! + - Чем дальше от ХАБа, тем сложнее формы в жилах! - Здания имеют лимит скорости, разделяйте их для максимальной эффективности. - - Используйте балансеры, чтобы максимизировать эффективность. + - Используйте балансировщики, чтобы максимизировать эффективность. - Организация очень важна, старайтесь не пересекать конвейеры слишком часто. - - Планируйте заранее, иначе начнется ужасный хаос! + - Планируйте заранее, иначе начнется хаос! - Не удаляйте свои старые фабрики! Они понадобятся вам, чтобы открывать улучшения. - - Попробуйте пройти 20-ый или 26-ой уровень самостоятельно, прежде чем - искать помощи! + - Попробуйте пройти 20 или 26 уровень самостоятельно, прежде чем искать + помощи! - Не усложняйте себе жизнь, старайтесь думать проще и вы достигните больших высот. - Вам может снова понадобиться ваша старая фабрика позже в игре. Старайтесь @@ -1252,11 +1253,12 @@ tips: - Полноценные мельницы/вертушки никогда не генерируются натурально. - Для максимальной эффективности окрашивайте свои фигуры, прежде чем разрезать. - - С модулями теряется восприятие пространства; забота смертных. - - Создайте отдельную фабрику чертежей. Они очень важны для модулей. + - С модулями теряется восприятие пространства; проблема смертных. + - Выделите место для заготовок, чтобы копировать их с помощью чертежей. Они + очень важны для модулей. - Взгляните внимательнее на смешиватель и вы найдете ответы на свои вопросы. - - Используйте <b>CTRL</b> + Потащить, чтобы выделить область - - Строительство вблизи ХАБ-а может помешать будущим фабрикам. + - Используйте <b>CTRL</b> + перетаскивание, чтобы выделить область + - Строительство вблизи ХАБа может помешать будущим фабрикам. - Иконка булавки на каждой фигуре закрепляет её на экране. - Смешайте все три цвета для получения белого. - У вас есть бесконечная карта. Не зажимайте свою фабрику, расширяйтесь! @@ -1267,9 +1269,9 @@ tips: - В этой игре множество полезных комбинаций клавиш. Загляните в настройки, чтобы ознакомиться с ними. - В этой игре множество настроек, не забудьте с ними ознакомиться. - - Маркер ХАБ-а имеет небольшой компас, указывающий его местоположение. + - Маркер ХАБа имеет небольшой компас, указывающий его местоположение. - Для очистки конвейеров, вырежьте область и вставьте её в то же место. - - Нажмите F4, чтобы показать FPS и Частоту Обновления. + - Нажмите F4, чтобы показать FPS и тиерейт. - Нажмите F4 дважды, чтобы показать координаты курсора и камеры. - Вы можете нажать на закрепленную фигуру слева, чтобы открепить её. puzzleMenu: @@ -1279,8 +1281,8 @@ puzzleMenu: createPuzzle: Создать головоломку loadPuzzle: Загрузить reviewPuzzle: Просмотреть и опубликовать - validatingPuzzle: Подтверждение головоломки - submittingPuzzle: Отправка головоломки + validatingPuzzle: Головоломка на подтверждении + submittingPuzzle: Опубликование головоломки noPuzzles: В данный момент в этом разделе нет головоломок. categories: levels: Уровни @@ -1316,9 +1318,9 @@ puzzleMenu: easy: Легко medium: Средне hard: Сложно - unknown: Unrated - dlcHint: Уже купили DLC? Проверьте, что оно активировано, нажав правый клик на - shapez.io в своей библиотеке, и далее Свойства > Доп. Контент + unknown: Не определено + dlcHint: Уже купили DLC? Проверьте, что оно активировано, нажав правой кнопкой + мыши на shapez в своей библиотеке Steam, далее Свойства > Доп. Контент search: action: Поиск placeholder: Введите название головоломки или имя автора @@ -1364,17 +1366,17 @@ mods: author: Автор version: Версия modWebsite: Веб-сайт - openFolder: Открыть папку с Модами - folderOnlyStandalone: Открытие папки Модов возможно только при запуске автономного режима. - browseMods: Просмотреть Моды + openFolder: Открыть папку с модами + folderOnlyStandalone: Открытие папки модов возможно только в десктопной версии. + browseMods: Просмотреть моды modsInfo: Чтобы установить и управлять модами, скопируйте их в папку модов в директории игры. Вы также можете воспользоваться кнопкой "Открыть папку модов" в справа вверху. - noModSupport: Для установки модов вам нужна автономная версия в Steam. + noModSupport: Для установки модов вам нужна десктопная версия в Steam. togglingComingSoon: title: Совсем скоро description: Включение или отключение модов в настоящее время возможно только путем копирования файла мода из/в папку mods/. Однако, возможность управлять ими здесь планируется в будущем обновлении! - browserNoSupport: Due to browser restrictions it is currently only possible to - install mods in the Steam version - Sorry! + browserNoSupport: В связи с ограничениями браузера устанавливать моды сейчас + возможно только в Steam версии, простите! diff --git a/translations/base-sl.yaml b/translations/base-sl.yaml index 8c53a363..f65c35c6 100644 --- a/translations/base-sl.yaml +++ b/translations/base-sl.yaml @@ -55,6 +55,8 @@ global: space: SPACE loggingIn: Logging in loadingResources: Downloading additional resources (<percentage> %) + discount: -<percentage>% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: Demo Version intro: |- @@ -102,6 +104,7 @@ mainMenu: logout: Logout noActiveSavegames: No active savegames found - Click play to start a new game! playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + playFullVersionStandalone: You can now also play the full version in your Browser! dialogs: buttons: ok: OK diff --git a/translations/base-sr.yaml b/translations/base-sr.yaml index 8371f4a6..935f35c1 100644 --- a/translations/base-sr.yaml +++ b/translations/base-sr.yaml @@ -53,6 +53,8 @@ global: space: SPACE loggingIn: Prijavljivanje loadingResources: Downloading additional resources (<percentage> %) + discount: -<percentage>% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: Probna Verzija intro: |- @@ -101,6 +103,7 @@ mainMenu: logout: Logout noActiveSavegames: No active savegames found - Click play to start a new game! playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + playFullVersionStandalone: You can now also play the full version in your Browser! dialogs: buttons: ok: OK diff --git a/translations/base-sv.yaml b/translations/base-sv.yaml index bc145362..4ec90926 100644 --- a/translations/base-sv.yaml +++ b/translations/base-sv.yaml @@ -54,6 +54,8 @@ global: space: MELLANSLAG loggingIn: Loggar in loadingResources: Downloading additional resources (<percentage> %) + discount: -<percentage>% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: Demo-version intro: |- @@ -103,6 +105,7 @@ mainMenu: logout: Logout noActiveSavegames: No active savegames found - Click play to start a new game! playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + playFullVersionStandalone: You can now also play the full version in your Browser! dialogs: buttons: ok: OK diff --git a/translations/base-tr.yaml b/translations/base-tr.yaml index 2e8bd82d..1d2b0c21 100644 --- a/translations/base-tr.yaml +++ b/translations/base-tr.yaml @@ -52,7 +52,9 @@ global: shift: SHIFT space: SPACE loggingIn: Giriş yapılıyor - loadingResources: Downloading additional resources (<percentage> %) + loadingResources: Ek kaynaklar indiriliyor... (<percentage> %) + discount: -<percentage>% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: Deneme Sürümü intro: |- @@ -101,6 +103,7 @@ mainMenu: logout: Logout noActiveSavegames: No active savegames found - Click play to start a new game! playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + playFullVersionStandalone: You can now also play the full version in your Browser! dialogs: buttons: ok: OK diff --git a/translations/base-uk.yaml b/translations/base-uk.yaml index 67194475..259426ea 100644 --- a/translations/base-uk.yaml +++ b/translations/base-uk.yaml @@ -54,6 +54,8 @@ global: space: SPACE loggingIn: Вхід у систему loadingResources: Downloading additional resources (<percentage> %) + discount: -<percentage>% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: Демо-версія intro: |- @@ -102,6 +104,7 @@ mainMenu: logout: Logout noActiveSavegames: No active savegames found - Click play to start a new game! playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + playFullVersionStandalone: You can now also play the full version in your Browser! dialogs: buttons: ok: Гаразд @@ -448,10 +451,10 @@ ingame: вводи</strong> фарбувальника за допомогою проводу! 21_3_place_button: Неймовірно! Тепер розмістіть <strong>Вимикач</strong> Та з'єднайте їх дротом! - 21_4_press_button: "Натисніть вимикач, аби він почав <strong>видавати сигнал - \"Істина\" </strong> активувавши таким чином - фарбувальник.<br><br> PS: Не обов'язково підключати всі входи! - Спробуйте підключити лише два." + 21_4_press_button: 'Натисніть вимикач, аби він почав <strong>видавати сигнал + "Істина" </strong> активувавши таким чином + фарбувальник.<br><br> PS: Не обов''язково підключати всі входи! + Спробуйте підключити лише два.' 1_2_hold_and_drag: Утримуйте і перетягніть connectedMiners: one_miner: 1 Екстрактор diff --git a/translations/base-zh-CN-ISBN.yaml b/translations/base-zh-CN-ISBN.yaml index c4b27865..c2c94617 100644 --- a/translations/base-zh-CN-ISBN.yaml +++ b/translations/base-zh-CN-ISBN.yaml @@ -51,6 +51,8 @@ global: space: 空格键 loggingIn: 登录 loadingResources: Downloading additional resources (<percentage> %) + discount: -<percentage>% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: 试玩版 intro: 购买完整版以解锁所有游戏内容! @@ -88,6 +90,7 @@ mainMenu: logout: Logout noActiveSavegames: No active savegames found - Click play to start a new game! playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + playFullVersionStandalone: You can now also play the full version in your Browser! dialogs: buttons: ok: 确认 @@ -151,13 +154,15 @@ dialogs: desc: 您还没有解锁蓝图功能!通过第12关的挑战后可解锁蓝图。 keybindingsIntroduction: title: 实用快捷键 - desc: "这个游戏有很多有用的快捷键设定。 以下是其中的一些介绍,记得在<strong>按键设置</strong>中查看其他按键设定!<br><br> + desc: + "这个游戏有很多有用的快捷键设定。 以下是其中的一些介绍,记得在<strong>按键设置</strong>中查看其他按键设定!<br><br> <code class='keybinding'>CTRL键</code> + 拖动:选择区域以复制或删除。<br> <code class='keybinding'>SHIFT键</code>: 按住以放置多个同一种设施。<br> <code class='keybinding'>ALT键</code>: 反向放置传送带。<br>" createMarker: title: 创建地图标记 - desc: 填写一个有意义的名称, 还可以同时包含一个形状的 <strong>短代码</strong> (您可以 <link>点击这里</link> + desc: + 填写一个有意义的名称, 还可以同时包含一个形状的 <strong>短代码</strong> (您可以 <link>点击这里</link> 生成短代码) titleEdit: 编辑地图标记 markerDemoLimit: @@ -355,15 +360,18 @@ ingame: hints: 1_1_extractor: 在<strong>圆形</strong>上放置一个<strong>开采器</strong>来获取圆形!<br><br>提示:<strong>按下鼠标左键</strong>选中<strong>开采器</strong> 1_2_conveyor: 用<strong>传送带</strong>将您的开采器连接到中心基地上!<br><br>提示:选中<strong>传送带</strong>后<strong>按下鼠标左键可拖动</strong>布置传送带! - 1_3_expand: 您可以放置更多的<strong>开采器</strong>和<strong>传送带</strong>来更有效率地完成关卡目标。<br><br> + 1_3_expand: + 您可以放置更多的<strong>开采器</strong>和<strong>传送带</strong>来更有效率地完成关卡目标。<br><br> 提示:按住 <strong>SHIFT</strong> 键可放置多个<strong>开采器</strong>,注意用<strong>R</strong> 键可旋转<strong>开采器</strong>的出口方向,确保开采的图形可以顺利传送。 2_1_place_cutter: 现在放置一个<strong>切割器</strong>,这个设施可把<strong>圆形</strong>切成两半!<br><br>注意:无论如何放置,切割机总是<strong>从上到下</strong>切割。 - 2_2_place_trash: 使用切割机后产生的废弃图形会导致<strong>堵塞</strong>。<br><br>注意使用<strong>垃圾桶</strong>清除当前 + 2_2_place_trash: + 使用切割机后产生的废弃图形会导致<strong>堵塞</strong>。<br><br>注意使用<strong>垃圾桶</strong>清除当前 (!) 不需要的废物。 2_3_more_cutters: 干的好!现在放置<strong>2个以上的切割机</strong>来加快当前缓慢的过程!<br><br>提示:用<strong>快捷键0-9</strong>可以快速选择各项设施! - 3_1_rectangles: 现在让我们开采一些矩形!找到<strong>矩形地带</strong>并<strong>放置4个开采器</strong>并将它们用<strong>传送带</strong>连接到中心基地。<br><br> + 3_1_rectangles: + 现在让我们开采一些矩形!找到<strong>矩形地带</strong>并<strong>放置4个开采器</strong>并将它们用<strong>传送带</strong>连接到中心基地。<br><br> 提示:选中<strong>传送带</strong>后按住<strong>SHIFT键</strong>可快速准确地规划<strong>传送带路线!</strong> 21_1_place_quad_painter: 放置<strong>四口上色器</strong>并且获取一些<strong>圆形</strong>,<strong>白色</strong>和<strong>红色</strong>! 21_2_switch_to_wires: 按 <strong>E</strong> 键选择<strong>电线层</strong>!<br><br> @@ -660,7 +668,8 @@ storyRewards: desc: 恭喜!您解锁了<strong>旋转机</strong>。它会顺时针将输入的<strong>图形旋转90度</strong>。 reward_painter: title: 上色 - desc: 恭喜!您解锁了<strong>上色器</strong>。开采一些颜色 (就像您开采图形一样),将其在上色器中与图形结合来将图形上色! + desc: + 恭喜!您解锁了<strong>上色器</strong>。开采一些颜色 (就像您开采图形一样),将其在上色器中与图形结合来将图形上色! <br>注意:如果您不幸患有色盲,可以在设置中启用<strong>色盲模式</strong> reward_mixer: title: 混合颜色 @@ -677,11 +686,13 @@ storyRewards: desc: 恭喜!您解锁了<strong>隧道</strong>。它可放置在<strong>传送带</strong>或<strong>设施</strong>下方以运送物品。 reward_rotater_ccw: title: 逆时针旋转 - desc: 恭喜!您解锁了<strong>旋转机</strong>的<strong>逆时针</strong>变体。它可以逆时针旋转<strong>图形</strong>。 + desc: + 恭喜!您解锁了<strong>旋转机</strong>的<strong>逆时针</strong>变体。它可以逆时针旋转<strong>图形</strong>。 <br>选择<strong>旋转机</strong>然后按"T"键来选取这个变体。 reward_miner_chainable: title: 链式开采器 - desc: 您已经解锁了<strong>链式开采器</strong>!它能<strong>转发资源</strong>给其他的开采器,这样您就能更有效率的开采各类资源了!<br><br> + desc: + 您已经解锁了<strong>链式开采器</strong>!它能<strong>转发资源</strong>给其他的开采器,这样您就能更有效率的开采各类资源了!<br><br> 注意:新的开采器已替换了工具栏里旧的开采器! reward_underground_belt_tier_2: title: 二级隧道 @@ -698,12 +709,14 @@ storyRewards: <br>它<strong>优先从左边</strong>输出,这样您就可以用它做一个<strong>溢流门</strong>了! reward_freeplay: title: 自由模式 - desc: 成功了!您解锁了<strong>自由模式</strong>!挑战升级!这意味着现在将<strong>随机</strong>生成图形! + desc: + 成功了!您解锁了<strong>自由模式</strong>!挑战升级!这意味着现在将<strong>随机</strong>生成图形! 从现在起,中心基地最为需要的是<strong>产量</strong>,我强烈建议您去制造一台能够自动交付所需图形的机器!<br><br> 基地会在<strong>电线层</strong>输出需要的图形,您需要去分析图形并在此基础上自动配置您的工厂。 reward_blueprints: title: 蓝图 - desc: 您现在可以<strong>复制粘贴</strong>您的工厂的一部分了!按住 CTRL键并拖动鼠标来选择一块区域,然后按C键复制。 + desc: + 您现在可以<strong>复制粘贴</strong>您的工厂的一部分了!按住 CTRL键并拖动鼠标来选择一块区域,然后按C键复制。 <br><br>粘贴并<strong>不是免费的</strong>,您需要制造<strong>蓝图图形</strong>来负担。蓝图图形是您刚刚交付的图形。 no_reward: title: 下一关 @@ -731,7 +744,8 @@ storyRewards: <br>注意:您注意到<strong>传送读取器</strong>和<strong>存储器</strong>输出的他们最后读取的物品了吗?试着在显示屏上展示一下!" reward_constant_signal: title: 恒定信号 - desc: 恭喜!您解锁了生成于电线层之上的<strong>恒定信号</strong>,把它连接到<strong>过滤器</strong>时非常有用。 + desc: + 恭喜!您解锁了生成于电线层之上的<strong>恒定信号</strong>,把它连接到<strong>过滤器</strong>时非常有用。 <br>比如,它能发出图形、颜色、开关值(1 / 0)的固定信号。 reward_logic_gates: title: 逻辑门 @@ -750,7 +764,8 @@ storyRewards: <strong>提示</strong>:可在设置中打开电线层教程!" reward_filter: title: 物品过滤器 - desc: 恭喜!您解锁了<strong>物品过滤器</strong>!它会根据在电线层上输入的信号决定是从上面还是右边输出物品。<br><br> + desc: + 恭喜!您解锁了<strong>物品过滤器</strong>!它会根据在电线层上输入的信号决定是从上面还是右边输出物品。<br><br> 您也可以输入开关值(1 / 0)信号来激活或者禁用它。 reward_demo_end: title: 试玩结束 diff --git a/translations/base-zh-CN.yaml b/translations/base-zh-CN.yaml index 70a53223..9e82890b 100644 --- a/translations/base-zh-CN.yaml +++ b/translations/base-zh-CN.yaml @@ -51,6 +51,8 @@ global: space: 空格键 loggingIn: 登录 loadingResources: 下载其他资源 (<percentage> %) + discount: -<percentage>% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: 试玩版 intro: |- @@ -84,7 +86,8 @@ mainMenu: savegameUnnamed: 存档未命名 puzzleMode: 谜题模式 back: 返回 - puzzleDlcText: 持续优化,追求极致效率。在限定空间内使用有限的设施来创造图形!《异形工厂》(Shapez)的首个 DLC + puzzleDlcText: + 持续优化,追求极致效率。在限定空间内使用有限的设施来创造图形!《异形工厂》(Shapez)的首个 DLC “谜题挑战者”将会给大家带来更烧脑、更自由的全新挑战! puzzleDlcWishlist: 添加愿望单! puzzleDlcViewNow: 查看 DLC @@ -95,6 +98,7 @@ mainMenu: logout: 登出 noActiveSavegames: No active savegames found - Click play to start a new game! playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + playFullVersionStandalone: You can now also play the full version in your Browser! dialogs: buttons: ok: 确认 @@ -158,7 +162,8 @@ dialogs: desc: 您还没有解锁蓝图功能!通过第 12 关的挑战后可解锁蓝图。 keybindingsIntroduction: title: 实用快捷键 - desc: 这个游戏有很多有用的快捷键设定。以下是其中的一些介绍,记得在<strong>按键设置</strong>中查看其他按键设定!<br><br> + desc: + 这个游戏有很多有用的快捷键设定。以下是其中的一些介绍,记得在<strong>按键设置</strong>中查看其他按键设定!<br><br> <code class='keybinding'>CTRL 键</code> + 拖动:选择区域以复制或删除。<br> <code class='keybinding'>SHIFT 键</code>: 按住以放置多个同一种设施。<br> <code class='keybinding'>ALT 键</code>:反向放置传送带。<br> @@ -257,11 +262,13 @@ dialogs: descWeb: “一个或多个资源载入失败,请确认您的网络连接正常并再次尝试。如果仍然载入失败, 请确认您已经关闭了所有浏览器插件(比如"广告屏蔽")。<br><br>或者,你也可以试玩 <demoOnSteamLinkText>。<br><br> 错误提示:” - descSteamDemo: “一个或多个资源载入失败,请重新启动游戏。 如果仍然存在问题,请重新安装游戏或者通过Steam验证游戏安装文件。 <br><br> + descSteamDemo: + “一个或多个资源载入失败,请重新启动游戏。 如果仍然存在问题,请重新安装游戏或者通过Steam验证游戏安装文件。 <br><br> 错误提示:” steamSsoError: title: 从完整版登出 - desc: 由于您的网络连接不稳定,或者您已在另一台设备上开始游戏。您已经从浏览器登出了完整版游戏。 <br><br> + desc: + 由于您的网络连接不稳定,或者您已在另一台设备上开始游戏。您已经从浏览器登出了完整版游戏。 <br><br> 请确认您没有在其他浏览器或电脑用同一Steam账号登录《异形工厂》(Shapez)。<br><br> 您可以从主界面再次登录。 steamSsoNoOwnership: title: 尚未获得完整版 @@ -351,11 +358,13 @@ ingame: hints: 1_1_extractor: 在<strong>圆形</strong>上放置一个<strong>开采器</strong>来获取圆形!<br><br>提示:<strong>按下鼠标左键</strong>选中<strong>开采器</strong> 1_2_conveyor: 用<strong>传送带</strong>将您的开采器连接到中心基地上!<br><br>提示:选中<strong>传送带</strong>后<strong>按下鼠标左键可拖动</strong>布置传送带! - 1_3_expand: 您可以放置更多的<strong>开采器</strong>和<strong>传送带</strong>来更有效率地完成关卡目标。<br><br> + 1_3_expand: + 您可以放置更多的<strong>开采器</strong>和<strong>传送带</strong>来更有效率地完成关卡目标。<br><br> 提示:按住 <strong>SHIFT</strong> 键可放置多个<strong>开采器</strong>,注意用 <strong>R</strong> 键可旋转<strong>开采器</strong>的出口方向,确保开采的图形可以顺利传送。 2_1_place_cutter: 现在放置一个<strong>切割器</strong>,这个设施可把<strong>圆形</strong>切成两半!<br><br>注意:无论如何放置,切割机总是<strong>从上到下</strong>切割。 - 2_2_place_trash: 使用切割机后产生的废弃图形会导致<strong>堵塞</strong>。<br><br>注意使用<strong>垃圾桶</strong>清除当前 + 2_2_place_trash: + 使用切割机后产生的废弃图形会导致<strong>堵塞</strong>。<br><br>注意使用<strong>垃圾桶</strong>清除当前 (!) 不需要的废物。 2_3_more_cutters: 干的好!现在放置 <strong>2 个以上的切割机</strong>来加快当前缓慢的过程!<br><br>提示:用<strong>快捷键 0 - 9 @@ -661,7 +670,8 @@ storyRewards: desc: 恭喜!您解锁了<strong>旋转机</strong>。它会顺时针将输入的<strong>图形旋转90度</strong>。 reward_painter: title: 上色 - desc: 恭喜!您解锁了<strong>上色器</strong>。开采一些颜色(就像您开采图形一样),将其在上色器中与图形结合来将图形上色! + desc: + 恭喜!您解锁了<strong>上色器</strong>。开采一些颜色(就像您开采图形一样),将其在上色器中与图形结合来将图形上色! <br>注意:如果您不幸患有色盲,可以在设置中启用<strong>色盲模式</strong> reward_mixer: title: 混合颜色 @@ -678,11 +688,13 @@ storyRewards: desc: 恭喜!您解锁了<strong>隧道</strong>。它可放置在<strong>传送带</strong>或<strong>设施</strong>下方以运送物品。 reward_rotater_ccw: title: 逆时针旋转 - desc: 恭喜!您解锁了<strong>旋转机</strong>的<strong>逆时针</strong>变体。它可以逆时针旋转<strong>图形</strong>。 + desc: + 恭喜!您解锁了<strong>旋转机</strong>的<strong>逆时针</strong>变体。它可以逆时针旋转<strong>图形</strong>。 <br>选择<strong>旋转机</strong>然后按 "T" 键来选取这个变体。 reward_miner_chainable: title: 链式开采器 - desc: 您已经解锁了<strong>链式开采器</strong>!它能<strong>转发资源</strong>给其他的开采器,这样您就能更有效率的开采各类资源了!<br><br> + desc: + 您已经解锁了<strong>链式开采器</strong>!它能<strong>转发资源</strong>给其他的开采器,这样您就能更有效率的开采各类资源了!<br><br> 注意:新的开采器已替换了工具栏里旧的开采器! reward_underground_belt_tier_2: title: 二级隧道 @@ -699,12 +711,14 @@ storyRewards: <br>它<strong>优先从左边</strong>输出,这样您就可以用它做一个<strong>溢流门</strong>了! reward_freeplay: title: 自由模式 - desc: 成功了!您解锁了<strong>自由模式</strong>!挑战升级!这意味着现在将<strong>随机</strong>生成图形! + desc: + 成功了!您解锁了<strong>自由模式</strong>!挑战升级!这意味着现在将<strong>随机</strong>生成图形! 从现在起,中心基地最为需要的是<strong>产量</strong>,强烈建议您去制造一台能够自动交付所需图形的机器!<br><br> 基地会在<strong>电线层</strong>输出需要的图形,您需要去分析图形并在此基础上自动配置您的工厂。 reward_blueprints: title: 蓝图 - desc: 您现在可以<strong>复制粘贴</strong>您的工厂的一部分了!按住 CTRL 键并拖动鼠标来选择一块区域,然后按 C 键复制。 + desc: + 您现在可以<strong>复制粘贴</strong>您的工厂的一部分了!按住 CTRL 键并拖动鼠标来选择一块区域,然后按 C 键复制。 <br><br>粘贴并<strong>不是免费的</strong>,您需要制造<strong>蓝图图形</strong>来负担。蓝图图形是您刚刚交付的图形。 no_reward: title: 下一关 @@ -732,7 +746,8 @@ storyRewards: <br>注意:您注意到<strong>传送读取器</strong>和<strong>存储器</strong>输出的他们最后读取的物品了吗?试着在显示屏上展示一下! reward_constant_signal: title: 恒定信号 - desc: 恭喜!您解锁了生成于电线层之上的<strong>恒定信号</strong>,把它连接到<strong>过滤器</strong>时非常有用。 + desc: + 恭喜!您解锁了生成于电线层之上的<strong>恒定信号</strong>,把它连接到<strong>过滤器</strong>时非常有用。 <br>比如,它能发出图形、颜色、开关值(1 / 0)的固定信号。 reward_logic_gates: title: 逻辑门 @@ -751,7 +766,8 @@ storyRewards: <strong>提示</strong>:可在设置中打开电线层教程! reward_filter: title: 物品过滤器 - desc: 恭喜!您解锁了<strong>物品过滤器</strong>!它会根据在电线层上输入的信号决定是从上面还是右边输出物品。<br><br> + desc: + 恭喜!您解锁了<strong>物品过滤器</strong>!它会根据在电线层上输入的信号决定是从上面还是右边输出物品。<br><br> 您也可以输入开关值(1 / 0)信号来激活或者禁用它。 reward_demo_end: title: 试玩结束 @@ -807,7 +823,8 @@ settings: light: 浅色 refreshRate: title: 模拟频率、刷新频率 - description: 在这里更改刷新频率,这样游戏可以正确地根据您的屏幕进行模拟。但是如果您的电脑性能不佳,提高刷新频率可能降低帧数。注意,60Hz + description: + 在这里更改刷新频率,这样游戏可以正确地根据您的屏幕进行模拟。但是如果您的电脑性能不佳,提高刷新频率可能降低帧数。注意,60Hz 以上的任何频率都会导致游戏卡顿! alwaysMultiplace: title: 多重放置 @@ -1144,7 +1161,8 @@ mods: noModSupport: 您需要在 Steam 平台获得完整版才可以安装游戏模组(Mods)。 togglingComingSoon: title: 即将开放 - description: 当前只能通过将游戏模组(Mods)文件复制到 mods 文件夹或从 mods 文件夹移除来启用或禁用游戏模组(Mods)。 + description: + 当前只能通过将游戏模组(Mods)文件复制到 mods 文件夹或从 mods 文件夹移除来启用或禁用游戏模组(Mods)。 但是,可以切换游戏模组(Mods)已经计划在之后的更新中实现! modWebsite: 模组网站 browserNoSupport: 由于浏览器功能限制,目前游戏模组(Mods)只能在Steam版本中安装进行。敬请理解! diff --git a/translations/base-zh-TW.yaml b/translations/base-zh-TW.yaml index c38bb54b..d47fdb79 100644 --- a/translations/base-zh-TW.yaml +++ b/translations/base-zh-TW.yaml @@ -49,6 +49,8 @@ global: space: 空白鍵 loggingIn: Logging in loadingResources: 下載其他資源 (<percentage> %) + discount: -<percentage>% + discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July demoBanners: title: 試玩版 intro: |- @@ -94,6 +96,7 @@ mainMenu: logout: Logout noActiveSavegames: No active savegames found - Click play to start a new game! playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser! + playFullVersionStandalone: You can now also play the full version in your Browser! dialogs: buttons: ok: 確認 @@ -157,13 +160,15 @@ dialogs: desc: 你還沒有解鎖藍圖功能!完成更多的關卡來解鎖藍圖。 keybindingsIntroduction: title: 實用按鍵 - desc: "這個遊戲有很多能幫助搭建工廠的使用按鍵。 以下是其中的一些,記得在<strong>按鍵設定</strong>中查看其他的! <br><br> + desc: + "這個遊戲有很多能幫助搭建工廠的使用按鍵。 以下是其中的一些,記得在<strong>按鍵設定</strong>中查看其他的! <br><br> <code class='keybinding'>CTRL</code> + 拖曳:選擇區域以複製或刪除。 <br> <code class='keybinding'>SHIFT</code>: 按住以放置多個。 <br> <code class='keybinding'>ALT</code>: 反向放置輸送帶。 <br>" createMarker: title: 建立標記 - desc: 給地圖標記取一個名字。你可以在名字中加入一個<strong>簡短代碼</strong>以加入圖形。(你可以在<link>這裡</link> + desc: + 給地圖標記取一個名字。你可以在名字中加入一個<strong>簡短代碼</strong>以加入圖形。(你可以在<link>這裡</link> 建立簡短代碼。) titleEdit: 修改標記 markerDemoLimit: @@ -371,15 +376,18 @@ ingame: 1_1_extractor: 在<strong>圓形礦脈</strong>上放一個<strong>開採機</strong>來採集圓形! 1_2_conveyor: 用<strong>輸送帶</strong>將你的開採機連接到基地上! <br><br>提示:用你的游標<strong>按下並拖曳</strong>輸送帶! - 1_3_expand: 這<strong>不是</strong>一個放置型遊戲!建造更多的開採機和輸送帶來更快地完成目標。 <br><br> + 1_3_expand: + 這<strong>不是</strong>一個放置型遊戲!建造更多的開採機和輸送帶來更快地完成目標。 <br><br> 提示:按住<strong>SHIFT</strong>鍵來放置多個開採機,用<strong>R</strong>鍵旋轉它們。 2_1_place_cutter: "現在放置一個<strong>切割機</strong>並利用它把圓圈切成兩半!<br><br> PS: 不論切割機的方向,它都會把圖形<strong>垂直地</strong>切成兩半。" 2_2_place_trash: 切割機可能會<strong>堵塞並停止運作</strong>!<br><br> 用<strong>垃圾桶</strong>把「目前」不需要的部分處理掉。 - 2_3_more_cutters: "做得好! 現在,再放<strong>2個切割機</strong>來加速這個緩慢的生產線!<br><br> PS: + 2_3_more_cutters: + "做得好! 現在,再放<strong>2個切割機</strong>來加速這個緩慢的生產線!<br><br> PS: 使用<strong>0-9快捷鍵</strong>可以更快選取建築 !" - 3_1_rectangles: "現在來開採一些方形吧!<strong>蓋4座開採機</strong>,把形狀收集到基地。<br><br> PS: + 3_1_rectangles: + "現在來開採一些方形吧!<strong>蓋4座開採機</strong>,把形狀收集到基地。<br><br> PS: 選擇輸送帶,按住<strong>SHIFT</strong>並拖曳滑鼠可以計畫輸送帶位置!" 21_1_place_quad_painter: 放置一個<strong>上色機(四向)</strong>並取得一些 <strong>圓形</strong>、<strong>白色</strong>和<strong>紅色</strong>! @@ -618,16 +626,19 @@ buildings: transistor: default: name: 電晶體 - description: 如果基極(側面)的輸入訊號為「真」,則把射極(底部)輸入的真假值複製到集極(頂部)的輸出。 + description: + 如果基極(側面)的輸入訊號為「真」,則把射極(底部)輸入的真假值複製到集極(頂部)的輸出。 (「真」訊號代表:形狀訊號、顏色訊號或布林值為1) mirrored: name: 電晶體 - description: 如果基極(側面)的輸入訊號為「真」,則把射極(底部)輸入的真假值複製到集極(頂部)的輸出。 + description: + 如果基極(側面)的輸入訊號為「真」,則把射極(底部)輸入的真假值複製到集極(頂部)的輸出。 (「真」訊號代表:形狀訊號、顏色訊號或布林值為1) filter: default: name: 物件分類器 - description: 它會依據電路層收到的訊號,從分類器底部輸入的物件如符合輸入信號的會輸出到頂部,不符合的會從右方(交叉標記)排出。 + description: + 它會依據電路層收到的訊號,從分類器底部輸入的物件如符合輸入信號的會輸出到頂部,不符合的會從右方(交叉標記)排出。 它也可以被布林值訊號控制。 display: default: @@ -680,7 +691,8 @@ buildings: storyRewards: reward_cutter_and_trash: title: 切割圖形 - desc: <strong>切割機</strong>已解鎖!不論切割機的方向,它都會把圖形<strong>垂直地</strong>切成兩半。<br><br> + desc: + <strong>切割機</strong>已解鎖!不論切割機的方向,它都會把圖形<strong>垂直地</strong>切成兩半。<br><br> 記得把不需要的部分處理掉,否則切割機會<strong>因為堵塞而停止運作</strong>。 為此我給你準備了<strong>垃圾桶</strong>,它會把所有放進去的物品銷毀掉。 reward_rotater: @@ -772,7 +784,8 @@ storyRewards: <strong>布林值</strong>(1或0)。 reward_logic_gates: title: 邏輯閘 - desc: <strong>邏輯閘</strong>已解鎖!你可能覺得無所謂,但其實邏輯閘其實超酷的!<br><br> 有了這些邏輯閘,你可以運算 AND, + desc: + <strong>邏輯閘</strong>已解鎖!你可能覺得無所謂,但其實邏輯閘其實超酷的!<br><br> 有了這些邏輯閘,你可以運算 AND, OR, XOR 與 NOT 邏輯。<br><br> 錦上添花,我再送你<strong>電晶體</strong>! reward_virtual_processing: title: 虛擬操作 diff --git a/yarn.lock b/yarn.lock index ccd506ef..258e8eea 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1102,18 +1102,6 @@ dependencies: "@types/node" ">= 8" -"@openreplay/tracker-fetch@^3.5.3": - version "3.5.3" - resolved "https://registry.yarnpkg.com/@openreplay/tracker-fetch/-/tracker-fetch-3.5.3.tgz#f4a8308cfffc83918e8d34716bae771cb442b41b" - integrity sha512-09vcR1H8178uDpaA2U4u1GvzAQD94ASmvrWM8dVXY0SmZdQHTTmNdkb4xijhkUY99gtJdB8qFgnIr+dP3FsSbg== - -"@openreplay/tracker@^3.5.12": - version "3.5.12" - resolved "https://registry.yarnpkg.com/@openreplay/tracker/-/tracker-3.5.12.tgz#141205bfefa42c767eaad1938cd206e3d551e171" - integrity sha512-R8s87HevJRzC/yujzswll+UyF0kybEax9UJr2eu7Y2nf1QhioD589HwDPlsXb1SxkMDd2yDQYfhbF0FXpCEfQA== - dependencies: - error-stack-parser "^2.0.6" - "@sindresorhus/is@^0.7.0": version "0.7.0" resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz" @@ -3348,13 +3336,6 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -error-stack-parser@^2.0.6: - version "2.1.4" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" - integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== - dependencies: - stackframe "^1.3.4" - es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: version "1.17.5" resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz" @@ -7819,11 +7800,6 @@ stable@^0.1.8: resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== -stackframe@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" - integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== - static-extend@^0.1.1: version "0.1.2" resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz"