diff --git a/levels/en_EN/bisect/bisect b/levels/en/bisect/bisect similarity index 100% rename from levels/en_EN/bisect/bisect rename to levels/en/bisect/bisect diff --git a/levels/en_EN/bisect/sequence b/levels/en/bisect/sequence similarity index 100% rename from levels/en_EN/bisect/sequence rename to levels/en/bisect/sequence diff --git a/levels/en_EN/branches/branch-create b/levels/en/branches/branch-create similarity index 100% rename from levels/en_EN/branches/branch-create rename to levels/en/branches/branch-create diff --git a/levels/en_EN/branches/branch-remove b/levels/en/branches/branch-remove similarity index 100% rename from levels/en_EN/branches/branch-remove rename to levels/en/branches/branch-remove diff --git a/levels/en_EN/branches/checkout-commit b/levels/en/branches/checkout-commit similarity index 100% rename from levels/en_EN/branches/checkout-commit rename to levels/en/branches/checkout-commit diff --git a/levels/en_EN/branches/fork b/levels/en/branches/fork similarity index 100% rename from levels/en_EN/branches/fork rename to levels/en/branches/fork diff --git a/levels/en_EN/branches/grow b/levels/en/branches/grow similarity index 100% rename from levels/en_EN/branches/grow rename to levels/en/branches/grow diff --git a/levels/en_EN/branches/reorder b/levels/en/branches/reorder similarity index 100% rename from levels/en_EN/branches/reorder rename to levels/en/branches/reorder diff --git a/levels/en_EN/branches/sequence b/levels/en/branches/sequence similarity index 100% rename from levels/en_EN/branches/sequence rename to levels/en/branches/sequence diff --git a/levels/en_EN/changing-the-past/rebase b/levels/en/changing-the-past/rebase similarity index 100% rename from levels/en_EN/changing-the-past/rebase rename to levels/en/changing-the-past/rebase diff --git a/levels/en_EN/changing-the-past/reorder b/levels/en/changing-the-past/reorder similarity index 100% rename from levels/en_EN/changing-the-past/reorder rename to levels/en/changing-the-past/reorder diff --git a/levels/en_EN/changing-the-past/sequence b/levels/en/changing-the-past/sequence similarity index 100% rename from levels/en_EN/changing-the-past/sequence rename to levels/en/changing-the-past/sequence diff --git a/levels/en_EN/files/files-add b/levels/en/files/files-add similarity index 100% rename from levels/en_EN/files/files-add rename to levels/en/files/files-add diff --git a/levels/en_EN/files/files-delete b/levels/en/files/files-delete similarity index 100% rename from levels/en_EN/files/files-delete rename to levels/en/files/files-delete diff --git a/levels/en_EN/files/sequence b/levels/en/files/sequence similarity index 100% rename from levels/en_EN/files/sequence rename to levels/en/files/sequence diff --git a/levels/en_EN/index/add b/levels/en/index/add similarity index 100% rename from levels/en_EN/index/add rename to levels/en/index/add diff --git a/levels/en_EN/index/change b/levels/en/index/change similarity index 100% rename from levels/en_EN/index/change rename to levels/en/index/change diff --git a/levels/en_EN/index/checkout b/levels/en/index/checkout similarity index 100% rename from levels/en_EN/index/checkout rename to levels/en/index/checkout diff --git a/levels/en_EN/index/compare b/levels/en/index/compare similarity index 100% rename from levels/en_EN/index/compare rename to levels/en/index/compare diff --git a/levels/en_EN/index/new b/levels/en/index/new similarity index 100% rename from levels/en_EN/index/new rename to levels/en/index/new diff --git a/levels/en_EN/index/reset b/levels/en/index/reset similarity index 100% rename from levels/en_EN/index/reset rename to levels/en/index/reset diff --git a/levels/en_EN/index/rm b/levels/en/index/rm similarity index 100% rename from levels/en_EN/index/rm rename to levels/en/index/rm diff --git a/levels/en_EN/index/sequence b/levels/en/index/sequence similarity index 100% rename from levels/en_EN/index/sequence rename to levels/en/index/sequence diff --git a/levels/en_EN/index/steps b/levels/en/index/steps similarity index 100% rename from levels/en_EN/index/steps rename to levels/en/index/steps diff --git a/levels/en_EN/intro/cli b/levels/en/intro/cli similarity index 100% rename from levels/en_EN/intro/cli rename to levels/en/intro/cli diff --git a/levels/en_EN/intro/commit b/levels/en/intro/commit similarity index 100% rename from levels/en_EN/intro/commit rename to levels/en/intro/commit diff --git a/levels/en_EN/intro/copies b/levels/en/intro/copies similarity index 100% rename from levels/en_EN/intro/copies rename to levels/en/intro/copies diff --git a/levels/en_EN/intro/init b/levels/en/intro/init similarity index 100% rename from levels/en_EN/intro/init rename to levels/en/intro/init diff --git a/levels/en_EN/intro/remote b/levels/en/intro/remote similarity index 100% rename from levels/en_EN/intro/remote rename to levels/en/intro/remote diff --git a/levels/en_EN/intro/risky b/levels/en/intro/risky similarity index 100% rename from levels/en_EN/intro/risky rename to levels/en/intro/risky diff --git a/levels/en_EN/intro/sequence b/levels/en/intro/sequence similarity index 100% rename from levels/en_EN/intro/sequence rename to levels/en/intro/sequence diff --git a/levels/en_EN/intro/who-are-you b/levels/en/intro/who-are-you similarity index 100% rename from levels/en_EN/intro/who-are-you rename to levels/en/intro/who-are-you diff --git a/levels/en_EN/low-level/basics b/levels/en/low-level/basics similarity index 100% rename from levels/en_EN/low-level/basics rename to levels/en/low-level/basics diff --git a/levels/en_EN/low-level/blob-create b/levels/en/low-level/blob-create similarity index 100% rename from levels/en_EN/low-level/blob-create rename to levels/en/low-level/blob-create diff --git a/levels/en_EN/low-level/blob-remove b/levels/en/low-level/blob-remove similarity index 100% rename from levels/en_EN/low-level/blob-remove rename to levels/en/low-level/blob-remove diff --git a/levels/en_EN/low-level/commit-create b/levels/en/low-level/commit-create similarity index 100% rename from levels/en_EN/low-level/commit-create rename to levels/en/low-level/commit-create diff --git a/levels/en_EN/low-level/commit-parents b/levels/en/low-level/commit-parents similarity index 100% rename from levels/en_EN/low-level/commit-parents rename to levels/en/low-level/commit-parents diff --git a/levels/en_EN/low-level/commit-rhombus b/levels/en/low-level/commit-rhombus similarity index 100% rename from levels/en_EN/low-level/commit-rhombus rename to levels/en/low-level/commit-rhombus diff --git a/levels/en_EN/low-level/index-add b/levels/en/low-level/index-add similarity index 100% rename from levels/en_EN/low-level/index-add rename to levels/en/low-level/index-add diff --git a/levels/en_EN/low-level/index-remove b/levels/en/low-level/index-remove similarity index 100% rename from levels/en_EN/low-level/index-remove rename to levels/en/low-level/index-remove diff --git a/levels/en_EN/low-level/index-update b/levels/en/low-level/index-update similarity index 100% rename from levels/en_EN/low-level/index-update rename to levels/en/low-level/index-update diff --git a/levels/en_EN/low-level/puzzle-apocalypse b/levels/en/low-level/puzzle-apocalypse similarity index 100% rename from levels/en_EN/low-level/puzzle-apocalypse rename to levels/en/low-level/puzzle-apocalypse diff --git a/levels/en_EN/low-level/puzzle-precious-blob b/levels/en/low-level/puzzle-precious-blob similarity index 100% rename from levels/en_EN/low-level/puzzle-precious-blob rename to levels/en/low-level/puzzle-precious-blob diff --git a/levels/en_EN/low-level/puzzle-trees-all-the-way-down b/levels/en/low-level/puzzle-trees-all-the-way-down similarity index 100% rename from levels/en_EN/low-level/puzzle-trees-all-the-way-down rename to levels/en/low-level/puzzle-trees-all-the-way-down diff --git a/levels/en_EN/low-level/ref-create b/levels/en/low-level/ref-create similarity index 100% rename from levels/en_EN/low-level/ref-create rename to levels/en/low-level/ref-create diff --git a/levels/en_EN/low-level/ref-move b/levels/en/low-level/ref-move similarity index 100% rename from levels/en_EN/low-level/ref-move rename to levels/en/low-level/ref-move diff --git a/levels/en_EN/low-level/ref-remove b/levels/en/low-level/ref-remove similarity index 100% rename from levels/en_EN/low-level/ref-remove rename to levels/en/low-level/ref-remove diff --git a/levels/en_EN/low-level/sequence b/levels/en/low-level/sequence similarity index 100% rename from levels/en_EN/low-level/sequence rename to levels/en/low-level/sequence diff --git a/levels/en_EN/low-level/symref-create b/levels/en/low-level/symref-create similarity index 100% rename from levels/en_EN/low-level/symref-create rename to levels/en/low-level/symref-create diff --git a/levels/en_EN/low-level/symref-no-deref b/levels/en/low-level/symref-no-deref similarity index 100% rename from levels/en_EN/low-level/symref-no-deref rename to levels/en/low-level/symref-no-deref diff --git a/levels/en_EN/low-level/tree-create b/levels/en/low-level/tree-create similarity index 100% rename from levels/en_EN/low-level/tree-create rename to levels/en/low-level/tree-create diff --git a/levels/en_EN/low-level/tree-nested b/levels/en/low-level/tree-nested similarity index 100% rename from levels/en_EN/low-level/tree-nested rename to levels/en/low-level/tree-nested diff --git a/levels/en_EN/low-level/tree-read b/levels/en/low-level/tree-read similarity index 100% rename from levels/en_EN/low-level/tree-read rename to levels/en/low-level/tree-read diff --git a/levels/en_EN/low-level/welcome b/levels/en/low-level/welcome similarity index 100% rename from levels/en_EN/low-level/welcome rename to levels/en/low-level/welcome diff --git a/levels/en_EN/merge/conflict b/levels/en/merge/conflict similarity index 100% rename from levels/en_EN/merge/conflict rename to levels/en/merge/conflict diff --git a/levels/en_EN/merge/merge b/levels/en/merge/merge similarity index 100% rename from levels/en_EN/merge/merge rename to levels/en/merge/merge diff --git a/levels/en_EN/merge/merge-abort b/levels/en/merge/merge-abort similarity index 100% rename from levels/en_EN/merge/merge-abort rename to levels/en/merge/merge-abort diff --git a/levels/en_EN/merge/sequence b/levels/en/merge/sequence similarity index 100% rename from levels/en_EN/merge/sequence rename to levels/en/merge/sequence diff --git a/levels/en_EN/remotes/friend b/levels/en/remotes/friend similarity index 100% rename from levels/en_EN/remotes/friend rename to levels/en/remotes/friend diff --git a/levels/en_EN/remotes/problems b/levels/en/remotes/problems similarity index 100% rename from levels/en_EN/remotes/problems rename to levels/en/remotes/problems diff --git a/levels/en_EN/remotes/sequence b/levels/en/remotes/sequence similarity index 100% rename from levels/en_EN/remotes/sequence rename to levels/en/remotes/sequence diff --git a/levels/en_EN/sandbox/empty b/levels/en/sandbox/empty similarity index 100% rename from levels/en_EN/sandbox/empty rename to levels/en/sandbox/empty diff --git a/levels/en_EN/sandbox/remote b/levels/en/sandbox/remote similarity index 100% rename from levels/en_EN/sandbox/remote rename to levels/en/sandbox/remote diff --git a/levels/en_EN/sandbox/sequence b/levels/en/sandbox/sequence similarity index 100% rename from levels/en_EN/sandbox/sequence rename to levels/en/sandbox/sequence diff --git a/levels/en_EN/sandbox/three-commits b/levels/en/sandbox/three-commits similarity index 100% rename from levels/en_EN/sandbox/three-commits rename to levels/en/sandbox/three-commits diff --git a/levels/en_EN/sequence b/levels/en/sequence similarity index 100% rename from levels/en_EN/sequence rename to levels/en/sequence diff --git a/levels/en_EN/shit-happens/bad-commit b/levels/en/shit-happens/bad-commit similarity index 100% rename from levels/en_EN/shit-happens/bad-commit rename to levels/en/shit-happens/bad-commit diff --git a/levels/en_EN/shit-happens/pushed-something-broken b/levels/en/shit-happens/pushed-something-broken similarity index 100% rename from levels/en_EN/shit-happens/pushed-something-broken rename to levels/en/shit-happens/pushed-something-broken diff --git a/levels/en_EN/shit-happens/reflog b/levels/en/shit-happens/reflog similarity index 100% rename from levels/en_EN/shit-happens/reflog rename to levels/en/shit-happens/reflog diff --git a/levels/en_EN/shit-happens/restore-a-file b/levels/en/shit-happens/restore-a-file similarity index 100% rename from levels/en_EN/shit-happens/restore-a-file rename to levels/en/shit-happens/restore-a-file diff --git a/levels/en_EN/shit-happens/restore-a-file-from-the-past b/levels/en/shit-happens/restore-a-file-from-the-past similarity index 100% rename from levels/en_EN/shit-happens/restore-a-file-from-the-past rename to levels/en/shit-happens/restore-a-file-from-the-past diff --git a/levels/en_EN/shit-happens/sequence b/levels/en/shit-happens/sequence similarity index 100% rename from levels/en_EN/shit-happens/sequence rename to levels/en/shit-happens/sequence diff --git a/levels/en_EN/stash/sequence b/levels/en/stash/sequence similarity index 100% rename from levels/en_EN/stash/sequence rename to levels/en/stash/sequence diff --git a/levels/en_EN/stash/stash b/levels/en/stash/stash similarity index 100% rename from levels/en_EN/stash/stash rename to levels/en/stash/stash diff --git a/levels/en_EN/stash/stash-branch b/levels/en/stash/stash-branch similarity index 100% rename from levels/en_EN/stash/stash-branch rename to levels/en/stash/stash-branch diff --git a/levels/en_EN/stash/stash-clear b/levels/en/stash/stash-clear similarity index 100% rename from levels/en_EN/stash/stash-clear rename to levels/en/stash/stash-clear diff --git a/levels/en_EN/stash/stash-merge b/levels/en/stash/stash-merge similarity index 100% rename from levels/en_EN/stash/stash-merge rename to levels/en/stash/stash-merge diff --git a/levels/en_EN/stash/stash-pop b/levels/en/stash/stash-pop similarity index 100% rename from levels/en_EN/stash/stash-pop rename to levels/en/stash/stash-pop diff --git a/levels/en_EN/tags/add-tag b/levels/en/tags/add-tag similarity index 100% rename from levels/en_EN/tags/add-tag rename to levels/en/tags/add-tag diff --git a/levels/en_EN/tags/add-tag-later b/levels/en/tags/add-tag-later similarity index 100% rename from levels/en_EN/tags/add-tag-later rename to levels/en/tags/add-tag-later diff --git a/levels/en_EN/tags/remote-tag b/levels/en/tags/remote-tag similarity index 100% rename from levels/en_EN/tags/remote-tag rename to levels/en/tags/remote-tag diff --git a/levels/en_EN/tags/remove-tag b/levels/en/tags/remove-tag similarity index 100% rename from levels/en_EN/tags/remove-tag rename to levels/en/tags/remove-tag diff --git a/levels/en_EN/tags/sequence b/levels/en/tags/sequence similarity index 100% rename from levels/en_EN/tags/sequence rename to levels/en/tags/sequence diff --git a/levels/en_EN/unused/checkout b/levels/en/unused/checkout similarity index 100% rename from levels/en_EN/unused/checkout rename to levels/en/unused/checkout diff --git a/levels/en_EN/unused/clone b/levels/en/unused/clone similarity index 100% rename from levels/en_EN/unused/clone rename to levels/en/unused/clone diff --git a/levels/en_EN/unused/commit b/levels/en/unused/commit similarity index 100% rename from levels/en_EN/unused/commit rename to levels/en/unused/commit diff --git a/levels/en_EN/unused/commit-a b/levels/en/unused/commit-a similarity index 100% rename from levels/en_EN/unused/commit-a rename to levels/en/unused/commit-a diff --git a/levels/en_EN/unused/fetch b/levels/en/unused/fetch similarity index 100% rename from levels/en_EN/unused/fetch rename to levels/en/unused/fetch diff --git a/levels/en_EN/unused/files-move b/levels/en/unused/files-move similarity index 100% rename from levels/en_EN/unused/files-move rename to levels/en/unused/files-move diff --git a/levels/en_EN/unused/index-mv b/levels/en/unused/index-mv similarity index 100% rename from levels/en_EN/unused/index-mv rename to levels/en/unused/index-mv diff --git a/levels/en_EN/unused/init b/levels/en/unused/init similarity index 100% rename from levels/en_EN/unused/init rename to levels/en/unused/init diff --git a/levels/en_EN/unused/pull-push b/levels/en/unused/pull-push similarity index 100% rename from levels/en_EN/unused/pull-push rename to levels/en/unused/pull-push diff --git a/levels/en_EN/unused/remotes-add b/levels/en/unused/remotes-add similarity index 100% rename from levels/en_EN/unused/remotes-add rename to levels/en/unused/remotes-add diff --git a/levels/en_EN/unused/remotes-delete b/levels/en/unused/remotes-delete similarity index 100% rename from levels/en_EN/unused/remotes-delete rename to levels/en/unused/remotes-delete diff --git a/levels/en_EN/unused/restore b/levels/en/unused/restore similarity index 100% rename from levels/en_EN/unused/restore rename to levels/en/unused/restore diff --git a/levels/en_EN/unused/split b/levels/en/unused/split similarity index 100% rename from levels/en_EN/unused/split rename to levels/en/unused/split diff --git a/levels/en_EN/unused/steps b/levels/en/unused/steps similarity index 100% rename from levels/en_EN/unused/steps rename to levels/en/unused/steps diff --git a/levels/en_EN/unused/who-are-you b/levels/en/unused/who-are-you similarity index 100% rename from levels/en_EN/unused/who-are-you rename to levels/en/unused/who-are-you diff --git a/levels/en_EN/workflows/gitignore b/levels/en/workflows/gitignore similarity index 100% rename from levels/en_EN/workflows/gitignore rename to levels/en/workflows/gitignore diff --git a/levels/en_EN/workflows/pr b/levels/en/workflows/pr similarity index 100% rename from levels/en_EN/workflows/pr rename to levels/en/workflows/pr diff --git a/levels/en_EN/workflows/sequence b/levels/en/workflows/sequence similarity index 100% rename from levels/en_EN/workflows/sequence rename to levels/en/workflows/sequence diff --git a/levels/it_IT/bisect/bisect b/levels/it/bisect/bisect similarity index 100% rename from levels/it_IT/bisect/bisect rename to levels/it/bisect/bisect diff --git a/levels/it_IT/bisect/sequence b/levels/it/bisect/sequence similarity index 100% rename from levels/it_IT/bisect/sequence rename to levels/it/bisect/sequence diff --git a/levels/it_IT/branches/branch-create b/levels/it/branches/branch-create similarity index 100% rename from levels/it_IT/branches/branch-create rename to levels/it/branches/branch-create diff --git a/levels/it_IT/branches/branch-remove b/levels/it/branches/branch-remove similarity index 100% rename from levels/it_IT/branches/branch-remove rename to levels/it/branches/branch-remove diff --git a/levels/it_IT/branches/checkout-commit b/levels/it/branches/checkout-commit similarity index 100% rename from levels/it_IT/branches/checkout-commit rename to levels/it/branches/checkout-commit diff --git a/levels/it_IT/branches/fork b/levels/it/branches/fork similarity index 100% rename from levels/it_IT/branches/fork rename to levels/it/branches/fork diff --git a/levels/it_IT/branches/grow b/levels/it/branches/grow similarity index 100% rename from levels/it_IT/branches/grow rename to levels/it/branches/grow diff --git a/levels/it_IT/branches/reorder b/levels/it/branches/reorder similarity index 100% rename from levels/it_IT/branches/reorder rename to levels/it/branches/reorder diff --git a/levels/it_IT/branches/sequence b/levels/it/branches/sequence similarity index 100% rename from levels/it_IT/branches/sequence rename to levels/it/branches/sequence diff --git a/levels/it_IT/changing-the-past/rebase b/levels/it/changing-the-past/rebase similarity index 100% rename from levels/it_IT/changing-the-past/rebase rename to levels/it/changing-the-past/rebase diff --git a/levels/it_IT/changing-the-past/reorder b/levels/it/changing-the-past/reorder similarity index 100% rename from levels/it_IT/changing-the-past/reorder rename to levels/it/changing-the-past/reorder diff --git a/levels/it_IT/changing-the-past/sequence b/levels/it/changing-the-past/sequence similarity index 100% rename from levels/it_IT/changing-the-past/sequence rename to levels/it/changing-the-past/sequence diff --git a/levels/it_IT/files/files-add b/levels/it/files/files-add similarity index 100% rename from levels/it_IT/files/files-add rename to levels/it/files/files-add diff --git a/levels/it_IT/files/files-delete b/levels/it/files/files-delete similarity index 100% rename from levels/it_IT/files/files-delete rename to levels/it/files/files-delete diff --git a/levels/it_IT/files/sequence b/levels/it/files/sequence similarity index 100% rename from levels/it_IT/files/sequence rename to levels/it/files/sequence diff --git a/levels/it_IT/index/#sequence# b/levels/it/index/#sequence# similarity index 100% rename from levels/it_IT/index/#sequence# rename to levels/it/index/#sequence# diff --git a/levels/it_IT/index/add b/levels/it/index/add similarity index 100% rename from levels/it_IT/index/add rename to levels/it/index/add diff --git a/levels/it_IT/index/change b/levels/it/index/change similarity index 100% rename from levels/it_IT/index/change rename to levels/it/index/change diff --git a/levels/it_IT/index/checkout b/levels/it/index/checkout similarity index 100% rename from levels/it_IT/index/checkout rename to levels/it/index/checkout diff --git a/levels/it_IT/index/compare b/levels/it/index/compare similarity index 100% rename from levels/it_IT/index/compare rename to levels/it/index/compare diff --git a/levels/it_IT/index/new b/levels/it/index/new similarity index 100% rename from levels/it_IT/index/new rename to levels/it/index/new diff --git a/levels/it_IT/index/reset b/levels/it/index/reset similarity index 100% rename from levels/it_IT/index/reset rename to levels/it/index/reset diff --git a/levels/it_IT/index/rm b/levels/it/index/rm similarity index 100% rename from levels/it_IT/index/rm rename to levels/it/index/rm diff --git a/levels/it_IT/index/sequence b/levels/it/index/sequence similarity index 100% rename from levels/it_IT/index/sequence rename to levels/it/index/sequence diff --git a/levels/it_IT/index/steps b/levels/it/index/steps similarity index 100% rename from levels/it_IT/index/steps rename to levels/it/index/steps diff --git a/levels/it_IT/intro/cli b/levels/it/intro/cli similarity index 100% rename from levels/it_IT/intro/cli rename to levels/it/intro/cli diff --git a/levels/it_IT/intro/commit b/levels/it/intro/commit similarity index 100% rename from levels/it_IT/intro/commit rename to levels/it/intro/commit diff --git a/levels/it_IT/intro/copies b/levels/it/intro/copies similarity index 100% rename from levels/it_IT/intro/copies rename to levels/it/intro/copies diff --git a/levels/it_IT/intro/init b/levels/it/intro/init similarity index 100% rename from levels/it_IT/intro/init rename to levels/it/intro/init diff --git a/levels/it_IT/intro/remote b/levels/it/intro/remote similarity index 100% rename from levels/it_IT/intro/remote rename to levels/it/intro/remote diff --git a/levels/it_IT/intro/risky b/levels/it/intro/risky similarity index 100% rename from levels/it_IT/intro/risky rename to levels/it/intro/risky diff --git a/levels/it_IT/intro/sequence b/levels/it/intro/sequence similarity index 100% rename from levels/it_IT/intro/sequence rename to levels/it/intro/sequence diff --git a/levels/it_IT/intro/who-are-you b/levels/it/intro/who-are-you similarity index 100% rename from levels/it_IT/intro/who-are-you rename to levels/it/intro/who-are-you diff --git a/levels/it_IT/low-level/basics b/levels/it/low-level/basics similarity index 100% rename from levels/it_IT/low-level/basics rename to levels/it/low-level/basics diff --git a/levels/it_IT/low-level/blob-create b/levels/it/low-level/blob-create similarity index 100% rename from levels/it_IT/low-level/blob-create rename to levels/it/low-level/blob-create diff --git a/levels/it_IT/low-level/blob-remove b/levels/it/low-level/blob-remove similarity index 100% rename from levels/it_IT/low-level/blob-remove rename to levels/it/low-level/blob-remove diff --git a/levels/it_IT/low-level/commit-create b/levels/it/low-level/commit-create similarity index 100% rename from levels/it_IT/low-level/commit-create rename to levels/it/low-level/commit-create diff --git a/levels/it_IT/low-level/commit-parents b/levels/it/low-level/commit-parents similarity index 100% rename from levels/it_IT/low-level/commit-parents rename to levels/it/low-level/commit-parents diff --git a/levels/it_IT/low-level/commit-rhombus b/levels/it/low-level/commit-rhombus similarity index 100% rename from levels/it_IT/low-level/commit-rhombus rename to levels/it/low-level/commit-rhombus diff --git a/levels/it_IT/low-level/index-add b/levels/it/low-level/index-add similarity index 100% rename from levels/it_IT/low-level/index-add rename to levels/it/low-level/index-add diff --git a/levels/it_IT/low-level/index-remove b/levels/it/low-level/index-remove similarity index 100% rename from levels/it_IT/low-level/index-remove rename to levels/it/low-level/index-remove diff --git a/levels/it_IT/low-level/index-update b/levels/it/low-level/index-update similarity index 100% rename from levels/it_IT/low-level/index-update rename to levels/it/low-level/index-update diff --git a/levels/it_IT/low-level/puzzle-apocalypse b/levels/it/low-level/puzzle-apocalypse similarity index 100% rename from levels/it_IT/low-level/puzzle-apocalypse rename to levels/it/low-level/puzzle-apocalypse diff --git a/levels/it_IT/low-level/puzzle-precious-blob b/levels/it/low-level/puzzle-precious-blob similarity index 100% rename from levels/it_IT/low-level/puzzle-precious-blob rename to levels/it/low-level/puzzle-precious-blob diff --git a/levels/it_IT/low-level/puzzle-trees-all-the-way-down b/levels/it/low-level/puzzle-trees-all-the-way-down similarity index 100% rename from levels/it_IT/low-level/puzzle-trees-all-the-way-down rename to levels/it/low-level/puzzle-trees-all-the-way-down diff --git a/levels/it_IT/low-level/ref-create b/levels/it/low-level/ref-create similarity index 100% rename from levels/it_IT/low-level/ref-create rename to levels/it/low-level/ref-create diff --git a/levels/it_IT/low-level/ref-move b/levels/it/low-level/ref-move similarity index 100% rename from levels/it_IT/low-level/ref-move rename to levels/it/low-level/ref-move diff --git a/levels/it_IT/low-level/ref-remove b/levels/it/low-level/ref-remove similarity index 100% rename from levels/it_IT/low-level/ref-remove rename to levels/it/low-level/ref-remove diff --git a/levels/it_IT/low-level/sequence b/levels/it/low-level/sequence similarity index 100% rename from levels/it_IT/low-level/sequence rename to levels/it/low-level/sequence diff --git a/levels/it_IT/low-level/symref-create b/levels/it/low-level/symref-create similarity index 100% rename from levels/it_IT/low-level/symref-create rename to levels/it/low-level/symref-create diff --git a/levels/it_IT/low-level/symref-no-deref b/levels/it/low-level/symref-no-deref similarity index 100% rename from levels/it_IT/low-level/symref-no-deref rename to levels/it/low-level/symref-no-deref diff --git a/levels/it_IT/low-level/tree-create b/levels/it/low-level/tree-create similarity index 100% rename from levels/it_IT/low-level/tree-create rename to levels/it/low-level/tree-create diff --git a/levels/it_IT/low-level/tree-nested b/levels/it/low-level/tree-nested similarity index 100% rename from levels/it_IT/low-level/tree-nested rename to levels/it/low-level/tree-nested diff --git a/levels/it_IT/low-level/tree-read b/levels/it/low-level/tree-read similarity index 100% rename from levels/it_IT/low-level/tree-read rename to levels/it/low-level/tree-read diff --git a/levels/it_IT/low-level/welcome b/levels/it/low-level/welcome similarity index 100% rename from levels/it_IT/low-level/welcome rename to levels/it/low-level/welcome diff --git a/levels/it_IT/merge/conflict b/levels/it/merge/conflict similarity index 100% rename from levels/it_IT/merge/conflict rename to levels/it/merge/conflict diff --git a/levels/it_IT/merge/merge b/levels/it/merge/merge similarity index 100% rename from levels/it_IT/merge/merge rename to levels/it/merge/merge diff --git a/levels/it_IT/merge/merge-abort b/levels/it/merge/merge-abort similarity index 100% rename from levels/it_IT/merge/merge-abort rename to levels/it/merge/merge-abort diff --git a/levels/it_IT/merge/sequence b/levels/it/merge/sequence similarity index 100% rename from levels/it_IT/merge/sequence rename to levels/it/merge/sequence diff --git a/levels/it_IT/remotes/friend b/levels/it/remotes/friend similarity index 100% rename from levels/it_IT/remotes/friend rename to levels/it/remotes/friend diff --git a/levels/it_IT/remotes/problems b/levels/it/remotes/problems similarity index 100% rename from levels/it_IT/remotes/problems rename to levels/it/remotes/problems diff --git a/levels/it_IT/remotes/sequence b/levels/it/remotes/sequence similarity index 100% rename from levels/it_IT/remotes/sequence rename to levels/it/remotes/sequence diff --git a/levels/it_IT/sandbox/empty b/levels/it/sandbox/empty similarity index 100% rename from levels/it_IT/sandbox/empty rename to levels/it/sandbox/empty diff --git a/levels/it_IT/sandbox/remote b/levels/it/sandbox/remote similarity index 100% rename from levels/it_IT/sandbox/remote rename to levels/it/sandbox/remote diff --git a/levels/it_IT/sandbox/sequence b/levels/it/sandbox/sequence similarity index 100% rename from levels/it_IT/sandbox/sequence rename to levels/it/sandbox/sequence diff --git a/levels/it_IT/sandbox/three-commits b/levels/it/sandbox/three-commits similarity index 100% rename from levels/it_IT/sandbox/three-commits rename to levels/it/sandbox/three-commits diff --git a/levels/it_IT/sequence b/levels/it/sequence similarity index 100% rename from levels/it_IT/sequence rename to levels/it/sequence diff --git a/levels/it_IT/shit-happens/bad-commit b/levels/it/shit-happens/bad-commit similarity index 100% rename from levels/it_IT/shit-happens/bad-commit rename to levels/it/shit-happens/bad-commit diff --git a/levels/it_IT/shit-happens/pushed-something-broken b/levels/it/shit-happens/pushed-something-broken similarity index 100% rename from levels/it_IT/shit-happens/pushed-something-broken rename to levels/it/shit-happens/pushed-something-broken diff --git a/levels/it_IT/shit-happens/reflog b/levels/it/shit-happens/reflog similarity index 100% rename from levels/it_IT/shit-happens/reflog rename to levels/it/shit-happens/reflog diff --git a/levels/it_IT/shit-happens/restore-a-file b/levels/it/shit-happens/restore-a-file similarity index 100% rename from levels/it_IT/shit-happens/restore-a-file rename to levels/it/shit-happens/restore-a-file diff --git a/levels/it_IT/shit-happens/restore-a-file-from-the-past b/levels/it/shit-happens/restore-a-file-from-the-past similarity index 100% rename from levels/it_IT/shit-happens/restore-a-file-from-the-past rename to levels/it/shit-happens/restore-a-file-from-the-past diff --git a/levels/it_IT/shit-happens/sequence b/levels/it/shit-happens/sequence similarity index 100% rename from levels/it_IT/shit-happens/sequence rename to levels/it/shit-happens/sequence diff --git a/levels/it_IT/stash/sequence b/levels/it/stash/sequence similarity index 100% rename from levels/it_IT/stash/sequence rename to levels/it/stash/sequence diff --git a/levels/it_IT/stash/stash b/levels/it/stash/stash similarity index 100% rename from levels/it_IT/stash/stash rename to levels/it/stash/stash diff --git a/levels/it_IT/stash/stash-branch b/levels/it/stash/stash-branch similarity index 100% rename from levels/it_IT/stash/stash-branch rename to levels/it/stash/stash-branch diff --git a/levels/it_IT/stash/stash-clear b/levels/it/stash/stash-clear similarity index 100% rename from levels/it_IT/stash/stash-clear rename to levels/it/stash/stash-clear diff --git a/levels/it_IT/stash/stash-merge b/levels/it/stash/stash-merge similarity index 100% rename from levels/it_IT/stash/stash-merge rename to levels/it/stash/stash-merge diff --git a/levels/it_IT/stash/stash-pop b/levels/it/stash/stash-pop similarity index 100% rename from levels/it_IT/stash/stash-pop rename to levels/it/stash/stash-pop diff --git a/levels/it_IT/tags/add-tag b/levels/it/tags/add-tag similarity index 100% rename from levels/it_IT/tags/add-tag rename to levels/it/tags/add-tag diff --git a/levels/it_IT/tags/add-tag-later b/levels/it/tags/add-tag-later similarity index 100% rename from levels/it_IT/tags/add-tag-later rename to levels/it/tags/add-tag-later diff --git a/levels/it_IT/tags/remote-tag b/levels/it/tags/remote-tag similarity index 100% rename from levels/it_IT/tags/remote-tag rename to levels/it/tags/remote-tag diff --git a/levels/it_IT/tags/remove-tag b/levels/it/tags/remove-tag similarity index 100% rename from levels/it_IT/tags/remove-tag rename to levels/it/tags/remove-tag diff --git a/levels/it_IT/tags/sequence b/levels/it/tags/sequence similarity index 100% rename from levels/it_IT/tags/sequence rename to levels/it/tags/sequence diff --git a/levels/it_IT/unused/checkout b/levels/it/unused/checkout similarity index 100% rename from levels/it_IT/unused/checkout rename to levels/it/unused/checkout diff --git a/levels/it_IT/unused/clone b/levels/it/unused/clone similarity index 100% rename from levels/it_IT/unused/clone rename to levels/it/unused/clone diff --git a/levels/it_IT/unused/commit b/levels/it/unused/commit similarity index 100% rename from levels/it_IT/unused/commit rename to levels/it/unused/commit diff --git a/levels/it_IT/unused/commit-a b/levels/it/unused/commit-a similarity index 100% rename from levels/it_IT/unused/commit-a rename to levels/it/unused/commit-a diff --git a/levels/it_IT/unused/fetch b/levels/it/unused/fetch similarity index 100% rename from levels/it_IT/unused/fetch rename to levels/it/unused/fetch diff --git a/levels/it_IT/unused/files-move b/levels/it/unused/files-move similarity index 100% rename from levels/it_IT/unused/files-move rename to levels/it/unused/files-move diff --git a/levels/it_IT/unused/index-mv b/levels/it/unused/index-mv similarity index 100% rename from levels/it_IT/unused/index-mv rename to levels/it/unused/index-mv diff --git a/levels/it_IT/unused/init b/levels/it/unused/init similarity index 100% rename from levels/it_IT/unused/init rename to levels/it/unused/init diff --git a/levels/it_IT/unused/pull-push b/levels/it/unused/pull-push similarity index 100% rename from levels/it_IT/unused/pull-push rename to levels/it/unused/pull-push diff --git a/levels/it_IT/unused/remotes-add b/levels/it/unused/remotes-add similarity index 100% rename from levels/it_IT/unused/remotes-add rename to levels/it/unused/remotes-add diff --git a/levels/it_IT/unused/remotes-delete b/levels/it/unused/remotes-delete similarity index 100% rename from levels/it_IT/unused/remotes-delete rename to levels/it/unused/remotes-delete diff --git a/levels/it_IT/unused/restore b/levels/it/unused/restore similarity index 100% rename from levels/it_IT/unused/restore rename to levels/it/unused/restore diff --git a/levels/it_IT/unused/split b/levels/it/unused/split similarity index 100% rename from levels/it_IT/unused/split rename to levels/it/unused/split diff --git a/levels/it_IT/unused/steps b/levels/it/unused/steps similarity index 100% rename from levels/it_IT/unused/steps rename to levels/it/unused/steps diff --git a/levels/it_IT/unused/who-are-you b/levels/it/unused/who-are-you similarity index 100% rename from levels/it_IT/unused/who-are-you rename to levels/it/unused/who-are-you diff --git a/levels/it_IT/workflows/gitignore b/levels/it/workflows/gitignore similarity index 100% rename from levels/it_IT/workflows/gitignore rename to levels/it/workflows/gitignore diff --git a/levels/it_IT/workflows/pr b/levels/it/workflows/pr similarity index 100% rename from levels/it_IT/workflows/pr rename to levels/it/workflows/pr diff --git a/levels/it_IT/workflows/sequence b/levels/it/workflows/sequence similarity index 100% rename from levels/it_IT/workflows/sequence rename to levels/it/workflows/sequence diff --git a/project.godot b/project.godot index 808e7e6..84b9e7c 100644 --- a/project.godot +++ b/project.godot @@ -81,26 +81,26 @@ window/stretch/aspect="keep" left={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777231,"unicode":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777231,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } right={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777233,"unicode":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777233,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } up={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777232,"unicode":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777232,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } down={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777234,"unicode":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":83,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777234,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":83,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } click={ @@ -125,27 +125,27 @@ right_click={ } tab_complete={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777218,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777218,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } save={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":true,"meta":false,"command":true,"pressed":false,"scancode":83,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":true,"meta":false,"command":true,"pressed":false,"scancode":83,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } delete_word={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":true,"meta":false,"command":true,"pressed":false,"scancode":87,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":true,"meta":false,"command":true,"pressed":false,"scancode":87,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } clear={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":true,"meta":false,"command":true,"pressed":false,"scancode":76,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":true,"meta":false,"command":true,"pressed":false,"scancode":76,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } mute={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":77,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":77,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } diff --git a/scenes/Language.gd b/scenes/Language.gd new file mode 100644 index 0000000..35d96b3 --- /dev/null +++ b/scenes/Language.gd @@ -0,0 +1,34 @@ +extends MenuButton + + +func _ready(): + make_popup_menu() # generate items for popup menu + get_popup().connect("id_pressed", self, "_on_item_pressed") + check_current_items() + + +func make_popup_menu(): + for lang in game.languages.values(): + get_popup().add_check_item(lang) + + +func check_current_items(): + var items_count = get_popup().get_item_count() + for i in range(items_count): + var idx = get_popup().get_item_index(i) + if get_popup().get_item_text(idx) == game.languages[game.os_lang]: + get_popup().set_item_checked(idx, true) + else: + get_popup().set_item_checked(idx, false) + + +func _on_item_pressed(id): + #get_popup().set_item_checked(id, true) + var lang = get_popup().get_item_text(id) + for key in game.languages.keys(): + var value = tr(game.languages[key]) + if value == lang: + game.os_lang = key + + check_current_items() + TranslationServer.set_locale(game.os_lang) diff --git a/scenes/chapter.gd b/scenes/chapter.gd index 1980e63..17f75b5 100644 --- a/scenes/chapter.gd +++ b/scenes/chapter.gd @@ -13,7 +13,7 @@ func load(path): var level_names = [] var dir = Directory.new() - dir.open("res://levels/" + game.lang + "/%s" % slug) + dir.open("res://levels/" + game.os_lang + "/%s" % slug) dir.list_dir_begin() while true: @@ -28,7 +28,7 @@ func load(path): var final_level_sequence = [] - var level_sequence = Array(helpers.read_file("res://levels/" + game.lang + "/%s/sequence" % slug, "").split("\n")) + var level_sequence = Array(helpers.read_file("res://levels/" + game.os_lang + "/%s/sequence" % slug, "").split("\n")) for level in level_sequence: if level == "": @@ -42,7 +42,7 @@ func load(path): for l in final_level_sequence: var level = Level.new() - level.load("res://levels/" + game.lang + "/%s/%s" % [slug, l]) + level.load("res://levels/" + game.os_lang + "/%s/%s" % [slug, l]) levels.push_back(level) func _to_string(): diff --git a/scenes/game.gd b/scenes/game.gd index 66695b3..f9b73c3 100644 --- a/scenes/game.gd +++ b/scenes/game.gd @@ -1,7 +1,7 @@ extends Node -var langs = {0: "en_EN", 1: "it_IT"} # Localizations allowed -var lang = OS.get_locale() # Variable for game localization +var languages = {"en": tr("ENGLISH"), "it": tr("ITALIAN")} # Localizations allowed +var os_lang = OS.get_locale_language() # Variable for game localization var tmp_prefix = OS.get_user_data_dir() + "/tmp/" var global_shell @@ -21,10 +21,10 @@ var state = {} var mutex func _ready(): - # Check if present localization language - if not langs.values().has(lang): - lang = langs[0] - + # Check if language traslation exist otherwise use the default language + if not languages.keys().has(os_lang): + os_lang = "en" + mutex = Mutex.new() load_state() diff --git a/scenes/levels.gd b/scenes/levels.gd index 5a3d9f9..3065f76 100644 --- a/scenes/levels.gd +++ b/scenes/levels.gd @@ -3,14 +3,14 @@ extends Node var chapters func _ready(): - var lang = game.lang + var lang = game.os_lang reload() func reload(): chapters = [] var dir = Directory.new() - dir.open("res://levels/" + game.lang) + dir.open("res://levels/" + game.os_lang) dir.list_dir_begin() var chapter_names = [] @@ -27,7 +27,7 @@ func reload(): var final_chapter_sequence = [] - var chapter_sequence = Array(helpers.read_file("res://levels/" + game.lang + "/sequence", "").split("\n")) + var chapter_sequence = Array(helpers.read_file("res://levels/" + game.os_lang + "/sequence", "").split("\n")) for chapter in chapter_sequence: if chapter == "": @@ -41,5 +41,5 @@ func reload(): for c in final_chapter_sequence: var chapter = Chapter.new() - chapter.load("res://levels/" + game.lang + "/%s" % c) + chapter.load("res://levels/" + game.os_lang + "/%s" % c) chapters.push_back(chapter) diff --git a/scenes/title.gd b/scenes/title.gd index 6fdbebb..285d24e 100644 --- a/scenes/title.gd +++ b/scenes/title.gd @@ -1,14 +1,14 @@ extends Control -onready var popup = $VBoxContainer/Language +#onready var popup = $VBoxContainer/Language func _ready(): - check_correct_lang_item() + #check_correct_lang_item() if !OS.has_feature("standalone") and !game.skipped_title: game.skipped_title = true get_tree().change_scene("res://scenes/level_select.tscn") - make_popup_items() + #make_popup_items() func quit(): get_tree().quit() @@ -28,36 +28,36 @@ func sandbox(): # Check the apropriate locale -func check_correct_lang_item(): - for i in game.langs.keys(): - if game.lang == game.langs[i]: - popup.get_popup().set_item_checked(i, true) +#func check_correct_lang_item(): +# for i in game.langs.keys(): +# if game.lang == game.langs[i]: +# popup.get_popup().set_item_checked(i, true) # Set all items to unchecked -func uncheck_all_item(): - for i in game.langs.keys(): - popup.get_popup().set_item_checked(i, false) +#func uncheck_all_item(): +# for i in game.langs.keys(): +# popup.get_popup().set_item_checked(i, false) # Create popup items width allowed locales -func make_popup_items(): - for i in game.langs.keys(): - popup.get_popup().add_radio_check_item(game.langs[i], i) - - uncheck_all_item() - - check_correct_lang_item() - - popup.get_popup().connect("id_pressed", self, "_on_item_pressed") +#func make_popup_items(): +# for i in game.langs.keys(): +# popup.get_popup().add_radio_check_item(game.langs[i], i) +# +# uncheck_all_item() +# +# check_correct_lang_item() +# +# popup.get_popup().connect("id_pressed", self, "_on_item_pressed") # Change the translations and localizations of the cards and strings -func _on_item_pressed(id): - uncheck_all_item() +#func _on_item_pressed(id): +# uncheck_all_item() - popup.get_popup().set_item_checked(id, true) - game.lang = popup.get_popup().get_item_text(id) +# popup.get_popup().set_item_checked(id, true) +# game.lang = popup.get_popup().get_item_text(id) - TranslationServer.set_locale(game.lang) +# TranslationServer.set_locale(game.os_lang) diff --git a/scenes/title.tscn b/scenes/title.tscn index d233369..e2333d3 100644 --- a/scenes/title.tscn +++ b/scenes/title.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=5 format=2] +[gd_scene load_steps=6 format=2] [ext_resource path="res://styles/theme.tres" type="Theme" id=1] [ext_resource path="res://images/oh-my-git.png" type="Texture" id=2] [ext_resource path="res://scenes/title.gd" type="Script" id=3] +[ext_resource path="res://scenes/Language.gd" type="Script" id=4] [ext_resource path="res://fonts/default.tres" type="DynamicFont" id=5] [node name="Title" type="Control"] @@ -19,8 +20,8 @@ margin_left = 790.778 margin_top = 594.135 margin_right = 1131.78 margin_bottom = 650.135 -custom_fonts/font = ExtResource( 5 ) custom_colors/font_color = Color( 0.533333, 0.392157, 0.392157, 1 ) +custom_fonts/font = ExtResource( 5 ) text = "by bleeptrack & blinry" align = 1 __meta__ = { @@ -32,8 +33,8 @@ margin_left = 709.713 margin_top = 621.416 margin_right = 1209.71 margin_bottom = 677.416 -custom_fonts/font = ExtResource( 5 ) custom_colors/font_color = Color( 0.533333, 0.392157, 0.392157, 1 ) +custom_fonts/font = ExtResource( 5 ) text = "Original score by winniehell" align = 1 __meta__ = { @@ -72,6 +73,7 @@ margin_right = 351.0 margin_bottom = 171.0 text = "LANGUAGE" flat = false +script = ExtResource( 4 ) [node name="Sprite" type="Sprite" parent="."] diff --git a/styles/theme.tres b/styles/theme.tres index 35315aa..a56c333 100644 --- a/styles/theme.tres +++ b/styles/theme.tres @@ -193,7 +193,7 @@ Button/colors/font_color_disabled = Color( 0.9, 0.9, 0.9, 0.2 ) Button/colors/font_color_hover = Color( 0.94, 0.94, 0.94, 1 ) Button/colors/font_color_pressed = Color( 1, 1, 1, 1 ) Button/constants/hseparation = 2 -Button/fonts/font = null +Button/fonts/font = ExtResource( 1 ) Button/styles/disabled = SubResource( 1 ) Button/styles/focus = SubResource( 2 ) Button/styles/hover = SubResource( 3 ) @@ -206,7 +206,7 @@ CheckBox/colors/font_color_hover_pressed = Color( 1, 1, 1, 1 ) CheckBox/colors/font_color_pressed = Color( 1, 1, 1, 1 ) CheckBox/constants/check_vadjust = 0 CheckBox/constants/hseparation = 4 -CheckBox/fonts/font = null +CheckBox/fonts/font = ExtResource( 1 ) CheckBox/icons/checked = null CheckBox/icons/radio_checked = null CheckBox/icons/radio_unchecked = null @@ -238,7 +238,7 @@ PopupMenu/colors/font_color_disabled = Color( 0.4, 0.4, 0.4, 0.8 ) PopupMenu/colors/font_color_hover = Color( 0.88, 0.88, 0.88, 1 ) PopupMenu/constants/hseparation = 4 PopupMenu/constants/vseparation = 4 -PopupMenu/fonts/font = null +PopupMenu/fonts/font = ExtResource( 1 ) PopupMenu/icons/checked = null PopupMenu/icons/radio_checked = null PopupMenu/icons/radio_unchecked = null @@ -261,11 +261,11 @@ RichTextLabel/constants/shadow_offset_x = 1 RichTextLabel/constants/shadow_offset_y = 1 RichTextLabel/constants/table_hseparation = 3 RichTextLabel/constants/table_vseparation = 3 -RichTextLabel/fonts/bold_font = null -RichTextLabel/fonts/bold_italics_font = null -RichTextLabel/fonts/italics_font = null +RichTextLabel/fonts/bold_font = ExtResource( 1 ) +RichTextLabel/fonts/bold_italics_font = ExtResource( 1 ) +RichTextLabel/fonts/italics_font = ExtResource( 1 ) RichTextLabel/fonts/mono_font = ExtResource( 2 ) -RichTextLabel/fonts/normal_font = null +RichTextLabel/fonts/normal_font = ExtResource( 1 ) RichTextLabel/styles/focus = null RichTextLabel/styles/normal = null TextEdit/colors/background_color = Color( 0, 0, 0, 0 ) @@ -322,8 +322,8 @@ Tree/constants/item_margin = 0 Tree/constants/scroll_border = 4 Tree/constants/scroll_speed = 12 Tree/constants/vseparation = 4 -Tree/fonts/font = null -Tree/fonts/title_button_font = null +Tree/fonts/font = ExtResource( 1 ) +Tree/fonts/title_button_font = ExtResource( 1 ) Tree/icons/arrow = null Tree/icons/arrow_collapsed = null Tree/icons/checked = null