[docs] translation support (#35166)
* chore: update crowdin and add serve command * feat: upload all desired files to crowdin * fix: absolute urls for pdfs * fix: do not import components with relative paths * feat: updated readme * fix: whitespace
This commit is contained in:
parent
1517d22ecc
commit
8f7fda8b9f
|
@ -63,8 +63,12 @@ npm run start
|
||||||
|
|
||||||
## Translations
|
## Translations
|
||||||
|
|
||||||
Translations are sourced from [Crowdin](https://docusaurus.io/docs/i18n/crowdin) and generated when `master` is built.
|
Translations are sourced from [Crowdin](https://docusaurus.io/docs/i18n/crowdin)
|
||||||
For local development use the following two commands in this `docs` directory.
|
and generated when the branch noted as the `STABLE` channel is built via the
|
||||||
|
`build.sh` script.
|
||||||
|
|
||||||
|
For local development, and with the `CROWDIN_PERSONAL_TOKEN` env variable set,
|
||||||
|
use the following two commands in this `docs` directory.
|
||||||
|
|
||||||
To download the newest documentation translations run:
|
To download the newest documentation translations run:
|
||||||
|
|
||||||
|
@ -72,12 +76,45 @@ To download the newest documentation translations run:
|
||||||
npm run crowdin:download
|
npm run crowdin:download
|
||||||
```
|
```
|
||||||
|
|
||||||
To upload changes from `src` & generate [explicit IDs](https://docusaurus.io/docs/markdown-features/headings#explicit-ids):
|
To upload changes from `src` & generate
|
||||||
|
[explicit IDs](https://docusaurus.io/docs/markdown-features/headings#explicit-ids):
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
npm run crowdin:upload
|
npm run crowdin:upload
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> Translations are only included when deploying the `STABLE` channel of the docs
|
||||||
|
> (via `build.sh`). Resulting in only the `docs.solanalabs.com` documentation
|
||||||
|
> site to include translated content. Therefore, the `edge` and `beta` docs
|
||||||
|
> sites are not expected to include translated content, even though the language
|
||||||
|
> selector will still be present.
|
||||||
|
|
||||||
|
### Common issues
|
||||||
|
|
||||||
|
#### `CROWDIN_PERSONAL_TOKEN` env variable
|
||||||
|
|
||||||
|
The `crowdin.yml` file requires a `CROWDIN_PERSONAL_TOKEN` env variable to be
|
||||||
|
set with a valid Crowdin access token.
|
||||||
|
|
||||||
|
For local development, you can store this in a `.env` file that the Crowdin CLI
|
||||||
|
will auto detect.
|
||||||
|
|
||||||
|
For building and publishing via the GitHub actions, the `CROWDIN_PERSONAL_TOKEN`
|
||||||
|
secret must be set.
|
||||||
|
|
||||||
|
#### Translation locale fails to build with `SyntaxError`
|
||||||
|
|
||||||
|
Some translation locales may fail to build with a `SyntaxError` thrown by
|
||||||
|
Docusaurus due to how certain language symbols get parsed by Docusaurus while
|
||||||
|
generating the static version of the docs.
|
||||||
|
|
||||||
|
> Note: When any locale fails to build, the entire docs build will fail
|
||||||
|
> resulting in the docs not being able to be deployed at all.
|
||||||
|
|
||||||
|
There are several known locales that fail to build the current documentation.
|
||||||
|
They are listed in the commented out `localesNotBuilding` attribute in the
|
||||||
|
[`docusaurus.config.js`](https://github.com/solana-labs/solana/blob/master/docs/docusaurus.config.js)
|
||||||
|
|
||||||
## CI Build Flow
|
## CI Build Flow
|
||||||
|
|
||||||
The docs are built and published in Travis CI with the `./build.sh` script. On each PR, the docs are built, but not published.
|
The docs are built and published in Travis CI with the `./build.sh` script. On each PR, the docs are built, but not published.
|
||||||
|
|
|
@ -4,13 +4,22 @@ base_url: 'https://solana.crowdin.com'
|
||||||
preserve_hierarchy: true
|
preserve_hierarchy: true
|
||||||
files: [
|
files: [
|
||||||
# JSON translation files
|
# JSON translation files
|
||||||
# {
|
{
|
||||||
# source: '/i18n/en/**/*',
|
source: '/i18n/en/**/*',
|
||||||
# translation: '/i18n/%two_letters_code%/**/%original_file_name%',
|
translation: '/i18n/%two_letters_code%/**/%original_file_name%',
|
||||||
#},
|
},
|
||||||
# Docs Markdown files
|
# Docs Markdown files
|
||||||
{
|
{
|
||||||
source: '/src/**/*.md',
|
source: '/src/**/*.md',
|
||||||
translation: '/i18n/%two_letters_code%/docusaurus-plugin-content-docs/current/**/%original_file_name%',
|
translation: '/i18n/%two_letters_code%/docusaurus-plugin-content-docs/current/**/%original_file_name%',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
source: '/src/**/*.mdx',
|
||||||
|
translation: '/i18n/%two_letters_code%/docusaurus-plugin-content-docs/current/**/%original_file_name%',
|
||||||
|
},
|
||||||
|
# Custom sidebar category files
|
||||||
|
{
|
||||||
|
source: '/src/**/*.json',
|
||||||
|
translation: '/i18n/%two_letters_code%/docusaurus-plugin-content-docs/current/**/%original_file_name%',
|
||||||
|
},
|
||||||
]
|
]
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
"name": "solana-docs",
|
"name": "solana-docs",
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@crowdin/cli": "^3.6.1",
|
"@crowdin/cli": "^3.17.0",
|
||||||
"@docusaurus/core": "^2.2.0",
|
"@docusaurus/core": "^2.2.0",
|
||||||
"@docusaurus/plugin-google-gtag": "^2.4.0",
|
"@docusaurus/plugin-google-gtag": "^2.4.0",
|
||||||
"@docusaurus/preset-classic": "^2.2.0",
|
"@docusaurus/preset-classic": "^2.2.0",
|
||||||
|
@ -2029,12 +2029,15 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@crowdin/cli": {
|
"node_modules/@crowdin/cli": {
|
||||||
"version": "3.9.0",
|
"version": "3.17.0",
|
||||||
"resolved": "https://registry.npmjs.org/@crowdin/cli/-/cli-3.9.0.tgz",
|
"resolved": "https://registry.npmjs.org/@crowdin/cli/-/cli-3.17.0.tgz",
|
||||||
"integrity": "sha512-4wQjqJZmU/mg3VYfRL6IYXw/pPAL9vdfW3QVSBovYA+bYaEt43ZuGsSrqeBGOhLehasWwRqklXWsl96gxQlLdw==",
|
"integrity": "sha512-ipr5wyBvpVuJ/DtJgDqTJiECu7zsVn9DwyTdf+sa0ukksXyiX3+H6wPm4eefIfEVSEaM92Q572dJZ5OnIH/Sag==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"njre": "^0.2.0",
|
"command-exists-promise": "^2.0.2",
|
||||||
"shelljs": "^0.8.4"
|
"node-fetch": "2.6.7",
|
||||||
|
"shelljs": "^0.8.4",
|
||||||
|
"tar": "^4.4.8",
|
||||||
|
"yauzl": "^2.10.0"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"crowdin": "jdeploy-bundle/jdeploy.js"
|
"crowdin": "jdeploy-bundle/jdeploy.js"
|
||||||
|
@ -9570,20 +9573,6 @@
|
||||||
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
|
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
|
||||||
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
|
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
|
||||||
},
|
},
|
||||||
"node_modules/njre": {
|
|
||||||
"version": "0.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/njre/-/njre-0.2.0.tgz",
|
|
||||||
"integrity": "sha512-+Wq8R6VmjK+jI8a9NdzfU6Vh50r3tjsdvl5KJE1OyHeH8I/nx5Ptm12qpO3qNUbstXuZfBDgDL0qQZw9JyjhMw==",
|
|
||||||
"dependencies": {
|
|
||||||
"command-exists-promise": "^2.0.2",
|
|
||||||
"node-fetch": "^2.5.0",
|
|
||||||
"tar": "^4.4.8",
|
|
||||||
"yauzl": "^2.10.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/no-case": {
|
"node_modules/no-case": {
|
||||||
"version": "3.0.4",
|
"version": "3.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
|
||||||
|
@ -15762,12 +15751,15 @@
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@crowdin/cli": {
|
"@crowdin/cli": {
|
||||||
"version": "3.9.0",
|
"version": "3.17.0",
|
||||||
"resolved": "https://registry.npmjs.org/@crowdin/cli/-/cli-3.9.0.tgz",
|
"resolved": "https://registry.npmjs.org/@crowdin/cli/-/cli-3.17.0.tgz",
|
||||||
"integrity": "sha512-4wQjqJZmU/mg3VYfRL6IYXw/pPAL9vdfW3QVSBovYA+bYaEt43ZuGsSrqeBGOhLehasWwRqklXWsl96gxQlLdw==",
|
"integrity": "sha512-ipr5wyBvpVuJ/DtJgDqTJiECu7zsVn9DwyTdf+sa0ukksXyiX3+H6wPm4eefIfEVSEaM92Q572dJZ5OnIH/Sag==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"njre": "^0.2.0",
|
"command-exists-promise": "^2.0.2",
|
||||||
"shelljs": "^0.8.4"
|
"node-fetch": "2.6.7",
|
||||||
|
"shelljs": "^0.8.4",
|
||||||
|
"tar": "^4.4.8",
|
||||||
|
"yauzl": "^2.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@cspotcode/source-map-support": {
|
"@cspotcode/source-map-support": {
|
||||||
|
@ -21261,17 +21253,6 @@
|
||||||
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
|
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
|
||||||
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
|
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
|
||||||
},
|
},
|
||||||
"njre": {
|
|
||||||
"version": "0.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/njre/-/njre-0.2.0.tgz",
|
|
||||||
"integrity": "sha512-+Wq8R6VmjK+jI8a9NdzfU6Vh50r3tjsdvl5KJE1OyHeH8I/nx5Ptm12qpO3qNUbstXuZfBDgDL0qQZw9JyjhMw==",
|
|
||||||
"requires": {
|
|
||||||
"command-exists-promise": "^2.0.2",
|
|
||||||
"node-fetch": "^2.5.0",
|
|
||||||
"tar": "^4.4.8",
|
|
||||||
"yauzl": "^2.10.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"no-case": {
|
"no-case": {
|
||||||
"version": "3.0.4",
|
"version": "3.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "docusaurus start",
|
"start": "docusaurus start",
|
||||||
"build": "docusaurus build",
|
"build": "docusaurus build",
|
||||||
|
"serve": "docusaurus serve",
|
||||||
"clear": "docusaurus clear",
|
"clear": "docusaurus clear",
|
||||||
"help": "docusaurus --help",
|
"help": "docusaurus --help",
|
||||||
"swizzle": "docusaurus swizzle",
|
"swizzle": "docusaurus swizzle",
|
||||||
|
@ -20,7 +21,7 @@
|
||||||
"crowdin:upload": "npm run write-i18n && crowdin upload"
|
"crowdin:upload": "npm run write-i18n && crowdin upload"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@crowdin/cli": "^3.6.1",
|
"@crowdin/cli": "^3.17.0",
|
||||||
"@docusaurus/core": "^2.2.0",
|
"@docusaurus/core": "^2.2.0",
|
||||||
"@docusaurus/plugin-google-gtag": "^2.4.0",
|
"@docusaurus/plugin-google-gtag": "^2.4.0",
|
||||||
"@docusaurus/preset-classic": "^2.2.0",
|
"@docusaurus/preset-classic": "^2.2.0",
|
||||||
|
|
|
@ -55,6 +55,6 @@ Explore what it takes to operate a Solana validator and help secure the network.
|
||||||
|
|
||||||
## Learn more
|
## Learn more
|
||||||
|
|
||||||
import HomeCtaLinks from "../components/HomeCtaLinks";
|
import HomeCtaLinks from "@site/components/HomeCtaLinks";
|
||||||
|
|
||||||
<HomeCtaLinks />
|
<HomeCtaLinks />
|
||||||
|
|
|
@ -41,7 +41,8 @@ cannot change the original value that is contained in a commitment.
|
||||||
Interested readers can refer to the following resources for a more in-depth
|
Interested readers can refer to the following resources for a more in-depth
|
||||||
treatment of Pedersen commitment and the (twisted) ElGamal encryption schemes.
|
treatment of Pedersen commitment and the (twisted) ElGamal encryption schemes.
|
||||||
|
|
||||||
- [Notes](./zk-docs/twisted_elgamal.pdf) on the twisted ElGamal encryption
|
- [Notes](https://github.com/solana-labs/solana/blob/master/docs/src/runtime/zk-docs/twisted_elgamal.pdf)
|
||||||
|
on the twisted ElGamal encryption
|
||||||
- A technical
|
- A technical
|
||||||
[overview](https://github.com/solana-labs/solana-program-library/blob/master/token/zk-token-protocol-paper/part1.pdf)
|
[overview](https://github.com/solana-labs/solana-program-library/blob/master/token/zk-token-protocol-paper/part1.pdf)
|
||||||
of the SPL Token 2022 confidential extension
|
of the SPL Token 2022 confidential extension
|
||||||
|
@ -98,14 +99,14 @@ The ZK Token proof program supports the following list of zero-knowledge proofs.
|
||||||
- The ElGamal public-key validity proof instruction certifies that an ElGamal
|
- The ElGamal public-key validity proof instruction certifies that an ElGamal
|
||||||
public-key is a properly formed public key.
|
public-key is a properly formed public key.
|
||||||
- Mathematical description and proof of security:
|
- Mathematical description and proof of security:
|
||||||
[[Notes]](./zk-docs/pubkey_proof.pdf)
|
[[Notes]](https://github.com/solana-labs/solana/blob/master/docs/src/runtime/zk-docs/pubkey_proof.pdf)
|
||||||
|
|
||||||
- `VerifyZeroBalance`:
|
- `VerifyZeroBalance`:
|
||||||
|
|
||||||
- The zero-balance proof certifies that an ElGamal ciphertext encrypts the
|
- The zero-balance proof certifies that an ElGamal ciphertext encrypts the
|
||||||
number zero.
|
number zero.
|
||||||
- Mathematical description and proof of security:
|
- Mathematical description and proof of security:
|
||||||
[[Notes]](./zk-docs/zero_proof.pdf)
|
[[Notes]](https://github.com/solana-labs/solana/blob/master/docs/src/runtime/zk-docs/zero_proof.pdf)
|
||||||
|
|
||||||
#### Equality proofs
|
#### Equality proofs
|
||||||
|
|
||||||
|
@ -114,11 +115,11 @@ The ZK Token proof program supports the following list of zero-knowledge proofs.
|
||||||
- The ciphertext-commitment equality proof certifies that an ElGamal
|
- The ciphertext-commitment equality proof certifies that an ElGamal
|
||||||
ciphertext and a Pedersen commitment encode the same message.
|
ciphertext and a Pedersen commitment encode the same message.
|
||||||
- Mathematical description and proof of security:
|
- Mathematical description and proof of security:
|
||||||
[[Notes]](./zk-docs/ciphertext_commitment_equality.pdf)
|
[[Notes]](https://github.com/solana-labs/solana/blob/master/docs/src/runtime/zk-docs/ciphertext_commitment_equality.pdf)
|
||||||
|
|
||||||
- `VerifyCiphertextCiphertextEquality`:
|
- `VerifyCiphertextCiphertextEquality`:
|
||||||
|
|
||||||
- The ciphertext-ciphertext equality proof certifies that two ElGamal
|
- The ciphertext-ciphertext equality proof certifies that two ElGamal
|
||||||
ciphertexts encrypt the same message.
|
ciphertexts encrypt the same message.
|
||||||
- Mathematical description and proof of security:
|
- Mathematical description and proof of security:
|
||||||
[[Notes]](./zk-docs/ciphertext_ciphertext_equality.pdf)
|
[[Notes]](https://github.com/solana-labs/solana/blob/master/docs/src/runtime/zk-docs/ciphertext_ciphertext_equality.pdf)
|
||||||
|
|
Loading…
Reference in New Issue