diff --git a/src/html/index.html b/src/html/index.html index ab32169c..f209659e 100644 --- a/src/html/index.html +++ b/src/html/index.html @@ -1,7 +1,7 @@ - shapez Demo - Factory Automation Game + 图形工厂 diff --git a/src/html/index.standalone.html b/src/html/index.standalone.html index 9209c2fc..bd8ec1da 100644 --- a/src/html/index.standalone.html +++ b/src/html/index.standalone.html @@ -1,7 +1,7 @@ - shapez + 图形工厂 diff --git a/src/js/core/utils.js b/src/js/core/utils.js index 9e2126b1..56b962b2 100644 --- a/src/js/core/utils.js +++ b/src/js/core/utils.js @@ -247,6 +247,16 @@ export function formatBigNumber(num, separator = T.global.decimalSeparator) { if (num < 1000) { return sign + "" + num; } else { + if (G_WEGAME_VERSION) { + if (num < 1000000) { + if (num < 100000) { + return sign + String(num).replace(".0", "").replace(".", separator); + } else { + return sign + Math.round(num / 10000.0) + T.global.suffix.thousands; + } + } + } + let leadingDigits = num; let suffix = ""; for (let suffixIndex = 0; suffixIndex < bigNumberSuffixTranslationKeys.length; ++suffixIndex) { diff --git a/src/js/platform/browser/storage.js b/src/js/platform/browser/storage.js index ac0fa4ca..d4cc3d6f 100644 --- a/src/js/platform/browser/storage.js +++ b/src/js/platform/browser/storage.js @@ -33,9 +33,9 @@ export class StorageImplBrowser extends StorageInterface { window.localStorage.setItem("storage_availability_test", "1"); window.localStorage.removeItem("storage_availability_test"); } catch (e) { - alert( - "It seems we don't have permission to write to local storage! Please update your browsers settings or use a different browser!" - ); + // alert( + // "It seems we don't have permission to write to local storage! Please update your browsers settings or use a different browser!" + // ); reject(LOCAL_STORAGE_NO_WRITE_PERMISSION); return; } diff --git a/src/js/states/main_menu.js b/src/js/states/main_menu.js index 1987d0a2..bbf3d383 100644 --- a/src/js/states/main_menu.js +++ b/src/js/states/main_menu.js @@ -263,7 +263,6 @@ export class MainMenuState extends GameState { 适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。 -
` : ` @@ -382,7 +381,7 @@ export class MainMenuState extends GameState { closeLoader(); this.dialogs.showWarning( T.dialogs.importSavegameError.title, - T.dialogs.importSavegameError.text + "

" + err + T.dialogs.importSavegameError.text ); return; } @@ -402,7 +401,7 @@ export class MainMenuState extends GameState { closeLoader(); this.dialogs.showWarning( T.dialogs.importSavegameError.title, - T.dialogs.importSavegameError.text + ":

" + err + T.dialogs.importSavegameError.text ); } ); @@ -410,7 +409,7 @@ export class MainMenuState extends GameState { reader.addEventListener("error", error => { this.dialogs.showWarning( T.dialogs.importSavegameError.title, - T.dialogs.importSavegameError.text + ":

" + error + T.dialogs.importSavegameError.text ); }); reader.readAsText(file, "utf-8"); @@ -433,10 +432,7 @@ export class MainMenuState extends GameState { this.dialogs.initializeToElement(dialogsElement); if (payload.loadError) { - this.dialogs.showWarning( - T.dialogs.gameLoadFailure.title, - T.dialogs.gameLoadFailure.text + "

" + payload.loadError - ); + this.dialogs.showWarning(T.dialogs.gameLoadFailure.title, T.dialogs.gameLoadFailure.text); } if (G_IS_DEV && globalConfig.debug.testPuzzleMode) { @@ -788,10 +784,7 @@ export class MainMenuState extends GameState { }) .catch(err => { - this.dialogs.showWarning( - T.dialogs.gameLoadFailure.title, - T.dialogs.gameLoadFailure.text + "

" + err - ); + this.dialogs.showWarning(T.dialogs.gameLoadFailure.title, T.dialogs.gameLoadFailure.text); }); }); } @@ -868,7 +861,7 @@ export class MainMenuState extends GameState { err => { this.dialogs.showWarning( T.dialogs.savegameDeletionError.title, - T.dialogs.savegameDeletionError.text + "

" + err + T.dialogs.savegameDeletionError.text ); } ); diff --git a/translations/base-zh-CN-ISBN.yaml b/translations/base-zh-CN-ISBN.yaml index c2c94617..161760c5 100644 --- a/translations/base-zh-CN-ISBN.yaml +++ b/translations/base-zh-CN-ISBN.yaml @@ -1,11 +1,10 @@ steamPage: - shortText: “唯一能限制您的,只有您的想象力!” 《异形工厂》(Shapez.io) - 是一款在无限拓展的地图上,通过建造各类工厂设施,来自动化生产与组合出愈加复杂图形的游戏。 - discordLinkShort: 官方 Discord 服务器 + shortText: “唯一能限制您的,只有您的想象力!” 《图形工厂》 是一款在无限拓展的地图上,通过建造各类工厂设施,来自动化生产与组合出愈加复杂图形的游戏。 + discordLinkShort: 官方讨论区 intro: |- “奇形怪状,放飞想象!” “自动生产,尽情创造!” - 《异形工厂》(Shapez.io)是一款能让您尽情发挥创造力,充分享受思维乐趣的IO游戏。 + 《图形工厂》是一款能让您尽情发挥创造力,充分享受思维乐趣的益智游戏。 游戏很轻松,只需建造工厂,布好设施,无需操作即能自动创造出各种各样的几何图形。 挑战很烧脑,随着等级提升,需要创造的图形将会越来越复杂,同时您还需要在无限扩展的地图中持续扩建优化您的工厂。 以为这就是全部了吗? 不!图形的生产需求将会指数性增长,持续的扩大规模和熵增带来的无序,将会是令人头痛的问题! @@ -13,8 +12,8 @@ steamPage: 然后,还有吗? 当然,唯有思维,方能无限。 欢迎免费体验试玩版:“让您的想象力插上翅膀!” - 和最聪明的玩家一起挑战,请访问 Steam 游戏商城购买《异形工厂》(Shapez.io)的完整版, - what_others_say: 来看看玩家们对《异形工厂》(Shapez.io)的评价 + 和最聪明的玩家一起挑战,请购买《图形工厂》的完整版, + what_others_say: 来看看玩家们对《图形工厂》的评价 nothernlion_comment: 非常棒的有游戏,我的游戏过程充满乐趣,不觉时间飞逝。 notch_comment: 哦,天哪!我真得该去睡了!但我想我刚刚搞定如何在游戏里面制造一台电脑出来。 steam_review_comment: 这是一个不知不觉偷走你时间,但你并不会想要追回的游戏。非常烧脑的挑战,让我这样的完美主义者停不下来,总是希望可以再高效一些。 @@ -24,7 +23,7 @@ global: thousandsDivider: "," decimalSeparator: . suffix: - thousands: 千 + thousands: 万 millions: 百万 billions: 亿万 trillions: 兆 @@ -67,7 +66,7 @@ mainMenu: changelog: 更新日志 importSavegame: 读取存档 openSourceHint: 本游戏已开源! - discordLink: 官方Discord服务器 + discordLink: 官方讨论区 helpTranslate: 帮助我们翻译! browserWarning: 很抱歉, 本游戏在当前浏览器上可能运行缓慢! 使用 谷歌浏览器 或者购买完整版以得到更好的体验。 savegameLevel: 第关 @@ -75,13 +74,13 @@ mainMenu: continue: 继续游戏 newGame: 新游戏 madeBy: 作者: - subreddit: Reddit + subreddit: 讨论区 savegameUnnamed: 存档未命名 puzzleMode: 谜题模式 back: 返回 puzzleDlcText: 新增谜题模式将带给您更多的游戏乐趣! puzzleDlcWishlist: 添加心愿单! - puzzleDlcViewNow: View Dlc + puzzleDlcViewNow: 查看资料片! mods: title: Active Mods warningPuzzleDLC: Playing the Puzzle DLC is not possible with mods. Please @@ -99,7 +98,7 @@ dialogs: later: 以后 restart: 重新开始 reset: 重置 - getStandalone: 获取完整版 + getStandalone: 获取完整版! deleteGame: 我没疯!我知道我在做什么! viewUpdate: 查看更新 showUpgrades: 显示设施升级 @@ -109,19 +108,19 @@ dialogs: playOffline: 离线游戏 importSavegameError: title: 读取错误 - text: 未能读取您的存档: + text: 未能读取您的存档! importSavegameSuccess: title: 读取成功 - text: 存档被成功读取 + text: 存档被成功读取! gameLoadFailure: title: 存档损坏 - text: 未能读取您的存档: + text: 未能读取您的存档! confirmSavegameDelete: title: 确认删除 text: 您确定要删除这个游戏吗?

'' 等级

该操作无法回退! savegameDeletionError: title: 删除失败 - text: 未能删除您的存档 + text: 未能删除您的存档! restartRequired: title: 需要重启游戏 text: 您需要重启游戏以应用变更的设置。 @@ -179,24 +178,24 @@ dialogs: editSignal: title: 设置信号 descItems: "选择一个预定义的项目:" - descShortKey: ... 或者输入图形的 短代码 (您可以 点击这里 生成短代码) + descShortKey: ... 或者输入图形的 短代码 (您可以 点击这里 生成短代码!) renameSavegame: title: 重命名游戏存档 desc: 您可以在此重命名游戏存档。 tutorialVideoAvailable: title: 教程 - desc: 这个关卡有视频攻略! 您想查看这个视频攻略? + desc: 这个关卡有视频攻略! 您想查看这个视频攻略吗? tutorialVideoAvailableForeignLanguage: title: 教程 - desc: 这个关卡有英语版本的视频攻略! 您想查看这个视频攻略吗?? + desc: 这个关卡有英语版本的视频攻略! 您想查看这个视频攻略吗? editConstantProducer: title: 设置项目 puzzleLoadFailed: title: 谜题载入失败 - desc: 谜题未能载入: + desc: 谜题未能载入! submitPuzzle: title: 提交谜题 - descName: 为您的谜题命名: + descName: 为您的谜题命名! descIcon: 请输入唯一的短代码,它将作为您的谜题图标显示(您可以在这里生成,或者从以下随机推荐的图形中选择一个): placeholderName: 谜题标题 puzzleResizeBadBuildings: @@ -204,16 +203,16 @@ dialogs: desc: 由于某些设施将会超出区域范围,因此您无法将区域变得更小。 puzzleLoadError: title: 谜题出错! - desc: 谜题未能载入: + desc: 谜题未能载入! offlineMode: title: 离线模式 desc: 无法访问服务器,所以游戏以离线模式进行。请确认您的互联网访问正常。 puzzleDownloadError: title: 下载出错! - desc: 无法下载谜题: + desc: 无法下载谜题! puzzleSubmitError: title: 提交出错! - desc: 无法提交谜题: + desc: 无法提交谜题! puzzleSubmitOk: title: 谜题成功发布! desc: 恭喜!您的谜题已经成功发布,其他玩家已经可以玩到。您可以在“我的谜题”中找到自己已发布的谜题。 @@ -237,7 +236,7 @@ dialogs: desc: 此谜已被标记! puzzleReportError: title: 上报失败 - desc: 无法处理您的上报: + desc: 无法处理您的上报! puzzleLoadShortKey: title: 输入短代码 desc: 输入谜题的短代码并载入。 @@ -358,7 +357,9 @@ ingame: interactiveTutorial: title: 新手教程 hints: - 1_1_extractor: 在圆形上放置一个开采器来获取圆形!

提示:按下鼠标左键选中开采器 + 1_1_extractor: + 亲爱的玩家,欢迎来到《图形工厂》!在这里你可以通过创造各种图形设施与传送带模拟流水线生产,尽情发挥创造力,创办属于自己的工厂!

+ 在圆形上放置一个开采器来获取圆形!

提示:按下鼠标左键选中开采器 1_2_conveyor: 用传送带将您的开采器连接到中心基地上!

提示:选中传送带按下鼠标左键可拖动布置传送带! 1_3_expand: 您可以放置更多的开采器传送带来更有效率地完成关卡目标。

@@ -400,7 +401,7 @@ ingame: watermark: title: 试玩版 desc: 点击这里了解完整版内容 - get_on_steam: 在Steam商城购买 + get_on_steam: 购买完整版! standaloneAdvantages: no_thanks: 不需要,谢谢 points: @@ -452,7 +453,7 @@ ingame: - 6.谜题发布后,所有设施都将被拆除,除了常量生成器目标接收器。然后,等着其他玩家对您创造的谜题发起挑战吧! puzzleCompletion: title: 谜题挑战成功! - titleLike: 喜欢此谜题的话,请为它点赞: + titleLike: 喜欢此谜题的话,请为它点赞。 titleRating: 您觉得此谜题难度如何? titleRatingDesc: 您的评分将帮助作者在未来创作出更好的谜题! continueBtn: 继续游戏 @@ -542,16 +543,16 @@ buildings: deliver: 交付 toUnlock: 解锁 levelShortcut: 关卡 - endOfDemo: 试玩版结束 + endOfDemo: 试玩版结束! wire: default: name: 电线 description: 可用来传输信号,信号可以是物品,颜色或者开关值(0或1)。 - 不同颜色的电线不会互相连接 + 不同颜色的电线不会互相连接。 second: name: 电线 description: 可用来传输信号,信号可以是物品,颜色或者开关值(0或1)。 - 不同颜色的电线不会互相连接 + 不同颜色的电线不会互相连接。 balancer: default: name: 平衡器 @@ -640,7 +641,7 @@ buildings: description: 模拟将右侧图形叠在左侧图形上。 painter: name: 模拟上色器 - description: 模拟使用右侧输入的颜色给底部输入的图形上色 + description: 模拟使用右侧输入的颜色给底部输入的图形上色。 item_producer: default: name: 物品生成器 @@ -769,7 +770,7 @@ storyRewards: 您也可以输入开关值(1 / 0)信号来激活或者禁用它。 reward_demo_end: title: 试玩结束 - desc: 恭喜!您已经通关了试玩版本!
更多挑战,请至Steam商城购买完整版!谢谢支持! + desc: 恭喜!您已经通关了试玩版本!
更多挑战,请购买完整版!谢谢支持! settings: title: 设置 categories: @@ -870,10 +871,10 @@ settings: description: 每一类设施都会记住各自上一次的旋转方向。如果您经常在不同设施类型之间切换,这个设置会让游戏操控更加便捷。 soundVolume: title: 音效音量 - description: 设置音效的音量 + description: 设置音效的音量。 musicVolume: title: 音乐音量 - description: 设置音乐的音量 + description: 设置音乐的音量。 lowQualityMapResources: title: 低质量地图资源 description: 放大时简化地图上资源的渲染以提高性能。开启甚至会让画面看起来更干净,低配置电脑玩家建议开启! @@ -947,7 +948,7 @@ keybindings: painter: 上色器 trash: 垃圾桶 rotateWhilePlacing: 顺时针旋转 - rotateInverseModifier: "修饰键: 改为逆时针旋转" + rotateInverseModifier: "修饰键: 改为逆时针旋转。" cycleBuildingVariants: 切换所选择设施变体 confirmMassDelete: 确认批量删除 cycleBuildings: 切换所选择设施 @@ -962,7 +963,7 @@ keybindings: exportScreenshot: 导出截图 mapMoveFaster: 快速移动 lockBeltDirection: 启用传送带规划 - switchDirectionLockSide: 规划器:换边 + switchDirectionLockSide: 规划器:换边。 pipette: 吸取器 menuClose: 关闭菜单 switchLayers: 切换层 @@ -981,7 +982,7 @@ keybindings: analyzer: 图形分析器 comparator: 比较器 item_producer: 物品生产器 (沙盒模式) - copyWireValue: 电线:复制指定电线上的值 + copyWireValue: 电线:复制指定电线上的值。 rotateToUp: 向上旋转 rotateToDown: 向下旋转 rotateToRight: 向右旋转 @@ -990,20 +991,14 @@ keybindings: goal_acceptor: 目标接收器 block: 方块 massSelectClear: 清除传送带 - showShapeTooltip: 显示图形输出提示 + showShapeTooltip: 显示图形输出提示。 about: title: 关于游戏 - body: >- - 本游戏由 Tobias - Springer(我)开发,并且已经开源。

- - 如果您想参与开发,请查看 shapez.io on github

- - 这个游戏的开发获得了 Discord 社区内热情玩家的巨大支持。诚挚邀请您加入我们的 Discord 服务器

- - 本游戏的音乐由 Peppsen 制作——他是个很棒的伙伴。

- - 最后,我想感谢我最好的朋友 Niklas ——如果没有他的《异星工厂》(factorio)带给我的体验和启发,《异形工厂》(shapez.io)将不会存在。 + body: |- + 本游戏由托比亚斯开发,并且已经开源。

+ 这个游戏的开发获得了热情玩家的巨大支持。非常感谢!

+ 本游戏的音乐由佩普森制作——他是个很棒的伙伴。

+ 最后,我想感谢我最好的朋友尼可拉斯——如果没有他的《异星工厂》带给我的体验和启发,《图形工厂》将不会存在。 changelog: title: 版本日志 demo: @@ -1067,7 +1062,7 @@ tips: - 这个游戏有很多设置可以提高游戏效率,请一定要了解一下! - 中心基地有个指向它所在方向的小指南指针! - 想清理传送带,可剪切那块区域然后将其在相同位置粘贴。 - - 按F4显示FPS。 + - 按F4显示帧数。 - 按两次F4显示您鼠标和镜头所在的块。 - 您可以点击被固定在屏幕左侧的图形来解除固定。 - 您可以点击被固定在屏幕左侧的图形来解除固定。 @@ -1081,7 +1076,7 @@ puzzleMenu: validatingPuzzle: 验证谜题 submittingPuzzle: 提交谜题 noPuzzles: 暂无满足此部分条件的谜题。 - dlcHint: 如已购买DLC,请在您的Steam库中右键点击异形工厂,然后选择属性-DLC。 + dlcHint: 如已购买资料片,请在您的游戏库中右键点击图形工厂,然后选择属性-资料片。 categories: levels: 关卡 new: 最新 @@ -1127,7 +1122,7 @@ puzzleMenu: autoComplete: 您的谜题已自动完成!请确认您的常量生成器没有直接向您的目标接收器进行传送。 backendErrors: ratelimit: 您的操作太频繁了。请稍等。 - invalid-api-key: 与后台通信失败,请尝试更新或重新启动游戏(无效的Api密钥)。 + invalid-api-key: 与后台通信失败,请尝试更新或重新启动游戏(无效的密钥)。 unauthorized: 与后台通信失败,请尝试更新或重新启动游戏(未经授权)。 bad-token: 与后台通信失败,请尝试更新或重新启动游戏(令牌错误)。 bad-id: 谜题标识符无效。 @@ -1145,7 +1140,7 @@ backendErrors: bad-payload: 此请求包含无效数据。 bad-building-placement: 您的谜题包含放置错误的设施。 timeout: 请求超时。 - too-many-likes-already: 您的谜题已经得到了许多玩家的赞赏。如果您仍然希望删除它,请联系support@shapez.io! + too-many-likes-already: 您的谜题已经得到了许多玩家的赞赏。如果您仍然希望删除它,请联系客服! no-permission: 您没有执行此操作的权限。 mods: title: Mods