Skip to content

Commit f1ee9bd

Browse files
committed
feat: translate additional labels
1 parent afa156a commit f1ee9bd

File tree

14 files changed

+344
-83
lines changed

14 files changed

+344
-83
lines changed

packages/docusaurus-plugin-openapi-docs/src/markdown/__snapshots__/createSchema.test.ts.snap

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Array [
1313
<div style={{ marginLeft: \\"1rem\\" }}>
1414
<div>
1515
<span className={\\"badge badge--info\\"} style={{ marginBottom: \\"1rem\\" }}>
16-
oneOf
16+
<Translate id=\\"theme.schema.oneOf\\">oneOf</Translate>
1717
</span>
1818
<SchemaTabs>
1919
<TabItem label={\\"MOD1\\"} value={\\"0-item-properties\\"}>
@@ -399,7 +399,7 @@ Array [
399399
<div style={{ marginLeft: \\"1rem\\" }}>
400400
<div>
401401
<span className={\\"badge badge--info\\"} style={{ marginBottom: \\"1rem\\" }}>
402-
anyOf
402+
<Translate id=\\"theme.schema.anyOf\\">anyOf</Translate>
403403
</span>
404404
<SchemaTabs>
405405
<TabItem label={\\"An int or a bool\\"} value={\\"0-item-properties\\"}>
@@ -408,7 +408,7 @@ Array [
408408
className={\\"badge badge--info\\"}
409409
style={{ marginBottom: \\"1rem\\" }}
410410
>
411-
oneOf
411+
<Translate id=\\"theme.schema.oneOf\\">oneOf</Translate>
412412
</span>
413413
<SchemaTabs>
414414
<TabItem label={\\"MOD1\\"} value={\\"0-item-properties\\"}>
@@ -451,7 +451,7 @@ Array [
451451
<div style={{ marginLeft: \\"1rem\\" }}>
452452
<div>
453453
<span className={\\"badge badge--info\\"} style={{ marginBottom: \\"1rem\\" }}>
454-
anyOf
454+
<Translate id=\\"theme.schema.anyOf\\">anyOf</Translate>
455455
</span>
456456
<SchemaTabs>
457457
<TabItem label={\\"MOD1\\"} value={\\"0-item-properties\\"}>
@@ -477,7 +477,7 @@ exports[`createNodes discriminator should handle basic discriminator with mappin
477477
Array [
478478
"<div>
479479
<span className={\\"badge badge--info\\"} style={{ marginBottom: \\"1rem\\" }}>
480-
oneOf
480+
<Translate id=\\"theme.schema.oneOf\\">oneOf</Translate>
481481
</span>
482482
<SchemaTabs>
483483
<TabItem label={\\"MOD1\\"} value={\\"0-item-properties\\"}>
@@ -554,7 +554,7 @@ exports[`createNodes discriminator should handle basic discriminator with oneOf
554554
Array [
555555
"<div>
556556
<span className={\\"badge badge--info\\"} style={{ marginBottom: \\"1rem\\" }}>
557-
oneOf
557+
<Translate id=\\"theme.schema.oneOf\\">oneOf</Translate>
558558
</span>
559559
<SchemaTabs>
560560
<TabItem label={\\"MOD1\\"} value={\\"0-item-properties\\"}>
@@ -612,7 +612,7 @@ exports[`createNodes discriminator should handle discriminator with additional p
612612
Array [
613613
"<div>
614614
<span className={\\"badge badge--info\\"} style={{ marginBottom: \\"1rem\\" }}>
615-
oneOf
615+
<Translate id=\\"theme.schema.oneOf\\">oneOf</Translate>
616616
</span>
617617
<SchemaTabs>
618618
<TabItem label={\\"MOD1\\"} value={\\"0-item-properties\\"}>
@@ -679,7 +679,7 @@ Array [
679679
",
680680
"<div>
681681
<span className={\\"badge badge--info\\"} style={{ marginBottom: \\"1rem\\" }}>
682-
oneOf
682+
<Translate id=\\"theme.schema.oneOf\\">oneOf</Translate>
683683
</span>
684684
<SchemaTabs>
685685
<TabItem label={\\"MOD1\\"} value={\\"0-item-properties\\"}>
@@ -774,7 +774,7 @@ Array [
774774
",
775775
"<div>
776776
<span className={\\"badge badge--info\\"} style={{ marginBottom: \\"1rem\\" }}>
777-
oneOf
777+
<Translate id=\\"theme.schema.oneOf\\">oneOf</Translate>
778778
</span>
779779
<SchemaTabs>
780780
<TabItem label={\\"MOD1\\"} value={\\"0-item-properties\\"}>
@@ -860,7 +860,7 @@ exports[`createNodes discriminator should handle discriminator with nested schem
860860
Array [
861861
"<div>
862862
<span className={\\"badge badge--info\\"} style={{ marginBottom: \\"1rem\\" }}>
863-
oneOf
863+
<Translate id=\\"theme.schema.oneOf\\">oneOf</Translate>
864864
</span>
865865
<SchemaTabs>
866866
<TabItem label={\\"MOD1\\"} value={\\"0-item-properties\\"}>
@@ -958,7 +958,7 @@ exports[`createNodes discriminator should handle discriminator with required pro
958958
Array [
959959
"<div>
960960
<span className={\\"badge badge--info\\"} style={{ marginBottom: \\"1rem\\" }}>
961-
oneOf
961+
<Translate id=\\"theme.schema.oneOf\\">oneOf</Translate>
962962
</span>
963963
<SchemaTabs>
964964
<TabItem label={\\"MOD1\\"} value={\\"0-item-properties\\"}>
@@ -1016,7 +1016,7 @@ exports[`createNodes discriminator should handle discriminator with required pro
10161016
Array [
10171017
"<div>
10181018
<span className={\\"badge badge--info\\"} style={{ marginBottom: \\"1rem\\" }}>
1019-
oneOf
1019+
<Translate id=\\"theme.schema.oneOf\\">oneOf</Translate>
10201020
</span>
10211021
<SchemaTabs>
10221022
<TabItem label={\\"MOD1\\"} value={\\"0-item-properties\\"}>
@@ -1093,7 +1093,7 @@ exports[`createNodes discriminator should handle discriminator with shared prope
10931093
Array [
10941094
"<div>
10951095
<span className={\\"badge badge--info\\"} style={{ marginBottom: \\"1rem\\" }}>
1096-
oneOf
1096+
<Translate id=\\"theme.schema.oneOf\\">oneOf</Translate>
10971097
</span>
10981098
<SchemaTabs>
10991099
<TabItem label={\\"MOD1\\"} value={\\"0-item-properties\\"}>
@@ -1160,7 +1160,7 @@ exports[`createNodes discriminator should handle discriminator with shared prope
11601160
Array [
11611161
"<div>
11621162
<span className={\\"badge badge--info\\"} style={{ marginBottom: \\"1rem\\" }}>
1163-
oneOf
1163+
<Translate id=\\"theme.schema.oneOf\\">oneOf</Translate>
11641164
</span>
11651165
<SchemaTabs>
11661166
<TabItem label={\\"MOD1\\"} value={\\"0-item-properties\\"}>
@@ -1255,7 +1255,7 @@ Array [
12551255
<div style={{ marginLeft: \\"1rem\\" }}>
12561256
<div>
12571257
<span className={\\"badge badge--info\\"} style={{ marginBottom: \\"1rem\\" }}>
1258-
oneOf
1258+
<Translate id=\\"theme.schema.oneOf\\">oneOf</Translate>
12591259
</span>
12601260
<SchemaTabs>
12611261
<TabItem label={\\"MOD1\\"} value={\\"0-item-properties\\"}>
@@ -1345,7 +1345,7 @@ Array [
13451345
<div style={{ marginLeft: \\"1rem\\" }}>
13461346
<div>
13471347
<span className={\\"badge badge--info\\"} style={{ marginBottom: \\"1rem\\" }}>
1348-
oneOf
1348+
<Translate id=\\"theme.schema.oneOf\\">oneOf</Translate>
13491349
</span>
13501350
<SchemaTabs>
13511351
<TabItem label={\\"MOD1\\"} value={\\"0-item-properties\\"}>
@@ -1365,7 +1365,7 @@ Array [
13651365
className={\\"badge badge--info\\"}
13661366
style={{ marginBottom: \\"1rem\\" }}
13671367
>
1368-
oneOf
1368+
<Translate id=\\"theme.schema.oneOf\\">oneOf</Translate>
13691369
</span>
13701370
<SchemaTabs>
13711371
<TabItem label={\\"MOD1\\"} value={\\"0-item-properties\\"}>
@@ -1415,7 +1415,7 @@ Array [
14151415
<div style={{ marginLeft: \\"1rem\\" }}>
14161416
<div>
14171417
<span className={\\"badge badge--info\\"} style={{ marginBottom: \\"1rem\\" }}>
1418-
oneOf
1418+
<Translate id=\\"theme.schema.oneOf\\">oneOf</Translate>
14191419
</span>
14201420
<SchemaTabs>
14211421
<TabItem label={\\"MOD1\\"} value={\\"0-item-properties\\"}>
@@ -1478,7 +1478,7 @@ Array [
14781478
<div style={{ marginLeft: \\"1rem\\" }}>
14791479
<div>
14801480
<span className={\\"badge badge--info\\"} style={{ marginBottom: \\"1rem\\" }}>
1481-
oneOf
1481+
<Translate id=\\"theme.schema.oneOf\\">oneOf</Translate>
14821482
</span>
14831483
<SchemaTabs>
14841484
<TabItem label={\\"MOD1\\"} value={\\"0-item-properties\\"}>
@@ -1518,7 +1518,7 @@ Array [
15181518
<div style={{ marginLeft: \\"1rem\\" }}>
15191519
<div>
15201520
<span className={\\"badge badge--info\\"} style={{ marginBottom: \\"1rem\\" }}>
1521-
oneOf
1521+
<Translate id=\\"theme.schema.oneOf\\">oneOf</Translate>
15221522
</span>
15231523
<SchemaTabs>
15241524
<TabItem label={\\"MOD1\\"} value={\\"0-item-properties\\"}>
@@ -1572,7 +1572,7 @@ Array [
15721572
<div style={{ marginLeft: \\"1rem\\" }}>
15731573
<div>
15741574
<span className={\\"badge badge--info\\"} style={{ marginBottom: \\"1rem\\" }}>
1575-
oneOf
1575+
<Translate id=\\"theme.schema.oneOf\\">oneOf</Translate>
15761576
</span>
15771577
<SchemaTabs>
15781578
<TabItem label={\\"MOD1\\"} value={\\"0-item-properties\\"}>

packages/docusaurus-plugin-openapi-docs/src/markdown/createRequestHeader.ts

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,18 @@
88
import { create } from "./utils";
99

1010
export function createRequestHeader(header: string) {
11+
const id = header.replace(" ", "-").toLowerCase();
1112
return [
12-
create(
13-
"Heading",
14-
{
15-
children: header,
16-
id: header.replace(" ", "-").toLowerCase(),
17-
as: "h2",
18-
className: "openapi-tabs__heading",
19-
},
20-
{ inline: true }
21-
),
13+
create("Heading", {
14+
id,
15+
as: "h2",
16+
className: "openapi-tabs__heading",
17+
children: [
18+
`<Translate id="theme.RequestHeader.${id}">`,
19+
header,
20+
"</Translate>",
21+
],
22+
}),
2223
`\n\n`,
2324
];
2425
}

packages/docusaurus-plugin-openapi-docs/src/markdown/createSchema.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,12 @@ export function mergeAllOf(allOf: SchemaObject) {
4040
*/
4141
function createAnyOneOf(schema: SchemaObject): any {
4242
const type = schema.oneOf ? "oneOf" : "anyOf";
43+
const translatedType = `<Translate id="theme.schema.${type}">${type}</Translate>`;
4344
return create("div", {
4445
children: [
4546
create("span", {
4647
className: "badge badge--info",
47-
children: type,
48+
children: translatedType,
4849
style: { marginBottom: "1rem" },
4950
}),
5051
create("SchemaTabs", {
@@ -375,7 +376,8 @@ function createDetailsNode(
375376
() => [
376377
create("span", {
377378
className: "openapi-schema__required",
378-
children: "required",
379+
children:
380+
'<Translate id="theme.schema.required">required</Translate>',
379381
}),
380382
]
381383
),
@@ -530,7 +532,8 @@ function createPropertyDiscriminator(
530532
guard(required, () => [
531533
create("span", {
532534
className: "openapi-schema__required",
533-
children: "required",
535+
children:
536+
'<Translate id="theme.schema.required">required</Translate>',
534537
}),
535538
]),
536539
],

packages/docusaurus-plugin-openapi-docs/src/markdown/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ export function createApiPageMD({
6666
frontMatter,
6767
}: ApiPageMetadata) {
6868
return render([
69+
`import Translate from "@docusaurus/Translate";\n`,
6970
`import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";\n`,
7071
`import ParamsDetails from "@theme/ParamsDetails";\n`,
7172
`import RequestSchema from "@theme/RequestSchema";\n`,

packages/docusaurus-theme-openapi-docs/src/markdown/schema.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
* LICENSE file in the root directory of this source tree.
66
* ========================================================================== */
77

8+
import { translate } from "@docusaurus/Translate";
9+
810
import { SchemaObject } from "../types";
911

1012
function prettyName(schema: SchemaObject, circular?: boolean) {
@@ -72,7 +74,11 @@ export function getQualifierMessage(schema?: SchemaObject): string | undefined {
7274
return getQualifierMessage(schema.items);
7375
}
7476

75-
let message = "**Possible values:** ";
77+
const possibleValues = translate({
78+
id: "theme.schema.possibleValues",
79+
message: "Possible values:",
80+
});
81+
let message = `**${possibleValues}** `;
7682

7783
let qualifierGroups = [];
7884

packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Authorization/index.tsx

Lines changed: 49 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import React from "react";
99

10+
import { translate } from "@docusaurus/Translate";
1011
import FormItem from "@theme/ApiExplorer/FormItem";
1112
import FormSelect from "@theme/ApiExplorer/FormSelect";
1213
import FormTextInput from "@theme/ApiExplorer/FormTextInput";
@@ -32,7 +33,12 @@ function Authorization() {
3233
return (
3334
<div>
3435
{optionKeys.length > 1 && (
35-
<FormItem label="Security Scheme">
36+
<FormItem
37+
label={translate({
38+
id: "theme.authorization.securityScheme",
39+
message: "Security Scheme",
40+
})}
41+
>
3642
<FormSelect
3743
options={optionKeys}
3844
value={selected}
@@ -45,9 +51,18 @@ function Authorization() {
4551
{selectedAuth.map((a: any) => {
4652
if (a.type === "http" && a.scheme === "bearer") {
4753
return (
48-
<FormItem label="Bearer Token" key={a.key + "-bearer"}>
54+
<FormItem
55+
label={translate({
56+
id: "theme.authorization.bearerToken",
57+
message: "Bearer Token",
58+
})}
59+
key={a.key + "-bearer"}
60+
>
4961
<FormTextInput
50-
placeholder="Bearer Token"
62+
placeholder={translate({
63+
id: "theme.authorization.bearerToken",
64+
message: "Bearer Token",
65+
})}
5166
password
5267
value={data[a.key].token ?? ""}
5368
onChange={(e: React.ChangeEvent<HTMLInputElement>) => {
@@ -67,9 +82,18 @@ function Authorization() {
6782

6883
if (a.type === "oauth2") {
6984
return (
70-
<FormItem label="Bearer Token" key={a.key + "-oauth2"}>
85+
<FormItem
86+
label={translate({
87+
id: "theme.authorization.bearerToken",
88+
message: "Bearer Token",
89+
})}
90+
key={a.key + "-oauth2"}
91+
>
7192
<FormTextInput
72-
placeholder="Bearer Token"
93+
placeholder={translate({
94+
id: "theme.authorization.bearerToken",
95+
message: "Bearer Token",
96+
})}
7397
password
7498
value={data[a.key].token ?? ""}
7599
onChange={(e: React.ChangeEvent<HTMLInputElement>) => {
@@ -90,9 +114,17 @@ function Authorization() {
90114
if (a.type === "http" && a.scheme === "basic") {
91115
return (
92116
<React.Fragment key={a.key + "-basic"}>
93-
<FormItem label="Username">
117+
<FormItem
118+
label={translate({
119+
id: "theme.authorization.username",
120+
message: "Username",
121+
})}
122+
>
94123
<FormTextInput
95-
placeholder="Username"
124+
placeholder={translate({
125+
id: "theme.authorization.username",
126+
message: "Username",
127+
})}
96128
value={data[a.key].username ?? ""}
97129
onChange={(e: React.ChangeEvent<HTMLInputElement>) => {
98130
const value = e.target.value;
@@ -106,9 +138,17 @@ function Authorization() {
106138
}}
107139
/>
108140
</FormItem>
109-
<FormItem label="Password">
141+
<FormItem
142+
label={translate({
143+
id: "theme.authorization.password",
144+
message: "Password",
145+
})}
146+
>
110147
<FormTextInput
111-
placeholder="Password"
148+
placeholder={translate({
149+
id: "theme.authorization.password",
150+
message: "Password",
151+
})}
112152
password
113153
value={data[a.key].password ?? ""}
114154
onChange={(e: React.ChangeEvent<HTMLInputElement>) => {

0 commit comments

Comments
 (0)