diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index ee4124b2b..003f1652f 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -224,7 +224,7 @@ the following rules:
## As a Documenter
To contribute to and view your changes to the BitBurner documentation in-game, you will
-need to edit the files in [this folder](https://github.com/bitburner-official/bitburner-src/tree/dev/src/Documentation/doc)
+need to edit the files in [this folder](https://github.com/bitburner-official/bitburner-src/tree/dev/src/Documentation/doc/en)
To make change to the [in-game documentation](./markdown/bitburner.md), you will need to modify the [TypeScript definitions](./src/ScriptEditor/NetscriptDefinitions.d.ts), not the Markdown files.
diff --git a/README.md b/README.md
index c689e0728..02742ef9c 100644
--- a/README.md
+++ b/README.md
@@ -19,7 +19,7 @@ There are 2 types of documentation:
- NS API documentation: It's generated from the [TypeScript definitions](./src/ScriptEditor/NetscriptDefinitions.d.ts). You can read it at https://github.com/bitburner-official/bitburner-src/blob/stable/markdown/bitburner.md.
Anyone is welcome to contribute to the documentation by editing the [source
-files](/src/Documentation/doc) and then making a pull request with your contributions.
+files](/src/Documentation/doc/en) and then making a pull request with your contributions.
For further guidance, please refer to the "As A Documenter" section of
[CONTRIBUTING](./CONTRIBUTING.md#as-a-documenter).
diff --git a/doc/index.rst b/doc/index.rst
index 40b655411..c38635628 100644
--- a/doc/index.rst
+++ b/doc/index.rst
@@ -1,5 +1,5 @@
.. meta::
- :http-equiv=Refresh: 0; url='https://github.com/bitburner-official/bitburner-src/blob/stable/src/Documentation/doc/index.md'
+ :http-equiv=Refresh: 0; url='https://github.com/bitburner-official/bitburner-src/blob/stable/src/Documentation/doc/en/index.md'
This link is outdated as documentation for Bitburner has been migrated to an in-game menu, this page should have redirected you to the new location.
-You can also click `here to go to the game's documentation `_.
+You can also click `here to go to the game's documentation `_.
diff --git a/src/Constants.ts b/src/Constants.ts
index eecf3f4a5..1b1a410d3 100644
--- a/src/Constants.ts
+++ b/src/Constants.ts
@@ -107,7 +107,7 @@ export const CONSTANTS = {
// Only use this if a backdoor is installed in the company's server
CompanyRequiredReputationMultiplier: 0.75,
- // Also update Documentation/doc/changelog.md when appropriate (when doing a release)
+ // Also update Documentation/doc/en/changelog.md when appropriate (when doing a release)
LatestUpdate: `
## v3.0.0 developement version: last updated 4 April 2025
diff --git a/src/Documentation/doc/advanced/bitnode_recommendation_comprehensive_guide.md b/src/Documentation/doc/en/advanced/bitnode_recommendation_comprehensive_guide.md
similarity index 100%
rename from src/Documentation/doc/advanced/bitnode_recommendation_comprehensive_guide.md
rename to src/Documentation/doc/en/advanced/bitnode_recommendation_comprehensive_guide.md
diff --git a/src/Documentation/doc/advanced/bitnode_recommendation_short_guide.md b/src/Documentation/doc/en/advanced/bitnode_recommendation_short_guide.md
similarity index 100%
rename from src/Documentation/doc/advanced/bitnode_recommendation_short_guide.md
rename to src/Documentation/doc/en/advanced/bitnode_recommendation_short_guide.md
diff --git a/src/Documentation/doc/advanced/bitnodes.md b/src/Documentation/doc/en/advanced/bitnodes.md
similarity index 100%
rename from src/Documentation/doc/advanced/bitnodes.md
rename to src/Documentation/doc/en/advanced/bitnodes.md
diff --git a/src/Documentation/doc/advanced/bladeburners.md b/src/Documentation/doc/en/advanced/bladeburners.md
similarity index 100%
rename from src/Documentation/doc/advanced/bladeburners.md
rename to src/Documentation/doc/en/advanced/bladeburners.md
diff --git a/src/Documentation/doc/advanced/corporation/basic-gameplay-and-term.md b/src/Documentation/doc/en/advanced/corporation/basic-gameplay-and-term.md
similarity index 100%
rename from src/Documentation/doc/advanced/corporation/basic-gameplay-and-term.md
rename to src/Documentation/doc/en/advanced/corporation/basic-gameplay-and-term.md
diff --git a/src/Documentation/doc/advanced/corporation/boost-material.md b/src/Documentation/doc/en/advanced/corporation/boost-material.md
similarity index 100%
rename from src/Documentation/doc/advanced/corporation/boost-material.md
rename to src/Documentation/doc/en/advanced/corporation/boost-material.md
diff --git a/src/Documentation/doc/advanced/corporation/demand-competition.md b/src/Documentation/doc/en/advanced/corporation/demand-competition.md
similarity index 100%
rename from src/Documentation/doc/advanced/corporation/demand-competition.md
rename to src/Documentation/doc/en/advanced/corporation/demand-competition.md
diff --git a/src/Documentation/doc/advanced/corporation/division-raw-production.md b/src/Documentation/doc/en/advanced/corporation/division-raw-production.md
similarity index 100%
rename from src/Documentation/doc/advanced/corporation/division-raw-production.md
rename to src/Documentation/doc/en/advanced/corporation/division-raw-production.md
diff --git a/src/Documentation/doc/advanced/corporation/faq.md b/src/Documentation/doc/en/advanced/corporation/faq.md
similarity index 100%
rename from src/Documentation/doc/advanced/corporation/faq.md
rename to src/Documentation/doc/en/advanced/corporation/faq.md
diff --git a/src/Documentation/doc/advanced/corporation/financial-statement.md b/src/Documentation/doc/en/advanced/corporation/financial-statement.md
similarity index 100%
rename from src/Documentation/doc/advanced/corporation/financial-statement.md
rename to src/Documentation/doc/en/advanced/corporation/financial-statement.md
diff --git a/src/Documentation/doc/advanced/corporation/general-advice.md b/src/Documentation/doc/en/advanced/corporation/general-advice.md
similarity index 100%
rename from src/Documentation/doc/advanced/corporation/general-advice.md
rename to src/Documentation/doc/en/advanced/corporation/general-advice.md
diff --git a/src/Documentation/doc/advanced/corporation/industry-supply-chain.md b/src/Documentation/doc/en/advanced/corporation/industry-supply-chain.md
similarity index 100%
rename from src/Documentation/doc/advanced/corporation/industry-supply-chain.md
rename to src/Documentation/doc/en/advanced/corporation/industry-supply-chain.md
diff --git a/src/Documentation/doc/advanced/corporation/miscellany.md b/src/Documentation/doc/en/advanced/corporation/miscellany.md
similarity index 100%
rename from src/Documentation/doc/advanced/corporation/miscellany.md
rename to src/Documentation/doc/en/advanced/corporation/miscellany.md
diff --git a/src/Documentation/doc/advanced/corporation/office.md b/src/Documentation/doc/en/advanced/corporation/office.md
similarity index 100%
rename from src/Documentation/doc/advanced/corporation/office.md
rename to src/Documentation/doc/en/advanced/corporation/office.md
diff --git a/src/Documentation/doc/advanced/corporation/optimal-selling-price-market-ta2.md b/src/Documentation/doc/en/advanced/corporation/optimal-selling-price-market-ta2.md
similarity index 100%
rename from src/Documentation/doc/advanced/corporation/optimal-selling-price-market-ta2.md
rename to src/Documentation/doc/en/advanced/corporation/optimal-selling-price-market-ta2.md
diff --git a/src/Documentation/doc/advanced/corporation/product.md b/src/Documentation/doc/en/advanced/corporation/product.md
similarity index 100%
rename from src/Documentation/doc/advanced/corporation/product.md
rename to src/Documentation/doc/en/advanced/corporation/product.md
diff --git a/src/Documentation/doc/advanced/corporation/quality.md b/src/Documentation/doc/en/advanced/corporation/quality.md
similarity index 100%
rename from src/Documentation/doc/advanced/corporation/quality.md
rename to src/Documentation/doc/en/advanced/corporation/quality.md
diff --git a/src/Documentation/doc/advanced/corporation/smart-supply.md b/src/Documentation/doc/en/advanced/corporation/smart-supply.md
similarity index 100%
rename from src/Documentation/doc/advanced/corporation/smart-supply.md
rename to src/Documentation/doc/en/advanced/corporation/smart-supply.md
diff --git a/src/Documentation/doc/advanced/corporation/unlocks-upgrade-research.md b/src/Documentation/doc/en/advanced/corporation/unlocks-upgrade-research.md
similarity index 100%
rename from src/Documentation/doc/advanced/corporation/unlocks-upgrade-research.md
rename to src/Documentation/doc/en/advanced/corporation/unlocks-upgrade-research.md
diff --git a/src/Documentation/doc/advanced/corporation/warehouse.md b/src/Documentation/doc/en/advanced/corporation/warehouse.md
similarity index 100%
rename from src/Documentation/doc/advanced/corporation/warehouse.md
rename to src/Documentation/doc/en/advanced/corporation/warehouse.md
diff --git a/src/Documentation/doc/advanced/corporation/wilson-analytics-advert.md b/src/Documentation/doc/en/advanced/corporation/wilson-analytics-advert.md
similarity index 100%
rename from src/Documentation/doc/advanced/corporation/wilson-analytics-advert.md
rename to src/Documentation/doc/en/advanced/corporation/wilson-analytics-advert.md
diff --git a/src/Documentation/doc/advanced/corporations.md b/src/Documentation/doc/en/advanced/corporations.md
similarity index 100%
rename from src/Documentation/doc/advanced/corporations.md
rename to src/Documentation/doc/en/advanced/corporations.md
diff --git a/src/Documentation/doc/advanced/faction_list.md b/src/Documentation/doc/en/advanced/faction_list.md
similarity index 100%
rename from src/Documentation/doc/advanced/faction_list.md
rename to src/Documentation/doc/en/advanced/faction_list.md
diff --git a/src/Documentation/doc/advanced/gang.md b/src/Documentation/doc/en/advanced/gang.md
similarity index 100%
rename from src/Documentation/doc/advanced/gang.md
rename to src/Documentation/doc/en/advanced/gang.md
diff --git a/src/Documentation/doc/advanced/grafting.md b/src/Documentation/doc/en/advanced/grafting.md
similarity index 100%
rename from src/Documentation/doc/advanced/grafting.md
rename to src/Documentation/doc/en/advanced/grafting.md
diff --git a/src/Documentation/doc/advanced/hacknetservers.md b/src/Documentation/doc/en/advanced/hacknetservers.md
similarity index 100%
rename from src/Documentation/doc/advanced/hacknetservers.md
rename to src/Documentation/doc/en/advanced/hacknetservers.md
diff --git a/src/Documentation/doc/advanced/intelligence.md b/src/Documentation/doc/en/advanced/intelligence.md
similarity index 100%
rename from src/Documentation/doc/advanced/intelligence.md
rename to src/Documentation/doc/en/advanced/intelligence.md
diff --git a/src/Documentation/doc/advanced/offlineandbonustime.md b/src/Documentation/doc/en/advanced/offlineandbonustime.md
similarity index 100%
rename from src/Documentation/doc/advanced/offlineandbonustime.md
rename to src/Documentation/doc/en/advanced/offlineandbonustime.md
diff --git a/src/Documentation/doc/advanced/sleeves.md b/src/Documentation/doc/en/advanced/sleeves.md
similarity index 100%
rename from src/Documentation/doc/advanced/sleeves.md
rename to src/Documentation/doc/en/advanced/sleeves.md
diff --git a/src/Documentation/doc/advanced/sourcefiles.md b/src/Documentation/doc/en/advanced/sourcefiles.md
similarity index 100%
rename from src/Documentation/doc/advanced/sourcefiles.md
rename to src/Documentation/doc/en/advanced/sourcefiles.md
diff --git a/src/Documentation/doc/advanced/stanek.md b/src/Documentation/doc/en/advanced/stanek.md
similarity index 100%
rename from src/Documentation/doc/advanced/stanek.md
rename to src/Documentation/doc/en/advanced/stanek.md
diff --git a/src/Documentation/doc/basic/augmentations.md b/src/Documentation/doc/en/basic/augmentations.md
similarity index 100%
rename from src/Documentation/doc/basic/augmentations.md
rename to src/Documentation/doc/en/basic/augmentations.md
diff --git a/src/Documentation/doc/basic/autocomplete.md b/src/Documentation/doc/en/basic/autocomplete.md
similarity index 100%
rename from src/Documentation/doc/basic/autocomplete.md
rename to src/Documentation/doc/en/basic/autocomplete.md
diff --git a/src/Documentation/doc/basic/codingcontracts.md b/src/Documentation/doc/en/basic/codingcontracts.md
similarity index 100%
rename from src/Documentation/doc/basic/codingcontracts.md
rename to src/Documentation/doc/en/basic/codingcontracts.md
diff --git a/src/Documentation/doc/basic/companies.md b/src/Documentation/doc/en/basic/companies.md
similarity index 100%
rename from src/Documentation/doc/basic/companies.md
rename to src/Documentation/doc/en/basic/companies.md
diff --git a/src/Documentation/doc/basic/crimes.md b/src/Documentation/doc/en/basic/crimes.md
similarity index 100%
rename from src/Documentation/doc/basic/crimes.md
rename to src/Documentation/doc/en/basic/crimes.md
diff --git a/src/Documentation/doc/basic/factions.md b/src/Documentation/doc/en/basic/factions.md
similarity index 100%
rename from src/Documentation/doc/basic/factions.md
rename to src/Documentation/doc/en/basic/factions.md
diff --git a/src/Documentation/doc/basic/hacking.md b/src/Documentation/doc/en/basic/hacking.md
similarity index 100%
rename from src/Documentation/doc/basic/hacking.md
rename to src/Documentation/doc/en/basic/hacking.md
diff --git a/src/Documentation/doc/basic/hacknet_nodes.md b/src/Documentation/doc/en/basic/hacknet_nodes.md
similarity index 100%
rename from src/Documentation/doc/basic/hacknet_nodes.md
rename to src/Documentation/doc/en/basic/hacknet_nodes.md
diff --git a/src/Documentation/doc/basic/infiltration.md b/src/Documentation/doc/en/basic/infiltration.md
similarity index 100%
rename from src/Documentation/doc/basic/infiltration.md
rename to src/Documentation/doc/en/basic/infiltration.md
diff --git a/src/Documentation/doc/basic/programs.md b/src/Documentation/doc/en/basic/programs.md
similarity index 100%
rename from src/Documentation/doc/basic/programs.md
rename to src/Documentation/doc/en/basic/programs.md
diff --git a/src/Documentation/doc/basic/ram.md b/src/Documentation/doc/en/basic/ram.md
similarity index 100%
rename from src/Documentation/doc/basic/ram.md
rename to src/Documentation/doc/en/basic/ram.md
diff --git a/src/Documentation/doc/basic/reputation.md b/src/Documentation/doc/en/basic/reputation.md
similarity index 100%
rename from src/Documentation/doc/basic/reputation.md
rename to src/Documentation/doc/en/basic/reputation.md
diff --git a/src/Documentation/doc/basic/scripts.md b/src/Documentation/doc/en/basic/scripts.md
similarity index 100%
rename from src/Documentation/doc/basic/scripts.md
rename to src/Documentation/doc/en/basic/scripts.md
diff --git a/src/Documentation/doc/basic/servers.md b/src/Documentation/doc/en/basic/servers.md
similarity index 100%
rename from src/Documentation/doc/basic/servers.md
rename to src/Documentation/doc/en/basic/servers.md
diff --git a/src/Documentation/doc/basic/stats.md b/src/Documentation/doc/en/basic/stats.md
similarity index 100%
rename from src/Documentation/doc/basic/stats.md
rename to src/Documentation/doc/en/basic/stats.md
diff --git a/src/Documentation/doc/basic/stockmarket.md b/src/Documentation/doc/en/basic/stockmarket.md
similarity index 100%
rename from src/Documentation/doc/basic/stockmarket.md
rename to src/Documentation/doc/en/basic/stockmarket.md
diff --git a/src/Documentation/doc/basic/terminal.md b/src/Documentation/doc/en/basic/terminal.md
similarity index 100%
rename from src/Documentation/doc/basic/terminal.md
rename to src/Documentation/doc/en/basic/terminal.md
diff --git a/src/Documentation/doc/basic/world.md b/src/Documentation/doc/en/basic/world.md
similarity index 100%
rename from src/Documentation/doc/basic/world.md
rename to src/Documentation/doc/en/basic/world.md
diff --git a/src/Documentation/doc/changelog-v0.md b/src/Documentation/doc/en/changelog-v0.md
similarity index 100%
rename from src/Documentation/doc/changelog-v0.md
rename to src/Documentation/doc/en/changelog-v0.md
diff --git a/src/Documentation/doc/changelog-v1.md b/src/Documentation/doc/en/changelog-v1.md
similarity index 100%
rename from src/Documentation/doc/changelog-v1.md
rename to src/Documentation/doc/en/changelog-v1.md
diff --git a/src/Documentation/doc/changelog.md b/src/Documentation/doc/en/changelog.md
similarity index 100%
rename from src/Documentation/doc/changelog.md
rename to src/Documentation/doc/en/changelog.md
diff --git a/src/Documentation/doc/help/getting_started.md b/src/Documentation/doc/en/help/getting_started.md
similarity index 100%
rename from src/Documentation/doc/help/getting_started.md
rename to src/Documentation/doc/en/help/getting_started.md
diff --git a/src/Documentation/doc/help/tools_and_resources.md b/src/Documentation/doc/en/help/tools_and_resources.md
similarity index 100%
rename from src/Documentation/doc/help/tools_and_resources.md
rename to src/Documentation/doc/en/help/tools_and_resources.md
diff --git a/src/Documentation/doc/index.md b/src/Documentation/doc/en/index.md
similarity index 100%
rename from src/Documentation/doc/index.md
rename to src/Documentation/doc/en/index.md
diff --git a/src/Documentation/doc/migrations/ns2.md b/src/Documentation/doc/en/migrations/ns2.md
similarity index 100%
rename from src/Documentation/doc/migrations/ns2.md
rename to src/Documentation/doc/en/migrations/ns2.md
diff --git a/src/Documentation/doc/migrations/v1.md b/src/Documentation/doc/en/migrations/v1.md
similarity index 100%
rename from src/Documentation/doc/migrations/v1.md
rename to src/Documentation/doc/en/migrations/v1.md
diff --git a/src/Documentation/doc/migrations/v2.md b/src/Documentation/doc/en/migrations/v2.md
similarity index 100%
rename from src/Documentation/doc/migrations/v2.md
rename to src/Documentation/doc/en/migrations/v2.md
diff --git a/src/Documentation/doc/programming/game_frozen.md b/src/Documentation/doc/en/programming/game_frozen.md
similarity index 100%
rename from src/Documentation/doc/programming/game_frozen.md
rename to src/Documentation/doc/en/programming/game_frozen.md
diff --git a/src/Documentation/doc/programming/go_algorithms.md b/src/Documentation/doc/en/programming/go_algorithms.md
similarity index 100%
rename from src/Documentation/doc/programming/go_algorithms.md
rename to src/Documentation/doc/en/programming/go_algorithms.md
diff --git a/src/Documentation/doc/programming/hackingalgorithms.md b/src/Documentation/doc/en/programming/hackingalgorithms.md
similarity index 100%
rename from src/Documentation/doc/programming/hackingalgorithms.md
rename to src/Documentation/doc/en/programming/hackingalgorithms.md
diff --git a/src/Documentation/doc/programming/learn.md b/src/Documentation/doc/en/programming/learn.md
similarity index 100%
rename from src/Documentation/doc/programming/learn.md
rename to src/Documentation/doc/en/programming/learn.md
diff --git a/src/Documentation/doc/programming/react.md b/src/Documentation/doc/en/programming/react.md
similarity index 100%
rename from src/Documentation/doc/programming/react.md
rename to src/Documentation/doc/en/programming/react.md
diff --git a/src/Documentation/doc/programming/remote_api.md b/src/Documentation/doc/en/programming/remote_api.md
similarity index 100%
rename from src/Documentation/doc/programming/remote_api.md
rename to src/Documentation/doc/en/programming/remote_api.md
diff --git a/src/Documentation/pages.ts b/src/Documentation/pages.ts
index 725dfa2ce..b7896e824 100644
--- a/src/Documentation/pages.ts
+++ b/src/Documentation/pages.ts
@@ -1,68 +1,68 @@
// THIS FILE IS AUTOGENERATED. DO NOT EDIT IT MANUALLY.
-import file0 from "./doc/advanced/bitnode_recommendation_comprehensive_guide.md?raw";
-import file1 from "./doc/advanced/bitnode_recommendation_short_guide.md?raw";
-import file2 from "./doc/advanced/bitnodes.md?raw";
-import file3 from "./doc/advanced/bladeburners.md?raw";
-import file4 from "./doc/advanced/corporation/basic-gameplay-and-term.md?raw";
-import file5 from "./doc/advanced/corporation/boost-material.md?raw";
-import file6 from "./doc/advanced/corporation/demand-competition.md?raw";
-import file7 from "./doc/advanced/corporation/division-raw-production.md?raw";
-import file8 from "./doc/advanced/corporation/faq.md?raw";
-import file9 from "./doc/advanced/corporation/financial-statement.md?raw";
-import file10 from "./doc/advanced/corporation/general-advice.md?raw";
-import file11 from "./doc/advanced/corporation/industry-supply-chain.md?raw";
-import file12 from "./doc/advanced/corporation/miscellany.md?raw";
-import file13 from "./doc/advanced/corporation/office.md?raw";
-import file14 from "./doc/advanced/corporation/optimal-selling-price-market-ta2.md?raw";
-import file15 from "./doc/advanced/corporation/product.md?raw";
-import file16 from "./doc/advanced/corporation/quality.md?raw";
-import file17 from "./doc/advanced/corporation/smart-supply.md?raw";
-import file18 from "./doc/advanced/corporation/unlocks-upgrade-research.md?raw";
-import file19 from "./doc/advanced/corporation/warehouse.md?raw";
-import file20 from "./doc/advanced/corporation/wilson-analytics-advert.md?raw";
-import file21 from "./doc/advanced/corporations.md?raw";
-import file22 from "./doc/advanced/faction_list.md?raw";
-import file23 from "./doc/advanced/gang.md?raw";
-import file24 from "./doc/advanced/grafting.md?raw";
-import file25 from "./doc/advanced/hacknetservers.md?raw";
-import file26 from "./doc/advanced/intelligence.md?raw";
-import file27 from "./doc/advanced/offlineandbonustime.md?raw";
-import file28 from "./doc/advanced/sleeves.md?raw";
-import file29 from "./doc/advanced/sourcefiles.md?raw";
-import file30 from "./doc/advanced/stanek.md?raw";
-import file31 from "./doc/basic/augmentations.md?raw";
-import file32 from "./doc/basic/autocomplete.md?raw";
-import file33 from "./doc/basic/codingcontracts.md?raw";
-import file34 from "./doc/basic/companies.md?raw";
-import file35 from "./doc/basic/crimes.md?raw";
-import file36 from "./doc/basic/factions.md?raw";
-import file37 from "./doc/basic/hacking.md?raw";
-import file38 from "./doc/basic/hacknet_nodes.md?raw";
-import file39 from "./doc/basic/infiltration.md?raw";
-import file40 from "./doc/basic/programs.md?raw";
-import file41 from "./doc/basic/ram.md?raw";
-import file42 from "./doc/basic/reputation.md?raw";
-import file43 from "./doc/basic/scripts.md?raw";
-import file44 from "./doc/basic/servers.md?raw";
-import file45 from "./doc/basic/stats.md?raw";
-import file46 from "./doc/basic/stockmarket.md?raw";
-import file47 from "./doc/basic/terminal.md?raw";
-import file48 from "./doc/basic/world.md?raw";
-import file49 from "./doc/changelog-v0.md?raw";
-import file50 from "./doc/changelog-v1.md?raw";
-import file51 from "./doc/changelog.md?raw";
-import file52 from "./doc/help/getting_started.md?raw";
-import file53 from "./doc/help/tools_and_resources.md?raw";
-import file54 from "./doc/index.md?raw";
-import file55 from "./doc/migrations/ns2.md?raw";
-import file56 from "./doc/migrations/v1.md?raw";
-import file57 from "./doc/migrations/v2.md?raw";
-import file58 from "./doc/programming/game_frozen.md?raw";
-import file59 from "./doc/programming/go_algorithms.md?raw";
-import file60 from "./doc/programming/hackingalgorithms.md?raw";
-import file61 from "./doc/programming/learn.md?raw";
-import file62 from "./doc/programming/react.md?raw";
-import file63 from "./doc/programming/remote_api.md?raw";
+import file0 from "./doc/en/advanced/bitnode_recommendation_comprehensive_guide.md?raw";
+import file1 from "./doc/en/advanced/bitnode_recommendation_short_guide.md?raw";
+import file2 from "./doc/en/advanced/bitnodes.md?raw";
+import file3 from "./doc/en/advanced/bladeburners.md?raw";
+import file4 from "./doc/en/advanced/corporation/basic-gameplay-and-term.md?raw";
+import file5 from "./doc/en/advanced/corporation/boost-material.md?raw";
+import file6 from "./doc/en/advanced/corporation/demand-competition.md?raw";
+import file7 from "./doc/en/advanced/corporation/division-raw-production.md?raw";
+import file8 from "./doc/en/advanced/corporation/faq.md?raw";
+import file9 from "./doc/en/advanced/corporation/financial-statement.md?raw";
+import file10 from "./doc/en/advanced/corporation/general-advice.md?raw";
+import file11 from "./doc/en/advanced/corporation/industry-supply-chain.md?raw";
+import file12 from "./doc/en/advanced/corporation/miscellany.md?raw";
+import file13 from "./doc/en/advanced/corporation/office.md?raw";
+import file14 from "./doc/en/advanced/corporation/optimal-selling-price-market-ta2.md?raw";
+import file15 from "./doc/en/advanced/corporation/product.md?raw";
+import file16 from "./doc/en/advanced/corporation/quality.md?raw";
+import file17 from "./doc/en/advanced/corporation/smart-supply.md?raw";
+import file18 from "./doc/en/advanced/corporation/unlocks-upgrade-research.md?raw";
+import file19 from "./doc/en/advanced/corporation/warehouse.md?raw";
+import file20 from "./doc/en/advanced/corporation/wilson-analytics-advert.md?raw";
+import file21 from "./doc/en/advanced/corporations.md?raw";
+import file22 from "./doc/en/advanced/faction_list.md?raw";
+import file23 from "./doc/en/advanced/gang.md?raw";
+import file24 from "./doc/en/advanced/grafting.md?raw";
+import file25 from "./doc/en/advanced/hacknetservers.md?raw";
+import file26 from "./doc/en/advanced/intelligence.md?raw";
+import file27 from "./doc/en/advanced/offlineandbonustime.md?raw";
+import file28 from "./doc/en/advanced/sleeves.md?raw";
+import file29 from "./doc/en/advanced/sourcefiles.md?raw";
+import file30 from "./doc/en/advanced/stanek.md?raw";
+import file31 from "./doc/en/basic/augmentations.md?raw";
+import file32 from "./doc/en/basic/autocomplete.md?raw";
+import file33 from "./doc/en/basic/codingcontracts.md?raw";
+import file34 from "./doc/en/basic/companies.md?raw";
+import file35 from "./doc/en/basic/crimes.md?raw";
+import file36 from "./doc/en/basic/factions.md?raw";
+import file37 from "./doc/en/basic/hacking.md?raw";
+import file38 from "./doc/en/basic/hacknet_nodes.md?raw";
+import file39 from "./doc/en/basic/infiltration.md?raw";
+import file40 from "./doc/en/basic/programs.md?raw";
+import file41 from "./doc/en/basic/ram.md?raw";
+import file42 from "./doc/en/basic/reputation.md?raw";
+import file43 from "./doc/en/basic/scripts.md?raw";
+import file44 from "./doc/en/basic/servers.md?raw";
+import file45 from "./doc/en/basic/stats.md?raw";
+import file46 from "./doc/en/basic/stockmarket.md?raw";
+import file47 from "./doc/en/basic/terminal.md?raw";
+import file48 from "./doc/en/basic/world.md?raw";
+import file49 from "./doc/en/changelog-v0.md?raw";
+import file50 from "./doc/en/changelog-v1.md?raw";
+import file51 from "./doc/en/changelog.md?raw";
+import file52 from "./doc/en/help/getting_started.md?raw";
+import file53 from "./doc/en/help/tools_and_resources.md?raw";
+import file54 from "./doc/en/index.md?raw";
+import file55 from "./doc/en/migrations/ns2.md?raw";
+import file56 from "./doc/en/migrations/v1.md?raw";
+import file57 from "./doc/en/migrations/v2.md?raw";
+import file58 from "./doc/en/programming/game_frozen.md?raw";
+import file59 from "./doc/en/programming/go_algorithms.md?raw";
+import file60 from "./doc/en/programming/hackingalgorithms.md?raw";
+import file61 from "./doc/en/programming/learn.md?raw";
+import file62 from "./doc/en/programming/react.md?raw";
+import file63 from "./doc/en/programming/remote_api.md?raw";
import nsDoc_bitburner__valueof_md from "../../markdown/bitburner._valueof.md?raw";
import nsDoc_bitburner_activefragment_highestcharge_md from "../../markdown/bitburner.activefragment.highestcharge.md?raw";
import nsDoc_bitburner_activefragment_id_md from "../../markdown/bitburner.activefragment.id.md?raw";
@@ -1498,70 +1498,70 @@ import nsDoc_bitburner_workstats_strexp_md from "../../markdown/bitburner.workst
import nsDoc_index_md from "../../markdown/index.md?raw";
export const AllPages: Record = {};
-AllPages["advanced/bitnode_recommendation_comprehensive_guide.md"] = file0;
-AllPages["advanced/bitnode_recommendation_short_guide.md"] = file1;
-AllPages["advanced/bitnodes.md"] = file2;
-AllPages["advanced/bladeburners.md"] = file3;
-AllPages["advanced/corporation/basic-gameplay-and-term.md"] = file4;
-AllPages["advanced/corporation/boost-material.md"] = file5;
-AllPages["advanced/corporation/demand-competition.md"] = file6;
-AllPages["advanced/corporation/division-raw-production.md"] = file7;
-AllPages["advanced/corporation/faq.md"] = file8;
-AllPages["advanced/corporation/financial-statement.md"] = file9;
-AllPages["advanced/corporation/general-advice.md"] = file10;
-AllPages["advanced/corporation/industry-supply-chain.md"] = file11;
-AllPages["advanced/corporation/miscellany.md"] = file12;
-AllPages["advanced/corporation/office.md"] = file13;
-AllPages["advanced/corporation/optimal-selling-price-market-ta2.md"] = file14;
-AllPages["advanced/corporation/product.md"] = file15;
-AllPages["advanced/corporation/quality.md"] = file16;
-AllPages["advanced/corporation/smart-supply.md"] = file17;
-AllPages["advanced/corporation/unlocks-upgrade-research.md"] = file18;
-AllPages["advanced/corporation/warehouse.md"] = file19;
-AllPages["advanced/corporation/wilson-analytics-advert.md"] = file20;
-AllPages["advanced/corporations.md"] = file21;
-AllPages["advanced/faction_list.md"] = file22;
-AllPages["advanced/gang.md"] = file23;
-AllPages["advanced/grafting.md"] = file24;
-AllPages["advanced/hacknetservers.md"] = file25;
-AllPages["advanced/intelligence.md"] = file26;
-AllPages["advanced/offlineandbonustime.md"] = file27;
-AllPages["advanced/sleeves.md"] = file28;
-AllPages["advanced/sourcefiles.md"] = file29;
-AllPages["advanced/stanek.md"] = file30;
-AllPages["basic/augmentations.md"] = file31;
-AllPages["basic/autocomplete.md"] = file32;
-AllPages["basic/codingcontracts.md"] = file33;
-AllPages["basic/companies.md"] = file34;
-AllPages["basic/crimes.md"] = file35;
-AllPages["basic/factions.md"] = file36;
-AllPages["basic/hacking.md"] = file37;
-AllPages["basic/hacknet_nodes.md"] = file38;
-AllPages["basic/infiltration.md"] = file39;
-AllPages["basic/programs.md"] = file40;
-AllPages["basic/ram.md"] = file41;
-AllPages["basic/reputation.md"] = file42;
-AllPages["basic/scripts.md"] = file43;
-AllPages["basic/servers.md"] = file44;
-AllPages["basic/stats.md"] = file45;
-AllPages["basic/stockmarket.md"] = file46;
-AllPages["basic/terminal.md"] = file47;
-AllPages["basic/world.md"] = file48;
-AllPages["changelog-v0.md"] = file49;
-AllPages["changelog-v1.md"] = file50;
-AllPages["changelog.md"] = file51;
-AllPages["help/getting_started.md"] = file52;
-AllPages["help/tools_and_resources.md"] = file53;
-AllPages["index.md"] = file54;
-AllPages["migrations/ns2.md"] = file55;
-AllPages["migrations/v1.md"] = file56;
-AllPages["migrations/v2.md"] = file57;
-AllPages["programming/game_frozen.md"] = file58;
-AllPages["programming/go_algorithms.md"] = file59;
-AllPages["programming/hackingalgorithms.md"] = file60;
-AllPages["programming/learn.md"] = file61;
-AllPages["programming/react.md"] = file62;
-AllPages["programming/remote_api.md"] = file63;
+AllPages["en/advanced/bitnode_recommendation_comprehensive_guide.md"] = file0;
+AllPages["en/advanced/bitnode_recommendation_short_guide.md"] = file1;
+AllPages["en/advanced/bitnodes.md"] = file2;
+AllPages["en/advanced/bladeburners.md"] = file3;
+AllPages["en/advanced/corporation/basic-gameplay-and-term.md"] = file4;
+AllPages["en/advanced/corporation/boost-material.md"] = file5;
+AllPages["en/advanced/corporation/demand-competition.md"] = file6;
+AllPages["en/advanced/corporation/division-raw-production.md"] = file7;
+AllPages["en/advanced/corporation/faq.md"] = file8;
+AllPages["en/advanced/corporation/financial-statement.md"] = file9;
+AllPages["en/advanced/corporation/general-advice.md"] = file10;
+AllPages["en/advanced/corporation/industry-supply-chain.md"] = file11;
+AllPages["en/advanced/corporation/miscellany.md"] = file12;
+AllPages["en/advanced/corporation/office.md"] = file13;
+AllPages["en/advanced/corporation/optimal-selling-price-market-ta2.md"] = file14;
+AllPages["en/advanced/corporation/product.md"] = file15;
+AllPages["en/advanced/corporation/quality.md"] = file16;
+AllPages["en/advanced/corporation/smart-supply.md"] = file17;
+AllPages["en/advanced/corporation/unlocks-upgrade-research.md"] = file18;
+AllPages["en/advanced/corporation/warehouse.md"] = file19;
+AllPages["en/advanced/corporation/wilson-analytics-advert.md"] = file20;
+AllPages["en/advanced/corporations.md"] = file21;
+AllPages["en/advanced/faction_list.md"] = file22;
+AllPages["en/advanced/gang.md"] = file23;
+AllPages["en/advanced/grafting.md"] = file24;
+AllPages["en/advanced/hacknetservers.md"] = file25;
+AllPages["en/advanced/intelligence.md"] = file26;
+AllPages["en/advanced/offlineandbonustime.md"] = file27;
+AllPages["en/advanced/sleeves.md"] = file28;
+AllPages["en/advanced/sourcefiles.md"] = file29;
+AllPages["en/advanced/stanek.md"] = file30;
+AllPages["en/basic/augmentations.md"] = file31;
+AllPages["en/basic/autocomplete.md"] = file32;
+AllPages["en/basic/codingcontracts.md"] = file33;
+AllPages["en/basic/companies.md"] = file34;
+AllPages["en/basic/crimes.md"] = file35;
+AllPages["en/basic/factions.md"] = file36;
+AllPages["en/basic/hacking.md"] = file37;
+AllPages["en/basic/hacknet_nodes.md"] = file38;
+AllPages["en/basic/infiltration.md"] = file39;
+AllPages["en/basic/programs.md"] = file40;
+AllPages["en/basic/ram.md"] = file41;
+AllPages["en/basic/reputation.md"] = file42;
+AllPages["en/basic/scripts.md"] = file43;
+AllPages["en/basic/servers.md"] = file44;
+AllPages["en/basic/stats.md"] = file45;
+AllPages["en/basic/stockmarket.md"] = file46;
+AllPages["en/basic/terminal.md"] = file47;
+AllPages["en/basic/world.md"] = file48;
+AllPages["en/changelog-v0.md"] = file49;
+AllPages["en/changelog-v1.md"] = file50;
+AllPages["en/changelog.md"] = file51;
+AllPages["en/help/getting_started.md"] = file52;
+AllPages["en/help/tools_and_resources.md"] = file53;
+AllPages["en/index.md"] = file54;
+AllPages["en/migrations/ns2.md"] = file55;
+AllPages["en/migrations/v1.md"] = file56;
+AllPages["en/migrations/v2.md"] = file57;
+AllPages["en/programming/game_frozen.md"] = file58;
+AllPages["en/programming/go_algorithms.md"] = file59;
+AllPages["en/programming/hackingalgorithms.md"] = file60;
+AllPages["en/programming/learn.md"] = file61;
+AllPages["en/programming/react.md"] = file62;
+AllPages["en/programming/remote_api.md"] = file63;
AllPages["nsDoc/bitburner._valueof.md"] = nsDoc_bitburner__valueof_md;
AllPages["nsDoc/bitburner.activefragment.highestcharge.md"] = nsDoc_bitburner_activefragment_highestcharge_md;
AllPages["nsDoc/bitburner.activefragment.id.md"] = nsDoc_bitburner_activefragment_id_md;
diff --git a/src/Documentation/root.ts b/src/Documentation/root.ts
index dd452be5c..490da3ed0 100644
--- a/src/Documentation/root.ts
+++ b/src/Documentation/root.ts
@@ -2,7 +2,18 @@ import { AllPages } from "./pages";
import { EventEmitter } from "../utils/EventEmitter";
export const getPage = (title: string): string => {
- const pageContent = AllPages[title];
+ const lang = new Intl.Locale(navigator.language).language;
+ const fallbackLang = "en"; // For untranslated languages
+ let pageContent = null;
+ if (!title.startsWith("nsDoc")) {
+ pageContent = AllPages[lang + "/" + title];
+ if (pageContent == null) {
+ pageContent = AllPages[fallbackLang + "/" + title];
+ }
+ }
+ if (pageContent == null) {
+ pageContent = AllPages[title];
+ }
if (pageContent == null) {
const errorMessage = `Cannot find ${title} page.`;
console.error(errorMessage);
diff --git a/src/GameOptions/ui/RemoteAPIPage.tsx b/src/GameOptions/ui/RemoteAPIPage.tsx
index bde025691..43fdca73e 100644
--- a/src/GameOptions/ui/RemoteAPIPage.tsx
+++ b/src/GameOptions/ui/RemoteAPIPage.tsx
@@ -50,7 +50,7 @@ export const RemoteAPIPage = (): React.ReactElement => {
Documentation
diff --git a/src/ui/MD/components.tsx b/src/ui/MD/components.tsx
index 0e7c816d6..70108edff 100644
--- a/src/ui/MD/components.tsx
+++ b/src/ui/MD/components.tsx
@@ -52,7 +52,7 @@ export const p = (props: React.PropsWithChildren