diff --git a/i18next.config.ts b/i18next.config.ts new file mode 100644 index 00000000..db1674a1 --- /dev/null +++ b/i18next.config.ts @@ -0,0 +1,31 @@ +import { defineConfig } from 'i18next-cli'; +import { type Plugin, ExtractedKey } from "i18next-cli"; +import { readFile } from "node:fs/promises"; + +const HTMLPlugin: Plugin = { + name: "html-plugin", + async onEnd(keys: Map) { + const content = await readFile("src/index.html", "utf-8"); + const matches = content.matchAll(/data-(?:text|tip)="([^"]+)"/g); + for (const match of matches) { + const key = match[1]; + keys.set(key, {key, defaultValue: key}); + } + } +}; + +export default defineConfig({ + locales: [ + "en", + "fr" + ], + extract: { + input: "src/**/*.{js,ts}", + output: "public/locales/{{language}}/{{namespace}}.json", + defaultNS: "lang", + keySeparator: false + }, + plugins: [ + HTMLPlugin + ] +}); diff --git a/package-lock.json b/package-lock.json index 3396b8f5..eb99779e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,8 @@ "alea": "^1.0.1", "d3": "^7.9.0", "delaunator": "^5.0.1", + "i18next": "^25.8.17", + "i18next-http-backend": "^3.0.2", "polylabel": "^2.0.1" }, "devDependencies": { @@ -23,6 +25,7 @@ "@types/polylabel": "^1.1.3", "@vitest/browser": "^4.0.18", "@vitest/browser-playwright": "^4.0.18", + "i18next-cli": "^1.49.6", "playwright": "^1.57.0", "typescript": "^5.9.3", "vite": "^7.3.1", @@ -32,6 +35,15 @@ "node": ">=24.0.0" } }, + "node_modules/@babel/runtime": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@biomejs/biome": { "version": "2.3.13", "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.3.13.tgz", @@ -195,6 +207,23 @@ "node": ">=14.21.3" } }, + "node_modules/@croct/json": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@croct/json/-/json-2.1.0.tgz", + "integrity": "sha512-UrWfjNQVlBxN+OVcFwHmkjARMW55MBN04E9KfGac8ac8z1QnFVuiOOFtMWXCk3UwsyRqhsNaFoYLZC+xxqsVjQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@croct/json5-parser": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@croct/json5-parser/-/json5-parser-0.2.2.tgz", + "integrity": "sha512-0NJMLrbeLbQ0eCVj3UoH/kG2QckUgOASfwmfDTjyW1xAYPyTNJXcWVT/dssJdTJd0pRchW+qF0VFWQHcxs1OVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@croct/json": "^2.1.0" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", @@ -637,6 +666,367 @@ "node": ">=18" } }, + "node_modules/@inquirer/ansi": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-2.0.3.tgz", + "integrity": "sha512-g44zhR3NIKVs0zUesa4iMzExmZpLUdTLRMCStqX3GE5NT6VkPcxQGJ+uC8tDgBUC/vB1rUhUd55cOf++4NZcmw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + } + }, + "node_modules/@inquirer/checkbox": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-5.1.0.tgz", + "integrity": "sha512-/HjF1LN0a1h4/OFsbGKHNDtWICFU/dqXCdym719HFTyJo9IG7Otr+ziGWc9S0iQuohRZllh+WprSgd5UW5Fw0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^2.0.3", + "@inquirer/core": "^11.1.5", + "@inquirer/figures": "^2.0.3", + "@inquirer/type": "^4.0.3" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/confirm": { + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.0.8.tgz", + "integrity": "sha512-Di6dgmiZ9xCSUxWUReWTqDtbhXCuG2MQm2xmgSAIruzQzBqNf49b8E07/vbCYY506kDe8BiwJbegXweG8M1klw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.1.5", + "@inquirer/type": "^4.0.3" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core": { + "version": "11.1.5", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-11.1.5.tgz", + "integrity": "sha512-QQPAX+lka8GyLcZ7u7Nb1h6q72iZ/oy0blilC3IB2nSt1Qqxp7akt94Jqhi/DzARuN3Eo9QwJRvtl4tmVe4T5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^2.0.3", + "@inquirer/figures": "^2.0.3", + "@inquirer/type": "^4.0.3", + "cli-width": "^4.1.0", + "fast-wrap-ansi": "^0.2.0", + "mute-stream": "^3.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/editor": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-5.0.8.tgz", + "integrity": "sha512-sLcpbb9B3XqUEGrj1N66KwhDhEckzZ4nI/W6SvLXyBX8Wic3LDLENlWRvkOGpCPoserabe+MxQkpiMoI8irvyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.1.5", + "@inquirer/external-editor": "^2.0.3", + "@inquirer/type": "^4.0.3" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/expand": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-5.0.8.tgz", + "integrity": "sha512-QieW3F1prNw3j+hxO7/NKkG1pk3oz7pOB6+5Upwu3OIwADfPX0oZVppsqlL+Vl/uBHHDSOBY0BirLctLnXwGGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.1.5", + "@inquirer/type": "^4.0.3" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/external-editor": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-2.0.3.tgz", + "integrity": "sha512-LgyI7Agbda74/cL5MvA88iDpvdXI2KuMBCGRkbCl2Dg1vzHeOgs+s0SDcXV7b+WZJrv2+ERpWSM65Fpi9VfY3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "chardet": "^2.1.1", + "iconv-lite": "^0.7.2" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/external-editor/node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/@inquirer/figures": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-2.0.3.tgz", + "integrity": "sha512-y09iGt3JKoOCBQ3w4YrSJdokcD8ciSlMIWsD+auPu+OZpfxLuyz+gICAQ6GCBOmJJt4KEQGHuZSVff2jiNOy7g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + } + }, + "node_modules/@inquirer/input": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.0.8.tgz", + "integrity": "sha512-p0IJslw0AmedLEkOU+yrEX3Aj2RTpQq7ZOf8nc1DIhjzaxRWrrgeuE5Kyh39fVRgtcACaMXx/9WNo8+GjgBOfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.1.5", + "@inquirer/type": "^4.0.3" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/number": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-4.0.8.tgz", + "integrity": "sha512-uGLiQah9A0F9UIvJBX52m0CnqtLaym0WpT9V4YZrjZ+YRDKZdwwoEPz06N6w8ChE2lrnsdyhY9sL+Y690Kh9gQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.1.5", + "@inquirer/type": "^4.0.3" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/password": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-5.0.8.tgz", + "integrity": "sha512-zt1sF4lYLdvPqvmvHdmjOzuUUjuCQ897pdUCO8RbXMUDKXJTTyOQgtn23le+jwcb+MpHl3VAFvzIdxRAf6aPlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^2.0.3", + "@inquirer/core": "^11.1.5", + "@inquirer/type": "^4.0.3" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/prompts": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-8.3.0.tgz", + "integrity": "sha512-JAj66kjdH/F1+B7LCigjARbwstt3SNUOSzMdjpsvwJmzunK88gJeXmcm95L9nw1KynvFVuY4SzXh/3Y0lvtgSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/checkbox": "^5.1.0", + "@inquirer/confirm": "^6.0.8", + "@inquirer/editor": "^5.0.8", + "@inquirer/expand": "^5.0.8", + "@inquirer/input": "^5.0.8", + "@inquirer/number": "^4.0.8", + "@inquirer/password": "^5.0.8", + "@inquirer/rawlist": "^5.2.4", + "@inquirer/search": "^4.1.4", + "@inquirer/select": "^5.1.0" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/rawlist": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-5.2.4.tgz", + "integrity": "sha512-fTuJ5Cq9W286isLxwj6GGyfTjx1Zdk4qppVEPexFuA6yioCCXS4V1zfKroQqw7QdbDPN73xs2DiIAlo55+kBqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.1.5", + "@inquirer/type": "^4.0.3" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/search": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-4.1.4.tgz", + "integrity": "sha512-9yPTxq7LPmYjrGn3DRuaPuPbmC6u3fiWcsE9ggfLcdgO/ICHYgxq7mEy1yJ39brVvgXhtOtvDVjDh9slJxE4LQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.1.5", + "@inquirer/figures": "^2.0.3", + "@inquirer/type": "^4.0.3" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.1.0.tgz", + "integrity": "sha512-OyYbKnchS1u+zRe14LpYrN8S0wH1vD0p2yKISvSsJdH2TpI87fh4eZdWnpdbrGauCRWDph3NwxRmM4Pcm/hx1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^2.0.3", + "@inquirer/core": "^11.1.5", + "@inquirer/figures": "^2.0.3", + "@inquirer/type": "^4.0.3" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/type": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-4.0.3.tgz", + "integrity": "sha512-cKZN7qcXOpj1h+1eTTcGDVLaBIHNMT1Rz9JqJP5MnEJ0JhgVWllx7H/tahUp5YEK1qaByH2Itb8wLG/iScD5kw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", @@ -1017,6 +1407,26 @@ "win32" ] }, + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@standard-schema/spec": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", @@ -1024,6 +1434,232 @@ "dev": true, "license": "MIT" }, + "node_modules/@swc/core": { + "version": "1.15.18", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.18.tgz", + "integrity": "sha512-z87aF9GphWp//fnkRsqvtY+inMVPgYW3zSlXH1kJFvRT5H/wiAn+G32qW5l3oEk63KSF1x3Ov0BfHCObAmT8RA==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.25" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.15.18", + "@swc/core-darwin-x64": "1.15.18", + "@swc/core-linux-arm-gnueabihf": "1.15.18", + "@swc/core-linux-arm64-gnu": "1.15.18", + "@swc/core-linux-arm64-musl": "1.15.18", + "@swc/core-linux-x64-gnu": "1.15.18", + "@swc/core-linux-x64-musl": "1.15.18", + "@swc/core-win32-arm64-msvc": "1.15.18", + "@swc/core-win32-ia32-msvc": "1.15.18", + "@swc/core-win32-x64-msvc": "1.15.18" + }, + "peerDependencies": { + "@swc/helpers": ">=0.5.17" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.15.18", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.18.tgz", + "integrity": "sha512-+mIv7uBuSaywN3C9LNuWaX1jJJ3SKfiJuE6Lr3bd+/1Iv8oMU7oLBjYMluX1UrEPzwN2qCdY6Io0yVicABoCwQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.15.18", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.18.tgz", + "integrity": "sha512-wZle0eaQhnzxWX5V/2kEOI6Z9vl/lTFEC6V4EWcn+5pDjhemCpQv9e/TDJ0GIoiClX8EDWRvuZwh+Z3dhL1NAg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.15.18", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.18.tgz", + "integrity": "sha512-ao61HGXVqrJFHAcPtF4/DegmwEkVCo4HApnotLU8ognfmU8x589z7+tcf3hU+qBiU1WOXV5fQX6W9Nzs6hjxDw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.15.18", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.18.tgz", + "integrity": "sha512-3xnctOBLIq3kj8PxOCgPrGjBLP/kNOddr6f5gukYt/1IZxsITQaU9TDyjeX6jG+FiCIHjCuWuffsyQDL5Ew1bg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.15.18", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.18.tgz", + "integrity": "sha512-0a+Lix+FSSHBSBOA0XznCcHo5/1nA6oLLjcnocvzXeqtdjnPb+SvchItHI+lfeiuj1sClYPDvPMLSLyXFaiIKw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.15.18", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.18.tgz", + "integrity": "sha512-wG9J8vReUlpaHz4KOD/5UE1AUgirimU4UFT9oZmupUDEofxJKYb1mTA/DrMj0s78bkBiNI+7Fo2EgPuvOJfuAA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.15.18", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.18.tgz", + "integrity": "sha512-4nwbVvCphKzicwNWRmvD5iBaZj8JYsRGa4xOxJmOyHlMDpsvvJ2OR2cODlvWyGFH6BYL1MfIAK3qph3hp0Az6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.15.18", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.18.tgz", + "integrity": "sha512-zk0RYO+LjiBCat2RTMHzAWaMky0cra9loH4oRrLKLLNuL+jarxKLFDA8xTZWEkCPLjUTwlRN7d28eDLLMgtUcQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.15.18", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.18.tgz", + "integrity": "sha512-yVuTrZ0RccD5+PEkpcLOBAuPbYBXS6rslENvIXfvJGXSdX5QGi1ehC4BjAMl5FkKLiam4kJECUI0l7Hq7T1vwg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.15.18", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.18.tgz", + "integrity": "sha512-7NRmE4hmUQNCbYU3Hn9Tz57mK9Qq4c97ZS+YlamlK6qG9Fb5g/BB3gPDe0iLlJkns/sYv2VWSkm8c3NmbEGjbg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@swc/types": { + "version": "0.1.25", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.25.tgz", + "integrity": "sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3" + } + }, "node_modules/@types/chai": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", @@ -1353,7 +1989,6 @@ "integrity": "sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~7.16.0" } @@ -1394,7 +2029,6 @@ "integrity": "sha512-gfajTHVCiwpxRj1qh0Sh/5bbGLG4F/ZH/V9xvFVoFddpITfMta9YGow0W6ZpTTORv2vdJuz9TnrNSmjKvpOf4g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vitest/browser": "4.0.18", "@vitest/mocker": "4.0.18", @@ -1530,6 +2164,19 @@ "integrity": "sha512-QU+wv+ziDXaMxRdsQg/aH7sVfWdhKps5YP97IIwFkHCsbDZA3k87JXoZ5/iuemf4ntytzIWeScrRpae8+lDrXA==", "license": "MIT" }, + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, "node_modules/assertion-error": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", @@ -1540,6 +2187,29 @@ "node": ">=12" } }, + "node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/chai": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", @@ -1550,6 +2220,81 @@ "node": ">=18" } }, + "node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chardet": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", + "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^5.0.0" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-spinners": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-3.4.0.tgz", + "integrity": "sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, "node_modules/commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", @@ -1559,6 +2304,30 @@ "node": ">= 10" } }, + "node_modules/cross-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/d3": { "version": "7.9.0", "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", @@ -1876,7 +2645,6 @@ "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", "license": "ISC", - "peer": true, "engines": { "node": ">=12" } @@ -2029,6 +2797,33 @@ "@types/estree": "^1.0.0" } }, + "node_modules/execa": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz", + "integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.6", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.1", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.2.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.1.1" + }, + "engines": { + "node": "^18.19.0 || >=20.5.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, "node_modules/expect-type": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", @@ -2039,6 +2834,33 @@ "node": ">=12.0.0" } }, + "node_modules/fast-string-truncated-width": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz", + "integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-string-width": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-3.0.2.tgz", + "integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-string-truncated-width": "^3.0.2" + } + }, + "node_modules/fast-wrap-ansi": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.0.tgz", + "integrity": "sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-string-width": "^3.0.2" + } + }, "node_modules/fdir": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", @@ -2057,6 +2879,22 @@ } } }, + "node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -2072,6 +2910,171 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/get-east-asian-width": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz", + "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/html-parse-stringify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", + "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "void-elements": "3.1.0" + } + }, + "node_modules/human-signals": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", + "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/i18next": { + "version": "25.8.17", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-25.8.17.tgz", + "integrity": "sha512-vWtCttyn5bpOK4hWbRAe1ZXkA+Yzcn2OcACT+WJavtfGMcxzkfvXTLMeOU8MUhRmAySKjU4VVuKlo0sSGeBokA==", + "funding": [ + { + "type": "individual", + "url": "https://locize.com" + }, + { + "type": "individual", + "url": "https://locize.com/i18next.html" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + } + ], + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.6" + }, + "peerDependencies": { + "typescript": "^5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/i18next-cli": { + "version": "1.49.6", + "resolved": "https://registry.npmjs.org/i18next-cli/-/i18next-cli-1.49.6.tgz", + "integrity": "sha512-RfYapPZ7cL77TYid1AhZjUXYWQBqlNjx7aiYfgsY20hlrAI3DNlCGwEBIYKJ+YdzNICJDbFPaKZLkc/qL4qWTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@croct/json5-parser": "^0.2.2", + "@swc/core": "^1.15.18", + "chokidar": "^5.0.0", + "commander": "^14.0.3", + "execa": "^9.6.1", + "glob": "^13.0.6", + "i18next-resources-for-ts": "^2.0.1", + "inquirer": "^13.3.0", + "jiti": "^2.6.1", + "jsonc-parser": "^3.3.1", + "magic-string": "^0.30.21", + "minimatch": "^10.2.4", + "ora": "^9.3.0", + "react": "^19.2.4", + "react-i18next": "^16.5.6", + "yaml": "^2.8.2" + }, + "bin": { + "i18next-cli": "dist/esm/cli.js" + }, + "engines": { + "node": ">=22" + } + }, + "node_modules/i18next-cli/node_modules/commander": { + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", + "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + } + }, + "node_modules/i18next-http-backend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-3.0.2.tgz", + "integrity": "sha512-PdlvPnvIp4E1sYi46Ik4tBYh/v/NbYfFFgTjkwFl0is8A18s7/bx9aXqsrOax9WUbeNS6mD2oix7Z0yGGf6m5g==", + "license": "MIT", + "dependencies": { + "cross-fetch": "4.0.0" + } + }, + "node_modules/i18next-resources-for-ts": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/i18next-resources-for-ts/-/i18next-resources-for-ts-2.0.1.tgz", + "integrity": "sha512-e3nroKWOHI/B4Nl2+N62xeCS8Dd61iSIUej/4ObeOs64JiLosAsHaa3HILg23rgIf+dS1I0IMDEkWPH2s9Oo3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.6", + "@swc/core": "^1.15.18", + "chokidar": "^5.0.0", + "yaml": "^2.8.2" + }, + "bin": { + "i18next-resources-for-ts": "bin/i18next-resources-for-ts.js" + } + }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -2084,6 +3087,33 @@ "node": ">=0.10.0" } }, + "node_modules/inquirer": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-13.3.0.tgz", + "integrity": "sha512-APTrZe9IhrsshL0u2PgmEMLP3CXDBjZ99xh5dR2+sryOt5R+JGL0KNuaTTT2lW54B9eNQDMutPR05UYTL7Xb1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^2.0.3", + "@inquirer/core": "^11.1.5", + "@inquirer/prompts": "^8.3.0", + "@inquirer/type": "^4.0.3", + "mute-stream": "^3.0.0", + "run-async": "^4.0.6", + "rxjs": "^7.8.2" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, "node_modules/internmap": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", @@ -2093,6 +3123,109 @@ "node": ">=12" } }, + "node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-7.0.1.tgz", + "integrity": "sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-unicode-supported": "^2.0.0", + "yoctocolors": "^2.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, "node_modules/magic-string": { "version": "0.30.21", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", @@ -2103,6 +3236,45 @@ "@jridgewell/sourcemap-codec": "^1.5.5" } }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/mrmime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", @@ -2113,6 +3285,16 @@ "node": ">=10" } }, + "node_modules/mute-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-3.0.0.tgz", + "integrity": "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, "node_modules/nanoid": { "version": "3.3.11", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", @@ -2132,6 +3314,56 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/npm-run-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/obug": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", @@ -2143,6 +3375,85 @@ ], "license": "MIT" }, + "node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-9.3.0.tgz", + "integrity": "sha512-lBX72MWFduWEf7v7uWf5DHp9Jn5BI8bNPGuFgtXMmr2uDz2Gz2749y3am3agSDdkhHPHYmmxEGSKH85ZLGzgXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.6.2", + "cli-cursor": "^5.0.0", + "cli-spinners": "^3.2.0", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^2.1.0", + "log-symbols": "^7.0.1", + "stdin-discarder": "^0.3.1", + "string-width": "^8.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/pathe": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", @@ -2163,7 +3474,6 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -2279,6 +3589,91 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/pretty-ms": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz", + "integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-ms": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", + "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-i18next": { + "version": "16.5.7", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-16.5.7.tgz", + "integrity": "sha512-t/si6ng+hMPvgRGNgGvHAkMuVRBsIBx5mN+exm/yiBPSFL7VooQ37YYfISxSE0LjvQjG+MTe+0htKdOJY0S/vw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.4", + "html-parse-stringify": "^3.0.1", + "use-sync-external-store": "^1.6.0" + }, + "peerDependencies": { + "i18next": ">= 25.6.2", + "react": ">= 16.8.0", + "typescript": "^5" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/readdirp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", + "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/robust-predicates": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", @@ -2330,18 +3725,61 @@ "fsevents": "~2.3.2" } }, + "node_modules/run-async": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-4.0.6.tgz", + "integrity": "sha512-IoDlSLTs3Yq593mb3ZoKWKXMNu3UpObxhgA/Xuid5p4bbfi2jdY1Hj0m1K+0/tEuQTxIGMhQDqGjKb7RuxGpAQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/rw": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", "license": "BSD-3-Clause" }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "license": "MIT" }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/siginfo": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", @@ -2349,6 +3787,19 @@ "dev": true, "license": "ISC" }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/sirv": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", @@ -2388,6 +3839,65 @@ "dev": true, "license": "MIT" }, + "node_modules/stdin-discarder": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.3.1.tgz", + "integrity": "sha512-reExS1kSGoElkextOcPkel4NE99S0BWxjUHQeDFnR8S993JxpPX7KU4MNmO19NXhlJp+8dmdCbKQVNgLJh2teA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.0.tgz", + "integrity": "sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.5.0", + "strip-ansi": "^7.1.2" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/tinybench": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", @@ -2448,11 +3958,24 @@ "node": ">=6" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, "node_modules/typescript": { "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true, + "devOptional": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -2469,13 +3992,35 @@ "dev": true, "license": "MIT" }, + "node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/vite": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", @@ -2551,7 +4096,6 @@ "integrity": "sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vitest/expect": "4.0.18", "@vitest/mocker": "4.0.18", @@ -2624,6 +4168,48 @@ } } }, + "node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/why-is-node-running": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", @@ -2662,6 +4248,35 @@ "optional": true } } + }, + "node_modules/yaml": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/yoctocolors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", + "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/package.json b/package.json index 11d2cfc7..5a9044f1 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,8 @@ "test:browser": "vitest --config=vitest.browser.config.ts", "test:e2e": "playwright test", "lint": "biome check --write", - "format": "biome format --write" + "format": "biome format --write", + "i18n": "npx i18next-cli extract" }, "devDependencies": { "@biomejs/biome": "2.3.13", @@ -32,6 +33,7 @@ "@types/polylabel": "^1.1.3", "@vitest/browser": "^4.0.18", "@vitest/browser-playwright": "^4.0.18", + "i18next-cli": "^1.49.6", "playwright": "^1.57.0", "typescript": "^5.9.3", "vite": "^7.3.1", @@ -41,6 +43,8 @@ "alea": "^1.0.1", "d3": "^7.9.0", "delaunator": "^5.0.1", + "i18next": "^25.8.17", + "i18next-http-backend": "^3.0.2", "polylabel": "^2.0.1" }, "engines": { diff --git a/public/locales/en/lang.json b/public/locales/en/lang.json new file mode 100644 index 00000000..c772857b --- /dev/null +++ b/public/locales/en/lang.json @@ -0,0 +1,1188 @@ +{ + "{{adjective}} {{noun}}": "{{adjective}} {{noun}}", + "{{noun}} of {{complement}}": "{{noun}} of {{complement}}", + "About": "About", + "Activate/deactivate group": "Activate/deactivate group", + "Add a custom biome": "Add a custom biome", + "Add a font": "Add a font", + "Add a new burg. Hold Shift to add multiple": "Add a new burg. Hold Shift to add multiple", + "Add a new marker. Hold Shift to add multiple": "Add a new marker. Hold Shift to add multiple", + "Add a new province. Hold Shift to add multiple": "Add a new province. Hold Shift to add multiple", + "Add additional marker of that type": "Add additional marker of that type", + "Add an Iceberg (click on map)": "Add an Iceberg (click on map)", + "Add new namesbase": "Add new namesbase", + "Add new Regiment": "Add new Regiment", + "Add new zone layer": "Add new zone layer", + "Add or subtract value from all heights in range": "Add or subtract value from all heights in range", + "Add regiment to the battle": "Add regiment to the battle", + "Add route group": "Add route group", + "Air Battle: maneuring fight of avia units": "Air Battle: maneuring fight of avia units", + "Align brush: drag to set height of cells in radius to height of the cell at mousepoint": "Align brush: drag to set height of cells in radius to height of the cell at mousepoint", + "All-world": "All-world", + "Allow brush to change only land cells and hence restrict the coastline modification": "Allow brush to change only land cells and hence restrict the coastline modification", + "Allow system to apply filter automatically based on zoom level": "Allow system to apply filter automatically based on zoom level", + "Allow system to hide emblem groups if their size in too small or too big on that scale": "Allow system to hide emblem groups if their size in too small or too big on that scale", + "Allow system to hide labels if their size in too small or too big on that scale": "Allow system to hide labels if their size in too small or too big on that scale", + "Allow system to rescale labels on zoom": "Allow system to rescale labels on zoom", + "Allow to drag map beyond canvas borders": "Allow to drag map beyond canvas borders", + "Ambush: surprise attack": "Ambush: surprise attack", + "Analyze namesbase to get a validity and quality overview": "Analyze namesbase to get a validity and quality overview", + "Anchor Icons": "Anchor Icons", + "Antique big": "Antique big", + "Antique small": "Antique small", + "Apply a filter": "Apply a filter", + "Apply assignment": "Apply assignment", + "Apply current assignment": "Apply current assignment", + "Archipelago": "Archipelago", + "Area": "Area", + "Atoll": "Atoll", + "Attach regiment to another one (include this regiment to another one)": "Attach regiment to another one (include this regiment to another one)", + "Attack foreign regiment": "Attack foreign regiment", + "Attackers morale: ": "Attackers morale: ", + "Attackers strength during this phase. Strength defines dealt damage": "Attackers strength during this phase. Strength defines dealt damage", + "Auto": "Auto", + "Auto-assign colors based on hue (good for colored images)": "Auto-assign colors based on hue (good for colored images)", + "Auto-assign colors based on liminosity (good for monochrome images)": "Auto-assign colors based on liminosity (good for monochrome images)", + "Auto-assign colors using generator scheme (for exported colored heightmaps)": "Auto-assign colors using generator scheme (for exported colored heightmaps)", + "Automatically add river starting from clicked cell. Hold Shift to add multiple": "Automatically add river starting from clicked cell. Hold Shift to add multiple", + "Autonomy": "Autonomy", + "Average area": "Average area", + "Average discharge": "Average discharge", + "Average forces rate per state": "Average forces rate per state", + "Average length": "Average length", + "Average military forces per state": "Average military forces per state", + "Average mouth width": "Average mouth width", + "Average number of people in crew (used for total personnel calculation)": "Average number of people in crew (used for total personnel calculation)", + "Average population": "Average population", + "Average War Alert": "Average War Alert", + "Banner": "Banner", + "Barony": "Barony", + "Baroque": "Baroque", + "Battle type. Click to change": "Battle type. Click to change", + "Best performance": "Best performance", + "Best quality": "Best quality", + "Beylik": "Beylik", + "Biomes": "Biomes", + "Biomes map": "Biomes map", + "Biomes: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "Biomes: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style", + "Bishopric": "Bishopric", + "Blob maximum height, use hyphen to get a random number in range": "Blob maximum height, use hyphen to get a random number in range", + "Blobs to add, use hyphen to get a random number in range": "Blobs to add, use hyphen to get a random number in range", + "Blockade phase. Prepare or hold the blockade": "Blockade phase. Prepare or hold the blockade", + "Boarding phase. Melee units go aboard": "Boarding phase. Melee units go aboard", + "Boeotian": "Boeotian", + "Bombardment phase. Attack enemy with machinery units": "Bombardment phase. Attack enemy with machinery units", + "Borders": "Borders", + "Brotherhood": "Brotherhood", + "Bubble": "Bubble", + "Burg average yearly temperature": "Burg average yearly temperature", + "Burg emblem. Click to edit": "Burg emblem. Click to edit", + "Burg height above mean sea level": "Burg height above mean sea level", + "Burg Icons": "Burg Icons", + "Burg icons: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "Burg icons: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style", + "Burg map preview": "Burg map preview", + "Burg preview generator": "Burg preview generator", + "Burgs displayed": "Burgs displayed", + "Butt": "Butt", + "Calculated size of image if combined": "Calculated size of image if combined", + "Caliphate": "Caliphate", + "Cancel assignment": "Cancel assignment", + "Cancel battle: roll back results and close the screen": "Cancel battle: roll back results and close the screen", + "Cancel the conversion. Previous heightmap will be restored": "Cancel the conversion. Previous heightmap will be restored", + "Cancel the creation": "Cancel the creation", + "Canton": "Canton", + "Canvas size. Can be changed in general options on new map generation": "Canvas size. Can be changed in general options on new map generation", + "Captaincy": "Captaincy", + "Cells": "Cells", + "Cells structure: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "Cells structure: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style", + "Chancellery": "Chancellery", + "Change brush power": "Change brush power", + "Change brush size. Shortcut: + to increase; – to decrease": "Change brush size. Shortcut: + to increase; – to decrease", + "Change height for all cells": "Change height for all cells", + "Change Iceberg size": "Change Iceberg size", + "Change tool power. Shortcut: + to increase; – to decrease": "Change tool power. Shortcut: + to increase; – to decrease", + "Check if unit is separate and can be stacked only with units of the same type": "Check if unit is separate and can be stacked only with units of the same type", + "Check to fit burg styles (icon and label size) to the submap scale": "Check to fit burg styles (icon and label size) to the submap scale", + "Check to not allow system to automatically hide labels": "Check to not allow system to automatically hide labels", + "Check to render ocean heights": "Check to render ocean heights", + "Chiefdom": "Chiefdom", + "Circle": "Circle", + "Circled": "Circled", + "City-state": "City-state", + "Clan": "Clan", + "Click and provide a URL to image to be set as a texture": "Click and provide a URL to image to be set as a texture", + "Click on a control point to split the route there": "Click on a control point to split the route there", + "Click on map to place a burg. Hold Shift to add multiple": "Click on map to place a burg. Hold Shift to add multiple", + "Click on map to place a marker. Hold Shift to add multiple": "Click on map to place a marker. Hold Shift to add multiple", + "Click on map to place a river. Hold Shift to add multiple": "Click on map to place a river. Hold Shift to add multiple", + "Click on map to place label. Hold Shift to add multiple": "Click on map to place label. Hold Shift to add multiple", + "Click to add a custom heightmap color scheme": "Click to add a custom heightmap color scheme", + "Click to add custom province form name to the list": "Click to add custom province form name to the list", + "Click to add custom state form name to the list": "Click to add custom state form name to the list", + "Click to change generation and UI options": "Click to change generation and UI options", + "Click to change map layers": "Click to change map layers", + "Click to change wind direction": "Click to change wind direction", + "Click to generate a new map": "Click to generate a new map", + "Click to generate a submap from the current viewport": "Click to generate a submap from the current viewport", + "Click to hide the Menu": "Click to hide the Menu", + "Click to invert lock state for all markers": "Click to invert lock state for all markers", + "Click to invert pin state for all markers": "Click to invert pin state for all markers", + "Click to join the route to another route that starts or ends at the same cell": "Click to join the route to another route that starts or ends at the same cell", + "Click to open Biomes Editor": "Click to open Biomes Editor", + "Click to open Burgs Overview": "Click to open Burgs Overview", + "Click to open Cell details view": "Click to open Cell details view", + "Click to open Charts to overview cells data": "Click to open Charts to overview cells data", + "Click to open Cultures Editor": "Click to open Cultures Editor", + "Click to open Diplomatical relationships Editor": "Click to open Diplomatical relationships Editor", + "Click to open Emblem Editor": "Click to open Emblem Editor", + "Click to open Heightmap customization menu": "Click to open Heightmap customization menu", + "Click to open Markers Overview": "Click to open Markers Overview", + "Click to open Military Forces Overview": "Click to open Military Forces Overview", + "Click to open Namesbase Editor": "Click to open Namesbase Editor", + "Click to open Notes Editor": "Click to open Notes Editor", + "Click to open Provinces Editor": "Click to open Provinces Editor", + "Click to open Religions Editor": "Click to open Religions Editor", + "Click to open Rivers Overview": "Click to open Rivers Overview", + "Click to open Routes Overview": "Click to open Routes Overview", + "Click to open States Editor": "Click to open States Editor", + "Click to open style editor": "Click to open style editor", + "Click to open tools menu": "Click to open tools menu", + "Click to open Units Editor": "Click to open Units Editor", + "Click to open world configurator to setup map position on Globe and World climate": "Click to open world configurator to setup map position on Globe and World climate", + "Click to open Zones Editor": "Click to open Zones Editor", + "Click to perform an operation": "Click to perform an operation", + "Click to place a linear measurer (ruler)": "Click to place a linear measurer (ruler)", + "Click to re-generate full name": "Click to re-generate full name", + "Click to recalculate military forces based on current military options": "Click to recalculate military forces based on current military options", + "Click to recalculate rural and urban population": "Click to recalculate rural and urban population", + "Click to regenerate all emblems": "Click to regenerate all emblems", + "Click to regenerate all relief icons based on current cell biome and elevation": "Click to regenerate all relief icons based on current cell biome and elevation", + "Click to regenerate all rivers (restore default state)": "Click to regenerate all rivers (restore default state)", + "Click to regenerate all unlocked burgs and routes. States will remain as they are. Note: burgs are only generated in populated areas with culture assigned": "Click to regenerate all unlocked burgs and routes. States will remain as they are. Note: burgs are only generated in populated areas with culture assigned", + "Click to regenerate all unlocked routes": "Click to regenerate all unlocked routes", + "Click to regenerate icebergs and glaciers": "Click to regenerate icebergs and glaciers", + "Click to regenerate non-locked cultures": "Click to regenerate non-locked cultures", + "Click to regenerate non-locked provinces. States will remain as they are": "Click to regenerate non-locked provinces. States will remain as they are", + "Click to regenerate non-locked religions": "Click to regenerate non-locked religions", + "Click to regenerate non-locked states. Emblems and military forces will be regenerated as well, burgs will remain as they are, but capitals will be different": "Click to regenerate non-locked states. Emblems and military forces will be regenerated as well, burgs will remain as they are, but capitals will be different", + "Click to regenerate unlocked markers": "Click to regenerate unlocked markers", + "Click to regenerate zones. Hold Ctrl and click to set zones number multiplier": "Click to regenerate zones. Hold Ctrl and click to set zones number multiplier", + "Click to remove current custom preset": "Click to remove current custom preset", + "Click to remove current custom style preset": "Click to remove current custom style preset", + "Click to restore default (Earth-based) wind directions": "Click to restore default (Earth-based) wind directions", + "Click to restore default options and reload the page": "Click to restore default options and reload the page", + "Click to restore regiment's default name": "Click to restore regiment's default name", + "Click to save current style as a new preset": "Click to save current style as a new preset", + "Click to save displayed layers as a new preset": "Click to save displayed layers as a new preset", + "Click to see Generator info": "Click to see Generator info", + "Click to see list of supporters": "Click to see list of supporters", + "Click to see the usage instructions": "Click to see the usage instructions", + "Click to set map size to cover the Northern latitudes": "Click to set map size to cover the Northern latitudes", + "Click to set map size to cover the Southern latitudes": "Click to set map size to cover the Southern latitudes", + "Click to set map size to cover the Tropical latitudes": "Click to set map size to cover the Tropical latitudes", + "Click to set map size to cover the whole world": "Click to set map size to cover the whole world", + "Click to set number multiplier": "Click to set number multiplier", + "Click to show the Menu": "Click to show the Menu", + "Click to skip the step": "Click to skip the step", + "Click to sort by biome area": "Click to sort by biome area", + "Click to sort by biome cells number": "Click to sort by biome cells number", + "Click to sort by biome habitability": "Click to sort by biome habitability", + "Click to sort by biome name": "Click to sort by biome name", + "Click to sort by biome population": "Click to sort by biome population", + "Click to sort by burg features": "Click to sort by burg features", + "Click to sort by burg name": "Click to sort by burg name", + "Click to sort by burg population": "Click to sort by burg population", + "Click to sort by culture group": "Click to sort by culture group", + "Click to sort by culture name": "Click to sort by culture name", + "Click to sort by diplomatical relations": "Click to sort by diplomatical relations", + "Click to sort by discharge (flux in m3/s)": "Click to sort by discharge (flux in m3/s)", + "Click to sort by distance to the battlefield": "Click to sort by distance to the battlefield", + "Click to sort by marker type": "Click to sort by marker type", + "Click to sort by province area": "Click to sort by province area", + "Click to sort by province burgs count": "Click to sort by province burgs count", + "Click to sort by province capital": "Click to sort by province capital", + "Click to sort by province form name": "Click to sort by province form name", + "Click to sort by province name": "Click to sort by province name", + "Click to sort by province owner": "Click to sort by province owner", + "Click to sort by province population": "Click to sort by province population", + "Click to sort by regiment name": "Click to sort by regiment name", + "Click to sort by river basin": "Click to sort by river basin", + "Click to sort by river length": "Click to sort by river length", + "Click to sort by river mouth width": "Click to sort by river mouth width", + "Click to sort by river name": "Click to sort by river name", + "Click to sort by river type name": "Click to sort by river type name", + "Click to sort by route group": "Click to sort by route group", + "Click to sort by route length": "Click to sort by route length", + "Click to sort by route name": "Click to sort by route name", + "Click to sort by state name": "Click to sort by state name", + "Click to sort by total military forces": "Click to sort by total military forces", + "Click to test the voice": "Click to test the voice", + "Click to toggle a layer, drag to raise or lower a layer. Ctrl + click to edit layer style": "Click to toggle a layer, drag to raise or lower a layer. Ctrl + click to edit layer style", + "Click to toggle the removal mode on brush dragging": "Click to toggle the removal mode on brush dragging", + "Click to transform the map": "Click to transform the map", + "Click to update state labels placement based on current borders": "Click to update state labels placement based on current borders", + "Clip land": "Clip land", + "Clip water": "Clip water", + "Coastline": "Coastline", + "Colony": "Colony", + "Colored": "Colored", + "Commonwealth": "Commonwealth", + "Commune": "Commune", + "Community": "Community", + "Complete river creation": "Complete river creation", + "Complete route creation": "Complete route creation", + "Complete the conversion. All unassigned colors will be considered as ocean": "Complete the conversion. All unassigned colors will be considered as ocean", + "Confederacy": "Confederacy", + "Confederation": "Confederation", + "Config markers generation options": "Config markers generation options", + "Configure burg groups": "Configure burg groups", + "Configure world and map size and climate settings": "Configure world and map size and climate settings", + "Conglomerate": "Conglomerate", + "Connect your Dropbox account to be able to load maps from it": "Connect your Dropbox account to be able to load maps from it", + "Conscription percentage for rural population": "Conscription percentage for rural population", + "Conscription percentage for urban population": "Conscription percentage for urban population", + "Continents": "Continents", + "Coordinate grid: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "Coordinate grid: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style", + "Coordinates": "Coordinates", + "Copy link to the clipboard": "Copy link to the clipboard", + "Copy map seed as URL. It will produce the same map only if options are default or the same": "Copy map seed as URL. It will produce the same map only if options are default or the same", + "Copy selected relief icon": "Copy selected relief icon", + "Council": "Council", + "County": "County", + "Create a new group for this coastline": "Create a new group for this coastline", + "Create a new group for this label": "Create a new group for this label", + "Create a new regiment or fleet": "Create a new regiment or fleet", + "Create a new river selecting river cells": "Create a new river selecting river cells", + "Create a new route selecting route cells": "Create a new route selecting route cells", + "Create a new type (group) for the lake": "Create a new type (group) for the lake", + "Create custom province form name": "Create custom province form name", + "Cross": "Cross", + "Cultural map": "Cultural map", + "Culture-random": "Culture-random", + "Culture-specific": "Culture-specific", + "Cultures": "Cultures", + "Cultures: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "Cultures: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style", + "Curved": "Curved", + "Custom": "Custom", + "Custom (not saved)": "Custom (not saved)", + "Custom name": "Custom name", + "Dawn": "Dawn", + "Deanery": "Deanery", + "Defenders morale: ": "Defenders morale: ", + "Defenders strength during this phase. Strength defines dealt damage": "Defenders strength during this phase. Strength defines dealt damage", + "Defense phase. Prepared defense. Units strength increased": "Defense phase. Prepared defense. Units strength increased", + "Defense phase. Ranged and melee units excel": "Defense phase. Ranged and melee units excel", + "Define a number of non-capital settlements to be placed (if enough suitable land exists)": "Define a number of non-capital settlements to be placed (if enough suitable land exists)", + "Define burgs percentage to form a separate province": "Define burgs percentage to form a separate province", + "Define current year and era name": "Define current year and era name", + "Define how many Cultures should be generated": "Define how many Cultures should be generated", + "Define how many organized religions and cults should be generated. Cultures will have their own folk religions in any case": "Define how many organized religions and cults should be generated. Cultures will have their own folk religions in any case", + "Define how many states and capitals should be generated": "Define how many states and capitals should be generated", + "Define how much states and cultures can vary in size. Defines expansionism value": "Define how much states and cultures can vary in size. Defines expansionism value", + "Define map name (will be used to name downloaded files)": "Define map name (will be used to name downloaded files)", + "Define scale of a saved png/jpeg image (e.g. 5x). Saving big images is slow and may cause a browser crash!": "Define scale of a saved png/jpeg image (e.g. 5x). Saving big images is slow and may cause a browser crash!", + "Define the coast outline contours scheme": "Define the coast outline contours scheme", + "Define the density of relief icons. All relief icons will be regenerated. Highly affects performance!": "Define the density of relief icons. All relief icons will be regenerated. Highly affects performance!", + "Define the size of relief icons. All relief icons will be regenerated": "Define the size of relief icons. All relief icons will be regenerated", + "Define transparency of fill color": "Define transparency of fill color", + "Define transparency of temperature leyer. Set to 0 to make it fully transparent": "Define transparency of temperature leyer. Set to 0 to make it fully transparent", + "degree Delisle (°De)": "degree Delisle (°De)", + "degree Fahrenheit (°F)": "degree Fahrenheit (°F)", + "degree Newton (°N)": "degree Newton (°N)", + "degree Rankine (°R)": "degree Rankine (°R)", + "degree Réaumur (°Ré)": "degree Réaumur (°Ré)", + "degree Rømer (°Rø)": "degree Rømer (°Rø)", + "Department": "Department", + "Dependency": "Dependency", + "Depress brush: drag to gradually decrease height of cells in radius by Power value": "Depress brush: drag to gradually decrease height of cells in radius by Power value", + "Depression depth to form a new lake. Increase to reduce number of lakes added by system": "Depression depth to form a new lake. Increase to reduce number of lakes added by system", + "Descrease font": "Descrease font", + "Despotate": "Despotate", + "Diaconate": "Diaconate", + "Diamond": "Diamond", + "Diarchy": "Diarchy", + "Diocese": "Diocese", + "Display brushes panel": "Display brushes panel", + "Displayed layers and layers order:": "Displayed layers and layers order:", + "Disrupt (randomize) heights a bit": "Disrupt (randomize) heights a bit", + "Disrupt brush: drag to randomize height of cells in radius based on Power value": "Disrupt brush: drag to randomize height of cells in radius based on Power value", + "Distance between grid cell centers (in map scale)": "Distance between grid cell centers (in map scale)", + "District": "District", + "Divine Duchy": "Divine Duchy", + "Divine Empire": "Divine Empire", + "Divine Grand Duchy": "Divine Grand Duchy", + "Divine Kingdom": "Divine Kingdom", + "Divine Principality": "Divine Principality", + "Dogfight phase. Units strength increased": "Dogfight phase. Units strength increased", + "Dominant culture in the province. This defines culture-based naming. Can be changed via the Cultures Editor": "Dominant culture in the province. This defines culture-based naming. Can be changed via the Cultures Editor", + "Dominion": "Dominion", + "Dovetail": "Dovetail", + "Download as JPG: lossy compressed raster image with solid white background": "Download as JPG: lossy compressed raster image with solid white background", + "Download as PNG: lossless raster image with transparent background": "Download as PNG: lossless raster image with transparent background", + "Download as SVG: scalable vector image. Best quality, can be opened in browser or Inkscape": "Download as SVG: scalable vector image. Best quality, can be opened in browser or Inkscape", + "Download cells data in GeoJSON format": "Download cells data in GeoJSON format", + "Download emblems gallery as html document (open in browser; downloading takes some time)": "Download emblems gallery as html document (open in browser; downloading takes some time)", + "Download full data in JSON": "Download full data in JSON", + "Download map file to your local disk": "Download map file to your local disk", + "Download map metadata and grid cells data in JSON": "Download map metadata and grid cells data in JSON", + "Download map metadata and pack cells data in JSON": "Download map metadata and pack cells data in JSON", + "Download markers data in GeoJSON format": "Download markers data in GeoJSON format", + "Download minimal data in JSON": "Download minimal data in JSON", + "Download namesbase to PC": "Download namesbase to PC", + "Download notes to PC": "Download notes to PC", + "Download rivers data in GeoJSON format": "Download rivers data in GeoJSON format", + "Download routes data in GeoJSON format": "Download routes data in GeoJSON format", + "Download the chart data as a CSV file": "Download the chart data as a CSV file", + "Download the map as vector image (open directly in browser or Inkscape)": "Download the map as vector image (open directly in browser or Inkscape)", + "Download the style as a .json file (can be opened in any text editor)": "Download the style as a .json file (can be opened in any text editor)", + "Download the template as a text file": "Download the template as a text file", + "Download visible part of the map as .jpeg (lossy compressed) image": "Download visible part of the map as .jpeg (lossy compressed) image", + "Download visible part of the map as .png (lossless compressed)": "Download visible part of the map as .png (lossless compressed)", + "Download zones data in GeoJSON format": "Download zones data in GeoJSON format", + "Download zones-related data": "Download zones-related data", + "Drag to measure a curve length (opisometer)": "Drag to measure a curve length (opisometer)", + "Drag to measure a curve length that sticks to routes (route opisometer)": "Drag to measure a curve length that sticks to routes (route opisometer)", + "Drag to measure a polygon area (planimeter)": "Drag to measure a polygon area (planimeter)", + "Drag to move the Menu": "Drag to move the Menu", + "Drag to move the pane": "Drag to move the pane", + "Drag to reorder": "Drag to reorder", + "Duchy": "Duchy", + "Earldom": "Earldom", + "Easterling": "Easterling", + "Edit biomes style in Style Editor": "Edit biomes style in Style Editor", + "Edit burg groups": "Edit burg groups", + "Edit coastline group style in Style Editor": "Edit coastline group style in Style Editor", + "Edit emblem": "Edit emblem", + "Edit free text notes (legend) for the lake": "Edit free text notes (legend) for the lake", + "Edit free text notes (legend) for the river": "Edit free text notes (legend) for the river", + "Edit free text notes (legend) for the route": "Edit free text notes (legend) for the route", + "Edit free text notes (legend) for this burg": "Edit free text notes (legend) for this burg", + "Edit free text notes (legend) for this label": "Edit free text notes (legend) for this label", + "Edit free text notes (legend) for this regiment": "Edit free text notes (legend) for this regiment", + "Edit icon style for burg group in Style Editor": "Edit icon style for burg group in Style Editor", + "Edit individual selected icon": "Edit individual selected icon", + "Edit label group style in Style Editor": "Edit label group style in Style Editor", + "Edit label style for burg group in Style Editor": "Edit label style for burg group in Style Editor", + "Edit lake group style in Style Editor": "Edit lake group style in Style Editor", + "Edit Military units": "Edit Military units", + "Edit place legend (notes)": "Edit place legend (notes)", + "Edit port icon (anchor) style for burg group in Style Editor": "Edit port icon (anchor) style for burg group in Style Editor", + "Edit provinces style in Style Editor": "Edit provinces style in Style Editor", + "Edit Relief Icons style in Style Editor": "Edit Relief Icons style in Style Editor", + "Edit route groups": "Edit route groups", + "Edit states (including diplomacy view) style in Style Editor": "Edit states (including diplomacy view) style in Style Editor", + "Edit style for all rivers in Style Editor": "Edit style for all rivers in Style Editor", + "Edit style for the route group": "Edit style for the route group", + "Edit style in Style Editor": "Edit style in Style Editor", + "Edit the emblem in Armoria - dedicated heraldry editor. Download emblem and upload it back map the generator": "Edit the emblem in Armoria - dedicated heraldry editor. Download emblem and upload it back map the generator", + "Edit zones style in Style Editor": "Edit zones style in Style Editor", + "Elevate brush: drag to gradually increase height of cells in radius by Power value": "Elevate brush: drag to gradually increase height of cells in radius by Power value", + "Elevation profile": "Elevation profile", + "Emblems": "Emblems", + "Emblems: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "Emblems: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style", + "Emirate": "Emirate", + "Empire": "Empire", + "End battle: apply current results and close the screen": "End battle: apply current results and close the screen", + "Enter API key. Note: the Generator doesn't store the key or any generated data": "Enter API key. Note: the Generator doesn't store the key or any generated data", + "Enter custom form name": "Enter custom form name", + "Enter style preset name": "Enter style preset name", + "Eparchy": "Eparchy", + "Equirectangular projection is used: distortion is maximum on poles. Use map with aspect ratio 2:1 for best result": "Equirectangular projection is used: distortion is maximum on poles. Use map with aspect ratio 2:1 for best result", + "Erebor": "Erebor", + "Evaporation from lake surface. If evaporation > supply, the lake water is saline. If difference is high, the lake becomes dry": "Evaporation from lake surface. If evaporation > supply, the lake water is saline. If difference is high, the lake becomes dry", + "Evening": "Evening", + "Examples. Click to re-generate": "Examples. Click to re-generate", + "Exarchate": "Exarchate", + "Execute the template": "Execute the template", + "Fantasy world Meridian length relative to real-world Earth (20k km)": "Fantasy world Meridian length relative to real-world Earth (20k km)", + "Fantasy1": "Fantasy1", + "Fantasy2": "Fantasy2", + "Fantasy3": "Fantasy3", + "Fantasy4": "Fantasy4", + "Fantasy5": "Fantasy5", + "Fathoms (f)": "Fathoms (f)", + "Federation": "Federation", + "Feet (ft)": "Feet (ft)", + "Field Battle: a standard type of combat": "Field Battle: a standard type of combat", + "Filter by name or group": "Filter by name or group", + "Filter by name, province, state, culture, or group": "Filter by name, province, state, culture, or group", + "Filter by name, type or basin": "Filter by name, type or basin", + "Filter by type": "Filter by type", + "Finalize the heightmap and exit the edit mode": "Finalize the heightmap and exit the edit mode", + "Find or share custom namesbase on Cartography Assets portal": "Find or share custom namesbase on Cartography Assets portal", + "Find or share custom style preset on Cartography Assets portal": "Find or share custom style preset on Cartography Assets portal", + "Find or share custom template on Cartography Assets portal": "Find or share custom template on Cartography Assets portal", + "Flag": "Flag", + "Flee phase. Units strength reduced": "Flee phase. Units strength reduced", + "Focus on selected object": "Focus on selected object", + "Fogging": "Fogging", + "Folded paper big": "Folded paper big", + "Folded paper small": "Folded paper small", + "Font URL": "Font URL", + "Fractious": "Fractious", + "Free City": "Free City", + "Free Territory": "Free Territory", + "French": "French", + "Full names": "Full names", + "Generate a new map based on options": "Generate a new map based on options", + "Generate culture-specific name": "Generate culture-specific name", + "Generate culture-specific name for place and battle": "Generate culture-specific name for place and battle", + "Generate culture-specific name for the burg": "Generate culture-specific name for the burg", + "Generate culture-specific name for the lake": "Generate culture-specific name for the lake", + "Generate culture-specific name for the province": "Generate culture-specific name for the province", + "Generate culture-specific name for the river": "Generate culture-specific name for the river", + "Generate note with AI": "Generate note with AI", + "Generate random map": "Generate random map", + "Generate random name": "Generate random name", + "Generate random name for place and battle": "Generate random name for place and battle", + "Generate random name for the burg": "Generate random name for the burg", + "Generate random name for the lake": "Generate random name for the lake", + "Generate random name for the river": "Generate random name for the river", + "Generate route name": "Generate route name", + "Generic": "Generic", + "Gondor": "Gondor", + "Gonfalon": "Gonfalon", + "Google font": "Google font", + "Governorate": "Governorate", + "Grand Duchy": "Grand Duchy", + "Gray": "Gray", + "Gray paper": "Gray paper", + "Grid": "Grid", + "Grid: click to toggle, drag to raise or lower. Ctrl + click to edit layer style and select type": "Grid: click to toggle, drag to raise or lower. Ctrl + click to edit layer style and select type", + "Guidon": "Guidon", + "Heater": "Heater", + "Heightmap": "Heightmap", + "Heightmap edit mode": "Heightmap edit mode", + "Heightmap: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "Heightmap: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style", + "Heptagon": "Heptagon", + "Heptarchy": "Heptarchy", + "Hessen": "Hessen", + "Hex": "Hex", + "Hex grid (flat)": "Hex grid (flat)", + "Hex grid (pointy)": "Hex grid (pointy)", + "Hexy": "Hexy", + "Hide": "Hide", + "Hide rescaler": "Hide rescaler", + "Hide rescaler slider": "Hide rescaler slider", + "Hide style edit section": "Hide style edit section", + "Hide the battle name section": "Hide the battle name section", + "Hide the edit label text section": "Hide the edit label text section", + "Hide the font size section": "Hide the font size section", + "Hide the group section": "Hide the group section", + "Hide the group selection": "Hide the group selection", + "Hide the label offset section": "Hide the label offset section", + "Hide the letter spacing section": "Hide the letter spacing section", + "High Island": "High Island", + "Highland": "Highland", + "Hill: small blob": "Hill: small blob", + "Holy State": "Holy State", + "Horde": "Horde", + "Horsehead": "Horsehead", + "Horsehead Edgy": "Horsehead Edgy", + "Hunting": "Hunting", + "ia": "ia", + "Ice": "Ice", + "Icebergs and glaciers: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "Icebergs and glaciers: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style", + "Icons": "Icons", + "If height is greater or equal to X and less or equal to Y, then perform an operation Z with operand V": "If height is greater or equal to X and less or equal to Y, then perform an operation Z with operand V", + "Image scale relative to image size (e.g. 5x)": "Image scale relative to image size (e.g. 5x)", + "Imamah": "Imamah", + "Increase font": "Increase font", + "Increases the polygon count to smooth the sharp points. Please note that it can take some time to calculate": "Increases the polygon count to smooth the sharp points. Please note that it can take some time to calculate", + "Indented 3": "Indented 3", + "Inherit": "Inherit", + "Invert heightmap along the axes": "Invert heightmap along the axes", + "Iran small": "Iran small", + "Iron Hills": "Iron Hills", + "Island": "Island", + "Islands": "Islands", + "Isthmus": "Isthmus", + "Iterate battle": "Iterate battle", + "Join Discord server": "Join Discord server", + "Kelvin (K)": "Kelvin (K)", + "Khaganate": "Khaganate", + "Khanate": "Khanate", + "Kilometer (km)": "Kilometer (km)", + "Kingdom": "Kingdom", + "Kite": "Kite", + "Kiwiroo": "Kiwiroo", + "Labels": "Labels", + "Labels: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "Labels: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style", + "Lake": "Lake", + "Lake area in selected units": "Lake area in selected units", + "Lake average depth in selected units": "Lake average depth in selected units", + "Lake elevation in selected units": "Lake elevation in selected units", + "Lake maximum depth in selected units": "Lake maximum depth in selected units", + "Lake outlet river": "Lake outlet river", + "Lake shore length in selected units": "Lake shore length in selected units", + "Lake water supply. If supply > evaporation and there is an outlet, the lake water is fresh. If supply is very low, the lake becomes dry": "Lake water supply. If supply > evaporation and there is an outlet, the lake water is fresh. If supply is very low, the lake becomes dry", + "Lakes": "Lakes", + "Land": "Land", + "Landgrave": "Landgrave", + "Landing phase. Amphibious attack. Units are vulnerable against prepared defense": "Landing phase. Amphibious attack. Units are vulnerable against prepared defense", + "Landing: amphibious attack": "Landing: amphibious attack", + "Landmass": "Landmass", + "Landmass area in selected units": "Landmass area in selected units", + "Layers": "Layers", + "Layers preset:": "Layers preset:", + "Layers reduction rate. Increase to improve performance": "Layers reduction rate. Increase to improve performance", + "League": "League", + "League (lg)": "League (lg)", + "Legend": "Legend", + "Length of Meridian in pixels": "Length of Meridian in pixels", + "Length of Meridian is friendly units (depends on user configuration)": "Length of Meridian is friendly units (depends on user configuration)", + "Length of Meridian. Almost half of the equator length": "Length of Meridian. Almost half of the equator length", + "Line simplification rate. Increase to slightly improve performance": "Line simplification rate. Increase to slightly improve performance", + "Line: select two points to change heights along the line": "Line: select two points to change heights along the line", + "Linear": "Linear", + "Load fully-functional map (.map or .gz formats)": "Load fully-functional map (.map or .gz formats)", + "Load Google Translate and select language. Note that automatic translation can break some page functional. In this case reset the language back to English or refresh the page": "Load Google Translate and select language. Note that automatic translation can break some page functional. In this case reset the language back to English or refresh the page", + "Load image to convert": "Load image to convert", + "Load map file (.map or .gz) file from URL. Note that the server should allow CORS": "Load map file (.map or .gz) file from URL. Note that the server should allow CORS", + "Load map file (.map or .gz) from your Dropbox": "Load map file (.map or .gz) from your Dropbox", + "Load map file (.map or .gz) from your local disk": "Load map file (.map or .gz) from your local disk", + "Load map from browser storage (if saved before)": "Load map from browser storage (if saved before)", + "Local font": "Local font", + "Lock or unlock all burgs": "Lock or unlock all burgs", + "Lock or unlock all routes": "Lock or unlock all routes", + "Lock seed (click on lock icon) if you want template to generate the same heightmap each time": "Lock seed (click on lock icon) if you want template to generate the same heightmap each time", + "Looting phase. Plunder the town. Units strength increased": "Looting phase. Plunder the town. Units strength increased", + "Low Island": "Low Island", + "Lower brush: drag to decrease height of cells in radius by Power value": "Lower brush: drag to decrease height of cells in radius by Power value", + "Mandate": "Mandate", + "Maneuvering phase. Units strength reduced": "Maneuvering phase. Units strength reduced", + "Manually re-assign biomes to not follow the default moisture/temperature pattern": "Manually re-assign biomes to not follow the default moisture/temperature pattern", + "Manually re-assign provinces": "Manually re-assign provinces", + "Map coordinates on globe": "Map coordinates on globe", + "Map generation settings. Generate a new map to apply the settings": "Map generation settings. Generate a new map to apply the settings", + "Map presentation in 3D scene. Works best for heightmap. Cannot be used for editing": "Map presentation in 3D scene. Works best for heightmap. Cannot be used for editing", + "Map seed number. Press 'Enter' to apply. Seed produces the same map only if canvas size and options are the same": "Map seed number. Press 'Enter' to apply. Seed produces the same map only if canvas size and options are the same", + "Marble big": "Marble big", + "Marble Blue": "Marble Blue", + "Marble Blue big": "Marble Blue big", + "Marble small": "Marble small", + "Marches": "Marches", + "Margrave": "Margrave", + "Marker element size in pixels": "Marker element size in pixels", + "Marker icon": "Marker icon", + "Marker icon shift (by X and by Y axis), percent. Set to 50 to position icon in center": "Marker icon shift (by X and by Y axis), percent. Set to 50 to position icon in center", + "Marker icon sizes in pixels": "Marker icon sizes in pixels", + "Marker marker element and icon sizes in pixels": "Marker marker element and icon sizes in pixels", + "Marker pin shape": "Marker pin shape", + "Marker type. Style changes will apply to all markers of the same type. Leave blank if the marker is unique": "Marker type. Style changes will apply to all markers of the same type. Leave blank if the marker is unique", + "Markers": "Markers", + "Markers number": "Markers number", + "Markers: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "Markers: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style", + "Mars big": "Mars big", + "Mars small": "Mars small", + "Mask: lower cells near edges or in map center": "Mask: lower cells near edges or in map center", + "Mauritania small": "Mauritania small", + "Maximal possible zoom level (should be > 1)": "Maximal possible zoom level (should be > 1)", + "Maximum number of iterations taken to resolve depressions. Increase if you have rivers ending nowhere": "Maximum number of iterations taken to resolve depressions. Increase if you have rivers ending nowhere", + "Mediterranean": "Mediterranean", + "Melee phase. Melee units excel": "Melee phase. Melee units excel", + "Mercury big": "Mercury big", + "Mercury small": "Mercury small", + "Meters (m)": "Meters (m)", + "Mile (mi)": "Mile (mi)", + "Military": "Military", + "Military forces: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "Military forces: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style", + "Military map": "Military map", + "Military personnel rate (% of state population). Depends on war alert. Click to sort": "Military personnel rate (% of state population). Depends on war alert. Click to sort", + "Mimimal possible zoom level (should be > 0)": "Mimimal possible zoom level (should be > 0)", + "Moria Orc": "Moria Orc", + "Most Serene Republic": "Most Serene Republic", + "Move selected relief icon back": "Move selected relief icon back", + "Move selected relief icon to front": "Move selected relief icon to front", + "Multiply all heights in range by factor": "Multiply all heights in range by factor", + "Municipality": "Municipality", + "Names data: a comma separated list of source names used for names generation": "Names data: a comma separated list of source names used for names generation", + "Nautical league (nlg)": "Nautical league (nlg)", + "Nautical mile (nmi)": "Nautical mile (nmi)", + "Naval": "Naval", + "Naval Battle: naval units combat": "Naval Battle: naval units combat", + "New Map!": "New Map!", + "Night": "Night", + "No": "No", + "No clipping": "No clipping", + "No outline": "No outline", + "Noldor": "Noldor", + "Nomadic": "Nomadic", + "Noon": "Noon", + "Number of burgs in group": "Number of burgs in group", + "Number of columns": "Number of columns", + "Number of lake inlet rivers": "Number of lake inlet rivers", + "Number of land biomes": "Number of land biomes", + "Number of rows": "Number of rows", + "Number of zones": "Number of zones", + "Occupation zone": "Occupation zone", + "Ocean": "Ocean", + "Old French": "Old French", + "Old World": "Old World", + "Oligarchy": "Oligarchy", + "Open Battle Simulation Tutorial": "Open Battle Simulation Tutorial", + "Open burg map in a new tab": "Open burg map in a new tab", + "Open Image Converter": "Open Image Converter", + "Open last saved map": "Open last saved map", + "Open Military Forces Tutorial": "Open Military Forces Tutorial", + "Open previously downloaded style file": "Open previously downloaded style file", + "Open previously downloaded template": "Open previously downloaded template", + "Open route creation dialog": "Open route creation dialog", + "Open template editor": "Open template editor", + "Open Template Editor Tutorial": "Open Template Editor Tutorial", + "Open wiki article scale and distance to know about grid scale": "Open wiki article scale and distance to know about grid scale", + "Options": "Options", + "Oval": "Oval", + "Pangea": "Pangea", + "Parish": "Parish", + "Patriarchate": "Patriarchate", + "Pattern 1": "Pattern 1", + "Pattern 2": "Pattern 2", + "Pattern 3": "Pattern 3", + "Pattern 4": "Pattern 4", + "Pattern 5": "Pattern 5", + "Pattern 6": "Pattern 6", + "Pavise": "Pavise", + "Peninsula": "Peninsula", + "Pennant": "Pennant", + "Pennon": "Pennon", + "Pentagon": "Pentagon", + "Pergamena small": "Pergamena small", + "Physical map": "Physical map", + "Pin": "Pin", + "Pin fill and stroke colors": "Pin fill and stroke colors", + "Pin it": "Pin it", + "Pit: round depression": "Pit: round depression", + "Place icons in a bulk": "Place icons in a bulk", + "Places of interest": "Places of interest", + "Plaster": "Plaster", + "Polish": "Polish", + "Political map": "Political map", + "Populate with letters that can be used twice in a row (geminates)": "Populate with letters that can be used twice in a row (geminates)", + "Population": "Population", + "Population map: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "Population map: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style", + "Precipitation": "Precipitation", + "Precipitation map: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "Precipitation map: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style", + "Prefecture": "Prefecture", + "Preview heightmap in 3D scene": "Preview heightmap in 3D scene", + "Principality": "Principality", + "Project map on globe. Cannot be used for editing": "Project map on globe. Cannot be used for editing", + "Protectorate": "Protectorate", + "Provide a name for the new group": "Provide a name for the new group", + "Province": "Province", + "Province form name": "Province form name", + "Province full name": "Province full name", + "Province short name": "Province short name", + "Provinces": "Provinces", + "Provinces displayed": "Provinces displayed", + "Provinces map": "Provinces map", + "Provinces: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "Provinces: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style", + "Pure landmass": "Pure landmass", + "Pursue phase. Mounted units excel": "Pursue phase. Mounted units excel", + "Pursue phase. Try to intercept fleeing attackers. Mounted units excel": "Pursue phase. Try to intercept fleeing attackers. Mounted units excel", + "Pursue phase. Units strength increased": "Pursue phase. Units strength increased", + "Quick preset lighting for different times of day": "Quick preset lighting for different times of day", + "Raise brush: increase height of cells in radius by Power value": "Raise brush: increase height of cells in radius by Power value", + "Random": "Random", + "Random factor for attackers. Click to re-roll": "Random factor for attackers. Click to re-roll", + "Random factor for defenders. Click to re-roll": "Random factor for defenders. Click to re-roll", + "Randomize Iceberg shape": "Randomize Iceberg shape", + "Range: elongated elevation": "Range: elongated elevation", + "Re-assign zones": "Re-assign zones", + "Re-generate examples based on provided data": "Re-generate examples based on provided data", + "Recalculate military forces based on current options": "Recalculate military forces based on current options", + "Recolor listed provinces based on state color": "Recolor listed provinces based on state color", + "Recommended maximum name length": "Recommended maximum name length", + "Recommended minimum name length": "Recommended minimum name length", + "Rectangular": "Rectangular", + "Redo the action": "Redo the action", + "Redo the action (Ctrl + Y)": "Redo the action (Ctrl + Y)", + "Refresh the Editor": "Refresh the Editor", + "Refresh the overview screen": "Refresh the overview screen", + "Refresh the Overview screen": "Refresh the Overview screen", + "Regenerate burg names based on assigned culture": "Regenerate burg names based on assigned culture", + "Regenerate diplomatical relations": "Regenerate diplomatical relations", + "Regenerate emblem": "Regenerate emblem", + "Regenerate era": "Regenerate era", + "Regenerate legend for this regiment": "Regenerate legend for this regiment", + "Regenerate map name": "Regenerate map name", + "Regenerate relief icons based on current biomes and elevation": "Regenerate relief icons based on current biomes and elevation", + "Regenerate rivers and allow water flow to change heights and form new lakes. Better to keep checked": "Regenerate rivers and allow water flow to change heights and form new lakes. Better to keep checked", + "Regiment emblem": "Regiment emblem", + "Regiment emblem and name. Click to sort by name": "Regiment emblem and name. Click to sort by name", + "Regiment type (land or naval). Click to change": "Regiment type (land or naval). Click to change", + "Region": "Region", + "Release all provinces. It will make all provinces with burgs independent": "Release all provinces. It will make all provinces with burgs independent", + "Relief": "Relief", + "Relief and biome icons: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "Relief and biome icons: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style", + "Relief Icons": "Relief Icons", + "Religions": "Religions", + "Religions map": "Religions map", + "Religions: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "Religions: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style", + "Relocate burg. Click on map to move the burg": "Relocate burg. Click on map to move the burg", + "Remove all provinces. States will remain as they are": "Remove all provinces. States will remain as they are", + "Remove all rivers": "Remove all rivers", + "Remove all routes": "Remove all routes", + "Remove all rulers from the map. Click on ruler label to remove a ruler separately": "Remove all rulers from the map. Click on ruler label to remove a ruler separately", + "Remove all unlocked burgs except for capitals. To remove a capital remove its state first": "Remove all unlocked burgs except for capitals. To remove a capital remove its state first", + "Remove all unlocked markers": "Remove all unlocked markers", + "Remove icons in a bulk": "Remove icons in a bulk", + "Remove non-capital burg": "Remove non-capital burg", + "Remove regiment": "Remove regiment", + "Remove river": "Remove river", + "Remove route": "Remove route", + "Remove selected relief icon or icon type": "Remove selected relief icon or icon type", + "Remove the element": "Remove the element", + "Remove the group": "Remove the group", + "Remove the Group with all labels": "Remove the Group with all labels", + "Remove the label": "Remove the label", + "Remove the marker": "Remove the marker", + "Remove the step": "Remove the step", + "Remove this note": "Remove this note", + "Renaissance": "Renaissance", + "Rename burgs in bulk": "Rename burgs in bulk", + "Render cells below the sea level (with height less than 20)": "Render cells below the sea level (with height less than 20)", + "Render heightmap data as a small monochrome image": "Render heightmap data as a small monochrome image", + "Rendering order: higher values are rendered on top": "Rendering order: higher values are rendered on top", + "Republic": "Republic", + "Rescaler: change height if condition is fulfilled": "Rescaler: change height if condition is fulfilled", + "Reservation": "Reservation", + "Reset diplomatical relations of selected state to Neutral": "Reset diplomatical relations of selected state to Neutral", + "Reset language to English": "Reset language to English", + "Reset map zoom": "Reset map zoom", + "Restore default canvas size": "Restore default canvas size", + "Restore default namesbase": "Restore default namesbase", + "Restore default theme color: pale magenta": "Restore default theme color: pale magenta", + "Restore default units settings": "Restore default units settings", + "Restore default zoom extent: [1, 20]": "Restore default zoom extent: [1, 20]", + "Restore the defaults and re-define biomes based on current moisture and temperature": "Restore the defaults and re-define biomes based on current moisture and temperature", + "Retreat phase. Units strength reduced": "Retreat phase. Units strength reduced", + "Rhombille grid": "Rhombille grid", + "River": "River", + "River discharge (flux power)": "River discharge (flux power)", + "River drainage basin (watershed)": "River drainage basin (watershed)", + "River length in selected units": "River length in selected units", + "River mouth width in selected units": "River mouth width in selected units", + "River source additional width. Default value is 0": "River source additional width. Default value is 0", + "River width multiplier. Default value is 1": "River width multiplier. Default value is 1", + "Rivers": "Rivers", + "Rivers number": "Rivers number", + "Rivers: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "Rivers: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style", + "Roll dice to update random factor": "Roll dice to update random factor", + "Roman": "Roman", + "Round": "Round", + "Route length in selected units": "Route length in selected units", + "Routes": "Routes", + "Routes number": "Routes number", + "Rulers": "Rulers", + "Rulers: click to toggle, drag to move, click on label to delete. Ctrl + click to edit layer style": "Rulers: click to toggle, drag to move, click on label to delete. Ctrl + click to edit layer style", + "Satrapy": "Satrapy", + "Save biomes-related data as a text file (.csv)": "Save biomes-related data as a text file (.csv)", + "Save burgs-related data as a text file (.csv)": "Save burgs-related data as a text file (.csv)", + "Save current JSON as a new style preset": "Save current JSON as a new style preset", + "Save fully-functional map file": "Save fully-functional map file", + "Save map file to your Dropbox": "Save map file to your Dropbox", + "Save markers data as a text file (.csv)": "Save markers data as a text file (.csv)", + "Save military-related data as a text file (.csv)": "Save military-related data as a text file (.csv)", + "Save OBJ file of the 3d scene": "Save OBJ file of the 3d scene", + "Save provinces-related data as a text file (.csv)": "Save provinces-related data as a text file (.csv)", + "Save rivers-related data as a text file (.csv)": "Save rivers-related data as a text file (.csv)", + "Save routes-related data as a text file (.csv)": "Save routes-related data as a text file (.csv)", + "Save screenshot of the 3d scene": "Save screenshot of the 3d scene", + "Save state relations matrix as a text file (.csv)": "Save state relations matrix as a text file (.csv)", + "Save the project to browser storage only": "Save the project to browser storage only", + "Scale Bar": "Scale Bar", + "Scale Bar: click to toggle. Ctrl + click to edit style": "Scale Bar: click to toggle. Ctrl + click to edit style", + "Select a color below and assign a height value for it": "Select a color below and assign a height value for it", + "Select a color to assign a height value": "Select a color to assign a height value", + "Select a color to re-assign the height value": "Select a color to re-assign the height value", + "Select a distance unit or provide a custom name": "Select a distance unit or provide a custom name", + "Select a group for this coastline": "Select a group for this coastline", + "Select a group for this label": "Select a group for this label", + "Select a map layers preset": "Select a map layers preset", + "Select a set of cultures to be used for names and cultures generation": "Select a set of cultures to be used for names and cultures generation", + "Select a style preset": "Select a style preset", + "Select a style preset. State labels may required regeneration if font is changed": "Select a style preset. State labels may required regeneration if font is changed", + "Select Acacia icon": "Select Acacia icon", + "Select allowed biomes": "Select allowed biomes", + "Select allowed cultures": "Select allowed cultures", + "Select allowed features": "Select allowed features", + "Select allowed religions": "Select allowed religions", + "Select allowed states": "Select allowed states", + "Select an altitude unit or provide a custom name": "Select an altitude unit or provide a custom name", + "Select an element to edit its style": "Select an element to edit its style", + "Select an element to edit its style (list is ordered alphabetically)": "Select an element to edit its style (list is ordered alphabetically)", + "Select any type of icons": "Select any type of icons", + "Select background filter": "Select background filter", + "Select base template": "Select base template", + "Select base to edit": "Select base to edit", + "Select burg group. Groups defines burg icon, label size and style": "Select burg group. Groups defines burg icon, label size and style", + "Select burg in province or state": "Select burg in province or state", + "Select burg type. Type slightly affects emblem generation": "Select burg type. Type slightly affects emblem generation", + "Select Cactus icon": "Select Cactus icon", + "Select color scheme for the element": "Select color scheme for the element", + "Select Conifer Tree icon": "Select Conifer Tree icon", + "Select Dead Tree icon": "Select Dead Tree icon", + "Select Deciduous Tree icon": "Select Deciduous Tree icon", + "Select dominant culture": "Select dominant culture", + "Select Dune icon": "Select Dune icon", + "Select element group": "Select element group", + "Select element id": "Select element id", + "Select emblem shape. Can be changed indivudually in Emblem editor": "Select emblem shape. Can be changed indivudually in Emblem editor", + "Select file and create a link to share with your friends": "Select file and create a link to share with your friends", + "Select filter for element. Please note filters may cause performance issues!": "Select filter for element. Please note filters may cause performance issues!", + "Select filter for states fill. Please note filters may cause performance issues!": "Select filter for states fill. Please note filters may cause performance issues!", + "Select font": "Select font", + "Select font adding method": "Select font adding method", + "Select form name": "Select form name", + "Select format to download image or export map data": "Select format to download image or export map data", + "Select Grass icon": "Select Grass icon", + "Select grid overlay type": "Select grid overlay type", + "Select group icon": "Select group icon", + "Select group to be assigned if burg doesn't pass the criteria for other groups": "Select group to be assigned if burg doesn't pass the criteria for other groups", + "Select halo effect power (blur). Set to 0 to make it solid line": "Select halo effect power (blur). Set to 0 to make it solid line", + "Select Hill icon": "Select Hill icon", + "Select how many distance units are in one pixel": "Select how many distance units are in one pixel", + "Select icon": "Select icon", + "Select lake type (group)": "Select lake type (group)", + "Select line interpolation type": "Select line interpolation type", + "Select marker type for newly added markers.": "Select marker type for newly added markers.", + "Select mode of operation": "Select mode of operation", + "Select Mountain icon": "Select Mountain icon", + "Select ocean pattern": "Select ocean pattern", + "Select Palm icon": "Select Palm icon", + "Select parent river": "Select parent river", + "Select precreated vignette": "Select precreated vignette", + "Select province in state": "Select province in state", + "Select rendering model. Try to set to 'optimized' if you face performance issues": "Select rendering model. Try to set to 'optimized' if you face performance issues", + "Select route group": "Select route group", + "Select set of relief icons. All relief icons will be regenerated": "Select set of relief icons. All relief icons will be regenerated", + "Select shape of the emblem": "Select shape of the emblem", + "Select Snow Conifer Tree icon": "Select Snow Conifer Tree icon", + "Select Snow Mountain icon": "Select Snow Mountain icon", + "Select speech synthesis voice to pronounce generated names": "Select speech synthesis voice to pronounce generated names", + "Select state": "Select state", + "Select state labels mode: display short or full names": "Select state labels mode: display short or full names", + "Select Swamp icon": "Select Swamp icon", + "Select Temperature scale": "Select Temperature scale", + "Select template or precreated heightmap to be used on generation": "Select template or precreated heightmap to be used on generation", + "Select texture image. Big textures can highly affect performance": "Select texture image. Big textures can highly affect performance", + "Select Volcano icon": "Select Volcano icon", + "Seneschalty": "Seneschalty", + "Set a filter to be applied to the map in general": "Set a filter to be applied to the map in general", + "Set a North-South map shift, set to 50 to make map center lie on Equator": "Set a North-South map shift, set to 50 to make map center lie on Equator", + "Set a West-East map shift, set to 50 to make map center lie on Prime meridian": "Set a West-East map shift, set to 50 to make map center lie on Prime meridian", + "Set autosave interval in minutes. Set 0 to disable autosave. Map is saved to browser memory": "Set autosave interval in minutes. Set 0 to disable autosave. Map is saved to browser memory", + "Set background color": "Set background color", + "Set background element padding: top, right, bottom, left (in pixels)": "Set background element padding: top, right, bottom, left (in pixels)", + "Set background fill color": "Set background fill color", + "Set background opacity": "Set background opacity", + "Set background opacity. 0: transparent, 1: solid": "Set background opacity. 0: transparent, 1: solid", + "Set background stroke color and width": "Set background stroke color and width", + "Set bar and font size": "Set bar and font size", + "Set bar color for rural population": "Set bar color for rural population", + "Set bar color for urban population": "Set bar color for urban population", + "Set battle name": "Set battle name", + "Set brush radius for icons placement on deletion": "Set brush radius for icons placement on deletion", + "Set burg emblems size multiplier": "Set burg emblems size multiplier", + "Set burg population": "Set burg population", + "Set clipping. Only non-clipped part will be visible": "Set clipping. Only non-clipped part will be visible", + "Set curve profile": "Set curve profile", + "Set custom burg map URL": "Set custom burg map URL", + "Set dialog and tool windows transparency": "Set dialog and tool windows transparency", + "Set element name": "Set element name", + "Set fill color": "Set fill color", + "Set fill transparency. Set to 0 to make it fully transparent": "Set fill transparency. Set to 0 to make it fully transparent", + "Set font size": "Set font size", + "Set globe rotation speed. Set to 0 is you want to toggle off the rotation": "Set globe rotation speed. Set to 0 is you want to toggle off the rotation", + "Set globe texture resolution": "Set globe texture resolution", + "Set grid cells scale multiplier": "Set grid cells scale multiplier", + "Set height exponent, i.e. a value for altitude change sharpness. Altitude affects temperature and hence biomes": "Set height exponent, i.e. a value for altitude change sharpness. Altitude affects temperature and hence biomes", + "Set height for all cells to 0 (erase the map)": "Set height for all cells to 0 (erase the map)", + "Set height scale": "Set height scale", + "Set how many people are in one population point": "Set how many people are in one population point", + "Set icon size": "Set icon size", + "Set icon size for individual icon or for bulk placement": "Set icon size for individual icon or for bulk placement", + "Set icon stroke linejoin": "Set icon stroke linejoin", + "Set image size in pixels": "Set image size in pixels", + "Set label shift along X and Y axes": "Set label shift along X and Y axes", + "Set label shift along Y axis": "Set label shift along Y axis", + "Set labels color": "Set labels color", + "Set labels size": "Set labels size", + "Set letter spacing": "Set letter spacing", + "Set map rotation speed. Set to 0 is you want to toggle off the rotation": "Set map rotation speed. Set to 0 is you want to toggle off the rotation", + "Set map size relative to the world size": "Set map size relative to the world size", + "Set maximum number of colors": "Set maximum number of colors", + "Set maximum number of items in one column": "Set maximum number of items in one column", + "Set mesh texture resolution": "Set mesh texture resolution", + "Set min population constraint": "Set min population constraint", + "Set minimum and maximum possible zoom level": "Set minimum and maximum possible zoom level", + "Set number of points to be used for graph generation. Highly affects performance. 10K is the only recommended value": "Set number of points to be used for graph generation. Highly affects performance. 10K is the only recommended value", + "Set ocean color": "Set ocean color", + "Set ocean pattern opacity": "Set ocean pattern opacity", + "Set opacity of the loaded image": "Set opacity of the loaded image", + "Set opacity. 0: transparent, 1: solid": "Set opacity. 0: transparent, 1: solid", + "Set original map size on generation. It cannot be changed later. Always keep canvas size equal to your screen size or less. The best option is to use the default value. For full-globe maps use aspect ratio 2:1": "Set original map size on generation. It cannot be changed later. Always keep canvas size equal to your screen size or less. The best option is to use the default value. For full-globe maps use aspect ratio 2:1", + "Set points (cells) number of the submap": "Set points (cells) number of the submap", + "Set position of the Scale bar bottom right corner (in percents)": "Set position of the Scale bar bottom right corner (in percents)", + "Set precipitation - water amount clouds can bring. Defines rivers and biomes generation. Keep around 100% for default generation": "Set precipitation - water amount clouds can bring. Defines rivers and biomes generation. Keep around 100% for default generation", + "Set province emblems size multiplier": "Set province emblems size multiplier", + "Set regiment box size. All regiments will be redrawn on change (position will defaulted)": "Set regiment box size. All regiments will be redrawn on change (position will defaulted)", + "Set relative size for the particular label": "Set relative size for the particular label", + "Set relative size for the particular label (% of group default)": "Set relative size for the particular label (% of group default)", + "Set scene lightness": "Set scene lightness", + "Set size of particular Emblem. To hide set to 0. To change the entire category go to Menu ⭢ Style ⭢ Emblems": "Set size of particular Emblem. To hide set to 0. To change the entire category go to Menu ⭢ Style ⭢ Emblems", + "Set size, select file format and download emblem image": "Set size, select file format and download emblem image", + "Set sky and water color": "Set sky and water color", + "Set spacing between relief icons": "Set spacing between relief icons", + "Set starting offset for the particular label": "Set starting offset for the particular label", + "Set starting offset for the particular label (% along the path)": "Set starting offset for the particular label (% along the path)", + "Set starting offset numerically": "Set starting offset numerically", + "Set state and cultures growth rate. Defines how many lands will stay neutral": "Set state and cultures growth rate. Defines how many lands will stay neutral", + "Set state emblems size multiplier": "Set state emblems size multiplier", + "Set states fill opacity. 0: invisible, 1: solid": "Set states fill opacity. 0: invisible, 1: solid", + "Set states halo effect opacity. 0: invisible, 1: solid": "Set states halo effect opacity. 0: invisible, 1: solid", + "Set states halo effect width": "Set states halo effect width", + "Set stroke color": "Set stroke color", + "Set stroke dash array (e.g. 5 2) and linecap": "Set stroke dash array (e.g. 5 2) and linecap", + "Set stroke width": "Set stroke width", + "Set sun position (x, y) and color": "Set sun position (x, y) and color", + "Set temperature at equator": "Set temperature at equator", + "Set text shadow": "Set text shadow", + "Set the letter spacing size for this label": "Set the letter spacing size for this label", + "Set the North Pole average yearly temperature": "Set the North Pole average yearly temperature", + "Set the South Pole average yearly temperature": "Set the South Pole average yearly temperature", + "Set theme hue for dialogs and tool windows": "Set theme hue for dialogs and tool windows", + "Set tooltip size": "Set tooltip size", + "Set urban density: average population per building in Medieval Fantasy City Generator": "Set urban density: average population per building in Medieval Fantasy City Generator", + "Set urban population modifier. Change to increase or descrese burgs population": "Set urban population modifier. Change to increase or descrese burgs population", + "Set user interface size. Please note browser zoom also affects interface size (Ctrl + or Ctrl - to change)": "Set user interface size. Please note browser zoom also affects interface size (Ctrl + or Ctrl - to change)", + "Set view node": "Set view node", + "Set vignette blue propagation (in pixels)": "Set vignette blue propagation (in pixels)", + "Set vignette X and Y radius (in percents)": "Set vignette X and Y radius (in percents)", + "Set what Generator should do on load": "Set what Generator should do on load", + "Set wind (compass) rose size": "Set wind (compass) rose size", + "Share on Facebook": "Share on Facebook", + "Shattered": "Shattered", + "Shelling phase. Naval artillery bombardment of enemy fleet": "Shelling phase. Naval artillery bombardment of enemy fleet", + "Sheltering phase. Hide behind the walls and wait": "Sheltering phase. Hide behind the walls and wait", + "Shield": "Shield", + "Shieldy": "Shieldy", + "Shift by x axis in pixels": "Shift by x axis in pixels", + "Shift by y axis in pixels": "Shift by y axis in pixels", + "Shift texture by x axis in pixels": "Shift texture by x axis in pixels", + "Shift texture by y axis in pixels": "Shift texture by y axis in pixels", + "Shift the element by axes": "Shift the element by axes", + "Shift the texture by axes": "Shift the texture by axes", + "Shift wind (compass) rose by axes": "Shift wind (compass) rose by axes", + "Shire": "Shire", + "Shock phase. Units are not prepared for a defense": "Shock phase. Units are not prepared for a defense", + "Shock phase. Units strength reduced": "Shock phase. Units strength reduced", + "Shogunat": "Shogunat", + "Short names": "Short names", + "Show": "Show", + "Show burgs bubble chart": "Show burgs bubble chart", + "Show emblem associated area or place": "Show emblem associated area or place", + "Show only zones of selected type": "Show only zones of selected type", + "Show provinces chart": "Show provinces chart", + "Show regiments list": "Show regiments list", + "Show relations history": "Show relations history", + "Show relations matrix": "Show relations matrix", + "Show rescaler slider": "Show rescaler slider", + "Show seed history to apply a previous seed": "Show seed history to apply a previous seed", + "Show style edit section": "Show style edit section", + "Show temperature graph for the burg": "Show temperature graph for the burg", + "Show the edit label text section": "Show the edit label text section", + "Show the elevation profile for the river": "Show the elevation profile for the river", + "Show the elevation profile for the route": "Show the elevation profile for the route", + "Show the font size section": "Show the font size section", + "Show the group selection": "Show the group selection", + "Show the label offset section": "Show the label offset section", + "Show the letter spacing section": "Show the letter spacing section", + "Shows whether the burg has a citadel (castle). Click to toggle": "Shows whether the burg has a citadel (castle). Click to toggle", + "Shows whether the burg has a shanty town. Click to toggle": "Shows whether the burg has a shanty town. Click to toggle", + "Shows whether the burg is a port. Click to toggle": "Shows whether the burg is a port. Click to toggle", + "Shows whether the burg is a religious center. Click to toggle": "Shows whether the burg is a religious center. Click to toggle", + "Shows whether the burg is a state capital. Click to toggle": "Shows whether the burg is a state capital. Click to toggle", + "Shows whether the burg is a trade center (has big marketplace). Click to toggle": "Shows whether the burg is a trade center (has big marketplace). Click to toggle", + "Shows whether the burg is walled. Click to toggle": "Shows whether the burg is walled. Click to toggle", + "Shows whether there is already a preset with this name": "Shows whether there is already a preset with this name", + "Siege: burg blockade and storming": "Siege: burg blockade and storming", + "Simple": "Simple", + "Skirmish phase. Ranged units excel": "Skirmish phase. Ranged units excel", + "Smooth 6": "Smooth 6", + "Smooth 9": "Smooth 9", + "Smooth all heights a bit": "Smooth all heights a bit", + "Smooth brush: drag to level height of cells in radius to height of adjacent cells": "Smooth brush: drag to level height of cells in radius to height of adjacent cells", + "Smooth the map replacing cell heights by an average values of its neighbors": "Smooth the map replacing cell heights by an average values of its neighbors", + "Soided paper vertical": "Soided paper vertical", + "Soiled paper horizontal": "Soiled paper horizontal", + "Sortie phase. Make a sortie from besieged town. Melee units excel": "Sortie phase. Make a sortie from besieged town. Melee units excel", + "Spain small": "Spain small", + "Spanish": "Spanish", + "Speak the examples. You can change voice and language in options": "Speak the examples. You can change voice and language in options", + "Speak the name. You can change voice and language in options": "Speak the name. You can change voice and language in options", + "Split map into smaller png tiles and download as zip archive": "Split map into smaller png tiles and download as zip archive", + "Split regiment into 2 separate ones": "Split regiment into 2 separate ones", + "Square": "Square", + "Square 45 degrees grid": "Square 45 degrees grid", + "Square grid": "Square grid", + "Squared": "Squared", + "Squarish": "Squarish", + "Standard 3": "Standard 3", + "Standard 4": "Standard 4", + "Standard view mode that allows to edit the map": "Standard view mode that allows to edit the map", + "Star": "Star", + "Star circled": "Star circled", + "Star circled empty": "Star circled empty", + "Star squared": "Star squared", + "State": "State", + "State borders: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "State borders: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style", + "State form name": "State form name", + "State full name": "State full name", + "State name. Click to sort": "State name. Click to sort", + "State population. Click to sort": "State population. Click to sort", + "State short name": "State short name", + "State-specific": "State-specific", + "States": "States", + "States number": "States number", + "States: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "States: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style", + "Stone big": "Stone big", + "Stone small": "Stone small", + "Storming phase. Storm enemy town. Melee units excel": "Storming phase. Storm enemy town. Melee units excel", + "Strait: centered vertical or horizontal depression": "Strait: centered vertical or horizontal depression", + "Style": "Style", + "Style JSON is getting formed based the current settings, but can be entered manually": "Style JSON is getting formed based the current settings, but can be entered manually", + "Submit to Reddit": "Submit to Reddit", + "Sultanat": "Sultanat", + "Support Ukraine": "Support Ukraine", + "Surprice attack phase. Units strength increased, ranged units excel": "Surprice attack phase. Units strength increased, ranged units excel", + "Surrendering phase. Give up the defense. Units strength reduced": "Surrendering phase. Give up the defense. Units strength reduced", + "Swiss": "Swiss", + "Taklamakan": "Taklamakan", + "Targe": "Targe", + "Targe2": "Targe2", + "Temperature": "Temperature", + "Temperature controls response randomness; higher values mean more creativity, lower values mean more predictability": "Temperature controls response randomness; higher values mean more creativity, lower values mean more predictability", + "Temperature map: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "Temperature map: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style", + "Terracing power. Set to 0 to toggle off": "Terracing power. Set to 0 to toggle off", + "Territory": "Territory", + "Tetrakis square grid": "Tetrakis square grid", + "Tetrarchy": "Tetrarchy", + "Texture": "Texture", + "Texture overlay: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "Texture overlay: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style", + "The {{noun}}": "The {{noun}}", + "The selected layer is not visible. Toogle it on to see style changes effect": "The selected layer is not visible. Toogle it on to see style changes effect", + "Theocracy": "Theocracy", + "Timber Cut big": "Timber Cut big", + "Timber Cut small": "Timber Cut small", + "Toggle 3d labels": "Toggle 3d labels", + "Toggle Azgaar Assistant (help bubble on the bottom right corner)": "Toggle Azgaar Assistant (help bubble on the bottom right corner)", + "Toggle basin highlight mode": "Toggle basin highlight mode", + "Toggle Legend box": "Toggle Legend box", + "Toggle Legend box (shows all non-hidden zones)": "Toggle Legend box (shows all non-hidden zones)", + "Toggle notes box dispay: hide or do not hide the box on mouse move": "Toggle notes box dispay: hide or do not hide the box on mouse move", + "Toggle percentage / absolute values views": "Toggle percentage / absolute values views", + "Toggle province labels. Change size in Menu ⭢ Style ⭢ Provinces": "Toggle province labels. Change size in Menu ⭢ Style ⭢ Provinces", + "Toggle sky mode": "Toggle sky mode", + "Toggle wireframe mode": "Toggle wireframe mode", + "Tool settings that don't affect maps. Changes are getting applied immediately": "Tool settings that don't affect maps. Changes are getting applied immediately", + "Tools": "Tools", + "Total burgs number": "Total burgs number", + "Total cells number": "Total cells number", + "Total land area": "Total land area", + "Total land cells number": "Total land cells number", + "Total map area": "Total map area", + "Total map population": "Total map population", + "Total military forces": "Total military forces", + "Total military personnel (considering crew). Click to sort": "Total military personnel (considering crew). Click to sort", + "Total military personnel (not considering crew). Click to sort": "Total military personnel (not considering crew). Click to sort", + "Total population": "Total population", + "Trade Company": "Trade Company", + "Trade routes: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "Trade routes: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style", + "Triangle": "Triangle", + "Triangle grid (horizontal)": "Triangle grid (horizontal)", + "Triangle grid (vertical)": "Triangle grid (vertical)", + "Tribe": "Tribe", + "Tribes": "Tribes", + "Trihexagonal grid": "Trihexagonal grid", + "Triumvirate": "Triumvirate", + "Trough: elongated depression": "Trough: elongated depression", + "Truncated square grid": "Truncated square grid", + "Try to keep the same size on any map scale, turn off to get size change depending on scale": "Try to keep the same size on any map scale, turn off to get size change depending on scale", + "Tsardom": "Tsardom", + "Turn text path into a straight line": "Turn text path into a straight line", + "Tweet": "Tweet", + "Type full battle name": "Type full battle name", + "Type group name": "Type group name", + "Type place name": "Type place name", + "Type scale bar label, leave blank to hide label": "Type scale bar label, leave blank to hide label", + "Type to change a base name": "Type to change a base name", + "Type to change lake type (group)": "Type to change lake type (group)", + "Type to change river type (e.g. fork, creek, river, brook, stream)": "Type to change river type (e.g. fork, creek, river, brook, stream)", + "Type to change the full name": "Type to change the full name", + "Type to change the short name": "Type to change the short name", + "Type to rename the burg": "Type to rename the burg", + "Type to rename the lake": "Type to rename the lake", + "Type to rename the regiment": "Type to rename the regiment", + "Type to rename the river": "Type to rename the river", + "Type to rename the route": "Type to rename the route", + "Ulus": "Ulus", + "Uncheck to not update state label on name change": "Uncheck to not update state label on name change", + "Undo the latest action": "Undo the latest action", + "Undo the latest action (Ctrl + Z)": "Undo the latest action (Ctrl + Z)", + "Union": "Union", + "Unit icon": "Unit icon", + "Unit military power (used for battle simulation)": "Unit military power (used for battle simulation)", + "Unit name. If name is changed for existing unit, old unit will be replaced": "Unit name. If name is changed for existing unit, old unit will be replaced", + "Unit type to apply special rules on forces recalculation": "Unit type to apply special rules on forces recalculation", + "United Hordes": "United Hordes", + "United Kingdom": "United Kingdom", + "United Provinces": "United Provinces", + "United Republic": "United Republic", + "United States": "United States", + "United Tribes": "United Tribes", + "Update the scene": "Update the scene", + "Upload a namesbase from PC, extending the current set": "Upload a namesbase from PC, extending the current set", + "Upload a namesbase from PC, replacing the current set": "Upload a namesbase from PC, replacing the current set", + "Upload notes from PC": "Upload notes from PC", + "Upload png, jpg or svg image from Armoria or other sources as emblem": "Upload png, jpg or svg image from Armoria or other sources as emblem", + "Upload prepared SVG image (SVG from Armoria or SVG processed with 'Optimize vector' tool)": "Upload prepared SVG image (SVG from Armoria or SVG processed with 'Optimize vector' tool)", + "Upload SVG or PNG image from any source. Make sure background is transparent": "Upload SVG or PNG image from any source. Make sure background is transparent", + "UrukHai": "UrukHai", + "Use external tool to compress/resize raster images before upload": "Use external tool to compress/resize raster images before upload", + "Use external tool to optimize vector images before upload": "Use external tool to optimize vector images before upload", + "Versta (vr)": "Versta (vr)", + "Vesica Piscis": "Vesica Piscis", + "Viceroyalty": "Viceroyalty", + "Vignette": "Vignette", + "Vignette (border fading): click to toggle. Ctrl + click to edit style": "Vignette (border fading): click to toggle. Ctrl + click to edit style", + "Vignette rectangle position (in percents)": "Vignette rectangle position (in percents)", + "Volcano": "Volcano", + "Waiting phase. Cannot pursue fleeing naval": "Waiting phase. Cannot pursue fleeing naval", + "War Alert. Modifier to military forces number, depends of political situation. Click to sort": "War Alert. Modifier to military forces number, depends of political situation. Click to sort", + "Watabou capital": "Watabou capital", + "Watabou caravanserai": "Watabou caravanserai", + "Watabou city": "Watabou city", + "Watabou fort": "Watabou fort", + "Watabou hamlet": "Watabou hamlet", + "Watabou monastery": "Watabou monastery", + "Watabou town": "Watabou town", + "Watabou trade post": "Watabou trade post", + "Watabou village": "Watabou village", + "Wedged": "Wedged", + "Wind (Compass) Rose: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "Wind (Compass) Rose: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style", + "Wind Rose": "Wind Rose", + "Withdrawal phase. Naval units try to escape enemy fleet": "Withdrawal phase. Naval units try to escape enemy fleet", + "X axis position in percentage (minX-maxX or X)": "X axis position in percentage (minX-maxX or X)", + "Y axis position in percentage (minY-maxY or Y)": "Y axis position in percentage (minY-maxY or Y)", + "Zone area": "Zone area", + "Zone cells count": "Zone cells count", + "Zone description": "Zone description", + "Zone population": "Zone population", + "Zone type": "Zone type", + "Zones": "Zones", + "Zones: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "Zones: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style", + "Zoom map and center view in the burg": "Zoom map and center view in the burg", + "Сhase phase. Naval units pursue and rarely shell enemy fleet": "Сhase phase. Naval units pursue and rarely shell enemy fleet" +} diff --git a/public/locales/fr/lang.json b/public/locales/fr/lang.json new file mode 100644 index 00000000..b6c6bd1d --- /dev/null +++ b/public/locales/fr/lang.json @@ -0,0 +1,1188 @@ +{ + "{{adjective}} {{noun}}": "{{noun}} {{adjective, gender}}", + "{{noun}} of {{complement}}": "{{noun}} {{complement, of}}", + "About": "À propos", + "Activate/deactivate group": "", + "Add a custom biome": "", + "Add a font": "", + "Add a new burg. Hold Shift to add multiple": "", + "Add a new marker. Hold Shift to add multiple": "", + "Add a new province. Hold Shift to add multiple": "", + "Add additional marker of that type": "", + "Add an Iceberg (click on map)": "", + "Add new namesbase": "", + "Add new Regiment": "", + "Add new zone layer": "", + "Add or subtract value from all heights in range": "", + "Add regiment to the battle": "", + "Add route group": "", + "Air Battle: maneuring fight of avia units": "", + "Align brush: drag to set height of cells in radius to height of the cell at mousepoint": "", + "All-world": "", + "Allow brush to change only land cells and hence restrict the coastline modification": "", + "Allow system to apply filter automatically based on zoom level": "", + "Allow system to hide emblem groups if their size in too small or too big on that scale": "", + "Allow system to hide labels if their size in too small or too big on that scale": "", + "Allow system to rescale labels on zoom": "", + "Allow to drag map beyond canvas borders": "", + "Ambush: surprise attack": "", + "Analyze namesbase to get a validity and quality overview": "", + "Anchor Icons": "", + "Antique big": "", + "Antique small": "", + "Apply a filter": "", + "Apply assignment": "", + "Apply current assignment": "", + "Archipelago": "Archipel", + "Area": "", + "Atoll": "Atoll", + "Attach regiment to another one (include this regiment to another one)": "", + "Attack foreign regiment": "", + "Attackers morale: ": "", + "Attackers strength during this phase. Strength defines dealt damage": "", + "Auto": "", + "Auto-assign colors based on hue (good for colored images)": "", + "Auto-assign colors based on liminosity (good for monochrome images)": "", + "Auto-assign colors using generator scheme (for exported colored heightmaps)": "", + "Automatically add river starting from clicked cell. Hold Shift to add multiple": "", + "Autonomy": "", + "Average area": "", + "Average discharge": "", + "Average forces rate per state": "", + "Average length": "", + "Average military forces per state": "", + "Average mouth width": "", + "Average number of people in crew (used for total personnel calculation)": "", + "Average population": "", + "Average War Alert": "", + "Banner": "", + "Barony": "Baronnie", + "Baroque": "Baroque", + "Battle type. Click to change": "", + "Best performance": "", + "Best quality": "", + "Beylik": "Beylik", + "Biomes": "Biomes", + "Biomes map": "Carte des biomes", + "Biomes: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "", + "Bishopric": "Évêché", + "Blob maximum height, use hyphen to get a random number in range": "", + "Blobs to add, use hyphen to get a random number in range": "", + "Blockade phase. Prepare or hold the blockade": "", + "Boarding phase. Melee units go aboard": "", + "Boeotian": "Béotien", + "Bombardment phase. Attack enemy with machinery units": "", + "Borders": "Frontières", + "Brotherhood": "Confrérie", + "Bubble": "", + "Burg average yearly temperature": "", + "Burg emblem. Click to edit": "", + "Burg height above mean sea level": "", + "Burg Icons": "", + "Burg icons: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "", + "Burg map preview": "", + "Burg preview generator": "", + "Burgs displayed": "", + "Butt": "", + "Calculated size of image if combined": "", + "Caliphate": "Califat", + "Cancel assignment": "", + "Cancel battle: roll back results and close the screen": "", + "Cancel the conversion. Previous heightmap will be restored": "", + "Cancel the creation": "", + "Canton": "Canton", + "Canvas size. Can be changed in general options on new map generation": "", + "Captaincy": "Capitainerie", + "Cells": "Cellules", + "Cells structure: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "", + "Chancellery": "Chancellerie", + "Change brush power": "", + "Change brush size. Shortcut: + to increase; – to decrease": "", + "Change height for all cells": "", + "Change Iceberg size": "", + "Change tool power. Shortcut: + to increase; – to decrease": "", + "Check if unit is separate and can be stacked only with units of the same type": "", + "Check to fit burg styles (icon and label size) to the submap scale": "", + "Check to not allow system to automatically hide labels": "", + "Check to render ocean heights": "", + "Chiefdom": "Chefferie", + "Circle": "Cercle", + "Circled": "", + "City-state": "Cité-état", + "Clan": "Clan", + "Click and provide a URL to image to be set as a texture": "", + "Click on a control point to split the route there": "", + "Click on map to place a burg. Hold Shift to add multiple": "", + "Click on map to place a marker. Hold Shift to add multiple": "", + "Click on map to place a river. Hold Shift to add multiple": "", + "Click on map to place label. Hold Shift to add multiple": "", + "Click to add a custom heightmap color scheme": "", + "Click to add custom province form name to the list": "", + "Click to add custom state form name to the list": "", + "Click to change generation and UI options": "", + "Click to change map layers": "", + "Click to change wind direction": "", + "Click to generate a new map": "", + "Click to generate a submap from the current viewport": "", + "Click to hide the Menu": "", + "Click to invert lock state for all markers": "", + "Click to invert pin state for all markers": "", + "Click to join the route to another route that starts or ends at the same cell": "", + "Click to open Biomes Editor": "", + "Click to open Burgs Overview": "", + "Click to open Cell details view": "", + "Click to open Charts to overview cells data": "", + "Click to open Cultures Editor": "", + "Click to open Diplomatical relationships Editor": "", + "Click to open Emblem Editor": "", + "Click to open Heightmap customization menu": "", + "Click to open Markers Overview": "", + "Click to open Military Forces Overview": "", + "Click to open Namesbase Editor": "", + "Click to open Notes Editor": "", + "Click to open Provinces Editor": "", + "Click to open Religions Editor": "", + "Click to open Rivers Overview": "", + "Click to open Routes Overview": "", + "Click to open States Editor": "", + "Click to open style editor": "", + "Click to open tools menu": "", + "Click to open Units Editor": "", + "Click to open world configurator to setup map position on Globe and World climate": "", + "Click to open Zones Editor": "", + "Click to perform an operation": "", + "Click to place a linear measurer (ruler)": "", + "Click to re-generate full name": "", + "Click to recalculate military forces based on current military options": "", + "Click to recalculate rural and urban population": "", + "Click to regenerate all emblems": "", + "Click to regenerate all relief icons based on current cell biome and elevation": "", + "Click to regenerate all rivers (restore default state)": "", + "Click to regenerate all unlocked burgs and routes. States will remain as they are. Note: burgs are only generated in populated areas with culture assigned": "", + "Click to regenerate all unlocked routes": "", + "Click to regenerate icebergs and glaciers": "", + "Click to regenerate non-locked cultures": "", + "Click to regenerate non-locked provinces. States will remain as they are": "", + "Click to regenerate non-locked religions": "", + "Click to regenerate non-locked states. Emblems and military forces will be regenerated as well, burgs will remain as they are, but capitals will be different": "", + "Click to regenerate unlocked markers": "", + "Click to regenerate zones. Hold Ctrl and click to set zones number multiplier": "", + "Click to remove current custom preset": "", + "Click to remove current custom style preset": "", + "Click to restore default (Earth-based) wind directions": "", + "Click to restore default options and reload the page": "", + "Click to restore regiment's default name": "", + "Click to save current style as a new preset": "", + "Click to save displayed layers as a new preset": "", + "Click to see Generator info": "", + "Click to see list of supporters": "", + "Click to see the usage instructions": "", + "Click to set map size to cover the Northern latitudes": "", + "Click to set map size to cover the Southern latitudes": "", + "Click to set map size to cover the Tropical latitudes": "", + "Click to set map size to cover the whole world": "", + "Click to set number multiplier": "", + "Click to show the Menu": "", + "Click to skip the step": "", + "Click to sort by biome area": "", + "Click to sort by biome cells number": "", + "Click to sort by biome habitability": "", + "Click to sort by biome name": "", + "Click to sort by biome population": "", + "Click to sort by burg features": "", + "Click to sort by burg name": "", + "Click to sort by burg population": "", + "Click to sort by culture group": "", + "Click to sort by culture name": "", + "Click to sort by diplomatical relations": "", + "Click to sort by discharge (flux in m3/s)": "", + "Click to sort by distance to the battlefield": "", + "Click to sort by marker type": "", + "Click to sort by province area": "", + "Click to sort by province burgs count": "", + "Click to sort by province capital": "", + "Click to sort by province form name": "", + "Click to sort by province name": "", + "Click to sort by province owner": "", + "Click to sort by province population": "", + "Click to sort by regiment name": "", + "Click to sort by river basin": "", + "Click to sort by river length": "", + "Click to sort by river mouth width": "", + "Click to sort by river name": "", + "Click to sort by river type name": "", + "Click to sort by route group": "", + "Click to sort by route length": "", + "Click to sort by route name": "", + "Click to sort by state name": "", + "Click to sort by total military forces": "", + "Click to test the voice": "", + "Click to toggle a layer, drag to raise or lower a layer. Ctrl + click to edit layer style": "", + "Click to toggle the removal mode on brush dragging": "", + "Click to transform the map": "", + "Click to update state labels placement based on current borders": "", + "Clip land": "", + "Clip water": "", + "Coastline": "", + "Colony": "Colonie", + "Colored": "", + "Commonwealth": "Communauté", + "Commune": "Commune", + "Community": "Communauté", + "Complete river creation": "", + "Complete route creation": "", + "Complete the conversion. All unassigned colors will be considered as ocean": "", + "Confederacy": "Confédération", + "Confederation": "Confédération", + "Config markers generation options": "", + "Configure burg groups": "", + "Configure world and map size and climate settings": "", + "Conglomerate": "Conglomérat", + "Connect your Dropbox account to be able to load maps from it": "", + "Conscription percentage for rural population": "", + "Conscription percentage for urban population": "", + "Continents": "Continents", + "Coordinate grid: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "", + "Coordinates": "Coordonnées", + "Copy link to the clipboard": "", + "Copy map seed as URL. It will produce the same map only if options are default or the same": "", + "Copy selected relief icon": "", + "Council": "Conseil", + "County": "Comté", + "Create a new group for this coastline": "", + "Create a new group for this label": "", + "Create a new regiment or fleet": "", + "Create a new river selecting river cells": "", + "Create a new route selecting route cells": "", + "Create a new type (group) for the lake": "", + "Create custom province form name": "", + "Cross": "Croix", + "Cultural map": "Carte culturelle", + "Culture-random": "", + "Culture-specific": "", + "Cultures": "Cultures", + "Cultures: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "", + "Curved": "", + "Custom": "", + "Custom (not saved)": "", + "Custom name": "", + "Dawn": "Aube", + "Deanery": "Doyenné", + "Defenders morale: ": "", + "Defenders strength during this phase. Strength defines dealt damage": "", + "Defense phase. Prepared defense. Units strength increased": "", + "Defense phase. Ranged and melee units excel": "", + "Define a number of non-capital settlements to be placed (if enough suitable land exists)": "", + "Define burgs percentage to form a separate province": "", + "Define current year and era name": "", + "Define how many Cultures should be generated": "", + "Define how many organized religions and cults should be generated. Cultures will have their own folk religions in any case": "", + "Define how many states and capitals should be generated": "", + "Define how much states and cultures can vary in size. Defines expansionism value": "", + "Define map name (will be used to name downloaded files)": "", + "Define scale of a saved png/jpeg image (e.g. 5x). Saving big images is slow and may cause a browser crash!": "", + "Define the coast outline contours scheme": "", + "Define the density of relief icons. All relief icons will be regenerated. Highly affects performance!": "", + "Define the size of relief icons. All relief icons will be regenerated": "", + "Define transparency of fill color": "", + "Define transparency of temperature leyer. Set to 0 to make it fully transparent": "", + "degree Delisle (°De)": "", + "degree Fahrenheit (°F)": "", + "degree Newton (°N)": "", + "degree Rankine (°R)": "", + "degree Réaumur (°Ré)": "", + "degree Rømer (°Rø)": "", + "Department": "Département", + "Dependency": "Dépendance", + "Depress brush: drag to gradually decrease height of cells in radius by Power value": "", + "Depression depth to form a new lake. Increase to reduce number of lakes added by system": "", + "Descrease font": "", + "Despotate": "Despotat", + "Diaconate": "Diaconat", + "Diamond": "", + "Diarchy": "Diarchie", + "Diocese": "Diocèse", + "Display brushes panel": "", + "Displayed layers and layers order:": "", + "Disrupt (randomize) heights a bit": "", + "Disrupt brush: drag to randomize height of cells in radius based on Power value": "", + "Distance between grid cell centers (in map scale)": "", + "District": "District", + "Divine Duchy": "Duché Divin", + "Divine Empire": "Empire Divin", + "Divine Grand Duchy": "Grand Duché Divin", + "Divine Kingdom": "Royaume Divin", + "Divine Principality": "Principauté Divine", + "Dogfight phase. Units strength increased": "", + "Dominant culture in the province. This defines culture-based naming. Can be changed via the Cultures Editor": "", + "Dominion": "Dominion", + "Dovetail": "", + "Download as JPG: lossy compressed raster image with solid white background": "", + "Download as PNG: lossless raster image with transparent background": "", + "Download as SVG: scalable vector image. Best quality, can be opened in browser or Inkscape": "", + "Download cells data in GeoJSON format": "", + "Download emblems gallery as html document (open in browser; downloading takes some time)": "", + "Download full data in JSON": "", + "Download map file to your local disk": "", + "Download map metadata and grid cells data in JSON": "", + "Download map metadata and pack cells data in JSON": "", + "Download markers data in GeoJSON format": "", + "Download minimal data in JSON": "", + "Download namesbase to PC": "", + "Download notes to PC": "", + "Download rivers data in GeoJSON format": "", + "Download routes data in GeoJSON format": "", + "Download the chart data as a CSV file": "", + "Download the map as vector image (open directly in browser or Inkscape)": "", + "Download the style as a .json file (can be opened in any text editor)": "", + "Download the template as a text file": "", + "Download visible part of the map as .jpeg (lossy compressed) image": "", + "Download visible part of the map as .png (lossless compressed)": "", + "Download zones data in GeoJSON format": "", + "Download zones-related data": "", + "Drag to measure a curve length (opisometer)": "", + "Drag to measure a curve length that sticks to routes (route opisometer)": "", + "Drag to measure a polygon area (planimeter)": "", + "Drag to move the Menu": "", + "Drag to move the pane": "", + "Drag to reorder": "", + "Duchy": "Duché", + "Earldom": "Comté", + "Easterling": "", + "Edit biomes style in Style Editor": "", + "Edit burg groups": "", + "Edit coastline group style in Style Editor": "", + "Edit emblem": "", + "Edit free text notes (legend) for the lake": "", + "Edit free text notes (legend) for the river": "", + "Edit free text notes (legend) for the route": "", + "Edit free text notes (legend) for this burg": "", + "Edit free text notes (legend) for this label": "", + "Edit free text notes (legend) for this regiment": "", + "Edit icon style for burg group in Style Editor": "", + "Edit individual selected icon": "", + "Edit label group style in Style Editor": "", + "Edit label style for burg group in Style Editor": "", + "Edit lake group style in Style Editor": "", + "Edit Military units": "", + "Edit place legend (notes)": "", + "Edit port icon (anchor) style for burg group in Style Editor": "", + "Edit provinces style in Style Editor": "", + "Edit Relief Icons style in Style Editor": "", + "Edit route groups": "", + "Edit states (including diplomacy view) style in Style Editor": "", + "Edit style for all rivers in Style Editor": "", + "Edit style for the route group": "", + "Edit style in Style Editor": "", + "Edit the emblem in Armoria - dedicated heraldry editor. Download emblem and upload it back map the generator": "", + "Edit zones style in Style Editor": "", + "Elevate brush: drag to gradually increase height of cells in radius by Power value": "", + "Elevation profile": "", + "Emblems": "Emblèmes", + "Emblems: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "", + "Emirate": "Émirat", + "Empire": "Empire", + "End battle: apply current results and close the screen": "", + "Enter API key. Note: the Generator doesn't store the key or any generated data": "", + "Enter custom form name": "", + "Enter style preset name": "", + "Eparchy": "Éparchie", + "Equirectangular projection is used: distortion is maximum on poles. Use map with aspect ratio 2:1 for best result": "", + "Erebor": "", + "Evaporation from lake surface. If evaporation > supply, the lake water is saline. If difference is high, the lake becomes dry": "", + "Evening": "Soir", + "Examples. Click to re-generate": "", + "Exarchate": "Exarchat", + "Execute the template": "", + "Fantasy world Meridian length relative to real-world Earth (20k km)": "", + "Fantasy1": "", + "Fantasy2": "", + "Fantasy3": "", + "Fantasy4": "", + "Fantasy5": "", + "Fathoms (f)": "", + "Federation": "Fédération", + "Feet (ft)": "", + "Field Battle: a standard type of combat": "", + "Filter by name or group": "", + "Filter by name, province, state, culture, or group": "", + "Filter by name, type or basin": "", + "Filter by type": "", + "Finalize the heightmap and exit the edit mode": "", + "Find or share custom namesbase on Cartography Assets portal": "", + "Find or share custom style preset on Cartography Assets portal": "", + "Find or share custom template on Cartography Assets portal": "", + "Flag": "", + "Flee phase. Units strength reduced": "", + "Focus on selected object": "", + "Fogging": "", + "Folded paper big": "", + "Folded paper small": "", + "Font URL": "", + "Fractious": "", + "Free City": "Cité Libre", + "Free Territory": "Territoire Libre", + "French": "", + "Full names": "", + "Generate a new map based on options": "", + "Generate culture-specific name": "", + "Generate culture-specific name for place and battle": "", + "Generate culture-specific name for the burg": "", + "Generate culture-specific name for the lake": "", + "Generate culture-specific name for the province": "", + "Generate culture-specific name for the river": "", + "Generate note with AI": "", + "Generate random map": "", + "Generate random name": "", + "Generate random name for place and battle": "", + "Generate random name for the burg": "", + "Generate random name for the lake": "", + "Generate random name for the river": "", + "Generate route name": "", + "Generic": "", + "Gondor": "", + "Gonfalon": "", + "Google font": "", + "Governorate": "Gouvernorat", + "Grand Duchy": "Grand Duché", + "Gray": "", + "Gray paper": "", + "Grid": "Grille", + "Grid: click to toggle, drag to raise or lower. Ctrl + click to edit layer style and select type": "", + "Guidon": "", + "Heater": "", + "Heightmap": "Altitude", + "Heightmap edit mode": "", + "Heightmap: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "", + "Heptagon": "", + "Heptarchy": "Heptarchie", + "Hessen": "", + "Hex": "", + "Hex grid (flat)": "", + "Hex grid (pointy)": "", + "Hexy": "", + "Hide": "", + "Hide rescaler": "", + "Hide rescaler slider": "", + "Hide style edit section": "", + "Hide the battle name section": "", + "Hide the edit label text section": "", + "Hide the font size section": "", + "Hide the group section": "", + "Hide the group selection": "", + "Hide the label offset section": "", + "Hide the letter spacing section": "", + "High Island": "", + "Highland": "", + "Hill: small blob": "", + "Holy State": "État Saint", + "Horde": "Horde", + "Horsehead": "", + "Horsehead Edgy": "", + "Hunting": "", + "ia": "ie", + "Ice": "Glace", + "Icebergs and glaciers: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "", + "Icons": "Icônes", + "If height is greater or equal to X and less or equal to Y, then perform an operation Z with operand V": "", + "Image scale relative to image size (e.g. 5x)": "", + "Imamah": "Imamat", + "Increase font": "", + "Increases the polygon count to smooth the sharp points. Please note that it can take some time to calculate": "", + "Indented 3": "", + "Inherit": "", + "Invert heightmap along the axes": "", + "Iran small": "", + "Iron Hills": "", + "Island": "Île", + "Islands": "Îles", + "Isthmus": "Isthme", + "Iterate battle": "", + "Join Discord server": "", + "Kelvin (K)": "Kelvin (K)", + "Khaganate": "Khaganat", + "Khanate": "Khanat", + "Kilometer (km)": "Kilomètre (km)", + "Kingdom": "Royaume", + "Kite": "", + "Kiwiroo": "", + "Labels": "Libellés", + "Labels: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "", + "Lake": "Lac", + "Lake area in selected units": "", + "Lake average depth in selected units": "", + "Lake elevation in selected units": "", + "Lake maximum depth in selected units": "", + "Lake outlet river": "", + "Lake shore length in selected units": "", + "Lake water supply. If supply > evaporation and there is an outlet, the lake water is fresh. If supply is very low, the lake becomes dry": "", + "Lakes": "Lacs", + "Land": "", + "Landgrave": "Landgraviat", + "Landing phase. Amphibious attack. Units are vulnerable against prepared defense": "", + "Landing: amphibious attack": "", + "Landmass": "Terres émergées", + "Landmass area in selected units": "", + "Layers": "Calques", + "Layers preset:": "Préréglage de calques", + "Layers reduction rate. Increase to improve performance": "", + "League": "Ligue", + "League (lg)": "Lieue (lg)", + "Legend": "Légende", + "Length of Meridian in pixels": "", + "Length of Meridian is friendly units (depends on user configuration)": "", + "Length of Meridian. Almost half of the equator length": "", + "Line simplification rate. Increase to slightly improve performance": "", + "Line: select two points to change heights along the line": "", + "Linear": "", + "Load fully-functional map (.map or .gz formats)": "", + "Load Google Translate and select language. Note that automatic translation can break some page functional. In this case reset the language back to English or refresh the page": "", + "Load image to convert": "", + "Load map file (.map or .gz) file from URL. Note that the server should allow CORS": "", + "Load map file (.map or .gz) from your Dropbox": "", + "Load map file (.map or .gz) from your local disk": "", + "Load map from browser storage (if saved before)": "", + "Local font": "", + "Lock or unlock all burgs": "", + "Lock or unlock all routes": "", + "Lock seed (click on lock icon) if you want template to generate the same heightmap each time": "", + "Looting phase. Plunder the town. Units strength increased": "", + "Low Island": "", + "Lower brush: drag to decrease height of cells in radius by Power value": "", + "Mandate": "Mandat", + "Maneuvering phase. Units strength reduced": "", + "Manually re-assign biomes to not follow the default moisture/temperature pattern": "", + "Manually re-assign provinces": "", + "Map coordinates on globe": "", + "Map generation settings. Generate a new map to apply the settings": "", + "Map presentation in 3D scene. Works best for heightmap. Cannot be used for editing": "", + "Map seed number. Press 'Enter' to apply. Seed produces the same map only if canvas size and options are the same": "", + "Marble big": "", + "Marble Blue": "", + "Marble Blue big": "", + "Marble small": "", + "Marches": "Marche", + "Margrave": "Margraviat", + "Marker element size in pixels": "", + "Marker icon": "", + "Marker icon shift (by X and by Y axis), percent. Set to 50 to position icon in center": "", + "Marker icon sizes in pixels": "", + "Marker marker element and icon sizes in pixels": "", + "Marker pin shape": "", + "Marker type. Style changes will apply to all markers of the same type. Leave blank if the marker is unique": "", + "Markers": "Marqueurs", + "Markers number": "", + "Markers: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "", + "Mars big": "", + "Mars small": "", + "Mask: lower cells near edges or in map center": "", + "Mauritania small": "", + "Maximal possible zoom level (should be > 1)": "", + "Maximum number of iterations taken to resolve depressions. Increase if you have rivers ending nowhere": "", + "Mediterranean": "", + "Melee phase. Melee units excel": "", + "Mercury big": "", + "Mercury small": "", + "Meters (m)": "Mètres (m)", + "Mile (mi)": "Mile (mi)", + "Military": "Armées", + "Military forces: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "", + "Military map": "Carte militaire", + "Military personnel rate (% of state population). Depends on war alert. Click to sort": "", + "Mimimal possible zoom level (should be > 0)": "", + "Moria Orc": "", + "Most Serene Republic": "République Sérénissime", + "Move selected relief icon back": "", + "Move selected relief icon to front": "", + "Multiply all heights in range by factor": "", + "Municipality": "Municipalité", + "Names data: a comma separated list of source names used for names generation": "", + "Nautical league (nlg)": "Lieue nautique (nlg)", + "Nautical mile (nmi)": "Mile nautique (nmi)", + "Naval": "Naval", + "Naval Battle: naval units combat": "", + "New Map!": "Nouvelle carte !", + "Night": "Nuit", + "No": "", + "No clipping": "", + "No outline": "", + "Noldor": "", + "Nomadic": "", + "Noon": "Midi", + "Number of burgs in group": "", + "Number of columns": "", + "Number of lake inlet rivers": "", + "Number of land biomes": "", + "Number of rows": "", + "Number of zones": "", + "Occupation zone": "", + "Ocean": "Océan", + "Old French": "", + "Old World": "", + "Oligarchy": "Oligarchie", + "Open Battle Simulation Tutorial": "", + "Open burg map in a new tab": "", + "Open Image Converter": "", + "Open last saved map": "", + "Open Military Forces Tutorial": "", + "Open previously downloaded style file": "", + "Open previously downloaded template": "", + "Open route creation dialog": "", + "Open template editor": "", + "Open Template Editor Tutorial": "", + "Open wiki article scale and distance to know about grid scale": "", + "Options": "Options", + "Oval": "", + "Pangea": "Pangée", + "Parish": "", + "Patriarchate": "Patriarcat", + "Pattern 1": "", + "Pattern 2": "", + "Pattern 3": "", + "Pattern 4": "", + "Pattern 5": "", + "Pattern 6": "", + "Pavise": "", + "Peninsula": "Péninsule", + "Pennant": "", + "Pennon": "", + "Pentagon": "", + "Pergamena small": "", + "Physical map": "Carte physique", + "Pin": "", + "Pin fill and stroke colors": "", + "Pin it": "", + "Pit: round depression": "", + "Place icons in a bulk": "", + "Places of interest": "Lieux d'intérêt", + "Plaster": "", + "Polish": "", + "Political map": "Carte politique", + "Populate with letters that can be used twice in a row (geminates)": "", + "Population": "Population", + "Population map: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "", + "Precipitation": "Précipitation", + "Precipitation map: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "", + "Prefecture": "Préfecture", + "Preview heightmap in 3D scene": "", + "Principality": "Principauté", + "Project map on globe. Cannot be used for editing": "", + "Protectorate": "Protectorat", + "Provide a name for the new group": "", + "Province": "Province", + "Province form name": "", + "Province full name": "", + "Province short name": "", + "Provinces": "Provinces", + "Provinces displayed": "", + "Provinces map": "Carte des provinces", + "Provinces: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "", + "Pure landmass": "Terres émergées", + "Pursue phase. Mounted units excel": "", + "Pursue phase. Try to intercept fleeing attackers. Mounted units excel": "", + "Pursue phase. Units strength increased": "", + "Quick preset lighting for different times of day": "", + "Raise brush: increase height of cells in radius by Power value": "", + "Random": "", + "Random factor for attackers. Click to re-roll": "", + "Random factor for defenders. Click to re-roll": "", + "Randomize Iceberg shape": "", + "Range: elongated elevation": "", + "Re-assign zones": "", + "Re-generate examples based on provided data": "", + "Recalculate military forces based on current options": "", + "Recolor listed provinces based on state color": "", + "Recommended maximum name length": "", + "Recommended minimum name length": "", + "Rectangular": "", + "Redo the action": "", + "Redo the action (Ctrl + Y)": "", + "Refresh the Editor": "", + "Refresh the overview screen": "", + "Refresh the Overview screen": "", + "Regenerate burg names based on assigned culture": "", + "Regenerate diplomatical relations": "", + "Regenerate emblem": "", + "Regenerate era": "", + "Regenerate legend for this regiment": "", + "Regenerate map name": "", + "Regenerate relief icons based on current biomes and elevation": "", + "Regenerate rivers and allow water flow to change heights and form new lakes. Better to keep checked": "", + "Regiment emblem": "", + "Regiment emblem and name. Click to sort by name": "", + "Regiment type (land or naval). Click to change": "", + "Region": "Région", + "Release all provinces. It will make all provinces with burgs independent": "", + "Relief": "Relief", + "Relief and biome icons: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "", + "Relief Icons": "", + "Religions": "Religions", + "Religions map": "Carte des religions", + "Religions: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "", + "Relocate burg. Click on map to move the burg": "", + "Remove all provinces. States will remain as they are": "", + "Remove all rivers": "", + "Remove all routes": "", + "Remove all rulers from the map. Click on ruler label to remove a ruler separately": "", + "Remove all unlocked burgs except for capitals. To remove a capital remove its state first": "", + "Remove all unlocked markers": "", + "Remove icons in a bulk": "", + "Remove non-capital burg": "", + "Remove regiment": "", + "Remove river": "", + "Remove route": "", + "Remove selected relief icon or icon type": "", + "Remove the element": "", + "Remove the group": "", + "Remove the Group with all labels": "", + "Remove the label": "", + "Remove the marker": "", + "Remove the step": "", + "Remove this note": "", + "Renaissance": "", + "Rename burgs in bulk": "", + "Render cells below the sea level (with height less than 20)": "", + "Render heightmap data as a small monochrome image": "", + "Rendering order: higher values are rendered on top": "", + "Republic": "République", + "Rescaler: change height if condition is fulfilled": "", + "Reservation": "Réserve", + "Reset diplomatical relations of selected state to Neutral": "", + "Reset language to English": "", + "Reset map zoom": "", + "Restore default canvas size": "", + "Restore default namesbase": "", + "Restore default theme color: pale magenta": "", + "Restore default units settings": "", + "Restore default zoom extent: [1, 20]": "", + "Restore the defaults and re-define biomes based on current moisture and temperature": "", + "Retreat phase. Units strength reduced": "", + "Rhombille grid": "", + "River": "Fleuve", + "River discharge (flux power)": "", + "River drainage basin (watershed)": "", + "River length in selected units": "", + "River mouth width in selected units": "", + "River source additional width. Default value is 0": "", + "River width multiplier. Default value is 1": "", + "Rivers": "Fleuves", + "Rivers number": "", + "Rivers: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "", + "Roll dice to update random factor": "", + "Roman": "", + "Round": "", + "Route length in selected units": "", + "Routes": "Routes", + "Routes number": "", + "Rulers": "Règles", + "Rulers: click to toggle, drag to move, click on label to delete. Ctrl + click to edit layer style": "", + "Satrapy": "Satrapie", + "Save biomes-related data as a text file (.csv)": "", + "Save burgs-related data as a text file (.csv)": "", + "Save current JSON as a new style preset": "", + "Save fully-functional map file": "", + "Save map file to your Dropbox": "", + "Save markers data as a text file (.csv)": "", + "Save military-related data as a text file (.csv)": "", + "Save OBJ file of the 3d scene": "", + "Save provinces-related data as a text file (.csv)": "", + "Save rivers-related data as a text file (.csv)": "", + "Save routes-related data as a text file (.csv)": "", + "Save screenshot of the 3d scene": "", + "Save state relations matrix as a text file (.csv)": "", + "Save the project to browser storage only": "", + "Scale Bar": "Barre d'échelle", + "Scale Bar: click to toggle. Ctrl + click to edit style": "", + "Select a color below and assign a height value for it": "", + "Select a color to assign a height value": "", + "Select a color to re-assign the height value": "", + "Select a distance unit or provide a custom name": "", + "Select a group for this coastline": "", + "Select a group for this label": "", + "Select a map layers preset": "", + "Select a set of cultures to be used for names and cultures generation": "", + "Select a style preset": "", + "Select a style preset. State labels may required regeneration if font is changed": "", + "Select Acacia icon": "", + "Select allowed biomes": "", + "Select allowed cultures": "", + "Select allowed features": "", + "Select allowed religions": "", + "Select allowed states": "", + "Select an altitude unit or provide a custom name": "", + "Select an element to edit its style": "", + "Select an element to edit its style (list is ordered alphabetically)": "", + "Select any type of icons": "", + "Select background filter": "", + "Select base template": "", + "Select base to edit": "", + "Select burg group. Groups defines burg icon, label size and style": "", + "Select burg in province or state": "", + "Select burg type. Type slightly affects emblem generation": "", + "Select Cactus icon": "", + "Select color scheme for the element": "", + "Select Conifer Tree icon": "", + "Select Dead Tree icon": "", + "Select Deciduous Tree icon": "", + "Select dominant culture": "", + "Select Dune icon": "", + "Select element group": "", + "Select element id": "", + "Select emblem shape. Can be changed indivudually in Emblem editor": "", + "Select file and create a link to share with your friends": "", + "Select filter for element. Please note filters may cause performance issues!": "", + "Select filter for states fill. Please note filters may cause performance issues!": "", + "Select font": "", + "Select font adding method": "", + "Select form name": "", + "Select format to download image or export map data": "", + "Select Grass icon": "", + "Select grid overlay type": "", + "Select group icon": "", + "Select group to be assigned if burg doesn't pass the criteria for other groups": "", + "Select halo effect power (blur). Set to 0 to make it solid line": "", + "Select Hill icon": "", + "Select how many distance units are in one pixel": "", + "Select icon": "", + "Select lake type (group)": "", + "Select line interpolation type": "", + "Select marker type for newly added markers.": "", + "Select mode of operation": "", + "Select Mountain icon": "", + "Select ocean pattern": "", + "Select Palm icon": "", + "Select parent river": "", + "Select precreated vignette": "", + "Select province in state": "", + "Select rendering model. Try to set to 'optimized' if you face performance issues": "", + "Select route group": "", + "Select set of relief icons. All relief icons will be regenerated": "", + "Select shape of the emblem": "", + "Select Snow Conifer Tree icon": "", + "Select Snow Mountain icon": "", + "Select speech synthesis voice to pronounce generated names": "", + "Select state": "", + "Select state labels mode: display short or full names": "", + "Select Swamp icon": "", + "Select Temperature scale": "", + "Select template or precreated heightmap to be used on generation": "", + "Select texture image. Big textures can highly affect performance": "", + "Select Volcano icon": "", + "Seneschalty": "Sénéchaussée", + "Set a filter to be applied to the map in general": "", + "Set a North-South map shift, set to 50 to make map center lie on Equator": "", + "Set a West-East map shift, set to 50 to make map center lie on Prime meridian": "", + "Set autosave interval in minutes. Set 0 to disable autosave. Map is saved to browser memory": "", + "Set background color": "", + "Set background element padding: top, right, bottom, left (in pixels)": "", + "Set background fill color": "", + "Set background opacity": "", + "Set background opacity. 0: transparent, 1: solid": "", + "Set background stroke color and width": "", + "Set bar and font size": "", + "Set bar color for rural population": "", + "Set bar color for urban population": "", + "Set battle name": "", + "Set brush radius for icons placement on deletion": "", + "Set burg emblems size multiplier": "", + "Set burg population": "", + "Set clipping. Only non-clipped part will be visible": "", + "Set curve profile": "", + "Set custom burg map URL": "", + "Set dialog and tool windows transparency": "", + "Set element name": "", + "Set fill color": "", + "Set fill transparency. Set to 0 to make it fully transparent": "", + "Set font size": "", + "Set globe rotation speed. Set to 0 is you want to toggle off the rotation": "", + "Set globe texture resolution": "", + "Set grid cells scale multiplier": "", + "Set height exponent, i.e. a value for altitude change sharpness. Altitude affects temperature and hence biomes": "", + "Set height for all cells to 0 (erase the map)": "", + "Set height scale": "", + "Set how many people are in one population point": "", + "Set icon size": "", + "Set icon size for individual icon or for bulk placement": "", + "Set icon stroke linejoin": "", + "Set image size in pixels": "", + "Set label shift along X and Y axes": "", + "Set label shift along Y axis": "", + "Set labels color": "", + "Set labels size": "", + "Set letter spacing": "", + "Set map rotation speed. Set to 0 is you want to toggle off the rotation": "", + "Set map size relative to the world size": "", + "Set maximum number of colors": "", + "Set maximum number of items in one column": "", + "Set mesh texture resolution": "", + "Set min population constraint": "", + "Set minimum and maximum possible zoom level": "", + "Set number of points to be used for graph generation. Highly affects performance. 10K is the only recommended value": "", + "Set ocean color": "", + "Set ocean pattern opacity": "", + "Set opacity of the loaded image": "", + "Set opacity. 0: transparent, 1: solid": "", + "Set original map size on generation. It cannot be changed later. Always keep canvas size equal to your screen size or less. The best option is to use the default value. For full-globe maps use aspect ratio 2:1": "", + "Set points (cells) number of the submap": "", + "Set position of the Scale bar bottom right corner (in percents)": "", + "Set precipitation - water amount clouds can bring. Defines rivers and biomes generation. Keep around 100% for default generation": "", + "Set province emblems size multiplier": "", + "Set regiment box size. All regiments will be redrawn on change (position will defaulted)": "", + "Set relative size for the particular label": "", + "Set relative size for the particular label (% of group default)": "", + "Set scene lightness": "", + "Set size of particular Emblem. To hide set to 0. To change the entire category go to Menu ⭢ Style ⭢ Emblems": "", + "Set size, select file format and download emblem image": "", + "Set sky and water color": "", + "Set spacing between relief icons": "", + "Set starting offset for the particular label": "", + "Set starting offset for the particular label (% along the path)": "", + "Set starting offset numerically": "", + "Set state and cultures growth rate. Defines how many lands will stay neutral": "", + "Set state emblems size multiplier": "", + "Set states fill opacity. 0: invisible, 1: solid": "", + "Set states halo effect opacity. 0: invisible, 1: solid": "", + "Set states halo effect width": "", + "Set stroke color": "", + "Set stroke dash array (e.g. 5 2) and linecap": "", + "Set stroke width": "", + "Set sun position (x, y) and color": "", + "Set temperature at equator": "", + "Set text shadow": "", + "Set the letter spacing size for this label": "", + "Set the North Pole average yearly temperature": "", + "Set the South Pole average yearly temperature": "", + "Set theme hue for dialogs and tool windows": "", + "Set tooltip size": "", + "Set urban density: average population per building in Medieval Fantasy City Generator": "", + "Set urban population modifier. Change to increase or descrese burgs population": "", + "Set user interface size. Please note browser zoom also affects interface size (Ctrl + or Ctrl - to change)": "", + "Set view node": "", + "Set vignette blue propagation (in pixels)": "", + "Set vignette X and Y radius (in percents)": "", + "Set what Generator should do on load": "", + "Set wind (compass) rose size": "", + "Share on Facebook": "", + "Shattered": "", + "Shelling phase. Naval artillery bombardment of enemy fleet": "", + "Sheltering phase. Hide behind the walls and wait": "", + "Shield": "", + "Shieldy": "", + "Shift by x axis in pixels": "", + "Shift by y axis in pixels": "", + "Shift texture by x axis in pixels": "", + "Shift texture by y axis in pixels": "", + "Shift the element by axes": "", + "Shift the texture by axes": "", + "Shift wind (compass) rose by axes": "", + "Shire": "", + "Shock phase. Units are not prepared for a defense": "", + "Shock phase. Units strength reduced": "", + "Shogunat": "Shogunat", + "Short names": "", + "Show": "", + "Show burgs bubble chart": "", + "Show emblem associated area or place": "", + "Show only zones of selected type": "", + "Show provinces chart": "", + "Show regiments list": "", + "Show relations history": "", + "Show relations matrix": "", + "Show rescaler slider": "", + "Show seed history to apply a previous seed": "", + "Show style edit section": "", + "Show temperature graph for the burg": "", + "Show the edit label text section": "", + "Show the elevation profile for the river": "", + "Show the elevation profile for the route": "", + "Show the font size section": "", + "Show the group selection": "", + "Show the label offset section": "", + "Show the letter spacing section": "", + "Shows whether the burg has a citadel (castle). Click to toggle": "", + "Shows whether the burg has a shanty town. Click to toggle": "", + "Shows whether the burg is a port. Click to toggle": "", + "Shows whether the burg is a religious center. Click to toggle": "", + "Shows whether the burg is a state capital. Click to toggle": "", + "Shows whether the burg is a trade center (has big marketplace). Click to toggle": "", + "Shows whether the burg is walled. Click to toggle": "", + "Shows whether there is already a preset with this name": "", + "Siege: burg blockade and storming": "", + "Simple": "", + "Skirmish phase. Ranged units excel": "", + "Smooth 6": "", + "Smooth 9": "", + "Smooth all heights a bit": "", + "Smooth brush: drag to level height of cells in radius to height of adjacent cells": "", + "Smooth the map replacing cell heights by an average values of its neighbors": "", + "Soided paper vertical": "", + "Soiled paper horizontal": "", + "Sortie phase. Make a sortie from besieged town. Melee units excel": "", + "Spain small": "", + "Spanish": "", + "Speak the examples. You can change voice and language in options": "", + "Speak the name. You can change voice and language in options": "", + "Split map into smaller png tiles and download as zip archive": "", + "Split regiment into 2 separate ones": "", + "Square": "", + "Square 45 degrees grid": "", + "Square grid": "", + "Squared": "", + "Squarish": "", + "Standard 3": "", + "Standard 4": "", + "Standard view mode that allows to edit the map": "", + "Star": "", + "Star circled": "", + "Star circled empty": "", + "Star squared": "", + "State": "État", + "State borders: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "", + "State form name": "", + "State full name": "", + "State name. Click to sort": "", + "State population. Click to sort": "", + "State short name": "", + "State-specific": "", + "States": "États", + "States number": "", + "States: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "", + "Stone big": "", + "Stone small": "", + "Storming phase. Storm enemy town. Melee units excel": "", + "Strait: centered vertical or horizontal depression": "", + "Style": "Style", + "Style JSON is getting formed based the current settings, but can be entered manually": "", + "Submit to Reddit": "", + "Sultanat": "Sultanat", + "Support Ukraine": "", + "Surprice attack phase. Units strength increased, ranged units excel": "", + "Surrendering phase. Give up the defense. Units strength reduced": "", + "Swiss": "", + "Taklamakan": "", + "Targe": "", + "Targe2": "", + "Temperature": "Température", + "Temperature controls response randomness; higher values mean more creativity, lower values mean more predictability": "", + "Temperature map: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "", + "Terracing power. Set to 0 to toggle off": "", + "Territory": "Territoire", + "Tetrakis square grid": "", + "Tetrarchy": "Tétrarchie", + "Texture": "Texture", + "Texture overlay: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "", + "The {{noun}}": "{{noun, the}}", + "The selected layer is not visible. Toogle it on to see style changes effect": "", + "Theocracy": "Théocracie", + "Timber Cut big": "", + "Timber Cut small": "", + "Toggle 3d labels": "", + "Toggle Azgaar Assistant (help bubble on the bottom right corner)": "", + "Toggle basin highlight mode": "", + "Toggle Legend box": "", + "Toggle Legend box (shows all non-hidden zones)": "", + "Toggle notes box dispay: hide or do not hide the box on mouse move": "", + "Toggle percentage / absolute values views": "", + "Toggle province labels. Change size in Menu ⭢ Style ⭢ Provinces": "", + "Toggle sky mode": "", + "Toggle wireframe mode": "", + "Tool settings that don't affect maps. Changes are getting applied immediately": "", + "Tools": "Outils", + "Total burgs number": "", + "Total cells number": "", + "Total land area": "", + "Total land cells number": "", + "Total map area": "", + "Total map population": "", + "Total military forces": "", + "Total military personnel (considering crew). Click to sort": "", + "Total military personnel (not considering crew). Click to sort": "", + "Total population": "", + "Trade Company": "Compagnie Commerciale", + "Trade routes: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "", + "Triangle": "", + "Triangle grid (horizontal)": "", + "Triangle grid (vertical)": "", + "Tribe": "Tribu", + "Tribes": "Tribus", + "Trihexagonal grid": "", + "Triumvirate": "Triumvirat", + "Trough: elongated depression": "", + "Truncated square grid": "", + "Try to keep the same size on any map scale, turn off to get size change depending on scale": "", + "Tsardom": "Tsarat", + "Turn text path into a straight line": "", + "Tweet": "", + "Type full battle name": "", + "Type group name": "", + "Type place name": "", + "Type scale bar label, leave blank to hide label": "", + "Type to change a base name": "", + "Type to change lake type (group)": "", + "Type to change river type (e.g. fork, creek, river, brook, stream)": "", + "Type to change the full name": "", + "Type to change the short name": "", + "Type to rename the burg": "", + "Type to rename the lake": "", + "Type to rename the regiment": "", + "Type to rename the river": "", + "Type to rename the route": "", + "Ulus": "Ulus", + "Uncheck to not update state label on name change": "", + "Undo the latest action": "", + "Undo the latest action (Ctrl + Z)": "", + "Union": "Union", + "Unit icon": "", + "Unit military power (used for battle simulation)": "", + "Unit name. If name is changed for existing unit, old unit will be replaced": "", + "Unit type to apply special rules on forces recalculation": "", + "United Hordes": "Hordes Unies", + "United Kingdom": "Royaume Uni", + "United Provinces": "Provinces Unies", + "United Republic": "République Unie", + "United States": "États Unis", + "United Tribes": "Tribus Unies", + "Update the scene": "", + "Upload a namesbase from PC, extending the current set": "", + "Upload a namesbase from PC, replacing the current set": "", + "Upload notes from PC": "", + "Upload png, jpg or svg image from Armoria or other sources as emblem": "", + "Upload prepared SVG image (SVG from Armoria or SVG processed with 'Optimize vector' tool)": "", + "Upload SVG or PNG image from any source. Make sure background is transparent": "", + "UrukHai": "", + "Use external tool to compress/resize raster images before upload": "", + "Use external tool to optimize vector images before upload": "", + "Versta (vr)": "", + "Vesica Piscis": "", + "Viceroyalty": "Vice-royauté", + "Vignette": "Vignette", + "Vignette (border fading): click to toggle. Ctrl + click to edit style": "", + "Vignette rectangle position (in percents)": "", + "Volcano": "", + "Waiting phase. Cannot pursue fleeing naval": "", + "War Alert. Modifier to military forces number, depends of political situation. Click to sort": "", + "Watabou capital": "", + "Watabou caravanserai": "", + "Watabou city": "", + "Watabou fort": "", + "Watabou hamlet": "", + "Watabou monastery": "", + "Watabou town": "", + "Watabou trade post": "", + "Watabou village": "", + "Wedged": "", + "Wind (Compass) Rose: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "", + "Wind Rose": "Rose des vents", + "Withdrawal phase. Naval units try to escape enemy fleet": "", + "X axis position in percentage (minX-maxX or X)": "", + "Y axis position in percentage (minY-maxY or Y)": "", + "Zone area": "", + "Zone cells count": "", + "Zone description": "", + "Zone population": "", + "Zone type": "", + "Zones": "Zones", + "Zones: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style": "", + "Zoom map and center view in the burg": "", + "Сhase phase. Naval units pursue and rarely shell enemy fleet": "" +} diff --git a/public/main.js b/public/main.js index b9dfd5f6..bc97880f 100644 --- a/public/main.js +++ b/public/main.js @@ -220,6 +220,7 @@ oceanLayers .attr("height", graphHeight); document.addEventListener("DOMContentLoaded", async () => { + if (window.locale !== "en") await i18n; if (!location.hostname) { const wiki = "https://github.com/Azgaar/Fantasy-Map-Generator/wiki/Run-FMG-locally"; alertMessage.innerHTML = /* html */ `Fantasy Map Generator cannot run serverless. Follow the instructions on how you can easily run a local web-server`; diff --git a/src/index.html b/src/index.html index e5426654..28bb98de 100644 --- a/src/index.html +++ b/src/index.html @@ -426,6 +426,7 @@ - - - - - + + + + +
-

Layers preset:

+

Layers preset:

-

Displayed layers and layers order:

+

Displayed layers and layers order: