diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 008a459e..3283b887 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -31,6 +31,7 @@ jobs:
cargo install mdbook --no-default-features --features search --vers "^0.4" --locked
cargo install mdbook-variables --vers "^0.2" --locked
cargo install mdbook-admonish --vers "^1" --locked
+ cargo install mdbook-i18n-helpers --locked
export PATH="$PATH:$HOME/.cargo/bin"
mdbook --version
diff --git a/.gitignore b/.gitignore
index 0b302eea..728f0098 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,6 +13,13 @@ metals.sbt
.vscode
+# GetText
+*.pot
+*.po~
+*.mo
+po/ja.po
+po/zh-cn.po
+
# Dependencies
node_modules
diff --git a/DEVELOPING.md b/DEVELOPING.md
index 4844605b..72c0b193 100644
--- a/DEVELOPING.md
+++ b/DEVELOPING.md
@@ -1,3 +1,35 @@
+Globalization
+-------------
+
+To add a new locale (es, zh-cn, etc):
+
+```bash
+script/genpo.sh xx
+```
+
+To resync the po files to the original:
+
+```bash
+script/sync.sh xx
+```
+
+To serve the po files, run the following:
+
+```bash
+script/serve.sh xx
+```
+
+then run:
+
+```bash
+script/concat.sh xx
+```
+
+when you change a `*.po` file
+
+Diataxis
+--------
+
The following is the [four kinds of documentation](https://www.writethedocs.org/videos/eu/2017/the-four-kinds-of-documentation-and-why-you-need-to-understand-what-they-are-daniele-procida/) structure, which I'm not really sure would work, but worth giving it some try.
### tutorial
diff --git a/book.toml b/book.toml
index e1fb3199..49c8aab4 100644
--- a/book.toml
+++ b/book.toml
@@ -7,7 +7,7 @@ title = "The Book of sbt"
[output.html]
theme = "theme"
-additional-css = ["src/reference/custom-202409.css", "src/reference/mdbook-admonish.css"]
+additional-css = ["src/reference/custom-202410.css", "src/reference/mdbook-admonish.css"]
cname = "www.scala-sbt.org"
[preprocessor.variables]
@@ -21,3 +21,9 @@ scala2_13_example_version = "2.13.15"
[preprocessor.admonish]
command = "mdbook-admonish"
assets_version = "3.0.2" # do not edit: managed by `mdbook-admonish install`
+
+[preprocessor.gettext]
+after = ["links"]
+
+[build]
+extra-watch-dirs = ["po"]
diff --git a/build.sbt b/build.sbt
index d646f796..55561b3a 100644
--- a/build.sbt
+++ b/build.sbt
@@ -17,7 +17,7 @@ lazy val root = (project in file("."))
name := "website",
siteEmail := "eed3si9n" + "@gmail.com",
// Reference
- MdBook / siteSubdirName := s"""$targetSbtBinaryVersion/docs/en""",
+ MdBook / siteSubdirName := s"""$targetSbtBinaryVersion/docs/""",
tutorialSubDirName := s"""$targetSbtBinaryVersion/tutorial""",
landingSubDirName := "",
// Redirects
diff --git a/po/summary/appendix-glossary.ja.po b/po/summary/appendix-glossary.ja.po
new file mode 100644
index 00000000..5b6f1932
--- /dev/null
+++ b/po/summary/appendix-glossary.ja.po
@@ -0,0 +1,135 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:08:34-04:00\n"
+"PO-Revision-Date: 2024-10-30T01:14:09-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/appendix/glossary.md:20
+msgid "Glossary"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:23
+msgid "Symbols"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:26
+msgid "`:=`, `+=`, `++=`"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:28
+msgid ""
+"These construct a [Setting](../../../../1.x/api/sbt/internal/util/"
+"Init$Setting.html), which is the fundamental type in the [settings](../guide/"
+"build-definition-basics.md) system."
+msgstr ""
+
+#: src/reference/appendix/glossary.md:30
+msgid "`%`"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:32
+msgid ""
+"This is used to build up a [ModuleID](../../../../1.x/api/sbt/"
+"librarymanagement/ModuleID.html)."
+msgstr ""
+
+#: src/reference/appendix/glossary.md:34
+msgid "`%%`"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:36
+msgid ""
+"This is similar to `%` except that it identifies a dependency that has been "
+"[cross built](../concepts/cross-building.html)."
+msgstr ""
+
+#: src/reference/appendix/glossary.md:38
+msgid "`%%%`"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:40
+msgid ""
+"This is defined in [sbt-platform-deps](https://github.com/portable-scala/sbt-"
+"platform-deps) in sbt 1.x."
+msgstr ""
+
+#: src/reference/appendix/glossary.md:42
+msgid "C"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:45
+msgid "Command"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:47
+msgid ""
+"A system-level building block of sbt, often used to capture user interaction "
+"or IDE interaction. See [Command](../concepts/command.html)."
+msgstr ""
+
+#: src/reference/appendix/glossary.md:49
+msgid "Cross building"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:51
+msgid ""
+"The idea of building multiple targets from the same set of source file. This "
+"includes Scala cross building, targetting multiple versions of Scala "
+"releases; platform cross building, targetting JVM, Scala.JS, and Scala "
+"Native; and custom virtual axis like Spark versions."
+msgstr ""
+
+#: src/reference/appendix/glossary.md:53
+msgid "D"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:56
+msgid "Dependency resolution"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:58
+msgid ""
+"During library management, when multiple version candidates (e.g. "
+"`foo:2.2.0` and `foo:3.0.0`) are found for a library `foo` within a "
+"dependency graph, it is called a _dependency conflict_. The process of "
+"mediating the conflict into a single version is called _dependency "
+"resolution_. Often, this would result in the older version beging removed "
+"from the dependency graph, which is called an _eviction_ of `foo:2.2.0`. In "
+"some cases, an eviction is considered unsafe because the candidates are not "
+"replacable. See [sbt update](../reference/sbt-update.md)."
+msgstr ""
+
+#: src/reference/appendix/glossary.md:60
+msgid "E"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:63
+msgid "Eviction"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:65
+msgid "See [dependency resolution](#dependency-resolution)."
+msgstr ""
+
+#: src/reference/appendix/glossary.md:67
+msgid "V"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:70
+msgid "`value`"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:72
+msgid ""
+"`.value` is used to denote a happens-before relationship from one task or "
+"setting to another. This method is special (it is a macro) and cannot be "
+"used except in `:=` or in the standalone construction methods `Def.setting` "
+"and `Def.task`."
+msgstr ""
diff --git a/po/summary/appendix-glossary.zh-cn.po b/po/summary/appendix-glossary.zh-cn.po
new file mode 100644
index 00000000..151d0a24
--- /dev/null
+++ b/po/summary/appendix-glossary.zh-cn.po
@@ -0,0 +1,135 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/appendix/glossary.md:20
+msgid "Glossary"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:23
+msgid "Symbols"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:26
+msgid "`:=`, `+=`, `++=`"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:28
+msgid ""
+"These construct a [Setting](../../../../1.x/api/sbt/internal/util/"
+"Init$Setting.html), which is the fundamental type in the [settings](../guide/"
+"build-definition-basics.md) system."
+msgstr ""
+
+#: src/reference/appendix/glossary.md:30
+msgid "`%`"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:32
+msgid ""
+"This is used to build up a [ModuleID](../../../../1.x/api/sbt/"
+"librarymanagement/ModuleID.html)."
+msgstr ""
+
+#: src/reference/appendix/glossary.md:34
+msgid "`%%`"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:36
+msgid ""
+"This is similar to `%` except that it identifies a dependency that has been "
+"[cross built](../concepts/cross-building.html)."
+msgstr ""
+
+#: src/reference/appendix/glossary.md:38
+msgid "`%%%`"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:40
+msgid ""
+"This is defined in [sbt-platform-deps](https://github.com/portable-scala/sbt-"
+"platform-deps) in sbt 1.x."
+msgstr ""
+
+#: src/reference/appendix/glossary.md:42
+msgid "C"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:45
+msgid "Command"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:47
+msgid ""
+"A system-level building block of sbt, often used to capture user interaction "
+"or IDE interaction. See [Command](../concepts/command.html)."
+msgstr ""
+
+#: src/reference/appendix/glossary.md:49
+msgid "Cross building"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:51
+msgid ""
+"The idea of building multiple targets from the same set of source file. This "
+"includes Scala cross building, targetting multiple versions of Scala "
+"releases; platform cross building, targetting JVM, Scala.JS, and Scala "
+"Native; and custom virtual axis like Spark versions."
+msgstr ""
+
+#: src/reference/appendix/glossary.md:53
+msgid "D"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:56
+msgid "Dependency resolution"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:58
+msgid ""
+"During library management, when multiple version candidates (e.g. "
+"`foo:2.2.0` and `foo:3.0.0`) are found for a library `foo` within a "
+"dependency graph, it is called a _dependency conflict_. The process of "
+"mediating the conflict into a single version is called _dependency "
+"resolution_. Often, this would result in the older version beging removed "
+"from the dependency graph, which is called an _eviction_ of `foo:2.2.0`. In "
+"some cases, an eviction is considered unsafe because the candidates are not "
+"replacable. See [sbt update](../reference/sbt-update.md)."
+msgstr ""
+
+#: src/reference/appendix/glossary.md:60
+msgid "E"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:63
+msgid "Eviction"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:65
+msgid "See [dependency resolution](#dependency-resolution)."
+msgstr ""
+
+#: src/reference/appendix/glossary.md:67
+msgid "V"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:70
+msgid "`value`"
+msgstr ""
+
+#: src/reference/appendix/glossary.md:72
+msgid ""
+"`.value` is used to denote a happens-before relationship from one task or "
+"setting to another. This method is special (it is a macro) and cannot be "
+"used except in `:=` or in the standalone construction methods `Def.setting` "
+"and `Def.task`."
+msgstr ""
diff --git a/po/summary/appendix-setup-notes.ja.po b/po/summary/appendix-setup-notes.ja.po
new file mode 100644
index 00000000..5083bad6
--- /dev/null
+++ b/po/summary/appendix-setup-notes.ja.po
@@ -0,0 +1,174 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:08:34-04:00\n"
+"PO-Revision-Date: 2024-10-30T01:14:09-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/appendix/setup-notes.md:1
+msgid "Setup Notes"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:4
+msgid ""
+"See [Installing sbt runner](Setup.md) for the instruction on general setup. "
+"Using Coursier or SDKMAN has two advantages."
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:6
+msgid ""
+"They will install the official packaging by Eclipse Adoptium etc, as opposed "
+"to the [\"mystery meat OpenJDK builds\"](https://mail.openjdk.java.net/"
+"pipermail/jdk8u-dev/2019-May/009330.html)."
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:7
+msgid ""
+"They will install `tgz` packaging of sbt that contains all JAR files. (DEB "
+"and RPM packages do not to save bandwidth)"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:9
+msgid ""
+"This page describes alternative ways of installing the sbt runner. Note that "
+"some of the third-party packages may not provide the latest version."
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:11
+msgid "OS specific setup"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:14
+msgid "macOS"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:16
+msgid "Homebrew"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:22
+msgid ""
+"```admonish warning\n"
+"Homebrew maintainers have added a dependency to JDK 13 because they want to "
+"use more brew dependencies ([brew#50649](https://github.com/Homebrew/"
+"homebrew-core/issues/50649)). This causes sbt to use JDK 13 even when `java` "
+"available on PATH is JDK 8 or 11. To prevent `sbt` from running on JDK 13, "
+"install [jEnv](https://www.jenv.be/) or switch to using [SDKMAN](https://"
+"sdkman.io/).\n"
+"```"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:26
+msgid "Windows"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:28
+msgid "[sbt-.msi](https://github.com/sbt/sbt/releases/download/v/sbt-.msi)"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:30
+msgid "[Chocolatey](https://chocolatey.org/packages/sbt)"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:36
+msgid "[Scoop](https://scoop.sh/)"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:42
+msgid "Linux"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:44
+msgid "Ubuntu and other Debian-based distributions"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:46
+msgid ""
+"[DEB]($sbt_deb_package_base$sbt-$app_version$.deb) package is officially "
+"supported by sbt, but it does not contain JAR files to save bandwidth."
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:48
+msgid ""
+"Ubuntu and other Debian-based distributions use the DEB format, but usually "
+"you don't install your software from a local DEB file. Instead they come "
+"with package managers both for the command line (e.g. `apt-get`, `aptitude`) "
+"or with a graphical user interface (e.g. Synaptic). Run the following from "
+"the terminal to install `sbt` (You'll need superuser privileges to do so, "
+"hence the `sudo`)."
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:54
+msgid "\"deb https://repo.scala-sbt.org/scalasbt/debian all main\""
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:55
+msgid "\"deb https://repo.scala-sbt.org/scalasbt/debian /\""
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:56
+msgid ""
+"\"https://keyserver.ubuntu.com/pks/lookup?"
+"op=get&search=0x2EE0EA64E40A89B84B2DF73499E82A75642AC823\""
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:62
+msgid ""
+"Package managers will check a number of configured repositories for packages "
+"to offer for installation. You just have to add the repository to the places "
+"your package manager will check."
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:64
+msgid ""
+"Once `sbt` is installed, you'll be able to manage the package in `aptitude` "
+"or Synaptic after you updated their package cache. You should also be able "
+"to see the added repository at the bottom of the list in System Settings -> "
+"Software & Updates -> Other Software:"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:66
+msgid ""
+"![Ubuntu Software & Updates Screenshot](/files/ubuntu-sources.png \"Ubuntu "
+"Software & Updates Screenshot\")"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:68
+msgid ""
+"`sudo apt-key adv --keyserver hkps://keyserver.ubuntu.com:443 --recv "
+"2EE0EA64E40A89B84B2DF73499E82A75642AC823` may not work on Ubuntu Bionic LTS "
+"(18.04) since it's using a buggy GnuPG, so we are advising to use web API to "
+"download the public key in the above."
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:70
+msgid "Red Hat Enterprise Linux and other RPM-based distributions"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:72
+msgid ""
+"[RPM]($sbt_rpm_package_base$sbt-$app_version$.rpm) package is officially "
+"supported by sbt, but it does not contain JAR files to save bandwidth."
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:74
+msgid ""
+"Red Hat Enterprise Linux and other RPM-based distributions use the RPM "
+"format. Run the following from the terminal to install `sbt` (You'll need "
+"superuser privileges to do so, hence the `sudo`)."
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:78
+#: src/reference/appendix/setup-notes.md:88
+msgid "# remove old Bintray repo file\n"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:85
+msgid "On Fedora (31 and above), use `sbt-rpm.repo`:"
+msgstr ""
diff --git a/po/summary/appendix-setup-notes.zh-cn.po b/po/summary/appendix-setup-notes.zh-cn.po
new file mode 100644
index 00000000..37573775
--- /dev/null
+++ b/po/summary/appendix-setup-notes.zh-cn.po
@@ -0,0 +1,174 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/appendix/setup-notes.md:1
+msgid "Setup Notes"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:4
+msgid ""
+"See [Installing sbt runner](Setup.md) for the instruction on general setup. "
+"Using Coursier or SDKMAN has two advantages."
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:6
+msgid ""
+"They will install the official packaging by Eclipse Adoptium etc, as opposed "
+"to the [\"mystery meat OpenJDK builds\"](https://mail.openjdk.java.net/"
+"pipermail/jdk8u-dev/2019-May/009330.html)."
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:7
+msgid ""
+"They will install `tgz` packaging of sbt that contains all JAR files. (DEB "
+"and RPM packages do not to save bandwidth)"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:9
+msgid ""
+"This page describes alternative ways of installing the sbt runner. Note that "
+"some of the third-party packages may not provide the latest version."
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:11
+msgid "OS specific setup"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:14
+msgid "macOS"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:16
+msgid "Homebrew"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:22
+msgid ""
+"```admonish warning\n"
+"Homebrew maintainers have added a dependency to JDK 13 because they want to "
+"use more brew dependencies ([brew#50649](https://github.com/Homebrew/"
+"homebrew-core/issues/50649)). This causes sbt to use JDK 13 even when `java` "
+"available on PATH is JDK 8 or 11. To prevent `sbt` from running on JDK 13, "
+"install [jEnv](https://www.jenv.be/) or switch to using [SDKMAN](https://"
+"sdkman.io/).\n"
+"```"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:26
+msgid "Windows"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:28
+msgid "[sbt-.msi](https://github.com/sbt/sbt/releases/download/v/sbt-.msi)"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:30
+msgid "[Chocolatey](https://chocolatey.org/packages/sbt)"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:36
+msgid "[Scoop](https://scoop.sh/)"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:42
+msgid "Linux"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:44
+msgid "Ubuntu and other Debian-based distributions"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:46
+msgid ""
+"[DEB]($sbt_deb_package_base$sbt-$app_version$.deb) package is officially "
+"supported by sbt, but it does not contain JAR files to save bandwidth."
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:48
+msgid ""
+"Ubuntu and other Debian-based distributions use the DEB format, but usually "
+"you don't install your software from a local DEB file. Instead they come "
+"with package managers both for the command line (e.g. `apt-get`, `aptitude`) "
+"or with a graphical user interface (e.g. Synaptic). Run the following from "
+"the terminal to install `sbt` (You'll need superuser privileges to do so, "
+"hence the `sudo`)."
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:54
+msgid "\"deb https://repo.scala-sbt.org/scalasbt/debian all main\""
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:55
+msgid "\"deb https://repo.scala-sbt.org/scalasbt/debian /\""
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:56
+msgid ""
+"\"https://keyserver.ubuntu.com/pks/lookup?"
+"op=get&search=0x2EE0EA64E40A89B84B2DF73499E82A75642AC823\""
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:62
+msgid ""
+"Package managers will check a number of configured repositories for packages "
+"to offer for installation. You just have to add the repository to the places "
+"your package manager will check."
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:64
+msgid ""
+"Once `sbt` is installed, you'll be able to manage the package in `aptitude` "
+"or Synaptic after you updated their package cache. You should also be able "
+"to see the added repository at the bottom of the list in System Settings -> "
+"Software & Updates -> Other Software:"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:66
+msgid ""
+"![Ubuntu Software & Updates Screenshot](/files/ubuntu-sources.png \"Ubuntu "
+"Software & Updates Screenshot\")"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:68
+msgid ""
+"`sudo apt-key adv --keyserver hkps://keyserver.ubuntu.com:443 --recv "
+"2EE0EA64E40A89B84B2DF73499E82A75642AC823` may not work on Ubuntu Bionic LTS "
+"(18.04) since it's using a buggy GnuPG, so we are advising to use web API to "
+"download the public key in the above."
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:70
+msgid "Red Hat Enterprise Linux and other RPM-based distributions"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:72
+msgid ""
+"[RPM]($sbt_rpm_package_base$sbt-$app_version$.rpm) package is officially "
+"supported by sbt, but it does not contain JAR files to save bandwidth."
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:74
+msgid ""
+"Red Hat Enterprise Linux and other RPM-based distributions use the RPM "
+"format. Run the following from the terminal to install `sbt` (You'll need "
+"superuser privileges to do so, hence the `sudo`)."
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:78
+#: src/reference/appendix/setup-notes.md:88
+msgid "# remove old Bintray repo file\n"
+msgstr ""
+
+#: src/reference/appendix/setup-notes.md:85
+msgid "On Fedora (31 and above), use `sbt-rpm.repo`:"
+msgstr ""
diff --git a/po/summary/changes.ja.po b/po/summary/changes.ja.po
new file mode 100644
index 00000000..8ccfd9a2
--- /dev/null
+++ b/po/summary/changes.ja.po
@@ -0,0 +1,16 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:08:34-04:00\n"
+"PO-Revision-Date: 2024-10-30T01:14:09-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/changes/index.md:1
+msgid "Changes"
+msgstr ""
diff --git a/po/summary/changes.zh-cn.po b/po/summary/changes.zh-cn.po
new file mode 100644
index 00000000..5ffc1950
--- /dev/null
+++ b/po/summary/changes.zh-cn.po
@@ -0,0 +1,16 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/changes/index.md:1
+msgid "Changes"
+msgstr ""
diff --git a/po/summary/changes/migrating-from-sbt-1x.ja.po b/po/summary/changes/migrating-from-sbt-1x.ja.po
new file mode 100644
index 00000000..3072caa4
--- /dev/null
+++ b/po/summary/changes/migrating-from-sbt-1x.ja.po
@@ -0,0 +1,240 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:08:34-04:00\n"
+"PO-Revision-Date: 2024-10-30T01:14:09-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:1
+msgid "Migrating from sbt 1.x"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:4
+msgid "Changing `build.sbt` DSL to Scala 3.x"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:7
+msgid ""
+"As a reminder, users can build either Scala 2.x or Scala 3.x programs using "
+"either sbt 1.x or sbt 2.x. However, the Scala that underlies the `build.sbt` "
+"DSL is determined by the sbt version. In sbt 2.0, we are migrating to Scala "
+"3.x."
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:9
+msgid ""
+"This means that if you implement custom tasks or sbt plugins for sbt 2.x, it "
+"must be done using Scala 3.x. See [Scala 3.x incompatibility table](https://"
+"docs.scala-lang.org/scala3/guides/migration/incompatibility-table.html) and "
+"[Scala 2 with -Xsource:3](https://docs.scala-lang.org/scala3/guides/"
+"migration/tooling-scala2-xsource3.html)."
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:12
+msgid "// This works on Scala 2.12.20 under -Xsource:3"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:16
+msgid "Bare settings changes"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:20
+msgid "\"0.1.0\""
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:21
+#: src/reference/changes/migrating-from-sbt-1.x.md:62
+msgid "\"3.3.3\""
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:24
+msgid ""
+"_Bare settings_, like the example above, are settings written directly in "
+"`build.sbt` without `settings(...)`."
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:31
+msgid "\"root\" // every subprojects will be named root!"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:35
+msgid "Migrating ThisBuild"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:37
+msgid ""
+"In sbt 2.x, bare settings settings should no longer be scoped to "
+"`ThisBuild`. One benefit of the new _common settings_ over `ThisBuild` is "
+"that it would act in a more predictable delegation. These settings are "
+"inserted between plugins settings and those defined in `settings(...)`, "
+"meaning they can be used to define settings like `Compile / scalacOptions`, "
+"which was not possible with `ThisBuild`."
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:39
+msgid "Migrating to slash syntax"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:42
+msgid ""
+"sbt 1.x supported both the sbt 0.13 style syntax and the slash syntax. sbt 2."
+"x removes the support for the sbt 0.13 syntax, so use the slash syntax for "
+"both sbt shell and in `build.sbt`:"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:48
+msgid ""
+"For example, `test:compile` will no longer work on the shell. Use `Test/"
+"compile` instead. See [syntactic Scalafix rule for unified slash syntax]"
+"(https://eed3si9n.com/syntactic-scalafix-rule-for-unified-slash-syntax/) for "
+"semi-automated migration of `build.sbt` files."
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:50
+msgid "Cross building sbt plugins"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:53
+msgid ""
+"In sbt 2.x, if you cross build an sbt plugin with Scala 3.x and 2.12.x, it "
+"will automatically cross build against sbt 1.x and sbt 2.x:"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:56
+msgid "// using sbt 2.x"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:57
+#: src/reference/changes/migrating-from-sbt-1.x.md:77
+msgid "\"plugin\""
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:60
+#: src/reference/changes/migrating-from-sbt-1.x.md:80
+msgid "\"sbt-vimquit\""
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:62
+#: src/reference/changes/migrating-from-sbt-1.x.md:73
+msgid "\"2.12.20\""
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:65
+msgid ""
+"If you use `projectMatrix`, make sure to move the plugin to a subdirectory "
+"like `plugin/`. Otherwise, the synthetic root project will also pick up the "
+"`src/`."
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:67
+msgid "Cross building sbt plugin with sbt 1.x"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:69
+msgid "Use sbt 1.10.2 or later, if you want to cross build using sbt 1.x."
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:72
+msgid "// using sbt 1.x"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:74
+msgid "\"3.3.4\""
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:83
+msgid "\"2.12\""
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:83
+msgid "\"1.5.8\""
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:84
+msgid "\"2.0.0-M2\""
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:90
+msgid "Changes to `%%`"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:93
+msgid ""
+"In sbt 2.x, `ModuleID`'s `%%` operator has become platform-aware. For JVM "
+"subprojects, `%%` works as before, encoding Scala suffix (for example `_3`) "
+"on Maven repositories."
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:95
+msgid "Migrating `%%%` operator"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:97
+msgid ""
+"When Scala.JS or Scala Native becomes available on sbt 2.x, `%%` will encode "
+"both the Scala version (such as `_3`) and the platform suffix (`_sjs1` etc). "
+"As a result, `%%%` can be replaced with `%%`:"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:100
+msgid "\"org.scala-js\""
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:100
+msgid "\"scalajs-dom\""
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:100
+msgid "\"2.8.0\""
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:103
+msgid "Use `.platform(Platform.jvm)` in case where JVM libraries are needed."
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:106
+msgid "The PluginCompat technique"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:109
+msgid ""
+"To use the same `*.scala` source but target both sbt 1.x and 2.x, we can "
+"create a shim, for example an object named `PluginCompat` in both `src/main/"
+"scala-2.12/` and `src/main/scala-3/`."
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:111
+msgid "Migrating Classpath type"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:113
+msgid ""
+"sbt 2.x changed the `Classpath` type to be an alias of the "
+"`Seq[Attributed[xsbti.HashedVirtualFileRef]]` type. The following is a shim "
+"created to work with classpaths from both sbt 1.x and 2.x."
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:116
+msgid "// src/main/scala-3/PluginCompat.scala"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:139
+msgid "and here's for sbt 1.x:"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:142
+msgid "// src/main/scala-2.12/PluginCompat.scala"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:161
+msgid ""
+"Now we can import `PluginCompat.*` and use `toNioPaths(...)` etc to absorb "
+"the differences between sbt 1.x and 2.x. The above demonstrates how we can "
+"absorb the classpath type change, and convert it into a vector of NIO Paths."
+msgstr ""
diff --git a/po/summary/changes/migrating-from-sbt-1x.zh-cn.po b/po/summary/changes/migrating-from-sbt-1x.zh-cn.po
new file mode 100644
index 00000000..6958bd1c
--- /dev/null
+++ b/po/summary/changes/migrating-from-sbt-1x.zh-cn.po
@@ -0,0 +1,240 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:1
+msgid "Migrating from sbt 1.x"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:4
+msgid "Changing `build.sbt` DSL to Scala 3.x"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:7
+msgid ""
+"As a reminder, users can build either Scala 2.x or Scala 3.x programs using "
+"either sbt 1.x or sbt 2.x. However, the Scala that underlies the `build.sbt` "
+"DSL is determined by the sbt version. In sbt 2.0, we are migrating to Scala "
+"3.x."
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:9
+msgid ""
+"This means that if you implement custom tasks or sbt plugins for sbt 2.x, it "
+"must be done using Scala 3.x. See [Scala 3.x incompatibility table](https://"
+"docs.scala-lang.org/scala3/guides/migration/incompatibility-table.html) and "
+"[Scala 2 with -Xsource:3](https://docs.scala-lang.org/scala3/guides/"
+"migration/tooling-scala2-xsource3.html)."
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:12
+msgid "// This works on Scala 2.12.20 under -Xsource:3"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:16
+msgid "Bare settings changes"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:20
+msgid "\"0.1.0\""
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:21
+#: src/reference/changes/migrating-from-sbt-1.x.md:62
+msgid "\"3.3.3\""
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:24
+msgid ""
+"_Bare settings_, like the example above, are settings written directly in "
+"`build.sbt` without `settings(...)`."
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:31
+msgid "\"root\" // every subprojects will be named root!"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:35
+msgid "Migrating ThisBuild"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:37
+msgid ""
+"In sbt 2.x, bare settings settings should no longer be scoped to "
+"`ThisBuild`. One benefit of the new _common settings_ over `ThisBuild` is "
+"that it would act in a more predictable delegation. These settings are "
+"inserted between plugins settings and those defined in `settings(...)`, "
+"meaning they can be used to define settings like `Compile / scalacOptions`, "
+"which was not possible with `ThisBuild`."
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:39
+msgid "Migrating to slash syntax"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:42
+msgid ""
+"sbt 1.x supported both the sbt 0.13 style syntax and the slash syntax. sbt 2."
+"x removes the support for the sbt 0.13 syntax, so use the slash syntax for "
+"both sbt shell and in `build.sbt`:"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:48
+msgid ""
+"For example, `test:compile` will no longer work on the shell. Use `Test/"
+"compile` instead. See [syntactic Scalafix rule for unified slash syntax]"
+"(https://eed3si9n.com/syntactic-scalafix-rule-for-unified-slash-syntax/) for "
+"semi-automated migration of `build.sbt` files."
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:50
+msgid "Cross building sbt plugins"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:53
+msgid ""
+"In sbt 2.x, if you cross build an sbt plugin with Scala 3.x and 2.12.x, it "
+"will automatically cross build against sbt 1.x and sbt 2.x:"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:56
+msgid "// using sbt 2.x"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:57
+#: src/reference/changes/migrating-from-sbt-1.x.md:77
+msgid "\"plugin\""
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:60
+#: src/reference/changes/migrating-from-sbt-1.x.md:80
+msgid "\"sbt-vimquit\""
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:62
+#: src/reference/changes/migrating-from-sbt-1.x.md:73
+msgid "\"2.12.20\""
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:65
+msgid ""
+"If you use `projectMatrix`, make sure to move the plugin to a subdirectory "
+"like `plugin/`. Otherwise, the synthetic root project will also pick up the "
+"`src/`."
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:67
+msgid "Cross building sbt plugin with sbt 1.x"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:69
+msgid "Use sbt 1.10.2 or later, if you want to cross build using sbt 1.x."
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:72
+msgid "// using sbt 1.x"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:74
+msgid "\"3.3.4\""
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:83
+msgid "\"2.12\""
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:83
+msgid "\"1.5.8\""
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:84
+msgid "\"2.0.0-M2\""
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:90
+msgid "Changes to `%%`"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:93
+msgid ""
+"In sbt 2.x, `ModuleID`'s `%%` operator has become platform-aware. For JVM "
+"subprojects, `%%` works as before, encoding Scala suffix (for example `_3`) "
+"on Maven repositories."
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:95
+msgid "Migrating `%%%` operator"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:97
+msgid ""
+"When Scala.JS or Scala Native becomes available on sbt 2.x, `%%` will encode "
+"both the Scala version (such as `_3`) and the platform suffix (`_sjs1` etc). "
+"As a result, `%%%` can be replaced with `%%`:"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:100
+msgid "\"org.scala-js\""
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:100
+msgid "\"scalajs-dom\""
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:100
+msgid "\"2.8.0\""
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:103
+msgid "Use `.platform(Platform.jvm)` in case where JVM libraries are needed."
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:106
+msgid "The PluginCompat technique"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:109
+msgid ""
+"To use the same `*.scala` source but target both sbt 1.x and 2.x, we can "
+"create a shim, for example an object named `PluginCompat` in both `src/main/"
+"scala-2.12/` and `src/main/scala-3/`."
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:111
+msgid "Migrating Classpath type"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:113
+msgid ""
+"sbt 2.x changed the `Classpath` type to be an alias of the "
+"`Seq[Attributed[xsbti.HashedVirtualFileRef]]` type. The following is a shim "
+"created to work with classpaths from both sbt 1.x and 2.x."
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:116
+msgid "// src/main/scala-3/PluginCompat.scala"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:139
+msgid "and here's for sbt 1.x:"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:142
+msgid "// src/main/scala-2.12/PluginCompat.scala"
+msgstr ""
+
+#: src/reference/changes/migrating-from-sbt-1.x.md:161
+msgid ""
+"Now we can import `PluginCompat.*` and use `toNioPaths(...)` etc to absorb "
+"the differences between sbt 1.x and 2.x. The above demonstrates how we can "
+"absorb the classpath type change, and convert it into a vector of NIO Paths."
+msgstr ""
diff --git a/po/summary/changes/sbt-20-changes.ja.po b/po/summary/changes/sbt-20-changes.ja.po
new file mode 100644
index 00000000..c2506e65
--- /dev/null
+++ b/po/summary/changes/sbt-20-changes.ja.po
@@ -0,0 +1,207 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:08:34-04:00\n"
+"PO-Revision-Date: 2024-10-30T01:14:09-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/changes/sbt-2.0-change-summary.md:4
+msgid "sbt 2.0 changes (draft)"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:13
+msgid "Changes with compatibility implications"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:16
+msgid "See also [Migrating from sbt 1.x](./migrating-from-sbt-1.x.md)."
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:18
+msgid ""
+"sbt 2.x uses Scala 3.x for build definitions and plugins (Both sbt 1.x and 2."
+"x are capable of building Scala 2.x and 3.x) by [@eed3si9n](https://github."
+"com/eed3si9n), [@adpi2](https://github.com/adpi2), and others."
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:19
+msgid ""
+"Bare settings are added to all subprojects, as opposed to just the root "
+"subproject, and thus replacing the role that `ThisBuild` has played."
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:20
+msgid ""
+"`test` task is changed to be incremental test that can cache test results. "
+"Use `testFull` for full test by [@eed3si9n](https://github.com/eed3si9n) in "
+"[\\#7686](https://github.com/sbt/sbt/pull/7686)"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:21
+msgid ""
+"sbt 2.x plugins are published with `_sbt2_3` suffix by [@eed3si9n](https://"
+"github.com/eed3si9n) in [\\#7671](https://github.com/sbt/sbt/pull/7671)"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:22
+msgid ""
+"sbt 2.x adds `platform` setting so `ModuleID`'s `%%` operator can cross "
+"build on JVM as well as JS and Native, as opposed to `%%%` operator that was "
+"created in a plugin to workaround this issue, by [@eed3si9n](https://github."
+"com/eed3si9n) in [\\#6746](https://github.com/sbt/sbt/pull/6746)"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:23
+msgid ""
+"Dropped `useCoursier` setting so Coursier cannot be opted out, by [@eed3si9n]"
+"(https://github.com/eed3si9n) in [\\#7712](https://github.com/sbt/sbt/"
+"pull/7712)"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:24
+msgid ""
+"`Key.Classpath` is changed to be an alias of the `Seq[Attributed[xsbti."
+"HashedVirtualFileRef]]` type, instead of `Seq[Attributed[File]]`. Similarly, "
+"some task keys that used to return `File` have changed to return "
+"`HashedVirtualFileRef` instead. See [Caching Files](../concepts/caching."
+"md#caching-files)."
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:26
+msgid "Dropped dreprecations"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:28
+msgid ""
+"sbt 0.13 style shell syntax by [@eed3si9n](https://github.com/eed3si9n) in "
+"[\\#7700](https://github.com/sbt/sbt/pull/7700)"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:30
+msgid "Features"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:33
+msgid ""
+"Project matrix, which was available via plugin in sbt 1.x, is in-sourced."
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:34
+msgid ""
+"sbt 2.x extends the unified slash syntax to support query of subprojects. "
+"Details below."
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:35
+msgid "Local/remote cache system. Details below"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:37
+msgid "Common settings"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:39
+msgid ""
+"In sbt 2.x, the bare settings in `build.sbt` are interpreted to be common "
+"settings, and are injected to all subprojects. This means we can now set "
+"`scalaVersion` without using `ThisBuild` scoping:"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:42
+msgid "\"3.3.3\""
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:45
+msgid "This also fixes the so-called dynamic dispatch problem:"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:48
+msgid "\"\""
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:49
+#: src/reference/changes/sbt-2.0-change-summary.md:93
+#: src/reference/changes/sbt-2.0-change-summary.md:107
+msgid "\"!\""
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:52
+msgid ""
+"In sbt 1.x `hi` task will capture the name of the root project, but in sbt 2."
+"x it will return the `name` of each subproject with `!`:"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:66
+msgid ""
+"Contributed by [@eed3si9n](https://github.com/eed3si9n) in [\\#6746](https://"
+"github.com/sbt/sbt/pull/6746)"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:68
+msgid "sbt query"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:70
+msgid "To filter down the subprojects, sbt 2.x introduces sbt query."
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:77
+msgid "The above runs all subprojects that begins with `foo`."
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:83
+msgid ""
+"The above runs all subprojects whose `scalaBinaryVersion` is `3`. "
+"Contributed by [@eed3si9n](https://github.com/eed3si9n) in [\\#7699](https://"
+"github.com/sbt/sbt/pull/7699)"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:85
+msgid "Local/remote cache system"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:87
+msgid ""
+"sbt 2.x implements cached task, which can automatically cache the task "
+"results to local disk and Bazel-compatible remote cache."
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:90
+#: src/reference/changes/sbt-2.0-change-summary.md:100
+msgid "\"doc for task1\""
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:97
+msgid ""
+"This tracks the inputs into the `task1` and creates a machine-wide disk "
+"cache, which can also be configured to also use a remote cache. Since it's "
+"common for sbt tasks to also produce files on the side, we also provide a "
+"mechanism to cache file contents:"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:111
+msgid ""
+"Contributed by [@eed3si9n](https://github.com/eed3si9n) in [\\#7464](https://"
+"github.com/sbt/sbt/pull/7464) / [\\#7525](https://github.com/sbt/sbt/"
+"pull/7525)"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:113
+msgid "Previously on sbt"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:116
+msgid "See also:"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:118
+msgid ""
+"[sbt 1.0 changes](https://www.scala-sbt.org/1.x/docs/sbt-1.0-Release-Notes."
+"html)"
+msgstr ""
diff --git a/po/summary/changes/sbt-20-changes.zh-cn.po b/po/summary/changes/sbt-20-changes.zh-cn.po
new file mode 100644
index 00000000..4acee664
--- /dev/null
+++ b/po/summary/changes/sbt-20-changes.zh-cn.po
@@ -0,0 +1,207 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/changes/sbt-2.0-change-summary.md:4
+msgid "sbt 2.0 changes (draft)"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:13
+msgid "Changes with compatibility implications"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:16
+msgid "See also [Migrating from sbt 1.x](./migrating-from-sbt-1.x.md)."
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:18
+msgid ""
+"sbt 2.x uses Scala 3.x for build definitions and plugins (Both sbt 1.x and 2."
+"x are capable of building Scala 2.x and 3.x) by [@eed3si9n](https://github."
+"com/eed3si9n), [@adpi2](https://github.com/adpi2), and others."
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:19
+msgid ""
+"Bare settings are added to all subprojects, as opposed to just the root "
+"subproject, and thus replacing the role that `ThisBuild` has played."
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:20
+msgid ""
+"`test` task is changed to be incremental test that can cache test results. "
+"Use `testFull` for full test by [@eed3si9n](https://github.com/eed3si9n) in "
+"[\\#7686](https://github.com/sbt/sbt/pull/7686)"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:21
+msgid ""
+"sbt 2.x plugins are published with `_sbt2_3` suffix by [@eed3si9n](https://"
+"github.com/eed3si9n) in [\\#7671](https://github.com/sbt/sbt/pull/7671)"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:22
+msgid ""
+"sbt 2.x adds `platform` setting so `ModuleID`'s `%%` operator can cross "
+"build on JVM as well as JS and Native, as opposed to `%%%` operator that was "
+"created in a plugin to workaround this issue, by [@eed3si9n](https://github."
+"com/eed3si9n) in [\\#6746](https://github.com/sbt/sbt/pull/6746)"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:23
+msgid ""
+"Dropped `useCoursier` setting so Coursier cannot be opted out, by [@eed3si9n]"
+"(https://github.com/eed3si9n) in [\\#7712](https://github.com/sbt/sbt/"
+"pull/7712)"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:24
+msgid ""
+"`Key.Classpath` is changed to be an alias of the `Seq[Attributed[xsbti."
+"HashedVirtualFileRef]]` type, instead of `Seq[Attributed[File]]`. Similarly, "
+"some task keys that used to return `File` have changed to return "
+"`HashedVirtualFileRef` instead. See [Caching Files](../concepts/caching."
+"md#caching-files)."
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:26
+msgid "Dropped dreprecations"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:28
+msgid ""
+"sbt 0.13 style shell syntax by [@eed3si9n](https://github.com/eed3si9n) in "
+"[\\#7700](https://github.com/sbt/sbt/pull/7700)"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:30
+msgid "Features"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:33
+msgid ""
+"Project matrix, which was available via plugin in sbt 1.x, is in-sourced."
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:34
+msgid ""
+"sbt 2.x extends the unified slash syntax to support query of subprojects. "
+"Details below."
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:35
+msgid "Local/remote cache system. Details below"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:37
+msgid "Common settings"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:39
+msgid ""
+"In sbt 2.x, the bare settings in `build.sbt` are interpreted to be common "
+"settings, and are injected to all subprojects. This means we can now set "
+"`scalaVersion` without using `ThisBuild` scoping:"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:42
+msgid "\"3.3.3\""
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:45
+msgid "This also fixes the so-called dynamic dispatch problem:"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:48
+msgid "\"\""
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:49
+#: src/reference/changes/sbt-2.0-change-summary.md:93
+#: src/reference/changes/sbt-2.0-change-summary.md:107
+msgid "\"!\""
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:52
+msgid ""
+"In sbt 1.x `hi` task will capture the name of the root project, but in sbt 2."
+"x it will return the `name` of each subproject with `!`:"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:66
+msgid ""
+"Contributed by [@eed3si9n](https://github.com/eed3si9n) in [\\#6746](https://"
+"github.com/sbt/sbt/pull/6746)"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:68
+msgid "sbt query"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:70
+msgid "To filter down the subprojects, sbt 2.x introduces sbt query."
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:77
+msgid "The above runs all subprojects that begins with `foo`."
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:83
+msgid ""
+"The above runs all subprojects whose `scalaBinaryVersion` is `3`. "
+"Contributed by [@eed3si9n](https://github.com/eed3si9n) in [\\#7699](https://"
+"github.com/sbt/sbt/pull/7699)"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:85
+msgid "Local/remote cache system"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:87
+msgid ""
+"sbt 2.x implements cached task, which can automatically cache the task "
+"results to local disk and Bazel-compatible remote cache."
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:90
+#: src/reference/changes/sbt-2.0-change-summary.md:100
+msgid "\"doc for task1\""
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:97
+msgid ""
+"This tracks the inputs into the `task1` and creates a machine-wide disk "
+"cache, which can also be configured to also use a remote cache. Since it's "
+"common for sbt tasks to also produce files on the side, we also provide a "
+"mechanism to cache file contents:"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:111
+msgid ""
+"Contributed by [@eed3si9n](https://github.com/eed3si9n) in [\\#7464](https://"
+"github.com/sbt/sbt/pull/7464) / [\\#7525](https://github.com/sbt/sbt/"
+"pull/7525)"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:113
+msgid "Previously on sbt"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:116
+msgid "See also:"
+msgstr ""
+
+#: src/reference/changes/sbt-2.0-change-summary.md:118
+msgid ""
+"[sbt 1.0 changes](https://www.scala-sbt.org/1.x/docs/sbt-1.0-Release-Notes."
+"html)"
+msgstr ""
diff --git a/po/summary/concepts.ja.po b/po/summary/concepts.ja.po
new file mode 100644
index 00000000..14cb05c8
--- /dev/null
+++ b/po/summary/concepts.ja.po
@@ -0,0 +1,16 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:08:34-04:00\n"
+"PO-Revision-Date: 2024-10-30T01:14:09-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/concepts/index.md:1
+msgid "Concepts"
+msgstr ""
diff --git a/po/summary/concepts.zh-cn.po b/po/summary/concepts.zh-cn.po
new file mode 100644
index 00000000..55541d39
--- /dev/null
+++ b/po/summary/concepts.zh-cn.po
@@ -0,0 +1,16 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/concepts/index.md:1
+msgid "Concepts"
+msgstr ""
diff --git a/po/summary/concepts/caching.ja.po b/po/summary/concepts/caching.ja.po
new file mode 100644
index 00000000..e8af6a71
--- /dev/null
+++ b/po/summary/concepts/caching.ja.po
@@ -0,0 +1,225 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:08:34-04:00\n"
+"PO-Revision-Date: 2024-10-30T01:14:09-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/concepts/caching.md:1
+msgid "Caching"
+msgstr ""
+
+#: src/reference/concepts/caching.md:4
+msgid ""
+"sbt 2.0 introduces hybrid local/remote cache system, which can cache the "
+"task results to local disk and Bazel-compatible remote cache. Throughout sbt "
+"releases it has implemented various caches, like `update` cache, incremental "
+"compilation, but sbt 2.x's cache is a significant step change for a few "
+"reasons:"
+msgstr ""
+
+#: src/reference/concepts/caching.md:6
+msgid ""
+"**Automatic**. sbt 2.x cache automates the caching by embedding itself into "
+"the task macro unlike sbt 1.x wherein the plugin author called the cache "
+"functions manually in the task implementation."
+msgstr ""
+
+#: src/reference/concepts/caching.md:7
+msgid ""
+"**Machine-wide**. sbt 2.x disk cache is shared among all builds on a machine."
+msgstr ""
+
+#: src/reference/concepts/caching.md:8
+msgid ""
+"**Remote-ready**. In sbt 2.x, the cache storage is configured separately "
+"such that all cacheable tasks are automatically remote-cache-ready."
+msgstr ""
+
+#: src/reference/concepts/caching.md:10
+msgid "Basics of caching"
+msgstr ""
+
+#: src/reference/concepts/caching.md:13
+msgid ""
+"The basic idea is treat as if the build process is a pure function that "
+"takes input `(A1, A2, A3, ...)` and return some outputs `(R1, List(O1, O2, "
+"O3, ...))`. For example, we can take a list of source files, Scala version, "
+"and produce a `*.jar` file at the end. If the assumption holds, then for the "
+"same inputs, we can memorize the ouput JAR for everyone. We are interested "
+"in this technique because using the memorized output JAR would be faster "
+"than performing the actual task like Scala compilation etc."
+msgstr ""
+
+#: src/reference/concepts/caching.md:15
+msgid "Hermetic build"
+msgstr ""
+
+#: src/reference/concepts/caching.md:17
+msgid ""
+"As a mental model of the _build as a pure function_, build engineers "
+"sometimes use the term _hermetic build_, which is a build that takes place "
+"in a shipping container in a dessert with no clocks or the Internet. If we "
+"can produce a JAR file from that state, then the JAR file should be safe to "
+"be shared by any machine. Why did I mention the clock? It's because a JAR "
+"file could capture the timestamp, and thus produce slightly different JARs "
+"each time. To avoid this, hermetic build tools overwrite the timestamp to a "
+"fixed date 2010-01-01 regardless of when the build took place."
+msgstr ""
+
+#: src/reference/concepts/caching.md:19
+msgid ""
+"A build that ends up capturing ephemeral inputs, are said to _break the "
+"hermeticity_ or _non-hermetic_. Another common way the hermeticity is broken "
+"is capturing absolute paths as either input or output. Sometimes the path "
+"gets embedded into the JAR via a macro, you might not know until you inspect "
+"the bytecode."
+msgstr ""
+
+#: src/reference/concepts/caching.md:21
+msgid "Automatic caching"
+msgstr ""
+
+#: src/reference/concepts/caching.md:24
+msgid "Here's a demonstration of the automatic caching:"
+msgstr ""
+
+#: src/reference/concepts/caching.md:29
+msgid "\"something\""
+msgstr ""
+
+#: src/reference/concepts/caching.md:32
+msgid "\"!\""
+msgstr ""
+
+#: src/reference/concepts/caching.md:36
+msgid ""
+"The task will be automatically cached based on the two settings `name` and "
+"`version`. The first time we run the task it will be executed onsite, but "
+"the second time onward, it will use the disk cache:"
+msgstr ""
+
+#: src/reference/concepts/caching.md:47
+msgid "Caching is serialization-hard"
+msgstr ""
+
+#: src/reference/concepts/caching.md:49
+msgid ""
+"To participate in the automatic caching, the input keys (e.g. `name` and "
+"`version`) must provide a given for `sjsonnew.HashWriter` typeclass and "
+"return type must provide a given for `sjsonnew.JsonFormat`. [Contraband]"
+"(https://www.scala-sbt.org/contraband/) can be used to generate sjson-new "
+"codecs."
+msgstr ""
+
+#: src/reference/concepts/caching.md:51
+msgid "Caching files"
+msgstr ""
+
+#: src/reference/concepts/caching.md:54
+msgid ""
+"Caching files (e.g. `java.io.File`) requires its own consideration, not "
+"because it's technically difficult, but mostly because of the ambiguity and "
+"assumptions when files are involved. When we say a \"file\" it could "
+"actually mean:"
+msgstr ""
+
+#: src/reference/concepts/caching.md:56
+msgid "Relative path from a well-known location"
+msgstr ""
+
+#: src/reference/concepts/caching.md:57
+msgid "Materialized actual file"
+msgstr ""
+
+#: src/reference/concepts/caching.md:58
+msgid "A unique proof of a file, or a content hash"
+msgstr ""
+
+#: src/reference/concepts/caching.md:60
+msgid ""
+"Technically speaking, a `File` just means the file path, so we can "
+"deserialize just the filename such as `target/a/b.jar`. This will fail the "
+"downstream tasks if they assumed that `target/a/b.jar` would exist in the "
+"file system. For clarity, and also for avoiding to capture absolute paths, "
+"sbt 2.x provides three separate types for the three cases."
+msgstr ""
+
+#: src/reference/concepts/caching.md:62
+msgid ""
+"`xsbti.VirtualFileRef` is used to mean just the relative path, which is "
+"equivalent to passing a string"
+msgstr ""
+
+#: src/reference/concepts/caching.md:63
+msgid ""
+"`xsbti.VirtualFile` represents a materialized file with contents, which "
+"could be a virtual file or a file in your disk"
+msgstr ""
+
+#: src/reference/concepts/caching.md:65
+msgid ""
+"However, for the purpose of hermetic build, neither is great to represent a "
+"list of files. Having just the filename alone doesn't guarantee that the "
+"file will be the same, and carrying the entire content of the files is too "
+"inefficient in a JSON etc."
+msgstr ""
+
+#: src/reference/concepts/caching.md:67
+msgid ""
+"This is where the mysterious third option, a unique proof of file comes in "
+"handy. In addition to the relative path, `HashedVirtualFileRef` tracks the "
+"SHA-256 content hash and the file size. This can easily be serialized to "
+"JSON yet we can reference the exact file."
+msgstr ""
+
+#: src/reference/concepts/caching.md:69
+msgid "The effect of file creation"
+msgstr ""
+
+#: src/reference/concepts/caching.md:71
+msgid ""
+"There are many tasks that generate file that do not use `VirtualFile` as the "
+"return type. For example, `compile` returns `Analysis` instead, and `*."
+"class` file generation happens as a _side effect_ in sbt 1.x."
+msgstr ""
+
+#: src/reference/concepts/caching.md:73
+msgid ""
+"To participate in caching, we need to declare these effects as something we "
+"care about."
+msgstr ""
+
+#: src/reference/concepts/caching.md:85
+msgid "Remote caching"
+msgstr ""
+
+#: src/reference/concepts/caching.md:88
+msgid ""
+"You can optionally extend the build to use remote cache in addition to the "
+"local disk cache. Remote caching could improve build performance by allowing "
+"multiple machines to share build artifacts and outputs."
+msgstr ""
+
+#: src/reference/concepts/caching.md:90
+msgid ""
+"Imagine you have a dozen people in your project or a company. Each morning, "
+"you will `git pull` the changes the dozen people made, and you need to build "
+"their code. If you have a successful project, the code size will only get "
+"bigger over time, and the % of the time you spend building someone else's in "
+"your day increases. This becomes the limiting factor of your team size and "
+"code size. Remote caching reverses this tide by CI systems hydrate the cache "
+"and you can download the artifacts and task outputs."
+msgstr ""
+
+#: src/reference/concepts/caching.md:92
+msgid ""
+"sbt 2.x implements Bazel-compatible gRPC interface, which works with number "
+"of backend both open source and commercial."
+msgstr ""
diff --git a/po/summary/concepts/caching.zh-cn.po b/po/summary/concepts/caching.zh-cn.po
new file mode 100644
index 00000000..1e4a1633
--- /dev/null
+++ b/po/summary/concepts/caching.zh-cn.po
@@ -0,0 +1,225 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/concepts/caching.md:1
+msgid "Caching"
+msgstr ""
+
+#: src/reference/concepts/caching.md:4
+msgid ""
+"sbt 2.0 introduces hybrid local/remote cache system, which can cache the "
+"task results to local disk and Bazel-compatible remote cache. Throughout sbt "
+"releases it has implemented various caches, like `update` cache, incremental "
+"compilation, but sbt 2.x's cache is a significant step change for a few "
+"reasons:"
+msgstr ""
+
+#: src/reference/concepts/caching.md:6
+msgid ""
+"**Automatic**. sbt 2.x cache automates the caching by embedding itself into "
+"the task macro unlike sbt 1.x wherein the plugin author called the cache "
+"functions manually in the task implementation."
+msgstr ""
+
+#: src/reference/concepts/caching.md:7
+msgid ""
+"**Machine-wide**. sbt 2.x disk cache is shared among all builds on a machine."
+msgstr ""
+
+#: src/reference/concepts/caching.md:8
+msgid ""
+"**Remote-ready**. In sbt 2.x, the cache storage is configured separately "
+"such that all cacheable tasks are automatically remote-cache-ready."
+msgstr ""
+
+#: src/reference/concepts/caching.md:10
+msgid "Basics of caching"
+msgstr ""
+
+#: src/reference/concepts/caching.md:13
+msgid ""
+"The basic idea is treat as if the build process is a pure function that "
+"takes input `(A1, A2, A3, ...)` and return some outputs `(R1, List(O1, O2, "
+"O3, ...))`. For example, we can take a list of source files, Scala version, "
+"and produce a `*.jar` file at the end. If the assumption holds, then for the "
+"same inputs, we can memorize the ouput JAR for everyone. We are interested "
+"in this technique because using the memorized output JAR would be faster "
+"than performing the actual task like Scala compilation etc."
+msgstr ""
+
+#: src/reference/concepts/caching.md:15
+msgid "Hermetic build"
+msgstr ""
+
+#: src/reference/concepts/caching.md:17
+msgid ""
+"As a mental model of the _build as a pure function_, build engineers "
+"sometimes use the term _hermetic build_, which is a build that takes place "
+"in a shipping container in a dessert with no clocks or the Internet. If we "
+"can produce a JAR file from that state, then the JAR file should be safe to "
+"be shared by any machine. Why did I mention the clock? It's because a JAR "
+"file could capture the timestamp, and thus produce slightly different JARs "
+"each time. To avoid this, hermetic build tools overwrite the timestamp to a "
+"fixed date 2010-01-01 regardless of when the build took place."
+msgstr ""
+
+#: src/reference/concepts/caching.md:19
+msgid ""
+"A build that ends up capturing ephemeral inputs, are said to _break the "
+"hermeticity_ or _non-hermetic_. Another common way the hermeticity is broken "
+"is capturing absolute paths as either input or output. Sometimes the path "
+"gets embedded into the JAR via a macro, you might not know until you inspect "
+"the bytecode."
+msgstr ""
+
+#: src/reference/concepts/caching.md:21
+msgid "Automatic caching"
+msgstr ""
+
+#: src/reference/concepts/caching.md:24
+msgid "Here's a demonstration of the automatic caching:"
+msgstr ""
+
+#: src/reference/concepts/caching.md:29
+msgid "\"something\""
+msgstr ""
+
+#: src/reference/concepts/caching.md:32
+msgid "\"!\""
+msgstr ""
+
+#: src/reference/concepts/caching.md:36
+msgid ""
+"The task will be automatically cached based on the two settings `name` and "
+"`version`. The first time we run the task it will be executed onsite, but "
+"the second time onward, it will use the disk cache:"
+msgstr ""
+
+#: src/reference/concepts/caching.md:47
+msgid "Caching is serialization-hard"
+msgstr ""
+
+#: src/reference/concepts/caching.md:49
+msgid ""
+"To participate in the automatic caching, the input keys (e.g. `name` and "
+"`version`) must provide a given for `sjsonnew.HashWriter` typeclass and "
+"return type must provide a given for `sjsonnew.JsonFormat`. [Contraband]"
+"(https://www.scala-sbt.org/contraband/) can be used to generate sjson-new "
+"codecs."
+msgstr ""
+
+#: src/reference/concepts/caching.md:51
+msgid "Caching files"
+msgstr ""
+
+#: src/reference/concepts/caching.md:54
+msgid ""
+"Caching files (e.g. `java.io.File`) requires its own consideration, not "
+"because it's technically difficult, but mostly because of the ambiguity and "
+"assumptions when files are involved. When we say a \"file\" it could "
+"actually mean:"
+msgstr ""
+
+#: src/reference/concepts/caching.md:56
+msgid "Relative path from a well-known location"
+msgstr ""
+
+#: src/reference/concepts/caching.md:57
+msgid "Materialized actual file"
+msgstr ""
+
+#: src/reference/concepts/caching.md:58
+msgid "A unique proof of a file, or a content hash"
+msgstr ""
+
+#: src/reference/concepts/caching.md:60
+msgid ""
+"Technically speaking, a `File` just means the file path, so we can "
+"deserialize just the filename such as `target/a/b.jar`. This will fail the "
+"downstream tasks if they assumed that `target/a/b.jar` would exist in the "
+"file system. For clarity, and also for avoiding to capture absolute paths, "
+"sbt 2.x provides three separate types for the three cases."
+msgstr ""
+
+#: src/reference/concepts/caching.md:62
+msgid ""
+"`xsbti.VirtualFileRef` is used to mean just the relative path, which is "
+"equivalent to passing a string"
+msgstr ""
+
+#: src/reference/concepts/caching.md:63
+msgid ""
+"`xsbti.VirtualFile` represents a materialized file with contents, which "
+"could be a virtual file or a file in your disk"
+msgstr ""
+
+#: src/reference/concepts/caching.md:65
+msgid ""
+"However, for the purpose of hermetic build, neither is great to represent a "
+"list of files. Having just the filename alone doesn't guarantee that the "
+"file will be the same, and carrying the entire content of the files is too "
+"inefficient in a JSON etc."
+msgstr ""
+
+#: src/reference/concepts/caching.md:67
+msgid ""
+"This is where the mysterious third option, a unique proof of file comes in "
+"handy. In addition to the relative path, `HashedVirtualFileRef` tracks the "
+"SHA-256 content hash and the file size. This can easily be serialized to "
+"JSON yet we can reference the exact file."
+msgstr ""
+
+#: src/reference/concepts/caching.md:69
+msgid "The effect of file creation"
+msgstr ""
+
+#: src/reference/concepts/caching.md:71
+msgid ""
+"There are many tasks that generate file that do not use `VirtualFile` as the "
+"return type. For example, `compile` returns `Analysis` instead, and `*."
+"class` file generation happens as a _side effect_ in sbt 1.x."
+msgstr ""
+
+#: src/reference/concepts/caching.md:73
+msgid ""
+"To participate in caching, we need to declare these effects as something we "
+"care about."
+msgstr ""
+
+#: src/reference/concepts/caching.md:85
+msgid "Remote caching"
+msgstr ""
+
+#: src/reference/concepts/caching.md:88
+msgid ""
+"You can optionally extend the build to use remote cache in addition to the "
+"local disk cache. Remote caching could improve build performance by allowing "
+"multiple machines to share build artifacts and outputs."
+msgstr ""
+
+#: src/reference/concepts/caching.md:90
+msgid ""
+"Imagine you have a dozen people in your project or a company. Each morning, "
+"you will `git pull` the changes the dozen people made, and you need to build "
+"their code. If you have a successful project, the code size will only get "
+"bigger over time, and the % of the time you spend building someone else's in "
+"your day increases. This becomes the limiting factor of your team size and "
+"code size. Remote caching reverses this tide by CI systems hydrate the cache "
+"and you can download the artifacts and task outputs."
+msgstr ""
+
+#: src/reference/concepts/caching.md:92
+msgid ""
+"sbt 2.x implements Bazel-compatible gRPC interface, which works with number "
+"of backend both open source and commercial."
+msgstr ""
diff --git a/po/summary/concepts/command.ja.po b/po/summary/concepts/command.ja.po
new file mode 100644
index 00000000..547b5b31
--- /dev/null
+++ b/po/summary/concepts/command.ja.po
@@ -0,0 +1,115 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:08:34-04:00\n"
+"PO-Revision-Date: 2024-10-30T01:14:09-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/concepts/command.md:1
+msgid "Command"
+msgstr ""
+
+#: src/reference/concepts/command.md:4
+msgid ""
+"A _command_ is a system-level building block of sbt, often used to capture "
+"user interaction or IDE interaction."
+msgstr ""
+
+#: src/reference/concepts/command.md:6
+msgid ""
+msgstr ""
+
+#: src/reference/concepts/command.md:8
+msgid ""
+"We can think of each command as a `State => State` function. In sbt, the "
+"state represents the following:"
+msgstr ""
+
+#: src/reference/concepts/command.md:10
+msgid "Build structure (`build.sbt` etc)"
+msgstr ""
+
+#: src/reference/concepts/command.md:11
+msgid "Your disk (source code, JAR outputs, etc)"
+msgstr ""
+
+#: src/reference/concepts/command.md:13
+msgid ""
+"Thus, a command would typically modify either the build structure or the "
+"disk. For example, the `set` command can apply a setting to modify the build "
+"strcuture:"
+msgstr ""
+
+#: src/reference/concepts/command.md:16
+msgid "\"foo\""
+msgstr ""
+
+#: src/reference/concepts/command.md:19
+msgid "The `act` command can lift a task such as `compile` into a command:"
+msgstr ""
+
+#: src/reference/concepts/command.md:25
+msgid ""
+"The compilation would read from the disk and write outputs, or display error "
+"messages on the screen."
+msgstr ""
+
+#: src/reference/concepts/command.md:27
+msgid "Commands are sequentially processed"
+msgstr ""
+
+#: src/reference/concepts/command.md:30
+msgid ""
+"Because there is only one state, a characteristic of commands is that they "
+"are executed one at a time."
+msgstr ""
+
+#: src/reference/concepts/command.md:32
+msgid "![command](../files/command2.svg)"
+msgstr ""
+
+#: src/reference/concepts/command.md:34
+msgid ""
+"There are some execptions to this rule, but generally commands run "
+"sequentially. One mental image that might be useful is that a command is "
+"similar to a cashier taking an order in a cafe, and it will be processed in "
+"the sequence it was received."
+msgstr ""
+
+#: src/reference/concepts/command.md:36
+msgid "Tasks run in parallel"
+msgstr ""
+
+#: src/reference/concepts/command.md:39
+msgid ""
+"As mentioned above, the `act` command translates tasks into the command "
+"level. While doing so, the `act` command will broadcast the task across the "
+"aggregated subprojects and run independent tasks in parallel."
+msgstr ""
+
+#: src/reference/concepts/command.md:41
+msgid ""
+"Similarly, the `reload` command that runs during the startup of a session "
+"will initialize the settings in parallel."
+msgstr ""
+
+#: src/reference/concepts/command.md:43
+msgid "![act](../files/act.svg)"
+msgstr ""
+
+#: src/reference/concepts/command.md:45
+msgid "The role of sbt server"
+msgstr ""
+
+#: src/reference/concepts/command.md:48
+msgid ""
+"sbt server is a service that accepts commands from either the command line "
+"or a network API called Build Server Protocol. This mechanism allows both "
+"the build user and IDEs to share the same sbt session."
+msgstr ""
diff --git a/po/summary/concepts/command.zh-cn.po b/po/summary/concepts/command.zh-cn.po
new file mode 100644
index 00000000..18423230
--- /dev/null
+++ b/po/summary/concepts/command.zh-cn.po
@@ -0,0 +1,115 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/concepts/command.md:1
+msgid "Command"
+msgstr ""
+
+#: src/reference/concepts/command.md:4
+msgid ""
+"A _command_ is a system-level building block of sbt, often used to capture "
+"user interaction or IDE interaction."
+msgstr ""
+
+#: src/reference/concepts/command.md:6
+msgid ""
+msgstr ""
+
+#: src/reference/concepts/command.md:8
+msgid ""
+"We can think of each command as a `State => State` function. In sbt, the "
+"state represents the following:"
+msgstr ""
+
+#: src/reference/concepts/command.md:10
+msgid "Build structure (`build.sbt` etc)"
+msgstr ""
+
+#: src/reference/concepts/command.md:11
+msgid "Your disk (source code, JAR outputs, etc)"
+msgstr ""
+
+#: src/reference/concepts/command.md:13
+msgid ""
+"Thus, a command would typically modify either the build structure or the "
+"disk. For example, the `set` command can apply a setting to modify the build "
+"strcuture:"
+msgstr ""
+
+#: src/reference/concepts/command.md:16
+msgid "\"foo\""
+msgstr ""
+
+#: src/reference/concepts/command.md:19
+msgid "The `act` command can lift a task such as `compile` into a command:"
+msgstr ""
+
+#: src/reference/concepts/command.md:25
+msgid ""
+"The compilation would read from the disk and write outputs, or display error "
+"messages on the screen."
+msgstr ""
+
+#: src/reference/concepts/command.md:27
+msgid "Commands are sequentially processed"
+msgstr ""
+
+#: src/reference/concepts/command.md:30
+msgid ""
+"Because there is only one state, a characteristic of commands is that they "
+"are executed one at a time."
+msgstr ""
+
+#: src/reference/concepts/command.md:32
+msgid "![command](../files/command2.svg)"
+msgstr ""
+
+#: src/reference/concepts/command.md:34
+msgid ""
+"There are some execptions to this rule, but generally commands run "
+"sequentially. One mental image that might be useful is that a command is "
+"similar to a cashier taking an order in a cafe, and it will be processed in "
+"the sequence it was received."
+msgstr ""
+
+#: src/reference/concepts/command.md:36
+msgid "Tasks run in parallel"
+msgstr ""
+
+#: src/reference/concepts/command.md:39
+msgid ""
+"As mentioned above, the `act` command translates tasks into the command "
+"level. While doing so, the `act` command will broadcast the task across the "
+"aggregated subprojects and run independent tasks in parallel."
+msgstr ""
+
+#: src/reference/concepts/command.md:41
+msgid ""
+"Similarly, the `reload` command that runs during the startup of a session "
+"will initialize the settings in parallel."
+msgstr ""
+
+#: src/reference/concepts/command.md:43
+msgid "![act](../files/act.svg)"
+msgstr ""
+
+#: src/reference/concepts/command.md:45
+msgid "The role of sbt server"
+msgstr ""
+
+#: src/reference/concepts/command.md:48
+msgid ""
+"sbt server is a service that accepts commands from either the command line "
+"or a network API called Build Server Protocol. This mechanism allows both "
+"the build user and IDEs to share the same sbt session."
+msgstr ""
diff --git a/po/summary/concepts/cross-building.ja.po b/po/summary/concepts/cross-building.ja.po
new file mode 100644
index 00000000..4e8163f2
--- /dev/null
+++ b/po/summary/concepts/cross-building.ja.po
@@ -0,0 +1,140 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:08:34-04:00\n"
+"PO-Revision-Date: 2024-10-30T01:14:09-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/concepts/cross-building.md:1
+msgid "Cross building"
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:4
+msgid ""
+"_Cross building_ refers to the idea of building multiple targets from the "
+"same set of source file. This includes Scala cross building, targeting "
+"multiple versions of Scala releases; platform cross building, targeting JVM, "
+"Scala.JS, and Scala Native; and custom virtual axes like Spark versions."
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:6
+msgid "Using cross-built libraries"
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:9
+msgid ""
+"To use a library built against multiple versions of Scala, double the first "
+"`%` in a ModuleID to be `%%`. This tells sbt that it should append the Scala "
+"ABI (application binary interface) suffix to the dependency's name. For "
+"example:"
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:12
+#: src/reference/concepts/cross-building.md:18
+msgid "\"org.typelevel\""
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:12
+msgid "\"cats-effect\""
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:12
+#: src/reference/concepts/cross-building.md:18
+msgid "\"3.5.4\""
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:15
+msgid ""
+"When the current Scala version is Scala 3.x, the above is equivalent to the "
+"following:"
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:18
+msgid "\"cats-effect_3\""
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:21
+#: src/reference/concepts/cross-building.md:53
+msgid ""
+"See [cross building setup](../reference/cross-building-setup.html) for more "
+"details on the setup."
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:23
+msgid "Historical context"
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:26
+msgid ""
+"In the earlier years of Scala (pre-Scala 2.9), the Scala library did not "
+"maintain binary compatibility even at the patch level, so each time a new "
+"Scala version was released, the libraries had to be re-released against the "
+"new version of Scala. This meant that a library user needed to pick a "
+"specific version that was compatible with the Scala version they were using."
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:28
+msgid ""
+"Even after Scala 2.9.x, the Scala library did not maintain the binary "
+"compatibility at minor version level, so the libraries compiled against "
+"Scala 2.10.x was not compatible with 2.11.x."
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:30
+msgid ""
+"To workaround this problem, sbt developed cross building mechanism such that:"
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:32
+msgid ""
+"Same set of source files can be compiled against multiple versions of Scala"
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:33
+msgid ""
+"Define a convention to append ABI version (e.g. `_2.12`) to the Maven "
+"artifact"
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:34
+msgid ""
+"Later this mechanism was extended to support Scala.JS and other platforms"
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:36
+msgid "Project matrix"
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:39
+msgid ""
+"sbt 2.x introduces project matrix, which enables cross building to happen in "
+"parallel."
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:42
+msgid "\"com.example\""
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:43
+#: src/reference/concepts/cross-building.md:50
+msgid "\"3.3.3\""
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:44
+msgid "\"0.1.0-SNAPSHOT\""
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:46
+#: src/reference/concepts/cross-building.md:48
+msgid "\"core\""
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:50
+msgid "\"2.13.15\""
+msgstr ""
diff --git a/po/summary/concepts/cross-building.zh-cn.po b/po/summary/concepts/cross-building.zh-cn.po
new file mode 100644
index 00000000..f7727a39
--- /dev/null
+++ b/po/summary/concepts/cross-building.zh-cn.po
@@ -0,0 +1,140 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/concepts/cross-building.md:1
+msgid "Cross building"
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:4
+msgid ""
+"_Cross building_ refers to the idea of building multiple targets from the "
+"same set of source file. This includes Scala cross building, targeting "
+"multiple versions of Scala releases; platform cross building, targeting JVM, "
+"Scala.JS, and Scala Native; and custom virtual axes like Spark versions."
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:6
+msgid "Using cross-built libraries"
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:9
+msgid ""
+"To use a library built against multiple versions of Scala, double the first "
+"`%` in a ModuleID to be `%%`. This tells sbt that it should append the Scala "
+"ABI (application binary interface) suffix to the dependency's name. For "
+"example:"
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:12
+#: src/reference/concepts/cross-building.md:18
+msgid "\"org.typelevel\""
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:12
+msgid "\"cats-effect\""
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:12
+#: src/reference/concepts/cross-building.md:18
+msgid "\"3.5.4\""
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:15
+msgid ""
+"When the current Scala version is Scala 3.x, the above is equivalent to the "
+"following:"
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:18
+msgid "\"cats-effect_3\""
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:21
+#: src/reference/concepts/cross-building.md:53
+msgid ""
+"See [cross building setup](../reference/cross-building-setup.html) for more "
+"details on the setup."
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:23
+msgid "Historical context"
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:26
+msgid ""
+"In the earlier years of Scala (pre-Scala 2.9), the Scala library did not "
+"maintain binary compatibility even at the patch level, so each time a new "
+"Scala version was released, the libraries had to be re-released against the "
+"new version of Scala. This meant that a library user needed to pick a "
+"specific version that was compatible with the Scala version they were using."
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:28
+msgid ""
+"Even after Scala 2.9.x, the Scala library did not maintain the binary "
+"compatibility at minor version level, so the libraries compiled against "
+"Scala 2.10.x was not compatible with 2.11.x."
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:30
+msgid ""
+"To workaround this problem, sbt developed cross building mechanism such that:"
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:32
+msgid ""
+"Same set of source files can be compiled against multiple versions of Scala"
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:33
+msgid ""
+"Define a convention to append ABI version (e.g. `_2.12`) to the Maven "
+"artifact"
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:34
+msgid ""
+"Later this mechanism was extended to support Scala.JS and other platforms"
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:36
+msgid "Project matrix"
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:39
+msgid ""
+"sbt 2.x introduces project matrix, which enables cross building to happen in "
+"parallel."
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:42
+msgid "\"com.example\""
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:43
+#: src/reference/concepts/cross-building.md:50
+msgid "\"3.3.3\""
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:44
+msgid "\"0.1.0-SNAPSHOT\""
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:46
+#: src/reference/concepts/cross-building.md:48
+msgid "\"core\""
+msgstr ""
+
+#: src/reference/concepts/cross-building.md:50
+msgid "\"2.13.15\""
+msgstr ""
diff --git a/po/summary/getting-started.ja.po b/po/summary/getting-started.ja.po
new file mode 100644
index 00000000..446e6331
--- /dev/null
+++ b/po/summary/getting-started.ja.po
@@ -0,0 +1,34 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:08:34-04:00\n"
+"PO-Revision-Date: 2024-10-30T01:14:09-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/guide/index.md:5
+msgid "Getting Started with sbt"
+msgstr ""
+
+#: src/reference/guide/index.md:8
+msgid ""
+"sbt uses a small number of concepts to support flexible and powerful build "
+"definitions. There are not that many concepts, but sbt is not exactly like "
+"other build systems and there are details you _will_ stumble on if you "
+"haven't read the documentation."
+msgstr ""
+
+#: src/reference/guide/index.md:13
+msgid ""
+"The Getting Started Guide covers the concepts you need to know to create and "
+"maintain an sbt build definition."
+msgstr ""
+
+#: src/reference/guide/index.md:16
+msgid "It is _highly recommended_ to read the Getting Started Guide!"
+msgstr ""
diff --git a/po/summary/getting-started.zh-cn.po b/po/summary/getting-started.zh-cn.po
new file mode 100644
index 00000000..c813f43c
--- /dev/null
+++ b/po/summary/getting-started.zh-cn.po
@@ -0,0 +1,34 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/guide/index.md:5
+msgid "Getting Started with sbt"
+msgstr ""
+
+#: src/reference/guide/index.md:8
+msgid ""
+"sbt uses a small number of concepts to support flexible and powerful build "
+"definitions. There are not that many concepts, but sbt is not exactly like "
+"other build systems and there are details you _will_ stumble on if you "
+"haven't read the documentation."
+msgstr ""
+
+#: src/reference/guide/index.md:13
+msgid ""
+"The Getting Started Guide covers the concepts you need to know to create and "
+"maintain an sbt build definition."
+msgstr ""
+
+#: src/reference/guide/index.md:16
+msgid "It is _highly recommended_ to read the Getting Started Guide!"
+msgstr ""
diff --git a/po/summary/getting-started/basic-tasks.ja.po b/po/summary/getting-started/basic-tasks.ja.po
new file mode 100644
index 00000000..54208414
--- /dev/null
+++ b/po/summary/getting-started/basic-tasks.ja.po
@@ -0,0 +1,130 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:08:34-04:00\n"
+"PO-Revision-Date: 2024-10-30T01:14:09-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/guide/basic-tasks.md:3
+msgid "Basic tasks"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:6
+msgid ""
+"This page describes how to use sbt once you have set up your project. This "
+"page assumes you've read [sbt components](./sbt-components.md)."
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:9
+msgid ""
+"If you pull a repository that uses sbt, it's fairly easy to get started. "
+"First, get the package from GitHub, or some other repository."
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:17
+msgid "sbt shell with sbtn"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:19
+msgid ""
+"As mentioned in [sbt components](./sbt-components.md), start an sbt shell:"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:25 src/reference/guide/basic-tasks.md:107
+#: src/reference/guide/basic-tasks.md:151
+msgid "This should display something like the following:"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:43
+msgid "projects command"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:46
+msgid ""
+"Let's explore the build by listing out the subprojects with `projects` "
+"command:"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:59
+msgid ""
+"This shows that this build has 6 subprojects, including the current "
+"subproject called `root`."
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:61
+msgid "tasks command"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:64
+msgid ""
+"Similarly, we can list the tasks availble to this build using `tasks` "
+"command:"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:99
+msgid "compile"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:101
+msgid ""
+"The `compile` tasks compiles the sources, after resolving and downloading "
+"the library dependendies."
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:115
+msgid "run"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:117
+msgid ""
+"The `run` task runs the main class for the subproject. In the sbt shell, "
+"type `math/run`:"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:124
+msgid ""
+"`math/run` means `run` task, scoped to `math` subproject. This should "
+"display something like the following:"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:141
+msgid "Enter `1` at the prompt."
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:143
+msgid "testQuick"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:145
+msgid ""
+"The `testQuick` task tests either the tests that failed before, were not "
+"run, or whose transitive dependencies changed."
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:170
+msgid "Watch (tilde) command"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:173
+msgid ""
+"To speed up your edit-compile-test cycle, you can ask sbt to automatically "
+"recompile or run tests whenever you save a source file."
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:176
+msgid ""
+"Make a command run when one or more source files change by prefixing the "
+"command with `~`. For example, in sbt shell try:"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:183
+msgid ""
+"Press enter to stop watching for changes. You can use the `~` prefix with "
+"either sbt shell or batch mode."
+msgstr ""
diff --git a/po/summary/getting-started/basic-tasks.zh-cn.po b/po/summary/getting-started/basic-tasks.zh-cn.po
new file mode 100644
index 00000000..d158365b
--- /dev/null
+++ b/po/summary/getting-started/basic-tasks.zh-cn.po
@@ -0,0 +1,130 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/guide/basic-tasks.md:3
+msgid "Basic tasks"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:6
+msgid ""
+"This page describes how to use sbt once you have set up your project. This "
+"page assumes you've read [sbt components](./sbt-components.md)."
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:9
+msgid ""
+"If you pull a repository that uses sbt, it's fairly easy to get started. "
+"First, get the package from GitHub, or some other repository."
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:17
+msgid "sbt shell with sbtn"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:19
+msgid ""
+"As mentioned in [sbt components](./sbt-components.md), start an sbt shell:"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:25 src/reference/guide/basic-tasks.md:107
+#: src/reference/guide/basic-tasks.md:151
+msgid "This should display something like the following:"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:43
+msgid "projects command"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:46
+msgid ""
+"Let's explore the build by listing out the subprojects with `projects` "
+"command:"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:59
+msgid ""
+"This shows that this build has 6 subprojects, including the current "
+"subproject called `root`."
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:61
+msgid "tasks command"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:64
+msgid ""
+"Similarly, we can list the tasks availble to this build using `tasks` "
+"command:"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:99
+msgid "compile"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:101
+msgid ""
+"The `compile` tasks compiles the sources, after resolving and downloading "
+"the library dependendies."
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:115
+msgid "run"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:117
+msgid ""
+"The `run` task runs the main class for the subproject. In the sbt shell, "
+"type `math/run`:"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:124
+msgid ""
+"`math/run` means `run` task, scoped to `math` subproject. This should "
+"display something like the following:"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:141
+msgid "Enter `1` at the prompt."
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:143
+msgid "testQuick"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:145
+msgid ""
+"The `testQuick` task tests either the tests that failed before, were not "
+"run, or whose transitive dependencies changed."
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:170
+msgid "Watch (tilde) command"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:173
+msgid ""
+"To speed up your edit-compile-test cycle, you can ask sbt to automatically "
+"recompile or run tests whenever you save a source file."
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:176
+msgid ""
+"Make a command run when one or more source files change by prefixing the "
+"command with `~`. For example, in sbt shell try:"
+msgstr ""
+
+#: src/reference/guide/basic-tasks.md:183
+msgid ""
+"Press enter to stop watching for changes. You can use the `~` prefix with "
+"either sbt shell or batch mode."
+msgstr ""
diff --git a/po/summary/getting-started/build-definition-basics.ja.po b/po/summary/getting-started/build-definition-basics.ja.po
new file mode 100644
index 00000000..697ed6e1
--- /dev/null
+++ b/po/summary/getting-started/build-definition-basics.ja.po
@@ -0,0 +1,201 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:08:34-04:00\n"
+"PO-Revision-Date: 2024-10-30T01:14:09-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/guide/build-definition-basics.md:1
+msgid "Build definition basics"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:4
+msgid "This page discusses the `build.sbt` build definition."
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:6
+msgid "What is a build definition?"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:8
+msgid ""
+"A _build definition_ is defined in `build.sbt`, and it consists of a set of "
+"projects (of type [`Project`](../api/sbt/Project.html)). Because the term "
+"_project_ can be ambiguous, we often call it a _subproject_ in this guide."
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:13
+msgid ""
+"For instance, in `build.sbt` you define the subproject located in the "
+"current directory like this:"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:17
+#: src/reference/guide/build-definition-basics.md:26
+#: src/reference/guide/build-definition-basics.md:88
+msgid "\"3.3.3\""
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:18
+#: src/reference/guide/build-definition-basics.md:27
+msgid "\"Hello\""
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:21
+msgid "or more explicitly:"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:24
+msgid "\".\""
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:31
+msgid ""
+"Each subproject is configured by key-value pairs. For example, one key is "
+"`name` and it maps to a string value, the name of your subproject. The key-"
+"value pairs are listed under the `.settings(...)` method."
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:36
+msgid "build.sbt DSL"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:39
+msgid ""
+"`build.sbt` defines subprojects using a DSL called build.sbt DSL, which is "
+"based on Scala. Initially you can use build.sbt DSL, like a YAML file, "
+"declaring just `scalaVersion` and `libraryDependencies`, but it can supports "
+"more features to keep the build definition organized as the build grows "
+"larger."
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:43
+msgid "Typed setting expression"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:45
+msgid "Let's take a closer look at the `build.sbt` DSL:"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:48
+msgid "\"com.example\""
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:53
+msgid ""
+"Each entry is called a _setting expression_. Some among them are also called "
+"task expressions. We will see more on the difference later in this page."
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:57
+msgid "A setting expression consists of three parts:"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:59
+msgid "Left-hand side is a _key_."
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:60
+msgid "_Operator_, which in this case is `:=`"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:61
+msgid "Right-hand side is called the _body_, or the _setting/task body_."
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:63
+msgid ""
+"On the left-hand side, `name`, `version`, and `scalaVersion` are _keys_. A "
+"key is an instance of [`SettingKey[A]`](../../api/sbt/SettingKey.html), "
+"[`TaskKey[A]`](../../api/sbt/TaskKey.html), or [`InputKey[A]`](../../api/sbt/"
+"InputKey.html) where `A` is the expected value type."
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:70
+msgid ""
+"Because key `name` is typed to `SettingKey[String]`, the `:=` operator on "
+"`name` is also typed specifically to `String`. If you use the wrong value "
+"type, the build definition will not compile:"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:75
+msgid "// will not compile"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:78
+msgid "`val`s and `lazy val`s"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:80
+msgid ""
+"To avoid repeating the same information, like the version number for a "
+"library, `build.sbt` may be interspersed with `val`s, `lazy val`s, and "
+"`def`s."
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:84
+#: src/reference/guide/build-definition-basics.md:102
+#: src/reference/guide/build-definition-basics.md:111
+msgid "\"0.2.0\""
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:85
+#: src/reference/guide/build-definition-basics.md:86
+#: src/reference/guide/build-definition-basics.md:100
+#: src/reference/guide/build-definition-basics.md:101
+#: src/reference/guide/build-definition-basics.md:109
+#: src/reference/guide/build-definition-basics.md:110
+msgid "\"org.scala-lang\""
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:85
+#: src/reference/guide/build-definition-basics.md:100
+#: src/reference/guide/build-definition-basics.md:109
+msgid "\"toolkit\""
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:86
+#: src/reference/guide/build-definition-basics.md:101
+#: src/reference/guide/build-definition-basics.md:110
+msgid "\"toolkit-test\""
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:93
+msgid ""
+"In the above, `val` defines a variable, which are initialized from the top "
+"to bottom. This means that `toolkitV` must be defined before it is "
+"referenced."
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:96
+msgid "Here's a bad example:"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:99
+msgid "// bad example"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:100
+#: src/reference/guide/build-definition-basics.md:101
+msgid "// uninitialized reference!"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:105
+msgid ""
+"sbt will fail to load with `java.lang.ExceptionInInitializerError` cased by "
+"a `NullPointerException` if your build.sbt contains an uninitialized forward "
+"reference. One way to let the compiler fix this is to define the variables "
+"as `lazy`:"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:114
+msgid ""
+"Some frown upon gratuitous `lazy val`s, but Scala 3 lazy vals are efficient, "
+"and we think it makes the build definition more robust for copy-pasting."
+msgstr ""
diff --git a/po/summary/getting-started/build-definition-basics.zh-cn.po b/po/summary/getting-started/build-definition-basics.zh-cn.po
new file mode 100644
index 00000000..7ec44097
--- /dev/null
+++ b/po/summary/getting-started/build-definition-basics.zh-cn.po
@@ -0,0 +1,201 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/guide/build-definition-basics.md:1
+msgid "Build definition basics"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:4
+msgid "This page discusses the `build.sbt` build definition."
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:6
+msgid "What is a build definition?"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:8
+msgid ""
+"A _build definition_ is defined in `build.sbt`, and it consists of a set of "
+"projects (of type [`Project`](../api/sbt/Project.html)). Because the term "
+"_project_ can be ambiguous, we often call it a _subproject_ in this guide."
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:13
+msgid ""
+"For instance, in `build.sbt` you define the subproject located in the "
+"current directory like this:"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:17
+#: src/reference/guide/build-definition-basics.md:26
+#: src/reference/guide/build-definition-basics.md:88
+msgid "\"3.3.3\""
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:18
+#: src/reference/guide/build-definition-basics.md:27
+msgid "\"Hello\""
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:21
+msgid "or more explicitly:"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:24
+msgid "\".\""
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:31
+msgid ""
+"Each subproject is configured by key-value pairs. For example, one key is "
+"`name` and it maps to a string value, the name of your subproject. The key-"
+"value pairs are listed under the `.settings(...)` method."
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:36
+msgid "build.sbt DSL"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:39
+msgid ""
+"`build.sbt` defines subprojects using a DSL called build.sbt DSL, which is "
+"based on Scala. Initially you can use build.sbt DSL, like a YAML file, "
+"declaring just `scalaVersion` and `libraryDependencies`, but it can supports "
+"more features to keep the build definition organized as the build grows "
+"larger."
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:43
+msgid "Typed setting expression"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:45
+msgid "Let's take a closer look at the `build.sbt` DSL:"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:48
+msgid "\"com.example\""
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:53
+msgid ""
+"Each entry is called a _setting expression_. Some among them are also called "
+"task expressions. We will see more on the difference later in this page."
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:57
+msgid "A setting expression consists of three parts:"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:59
+msgid "Left-hand side is a _key_."
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:60
+msgid "_Operator_, which in this case is `:=`"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:61
+msgid "Right-hand side is called the _body_, or the _setting/task body_."
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:63
+msgid ""
+"On the left-hand side, `name`, `version`, and `scalaVersion` are _keys_. A "
+"key is an instance of [`SettingKey[A]`](../../api/sbt/SettingKey.html), "
+"[`TaskKey[A]`](../../api/sbt/TaskKey.html), or [`InputKey[A]`](../../api/sbt/"
+"InputKey.html) where `A` is the expected value type."
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:70
+msgid ""
+"Because key `name` is typed to `SettingKey[String]`, the `:=` operator on "
+"`name` is also typed specifically to `String`. If you use the wrong value "
+"type, the build definition will not compile:"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:75
+msgid "// will not compile"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:78
+msgid "`val`s and `lazy val`s"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:80
+msgid ""
+"To avoid repeating the same information, like the version number for a "
+"library, `build.sbt` may be interspersed with `val`s, `lazy val`s, and "
+"`def`s."
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:84
+#: src/reference/guide/build-definition-basics.md:102
+#: src/reference/guide/build-definition-basics.md:111
+msgid "\"0.2.0\""
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:85
+#: src/reference/guide/build-definition-basics.md:86
+#: src/reference/guide/build-definition-basics.md:100
+#: src/reference/guide/build-definition-basics.md:101
+#: src/reference/guide/build-definition-basics.md:109
+#: src/reference/guide/build-definition-basics.md:110
+msgid "\"org.scala-lang\""
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:85
+#: src/reference/guide/build-definition-basics.md:100
+#: src/reference/guide/build-definition-basics.md:109
+msgid "\"toolkit\""
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:86
+#: src/reference/guide/build-definition-basics.md:101
+#: src/reference/guide/build-definition-basics.md:110
+msgid "\"toolkit-test\""
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:93
+msgid ""
+"In the above, `val` defines a variable, which are initialized from the top "
+"to bottom. This means that `toolkitV` must be defined before it is "
+"referenced."
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:96
+msgid "Here's a bad example:"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:99
+msgid "// bad example"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:100
+#: src/reference/guide/build-definition-basics.md:101
+msgid "// uninitialized reference!"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:105
+msgid ""
+"sbt will fail to load with `java.lang.ExceptionInInitializerError` cased by "
+"a `NullPointerException` if your build.sbt contains an uninitialized forward "
+"reference. One way to let the compiler fix this is to define the variables "
+"as `lazy`:"
+msgstr ""
+
+#: src/reference/guide/build-definition-basics.md:114
+msgid ""
+"Some frown upon gratuitous `lazy val`s, but Scala 3 lazy vals are efficient, "
+"and we think it makes the build definition more robust for copy-pasting."
+msgstr ""
diff --git a/po/summary/getting-started/build-layout.ja.po b/po/summary/getting-started/build-layout.ja.po
new file mode 100644
index 00000000..0fe8a789
--- /dev/null
+++ b/po/summary/getting-started/build-layout.ja.po
@@ -0,0 +1,116 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:08:34-04:00\n"
+"PO-Revision-Date: 2024-10-30T01:14:09-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/guide/build-layout.md:6
+msgid "Build layout"
+msgstr ""
+
+#: src/reference/guide/build-layout.md:9
+msgid ""
+"sbt uses conventions for file placement to make it easy to dive into a new "
+"sbt build:"
+msgstr ""
+
+#: src/reference/guide/build-layout.md:40
+msgid "The local root directory `.` is the starting point of your build."
+msgstr ""
+
+#: src/reference/guide/build-layout.md:41
+msgid ""
+"In sbt's terminology, the _base directory_ is the directory containing the "
+"subproject. In the above, `.`, `subproject-core`, and `subproject-util` are "
+"base directories."
+msgstr ""
+
+#: src/reference/guide/build-layout.md:42
+msgid ""
+"The build definition is described in `build.sbt` (actually any files named "
+"`*.sbt`) in the local root directory."
+msgstr ""
+
+#: src/reference/guide/build-layout.md:43
+msgid "The sbt version is tracked in `project/build.properties`."
+msgstr ""
+
+#: src/reference/guide/build-layout.md:44
+msgid ""
+"Generated files (compiled classes, packaged jars, managed files, caches, and "
+"documentation) will be written to the `target` directory by default."
+msgstr ""
+
+#: src/reference/guide/build-layout.md:47
+msgid "Build support files"
+msgstr ""
+
+#: src/reference/guide/build-layout.md:49
+msgid ""
+"In addition to `build.sbt`, `project` directory can contain `.scala` files "
+"that define helper objects and one-off plugins. See [organizing the build]"
+"(Organizing-Build.html) for more."
+msgstr ""
+
+#: src/reference/guide/build-layout.md:63
+msgid ""
+"You may see `.sbt` files inside `project/` but they are not equivalent to `."
+"sbt` files in the project's base directory. Explaining this will come [later]"
+"(Organizing-Build.html), since you'll need some background information first."
+msgstr ""
+
+#: src/reference/guide/build-layout.md:67
+msgid "Source code"
+msgstr ""
+
+#: src/reference/guide/build-layout.md:69
+msgid ""
+"sbt uses the same directory structure as [Maven](https://maven.apache.org/) "
+"for source files by default (all paths are relative to the base directory):"
+msgstr ""
+
+#: src/reference/guide/build-layout.md:89
+msgid ""
+"Other directories in `src/` will be ignored. Additionally, all hidden "
+"directories will be ignored."
+msgstr ""
+
+#: src/reference/guide/build-layout.md:92
+msgid ""
+"Source code can be placed in the project's base directory as `hello/app."
+"scala`, which may be OK for small projects, though for normal projects "
+"people tend to keep the projects in the `src/main/` directory to keep things "
+"neat. The fact that you can place `*.scala` source code in the base "
+"directory might seem like an odd trick, but this fact becomes relevant "
+"[later](Organizing-Build.html)."
+msgstr ""
+
+#: src/reference/guide/build-layout.md:99
+msgid "Configuring version control"
+msgstr ""
+
+#: src/reference/guide/build-layout.md:101
+msgid ""
+"Your `.gitignore` (or equivalent for other version control systems) should "
+"contain:"
+msgstr ""
+
+#: src/reference/guide/build-layout.md:108
+msgid ""
+"Note that this deliberately has a trailing `/` (to match only directories) "
+"and it deliberately has no leading `/` (to match `project/target/` in "
+"addition to plain `target/`)."
+msgstr ""
+
+#: src/reference/guide/build-layout.md:112
+msgid ""
+"sbt automates building, testing, and deployment of your subprojects from "
+"information in the build definition."
+msgstr ""
diff --git a/po/summary/getting-started/build-layout.zh-cn.po b/po/summary/getting-started/build-layout.zh-cn.po
new file mode 100644
index 00000000..675b4d9e
--- /dev/null
+++ b/po/summary/getting-started/build-layout.zh-cn.po
@@ -0,0 +1,116 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/guide/build-layout.md:6
+msgid "Build layout"
+msgstr ""
+
+#: src/reference/guide/build-layout.md:9
+msgid ""
+"sbt uses conventions for file placement to make it easy to dive into a new "
+"sbt build:"
+msgstr ""
+
+#: src/reference/guide/build-layout.md:40
+msgid "The local root directory `.` is the starting point of your build."
+msgstr ""
+
+#: src/reference/guide/build-layout.md:41
+msgid ""
+"In sbt's terminology, the _base directory_ is the directory containing the "
+"subproject. In the above, `.`, `subproject-core`, and `subproject-util` are "
+"base directories."
+msgstr ""
+
+#: src/reference/guide/build-layout.md:42
+msgid ""
+"The build definition is described in `build.sbt` (actually any files named "
+"`*.sbt`) in the local root directory."
+msgstr ""
+
+#: src/reference/guide/build-layout.md:43
+msgid "The sbt version is tracked in `project/build.properties`."
+msgstr ""
+
+#: src/reference/guide/build-layout.md:44
+msgid ""
+"Generated files (compiled classes, packaged jars, managed files, caches, and "
+"documentation) will be written to the `target` directory by default."
+msgstr ""
+
+#: src/reference/guide/build-layout.md:47
+msgid "Build support files"
+msgstr ""
+
+#: src/reference/guide/build-layout.md:49
+msgid ""
+"In addition to `build.sbt`, `project` directory can contain `.scala` files "
+"that define helper objects and one-off plugins. See [organizing the build]"
+"(Organizing-Build.html) for more."
+msgstr ""
+
+#: src/reference/guide/build-layout.md:63
+msgid ""
+"You may see `.sbt` files inside `project/` but they are not equivalent to `."
+"sbt` files in the project's base directory. Explaining this will come [later]"
+"(Organizing-Build.html), since you'll need some background information first."
+msgstr ""
+
+#: src/reference/guide/build-layout.md:67
+msgid "Source code"
+msgstr ""
+
+#: src/reference/guide/build-layout.md:69
+msgid ""
+"sbt uses the same directory structure as [Maven](https://maven.apache.org/) "
+"for source files by default (all paths are relative to the base directory):"
+msgstr ""
+
+#: src/reference/guide/build-layout.md:89
+msgid ""
+"Other directories in `src/` will be ignored. Additionally, all hidden "
+"directories will be ignored."
+msgstr ""
+
+#: src/reference/guide/build-layout.md:92
+msgid ""
+"Source code can be placed in the project's base directory as `hello/app."
+"scala`, which may be OK for small projects, though for normal projects "
+"people tend to keep the projects in the `src/main/` directory to keep things "
+"neat. The fact that you can place `*.scala` source code in the base "
+"directory might seem like an odd trick, but this fact becomes relevant "
+"[later](Organizing-Build.html)."
+msgstr ""
+
+#: src/reference/guide/build-layout.md:99
+msgid "Configuring version control"
+msgstr ""
+
+#: src/reference/guide/build-layout.md:101
+msgid ""
+"Your `.gitignore` (or equivalent for other version control systems) should "
+"contain:"
+msgstr ""
+
+#: src/reference/guide/build-layout.md:108
+msgid ""
+"Note that this deliberately has a trailing `/` (to match only directories) "
+"and it deliberately has no leading `/` (to match `project/target/` in "
+"addition to plain `target/`)."
+msgstr ""
+
+#: src/reference/guide/build-layout.md:112
+msgid ""
+"sbt automates building, testing, and deployment of your subprojects from "
+"information in the build definition."
+msgstr ""
diff --git a/po/summary/getting-started/creating-a-new-build.ja.po b/po/summary/getting-started/creating-a-new-build.ja.po
new file mode 100644
index 00000000..7d82b603
--- /dev/null
+++ b/po/summary/getting-started/creating-a-new-build.ja.po
@@ -0,0 +1,115 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:08:34-04:00\n"
+"PO-Revision-Date: 2024-10-30T01:14:09-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/guide/sbt-new.md:1
+msgid "Creating a new build"
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:4
+msgid "To start a new build with `sbt`, use `sbt new`."
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:29
+msgid "If you select \"a\", you will be prompted by more questions:"
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:37
+msgid "Hit return key to select the default values."
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:39
+msgid ""
+"```\n"
+"[info] Updated file /private/tmp/bar/project/build.properties: set sbt."
+"version to 1.9.8\n"
+"[info] welcome to sbt 1.9.8 (Azul Systems, Inc. Java 1.8.0_352)\n"
+"....\n"
+"[info] set current project to bar (in build file:/private/tmp/foo/)\n"
+"[info] sbt server started at local:///Users/eed3si9n/.sbt/1.0/server/"
+"d0ac1409c0117a949d47/sock\n"
+"[info] started sbt server\n"
+"sbt:bar> exit\n"
+"[info] shutting down sbt server\n"
+"```"
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:50
+msgid "Here are the files that are created by this template:"
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:69
+msgid "Let's take a look at the `build.sbt` file:"
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:72
+msgid "\"0.2.0\""
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:73 src/reference/guide/sbt-new.md:74
+msgid "\"org.scala-lang\""
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:73
+msgid "\"toolkit\""
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:74
+msgid "\"toolkit-test\""
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:76
+msgid "\"3.3.0\""
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:81
+msgid ""
+"This is called a **build definition**, and it contains the information sbt "
+"needs to compile your project. This is written in `.sbt` format, a subset of "
+"Scala language."
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:83
+msgid "Here's what's in `src/main/scala/example/Main.scala`:"
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:89
+msgid "s\"Hello ${"
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:89
+msgid "}\""
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:92
+msgid ""
+"This is a Hello world template. We can run it from the sbt shell by starting "
+"`sbt --client` and typing `run ` inside the shell:"
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:107
+msgid "Giter8 templates"
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:109
+msgid ""
+"In addition to a few `.local` templates, `sbt new` integrates with [Giter8]"
+"(https://www.foundweekends.org/giter8/), and open templating system that "
+"uses GitHub to host templates. For example, `scala/scala3.g8` is maintained "
+"by the Scala team to create a new Scala 3 build:"
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:117
+msgid ""
+"[Giter8 wiki](https://github.com/foundweekends/giter8/wiki/giter8-templates) "
+"lists over 100 templates that can jump start your new build."
+msgstr ""
diff --git a/po/summary/getting-started/creating-a-new-build.zh-cn.po b/po/summary/getting-started/creating-a-new-build.zh-cn.po
new file mode 100644
index 00000000..1cc3fbb6
--- /dev/null
+++ b/po/summary/getting-started/creating-a-new-build.zh-cn.po
@@ -0,0 +1,115 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/guide/sbt-new.md:1
+msgid "Creating a new build"
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:4
+msgid "To start a new build with `sbt`, use `sbt new`."
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:29
+msgid "If you select \"a\", you will be prompted by more questions:"
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:37
+msgid "Hit return key to select the default values."
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:39
+msgid ""
+"```\n"
+"[info] Updated file /private/tmp/bar/project/build.properties: set sbt."
+"version to 1.9.8\n"
+"[info] welcome to sbt 1.9.8 (Azul Systems, Inc. Java 1.8.0_352)\n"
+"....\n"
+"[info] set current project to bar (in build file:/private/tmp/foo/)\n"
+"[info] sbt server started at local:///Users/eed3si9n/.sbt/1.0/server/"
+"d0ac1409c0117a949d47/sock\n"
+"[info] started sbt server\n"
+"sbt:bar> exit\n"
+"[info] shutting down sbt server\n"
+"```"
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:50
+msgid "Here are the files that are created by this template:"
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:69
+msgid "Let's take a look at the `build.sbt` file:"
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:72
+msgid "\"0.2.0\""
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:73 src/reference/guide/sbt-new.md:74
+msgid "\"org.scala-lang\""
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:73
+msgid "\"toolkit\""
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:74
+msgid "\"toolkit-test\""
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:76
+msgid "\"3.3.0\""
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:81
+msgid ""
+"This is called a **build definition**, and it contains the information sbt "
+"needs to compile your project. This is written in `.sbt` format, a subset of "
+"Scala language."
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:83
+msgid "Here's what's in `src/main/scala/example/Main.scala`:"
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:89
+msgid "s\"Hello ${"
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:89
+msgid "}\""
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:92
+msgid ""
+"This is a Hello world template. We can run it from the sbt shell by starting "
+"`sbt --client` and typing `run ` inside the shell:"
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:107
+msgid "Giter8 templates"
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:109
+msgid ""
+"In addition to a few `.local` templates, `sbt new` integrates with [Giter8]"
+"(https://www.foundweekends.org/giter8/), and open templating system that "
+"uses GitHub to host templates. For example, `scala/scala3.g8` is maintained "
+"by the Scala team to create a new Scala 3 build:"
+msgstr ""
+
+#: src/reference/guide/sbt-new.md:117
+msgid ""
+"[Giter8 wiki](https://github.com/foundweekends/giter8/wiki/giter8-templates) "
+"lists over 100 templates that can jump start your new build."
+msgstr ""
diff --git a/po/summary/getting-started/library-dependency-basics.ja.po b/po/summary/getting-started/library-dependency-basics.ja.po
new file mode 100644
index 00000000..6b2ef948
--- /dev/null
+++ b/po/summary/getting-started/library-dependency-basics.ja.po
@@ -0,0 +1,157 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:08:34-04:00\n"
+"PO-Revision-Date: 2024-10-30T01:14:09-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/guide/library-dependency-basics.md:1
+msgid "Library dependency basics"
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:4
+msgid ""
+"This page explains the basics of library dependency management using sbt."
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:6
+msgid ""
+"sbt uses [Coursier](https://get-coursier.io/) to implement managed "
+"dependencies, so if you're familiar with package managers like Coursier, "
+"npm, PIP, etc you won't have much trouble."
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:10
+msgid "The `libraryDependencies` key"
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:13
+msgid ""
+"Declaring a dependency looks like this, where `groupId`, `artifactId`, and "
+"`revision` are strings:"
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:20
+msgid ""
+"or like this, where `configuration` can be a string or a `Configuration` "
+"value (such as `Test`):"
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:26
+msgid "When you run:"
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:32
+msgid ""
+"sbt will automatically resolve the dependencies and download the JAR files."
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:34
+msgid "Getting the right Scala version with `%%`"
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:36
+msgid ""
+"If you use `organization %% moduleName % version` rather than `organization "
+"% moduleName % version` (the difference is the double `%%` after the "
+"`organization`), sbt will add your project's binary Scala version to the "
+"artifact name. This is just a shortcut. You could write this without the `%"
+"%`:"
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:42
+#: src/reference/guide/library-dependency-basics.md:49
+#: src/reference/guide/library-dependency-basics.md:74
+#: src/reference/guide/library-dependency-basics.md:75
+msgid "\"org.scala-lang\""
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:42
+msgid "\"toolkit_3\""
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:42
+#: src/reference/guide/library-dependency-basics.md:49
+#: src/reference/guide/library-dependency-basics.md:71
+msgid "\"0.2.0\""
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:45
+msgid ""
+"Assuming the `scalaVersion` for your build is 3.x, the following is "
+"identical (note the double `%%` after `\"toolkit\"`):"
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:49
+#: src/reference/guide/library-dependency-basics.md:74
+msgid "\"toolkit\""
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:52
+msgid ""
+"The idea is that many dependencies are compiled for multiple Scala versions, "
+"and you'd like to get the one that matches your project to ensure binary "
+"compatibility."
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:56
+msgid "Tracking dependencies in one place"
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:59
+msgid ""
+"`.scala` files under `project` becomes part of the build definition, which "
+"we can use to track dependencies in one place by creating a file named "
+"`project/Dependencies.scala`."
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:65
+msgid "// place this file at project/Dependencies.scala"
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:70
+msgid "// versions"
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:73
+msgid "// libraries"
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:75
+msgid "\"toolkit-test\""
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:79
+msgid ""
+"The `Dependencies` object will be available in `build.sbt`. To make it "
+"easier to use the `val`s defined in it, import `Dependencies.*` in your "
+"build.sbt file."
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:85
+msgid "\"3.3.3\""
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:86
+msgid "\"something\""
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:91
+msgid "Viewing library dependencies"
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:94
+msgid ""
+"Type in `Compile/dependencyTree` in the sbt shell to show the library "
+"dependency tree, including the transitive dependencies:"
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:100
+msgid "This should display something like the following:"
+msgstr ""
diff --git a/po/summary/getting-started/library-dependency-basics.zh-cn.po b/po/summary/getting-started/library-dependency-basics.zh-cn.po
new file mode 100644
index 00000000..0e1bb7eb
--- /dev/null
+++ b/po/summary/getting-started/library-dependency-basics.zh-cn.po
@@ -0,0 +1,157 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/guide/library-dependency-basics.md:1
+msgid "Library dependency basics"
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:4
+msgid ""
+"This page explains the basics of library dependency management using sbt."
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:6
+msgid ""
+"sbt uses [Coursier](https://get-coursier.io/) to implement managed "
+"dependencies, so if you're familiar with package managers like Coursier, "
+"npm, PIP, etc you won't have much trouble."
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:10
+msgid "The `libraryDependencies` key"
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:13
+msgid ""
+"Declaring a dependency looks like this, where `groupId`, `artifactId`, and "
+"`revision` are strings:"
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:20
+msgid ""
+"or like this, where `configuration` can be a string or a `Configuration` "
+"value (such as `Test`):"
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:26
+msgid "When you run:"
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:32
+msgid ""
+"sbt will automatically resolve the dependencies and download the JAR files."
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:34
+msgid "Getting the right Scala version with `%%`"
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:36
+msgid ""
+"If you use `organization %% moduleName % version` rather than `organization "
+"% moduleName % version` (the difference is the double `%%` after the "
+"`organization`), sbt will add your project's binary Scala version to the "
+"artifact name. This is just a shortcut. You could write this without the `%"
+"%`:"
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:42
+#: src/reference/guide/library-dependency-basics.md:49
+#: src/reference/guide/library-dependency-basics.md:74
+#: src/reference/guide/library-dependency-basics.md:75
+msgid "\"org.scala-lang\""
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:42
+msgid "\"toolkit_3\""
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:42
+#: src/reference/guide/library-dependency-basics.md:49
+#: src/reference/guide/library-dependency-basics.md:71
+msgid "\"0.2.0\""
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:45
+msgid ""
+"Assuming the `scalaVersion` for your build is 3.x, the following is "
+"identical (note the double `%%` after `\"toolkit\"`):"
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:49
+#: src/reference/guide/library-dependency-basics.md:74
+msgid "\"toolkit\""
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:52
+msgid ""
+"The idea is that many dependencies are compiled for multiple Scala versions, "
+"and you'd like to get the one that matches your project to ensure binary "
+"compatibility."
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:56
+msgid "Tracking dependencies in one place"
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:59
+msgid ""
+"`.scala` files under `project` becomes part of the build definition, which "
+"we can use to track dependencies in one place by creating a file named "
+"`project/Dependencies.scala`."
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:65
+msgid "// place this file at project/Dependencies.scala"
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:70
+msgid "// versions"
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:73
+msgid "// libraries"
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:75
+msgid "\"toolkit-test\""
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:79
+msgid ""
+"The `Dependencies` object will be available in `build.sbt`. To make it "
+"easier to use the `val`s defined in it, import `Dependencies.*` in your "
+"build.sbt file."
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:85
+msgid "\"3.3.3\""
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:86
+msgid "\"something\""
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:91
+msgid "Viewing library dependencies"
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:94
+msgid ""
+"Type in `Compile/dependencyTree` in the sbt shell to show the library "
+"dependency tree, including the transitive dependencies:"
+msgstr ""
+
+#: src/reference/guide/library-dependency-basics.md:100
+msgid "This should display something like the following:"
+msgstr ""
diff --git a/po/summary/getting-started/multi-project-basics.ja.po b/po/summary/getting-started/multi-project-basics.ja.po
new file mode 100644
index 00000000..499fe254
--- /dev/null
+++ b/po/summary/getting-started/multi-project-basics.ja.po
@@ -0,0 +1,55 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:08:34-04:00\n"
+"PO-Revision-Date: 2024-10-30T01:14:09-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/guide/multi-project-basics.md:7
+msgid "Multi project basics"
+msgstr ""
+
+#: src/reference/guide/multi-project-basics.md:10
+msgid ""
+"While a simple program can start out as a single-project build, it's more "
+"common for a build to split into smaller, multiple subprojects."
+msgstr ""
+
+#: src/reference/guide/multi-project-basics.md:13
+msgid ""
+"Each subproject in a build has its own source directories, generates its own "
+"JAR file when you run `packageBin`, and in general works like any other "
+"project."
+msgstr ""
+
+#: src/reference/guide/multi-project-basics.md:17
+msgid ""
+"A project is defined by declaring a lazy val of type [Project](../../api/sbt/"
+"Project.html). For example, :"
+msgstr ""
+
+#: src/reference/guide/multi-project-basics.md:21
+msgid "\"3.3.3\""
+msgstr ""
+
+#: src/reference/guide/multi-project-basics.md:23
+#: src/reference/guide/multi-project-basics.md:25
+msgid "\"core\""
+msgstr ""
+
+#: src/reference/guide/multi-project-basics.md:28
+#: src/reference/guide/multi-project-basics.md:31
+msgid "\"util\""
+msgstr ""
+
+#: src/reference/guide/multi-project-basics.md:35
+msgid ""
+"The name of the val is used as the subproject's ID, which is used to refer "
+"to the subproject at the sbt shell."
+msgstr ""
diff --git a/po/summary/getting-started/multi-project-basics.zh-cn.po b/po/summary/getting-started/multi-project-basics.zh-cn.po
new file mode 100644
index 00000000..3696caa1
--- /dev/null
+++ b/po/summary/getting-started/multi-project-basics.zh-cn.po
@@ -0,0 +1,55 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/guide/multi-project-basics.md:7
+msgid "Multi project basics"
+msgstr ""
+
+#: src/reference/guide/multi-project-basics.md:10
+msgid ""
+"While a simple program can start out as a single-project build, it's more "
+"common for a build to split into smaller, multiple subprojects."
+msgstr ""
+
+#: src/reference/guide/multi-project-basics.md:13
+msgid ""
+"Each subproject in a build has its own source directories, generates its own "
+"JAR file when you run `packageBin`, and in general works like any other "
+"project."
+msgstr ""
+
+#: src/reference/guide/multi-project-basics.md:17
+msgid ""
+"A project is defined by declaring a lazy val of type [Project](../../api/sbt/"
+"Project.html). For example, :"
+msgstr ""
+
+#: src/reference/guide/multi-project-basics.md:21
+msgid "\"3.3.3\""
+msgstr ""
+
+#: src/reference/guide/multi-project-basics.md:23
+#: src/reference/guide/multi-project-basics.md:25
+msgid "\"core\""
+msgstr ""
+
+#: src/reference/guide/multi-project-basics.md:28
+#: src/reference/guide/multi-project-basics.md:31
+msgid "\"util\""
+msgstr ""
+
+#: src/reference/guide/multi-project-basics.md:35
+msgid ""
+"The name of the val is used as the subproject's ID, which is used to refer "
+"to the subproject at the sbt shell."
+msgstr ""
diff --git a/po/summary/getting-started/sbt-components.ja.po b/po/summary/getting-started/sbt-components.ja.po
new file mode 100644
index 00000000..1e0a1df2
--- /dev/null
+++ b/po/summary/getting-started/sbt-components.ja.po
@@ -0,0 +1,177 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:08:34-04:00\n"
+"PO-Revision-Date: 2024-10-30T01:14:09-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/guide/sbt-components.md:1
+msgid "sbt components"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:4
+msgid "sbt runner"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:7
+msgid ""
+"An sbt build is executed using `sbt` runner, also called \"sbt-the-shell-"
+"script\" to distinguish from other components. It's important to note is "
+"that sbt runner is designed to run **any version** of sbt."
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:9
+msgid "Specifying sbt version with project/build.properties"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:11
+msgid ""
+"sbt runner executes a subcomponent called sbt launcher, which reads `project/"
+"build.properties` to determine the sbt version for the build, and downloads "
+"the artifacts if they haven't been cached:"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:17
+msgid "This means that:"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:19
+msgid ""
+"Anyone who checkouts your build would get the same sbt version, regardless "
+"of _sbt runner_ they may have installed on their machines."
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:20
+msgid ""
+"The change of sbt version can be tracked in a version control system, like "
+"git."
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:22
+msgid "sbtn (`sbt --client`)"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:24
+msgid ""
+"sbtn (native thin client) is a subcomponent of sbt runner, called when you "
+"pass `--client` flag to sbt runner, and is used to send commands to sbt "
+"server. It is called sbtn because it is compiled to native code using "
+"GraalVM native-image. The protocol between sbtn and sbt server is stable "
+"enough that it should work between **most recent versions** of sbt."
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:26
+msgid "sbt server"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:29
+msgid ""
+"sbt server is the actual build tool whose version is specified using "
+"`project/build.properties`. sbt server acts as a cashier to take commands "
+"from sbtn and editors."
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:31
+msgid "Coursier"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:33
+msgid ""
+"sbt server runs [Couriser](https://get-coursier.io/) as a subcomponent to "
+"resolve Scala library, Scala compiler, and any other library dependencies "
+"your build needs."
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:35
+msgid "Zinc"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:37
+msgid ""
+"Zinc is the incremental compiler for Scala, developed and maintained by sbt "
+"project. An often overlooked aspect of Zinc is that Zinc provides a stable "
+"API to invoke **any modern versions** of Scala compiler. Combined with the "
+"fact that Coursier can resolve any Scala version, with sbt we can invoke any "
+"modern versions of Scala just by writing a single line `build.sbt`:"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:41
+msgid "\"3.3.3\""
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:44
+msgid "BSP server"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:46
+msgid ""
+"sbt server supports [Build Server Protocol (BSP)](https://build-server-"
+"protocol.github.io/) to list build targets, build them, etc. This allows "
+"IDEs like IntelliJ and Metals to communicate with a running sbt server "
+"programmatically."
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:49
+msgid "Connecting to sbt server"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:52
+msgid "Let's look at three ways of connecting to sbt server."
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:54
+msgid "sbt shell using sbtn"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:56
+msgid "Run `sbt --client` in the working directory of your build:"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:62
+msgid "This should display something like the following:"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:78
+msgid ""
+"Running sbt with no command line arguments starts sbt shell. sbt shell has a "
+"command prompt (with tab completion and history!)."
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:80
+msgid "For example, you could type `compile` at the sbt shell:"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:86
+msgid "To `compile` again, press up arrow and then enter."
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:88
+msgid ""
+"To leave sbt shell, type `exit` or use `Ctrl-D` (Unix) or `Ctrl-Z` (Windows)."
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:90
+msgid "Batch mode using sbtn"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:92
+msgid "You can also run sbt in batch mode:"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:104
+msgid "Shutting down sbt server"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:106
+msgid "Run the following to shutdown all sbt servers on your machine:"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:112
+msgid "Or the following to shutdown just the current one:"
+msgstr ""
diff --git a/po/summary/getting-started/sbt-components.zh-cn.po b/po/summary/getting-started/sbt-components.zh-cn.po
new file mode 100644
index 00000000..0e0956f4
--- /dev/null
+++ b/po/summary/getting-started/sbt-components.zh-cn.po
@@ -0,0 +1,177 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/guide/sbt-components.md:1
+msgid "sbt components"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:4
+msgid "sbt runner"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:7
+msgid ""
+"An sbt build is executed using `sbt` runner, also called \"sbt-the-shell-"
+"script\" to distinguish from other components. It's important to note is "
+"that sbt runner is designed to run **any version** of sbt."
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:9
+msgid "Specifying sbt version with project/build.properties"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:11
+msgid ""
+"sbt runner executes a subcomponent called sbt launcher, which reads `project/"
+"build.properties` to determine the sbt version for the build, and downloads "
+"the artifacts if they haven't been cached:"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:17
+msgid "This means that:"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:19
+msgid ""
+"Anyone who checkouts your build would get the same sbt version, regardless "
+"of _sbt runner_ they may have installed on their machines."
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:20
+msgid ""
+"The change of sbt version can be tracked in a version control system, like "
+"git."
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:22
+msgid "sbtn (`sbt --client`)"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:24
+msgid ""
+"sbtn (native thin client) is a subcomponent of sbt runner, called when you "
+"pass `--client` flag to sbt runner, and is used to send commands to sbt "
+"server. It is called sbtn because it is compiled to native code using "
+"GraalVM native-image. The protocol between sbtn and sbt server is stable "
+"enough that it should work between **most recent versions** of sbt."
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:26
+msgid "sbt server"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:29
+msgid ""
+"sbt server is the actual build tool whose version is specified using "
+"`project/build.properties`. sbt server acts as a cashier to take commands "
+"from sbtn and editors."
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:31
+msgid "Coursier"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:33
+msgid ""
+"sbt server runs [Couriser](https://get-coursier.io/) as a subcomponent to "
+"resolve Scala library, Scala compiler, and any other library dependencies "
+"your build needs."
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:35
+msgid "Zinc"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:37
+msgid ""
+"Zinc is the incremental compiler for Scala, developed and maintained by sbt "
+"project. An often overlooked aspect of Zinc is that Zinc provides a stable "
+"API to invoke **any modern versions** of Scala compiler. Combined with the "
+"fact that Coursier can resolve any Scala version, with sbt we can invoke any "
+"modern versions of Scala just by writing a single line `build.sbt`:"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:41
+msgid "\"3.3.3\""
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:44
+msgid "BSP server"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:46
+msgid ""
+"sbt server supports [Build Server Protocol (BSP)](https://build-server-"
+"protocol.github.io/) to list build targets, build them, etc. This allows "
+"IDEs like IntelliJ and Metals to communicate with a running sbt server "
+"programmatically."
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:49
+msgid "Connecting to sbt server"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:52
+msgid "Let's look at three ways of connecting to sbt server."
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:54
+msgid "sbt shell using sbtn"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:56
+msgid "Run `sbt --client` in the working directory of your build:"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:62
+msgid "This should display something like the following:"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:78
+msgid ""
+"Running sbt with no command line arguments starts sbt shell. sbt shell has a "
+"command prompt (with tab completion and history!)."
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:80
+msgid "For example, you could type `compile` at the sbt shell:"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:86
+msgid "To `compile` again, press up arrow and then enter."
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:88
+msgid ""
+"To leave sbt shell, type `exit` or use `Ctrl-D` (Unix) or `Ctrl-Z` (Windows)."
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:90
+msgid "Batch mode using sbtn"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:92
+msgid "You can also run sbt in batch mode:"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:104
+msgid "Shutting down sbt server"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:106
+msgid "Run the following to shutdown all sbt servers on your machine:"
+msgstr ""
+
+#: src/reference/guide/sbt-components.md:112
+msgid "Or the following to shutdown just the current one:"
+msgstr ""
diff --git a/po/summary/getting-started/sbt-with-ides.ja.po b/po/summary/getting-started/sbt-with-ides.ja.po
new file mode 100644
index 00000000..86c4140c
--- /dev/null
+++ b/po/summary/getting-started/sbt-with-ides.ja.po
@@ -0,0 +1,64 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:08:34-04:00\n"
+"PO-Revision-Date: 2024-10-30T01:14:09-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/guide/IDE.md:7
+msgid "sbt with IDEs"
+msgstr ""
+
+#: src/reference/guide/IDE.md:10
+msgid ""
+"While it's possible to code Scala with just an editor and sbt, most "
+"programmers today use an Integrated Development Environment, or IDE for "
+"short. Two of the popular IDEs in Scala are [Metals](https://scalameta.org/"
+"metals/) and [IntelliJ IDEA](https://www.jetbrains.com/idea/), and they both "
+"integrate with sbt builds."
+msgstr ""
+
+#: src/reference/guide/IDE.md:14
+msgid "A few of the advantages of using the IDEs are:"
+msgstr ""
+
+#: src/reference/guide/IDE.md:16
+msgid "Jump to definition"
+msgstr ""
+
+#: src/reference/guide/IDE.md:17
+msgid "Code completion based on static types"
+msgstr ""
+
+#: src/reference/guide/IDE.md:18
+msgid "Listing compilation errors, and jumping to the error positions"
+msgstr ""
+
+#: src/reference/guide/IDE.md:19
+msgid "Interactive debugging"
+msgstr ""
+
+#: src/reference/guide/IDE.md:21
+msgid ""
+"Here are a few recipes on how to configure the IDEs to integrate with sbt:"
+msgstr ""
+
+#: src/reference/guide/IDE.md:23
+msgid ""
+"[Use sbt as Metals build server](../recipes/use-sbt-as-metals-build-server."
+"md)"
+msgstr ""
+
+#: src/reference/guide/IDE.md:24
+msgid "[Import to IntelliJ IDEA](../recipes/import-to-intellij.md)"
+msgstr ""
+
+#: src/reference/guide/IDE.md:25
+msgid "[Use Neovim](../recipes/use-neovim.md)"
+msgstr ""
diff --git a/po/summary/getting-started/sbt-with-ides.zh-cn.po b/po/summary/getting-started/sbt-with-ides.zh-cn.po
new file mode 100644
index 00000000..1fb7066a
--- /dev/null
+++ b/po/summary/getting-started/sbt-with-ides.zh-cn.po
@@ -0,0 +1,64 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/guide/IDE.md:7
+msgid "sbt with IDEs"
+msgstr ""
+
+#: src/reference/guide/IDE.md:10
+msgid ""
+"While it's possible to code Scala with just an editor and sbt, most "
+"programmers today use an Integrated Development Environment, or IDE for "
+"short. Two of the popular IDEs in Scala are [Metals](https://scalameta.org/"
+"metals/) and [IntelliJ IDEA](https://www.jetbrains.com/idea/), and they both "
+"integrate with sbt builds."
+msgstr ""
+
+#: src/reference/guide/IDE.md:14
+msgid "A few of the advantages of using the IDEs are:"
+msgstr ""
+
+#: src/reference/guide/IDE.md:16
+msgid "Jump to definition"
+msgstr ""
+
+#: src/reference/guide/IDE.md:17
+msgid "Code completion based on static types"
+msgstr ""
+
+#: src/reference/guide/IDE.md:18
+msgid "Listing compilation errors, and jumping to the error positions"
+msgstr ""
+
+#: src/reference/guide/IDE.md:19
+msgid "Interactive debugging"
+msgstr ""
+
+#: src/reference/guide/IDE.md:21
+msgid ""
+"Here are a few recipes on how to configure the IDEs to integrate with sbt:"
+msgstr ""
+
+#: src/reference/guide/IDE.md:23
+msgid ""
+"[Use sbt as Metals build server](../recipes/use-sbt-as-metals-build-server."
+"md)"
+msgstr ""
+
+#: src/reference/guide/IDE.md:24
+msgid "[Import to IntelliJ IDEA](../recipes/import-to-intellij.md)"
+msgstr ""
+
+#: src/reference/guide/IDE.md:25
+msgid "[Use Neovim](../recipes/use-neovim.md)"
+msgstr ""
diff --git a/po/summary/getting-started/why-sbt-exists.ja.po b/po/summary/getting-started/why-sbt-exists.ja.po
new file mode 100644
index 00000000..2c8f2f9c
--- /dev/null
+++ b/po/summary/getting-started/why-sbt-exists.ja.po
@@ -0,0 +1,146 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:08:34-04:00\n"
+"PO-Revision-Date: 2024-10-30T01:14:09-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/guide/why-sbt-exists.md:1
+msgid "Why sbt exists"
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:4
+msgid "Preliminaries"
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:7
+msgid ""
+"In Scala, a library or a program is compiled using the Scala compiler, "
+"`scalac`, as documented in the [Scala 3 Book](https://docs.scala-lang.org/"
+"scala3/book/taste-hello-world.html):"
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:10
+msgid "\"Hello, World!\""
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:19
+msgid ""
+"This process gets tedious and slow if we were to invoke `scalac` directly "
+"since we'd have to pass all the Scala source file names."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:21
+msgid ""
+"Furthermore, most non-trivial programs will likely have library "
+"dependencies, and will therefore also depend transitively on their "
+"dependencies. This is doubly complicated for Scala ecosystem because we have "
+"Scala 2.12, 2.13 ecosystem, Scala 3.x ecosystem, JVM, JS, and Native "
+"platforms."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:24
+msgid ""
+"Rather than working with JAR files and `scalac`, we can avoid manual toil by "
+"introducing a higher-level subproject abstraction and by using a build tool."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:26
+msgid "sbt"
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:29
+msgid ""
+"_sbt_ is a simple build tool created for Scala and Java. It lets us declare "
+"subprojects and their various dependencies and custom tasks to ensure that "
+"we'll always get a fast, repeatable build."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:32
+msgid "To accomplish this goal, sbt does several things:"
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:34
+msgid "The version of sbt itself is tracked in `project/build.properties`."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:35
+msgid ""
+"Defines a domain-specific language (DSL) called **build.sbt DSL** that can "
+"declare the Scala version and other subproject information in `build.sbt`."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:36
+msgid "Uses Coursier to fetch subprojects dependencies and their dependencies."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:37
+msgid "Invokes Zinc to incrementally compile Scala and Java sources."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:38
+msgid "Automatically runs tasks in parallel whenever possible."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:39
+msgid ""
+"Defines conventions on how packages are published to Maven repositories to "
+"interoperate with the wider JVM ecosystem."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:41
+msgid ""
+"To a large extent, sbt standardizes the commands needed to build a given "
+"program or library."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:43
+msgid "Why build.sbt DSL?"
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:46
+msgid ""
+"build.sbt DSL makes sbt a unique build tool, as opposed to other tools that "
+"use configuration file formats like YAML, TOML, and XML. Originally "
+"developed beween 2010 and 2013, `build.sbt` can start almost like a YAML "
+"file, declaring just `scalaVersion` and `libraryDependencies`, but it can "
+"supports more features to keep the build definition organized as the build "
+"grows larger:"
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:51
+msgid ""
+"To avoid repeating the same information, like the version number for a "
+"library, `build.sbt` can declare variables using `val`."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:52
+msgid ""
+"Uses Scala language constructs like `if` to define settings and tasks, when "
+"needed."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:53
+msgid ""
+"Statically typed settings and tasks, to catch typos and type errors before "
+"the build starts. The type also helps passing data from one task from "
+"another."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:54
+msgid ""
+"Provides **structured concurrency** via `Initialized[Task[A]]`. The DSL uses "
+"_direct style_ `.value` syntax to concisely define task graphs."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:55
+msgid ""
+"Enpowers the community to extend sbt with plugins that provide custom tasks "
+"or language extensions like Scala.JS."
+msgstr ""
diff --git a/po/summary/getting-started/why-sbt-exists.zh-cn.po b/po/summary/getting-started/why-sbt-exists.zh-cn.po
new file mode 100644
index 00000000..3a469739
--- /dev/null
+++ b/po/summary/getting-started/why-sbt-exists.zh-cn.po
@@ -0,0 +1,146 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/guide/why-sbt-exists.md:1
+msgid "Why sbt exists"
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:4
+msgid "Preliminaries"
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:7
+msgid ""
+"In Scala, a library or a program is compiled using the Scala compiler, "
+"`scalac`, as documented in the [Scala 3 Book](https://docs.scala-lang.org/"
+"scala3/book/taste-hello-world.html):"
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:10
+msgid "\"Hello, World!\""
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:19
+msgid ""
+"This process gets tedious and slow if we were to invoke `scalac` directly "
+"since we'd have to pass all the Scala source file names."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:21
+msgid ""
+"Furthermore, most non-trivial programs will likely have library "
+"dependencies, and will therefore also depend transitively on their "
+"dependencies. This is doubly complicated for Scala ecosystem because we have "
+"Scala 2.12, 2.13 ecosystem, Scala 3.x ecosystem, JVM, JS, and Native "
+"platforms."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:24
+msgid ""
+"Rather than working with JAR files and `scalac`, we can avoid manual toil by "
+"introducing a higher-level subproject abstraction and by using a build tool."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:26
+msgid "sbt"
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:29
+msgid ""
+"_sbt_ is a simple build tool created for Scala and Java. It lets us declare "
+"subprojects and their various dependencies and custom tasks to ensure that "
+"we'll always get a fast, repeatable build."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:32
+msgid "To accomplish this goal, sbt does several things:"
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:34
+msgid "The version of sbt itself is tracked in `project/build.properties`."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:35
+msgid ""
+"Defines a domain-specific language (DSL) called **build.sbt DSL** that can "
+"declare the Scala version and other subproject information in `build.sbt`."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:36
+msgid "Uses Coursier to fetch subprojects dependencies and their dependencies."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:37
+msgid "Invokes Zinc to incrementally compile Scala and Java sources."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:38
+msgid "Automatically runs tasks in parallel whenever possible."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:39
+msgid ""
+"Defines conventions on how packages are published to Maven repositories to "
+"interoperate with the wider JVM ecosystem."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:41
+msgid ""
+"To a large extent, sbt standardizes the commands needed to build a given "
+"program or library."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:43
+msgid "Why build.sbt DSL?"
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:46
+msgid ""
+"build.sbt DSL makes sbt a unique build tool, as opposed to other tools that "
+"use configuration file formats like YAML, TOML, and XML. Originally "
+"developed beween 2010 and 2013, `build.sbt` can start almost like a YAML "
+"file, declaring just `scalaVersion` and `libraryDependencies`, but it can "
+"supports more features to keep the build definition organized as the build "
+"grows larger:"
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:51
+msgid ""
+"To avoid repeating the same information, like the version number for a "
+"library, `build.sbt` can declare variables using `val`."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:52
+msgid ""
+"Uses Scala language constructs like `if` to define settings and tasks, when "
+"needed."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:53
+msgid ""
+"Statically typed settings and tasks, to catch typos and type errors before "
+"the build starts. The type also helps passing data from one task from "
+"another."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:54
+msgid ""
+"Provides **structured concurrency** via `Initialized[Task[A]]`. The DSL uses "
+"_direct style_ `.value` syntax to concisely define task graphs."
+msgstr ""
+
+#: src/reference/guide/why-sbt-exists.md:55
+msgid ""
+"Enpowers the community to extend sbt with plugins that provide custom tasks "
+"or language extensions like Scala.JS."
+msgstr ""
diff --git a/po/summary/introduction.ja.po b/po/summary/introduction.ja.po
new file mode 100644
index 00000000..c16cf2da
--- /dev/null
+++ b/po/summary/introduction.ja.po
@@ -0,0 +1,53 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:23:28-04:00\n"
+"PO-Revision-Date: 2024-10-30 03:36-0400\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 3.5\n"
+
+#: src/reference/index.md:1
+msgid "The Book of sbt (Draft)"
+msgstr "sbt 記 (草稿)"
+
+#: src/reference/index.md:4
+msgid ""
+"This is a draft documentation of sbt 2.x that is yet to be released. While "
+"the general concept translates to sbt 1.x, details of both 2.x and this doc "
+"are subject to change."
+msgstr ""
+"これは未だリリースされていない sbt 2.x のドキュメンテーションの草稿だ。一般"
+"的な概念は sbt 1.x とも一貫しているが、2.x 系および本稿の詳細は今後変更され"
+"る可能性がある。"
+
+#: src/reference/index.md:8
+msgid "![sbt logo](files/sbt-logo.svg)"
+msgstr ""
+
+#: src/reference/index.md:10
+msgid ""
+"sbt is a simple build tool for Scala and Java. sbt downloads your library "
+"dependencies via Coursier, incrementally compiles and tests your projects, "
+"integrates with IDEs like IntelliJ and VS Code, makes JAR packages, and "
+"publishes them to [Maven Central](https://central.sonatype.com/), JVM "
+"community's package registry."
+msgstr ""
+"sbt は Scala と Java のためのシンプルなビルド・ツールだ。sbt は、Coursier を"
+"用いたライブラリ依存性のダウンロード、プロジェクトの差分コンパイルや差分テス"
+"ト、IntelliJ や VS Code などの IDE との統合、JAR パッケージの作成、および "
+"JVM コミュニティーがパッケージ登録を行う [Maven Central](https://central."
+"sonatype.com/) への公開などを行う。"
+
+#: src/reference/index.md:18
+msgid "\"3.3.3\""
+msgstr ""
+
+#: src/reference/index.md:21
+msgid "You just need one line of `build.sbt` to get started with Scala."
+msgstr "Scala を始めるには、一行の `build.sbt` を書くだけでいい。"
diff --git a/po/summary/introduction.zh-cn.po b/po/summary/introduction.zh-cn.po
new file mode 100644
index 00000000..a2fbea43
--- /dev/null
+++ b/po/summary/introduction.zh-cn.po
@@ -0,0 +1,53 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30 04:53-0400\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: zh_CN\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 3.5\n"
+
+#: src/reference/index.md:1
+msgid "The Book of sbt (Draft)"
+msgstr "sbt 记 (草稿)"
+
+#: src/reference/index.md:4
+msgid ""
+"This is a draft documentation of sbt 2.x that is yet to be released. While "
+"the general concept translates to sbt 1.x, details of both 2.x and this doc "
+"are subject to change."
+msgstr ""
+"这是关于 sbt 2.x 的草稿文档,目前尚未发布。虽然总体概念可以应用到 sbt 1.x,"
+"但 2.x 及本文档的详细内容可能会有所变动。"
+
+#: src/reference/index.md:8
+msgid "![sbt logo](files/sbt-logo.svg)"
+msgstr ""
+
+#: src/reference/index.md:10
+msgid ""
+"sbt is a simple build tool for Scala and Java. sbt downloads your library "
+"dependencies via Coursier, incrementally compiles and tests your projects, "
+"integrates with IDEs like IntelliJ and VS Code, makes JAR packages, and "
+"publishes them to [Maven Central](https://central.sonatype.com/), JVM "
+"community's package registry."
+msgstr ""
+"sbt 是一个用于 Scala 和 Java 的简单构建工具。\n"
+"sbt 通过 Coursier 下载你的库依赖,\n"
+"增量编译和测试项目,\n"
+"并与 IntelliJ 和 VS Code 等 IDE 集成,\n"
+"打包 JAR 文件并发布到 [Maven Central](https://central.sonatype.com/),\n"
+"这是 JVM 社区的包注册表。"
+
+#: src/reference/index.md:18
+msgid "\"3.3.3\""
+msgstr ""
+
+#: src/reference/index.md:21
+msgid "You just need one line of `build.sbt` to get started with Scala."
+msgstr "你只需要在 `build.sbt` 中添加一行代码即可开始使用 Scala。"
diff --git a/po/summary/recipes.ja.po b/po/summary/recipes.ja.po
new file mode 100644
index 00000000..3abb5436
--- /dev/null
+++ b/po/summary/recipes.ja.po
@@ -0,0 +1,16 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:08:34-04:00\n"
+"PO-Revision-Date: 2024-10-30T01:14:09-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/recipes/index.md:1
+msgid "Recipes"
+msgstr ""
diff --git a/po/summary/recipes.zh-cn.po b/po/summary/recipes.zh-cn.po
new file mode 100644
index 00000000..e7245f7d
--- /dev/null
+++ b/po/summary/recipes.zh-cn.po
@@ -0,0 +1,16 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/recipes/index.md:1
+msgid "Recipes"
+msgstr ""
diff --git a/po/summary/recipes/import-to-intellij-idea.ja.po b/po/summary/recipes/import-to-intellij-idea.ja.po
new file mode 100644
index 00000000..0e2eea73
--- /dev/null
+++ b/po/summary/recipes/import-to-intellij-idea.ja.po
@@ -0,0 +1,204 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:08:34-04:00\n"
+"PO-Revision-Date: 2024-10-30T01:14:09-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/recipes/import-to-intellij.md:1
+msgid "Import to IntelliJ IDEA"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:14
+msgid "Objective"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:17
+msgid "I want to import sbt build to IntelliJ IDEA."
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:19
+msgid "Steps"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:22
+msgid ""
+"[IntelliJ IDEA](https://www.jetbrains.com/idea/) is an IDE created by "
+"JetBrains, and the Community Edition is open source under Apache v2 license. "
+"IntelliJ integrates with many build tools, including sbt, to import the "
+"project."
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:24
+msgid "To import a build to IntelliJ IDEA:"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:26
+msgid ""
+"Install Scala plugin on the Plugins tab:
![IntelliJ](../files/intellij1."
+"png)"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:28
+msgid ""
+"From Projects, open a directory containing a `build.sbt` file.
!"
+"[IntelliJ](../files/intellij2.png)"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:30
+msgid ""
+"Once the import process is complete, open a Scala file to see that code "
+"completion works."
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:32
+msgid ""
+"IntelliJ Scala plugin uses its own lightweight compilation engine to detect "
+"errors, which is fast but sometimes incorrect. Per [compiler-based "
+"highlighting](https://blog.jetbrains.com/scala/2021/07/27/intellij-scala-"
+"plugin-2021-2/#Compiler-based_highlighting), IntelliJ can be configured to "
+"use the Scala compiler for error highlighting."
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:34
+msgid "Interactive debugging with IntelliJ IDEA"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:36
+msgid ""
+"IntelliJ supports interactive debugging by setting break points in the code:"
+"
![IntelliJ](../files/intellij4.png)"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:38
+msgid ""
+"Interactive debugging can be started by right-clicking on an unit test, and "
+"selecting \"Debug '\\'.\" Alternatively, you can click the "
+"green \"run\" icon on the left part of the editor near the unit test. When "
+"the test hits a break point, you can inspect the values of the variables:"
+"
![IntelliJ](../files/intellij5.png)"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:42
+msgid ""
+"See [Debug Code](https://www.jetbrains.com/help/idea/debugging-code.html) "
+"page on IntelliJ documentation for more details on how to navigate an "
+"interactive debugging session."
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:44
+msgid "Alternative"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:47
+msgid "Using sbt as IntelliJ IDEA build server (advanced)"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:49
+msgid ""
+"Importing the build to IntelliJ means that you're effectively using IntelliJ "
+"as the build tool and the compiler while you code (see also [compiler-based "
+"highlighting](https://blog.jetbrains.com/scala/2021/07/27/intellij-scala-"
+"plugin-2021-2/#Compiler-based_highlighting)). While many users are happy "
+"with the experience, depending on the code base some of the compilation "
+"errors may be false, it may not work well with plugins that generate "
+"sources, and generally you might want to code with the identical build "
+"semantics as sbt. Thankfully, modern IntelliJ supports alternative _build "
+"servers_ including sbt via the [Build Server Protocol](https://build-server-"
+"protocol.github.io/) (BSP)."
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:53
+msgid ""
+"The benefit of using BSP with IntelliJ is that you're using sbt to do the "
+"actual build work, so if you are the kind of programmer who had sbt session "
+"up on the side, this avoids double compilation."
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:88
+msgid "To use sbt as build server on IntelliJ:"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:90
+msgid "Install Scala plugin on the Plugins tab."
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:91
+msgid ""
+"To use the BSP approach, do not use Open button on the Project tab:
!"
+"[IntelliJ](../files/intellij7.png)"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:93
+msgid ""
+"From menubar, click New > \"Project From Existing Sources\", or Find Action "
+"(`Cmd-Shift-P` on macOS) and type \"Existing\" to find \"Import Project From "
+"Existing Sources\":
![IntelliJ](../files/intellij8.png)"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:96
+msgid ""
+"Open a `build.sbt` file. Select **BSP** when prompted:
![IntelliJ](../"
+"files/intellij9.png)"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:98
+msgid ""
+"Select **sbt (recommended)** as the tool to import the BSP workspace:
!"
+"[IntelliJ](../files/intellij10.png)"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:100
+msgid ""
+"Once the import process is complete, open a Scala file to see that code "
+"completion works:
![IntelliJ](../files/intellij11.png)"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:103
+msgid "Use the following setting to opt-out some of the subprojects from BSP."
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:109
+msgid ""
+"Open Preferences, search BSP and check \"build automatically on file save\", "
+"and uncheck \"export sbt projects to Bloop before import\":
![IntelliJ]"
+"(../files/intellij12.png)"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:112
+msgid ""
+"When you make changes to the code and save them (`Cmd-S` on macOS), IntelliJ "
+"will invoke sbt to do the actual building work."
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:115
+msgid ""
+"See also Igal Tabachnik's [Using BSP effectively in IntelliJ and Scala]"
+"(https://hmemcpy.com/2021/09/bsp-and-intellij/) for more details."
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:117
+msgid "Logging into sbt session"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:119
+msgid "We can also log into the existing sbt session using the thin client."
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:121
+msgid ""
+"From Terminal section, type in `sbt --client` ![IntelliJ](../files/intellij6."
+"png)"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:124
+msgid ""
+"This lets you log into the sbt session IntelliJ has started. In there you "
+"can call `testOnly` and other tasks with the code already compiled."
+msgstr ""
diff --git a/po/summary/recipes/import-to-intellij-idea.zh-cn.po b/po/summary/recipes/import-to-intellij-idea.zh-cn.po
new file mode 100644
index 00000000..b310f9ea
--- /dev/null
+++ b/po/summary/recipes/import-to-intellij-idea.zh-cn.po
@@ -0,0 +1,204 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/recipes/import-to-intellij.md:1
+msgid "Import to IntelliJ IDEA"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:14
+msgid "Objective"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:17
+msgid "I want to import sbt build to IntelliJ IDEA."
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:19
+msgid "Steps"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:22
+msgid ""
+"[IntelliJ IDEA](https://www.jetbrains.com/idea/) is an IDE created by "
+"JetBrains, and the Community Edition is open source under Apache v2 license. "
+"IntelliJ integrates with many build tools, including sbt, to import the "
+"project."
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:24
+msgid "To import a build to IntelliJ IDEA:"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:26
+msgid ""
+"Install Scala plugin on the Plugins tab:
![IntelliJ](../files/intellij1."
+"png)"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:28
+msgid ""
+"From Projects, open a directory containing a `build.sbt` file.
!"
+"[IntelliJ](../files/intellij2.png)"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:30
+msgid ""
+"Once the import process is complete, open a Scala file to see that code "
+"completion works."
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:32
+msgid ""
+"IntelliJ Scala plugin uses its own lightweight compilation engine to detect "
+"errors, which is fast but sometimes incorrect. Per [compiler-based "
+"highlighting](https://blog.jetbrains.com/scala/2021/07/27/intellij-scala-"
+"plugin-2021-2/#Compiler-based_highlighting), IntelliJ can be configured to "
+"use the Scala compiler for error highlighting."
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:34
+msgid "Interactive debugging with IntelliJ IDEA"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:36
+msgid ""
+"IntelliJ supports interactive debugging by setting break points in the code:"
+"
![IntelliJ](../files/intellij4.png)"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:38
+msgid ""
+"Interactive debugging can be started by right-clicking on an unit test, and "
+"selecting \"Debug '\\'.\" Alternatively, you can click the "
+"green \"run\" icon on the left part of the editor near the unit test. When "
+"the test hits a break point, you can inspect the values of the variables:"
+"
![IntelliJ](../files/intellij5.png)"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:42
+msgid ""
+"See [Debug Code](https://www.jetbrains.com/help/idea/debugging-code.html) "
+"page on IntelliJ documentation for more details on how to navigate an "
+"interactive debugging session."
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:44
+msgid "Alternative"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:47
+msgid "Using sbt as IntelliJ IDEA build server (advanced)"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:49
+msgid ""
+"Importing the build to IntelliJ means that you're effectively using IntelliJ "
+"as the build tool and the compiler while you code (see also [compiler-based "
+"highlighting](https://blog.jetbrains.com/scala/2021/07/27/intellij-scala-"
+"plugin-2021-2/#Compiler-based_highlighting)). While many users are happy "
+"with the experience, depending on the code base some of the compilation "
+"errors may be false, it may not work well with plugins that generate "
+"sources, and generally you might want to code with the identical build "
+"semantics as sbt. Thankfully, modern IntelliJ supports alternative _build "
+"servers_ including sbt via the [Build Server Protocol](https://build-server-"
+"protocol.github.io/) (BSP)."
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:53
+msgid ""
+"The benefit of using BSP with IntelliJ is that you're using sbt to do the "
+"actual build work, so if you are the kind of programmer who had sbt session "
+"up on the side, this avoids double compilation."
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:88
+msgid "To use sbt as build server on IntelliJ:"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:90
+msgid "Install Scala plugin on the Plugins tab."
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:91
+msgid ""
+"To use the BSP approach, do not use Open button on the Project tab:
!"
+"[IntelliJ](../files/intellij7.png)"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:93
+msgid ""
+"From menubar, click New > \"Project From Existing Sources\", or Find Action "
+"(`Cmd-Shift-P` on macOS) and type \"Existing\" to find \"Import Project From "
+"Existing Sources\":
![IntelliJ](../files/intellij8.png)"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:96
+msgid ""
+"Open a `build.sbt` file. Select **BSP** when prompted:
![IntelliJ](../"
+"files/intellij9.png)"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:98
+msgid ""
+"Select **sbt (recommended)** as the tool to import the BSP workspace:
!"
+"[IntelliJ](../files/intellij10.png)"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:100
+msgid ""
+"Once the import process is complete, open a Scala file to see that code "
+"completion works:
![IntelliJ](../files/intellij11.png)"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:103
+msgid "Use the following setting to opt-out some of the subprojects from BSP."
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:109
+msgid ""
+"Open Preferences, search BSP and check \"build automatically on file save\", "
+"and uncheck \"export sbt projects to Bloop before import\":
![IntelliJ]"
+"(../files/intellij12.png)"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:112
+msgid ""
+"When you make changes to the code and save them (`Cmd-S` on macOS), IntelliJ "
+"will invoke sbt to do the actual building work."
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:115
+msgid ""
+"See also Igal Tabachnik's [Using BSP effectively in IntelliJ and Scala]"
+"(https://hmemcpy.com/2021/09/bsp-and-intellij/) for more details."
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:117
+msgid "Logging into sbt session"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:119
+msgid "We can also log into the existing sbt session using the thin client."
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:121
+msgid ""
+"From Terminal section, type in `sbt --client` ![IntelliJ](../files/intellij6."
+"png)"
+msgstr ""
+
+#: src/reference/recipes/import-to-intellij.md:124
+msgid ""
+"This lets you log into the sbt session IntelliJ has started. In there you "
+"can call `testOnly` and other tasks with the code already compiled."
+msgstr ""
diff --git a/po/summary/recipes/use-neovim.ja.po b/po/summary/recipes/use-neovim.ja.po
new file mode 100644
index 00000000..5c26c1be
--- /dev/null
+++ b/po/summary/recipes/use-neovim.ja.po
@@ -0,0 +1,184 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:08:34-04:00\n"
+"PO-Revision-Date: 2024-10-30T01:14:09-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/recipes/use-neovim.md:1
+msgid "Use Neovim"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:13
+msgid "Objective"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:16
+msgid "I want to use Metals on Neovim with sbt as the build server."
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:18
+msgid "Steps"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:21
+msgid ""
+"Chris Kipp, who is a maintainer of Metals, created [nvim-metals](https://"
+"github.com/scalameta/nvim-metals) plugin that provides comprehensive Metals "
+"support on Neovim. To install nvim-metals, create `lsp.lua` under "
+"`$XDG_CONFIG_HOME/nvim/lua/` based on Chris's [lsp.lua](https://github.com/"
+"scalameta/nvim-metals/discussions/39#discussion-82302) and adjust to your "
+"preference. For example, comment out its plugins section and load the listed "
+"plugins using the plugin manager of your choice such as vim-plug."
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:23
+msgid "In `init.vim`, the file can be loaded as:"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:27
+msgid "'lsp'"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:31
+msgid ""
+"Per `lsp.lua`, `g:metals_status` should be displayed on the status line, "
+"which can be done using lualine.nvim etc."
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:33
+msgid "Next, open a Scala file in an sbt build using Neovim."
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:34
+msgid "Run `:MetalsInstall` when prompted."
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:35
+msgid "Run `:MetalsStartServer`."
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:36
+msgid ""
+"If the status line is set up, you should see something like \"Connecting to "
+"sbt\" or \"Indexing.\"
"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:38
+msgid ""
+"Code completion works when you're in Insert mode, and you can tab through "
+"the candidates:
"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:41
+msgid ""
+"A build is triggered upon saving changes, and compilation errors are "
+"displayed inline:
"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:44
+msgid "Go to definition"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:46
+msgid ""
+"You can jump to definition of the symbol under cursor by using `gD` (exact "
+"keybinding can be customized):
"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:48
+msgid "Use `Ctrl-O` to return to the old buffer."
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:50
+msgid "Hover"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:52
+msgid ""
+"To display the type information of the symbol under cursor, like hovering, "
+"use `K` in Normal mode:
"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:55
+msgid "Listing diagnostics"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:57
+msgid ""
+"To list all compilation errors and warnings, use `aa`:
"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:59
+msgid ""
+"Since this is in the standard quickfix list, you can use the command such as "
+"`:cnext` and `:cprev` to nagivate through the errors and warnings."
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:60
+msgid "To list just the errors, use `ae`."
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:62
+msgid "Interactive debugging with Neovim"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:64
+msgid ""
+"Thanks to nvim-dap, Neovim supports interactive debugging. Set break points "
+"in the code using `dt`:
"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:66
+msgid ""
+"Nagivate to a unit test, confirm that it's built by hovering (`K`), and then "
+"\"debug continue\" (`dc`) to start a debugger. Choose \"1: "
+"RunOrTest\" when prompted."
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:69
+msgid ""
+"When the test hits a break point, you can inspect the values of the "
+"variables by debug hovering (`dK`):
"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:71
+msgid "\"debug continue\" (`dc`) again to end the session."
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:73
+msgid ""
+"See [nvim-metals](https://github.com/scalameta/nvim-metals) regarding "
+"further details."
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:75
+msgid "Logging into sbt session"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:77
+msgid "We can also log into the existing sbt session using the thin client."
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:79
+msgid "In a new vim window type `:terminal` to start the built-in terminal."
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:80
+msgid ""
+"Type in `sbt --client`
"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:83
+msgid "Even though it's inside Neovim, tab completion etc works fine inside."
+msgstr ""
diff --git a/po/summary/recipes/use-neovim.zh-cn.po b/po/summary/recipes/use-neovim.zh-cn.po
new file mode 100644
index 00000000..8224bb32
--- /dev/null
+++ b/po/summary/recipes/use-neovim.zh-cn.po
@@ -0,0 +1,184 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/recipes/use-neovim.md:1
+msgid "Use Neovim"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:13
+msgid "Objective"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:16
+msgid "I want to use Metals on Neovim with sbt as the build server."
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:18
+msgid "Steps"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:21
+msgid ""
+"Chris Kipp, who is a maintainer of Metals, created [nvim-metals](https://"
+"github.com/scalameta/nvim-metals) plugin that provides comprehensive Metals "
+"support on Neovim. To install nvim-metals, create `lsp.lua` under "
+"`$XDG_CONFIG_HOME/nvim/lua/` based on Chris's [lsp.lua](https://github.com/"
+"scalameta/nvim-metals/discussions/39#discussion-82302) and adjust to your "
+"preference. For example, comment out its plugins section and load the listed "
+"plugins using the plugin manager of your choice such as vim-plug."
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:23
+msgid "In `init.vim`, the file can be loaded as:"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:27
+msgid "'lsp'"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:31
+msgid ""
+"Per `lsp.lua`, `g:metals_status` should be displayed on the status line, "
+"which can be done using lualine.nvim etc."
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:33
+msgid "Next, open a Scala file in an sbt build using Neovim."
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:34
+msgid "Run `:MetalsInstall` when prompted."
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:35
+msgid "Run `:MetalsStartServer`."
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:36
+msgid ""
+"If the status line is set up, you should see something like \"Connecting to "
+"sbt\" or \"Indexing.\"
"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:38
+msgid ""
+"Code completion works when you're in Insert mode, and you can tab through "
+"the candidates:
"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:41
+msgid ""
+"A build is triggered upon saving changes, and compilation errors are "
+"displayed inline:
"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:44
+msgid "Go to definition"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:46
+msgid ""
+"You can jump to definition of the symbol under cursor by using `gD` (exact "
+"keybinding can be customized):
"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:48
+msgid "Use `Ctrl-O` to return to the old buffer."
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:50
+msgid "Hover"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:52
+msgid ""
+"To display the type information of the symbol under cursor, like hovering, "
+"use `K` in Normal mode:
"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:55
+msgid "Listing diagnostics"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:57
+msgid ""
+"To list all compilation errors and warnings, use `aa`:
"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:59
+msgid ""
+"Since this is in the standard quickfix list, you can use the command such as "
+"`:cnext` and `:cprev` to nagivate through the errors and warnings."
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:60
+msgid "To list just the errors, use `ae`."
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:62
+msgid "Interactive debugging with Neovim"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:64
+msgid ""
+"Thanks to nvim-dap, Neovim supports interactive debugging. Set break points "
+"in the code using `dt`:
"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:66
+msgid ""
+"Nagivate to a unit test, confirm that it's built by hovering (`K`), and then "
+"\"debug continue\" (`dc`) to start a debugger. Choose \"1: "
+"RunOrTest\" when prompted."
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:69
+msgid ""
+"When the test hits a break point, you can inspect the values of the "
+"variables by debug hovering (`dK`):
"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:71
+msgid "\"debug continue\" (`dc`) again to end the session."
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:73
+msgid ""
+"See [nvim-metals](https://github.com/scalameta/nvim-metals) regarding "
+"further details."
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:75
+msgid "Logging into sbt session"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:77
+msgid "We can also log into the existing sbt session using the thin client."
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:79
+msgid "In a new vim window type `:terminal` to start the built-in terminal."
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:80
+msgid ""
+"Type in `sbt --client`
"
+msgstr ""
+
+#: src/reference/recipes/use-neovim.md:83
+msgid "Even though it's inside Neovim, tab completion etc works fine inside."
+msgstr ""
diff --git a/po/summary/recipes/use-sbt-as-metals-build-server.ja.po b/po/summary/recipes/use-sbt-as-metals-build-server.ja.po
new file mode 100644
index 00000000..ea519bf4
--- /dev/null
+++ b/po/summary/recipes/use-sbt-as-metals-build-server.ja.po
@@ -0,0 +1,111 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:08:34-04:00\n"
+"PO-Revision-Date: 2024-10-30T01:14:09-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:1
+msgid "Use sbt as Metals build server"
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:13
+msgid "Objective"
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:16
+msgid ""
+"I want to use [Metals](https://scalameta.org/metals/) on VS Code with sbt as "
+"the build server."
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:18
+msgid "Steps"
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:21
+msgid "To use Metals on VS Code:"
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:23
+msgid "Install Metals from Extensions tab:
![Metals](../files/metals0.png)"
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:25
+msgid "Open a directory containing a `build.sbt` file."
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:26
+msgid ""
+"From the menubar, run View > Command Palette... (`Cmd-Shift-P` on macOS) "
+"\"Metals: Switch build server\", and select \"sbt\"
![Metals](../files/"
+"metals2.png)"
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:28
+msgid ""
+"Once the import process is complete, open a Scala file to see that code "
+"completion works:
![Metals](../files/metals3.png)"
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:31
+msgid "Use the following setting to opt-out some of the subprojects from BSP."
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:37
+msgid ""
+"When you make changes to the code and save them (`Cmd-S` on macOS), Metals "
+"will invoke sbt to do the actual building work."
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:40
+msgid "Interactive debugging on VS Code"
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:42
+msgid ""
+"Metals supports interactive debugging by setting break points in the code:"
+"
![Metals](../files/metals4.png)"
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:44
+msgid ""
+"Interactive debugging can be started by right-clicking on an unit test, and "
+"selecting \"Debug Test.\" When the test hits a break point, you can inspect "
+"the values of the variables:
![Metals](../files/metals5.png)"
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:48
+msgid ""
+"See [Debugging](https://code.visualstudio.com/docs/editor/debugging) page on "
+"VS Code documentation for more details on how to navigate an interactive "
+"debugging session."
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:50
+msgid "Logging into sbt session"
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:52
+msgid ""
+"While Metals uses sbt as the build server, we can also log into the same sbt "
+"session using a thin client."
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:54
+msgid ""
+"From Terminal section, type in `sbt --client`
![Metals](../files/metals6."
+"png)"
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:57
+msgid ""
+"This lets you log into the sbt session Metals has started. In there you can "
+"call `testOnly` and other tasks with the code already compiled."
+msgstr ""
diff --git a/po/summary/recipes/use-sbt-as-metals-build-server.zh-cn.po b/po/summary/recipes/use-sbt-as-metals-build-server.zh-cn.po
new file mode 100644
index 00000000..7779432e
--- /dev/null
+++ b/po/summary/recipes/use-sbt-as-metals-build-server.zh-cn.po
@@ -0,0 +1,111 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:1
+msgid "Use sbt as Metals build server"
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:13
+msgid "Objective"
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:16
+msgid ""
+"I want to use [Metals](https://scalameta.org/metals/) on VS Code with sbt as "
+"the build server."
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:18
+msgid "Steps"
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:21
+msgid "To use Metals on VS Code:"
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:23
+msgid "Install Metals from Extensions tab:
![Metals](../files/metals0.png)"
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:25
+msgid "Open a directory containing a `build.sbt` file."
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:26
+msgid ""
+"From the menubar, run View > Command Palette... (`Cmd-Shift-P` on macOS) "
+"\"Metals: Switch build server\", and select \"sbt\"
![Metals](../files/"
+"metals2.png)"
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:28
+msgid ""
+"Once the import process is complete, open a Scala file to see that code "
+"completion works:
![Metals](../files/metals3.png)"
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:31
+msgid "Use the following setting to opt-out some of the subprojects from BSP."
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:37
+msgid ""
+"When you make changes to the code and save them (`Cmd-S` on macOS), Metals "
+"will invoke sbt to do the actual building work."
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:40
+msgid "Interactive debugging on VS Code"
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:42
+msgid ""
+"Metals supports interactive debugging by setting break points in the code:"
+"
![Metals](../files/metals4.png)"
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:44
+msgid ""
+"Interactive debugging can be started by right-clicking on an unit test, and "
+"selecting \"Debug Test.\" When the test hits a break point, you can inspect "
+"the values of the variables:
![Metals](../files/metals5.png)"
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:48
+msgid ""
+"See [Debugging](https://code.visualstudio.com/docs/editor/debugging) page on "
+"VS Code documentation for more details on how to navigate an interactive "
+"debugging session."
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:50
+msgid "Logging into sbt session"
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:52
+msgid ""
+"While Metals uses sbt as the build server, we can also log into the same sbt "
+"session using a thin client."
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:54
+msgid ""
+"From Terminal section, type in `sbt --client`
![Metals](../files/metals6."
+"png)"
+msgstr ""
+
+#: src/reference/recipes/use-sbt-as-metals-build-server.md:57
+msgid ""
+"This lets you log into the sbt session Metals has started. In there you can "
+"call `testOnly` and other tasks with the code already compiled."
+msgstr ""
diff --git a/po/summary/recipes/write-hello-world.ja.po b/po/summary/recipes/write-hello-world.ja.po
new file mode 100644
index 00000000..475de7fd
--- /dev/null
+++ b/po/summary/recipes/write-hello-world.ja.po
@@ -0,0 +1,80 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:08:34-04:00\n"
+"PO-Revision-Date: 2024-10-30T01:14:09-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/recipes/hello-world.md:1
+msgid "How to write hello world"
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:4
+msgid "Objective"
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:7
+msgid "I want to write a hello world program in Scala, and run it."
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:9
+msgid "Steps"
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:12
+msgid "Create a fresh directory, like `hello_scala/`"
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:13
+msgid ""
+"Create a directory named `project/` under `hello_scala/`, and create "
+"`project/build.properties` with"
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:17
+msgid "Under `hello_scala/`, create `build.sbt`:"
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:19
+msgid "\"3.3.3\""
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:21
+msgid "Under `hello_scala/`, create `Hello.scala`:"
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:24
+msgid "s\"Hello ${"
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:24
+msgid "}\""
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:26
+msgid "Navigate to `hello_scala/` from the terminal, and run `sbt`:"
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:30
+msgid "When the prompt appears, type `run`:"
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:34
+msgid "Type `exit` to exit the sbt shell:"
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:39
+msgid "Alternatives"
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:42
+msgid ""
+"When you're in a hurry, you can run `sbt init` in a fresh directory, and "
+"select the first template."
+msgstr ""
diff --git a/po/summary/recipes/write-hello-world.zh-cn.po b/po/summary/recipes/write-hello-world.zh-cn.po
new file mode 100644
index 00000000..1cead3c5
--- /dev/null
+++ b/po/summary/recipes/write-hello-world.zh-cn.po
@@ -0,0 +1,80 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/recipes/hello-world.md:1
+msgid "How to write hello world"
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:4
+msgid "Objective"
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:7
+msgid "I want to write a hello world program in Scala, and run it."
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:9
+msgid "Steps"
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:12
+msgid "Create a fresh directory, like `hello_scala/`"
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:13
+msgid ""
+"Create a directory named `project/` under `hello_scala/`, and create "
+"`project/build.properties` with"
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:17
+msgid "Under `hello_scala/`, create `build.sbt`:"
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:19
+msgid "\"3.3.3\""
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:21
+msgid "Under `hello_scala/`, create `Hello.scala`:"
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:24
+msgid "s\"Hello ${"
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:24
+msgid "}\""
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:26
+msgid "Navigate to `hello_scala/` from the terminal, and run `sbt`:"
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:30
+msgid "When the prompt appears, type `run`:"
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:34
+msgid "Type `exit` to exit the sbt shell:"
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:39
+msgid "Alternatives"
+msgstr ""
+
+#: src/reference/recipes/hello-world.md:42
+msgid ""
+"When you're in a hurry, you can run `sbt init` in a fresh directory, and "
+"select the first template."
+msgstr ""
diff --git a/po/summary/reference.ja.po b/po/summary/reference.ja.po
new file mode 100644
index 00000000..0d5a44a0
--- /dev/null
+++ b/po/summary/reference.ja.po
@@ -0,0 +1,16 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:08:34-04:00\n"
+"PO-Revision-Date: 2024-10-30T01:14:09-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/reference/index.md:1
+msgid "Reference"
+msgstr ""
diff --git a/po/summary/reference.zh-cn.po b/po/summary/reference.zh-cn.po
new file mode 100644
index 00000000..052e4a46
--- /dev/null
+++ b/po/summary/reference.zh-cn.po
@@ -0,0 +1,16 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/reference/index.md:1
+msgid "Reference"
+msgstr ""
diff --git a/po/summary/reference/cross-building-setup.ja.po b/po/summary/reference/cross-building-setup.ja.po
new file mode 100644
index 00000000..c65e3584
--- /dev/null
+++ b/po/summary/reference/cross-building-setup.ja.po
@@ -0,0 +1,232 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:08:34-04:00\n"
+"PO-Revision-Date: 2024-10-30T01:14:09-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/reference/cross-building-setup.md:1
+msgid "Cross building setup"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:4
+msgid ""
+"This page covers cross building setup. See [Cross building](../concepts/"
+"cross-building.html) for general explanation."
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:6
+msgid "Using cross-built libraries"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:9
+msgid ""
+"To use a library built against multiple versions of Scala, double the first "
+"`%` in a ModuleID to be `%%`. This tells sbt that it should append the "
+"current version of Scala being used to build the library to the dependency’s "
+"name. For example:"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:12
+#: src/reference/reference/cross-building-setup.md:18
+msgid "\"org.typelevel\""
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:12
+msgid "\"cats-effect\""
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:12
+#: src/reference/reference/cross-building-setup.md:18
+msgid "\"3.5.4\""
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:15
+msgid ""
+"A nearly equivalent, manual alternative for a fixed version of Scala is:"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:18
+msgid "\"cats-effect_3\""
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:21
+msgid "Scala 3 specific cross-versions"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:23
+msgid ""
+"If you are developing an application in Scala 3, you can use Scala 2.13 "
+"libraries:"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:26
+#: src/reference/reference/cross-building-setup.md:34
+#: src/reference/reference/cross-building-setup.md:46
+#: src/reference/reference/cross-building-setup.md:47
+#: src/reference/reference/cross-building-setup.md:53
+#: src/reference/reference/cross-building-setup.md:54
+#: src/reference/reference/cross-building-setup.md:60
+#: src/reference/reference/cross-building-setup.md:66
+#: src/reference/reference/cross-building-setup.md:72
+#: src/reference/reference/cross-building-setup.md:78
+msgid "\"a\""
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:26
+#: src/reference/reference/cross-building-setup.md:34
+#: src/reference/reference/cross-building-setup.md:46
+#: src/reference/reference/cross-building-setup.md:47
+#: src/reference/reference/cross-building-setup.md:53
+#: src/reference/reference/cross-building-setup.md:54
+#: src/reference/reference/cross-building-setup.md:60
+#: src/reference/reference/cross-building-setup.md:66
+#: src/reference/reference/cross-building-setup.md:72
+msgid "\"b\""
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:26
+#: src/reference/reference/cross-building-setup.md:34
+#: src/reference/reference/cross-building-setup.md:46
+#: src/reference/reference/cross-building-setup.md:47
+#: src/reference/reference/cross-building-setup.md:53
+#: src/reference/reference/cross-building-setup.md:54
+#: src/reference/reference/cross-building-setup.md:60
+#: src/reference/reference/cross-building-setup.md:66
+#: src/reference/reference/cross-building-setup.md:72
+#: src/reference/reference/cross-building-setup.md:78
+msgid "\"1.0\""
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:29
+msgid ""
+"This is equivalent to using `%%` except it resolves the `_2.13` variant of "
+"the library when `scalaVersion` is 3.x.y."
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:31
+msgid ""
+"Conversely we have `CrossVersion.for2_13Use3` to use the `_3` variant of the "
+"library when `scalaVersion` is 2.13.x:"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:41
+msgid "More about using cross-built libraries"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:43
+msgid ""
+"You can have fine-grained control over the behavior for different Scala "
+"versions by using the `cross` method on `ModuleID` These are equivalent:"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:50
+msgid "These are equivalent:"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:57
+msgid ""
+"This overrides the defaults to always use the full Scala version instead of "
+"the binary Scala version:"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:63
+msgid ""
+"`CrossVersion.patch` sits between `CrossVersion.binary` and `CrossVersion."
+"full` in that it strips off any trailing `-bin-...` suffix which is used to "
+"distinguish variant but binary compatible Scala toolchain builds."
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:69
+msgid "`CrossVersion.constant` fixes a constant value:"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:72
+msgid "\"2.9.1\""
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:75
+msgid "It is equivalent to:"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:78
+msgid "\"b_2.9.1\""
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:81
+msgid "Project matrix"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:84
+msgid ""
+"sbt 2.x introduces project matrix, which enables cross building to happen in "
+"parallel."
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:87
+msgid "\"com.example\""
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:88
+#: src/reference/reference/cross-building-setup.md:95
+msgid "\"3.3.3\""
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:89
+msgid "\"0.1.0-SNAPSHOT\""
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:91
+#: src/reference/reference/cross-building-setup.md:93
+msgid "\"core\""
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:95
+msgid "\"2.13.15\""
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:98
+msgid "Publishing convention"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:101
+msgid ""
+"We use the Scala ABI (application binary interface) version as suffix to "
+"denote which version of Scala was used to compile a library. For example, "
+"the artifact name `cats-effect_2.13` means Scala 2.13.x was used. `cats-"
+"effect_3` means Scala 3.x was used. This fairly simple approach allows "
+"interoperability with users of Maven, Ant and other build tools. For pre-"
+"prelease versions of Scala, such as 2.13.0-RC1, full version will be "
+"considered the ABI version."
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:103
+msgid ""
+"`crossVersion` setting can be used to override the publishing convention:"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:105
+msgid "`CrossVersion.disabled` (no suffix)"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:106
+msgid "`CrossVersion.binary` (`_`)"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:107
+msgid "`CrossVersion.full` (`_`)"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:109
+msgid ""
+"The default is either `CrossVersion.binary` or `CrossVersion.disabled` "
+"depending on the value of `crossPaths`. Because (unlike Scala library) Scala "
+"compiler is not forward compatible among the patch releases, compiler "
+"plugins should use `CrossVersion.full`."
+msgstr ""
diff --git a/po/summary/reference/cross-building-setup.zh-cn.po b/po/summary/reference/cross-building-setup.zh-cn.po
new file mode 100644
index 00000000..c9f57444
--- /dev/null
+++ b/po/summary/reference/cross-building-setup.zh-cn.po
@@ -0,0 +1,232 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/reference/cross-building-setup.md:1
+msgid "Cross building setup"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:4
+msgid ""
+"This page covers cross building setup. See [Cross building](../concepts/"
+"cross-building.html) for general explanation."
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:6
+msgid "Using cross-built libraries"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:9
+msgid ""
+"To use a library built against multiple versions of Scala, double the first "
+"`%` in a ModuleID to be `%%`. This tells sbt that it should append the "
+"current version of Scala being used to build the library to the dependency’s "
+"name. For example:"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:12
+#: src/reference/reference/cross-building-setup.md:18
+msgid "\"org.typelevel\""
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:12
+msgid "\"cats-effect\""
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:12
+#: src/reference/reference/cross-building-setup.md:18
+msgid "\"3.5.4\""
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:15
+msgid ""
+"A nearly equivalent, manual alternative for a fixed version of Scala is:"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:18
+msgid "\"cats-effect_3\""
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:21
+msgid "Scala 3 specific cross-versions"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:23
+msgid ""
+"If you are developing an application in Scala 3, you can use Scala 2.13 "
+"libraries:"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:26
+#: src/reference/reference/cross-building-setup.md:34
+#: src/reference/reference/cross-building-setup.md:46
+#: src/reference/reference/cross-building-setup.md:47
+#: src/reference/reference/cross-building-setup.md:53
+#: src/reference/reference/cross-building-setup.md:54
+#: src/reference/reference/cross-building-setup.md:60
+#: src/reference/reference/cross-building-setup.md:66
+#: src/reference/reference/cross-building-setup.md:72
+#: src/reference/reference/cross-building-setup.md:78
+msgid "\"a\""
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:26
+#: src/reference/reference/cross-building-setup.md:34
+#: src/reference/reference/cross-building-setup.md:46
+#: src/reference/reference/cross-building-setup.md:47
+#: src/reference/reference/cross-building-setup.md:53
+#: src/reference/reference/cross-building-setup.md:54
+#: src/reference/reference/cross-building-setup.md:60
+#: src/reference/reference/cross-building-setup.md:66
+#: src/reference/reference/cross-building-setup.md:72
+msgid "\"b\""
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:26
+#: src/reference/reference/cross-building-setup.md:34
+#: src/reference/reference/cross-building-setup.md:46
+#: src/reference/reference/cross-building-setup.md:47
+#: src/reference/reference/cross-building-setup.md:53
+#: src/reference/reference/cross-building-setup.md:54
+#: src/reference/reference/cross-building-setup.md:60
+#: src/reference/reference/cross-building-setup.md:66
+#: src/reference/reference/cross-building-setup.md:72
+#: src/reference/reference/cross-building-setup.md:78
+msgid "\"1.0\""
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:29
+msgid ""
+"This is equivalent to using `%%` except it resolves the `_2.13` variant of "
+"the library when `scalaVersion` is 3.x.y."
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:31
+msgid ""
+"Conversely we have `CrossVersion.for2_13Use3` to use the `_3` variant of the "
+"library when `scalaVersion` is 2.13.x:"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:41
+msgid "More about using cross-built libraries"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:43
+msgid ""
+"You can have fine-grained control over the behavior for different Scala "
+"versions by using the `cross` method on `ModuleID` These are equivalent:"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:50
+msgid "These are equivalent:"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:57
+msgid ""
+"This overrides the defaults to always use the full Scala version instead of "
+"the binary Scala version:"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:63
+msgid ""
+"`CrossVersion.patch` sits between `CrossVersion.binary` and `CrossVersion."
+"full` in that it strips off any trailing `-bin-...` suffix which is used to "
+"distinguish variant but binary compatible Scala toolchain builds."
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:69
+msgid "`CrossVersion.constant` fixes a constant value:"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:72
+msgid "\"2.9.1\""
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:75
+msgid "It is equivalent to:"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:78
+msgid "\"b_2.9.1\""
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:81
+msgid "Project matrix"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:84
+msgid ""
+"sbt 2.x introduces project matrix, which enables cross building to happen in "
+"parallel."
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:87
+msgid "\"com.example\""
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:88
+#: src/reference/reference/cross-building-setup.md:95
+msgid "\"3.3.3\""
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:89
+msgid "\"0.1.0-SNAPSHOT\""
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:91
+#: src/reference/reference/cross-building-setup.md:93
+msgid "\"core\""
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:95
+msgid "\"2.13.15\""
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:98
+msgid "Publishing convention"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:101
+msgid ""
+"We use the Scala ABI (application binary interface) version as suffix to "
+"denote which version of Scala was used to compile a library. For example, "
+"the artifact name `cats-effect_2.13` means Scala 2.13.x was used. `cats-"
+"effect_3` means Scala 3.x was used. This fairly simple approach allows "
+"interoperability with users of Maven, Ant and other build tools. For pre-"
+"prelease versions of Scala, such as 2.13.0-RC1, full version will be "
+"considered the ABI version."
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:103
+msgid ""
+"`crossVersion` setting can be used to override the publishing convention:"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:105
+msgid "`CrossVersion.disabled` (no suffix)"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:106
+msgid "`CrossVersion.binary` (`_`)"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:107
+msgid "`CrossVersion.full` (`_`)"
+msgstr ""
+
+#: src/reference/reference/cross-building-setup.md:109
+msgid ""
+"The default is either `CrossVersion.binary` or `CrossVersion.disabled` "
+"depending on the value of `crossPaths`. Because (unlike Scala library) Scala "
+"compiler is not forward compatible among the patch releases, compiler "
+"plugins should use `CrossVersion.full`."
+msgstr ""
diff --git a/po/summary/reference/remote-cache-setup.ja.po b/po/summary/reference/remote-cache-setup.ja.po
new file mode 100644
index 00000000..3f01117d
--- /dev/null
+++ b/po/summary/reference/remote-cache-setup.ja.po
@@ -0,0 +1,231 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:08:34-04:00\n"
+"PO-Revision-Date: 2024-10-30T01:14:09-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/reference/remote-cache-setup.md:1
+msgid "Remote cache setup"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:4
+msgid ""
+"This page covers remote caching setup. See [Caching](../concepts/caching."
+"html) for general explanation of the caching system."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:6
+msgid "gRPC remote cache"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:9
+msgid ""
+"While there might be multiple remote cache store implemention in the future, "
+"sbt 2.0 ships with a gRPC client that is compatible with the Bazel remote "
+"cache backends. To configure sbt 2.x, add the following to `project/plugins."
+"sbt`"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:15
+msgid ""
+"There are many Bazel remote cache backends, both open source and commercial "
+"solutions. While this page documents is not an exhaustive list of all Bazel "
+"remote cache implementations, hopefully it shows how sbt 2.x can be set up "
+"for wide array of them."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:17
+msgid "Authentication"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:19
+msgid ""
+"There are a few flavors of [gRPC authentication](https://grpc.io/docs/guides/"
+"auth/), and Bazel remote cache backends use various kind of them:"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:21
+msgid "Unauthenticated. Useful for testing."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:22
+msgid "Default TLS/SSL."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:23
+msgid "TLS/SSL with custom server certificate."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:24
+msgid "TTL/SSL with custom server and client certificate, mTLS."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:25
+msgid "Default TLS/SSL with API token header."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:27
+msgid "bazel-remote without authentication"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:29
+msgid ""
+"You can grab the code from [buchgr/bazel-remote](https://github.com/buchgr/"
+"bazel-remote) and run it on a laptop using Bazel:"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:37
+msgid "To configure sbt 2.x, add the following to `project/plugins.sbt`"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:43
+msgid "and append the following to `build.sbt`:"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:46
+msgid "\"grpc://localhost:2024\""
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:49
+msgid "bazel-remote with mTLS"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:51
+msgid ""
+"In a real environment, mTLS can ensure that the transport is encrypted and "
+"mutually authenticated. bazel-remote can be started with something like the "
+"follows:"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:62
+msgid "sbt 2.x setting would look like this in this scenario:"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:65
+msgid "\"grpcs://localhost:2024\""
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:66
+msgid "\"/tmp/sslcert/ca.crt\""
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:67
+msgid "\"/tmp/sslcert/client.crt\""
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:68
+msgid "\"/tmp/sslcert/client.pem\""
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:71
+msgid "Note the `grpcs://`, as opposed to `grpc://`."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:73
+msgid "EngFlow"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:75
+msgid ""
+"[EngFlow GmbH](https://www.engflow.com/) is a build solution company founded "
+"in 2020 by core members of Bazel team, providing build analytics and remote "
+"execution backend for Bazel, which includes remote cache."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:77
+msgid ""
+"After signing up for trial on , the page instructs "
+"you to start a trial cluster using a docker. If you followed the "
+"instruction, this should start a remote cache service on port 8080. The sbt "
+"2.x configuration would look like this for the trial cluster:"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:80
+msgid "\"grpc://localhost:8080\""
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:83
+msgid "BuildBuddy"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:85
+msgid ""
+"[BuildBuddy](https://www.buildbuddy.io/) is a build solution company founded "
+"by ex-Google engineers, providing build analytics and remote execution "
+"backend for Bazel. It's also available open source as [buildbuddy-io/"
+"buildbuddy](https://github.com/buildbuddy-io/buildbuddy)."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:87
+msgid ""
+"After signing up, BuildBuddy Personal plan lets you use BuildBuddy across "
+"the Internet."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:89
+msgid ""
+"From , go to Settings, and change the "
+"Organization URL to `.buildbuddy.io`."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:90
+msgid ""
+"Next, go to Quickstart and take note of the URLs and `--remote_headers`."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:91
+msgid ""
+"Create a file called `$HOME/.sbt/buildbuddy_credential.txt` and put in the "
+"API key:"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:97
+#: src/reference/reference/remote-cache-setup.md:115
+msgid "The sbt 2.x configuration would look like this:"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:100
+msgid "\"grpcs://something.buildbuddy.io\""
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:101
+msgid "\"buildbuddy_credential.txt\""
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:104
+msgid "NativeLink"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:106
+msgid ""
+"[NativeLink](https://docs.nativelink.dev/) is an open-source Bazel remote "
+"execution backend implementated in Rust with emphasis on performance. As of "
+"June 2024, there's NativeLink Cloud in beta."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:108
+msgid ""
+"From , go to Quickstart and take note of the "
+"URLs and `--remote_header`."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:109
+msgid ""
+"Create a file called `$HOME/.sbt/nativelink_credential.txt` and put in the "
+"API key:"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:118
+msgid "\"grpcs://something.build-faster.nativelink.net\""
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:119
+msgid "\"nativelink_credential.txt\""
+msgstr ""
diff --git a/po/summary/reference/remote-cache-setup.zh-cn.po b/po/summary/reference/remote-cache-setup.zh-cn.po
new file mode 100644
index 00000000..4c1ca186
--- /dev/null
+++ b/po/summary/reference/remote-cache-setup.zh-cn.po
@@ -0,0 +1,231 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/reference/remote-cache-setup.md:1
+msgid "Remote cache setup"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:4
+msgid ""
+"This page covers remote caching setup. See [Caching](../concepts/caching."
+"html) for general explanation of the caching system."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:6
+msgid "gRPC remote cache"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:9
+msgid ""
+"While there might be multiple remote cache store implemention in the future, "
+"sbt 2.0 ships with a gRPC client that is compatible with the Bazel remote "
+"cache backends. To configure sbt 2.x, add the following to `project/plugins."
+"sbt`"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:15
+msgid ""
+"There are many Bazel remote cache backends, both open source and commercial "
+"solutions. While this page documents is not an exhaustive list of all Bazel "
+"remote cache implementations, hopefully it shows how sbt 2.x can be set up "
+"for wide array of them."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:17
+msgid "Authentication"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:19
+msgid ""
+"There are a few flavors of [gRPC authentication](https://grpc.io/docs/guides/"
+"auth/), and Bazel remote cache backends use various kind of them:"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:21
+msgid "Unauthenticated. Useful for testing."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:22
+msgid "Default TLS/SSL."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:23
+msgid "TLS/SSL with custom server certificate."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:24
+msgid "TTL/SSL with custom server and client certificate, mTLS."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:25
+msgid "Default TLS/SSL with API token header."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:27
+msgid "bazel-remote without authentication"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:29
+msgid ""
+"You can grab the code from [buchgr/bazel-remote](https://github.com/buchgr/"
+"bazel-remote) and run it on a laptop using Bazel:"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:37
+msgid "To configure sbt 2.x, add the following to `project/plugins.sbt`"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:43
+msgid "and append the following to `build.sbt`:"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:46
+msgid "\"grpc://localhost:2024\""
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:49
+msgid "bazel-remote with mTLS"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:51
+msgid ""
+"In a real environment, mTLS can ensure that the transport is encrypted and "
+"mutually authenticated. bazel-remote can be started with something like the "
+"follows:"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:62
+msgid "sbt 2.x setting would look like this in this scenario:"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:65
+msgid "\"grpcs://localhost:2024\""
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:66
+msgid "\"/tmp/sslcert/ca.crt\""
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:67
+msgid "\"/tmp/sslcert/client.crt\""
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:68
+msgid "\"/tmp/sslcert/client.pem\""
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:71
+msgid "Note the `grpcs://`, as opposed to `grpc://`."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:73
+msgid "EngFlow"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:75
+msgid ""
+"[EngFlow GmbH](https://www.engflow.com/) is a build solution company founded "
+"in 2020 by core members of Bazel team, providing build analytics and remote "
+"execution backend for Bazel, which includes remote cache."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:77
+msgid ""
+"After signing up for trial on , the page instructs "
+"you to start a trial cluster using a docker. If you followed the "
+"instruction, this should start a remote cache service on port 8080. The sbt "
+"2.x configuration would look like this for the trial cluster:"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:80
+msgid "\"grpc://localhost:8080\""
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:83
+msgid "BuildBuddy"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:85
+msgid ""
+"[BuildBuddy](https://www.buildbuddy.io/) is a build solution company founded "
+"by ex-Google engineers, providing build analytics and remote execution "
+"backend for Bazel. It's also available open source as [buildbuddy-io/"
+"buildbuddy](https://github.com/buildbuddy-io/buildbuddy)."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:87
+msgid ""
+"After signing up, BuildBuddy Personal plan lets you use BuildBuddy across "
+"the Internet."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:89
+msgid ""
+"From , go to Settings, and change the "
+"Organization URL to `.buildbuddy.io`."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:90
+msgid ""
+"Next, go to Quickstart and take note of the URLs and `--remote_headers`."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:91
+msgid ""
+"Create a file called `$HOME/.sbt/buildbuddy_credential.txt` and put in the "
+"API key:"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:97
+#: src/reference/reference/remote-cache-setup.md:115
+msgid "The sbt 2.x configuration would look like this:"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:100
+msgid "\"grpcs://something.buildbuddy.io\""
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:101
+msgid "\"buildbuddy_credential.txt\""
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:104
+msgid "NativeLink"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:106
+msgid ""
+"[NativeLink](https://docs.nativelink.dev/) is an open-source Bazel remote "
+"execution backend implementated in Rust with emphasis on performance. As of "
+"June 2024, there's NativeLink Cloud in beta."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:108
+msgid ""
+"From , go to Quickstart and take note of the "
+"URLs and `--remote_header`."
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:109
+msgid ""
+"Create a file called `$HOME/.sbt/nativelink_credential.txt` and put in the "
+"API key:"
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:118
+msgid "\"grpcs://something.build-faster.nativelink.net\""
+msgstr ""
+
+#: src/reference/reference/remote-cache-setup.md:119
+msgid "\"nativelink_credential.txt\""
+msgstr ""
diff --git a/po/summary/reference/sbt-update.ja.po b/po/summary/reference/sbt-update.ja.po
new file mode 100644
index 00000000..08e61447
--- /dev/null
+++ b/po/summary/reference/sbt-update.ja.po
@@ -0,0 +1,494 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:08:34-04:00\n"
+"PO-Revision-Date: 2024-10-30T01:14:09-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/reference/sbt-update.md:14
+msgid "sbt update"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:17
+msgid ""
+"See [library depdency basics](../guide/library-dependency-basics.md) in the "
+"Getting Started guide to learn about the basics."
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:19
+msgid "Synopsis"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:22
+msgid "`sbt --client update`"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:24
+msgid "Description"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:27
+msgid ""
+"sbt uses [Coursier](https://get-coursier.io/) to implement library "
+"management, also known as a package manager in other ecosystems. The general "
+"idea of library management is that you can specify external libraries you "
+"would like to use in your subprojects, and the library management system "
+"would:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:31
+msgid "Check if such versions exists in the listed repositories"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:32
+msgid ""
+"Look for the transitive dependencies (i.e. the libraries used by the "
+"libraries)"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:33
+msgid "Attempt to resolve version conflicts, if any"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:34
+msgid "Download the artifacts, such as JAR files, from the repositories"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:36
+msgid "Dependencies"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:38
+msgid "Declaring a dependency looks like:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:44
+msgid "or"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:55
+msgid "Also, several dependencies can be declared together:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:64
+msgid ""
+"If you are using a dependency that was built with sbt, double the first `%` "
+"to be `%%`:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:71
+msgid ""
+"This will use the right JAR for the dependency built with the version of "
+"Scala that you are currently using. If you get an error while resolving this "
+"kind of dependency, that dependency probably wasn't published for the "
+"version of Scala you are using. See [Cross building](../concepts/cross-"
+"building.md) for details."
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:84
+msgid "`versionScheme` and eviction errors"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:86
+msgid ""
+"sbt allows library authors to declare the version semantics using the "
+"`versionScheme` setting:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:89
+msgid "// Semantic Versioning applied to 0.x, as well as 1.x, 2.x, etc"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:93
+msgid ""
+"When Coursier finds multiple versions of a library, for example Cats Effect "
+"2.x and Cats Effect 3.0.0-M4, it often resolves the conflict by removing the "
+"older version from the graph. This process is colloquially called eviction, "
+"like \"Cats Effect 2.2.0 was evicted.\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:97
+msgid ""
+"This would work if the new tenant is binary compatible with Cats Effect "
+"2.2.0. In this case, the library authors have declared that they are _not_ "
+"binary compatible, so the eviction was actually unsafe. An unsafe eviction "
+"would cause runtime issues such as `ClassNotFoundException`. Instead "
+"Coursier should've failed to resolve."
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:104
+msgid "\"use\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:106
+msgid "\"org.http4s\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:106
+msgid "\"http4s-blaze-server\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:106
+msgid "\"0.21.11\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:107
+msgid "\"org.typelevel\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:107
+msgid "\"cats-effect\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:107
+msgid "\"3.0.0-M4\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:112
+msgid ""
+"sbt performs this secondary compatibility check after Coursier returns a "
+"candidate:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:129
+msgid "This mechanism is called the _eviction error_."
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:131
+msgid "Opting out of the the eviction error"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:133
+msgid ""
+"If the library authors have declared the compatibility breakage, but if you "
+"want to ignore the strict check (often for `scala-xml`), you can write this "
+"in `project/plugins.sbt` and `build.sbt`:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:137
+msgid "\"org.scala-lang.modules\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:137
+msgid "\"scala-xml\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:140
+msgid "To ignore all eviction errors:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:146
+msgid "Resolvers"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:148
+msgid ""
+"sbt uses the standard Maven Central repository by default. Declare "
+"additional repositories with the form:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:154
+msgid "For example:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:158
+msgid "\"org.apache.derby\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:158
+msgid "\"derby\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:158
+msgid "\"10.4.1.3\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:159
+msgid "\"org.specs\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:159
+msgid "\"specs\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:159
+msgid "\"1.6.1\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:162
+#: src/reference/reference/sbt-update.md:189
+msgid "\"Sonatype OSS Snapshots\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:162
+#: src/reference/reference/sbt-update.md:189
+msgid "\"https://oss.sonatype.org/content/repositories/snapshots\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:165
+msgid ""
+"sbt can search your local Maven repository if you add it as a repository:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:176
+msgid "Override default resolvers"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:178
+msgid ""
+"`resolvers` configures additional, inline user resolvers. By default, `sbt` "
+"combines these resolvers with default repositories (Maven Central and the "
+"local Ivy repository) to form `externalResolvers`. To have more control over "
+"repositories, set `externalResolvers` directly. To only specify repositories "
+"in addition to the usual defaults, configure `resolvers`."
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:185
+msgid ""
+"For example, to use the Sonatype OSS Snapshots repository in addition to the "
+"default repositories,"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:192
+msgid "To use the local repository, but not the Maven Central repository:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:198
+msgid "Override all resolvers for all builds"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:200
+msgid ""
+"The repositories used to retrieve sbt, Scala, plugins, and application "
+"dependencies can be configured globally and declared to override the "
+"resolvers configured in a build or plugin definition. There are two parts:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:205
+msgid "Define the repositories used by the launcher."
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:206
+msgid ""
+"Specify that these repositories should override those in build definitions."
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:209
+msgid ""
+"The repositories used by the launcher can be overridden by defining `~/.sbt/"
+"repositories`, which must contain a `[repositories]` section with the same "
+"format as the `Launcher` configuration file. For example:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:213
+msgid ""
+"```\n"
+"[repositories]\n"
+"local\n"
+"my-maven-repo: https://example.org/repo\n"
+"my-ivy-repo: https://example.org/ivy-repo/, [organization]/[module]/"
+"[revision]/[type]s/[artifact](-[classifier]).[ext]\n"
+"```"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:220
+msgid ""
+"A different location for the repositories file may be specified by the `sbt."
+"repository.config` system property in the sbt startup script. The final step "
+"is to set `sbt.override.build.repos` to true to use these repositories for "
+"dependency resolution and retrieval."
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:225
+msgid "Exclude Transitive Dependencies"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:227
+msgid ""
+"In certain cases a transitive dependency should be excluded from all "
+"dependencies. This can be achieved by setting up `ExclusionRules` in "
+"`excludeDependencies`."
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:233
+msgid "// commons-logging is replaced by jcl-over-slf4j"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:234
+msgid "\"commons-logging\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:238
+msgid ""
+"To exclude certain transitive dependencies of a dependency, use the "
+"`excludeAll` or `exclude` methods. The `exclude` method should be used when "
+"a pom will be published for the project. It requires the organization and "
+"module name to exclude. For example,"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:245
+msgid "\"log4j\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:245
+msgid "\"1.2.15\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:245
+msgid "\"javax.jms\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:245
+msgid "\"jms\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:265
+msgid "Explicit URL"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:267
+msgid ""
+"If your project requires a dependency that is not present in a repository, a "
+"direct URL to its jar can be specified as follows:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:271
+msgid "\"slinky\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:271
+msgid "\"2.1\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:271
+msgid "\"https://slinky2.googlecode.com/svn/artifacts/2.1/slinky.jar\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:274
+msgid ""
+"The URL is only used as a fallback if the dependency cannot be found through "
+"the configured repositories. Also, the explicit URL is not included in "
+"published metadata (that is, the pom or ivy.xml)."
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:278
+msgid "Disable Transitivity"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:280
+msgid ""
+"By default, these declarations fetch all project dependencies, transitively. "
+"In some instances, you may find that the dependencies listed for a project "
+"aren't necessary for it to build. Projects using the Felix OSGI framework, "
+"for instance, only explicitly require its main jar to compile and run. Avoid "
+"fetching artifact dependencies with either `intransitive()` or "
+"`notTransitive()`, as in this example:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:288
+#: src/reference/reference/sbt-update.md:330
+msgid "\"org.apache.felix\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:288
+#: src/reference/reference/sbt-update.md:330
+msgid "\"org.apache.felix.framework\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:288
+#: src/reference/reference/sbt-update.md:330
+msgid "\"1.8.0\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:291
+msgid "Classifiers"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:293
+msgid ""
+"You can specify the classifier for a dependency using the `classifier` "
+"method. For example, to get the jdk15 version of TestNG:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:297
+msgid "\"org.testng\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:297
+msgid "\"testng\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:297
+msgid "\"5.7\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:297
+msgid "\"jdk15\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:300
+msgid "For multiple classifiers, use multiple `classifier` calls:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:304
+msgid "\"org.lwjgl.lwjgl\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:304
+msgid "\"lwjgl-platform\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:304
+msgid "\"natives-windows\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:304
+msgid "\"natives-linux\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:304
+msgid "\"natives-osx\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:307
+msgid ""
+"To obtain particular classifiers for all dependencies transitively, run the "
+"`updateClassifiers` task. By default, this resolves all artifacts with the "
+"`sources` or `javadoc` classifier. Select the classifiers to obtain by "
+"configuring the `transitiveClassifiers` setting. For example, to only "
+"retrieve sources:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:314
+msgid "\"sources\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:317
+msgid "Download Sources"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:319
+msgid ""
+"Downloading source and API documentation jars is usually handled by an IDE "
+"plugin. These plugins use the `updateClassifiers` and `updateSbtClassifiers` "
+"tasks, which produce an `Update-Report` referencing these jars."
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:324
+msgid ""
+"To have sbt download the dependency's sources without using an IDE plugin, "
+"add `withSources()` to the dependency definition. For API jars, add "
+"`withJavadoc()`. For example:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:333
+msgid ""
+"Note that this is not transitive. Use the `update*Classifiers` tasks for "
+"that."
+msgstr ""
diff --git a/po/summary/reference/sbt-update.zh-cn.po b/po/summary/reference/sbt-update.zh-cn.po
new file mode 100644
index 00000000..0a1f18a6
--- /dev/null
+++ b/po/summary/reference/sbt-update.zh-cn.po
@@ -0,0 +1,494 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/reference/sbt-update.md:14
+msgid "sbt update"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:17
+msgid ""
+"See [library depdency basics](../guide/library-dependency-basics.md) in the "
+"Getting Started guide to learn about the basics."
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:19
+msgid "Synopsis"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:22
+msgid "`sbt --client update`"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:24
+msgid "Description"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:27
+msgid ""
+"sbt uses [Coursier](https://get-coursier.io/) to implement library "
+"management, also known as a package manager in other ecosystems. The general "
+"idea of library management is that you can specify external libraries you "
+"would like to use in your subprojects, and the library management system "
+"would:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:31
+msgid "Check if such versions exists in the listed repositories"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:32
+msgid ""
+"Look for the transitive dependencies (i.e. the libraries used by the "
+"libraries)"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:33
+msgid "Attempt to resolve version conflicts, if any"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:34
+msgid "Download the artifacts, such as JAR files, from the repositories"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:36
+msgid "Dependencies"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:38
+msgid "Declaring a dependency looks like:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:44
+msgid "or"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:55
+msgid "Also, several dependencies can be declared together:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:64
+msgid ""
+"If you are using a dependency that was built with sbt, double the first `%` "
+"to be `%%`:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:71
+msgid ""
+"This will use the right JAR for the dependency built with the version of "
+"Scala that you are currently using. If you get an error while resolving this "
+"kind of dependency, that dependency probably wasn't published for the "
+"version of Scala you are using. See [Cross building](../concepts/cross-"
+"building.md) for details."
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:84
+msgid "`versionScheme` and eviction errors"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:86
+msgid ""
+"sbt allows library authors to declare the version semantics using the "
+"`versionScheme` setting:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:89
+msgid "// Semantic Versioning applied to 0.x, as well as 1.x, 2.x, etc"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:93
+msgid ""
+"When Coursier finds multiple versions of a library, for example Cats Effect "
+"2.x and Cats Effect 3.0.0-M4, it often resolves the conflict by removing the "
+"older version from the graph. This process is colloquially called eviction, "
+"like \"Cats Effect 2.2.0 was evicted.\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:97
+msgid ""
+"This would work if the new tenant is binary compatible with Cats Effect "
+"2.2.0. In this case, the library authors have declared that they are _not_ "
+"binary compatible, so the eviction was actually unsafe. An unsafe eviction "
+"would cause runtime issues such as `ClassNotFoundException`. Instead "
+"Coursier should've failed to resolve."
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:104
+msgid "\"use\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:106
+msgid "\"org.http4s\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:106
+msgid "\"http4s-blaze-server\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:106
+msgid "\"0.21.11\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:107
+msgid "\"org.typelevel\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:107
+msgid "\"cats-effect\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:107
+msgid "\"3.0.0-M4\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:112
+msgid ""
+"sbt performs this secondary compatibility check after Coursier returns a "
+"candidate:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:129
+msgid "This mechanism is called the _eviction error_."
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:131
+msgid "Opting out of the the eviction error"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:133
+msgid ""
+"If the library authors have declared the compatibility breakage, but if you "
+"want to ignore the strict check (often for `scala-xml`), you can write this "
+"in `project/plugins.sbt` and `build.sbt`:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:137
+msgid "\"org.scala-lang.modules\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:137
+msgid "\"scala-xml\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:140
+msgid "To ignore all eviction errors:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:146
+msgid "Resolvers"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:148
+msgid ""
+"sbt uses the standard Maven Central repository by default. Declare "
+"additional repositories with the form:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:154
+msgid "For example:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:158
+msgid "\"org.apache.derby\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:158
+msgid "\"derby\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:158
+msgid "\"10.4.1.3\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:159
+msgid "\"org.specs\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:159
+msgid "\"specs\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:159
+msgid "\"1.6.1\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:162
+#: src/reference/reference/sbt-update.md:189
+msgid "\"Sonatype OSS Snapshots\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:162
+#: src/reference/reference/sbt-update.md:189
+msgid "\"https://oss.sonatype.org/content/repositories/snapshots\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:165
+msgid ""
+"sbt can search your local Maven repository if you add it as a repository:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:176
+msgid "Override default resolvers"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:178
+msgid ""
+"`resolvers` configures additional, inline user resolvers. By default, `sbt` "
+"combines these resolvers with default repositories (Maven Central and the "
+"local Ivy repository) to form `externalResolvers`. To have more control over "
+"repositories, set `externalResolvers` directly. To only specify repositories "
+"in addition to the usual defaults, configure `resolvers`."
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:185
+msgid ""
+"For example, to use the Sonatype OSS Snapshots repository in addition to the "
+"default repositories,"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:192
+msgid "To use the local repository, but not the Maven Central repository:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:198
+msgid "Override all resolvers for all builds"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:200
+msgid ""
+"The repositories used to retrieve sbt, Scala, plugins, and application "
+"dependencies can be configured globally and declared to override the "
+"resolvers configured in a build or plugin definition. There are two parts:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:205
+msgid "Define the repositories used by the launcher."
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:206
+msgid ""
+"Specify that these repositories should override those in build definitions."
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:209
+msgid ""
+"The repositories used by the launcher can be overridden by defining `~/.sbt/"
+"repositories`, which must contain a `[repositories]` section with the same "
+"format as the `Launcher` configuration file. For example:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:213
+msgid ""
+"```\n"
+"[repositories]\n"
+"local\n"
+"my-maven-repo: https://example.org/repo\n"
+"my-ivy-repo: https://example.org/ivy-repo/, [organization]/[module]/"
+"[revision]/[type]s/[artifact](-[classifier]).[ext]\n"
+"```"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:220
+msgid ""
+"A different location for the repositories file may be specified by the `sbt."
+"repository.config` system property in the sbt startup script. The final step "
+"is to set `sbt.override.build.repos` to true to use these repositories for "
+"dependency resolution and retrieval."
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:225
+msgid "Exclude Transitive Dependencies"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:227
+msgid ""
+"In certain cases a transitive dependency should be excluded from all "
+"dependencies. This can be achieved by setting up `ExclusionRules` in "
+"`excludeDependencies`."
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:233
+msgid "// commons-logging is replaced by jcl-over-slf4j"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:234
+msgid "\"commons-logging\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:238
+msgid ""
+"To exclude certain transitive dependencies of a dependency, use the "
+"`excludeAll` or `exclude` methods. The `exclude` method should be used when "
+"a pom will be published for the project. It requires the organization and "
+"module name to exclude. For example,"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:245
+msgid "\"log4j\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:245
+msgid "\"1.2.15\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:245
+msgid "\"javax.jms\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:245
+msgid "\"jms\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:265
+msgid "Explicit URL"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:267
+msgid ""
+"If your project requires a dependency that is not present in a repository, a "
+"direct URL to its jar can be specified as follows:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:271
+msgid "\"slinky\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:271
+msgid "\"2.1\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:271
+msgid "\"https://slinky2.googlecode.com/svn/artifacts/2.1/slinky.jar\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:274
+msgid ""
+"The URL is only used as a fallback if the dependency cannot be found through "
+"the configured repositories. Also, the explicit URL is not included in "
+"published metadata (that is, the pom or ivy.xml)."
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:278
+msgid "Disable Transitivity"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:280
+msgid ""
+"By default, these declarations fetch all project dependencies, transitively. "
+"In some instances, you may find that the dependencies listed for a project "
+"aren't necessary for it to build. Projects using the Felix OSGI framework, "
+"for instance, only explicitly require its main jar to compile and run. Avoid "
+"fetching artifact dependencies with either `intransitive()` or "
+"`notTransitive()`, as in this example:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:288
+#: src/reference/reference/sbt-update.md:330
+msgid "\"org.apache.felix\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:288
+#: src/reference/reference/sbt-update.md:330
+msgid "\"org.apache.felix.framework\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:288
+#: src/reference/reference/sbt-update.md:330
+msgid "\"1.8.0\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:291
+msgid "Classifiers"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:293
+msgid ""
+"You can specify the classifier for a dependency using the `classifier` "
+"method. For example, to get the jdk15 version of TestNG:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:297
+msgid "\"org.testng\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:297
+msgid "\"testng\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:297
+msgid "\"5.7\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:297
+msgid "\"jdk15\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:300
+msgid "For multiple classifiers, use multiple `classifier` calls:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:304
+msgid "\"org.lwjgl.lwjgl\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:304
+msgid "\"lwjgl-platform\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:304
+msgid "\"natives-windows\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:304
+msgid "\"natives-linux\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:304
+msgid "\"natives-osx\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:307
+msgid ""
+"To obtain particular classifiers for all dependencies transitively, run the "
+"`updateClassifiers` task. By default, this resolves all artifacts with the "
+"`sources` or `javadoc` classifier. Select the classifiers to obtain by "
+"configuring the `transitiveClassifiers` setting. For example, to only "
+"retrieve sources:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:314
+msgid "\"sources\""
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:317
+msgid "Download Sources"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:319
+msgid ""
+"Downloading source and API documentation jars is usually handled by an IDE "
+"plugin. These plugins use the `updateClassifiers` and `updateSbtClassifiers` "
+"tasks, which produce an `Update-Report` referencing these jars."
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:324
+msgid ""
+"To have sbt download the dependency's sources without using an IDE plugin, "
+"add `withSources()` to the dependency definition. For API jars, add "
+"`withJavadoc()`. For example:"
+msgstr ""
+
+#: src/reference/reference/sbt-update.md:333
+msgid ""
+"Note that this is not transitive. Use the `update*Classifiers` tasks for "
+"that."
+msgstr ""
diff --git a/po/summary/reference/sbt.ja.po b/po/summary/reference/sbt.ja.po
new file mode 100644
index 00000000..579695f2
--- /dev/null
+++ b/po/summary/reference/sbt.ja.po
@@ -0,0 +1,557 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:08:34-04:00\n"
+"PO-Revision-Date: 2024-10-30T01:14:09-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/reference/sbt.md:14
+msgid "sbt"
+msgstr ""
+
+#: src/reference/reference/sbt.md:17
+msgid ""
+"See [Basic Tasks](../guide/basic-tasks.md) in the Getting Started Guide for "
+"an intro to the basics."
+msgstr ""
+
+#: src/reference/reference/sbt.md:19
+msgid "Synopsis"
+msgstr ""
+
+#: src/reference/reference/sbt.md:22
+msgid "`sbt`
`sbt --client` _command_ _args_"
+msgstr ""
+
+#: src/reference/reference/sbt.md:25
+msgid "Description"
+msgstr ""
+
+#: src/reference/reference/sbt.md:27
+msgid ""
+"sbt is a simple build tool created originally for Scala and Java. It lets us "
+"declare subprojects and their various dependencies and custom tasks to "
+"ensure that we'll always get a fast, repeatable build."
+msgstr ""
+
+#: src/reference/reference/sbt.md:29
+msgid "sbt runner and sbt server"
+msgstr ""
+
+#: src/reference/reference/sbt.md:31
+msgid ""
+"sbt runner is a system shell script named `sbt`, or `sbt.bat` on Windows. "
+"That is capable of running _any version of sbt_. This is sometimes called "
+"\"sbt-the-shell-script\"."
+msgstr ""
+
+#: src/reference/reference/sbt.md:32
+msgid ""
+"When executed with `--client`, sbt runner executes sbtn, a client program "
+"compiled a native code using GraalVM native image."
+msgstr ""
+
+#: src/reference/reference/sbt.md:33
+msgid ""
+"sbt runner also executes sbt launcher, a launcher that is capable of running "
+"_any verions of sbt_."
+msgstr ""
+
+#: src/reference/reference/sbt.md:34
+msgid ""
+"When you install sbt from a installer, what you're installing is the sbt "
+"runner."
+msgstr ""
+
+#: src/reference/reference/sbt.md:35
+msgid "sbt server is the actual build tool."
+msgstr ""
+
+#: src/reference/reference/sbt.md:36
+msgid ""
+"The sbt version is determined by `project/build.properties` in each working "
+"directory."
+msgstr ""
+
+#: src/reference/reference/sbt.md:37
+msgid ""
+"sbt server accepts commands from sbtn, network API, or via its own sbt shell."
+msgstr ""
+
+#: src/reference/reference/sbt.md:43
+msgid ""
+"This mechanism allows builds to be configured to a specific version of sbt, "
+"and everyone working on the project would use the same build semantics, "
+"regardless of the sbt runner installed on their machine."
+msgstr ""
+
+#: src/reference/reference/sbt.md:45
+msgid ""
+"This also means that some features are implemented at sbt runner or sbtn "
+"level, while other features are implemented at sbt server level."
+msgstr ""
+
+#: src/reference/reference/sbt.md:47
+msgid "sbt commands"
+msgstr ""
+
+#: src/reference/reference/sbt.md:67
+msgid "Project-level tasks"
+msgstr ""
+
+#: src/reference/reference/sbt.md:69
+msgid "`clean` Deletes all generated files (the `target` directory)."
+msgstr ""
+
+#: src/reference/reference/sbt.md:70
+msgid ""
+"`publishLocal` Publishes artifacts (such as JARs) to the local Ivy "
+"repository as described in Publishing."
+msgstr ""
+
+#: src/reference/reference/sbt.md:72
+msgid ""
+"`publish` Publishes artifacts (such as JARs) to the repository defined by "
+"the publishTo setting, described in Publishing."
+msgstr ""
+
+#: src/reference/reference/sbt.md:80
+msgid "Configuration-level tasks"
+msgstr ""
+
+#: src/reference/reference/sbt.md:82
+msgid ""
+"Configuration-level tasks are tasks associated with a configuration. For "
+"example, `compile`, which is equivalent to `Compile/compile`, compiles the "
+"main source code (the `Compile` configuration). `Test/compile` compiles the "
+"test source code (the `Test` configuration). Most tasks for the `Compile` "
+"configuration have an equivalent in the `Test` configuration that can be run "
+"using a `Test/` prefix."
+msgstr ""
+
+#: src/reference/reference/sbt.md:89
+msgid ""
+"`compile` Compiles the main sources (in the `src/main/scala` directory). "
+"`Test/compile` compiles test sources (in the src/test/scala/ directory)."
+msgstr ""
+
+#: src/reference/reference/sbt.md:92
+msgid ""
+"`console` Starts the Scala interpreter with a classpath including the "
+"compiled sources, all JARs in the lib directory, and managed libraries. To "
+"return to sbt, type :quit, Ctrl+D (Unix), or Ctrl+Z (Windows). Similarly, "
+"Test/console starts the interpreter with the test classes and classpath."
+msgstr ""
+
+#: src/reference/reference/sbt.md:97
+msgid ""
+"`doc` Generates API documentation for Scala source files in `src/main/scala` "
+"using scaladoc. `Test/doc` generates API documentation for source files in "
+"`src/test/scala`."
+msgstr ""
+
+#: src/reference/reference/sbt.md:100
+msgid ""
+"`package` Creates a JAR file containing the files in `src/main/resources` "
+"and the classes compiled from `src/main/scala`. `Test/package` creates a JAR "
+"containing the files in `src/test/resources` and the class compiled from "
+"`src/test/scala`."
+msgstr ""
+
+#: src/reference/reference/sbt.md:104
+msgid ""
+"`packageDoc` Creates a JAR file containing API documentation generated from "
+"Scala source files in src/main/scala. Test/packageDoc creates a JAR "
+"containing API documentation for test sources files in src/test/scala."
+msgstr ""
+
+#: src/reference/reference/sbt.md:108
+msgid ""
+"`packageSrc`: Creates a JAR file containing all main source files and "
+"resources. The packaged paths are relative to src/main/scala and src/main/"
+"resources. Similarly, Test/packageSrc operates on test source files and "
+"resources."
+msgstr ""
+
+#: src/reference/reference/sbt.md:112
+msgid ""
+"`run *` Runs the main class for the project in the same virtual "
+"machine as sbt. The main class is passed the arguments provided."
+msgstr ""
+
+#: src/reference/reference/sbt.md:118
+msgid ""
+"`runMain *` Runs the specified main class for the "
+"project in the same virtual machine as sbt. The main class is passed the "
+"arguments provided."
+msgstr ""
+
+#: src/reference/reference/sbt.md:126
+msgid "`testFull` Runs all tests detected during test compilation."
+msgstr ""
+
+#: src/reference/reference/sbt.md:128
+msgid ""
+"`testOnly *` Runs the tests provided as arguments. `*` (will be) "
+"interpreted as a wildcard in the test name."
+msgstr ""
+
+#: src/reference/reference/sbt.md:131
+msgid ""
+"`test *` Runs the tests specified as arguments (or all tests if no "
+"arguments are given) that:"
+msgstr ""
+
+#: src/reference/reference/sbt.md:133
+msgid "have not been run yet OR"
+msgstr ""
+
+#: src/reference/reference/sbt.md:134
+msgid "failed the last time they were run OR"
+msgstr ""
+
+#: src/reference/reference/sbt.md:135
+msgid ""
+"had any transitive dependencies recompiled since the last successful run `*` "
+"(will be) interpreted as a wildcard in the test name."
+msgstr ""
+
+#: src/reference/reference/sbt.md:152
+msgid "General commands"
+msgstr ""
+
+#: src/reference/reference/sbt.md:154
+msgid ""
+"`exit` or `quit` End the current interactive session or build. Additionally, "
+"Ctrl+D (Unix) or Ctrl+Z (Windows) will exit the interactive prompt."
+msgstr ""
+
+#: src/reference/reference/sbt.md:157
+msgid ""
+"`help ` Displays detailed help for the specified command. If the "
+"command does not exist, help lists detailed help for commands whose name or "
+"description match the argument, which is interpreted as a regular "
+"expression. If no command is provided, displays brief descriptions of the "
+"main commands. Related commands are tasks and settings."
+msgstr ""
+
+#: src/reference/reference/sbt.md:163
+msgid ""
+"`projects [add|remove ]` List all available projects if no arguments "
+"provided or adds/removes the build at the provided URI."
+msgstr ""
+
+#: src/reference/reference/sbt.md:167
+msgid ""
+"`project ` Change the current project to the project with ID "
+"``. Further operations will be done in the context of the given "
+"project."
+msgstr ""
+
+#: src/reference/reference/sbt.md:172
+msgid ""
+"`~ ` Executes the project specified action or method whenever "
+"source files change."
+msgstr ""
+
+#: src/reference/reference/sbt.md:175
+msgid ""
+"`< filename` Executes the commands in the given file. Each command should be "
+"on its own line. Empty lines and lines beginning with '#' are ignored"
+msgstr ""
+
+#: src/reference/reference/sbt.md:178
+msgid ""
+"`A ; B` Execute A and if it succeeds, run B. Note that the leading semicolon "
+"is required."
+msgstr ""
+
+#: src/reference/reference/sbt.md:180
+msgid ""
+"`eval ` Evaluates the given Scala expression and returns "
+"the result and inferred type. This can be used to set system properties, as "
+"a calculator, to fork processes, etc ... For example:"
+msgstr ""
+
+#: src/reference/reference/sbt.md:184
+msgid ""
+"```\n"
+"> eval System.setProperty(\"demo\", \"true\")\n"
+"> eval 1+1\n"
+"> eval \"ls -l\" !\n"
+"```"
+msgstr ""
+
+#: src/reference/reference/sbt.md:201
+msgid "Commands for managing the build definition"
+msgstr ""
+
+#: src/reference/reference/sbt.md:203
+msgid ""
+"`reload [plugins|return]` If no argument is specified, reloads the build, "
+"recompiling any build or plugin definitions as necessary. reload plugins "
+"changes the current project to the build definition project (in `project/`). "
+"This can be useful to directly manipulate the build definition. For example, "
+"running clean on the build definition project will force snapshots to be "
+"updated and the build definition to be recompiled. reload return changes "
+"back to the main project."
+msgstr ""
+
+#: src/reference/reference/sbt.md:210
+msgid ""
+"`set ` Evaluates and applies the given setting "
+"definition. The setting applies until sbt is restarted, the build is "
+"reloaded, or the setting is overridden by another set command or removed by "
+"the session command."
+msgstr ""
+
+#: src/reference/reference/sbt.md:216
+msgid ""
+"`session ` Manages session settings defined by the `set` command. "
+"It can persist settings configured at the prompt."
+msgstr ""
+
+#: src/reference/reference/sbt.md:219
+msgid ""
+"`inspect ` Displays information about settings, such as the "
+"value, description, defining scope, dependencies, delegation chain, and "
+"related settings."
+msgstr ""
+
+#: src/reference/reference/sbt.md:224
+msgid "sbt runner and launcher"
+msgstr ""
+
+#: src/reference/reference/sbt.md:227
+msgid ""
+"When launching the `sbt` runner from the system shell, various system "
+"properties or JVM extra options can be specified to influence its behaviour."
+msgstr ""
+
+#: src/reference/reference/sbt.md:230
+msgid "sbt JVM options and system properties"
+msgstr ""
+
+#: src/reference/reference/sbt.md:232
+msgid ""
+"If the `JAVA_OPTS` and/or `SBT_OPTS` environment variables are defined when "
+"`sbt` starts, their content is passed as command line arguments to the JVM "
+"running sbt server."
+msgstr ""
+
+#: src/reference/reference/sbt.md:236
+msgid ""
+"If a file named `.jvmopts` exists in the current directory, its content is "
+"appended to `JAVA_OPTS` at sbt startup. Similarly, if `.sbtopts` and/or `/"
+"etc/sbt/sbtopts` exist, their content is appended to `SBT_OPTS`. The default "
+"value of `JAVA_OPTS` is `-Dfile.encoding=UTF8`."
+msgstr ""
+
+#: src/reference/reference/sbt.md:241
+msgid ""
+"You can also specify JVM system properties and command line options directly "
+"as `sbt` arguments: any `-Dkey=val` argument will be passed as-is to the "
+"JVM, and any `-J-Xfoo` will be passed as `-Xfoo`."
+msgstr ""
+
+#: src/reference/reference/sbt.md:245
+msgid "See also `sbt --help` for more details."
+msgstr ""
+
+#: src/reference/reference/sbt.md:248
+msgid "sbt JVM heap, permgen, and stack sizes"
+msgstr ""
+
+#: src/reference/reference/sbt.md:250
+msgid ""
+"If you find yourself running out of permgen space or your workstation is low "
+"on memory, adjust the JVM configuration as you would for any java "
+"application."
+msgstr ""
+
+#: src/reference/reference/sbt.md:254
+msgid "For example a common set of memory-related options is:"
+msgstr ""
+
+#: src/reference/reference/sbt.md:257
+msgid "\"-Xmx2048M -Xss2M\""
+msgstr ""
+
+#: src/reference/reference/sbt.md:261
+msgid "Or if you prefer to specify them just for this session:"
+msgstr ""
+
+#: src/reference/reference/sbt.md:267
+msgid "Boot directory"
+msgstr ""
+
+#: src/reference/reference/sbt.md:269
+msgid ""
+"`sbt` runner is just a bootstrap, the actual sbt server, Scala compiler and "
+"standard library are by default downloaded to the shared directory `\\"
+"$HOME/.sbt/boot/`."
+msgstr ""
+
+#: src/reference/reference/sbt.md:273
+msgid ""
+"To change the location of this directory, set the `sbt.boot.directory` "
+"system property. A relative path will be resolved against the current "
+"working directory, which can be useful if you want to avoid sharing the boot "
+"directory between projects. For example, the following uses the pre-0.11 "
+"style of putting the boot directory in `project/boot/`:"
+msgstr ""
+
+#: src/reference/reference/sbt.md:284
+msgid "Terminal encoding"
+msgstr ""
+
+#: src/reference/reference/sbt.md:286
+msgid ""
+"The character encoding used by your terminal may differ from Java's default "
+"encoding for your platform. In this case, you will need to specify the `file."
+"encoding=` system property, which might look like:"
+msgstr ""
+
+#: src/reference/reference/sbt.md:291
+msgid "\"-Dfile.encoding=Cp1252\""
+msgstr ""
+
+#: src/reference/reference/sbt.md:295
+msgid "HTTP/HTTPS/FTP Proxy"
+msgstr ""
+
+#: src/reference/reference/sbt.md:297
+msgid ""
+"On Unix, sbt will pick up any HTTP, HTTPS, or FTP proxy settings from the "
+"standard `http_proxy`, `https_proxy`, and `ftp_proxy` environment variables. "
+"If you are behind a proxy requiring authentication, you need to pass some "
+"supplementary flags at sbt startup. See [JVM networking system properties]"
+"(https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/net/doc-"
+"files/net-properties.html) for more details."
+msgstr ""
+
+#: src/reference/reference/sbt.md:303
+msgid "For example:"
+msgstr ""
+
+#: src/reference/reference/sbt.md:309
+msgid ""
+"On Windows, your script should set properties for proxy host, port, and if "
+"applicable, username and password. For example, for HTTP:"
+msgstr ""
+
+#: src/reference/reference/sbt.md:316
+msgid ""
+"Replace `http` with `https` or `ftp` in the above command line to configure "
+"HTTPS or FTP."
+msgstr ""
+
+#: src/reference/reference/sbt.md:319
+msgid "Other system properties"
+msgstr ""
+
+#: src/reference/reference/sbt.md:321
+msgid "The following system properties can also be passed to `sbt` runner:"
+msgstr ""
+
+#: src/reference/reference/sbt.md:323
+msgid "`-Dsbt.banner=true`"
+msgstr ""
+
+#: src/reference/reference/sbt.md:325
+msgid "Show a welcome banner advertising new features."
+msgstr ""
+
+#: src/reference/reference/sbt.md:327
+msgid "`-Dsbt.ci=true`"
+msgstr ""
+
+#: src/reference/reference/sbt.md:329
+msgid ""
+"Default `false` (unless then env var `BUILD_NUMBER` is set). For continuous "
+"integration environments. Suppress supershell and color."
+msgstr ""
+
+#: src/reference/reference/sbt.md:331
+msgid "`-Dsbt.client=true`"
+msgstr ""
+
+#: src/reference/reference/sbt.md:333
+msgid "Run the sbt client."
+msgstr ""
+
+#: src/reference/reference/sbt.md:335
+msgid "`-Dsbt.color=auto`"
+msgstr ""
+
+#: src/reference/reference/sbt.md:337
+msgid "To turn on color, use `always` or `true`."
+msgstr ""
+
+#: src/reference/reference/sbt.md:338
+msgid "To turn off color, use `never` or `false`."
+msgstr ""
+
+#: src/reference/reference/sbt.md:339
+msgid ""
+"To use color if the output is a terminal (not a pipe) that supports color, "
+"use `auto`."
+msgstr ""
+
+#: src/reference/reference/sbt.md:341
+msgid "`-Dsbt.coursier.home=$HOME/.cache/coursier/v1`"
+msgstr ""
+
+#: src/reference/reference/sbt.md:343
+msgid ""
+"Location of the Coursier artifact cache, where the default is defined by "
+"[Coursier cache resolution logic](https://get-coursier.io/docs/cache."
+"html#default-location). You can verify the value with the command "
+"`csrCacheDirectory`."
+msgstr ""
+
+#: src/reference/reference/sbt.md:345
+msgid "`-Dsbt.genbuildprops=true`"
+msgstr ""
+
+#: src/reference/reference/sbt.md:347
+msgid ""
+"Generate `build.properties` if missing. If unset, this defers to `sbt.skip."
+"version.write`."
+msgstr ""
+
+#: src/reference/reference/sbt.md:349
+msgid "`-Dsbt.global.base=$HOME/.sbt/`"
+msgstr ""
+
+#: src/reference/reference/sbt.md:351
+msgid "The directory containing global settings and plugins."
+msgstr ""
+
+#: src/reference/reference/sbt.md:353
+msgid "`-Dsbt.override.build.repos=true`"
+msgstr ""
+
+#: src/reference/reference/sbt.md:355
+msgid ""
+"If true, repositories configured in a build definition are ignored and the "
+"repositories configured for the launcher are used instead."
+msgstr ""
+
+#: src/reference/reference/sbt.md:359
+msgid "`-Dsbt.repository.config=$HOME/.sbt/repositories`"
+msgstr ""
+
+#: src/reference/reference/sbt.md:361
+msgid ""
+"A file containing the repositories to use for the launcher. The format is "
+"the same as a `[repositories]` section for a sbt launcher configuration "
+"file. This setting is typically used in conjunction with setting `sbt."
+"override.build.repos` to `true`."
+msgstr ""
diff --git a/po/summary/reference/sbt.zh-cn.po b/po/summary/reference/sbt.zh-cn.po
new file mode 100644
index 00000000..6869d204
--- /dev/null
+++ b/po/summary/reference/sbt.zh-cn.po
@@ -0,0 +1,557 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/reference/sbt.md:14
+msgid "sbt"
+msgstr ""
+
+#: src/reference/reference/sbt.md:17
+msgid ""
+"See [Basic Tasks](../guide/basic-tasks.md) in the Getting Started Guide for "
+"an intro to the basics."
+msgstr ""
+
+#: src/reference/reference/sbt.md:19
+msgid "Synopsis"
+msgstr ""
+
+#: src/reference/reference/sbt.md:22
+msgid "`sbt`
`sbt --client` _command_ _args_"
+msgstr ""
+
+#: src/reference/reference/sbt.md:25
+msgid "Description"
+msgstr ""
+
+#: src/reference/reference/sbt.md:27
+msgid ""
+"sbt is a simple build tool created originally for Scala and Java. It lets us "
+"declare subprojects and their various dependencies and custom tasks to "
+"ensure that we'll always get a fast, repeatable build."
+msgstr ""
+
+#: src/reference/reference/sbt.md:29
+msgid "sbt runner and sbt server"
+msgstr ""
+
+#: src/reference/reference/sbt.md:31
+msgid ""
+"sbt runner is a system shell script named `sbt`, or `sbt.bat` on Windows. "
+"That is capable of running _any version of sbt_. This is sometimes called "
+"\"sbt-the-shell-script\"."
+msgstr ""
+
+#: src/reference/reference/sbt.md:32
+msgid ""
+"When executed with `--client`, sbt runner executes sbtn, a client program "
+"compiled a native code using GraalVM native image."
+msgstr ""
+
+#: src/reference/reference/sbt.md:33
+msgid ""
+"sbt runner also executes sbt launcher, a launcher that is capable of running "
+"_any verions of sbt_."
+msgstr ""
+
+#: src/reference/reference/sbt.md:34
+msgid ""
+"When you install sbt from a installer, what you're installing is the sbt "
+"runner."
+msgstr ""
+
+#: src/reference/reference/sbt.md:35
+msgid "sbt server is the actual build tool."
+msgstr ""
+
+#: src/reference/reference/sbt.md:36
+msgid ""
+"The sbt version is determined by `project/build.properties` in each working "
+"directory."
+msgstr ""
+
+#: src/reference/reference/sbt.md:37
+msgid ""
+"sbt server accepts commands from sbtn, network API, or via its own sbt shell."
+msgstr ""
+
+#: src/reference/reference/sbt.md:43
+msgid ""
+"This mechanism allows builds to be configured to a specific version of sbt, "
+"and everyone working on the project would use the same build semantics, "
+"regardless of the sbt runner installed on their machine."
+msgstr ""
+
+#: src/reference/reference/sbt.md:45
+msgid ""
+"This also means that some features are implemented at sbt runner or sbtn "
+"level, while other features are implemented at sbt server level."
+msgstr ""
+
+#: src/reference/reference/sbt.md:47
+msgid "sbt commands"
+msgstr ""
+
+#: src/reference/reference/sbt.md:67
+msgid "Project-level tasks"
+msgstr ""
+
+#: src/reference/reference/sbt.md:69
+msgid "`clean` Deletes all generated files (the `target` directory)."
+msgstr ""
+
+#: src/reference/reference/sbt.md:70
+msgid ""
+"`publishLocal` Publishes artifacts (such as JARs) to the local Ivy "
+"repository as described in Publishing."
+msgstr ""
+
+#: src/reference/reference/sbt.md:72
+msgid ""
+"`publish` Publishes artifacts (such as JARs) to the repository defined by "
+"the publishTo setting, described in Publishing."
+msgstr ""
+
+#: src/reference/reference/sbt.md:80
+msgid "Configuration-level tasks"
+msgstr ""
+
+#: src/reference/reference/sbt.md:82
+msgid ""
+"Configuration-level tasks are tasks associated with a configuration. For "
+"example, `compile`, which is equivalent to `Compile/compile`, compiles the "
+"main source code (the `Compile` configuration). `Test/compile` compiles the "
+"test source code (the `Test` configuration). Most tasks for the `Compile` "
+"configuration have an equivalent in the `Test` configuration that can be run "
+"using a `Test/` prefix."
+msgstr ""
+
+#: src/reference/reference/sbt.md:89
+msgid ""
+"`compile` Compiles the main sources (in the `src/main/scala` directory). "
+"`Test/compile` compiles test sources (in the src/test/scala/ directory)."
+msgstr ""
+
+#: src/reference/reference/sbt.md:92
+msgid ""
+"`console` Starts the Scala interpreter with a classpath including the "
+"compiled sources, all JARs in the lib directory, and managed libraries. To "
+"return to sbt, type :quit, Ctrl+D (Unix), or Ctrl+Z (Windows). Similarly, "
+"Test/console starts the interpreter with the test classes and classpath."
+msgstr ""
+
+#: src/reference/reference/sbt.md:97
+msgid ""
+"`doc` Generates API documentation for Scala source files in `src/main/scala` "
+"using scaladoc. `Test/doc` generates API documentation for source files in "
+"`src/test/scala`."
+msgstr ""
+
+#: src/reference/reference/sbt.md:100
+msgid ""
+"`package` Creates a JAR file containing the files in `src/main/resources` "
+"and the classes compiled from `src/main/scala`. `Test/package` creates a JAR "
+"containing the files in `src/test/resources` and the class compiled from "
+"`src/test/scala`."
+msgstr ""
+
+#: src/reference/reference/sbt.md:104
+msgid ""
+"`packageDoc` Creates a JAR file containing API documentation generated from "
+"Scala source files in src/main/scala. Test/packageDoc creates a JAR "
+"containing API documentation for test sources files in src/test/scala."
+msgstr ""
+
+#: src/reference/reference/sbt.md:108
+msgid ""
+"`packageSrc`: Creates a JAR file containing all main source files and "
+"resources. The packaged paths are relative to src/main/scala and src/main/"
+"resources. Similarly, Test/packageSrc operates on test source files and "
+"resources."
+msgstr ""
+
+#: src/reference/reference/sbt.md:112
+msgid ""
+"`run *` Runs the main class for the project in the same virtual "
+"machine as sbt. The main class is passed the arguments provided."
+msgstr ""
+
+#: src/reference/reference/sbt.md:118
+msgid ""
+"`runMain *` Runs the specified main class for the "
+"project in the same virtual machine as sbt. The main class is passed the "
+"arguments provided."
+msgstr ""
+
+#: src/reference/reference/sbt.md:126
+msgid "`testFull` Runs all tests detected during test compilation."
+msgstr ""
+
+#: src/reference/reference/sbt.md:128
+msgid ""
+"`testOnly *` Runs the tests provided as arguments. `*` (will be) "
+"interpreted as a wildcard in the test name."
+msgstr ""
+
+#: src/reference/reference/sbt.md:131
+msgid ""
+"`test *` Runs the tests specified as arguments (or all tests if no "
+"arguments are given) that:"
+msgstr ""
+
+#: src/reference/reference/sbt.md:133
+msgid "have not been run yet OR"
+msgstr ""
+
+#: src/reference/reference/sbt.md:134
+msgid "failed the last time they were run OR"
+msgstr ""
+
+#: src/reference/reference/sbt.md:135
+msgid ""
+"had any transitive dependencies recompiled since the last successful run `*` "
+"(will be) interpreted as a wildcard in the test name."
+msgstr ""
+
+#: src/reference/reference/sbt.md:152
+msgid "General commands"
+msgstr ""
+
+#: src/reference/reference/sbt.md:154
+msgid ""
+"`exit` or `quit` End the current interactive session or build. Additionally, "
+"Ctrl+D (Unix) or Ctrl+Z (Windows) will exit the interactive prompt."
+msgstr ""
+
+#: src/reference/reference/sbt.md:157
+msgid ""
+"`help ` Displays detailed help for the specified command. If the "
+"command does not exist, help lists detailed help for commands whose name or "
+"description match the argument, which is interpreted as a regular "
+"expression. If no command is provided, displays brief descriptions of the "
+"main commands. Related commands are tasks and settings."
+msgstr ""
+
+#: src/reference/reference/sbt.md:163
+msgid ""
+"`projects [add|remove ]` List all available projects if no arguments "
+"provided or adds/removes the build at the provided URI."
+msgstr ""
+
+#: src/reference/reference/sbt.md:167
+msgid ""
+"`project ` Change the current project to the project with ID "
+"``. Further operations will be done in the context of the given "
+"project."
+msgstr ""
+
+#: src/reference/reference/sbt.md:172
+msgid ""
+"`~ ` Executes the project specified action or method whenever "
+"source files change."
+msgstr ""
+
+#: src/reference/reference/sbt.md:175
+msgid ""
+"`< filename` Executes the commands in the given file. Each command should be "
+"on its own line. Empty lines and lines beginning with '#' are ignored"
+msgstr ""
+
+#: src/reference/reference/sbt.md:178
+msgid ""
+"`A ; B` Execute A and if it succeeds, run B. Note that the leading semicolon "
+"is required."
+msgstr ""
+
+#: src/reference/reference/sbt.md:180
+msgid ""
+"`eval ` Evaluates the given Scala expression and returns "
+"the result and inferred type. This can be used to set system properties, as "
+"a calculator, to fork processes, etc ... For example:"
+msgstr ""
+
+#: src/reference/reference/sbt.md:184
+msgid ""
+"```\n"
+"> eval System.setProperty(\"demo\", \"true\")\n"
+"> eval 1+1\n"
+"> eval \"ls -l\" !\n"
+"```"
+msgstr ""
+
+#: src/reference/reference/sbt.md:201
+msgid "Commands for managing the build definition"
+msgstr ""
+
+#: src/reference/reference/sbt.md:203
+msgid ""
+"`reload [plugins|return]` If no argument is specified, reloads the build, "
+"recompiling any build or plugin definitions as necessary. reload plugins "
+"changes the current project to the build definition project (in `project/`). "
+"This can be useful to directly manipulate the build definition. For example, "
+"running clean on the build definition project will force snapshots to be "
+"updated and the build definition to be recompiled. reload return changes "
+"back to the main project."
+msgstr ""
+
+#: src/reference/reference/sbt.md:210
+msgid ""
+"`set ` Evaluates and applies the given setting "
+"definition. The setting applies until sbt is restarted, the build is "
+"reloaded, or the setting is overridden by another set command or removed by "
+"the session command."
+msgstr ""
+
+#: src/reference/reference/sbt.md:216
+msgid ""
+"`session ` Manages session settings defined by the `set` command. "
+"It can persist settings configured at the prompt."
+msgstr ""
+
+#: src/reference/reference/sbt.md:219
+msgid ""
+"`inspect ` Displays information about settings, such as the "
+"value, description, defining scope, dependencies, delegation chain, and "
+"related settings."
+msgstr ""
+
+#: src/reference/reference/sbt.md:224
+msgid "sbt runner and launcher"
+msgstr ""
+
+#: src/reference/reference/sbt.md:227
+msgid ""
+"When launching the `sbt` runner from the system shell, various system "
+"properties or JVM extra options can be specified to influence its behaviour."
+msgstr ""
+
+#: src/reference/reference/sbt.md:230
+msgid "sbt JVM options and system properties"
+msgstr ""
+
+#: src/reference/reference/sbt.md:232
+msgid ""
+"If the `JAVA_OPTS` and/or `SBT_OPTS` environment variables are defined when "
+"`sbt` starts, their content is passed as command line arguments to the JVM "
+"running sbt server."
+msgstr ""
+
+#: src/reference/reference/sbt.md:236
+msgid ""
+"If a file named `.jvmopts` exists in the current directory, its content is "
+"appended to `JAVA_OPTS` at sbt startup. Similarly, if `.sbtopts` and/or `/"
+"etc/sbt/sbtopts` exist, their content is appended to `SBT_OPTS`. The default "
+"value of `JAVA_OPTS` is `-Dfile.encoding=UTF8`."
+msgstr ""
+
+#: src/reference/reference/sbt.md:241
+msgid ""
+"You can also specify JVM system properties and command line options directly "
+"as `sbt` arguments: any `-Dkey=val` argument will be passed as-is to the "
+"JVM, and any `-J-Xfoo` will be passed as `-Xfoo`."
+msgstr ""
+
+#: src/reference/reference/sbt.md:245
+msgid "See also `sbt --help` for more details."
+msgstr ""
+
+#: src/reference/reference/sbt.md:248
+msgid "sbt JVM heap, permgen, and stack sizes"
+msgstr ""
+
+#: src/reference/reference/sbt.md:250
+msgid ""
+"If you find yourself running out of permgen space or your workstation is low "
+"on memory, adjust the JVM configuration as you would for any java "
+"application."
+msgstr ""
+
+#: src/reference/reference/sbt.md:254
+msgid "For example a common set of memory-related options is:"
+msgstr ""
+
+#: src/reference/reference/sbt.md:257
+msgid "\"-Xmx2048M -Xss2M\""
+msgstr ""
+
+#: src/reference/reference/sbt.md:261
+msgid "Or if you prefer to specify them just for this session:"
+msgstr ""
+
+#: src/reference/reference/sbt.md:267
+msgid "Boot directory"
+msgstr ""
+
+#: src/reference/reference/sbt.md:269
+msgid ""
+"`sbt` runner is just a bootstrap, the actual sbt server, Scala compiler and "
+"standard library are by default downloaded to the shared directory `\\"
+"$HOME/.sbt/boot/`."
+msgstr ""
+
+#: src/reference/reference/sbt.md:273
+msgid ""
+"To change the location of this directory, set the `sbt.boot.directory` "
+"system property. A relative path will be resolved against the current "
+"working directory, which can be useful if you want to avoid sharing the boot "
+"directory between projects. For example, the following uses the pre-0.11 "
+"style of putting the boot directory in `project/boot/`:"
+msgstr ""
+
+#: src/reference/reference/sbt.md:284
+msgid "Terminal encoding"
+msgstr ""
+
+#: src/reference/reference/sbt.md:286
+msgid ""
+"The character encoding used by your terminal may differ from Java's default "
+"encoding for your platform. In this case, you will need to specify the `file."
+"encoding=` system property, which might look like:"
+msgstr ""
+
+#: src/reference/reference/sbt.md:291
+msgid "\"-Dfile.encoding=Cp1252\""
+msgstr ""
+
+#: src/reference/reference/sbt.md:295
+msgid "HTTP/HTTPS/FTP Proxy"
+msgstr ""
+
+#: src/reference/reference/sbt.md:297
+msgid ""
+"On Unix, sbt will pick up any HTTP, HTTPS, or FTP proxy settings from the "
+"standard `http_proxy`, `https_proxy`, and `ftp_proxy` environment variables. "
+"If you are behind a proxy requiring authentication, you need to pass some "
+"supplementary flags at sbt startup. See [JVM networking system properties]"
+"(https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/net/doc-"
+"files/net-properties.html) for more details."
+msgstr ""
+
+#: src/reference/reference/sbt.md:303
+msgid "For example:"
+msgstr ""
+
+#: src/reference/reference/sbt.md:309
+msgid ""
+"On Windows, your script should set properties for proxy host, port, and if "
+"applicable, username and password. For example, for HTTP:"
+msgstr ""
+
+#: src/reference/reference/sbt.md:316
+msgid ""
+"Replace `http` with `https` or `ftp` in the above command line to configure "
+"HTTPS or FTP."
+msgstr ""
+
+#: src/reference/reference/sbt.md:319
+msgid "Other system properties"
+msgstr ""
+
+#: src/reference/reference/sbt.md:321
+msgid "The following system properties can also be passed to `sbt` runner:"
+msgstr ""
+
+#: src/reference/reference/sbt.md:323
+msgid "`-Dsbt.banner=true`"
+msgstr ""
+
+#: src/reference/reference/sbt.md:325
+msgid "Show a welcome banner advertising new features."
+msgstr ""
+
+#: src/reference/reference/sbt.md:327
+msgid "`-Dsbt.ci=true`"
+msgstr ""
+
+#: src/reference/reference/sbt.md:329
+msgid ""
+"Default `false` (unless then env var `BUILD_NUMBER` is set). For continuous "
+"integration environments. Suppress supershell and color."
+msgstr ""
+
+#: src/reference/reference/sbt.md:331
+msgid "`-Dsbt.client=true`"
+msgstr ""
+
+#: src/reference/reference/sbt.md:333
+msgid "Run the sbt client."
+msgstr ""
+
+#: src/reference/reference/sbt.md:335
+msgid "`-Dsbt.color=auto`"
+msgstr ""
+
+#: src/reference/reference/sbt.md:337
+msgid "To turn on color, use `always` or `true`."
+msgstr ""
+
+#: src/reference/reference/sbt.md:338
+msgid "To turn off color, use `never` or `false`."
+msgstr ""
+
+#: src/reference/reference/sbt.md:339
+msgid ""
+"To use color if the output is a terminal (not a pipe) that supports color, "
+"use `auto`."
+msgstr ""
+
+#: src/reference/reference/sbt.md:341
+msgid "`-Dsbt.coursier.home=$HOME/.cache/coursier/v1`"
+msgstr ""
+
+#: src/reference/reference/sbt.md:343
+msgid ""
+"Location of the Coursier artifact cache, where the default is defined by "
+"[Coursier cache resolution logic](https://get-coursier.io/docs/cache."
+"html#default-location). You can verify the value with the command "
+"`csrCacheDirectory`."
+msgstr ""
+
+#: src/reference/reference/sbt.md:345
+msgid "`-Dsbt.genbuildprops=true`"
+msgstr ""
+
+#: src/reference/reference/sbt.md:347
+msgid ""
+"Generate `build.properties` if missing. If unset, this defers to `sbt.skip."
+"version.write`."
+msgstr ""
+
+#: src/reference/reference/sbt.md:349
+msgid "`-Dsbt.global.base=$HOME/.sbt/`"
+msgstr ""
+
+#: src/reference/reference/sbt.md:351
+msgid "The directory containing global settings and plugins."
+msgstr ""
+
+#: src/reference/reference/sbt.md:353
+msgid "`-Dsbt.override.build.repos=true`"
+msgstr ""
+
+#: src/reference/reference/sbt.md:355
+msgid ""
+"If true, repositories configured in a build definition are ignored and the "
+"repositories configured for the launcher are used instead."
+msgstr ""
+
+#: src/reference/reference/sbt.md:359
+msgid "`-Dsbt.repository.config=$HOME/.sbt/repositories`"
+msgstr ""
+
+#: src/reference/reference/sbt.md:361
+msgid ""
+"A file containing the repositories to use for the launcher. The format is "
+"the same as a `[repositories]` section for a sbt launcher configuration "
+"file. This setting is typically used in conjunction with setting `sbt."
+"override.build.repos` to `true`."
+msgstr ""
diff --git a/po/summary/summary.ja.po b/po/summary/summary.ja.po
new file mode 100644
index 00000000..32761f93
--- /dev/null
+++ b/po/summary/summary.ja.po
@@ -0,0 +1,149 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T01:14:09-04:00\n"
+"PO-Revision-Date: 2024-10-30 02:58-0400\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 3.5\n"
+
+#: src/reference/SUMMARY.md:1
+msgid "Summary"
+msgstr ""
+
+#: src/reference/SUMMARY.md:3
+msgid "Introduction"
+msgstr "sbt 記"
+
+#: src/reference/SUMMARY.md:5
+msgid "Quick Start"
+msgstr ""
+
+#: src/reference/SUMMARY.md:6
+msgid "Installing sbt runner"
+msgstr ""
+
+#: src/reference/SUMMARY.md:7
+msgid "sbt by example"
+msgstr ""
+
+#: src/reference/SUMMARY.md:8
+msgid "Getting Started"
+msgstr ""
+
+#: src/reference/SUMMARY.md:9
+msgid "Why sbt exists"
+msgstr ""
+
+#: src/reference/SUMMARY.md:10
+msgid "Creating a new build"
+msgstr ""
+
+#: src/reference/SUMMARY.md:11
+msgid "sbt components"
+msgstr ""
+
+#: src/reference/SUMMARY.md:12
+msgid "Basic tasks"
+msgstr ""
+
+#: src/reference/SUMMARY.md:13
+msgid "Build definition basics"
+msgstr ""
+
+#: src/reference/SUMMARY.md:14
+msgid "Library dependency basics"
+msgstr ""
+
+#: src/reference/SUMMARY.md:15
+msgid "Multi project basics"
+msgstr ""
+
+#: src/reference/SUMMARY.md:16
+msgid "Build layout"
+msgstr ""
+
+#: src/reference/SUMMARY.md:17
+msgid "sbt with IDEs"
+msgstr ""
+
+#: src/reference/SUMMARY.md:18
+msgid "Changes"
+msgstr ""
+
+#: src/reference/SUMMARY.md:19
+msgid "sbt 2.0 changes"
+msgstr ""
+
+#: src/reference/SUMMARY.md:20
+msgid "Migrating from sbt 1.x"
+msgstr ""
+
+#: src/reference/SUMMARY.md:21
+msgid "Concepts"
+msgstr ""
+
+#: src/reference/SUMMARY.md:22
+msgid "Command"
+msgstr ""
+
+#: src/reference/SUMMARY.md:23
+msgid "Cross building"
+msgstr ""
+
+#: src/reference/SUMMARY.md:24
+msgid "Caching"
+msgstr ""
+
+#: src/reference/SUMMARY.md:25
+msgid "Reference"
+msgstr ""
+
+#: src/reference/SUMMARY.md:26
+msgid "sbt"
+msgstr ""
+
+#: src/reference/SUMMARY.md:27
+msgid "sbt update"
+msgstr ""
+
+#: src/reference/SUMMARY.md:28
+msgid "Cross building setup"
+msgstr ""
+
+#: src/reference/SUMMARY.md:29
+msgid "Remote cache setup"
+msgstr ""
+
+#: src/reference/SUMMARY.md:30
+msgid "Recipes"
+msgstr ""
+
+#: src/reference/SUMMARY.md:31
+msgid "Write hello world"
+msgstr ""
+
+#: src/reference/SUMMARY.md:32
+msgid "Use sbt as Metals build server"
+msgstr ""
+
+#: src/reference/SUMMARY.md:33
+msgid "Import to IntelliJ IDEA"
+msgstr ""
+
+#: src/reference/SUMMARY.md:34
+msgid "Use Neovim"
+msgstr ""
+
+#: src/reference/SUMMARY.md:35
+msgid "Appendix: Glossary"
+msgstr ""
+
+#: src/reference/SUMMARY.md:36
+msgid "Appendix: Setup notes"
+msgstr ""
diff --git a/po/summary/summary.zh-cn.po b/po/summary/summary.zh-cn.po
new file mode 100644
index 00000000..fd5a8fdc
--- /dev/null
+++ b/po/summary/summary.zh-cn.po
@@ -0,0 +1,148 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: The Book of sbt\n"
+"POT-Creation-Date: 2024-10-30T03:50:36-04:00\n"
+"PO-Revision-Date: 2024-10-30T03:50:36-04:00\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-cn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/reference/SUMMARY.md:1
+msgid "Summary"
+msgstr ""
+
+#: src/reference/SUMMARY.md:3
+msgid "Introduction"
+msgstr ""
+
+#: src/reference/SUMMARY.md:5
+msgid "Quick Start"
+msgstr ""
+
+#: src/reference/SUMMARY.md:6
+msgid "Installing sbt runner"
+msgstr ""
+
+#: src/reference/SUMMARY.md:7
+msgid "sbt by example"
+msgstr ""
+
+#: src/reference/SUMMARY.md:8
+msgid "Getting Started"
+msgstr ""
+
+#: src/reference/SUMMARY.md:9
+msgid "Why sbt exists"
+msgstr ""
+
+#: src/reference/SUMMARY.md:10
+msgid "Creating a new build"
+msgstr ""
+
+#: src/reference/SUMMARY.md:11
+msgid "sbt components"
+msgstr ""
+
+#: src/reference/SUMMARY.md:12
+msgid "Basic tasks"
+msgstr ""
+
+#: src/reference/SUMMARY.md:13
+msgid "Build definition basics"
+msgstr ""
+
+#: src/reference/SUMMARY.md:14
+msgid "Library dependency basics"
+msgstr ""
+
+#: src/reference/SUMMARY.md:15
+msgid "Multi project basics"
+msgstr ""
+
+#: src/reference/SUMMARY.md:16
+msgid "Build layout"
+msgstr ""
+
+#: src/reference/SUMMARY.md:17
+msgid "sbt with IDEs"
+msgstr ""
+
+#: src/reference/SUMMARY.md:18
+msgid "Changes"
+msgstr ""
+
+#: src/reference/SUMMARY.md:19
+msgid "sbt 2.0 changes"
+msgstr ""
+
+#: src/reference/SUMMARY.md:20
+msgid "Migrating from sbt 1.x"
+msgstr ""
+
+#: src/reference/SUMMARY.md:21
+msgid "Concepts"
+msgstr ""
+
+#: src/reference/SUMMARY.md:22
+msgid "Command"
+msgstr ""
+
+#: src/reference/SUMMARY.md:23
+msgid "Cross building"
+msgstr ""
+
+#: src/reference/SUMMARY.md:24
+msgid "Caching"
+msgstr ""
+
+#: src/reference/SUMMARY.md:25
+msgid "Reference"
+msgstr ""
+
+#: src/reference/SUMMARY.md:26
+msgid "sbt"
+msgstr ""
+
+#: src/reference/SUMMARY.md:27
+msgid "sbt update"
+msgstr ""
+
+#: src/reference/SUMMARY.md:28
+msgid "Cross building setup"
+msgstr ""
+
+#: src/reference/SUMMARY.md:29
+msgid "Remote cache setup"
+msgstr ""
+
+#: src/reference/SUMMARY.md:30
+msgid "Recipes"
+msgstr ""
+
+#: src/reference/SUMMARY.md:31
+msgid "Write hello world"
+msgstr ""
+
+#: src/reference/SUMMARY.md:32
+msgid "Use sbt as Metals build server"
+msgstr ""
+
+#: src/reference/SUMMARY.md:33
+msgid "Import to IntelliJ IDEA"
+msgstr ""
+
+#: src/reference/SUMMARY.md:34
+msgid "Use Neovim"
+msgstr ""
+
+#: src/reference/SUMMARY.md:35
+msgid "Appendix: Glossary"
+msgstr ""
+
+#: src/reference/SUMMARY.md:36
+msgid "Appendix: Setup notes"
+msgstr ""
diff --git a/project/MdBookSitePlugin.scala b/project/MdBookSitePlugin.scala
index 2ea0d1ac..d76f5f76 100644
--- a/project/MdBookSitePlugin.scala
+++ b/project/MdBookSitePlugin.scala
@@ -26,7 +26,10 @@ object MdBookSitePlugin extends AutoPlugin {
config / mdbookBuild := {
import scala.sys.process.*
val dir = mdbookDirectory.value
- Process(List("mdbook", "build"), cwd = dir).!
+ IO.createDirectory(dir / "book")
+ Process(List("mdbook", "build", "-d", "book/en"), cwd = dir).!
+ Process(List("script/build.sh", "ja"), cwd = dir).!
+ Process(List("script/build.sh", "zh-cn"), cwd = dir).!
val out = dir / "book"
out
},
diff --git a/script/build.sh b/script/build.sh
new file mode 100755
index 00000000..99eaf269
--- /dev/null
+++ b/script/build.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+set -o errexit # abort on nonzero exitstatus
+set -o nounset # abort on unbound variable
+set -o pipefail # don't hide errors within pipes
+
+locale=""
+
+show_help() {
+ echo "Usage: $0 "
+}
+
+if [[ $# -eq 0 ]]; then
+ show_help
+ exit 1
+fi
+
+while [[ $# -gt 0 ]]; do
+ case "$1" in
+ *)
+ locale="$1"
+ shift
+ ;;
+ esac
+done
+
+script/concat.sh "$locale"
+MDBOOK_BOOK__LANGUAGE="$locale" mdbook build -d "book/$locale"
diff --git a/script/concat.sh b/script/concat.sh
new file mode 100755
index 00000000..fbe8121a
--- /dev/null
+++ b/script/concat.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+set -o errexit # abort on nonzero exitstatus
+set -o nounset # abort on unbound variable
+set -o pipefail # don't hide errors within pipes
+
+locale=""
+
+show_help() {
+ echo "Usage: $0 "
+}
+
+if [[ $# -eq 0 ]]; then
+ show_help
+ exit 1
+fi
+
+while [[ $# -gt 0 ]]; do
+ case "$1" in
+ *)
+ locale="$1"
+ shift
+ ;;
+ esac
+done
+
+output_file="po/$locale.po"
+head -n 13 po/summary/summary.$locale.po > "$output_file"
+
+for file in po/**/*.$locale.po; do
+ # Append each file's content to the output file, starting from line 13
+ tail -n +13 "$file" >> "$output_file"
+ echo -e "\n" >> "$output_file"
+done
diff --git a/script/genpo.sh b/script/genpo.sh
new file mode 100755
index 00000000..0a9819b9
--- /dev/null
+++ b/script/genpo.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+set -o errexit # abort on nonzero exitstatus
+set -o nounset # abort on unbound variable
+set -o pipefail # don't hide errors within pipes
+
+locale=""
+
+show_help() {
+ echo "Usage: $0 "
+}
+
+if [[ $# -eq 0 ]]; then
+ show_help
+ exit 1
+fi
+
+while [[ $# -gt 0 ]]; do
+ case "$1" in
+ *)
+ locale="$1"
+ shift
+ ;;
+ esac
+done
+
+MDBOOK_OUTPUT='{"xgettext": { "depth": 3 }}' mdbook build -d po
+
+find po -type f -name "*.pot" | while read -r potfile; do
+ pofile="${potfile%.pot}.$locale.po"
+ msginit --locale=$locale --input="$potfile" --no-translator --output="$pofile"
+done
diff --git a/script/serve.sh b/script/serve.sh
new file mode 100755
index 00000000..3184fe5f
--- /dev/null
+++ b/script/serve.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+set -o errexit # abort on nonzero exitstatus
+set -o nounset # abort on unbound variable
+set -o pipefail # don't hide errors within pipes
+
+locale=""
+
+show_help() {
+ echo "Usage: $0 "
+}
+
+if [[ $# -eq 0 ]]; then
+ show_help
+ exit 1
+fi
+
+while [[ $# -gt 0 ]]; do
+ case "$1" in
+ *)
+ locale="$1"
+ shift
+ ;;
+ esac
+done
+
+script/concat.sh "$locale"
+MDBOOK_BOOK__LANGUAGE="$locale" mdbook serve -d "book/$locale"
diff --git a/script/sync.sh b/script/sync.sh
new file mode 100755
index 00000000..32b07716
--- /dev/null
+++ b/script/sync.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+set -o errexit # abort on nonzero exitstatus
+set -o nounset # abort on unbound variable
+set -o pipefail # don't hide errors within pipes
+
+locale=""
+
+show_help() {
+ echo "Usage: $0 "
+}
+
+if [[ $# -eq 0 ]]; then
+ show_help
+ exit 1
+fi
+
+while [[ $# -gt 0 ]]; do
+ case "$1" in
+ *)
+ locale="$1"
+ shift
+ ;;
+ esac
+done
+
+MDBOOK_OUTPUT='{"xgettext": { "depth": 3 }}' mdbook build -d po
+
+find po -type f -name "*.pot" | while read -r potfile; do
+ pofile="${potfile%.pot}.$locale.po"
+ msgmerge --update "$pofile" "$potfile"
+done
diff --git a/src/reference/README.md b/src/reference/README.md
index 71514ec2..28acf528 100644
--- a/src/reference/README.md
+++ b/src/reference/README.md
@@ -1,11 +1,9 @@
The Book of sbt (Draft)
=======================
-```admonish warning
This is a draft documentation of sbt 2.x that is yet to be released.
While the general concept translates to sbt 1.x,
details of both 2.x and this doc are subject to change.
-```
![sbt logo](files/sbt-logo.svg)
diff --git a/src/reference/SUMMARY.md b/src/reference/SUMMARY.md
index 72e2803b..d28cf73f 100644
--- a/src/reference/SUMMARY.md
+++ b/src/reference/SUMMARY.md
@@ -15,19 +15,19 @@
- [Multi project basics](guide/multi-project-basics.md)
- [Build layout](guide/build-layout.md)
- [sbt with IDEs](guide/IDE.md)
-- [Changes]()
+- [Changes](changes/index.md)
- [sbt 2.0 changes](changes/sbt-2.0-change-summary.md)
- [Migrating from sbt 1.x](changes/migrating-from-sbt-1.x.md)
-- [Concepts]()
+- [Concepts](concepts/index.md)
- [Command](concepts/command.md)
- [Cross building](concepts/cross-building.md)
- [Caching](concepts/caching.md)
-- [Reference]()
+- [Reference](reference/index.md)
- [sbt](reference/sbt.md)
- [sbt update](reference/sbt-update.md)
- [Cross building setup](reference/cross-building-setup.md)
- [Remote cache setup](reference/remote-cache-setup.md)
-- [Recipes]()
+- [Recipes](recipes/index.md)
- [Write hello world](recipes/hello-world.md)
- [Use sbt as Metals build server](recipes/use-sbt-as-metals-build-server.md)
- [Import to IntelliJ IDEA](recipes/import-to-intellij.md)
diff --git a/src/reference/changes/index.md b/src/reference/changes/index.md
new file mode 100644
index 00000000..b671f0bb
--- /dev/null
+++ b/src/reference/changes/index.md
@@ -0,0 +1 @@
+# Changes
diff --git a/src/reference/concepts/index.md b/src/reference/concepts/index.md
new file mode 100644
index 00000000..74d42e13
--- /dev/null
+++ b/src/reference/concepts/index.md
@@ -0,0 +1 @@
+# Concepts
diff --git a/src/reference/custom-202107.css b/src/reference/custom-202107.css
deleted file mode 100644
index 6dbd2b48..00000000
--- a/src/reference/custom-202107.css
+++ /dev/null
@@ -1,231 +0,0 @@
-p {
- width: inherit;
-}
-
-div.toccolumn {
- overflow-y: inherit;
- border-right: solid 1px lightgray;
- font-size: 0.85em;
-}
-
-div.header {
- font-size: 18px;
- height: 75px;
- border-top: 5px solid #1a84ad;
- -webkit-box-shadow: 0px 4px 2px 0px rgba(0,0,0,0.3);
- -moz-box-shadow: 0px 4px 2px 0px rgba(0,0,0,0.3);
- box-shadow: 0px 4px 2px 0px rgba(0,0,0,0.3);
- font-family: 'Source Sans Pro', 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif;
-}
-
-div.logo {
- display: inline-block;
- margin-left: 2em;
-}
-
-div.logo img {
- height: 56px;
-}
-
-.versions select {
- margin-left: 2em;
- font-weight: bold;
- margin-top: 2em;
- vertical-align: top;
- font-size: 14px;
-}
-
-div.header div.row {
-}
-
-div.header .nav {
- height: 75px;
- position: relative;
- float: right;
- border-right: 1px solid #ebebeb;
- border-bottom: 0px solid transparent;
-}
-
-div.docsearch {
- height:75px;
- display:block;
- float: left;
-
- display: flex;
- justify-content: center;
- align-items: center;
-}
-
-div.docsearch input.ds-input {
- max-width:200px;
- float:left;
-}
-
-div.header .nav>a {
- display: inline-block;
- font-weight: 400;
- font-style: normal;
- font-size: 1.0em;
- text-transform: uppercase;
- text-decoration: none;
- display: block;
- float: left;
- height: 75px;
- line-height: 80px;
- padding: 0 1.1em;
- color: #2E6D82;
- border: none;
- border-bottom: 0px solid transparent;
- border-left: 1px solid #ebebeb;
- font-weight: bold;
- letter-spacing: -.03em;
- font-size: 14px;
- transition: all 200ms ease-in-out;
-}
-div.header .nav>a:hover {
- background: #f5f5f5;
- text-decoration: none;
- box-shadow: inset 0 4px 0 #2E6D82, inset 0 0 3px #ebebeb;
- transition: all 200ms ease-in-out;
-}
-
-.header .nav img.social {
- height: 20px;
- vertical-align: text-top;
-}
-
-
-div.footer {
- height: auto;
-}
-
-.fw-wrapper {
- width: 100%;
- margin: 0;
- padding: 0;
- background: #ffffff;
-}
-.fw-wrapper.teal-blue {
- background: #2E6D82;
-}
-
-.fw-wrapper.navy-ltr {
- background: #406174;
-}
-
-.svg-icon {
- width: 30px;
- height: 30px;
-}
-
-
-body .support-strip .row{
- background: #406174;
-}
-
-.support-item {
- display: inline-block;
- margin: 5px 60px 5px 0;
-}
-.support-icon {
- display: inline-block;
- margin-right: 10px;
-
-}
-
-.support-detail {
- display: inline-block;
- min-height: 50px;
- vertical-align: top;
- text-align: left;
-}
-.support-detail h2 {
- color: #ffffff !important;
- font-size: 18px;
- text-transform: uppercase;
- margin: 6px 0 0 0;
- padding: 0;
- width: auto;
- background-color: transparent;
- font-weight: 700;
- line-height: 1.1em;
-
-}
-.support-detail a {
- color: #c2d2dc;
- margin: 0;
- padding: 0;
- margin-right: 6px;
- font-size: 16px;
- text-decoration: none;
-}
-body .support-detail a:hover {
- color: #ffffff;
- text-decoration: underline;
-}
-/* footer */
-footer {
- z-index: 10;
- padding-top: 36px;
- padding-bottom: 30px;
- width: 100%;
- overflow: hidden;
- font-family: 'Source Sans Pro', 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif;
- color: #ffffff;
- background: #1a84ad;
- font-size: 12px;
-}
-body footer > .container {
- background: #1a84ad !important;
-}
-footer .row {
- background: #1a84ad; /* Lightbend azure */
-}
-footer a {
- display: inline-block;
- font-size: 16px;
- font-weight: 400;
- color: #ffffff;
- margin-right: 10px;
- text-decoration: none;
-}
-footer a:hover {
- text-decoration: underline;
-}
-
-footer a:link,footer a:visited,footer a:hover,footer a:active {
- color: #ffffff;
-}
-footer .ts {
- vertical-align: top;
- width: 33.33333333%;
- float: left;
- font-size: 12px;
- height: 23px;
- line-height: 19px;
-
-}
-footer .ts img {
- height: 20px;
- margin-left: 10px;
-
-}
-footer .sbt {
- vertical-align: middle;
- text-transform: uppercase;
- width: 66.66666667%;
- float: left;
-}
-footer .sbt a {
- font-size: 14px;
- font-weight: 700;
- vertical-align: middle;
- height: 20px;
- line-height: 20px;
-}
-footer .sbt a:hover {
- color: #ffffff;
-}
-footer .sbt img {
- height: 20px;
-}
diff --git a/src/reference/custom-202402.css b/src/reference/custom-202402.css
deleted file mode 100644
index 8cc48ccb..00000000
--- a/src/reference/custom-202402.css
+++ /dev/null
@@ -1,42 +0,0 @@
-html {
- font-family: "Lora";
-}
-
-:root {
- font-size: 90%;
-}
-
-pre {
- border: solid 1px lightgray;
- line-height: 1.8rem;
- font-weight: 500;
-}
-
-code {
- font-family: 'Inconsolata', monospace !important;
-}
-
-p code {
- font-weight: 600;
-}
-
-li code {
- font-weight: 600;
-}
-
-h1 {
- font-family: 'Linux Biolinum';
-}
-
-h1.menu-title {
- font-family: "Lora";
- font-size: 1.5rem;
-}
-
-h2 {
- font-family: 'Linux Biolinum';
-}
-
-h3 {
- font-family: 'Linux Biolinum';
-}
diff --git a/src/reference/custom-202410.css b/src/reference/custom-202410.css
new file mode 100644
index 00000000..80c4210b
--- /dev/null
+++ b/src/reference/custom-202410.css
@@ -0,0 +1,107 @@
+html {
+ font-family: "Lora", 'serif';
+}
+
+[lang=ja] html {
+ font-family: "Lora", "Noto Serif", 'serif';
+}
+
+[lang=ja] p {
+ font-family: "Lora", "Noto Serif", 'serif';
+}
+
+[lang=ja] a {
+ font-family: "Lora", "Noto Serif", 'serif';
+}
+
+[lang=zh-cn] html {
+ font-family: "Lora", "Noto Serif", 'serif';
+}
+
+[lang=zh-cn] p {
+ font-family: "Lora", "Noto Serif", 'serif';
+}
+
+[lang=zh-cn] a {
+ font-family: "Lora", "Noto Serif", 'serif';
+}
+
+:root {
+ font-size: 80%;
+}
+
+pre {
+ border: solid 1px lightgray;
+ line-height: 1.8rem;
+ font-weight: 500;
+}
+
+code {
+ font-family: 'Inconsolata', monospace !important;
+}
+
+p code {
+ font-weight: 600;
+}
+
+li code {
+ font-weight: 600;
+}
+
+h1 {
+ font-family: 'Linux Biolinum', 'serif';
+}
+
+[lang=ja] h1 {
+ font-family: 'Linux Biolinum', "Noto Serif", 'serif';
+}
+
+[lang=zh-cn] h1 {
+ font-family: 'Linux Biolinum', "Noto Serif", 'serif';
+}
+
+h1.menu-title {
+ font-family: "Lora",
+ 'serif';
+ font-size: 1.5rem;
+}
+
+[lang=ja] h1.menu-title {
+ font-family: "Lora",
+ "Noto Serif", 'serif';
+ font-size: 1.5rem;
+}
+
+[lang=zh-cn] h1.menu-title {
+ font-family: "Lora",
+ "Noto Serif", 'serif';
+ font-size: 1.5rem;
+}
+
+h2 {
+ font-family: 'Linux Biolinum', 'serif';
+}
+
+[lang=ja] h2 {
+ font-family: 'Linux Biolinum',
+ "Noto Serif", 'serif';
+}
+
+[lang=zh-cn] h2 {
+ font-family: 'Linux Biolinum',
+ "Noto Serif", 'serif';
+}
+
+h3 {
+ font-family: 'Linux Biolinum', 'serif';
+}
+
+[lang=ja] h3 {
+ font-family: 'Linux Biolinum',
+ "Noto Serif", 'serif';
+}
+
+[lang=zh-cn] h3 {
+ font-family: 'Linux Biolinum',
+ "Noto Serif", 'serif';
+}
diff --git a/src/reference/recipes/index.md b/src/reference/recipes/index.md
new file mode 100644
index 00000000..ae5e3548
--- /dev/null
+++ b/src/reference/recipes/index.md
@@ -0,0 +1 @@
+# Recipes
diff --git a/src/reference/reference/index.md b/src/reference/reference/index.md
new file mode 100644
index 00000000..cf5aa074
--- /dev/null
+++ b/src/reference/reference/index.md
@@ -0,0 +1 @@
+# Reference
diff --git a/theme/fonts/NotoSerifCJK-wght-400-900.ttf.ttc b/theme/fonts/NotoSerifCJK-wght-400-900.ttf.ttc
new file mode 100755
index 00000000..c88a1a05
Binary files /dev/null and b/theme/fonts/NotoSerifCJK-wght-400-900.ttf.ttc differ
diff --git a/theme/fonts/fonts.css b/theme/fonts/fonts.css
index 94960f78..2c37398f 100644
--- a/theme/fonts/fonts.css
+++ b/theme/fonts/fonts.css
@@ -32,6 +32,11 @@
src: url(Inconsolata[wdth,wght].ttf);
}
+@font-face {
+ font-family: "Noto Serif";
+ src: url(NotoSerifCJK-wght-400-900.ttf.ttc);
+}
+
/* Open Sans is licensed under the Apache License, Version 2.0. See http://www.apache.org/licenses/LICENSE-2.0 */
/* Source Code Pro is under the Open Font License. See https://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL */