@astrojs/starlight 0.21.4 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +69 -0
- package/__e2e__/fixtures/basics/astro.config.mjs +10 -0
- package/__e2e__/fixtures/basics/node_modules/.bin/astro +17 -0
- package/__e2e__/fixtures/basics/package.json +9 -0
- package/__e2e__/fixtures/basics/src/content/config.ts +6 -0
- package/__e2e__/fixtures/basics/src/content/docs/tabs-variable-height.mdx +151 -0
- package/__e2e__/fixtures/basics/src/content/docs/tabs.mdx +37 -0
- package/__e2e__/fixtures/basics/src/env.d.ts +2 -0
- package/__e2e__/tabs.test.ts +122 -0
- package/__e2e__/test-utils.ts +53 -0
- package/components/ContentNotice.astro +31 -0
- package/components/DraftContentNotice.astro +8 -0
- package/components/FallbackContentNotice.astro +2 -21
- package/components/Head.astro +3 -3
- package/components/Icons.ts +10 -0
- package/components/Page.astro +2 -0
- package/components/SiteTitle.astro +2 -1
- package/components/ThemeSelect.astro +36 -48
- package/global.d.ts +1 -1
- package/index.astro +1 -1
- package/integrations/expressive-code/hast.d.ts +5 -0
- package/integrations/expressive-code/hast.mjs +9 -0
- package/integrations/shared/pathToLocale.ts +2 -1
- package/package.json +13 -3
- package/playwright.config.ts +15 -0
- package/schema.ts +16 -3
- package/schemas/components.ts +9 -0
- package/schemas/i18n.ts +18 -5
- package/schemas/site-title.ts +22 -0
- package/schemas/social.ts +2 -0
- package/style/props.css +1 -1
- package/translations/ar.json +1 -0
- package/translations/cs.json +1 -0
- package/translations/da.json +1 -0
- package/translations/de.json +1 -0
- package/translations/en.json +1 -0
- package/translations/es.json +1 -0
- package/translations/fa.json +8 -7
- package/translations/fr.json +1 -0
- package/translations/gl.json +1 -0
- package/translations/he.json +1 -0
- package/translations/hi.json +1 -0
- package/translations/id.json +1 -0
- package/translations/it.json +1 -0
- package/translations/ja.json +1 -0
- package/translations/ko.json +1 -0
- package/translations/nb.json +1 -0
- package/translations/nl.json +1 -0
- package/translations/pl.json +1 -0
- package/translations/pt.json +1 -0
- package/translations/ro.json +1 -0
- package/translations/ru.json +5 -1
- package/translations/sv.json +1 -0
- package/translations/tr.json +1 -0
- package/translations/uk.json +1 -0
- package/translations/vi.json +1 -0
- package/translations/zh-CN.json +1 -0
- package/translations/zh-TW.json +1 -0
- package/user-components/Tabs.astro +48 -7
- package/user-components/file-tree-icons.ts +1 -0
- package/user-components/rehype-file-tree.ts +1 -1
- package/utils/createTranslationSystem.ts +10 -8
- package/utils/route-data.ts +14 -1
- package/utils/routing.ts +9 -6
- package/utils/translations.ts +6 -2
- package/utils/user-config.ts +33 -19
- package/virtual.d.ts +4 -0
|
@@ -4,6 +4,7 @@ import config from 'virtual:starlight/user-config';
|
|
|
4
4
|
import type { Props } from '../props';
|
|
5
5
|
import { formatPath } from '../utils/format-path';
|
|
6
6
|
|
|
7
|
+
const { siteTitle } = Astro.props;
|
|
7
8
|
const href = formatPath(Astro.props.locale || '/');
|
|
8
9
|
---
|
|
9
10
|
|
|
@@ -32,7 +33,7 @@ const href = formatPath(Astro.props.locale || '/');
|
|
|
32
33
|
)
|
|
33
34
|
}
|
|
34
35
|
<span class:list={{ 'sr-only': config.logo?.replacesTitle }}>
|
|
35
|
-
{
|
|
36
|
+
{siteTitle}
|
|
36
37
|
</span>
|
|
37
38
|
</a>
|
|
38
39
|
|
|
@@ -28,62 +28,50 @@ const { labels } = Astro.props;
|
|
|
28
28
|
<script>
|
|
29
29
|
type Theme = 'auto' | 'dark' | 'light';
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
#key = 'starlight-theme';
|
|
31
|
+
/** Key in `localStorage` to store color theme preference at. */
|
|
32
|
+
const storageKey = 'starlight-theme';
|
|
34
33
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
const select = this.querySelector('select');
|
|
39
|
-
if (select) {
|
|
40
|
-
select.addEventListener('change', (e) => {
|
|
41
|
-
if (e.currentTarget instanceof HTMLSelectElement) {
|
|
42
|
-
this.#onThemeChange(this.#parseTheme(e.currentTarget.value));
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
}
|
|
34
|
+
/** Get a typesafe theme string from any JS value (unknown values are coerced to `'auto'`). */
|
|
35
|
+
const parseTheme = (theme: unknown): Theme =>
|
|
36
|
+
theme === 'auto' || theme === 'dark' || theme === 'light' ? theme : 'auto';
|
|
47
37
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
return theme;
|
|
52
|
-
} else {
|
|
53
|
-
return 'auto';
|
|
54
|
-
}
|
|
55
|
-
}
|
|
38
|
+
/** Load the user’s preference from `localStorage`. */
|
|
39
|
+
const loadTheme = (): Theme =>
|
|
40
|
+
parseTheme(typeof localStorage !== 'undefined' && localStorage.getItem(storageKey));
|
|
56
41
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
42
|
+
/** Store the user’s preference in `localStorage`. */
|
|
43
|
+
function storeTheme(theme: Theme): void {
|
|
44
|
+
if (typeof localStorage !== 'undefined') {
|
|
45
|
+
localStorage.setItem(storageKey, theme === 'light' || theme === 'dark' ? theme : '');
|
|
60
46
|
}
|
|
47
|
+
}
|
|
61
48
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
document.documentElement.dataset.theme =
|
|
66
|
-
theme === 'auto' ? this.#getPreferredColorScheme() : theme;
|
|
67
|
-
this.#storeTheme(theme);
|
|
68
|
-
}
|
|
49
|
+
/** Get the preferred system color scheme. */
|
|
50
|
+
const getPreferredColorScheme = (): Theme =>
|
|
51
|
+
matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark';
|
|
69
52
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
localStorage.removeItem(this.#key);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
53
|
+
/** Update select menu UI, document theme, and local storage state. */
|
|
54
|
+
function onThemeChange(theme: Theme): void {
|
|
55
|
+
StarlightThemeProvider.updatePickers(theme);
|
|
56
|
+
document.documentElement.dataset.theme = theme === 'auto' ? getPreferredColorScheme() : theme;
|
|
57
|
+
storeTheme(theme);
|
|
58
|
+
}
|
|
80
59
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
60
|
+
// React to changes in system color scheme.
|
|
61
|
+
matchMedia(`(prefers-color-scheme: light)`).addEventListener('change', () => {
|
|
62
|
+
if (loadTheme() === 'auto') onThemeChange('auto');
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
class StarlightThemeSelect extends HTMLElement {
|
|
66
|
+
constructor() {
|
|
67
|
+
super();
|
|
68
|
+
onThemeChange(loadTheme());
|
|
69
|
+
this.querySelector('select')?.addEventListener('change', (e) => {
|
|
70
|
+
if (e.currentTarget instanceof HTMLSelectElement) {
|
|
71
|
+
onThemeChange(parseTheme(e.currentTarget.value));
|
|
72
|
+
}
|
|
73
|
+
});
|
|
85
74
|
}
|
|
86
75
|
}
|
|
87
|
-
|
|
88
76
|
customElements.define('starlight-theme-select', StarlightThemeSelect);
|
|
89
77
|
</script>
|
package/global.d.ts
CHANGED
package/index.astro
CHANGED
|
@@ -16,4 +16,4 @@ const { Content, headings } = await Astro.props.entry.render();
|
|
|
16
16
|
const route = generateRouteData({ props: { ...Astro.props, headings }, url: Astro.url });
|
|
17
17
|
---
|
|
18
18
|
|
|
19
|
-
<Page {...route}><Content /></Page>
|
|
19
|
+
<Page {...route}><Content frontmatter={Astro.props.entry.data} /></Page>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file This file is exported by Starlight as `@astrojs/starlight/expressive-code/hast`.
|
|
3
|
+
*
|
|
4
|
+
* Note: This file is intentionally not a TypeScript module to allow access to all exported
|
|
5
|
+
* functionality even if TypeScript is not available, e.g. from the `ec.config.mjs` file
|
|
6
|
+
* that does not get processed by Vite.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
export * from 'astro-expressive-code/hast';
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { AstroConfig } from 'astro';
|
|
1
2
|
import type { StarlightConfig } from '../../types';
|
|
2
3
|
|
|
3
4
|
function slugToLocale(
|
|
@@ -17,7 +18,7 @@ export function pathToLocale(
|
|
|
17
18
|
astroConfig,
|
|
18
19
|
}: {
|
|
19
20
|
starlightConfig: { locales: StarlightConfig['locales'] };
|
|
20
|
-
astroConfig: { root:
|
|
21
|
+
astroConfig: { root: AstroConfig['root']; srcDir: AstroConfig['srcDir'] };
|
|
21
22
|
}
|
|
22
23
|
): string | undefined {
|
|
23
24
|
const srcDir = new URL(astroConfig.srcDir, astroConfig.root);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@astrojs/starlight",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.0",
|
|
4
4
|
"description": "Build beautiful, high-performance documentation websites with Astro",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"docs",
|
|
@@ -94,6 +94,10 @@
|
|
|
94
94
|
"types": "./components/FallbackContentNotice.astro.tsx",
|
|
95
95
|
"import": "./components/FallbackContentNotice.astro"
|
|
96
96
|
},
|
|
97
|
+
"./components/DraftContentNotice.astro": {
|
|
98
|
+
"types": "./components/DraftContentNotice.astro.tsx",
|
|
99
|
+
"import": "./components/DraftContentNotice.astro"
|
|
100
|
+
},
|
|
97
101
|
"./components/Page.astro": {
|
|
98
102
|
"types": "./components/Page.astro.tsx",
|
|
99
103
|
"import": "./components/Page.astro"
|
|
@@ -162,6 +166,10 @@
|
|
|
162
166
|
"types": "./expressive-code.d.ts",
|
|
163
167
|
"default": "./expressive-code.mjs"
|
|
164
168
|
},
|
|
169
|
+
"./expressive-code/hast": {
|
|
170
|
+
"types": "./integrations/expressive-code/hast.d.ts",
|
|
171
|
+
"default": "./integrations/expressive-code/hast.mjs"
|
|
172
|
+
},
|
|
165
173
|
"./index.astro": "./index.astro",
|
|
166
174
|
"./404.astro": "./404.astro",
|
|
167
175
|
"./style/markdown.css": "./style/markdown.css"
|
|
@@ -171,6 +179,7 @@
|
|
|
171
179
|
},
|
|
172
180
|
"devDependencies": {
|
|
173
181
|
"@astrojs/markdown-remark": "^4.2.1",
|
|
182
|
+
"@playwright/test": "^1.43.1",
|
|
174
183
|
"@types/node": "^18.16.19",
|
|
175
184
|
"@vitest/coverage-v8": "^1.3.1",
|
|
176
185
|
"astro": "^4.3.5",
|
|
@@ -182,7 +191,7 @@
|
|
|
182
191
|
"@pagefind/default-ui": "^1.0.3",
|
|
183
192
|
"@types/hast": "^3.0.3",
|
|
184
193
|
"@types/mdast": "^4.0.3",
|
|
185
|
-
"astro-expressive-code": "^0.
|
|
194
|
+
"astro-expressive-code": "^0.35.2",
|
|
186
195
|
"bcp-47": "^2.1.0",
|
|
187
196
|
"hast-util-from-html": "^2.0.1",
|
|
188
197
|
"hast-util-select": "^6.0.2",
|
|
@@ -199,6 +208,7 @@
|
|
|
199
208
|
},
|
|
200
209
|
"scripts": {
|
|
201
210
|
"test": "vitest",
|
|
202
|
-
"test:coverage": "vitest run --coverage"
|
|
211
|
+
"test:coverage": "vitest run --coverage",
|
|
212
|
+
"test:e2e": "playwright install --with-deps chromium && playwright test"
|
|
203
213
|
}
|
|
204
214
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { defineConfig, devices } from '@playwright/test';
|
|
2
|
+
|
|
3
|
+
export default defineConfig({
|
|
4
|
+
forbidOnly: !!process.env['CI'],
|
|
5
|
+
projects: [
|
|
6
|
+
{
|
|
7
|
+
name: 'Chrome Stable',
|
|
8
|
+
use: {
|
|
9
|
+
...devices['Desktop Chrome'],
|
|
10
|
+
headless: true,
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
],
|
|
14
|
+
testMatch: '__e2e__/*.test.ts',
|
|
15
|
+
});
|
package/schema.ts
CHANGED
|
@@ -103,6 +103,12 @@ const StarlightFrontmatterSchema = (context: SchemaContext) =>
|
|
|
103
103
|
|
|
104
104
|
/** Pagefind indexing for this page - set to false to disable. */
|
|
105
105
|
pagefind: z.boolean().default(true),
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Indicates that this page is a draft and will not be included in production builds.
|
|
109
|
+
* Note that the page will still be available when running Astro in development mode.
|
|
110
|
+
*/
|
|
111
|
+
draft: z.boolean().default(false),
|
|
106
112
|
});
|
|
107
113
|
/** Type of Starlight’s default frontmatter schema. */
|
|
108
114
|
type DefaultSchema = ReturnType<typeof StarlightFrontmatterSchema>;
|
|
@@ -117,7 +123,9 @@ type BaseSchemaWithoutEffects =
|
|
|
117
123
|
type BaseSchema = BaseSchemaWithoutEffects | z.ZodEffects<BaseSchemaWithoutEffects>;
|
|
118
124
|
|
|
119
125
|
/** Type that extends Starlight’s default schema with an optional, user-defined schema. */
|
|
120
|
-
type ExtendedSchema<T extends BaseSchema> = T extends
|
|
126
|
+
type ExtendedSchema<T extends BaseSchema | never = never> = [T] extends [never]
|
|
127
|
+
? DefaultSchema
|
|
128
|
+
: T extends BaseSchema
|
|
121
129
|
? z.ZodIntersection<DefaultSchema, T>
|
|
122
130
|
: DefaultSchema;
|
|
123
131
|
|
|
@@ -147,8 +155,13 @@ interface DocsSchemaOpts<T extends BaseSchema> {
|
|
|
147
155
|
}
|
|
148
156
|
|
|
149
157
|
/** Content collection schema for Starlight’s `docs` collection. */
|
|
150
|
-
export function docsSchema<T extends BaseSchema
|
|
151
|
-
|
|
158
|
+
export function docsSchema<T extends BaseSchema | never = never>(
|
|
159
|
+
...args: [DocsSchemaOpts<T>?]
|
|
160
|
+
): (context: SchemaContext) => ExtendedSchema<T> {
|
|
161
|
+
const [options = {}] = args;
|
|
162
|
+
const { extend } = options;
|
|
163
|
+
|
|
164
|
+
return (context: SchemaContext) => {
|
|
152
165
|
const UserSchema = typeof extend === 'function' ? extend(context) : extend;
|
|
153
166
|
|
|
154
167
|
return (
|
package/schemas/components.ts
CHANGED
|
@@ -202,6 +202,15 @@ export function ComponentConfigSchema() {
|
|
|
202
202
|
.string()
|
|
203
203
|
.default('@astrojs/starlight/components/FallbackContentNotice.astro'),
|
|
204
204
|
|
|
205
|
+
/**
|
|
206
|
+
* Notice displayed to users on draft pages. Only used in development mode.
|
|
207
|
+
*
|
|
208
|
+
* @see {@link https://github.com/withastro/starlight/blob/main/packages/starlight/components/DraftContentNotice.astro `DraftContentNotice` default implementation}
|
|
209
|
+
*/
|
|
210
|
+
DraftContentNotice: z
|
|
211
|
+
.string()
|
|
212
|
+
.default('@astrojs/starlight/components/DraftContentNotice.astro'),
|
|
213
|
+
|
|
205
214
|
/**
|
|
206
215
|
* Component rendered at the top of the page when `hero` is set in frontmatter. The default
|
|
207
216
|
* implementation shows a large title, tagline, and call-to-action links alongside an optional image.
|
package/schemas/i18n.ts
CHANGED
|
@@ -18,14 +18,21 @@ interface i18nSchemaOpts<T extends z.AnyZodObject = z.ZodObject<{}>> {
|
|
|
18
18
|
extend?: T;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
+
const defaultI18nSchema = () =>
|
|
22
|
+
starlightI18nSchema().merge(pagefindI18nSchema()).merge(expressiveCodeI18nSchema());
|
|
23
|
+
/** Type of Starlight’s default i18n schema, including extensions from Pagefind and Expressive Code. */
|
|
24
|
+
type DefaultI18nSchema = ReturnType<typeof defaultI18nSchema>;
|
|
25
|
+
|
|
26
|
+
/** Type that extends Starlight’s default i18n schema with an optional, user-defined schema. */
|
|
27
|
+
type ExtendedSchema<T extends z.AnyZodObject> = T extends z.AnyZodObject
|
|
28
|
+
? z.ZodIntersection<DefaultI18nSchema, T>
|
|
29
|
+
: DefaultI18nSchema;
|
|
30
|
+
|
|
21
31
|
/** Content collection schema for Starlight’s optional `i18n` collection. */
|
|
22
32
|
export function i18nSchema<T extends z.AnyZodObject = z.ZodObject<{}>>({
|
|
23
33
|
extend = z.object({}) as T,
|
|
24
|
-
}: i18nSchemaOpts<T> = {}) {
|
|
25
|
-
return
|
|
26
|
-
.merge(pagefindI18nSchema())
|
|
27
|
-
.merge(expressiveCodeI18nSchema())
|
|
28
|
-
.merge(extend);
|
|
34
|
+
}: i18nSchemaOpts<T> = {}): ExtendedSchema<T> {
|
|
35
|
+
return defaultI18nSchema().merge(extend) as ExtendedSchema<T>;
|
|
29
36
|
}
|
|
30
37
|
export type i18nSchemaOutput = z.output<ReturnType<typeof i18nSchema>>;
|
|
31
38
|
|
|
@@ -116,6 +123,12 @@ function starlightI18nSchema() {
|
|
|
116
123
|
.string()
|
|
117
124
|
.describe('Label shown on the “next page” pagination arrow in the page footer.'),
|
|
118
125
|
|
|
126
|
+
'page.draft': z
|
|
127
|
+
.string()
|
|
128
|
+
.describe(
|
|
129
|
+
'Development-only notice informing users they are on a page that is a draft which will not be included in production builds.'
|
|
130
|
+
),
|
|
131
|
+
|
|
119
132
|
'404.text': z.string().describe('Text shown on Starlight’s default 404 page'),
|
|
120
133
|
'aside.tip': z.string().describe('Text shown on the tip aside variant'),
|
|
121
134
|
'aside.note': z.string().describe('Text shown on the note aside variant'),
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { z } from 'astro/zod';
|
|
2
|
+
|
|
3
|
+
export const TitleConfigSchema = () =>
|
|
4
|
+
z
|
|
5
|
+
.union([z.string(), z.record(z.string())])
|
|
6
|
+
.describe('Title for your website. Will be used in metadata and as browser tab title.');
|
|
7
|
+
|
|
8
|
+
// transform the title for runtime use
|
|
9
|
+
export const TitleTransformConfigSchema = (defaultLang: string) =>
|
|
10
|
+
TitleConfigSchema().transform((title, ctx) => {
|
|
11
|
+
if (typeof title === 'string') {
|
|
12
|
+
return { [defaultLang]: title };
|
|
13
|
+
}
|
|
14
|
+
if (!title[defaultLang] && title[defaultLang] !== '') {
|
|
15
|
+
ctx.addIssue({
|
|
16
|
+
code: z.ZodIssueCode.custom,
|
|
17
|
+
message: `Title must have a key for the default language "${defaultLang}"`,
|
|
18
|
+
});
|
|
19
|
+
return z.NEVER;
|
|
20
|
+
}
|
|
21
|
+
return title;
|
|
22
|
+
});
|
package/schemas/social.ts
CHANGED
|
@@ -24,6 +24,7 @@ export const socialLinks = [
|
|
|
24
24
|
'email',
|
|
25
25
|
'reddit',
|
|
26
26
|
'patreon',
|
|
27
|
+
'signal',
|
|
27
28
|
'slack',
|
|
28
29
|
'matrix',
|
|
29
30
|
'openCollective',
|
|
@@ -66,6 +67,7 @@ export const SocialLinksSchema = () =>
|
|
|
66
67
|
email: 'Email',
|
|
67
68
|
reddit: 'Reddit',
|
|
68
69
|
patreon: 'Patreon',
|
|
70
|
+
signal: 'Signal',
|
|
69
71
|
slack: 'Slack',
|
|
70
72
|
matrix: 'Matrix',
|
|
71
73
|
openCollective: 'Open Collective',
|
package/style/props.css
CHANGED
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
--sl-text-h4: var(--sl-text-xl);
|
|
80
80
|
--sl-text-h5: var(--sl-text-lg);
|
|
81
81
|
|
|
82
|
-
--sl-line-height: 1.
|
|
82
|
+
--sl-line-height: 1.75;
|
|
83
83
|
--sl-line-height-headings: 1.2;
|
|
84
84
|
|
|
85
85
|
--sl-font-system: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
|
package/translations/ar.json
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"page.lastUpdated": "اخر تحديث:",
|
|
19
19
|
"page.previousLink": "السابق",
|
|
20
20
|
"page.nextLink": "التالي",
|
|
21
|
+
"page.draft": "This content is a draft and will not be included in production builds.",
|
|
21
22
|
"404.text": "الصفحة غير موجودة. تأكد من الرابط أو ابحث بإستعمال شريط البحث.",
|
|
22
23
|
"aside.note": "ملحوظة",
|
|
23
24
|
"aside.tip": "نصيحة",
|
package/translations/cs.json
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"page.lastUpdated": "Poslední aktualizace:",
|
|
19
19
|
"page.previousLink": "Předchozí",
|
|
20
20
|
"page.nextLink": "Další",
|
|
21
|
+
"page.draft": "This content is a draft and will not be included in production builds.",
|
|
21
22
|
"404.text": "Stránka nenalezena. Zkontrolujte adresu URL nebo zkuste použít vyhledávací pole.",
|
|
22
23
|
"aside.note": "Note",
|
|
23
24
|
"aside.tip": "Tip",
|
package/translations/da.json
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"page.lastUpdated": "Sidst opdateret:",
|
|
19
19
|
"page.previousLink": "Forrige",
|
|
20
20
|
"page.nextLink": "Næste",
|
|
21
|
+
"page.draft": "This content is a draft and will not be included in production builds.",
|
|
21
22
|
"404.text": "Siden er ikke fundet. Tjek din URL eller prøv søgelinjen.",
|
|
22
23
|
"aside.note": "Note",
|
|
23
24
|
"aside.tip": "Tip",
|
package/translations/de.json
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"page.lastUpdated": "Zuletzt bearbeitet:",
|
|
19
19
|
"page.previousLink": "Vorherige Seite",
|
|
20
20
|
"page.nextLink": "Nächste Seite",
|
|
21
|
+
"page.draft": "This content is a draft and will not be included in production builds.",
|
|
21
22
|
"404.text": "Seite nicht gefunden. Überprüfe die URL oder nutze die Suchleiste.",
|
|
22
23
|
"aside.note": "Hinweis",
|
|
23
24
|
"aside.tip": "Tipp",
|
package/translations/en.json
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"page.lastUpdated": "Last updated:",
|
|
19
19
|
"page.previousLink": "Previous",
|
|
20
20
|
"page.nextLink": "Next",
|
|
21
|
+
"page.draft": "This content is a draft and will not be included in production builds.",
|
|
21
22
|
"404.text": "Page not found. Check the URL or try using the search bar.",
|
|
22
23
|
"aside.note": "Note",
|
|
23
24
|
"aside.tip": "Tip",
|
package/translations/es.json
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"page.lastUpdated": "Última actualización:",
|
|
19
19
|
"page.previousLink": "Página anterior",
|
|
20
20
|
"page.nextLink": "Siguiente página",
|
|
21
|
+
"page.draft": "This content is a draft and will not be included in production builds.",
|
|
21
22
|
"404.text": "Página no encontrada. Verifica la URL o intenta usar la barra de búsqueda.",
|
|
22
23
|
"aside.note": "Nota",
|
|
23
24
|
"aside.tip": "Consejo",
|
package/translations/fa.json
CHANGED
|
@@ -12,16 +12,17 @@
|
|
|
12
12
|
"menuButton.accessibleLabel": "منو",
|
|
13
13
|
"sidebarNav.accessibleLabel": "اصلی",
|
|
14
14
|
"tableOfContents.onThisPage": "در این صفحه",
|
|
15
|
-
"tableOfContents.overview": "
|
|
15
|
+
"tableOfContents.overview": "نگاه کلی",
|
|
16
16
|
"i18n.untranslatedContent": "این محتوا هنوز به زبان شما در دسترس نیست.",
|
|
17
17
|
"page.editLink": "ویرایش صفحه",
|
|
18
|
-
"page.lastUpdated": "آخرین
|
|
18
|
+
"page.lastUpdated": "آخرین بهروزرسانی:",
|
|
19
19
|
"page.previousLink": "قبلی",
|
|
20
20
|
"page.nextLink": "بعدی",
|
|
21
|
+
"page.draft": "This content is a draft and will not be included in production builds.",
|
|
21
22
|
"404.text": "صفحه یافت نشد. لطفاً URL را بررسی کنید یا از جستجو استفاده نمایید.",
|
|
22
|
-
"aside.note": "
|
|
23
|
-
"aside.tip": "
|
|
24
|
-
"aside.caution": "
|
|
25
|
-
"aside.danger": "
|
|
26
|
-
"fileTree.directory": "
|
|
23
|
+
"aside.note": "یادداشت",
|
|
24
|
+
"aside.tip": "نکته",
|
|
25
|
+
"aside.caution": "احتیاط",
|
|
26
|
+
"aside.danger": "خطر",
|
|
27
|
+
"fileTree.directory": "فهرست"
|
|
27
28
|
}
|
package/translations/fr.json
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"page.lastUpdated": "Dernière mise à jour :",
|
|
19
19
|
"page.previousLink": "Précédent",
|
|
20
20
|
"page.nextLink": "Suivant",
|
|
21
|
+
"page.draft": "Ce contenu est une ébauche et ne sera pas inclus dans la version de production.",
|
|
21
22
|
"404.text": "Page non trouvée. Vérifiez l’URL ou essayez d’utiliser la barre de recherche.",
|
|
22
23
|
"aside.note": "Note",
|
|
23
24
|
"aside.tip": "Astuce",
|
package/translations/gl.json
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"page.lastUpdated": "Última actualización:",
|
|
19
19
|
"page.previousLink": "Anterior",
|
|
20
20
|
"page.nextLink": "Seguinte",
|
|
21
|
+
"page.draft": "This content is a draft and will not be included in production builds.",
|
|
21
22
|
"404.text": "Paxina non atopada. Comproba a URL ou intenta usar a barra de busca.",
|
|
22
23
|
"aside.note": "Note",
|
|
23
24
|
"aside.tip": "Tip",
|
package/translations/he.json
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"page.lastUpdated": "עדכון אחרון:",
|
|
19
19
|
"page.previousLink": "הקודם",
|
|
20
20
|
"page.nextLink": "הבא",
|
|
21
|
+
"page.draft": "This content is a draft and will not be included in production builds.",
|
|
21
22
|
"404.text": "הדף לא נמצא. אנא בדקו את כתובת האתר או נסו להשתמש בסרגל החיפוש.",
|
|
22
23
|
"aside.note": "Note",
|
|
23
24
|
"aside.tip": "Tip",
|
package/translations/hi.json
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"page.lastUpdated": "आखिरी अद्यतन:",
|
|
19
19
|
"page.previousLink": "पिछला",
|
|
20
20
|
"page.nextLink": "अगला",
|
|
21
|
+
"page.draft": "This content is a draft and will not be included in production builds.",
|
|
21
22
|
"404.text": "यह पृष्ठ नहीं मिला। URL जांचें या खोज बार का उपयोग करने का प्रयास करें।",
|
|
22
23
|
"aside.note": "टिप्पणी",
|
|
23
24
|
"aside.tip": "संकेत",
|
package/translations/id.json
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"page.lastUpdated": "Terakhir diperbaharui:",
|
|
19
19
|
"page.previousLink": "Sebelumnya",
|
|
20
20
|
"page.nextLink": "Selanjutnya",
|
|
21
|
+
"page.draft": "This content is a draft and will not be included in production builds.",
|
|
21
22
|
"404.text": "Halaman tidak ditemukan. Cek kembali kolom URL atau gunakan fitur pencarian.",
|
|
22
23
|
"aside.note": "Catatan",
|
|
23
24
|
"aside.tip": "Tips",
|
package/translations/it.json
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"page.lastUpdated": "Ultimo aggiornamento:",
|
|
19
19
|
"page.previousLink": "Indietro",
|
|
20
20
|
"page.nextLink": "Avanti",
|
|
21
|
+
"page.draft": "This content is a draft and will not be included in production builds.",
|
|
21
22
|
"404.text": "Pagina non trovata. Verifica l'URL o prova a utilizzare la barra di ricerca.",
|
|
22
23
|
"aside.note": "Nota",
|
|
23
24
|
"aside.tip": "Consiglio",
|
package/translations/ja.json
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"page.lastUpdated": "最終更新日:",
|
|
19
19
|
"page.previousLink": "前へ",
|
|
20
20
|
"page.nextLink": "次へ",
|
|
21
|
+
"page.draft": "This content is a draft and will not be included in production builds.",
|
|
21
22
|
"404.text": "ページが見つかりません。 URL を確認するか、検索バーを使用してみてください。",
|
|
22
23
|
"aside.note": "ノート",
|
|
23
24
|
"aside.tip": "ヒント",
|
package/translations/ko.json
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"page.lastUpdated": "마지막 업데이트:",
|
|
19
19
|
"page.previousLink": "이전",
|
|
20
20
|
"page.nextLink": "다음",
|
|
21
|
+
"page.draft": "This content is a draft and will not be included in production builds.",
|
|
21
22
|
"404.text": "페이지를 찾을 수 없습니다. URL을 확인하거나 검색 막대를 사용해 보세요.",
|
|
22
23
|
"aside.note": "노트",
|
|
23
24
|
"aside.tip": "팁",
|
package/translations/nb.json
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"page.lastUpdated": "Sist oppdatert:",
|
|
19
19
|
"page.previousLink": "Forrige",
|
|
20
20
|
"page.nextLink": "Neste",
|
|
21
|
+
"page.draft": "This content is a draft and will not be included in production builds.",
|
|
21
22
|
"404.text": "Siden ble ikke funnet. Sjekk URL-en eller prøv å bruke søkefeltet.",
|
|
22
23
|
"aside.note": "Note",
|
|
23
24
|
"aside.tip": "Tip",
|
package/translations/nl.json
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"page.lastUpdated": "Laatst bewerkt:",
|
|
19
19
|
"page.previousLink": "Vorige",
|
|
20
20
|
"page.nextLink": "Volgende",
|
|
21
|
+
"page.draft": "This content is a draft and will not be included in production builds.",
|
|
21
22
|
"404.text": "Pagina niet gevonden. Controleer de URL of probeer de zoekbalk.",
|
|
22
23
|
"aside.note": "Opmerking",
|
|
23
24
|
"aside.tip": "Tip",
|
package/translations/pl.json
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"page.lastUpdated": "Ostatnia aktualizacja:",
|
|
19
19
|
"page.previousLink": "Poprzednia strona",
|
|
20
20
|
"page.nextLink": "Następna strona",
|
|
21
|
+
"page.draft": "This content is a draft and will not be included in production builds.",
|
|
21
22
|
"404.text": "Nie znaleziono. Sprawdź URL lub użyj wyszukiwarki.",
|
|
22
23
|
"aside.note": "Notatka",
|
|
23
24
|
"aside.tip": "Wskazówka",
|
package/translations/pt.json
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"page.lastUpdated": "Última atualização:",
|
|
19
19
|
"page.previousLink": "Anterior",
|
|
20
20
|
"page.nextLink": "Próximo",
|
|
21
|
+
"page.draft": "Esse conteúdo é um rascunho e não será incluído em builds de produção.",
|
|
21
22
|
"404.text": "Página não encontrada. Verifique o URL ou tente usar a barra de pesquisa.",
|
|
22
23
|
"aside.note": "Nota",
|
|
23
24
|
"aside.tip": "Dica",
|
package/translations/ro.json
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"page.lastUpdated": "Ultima actualizare:",
|
|
19
19
|
"page.previousLink": "Pagina precendentă",
|
|
20
20
|
"page.nextLink": "Pagina următoare",
|
|
21
|
+
"page.draft": "This content is a draft and will not be included in production builds.",
|
|
21
22
|
"404.text": "Pagina nu a fost găsită. Verifică adresa URL sau încercă să folosești bara de căutare.",
|
|
22
23
|
"aside.note": "Mențiune",
|
|
23
24
|
"aside.tip": "Sfat",
|
package/translations/ru.json
CHANGED
|
@@ -18,10 +18,14 @@
|
|
|
18
18
|
"page.lastUpdated": "Последнее обновление:",
|
|
19
19
|
"page.previousLink": "Предыдущая",
|
|
20
20
|
"page.nextLink": "Следующая",
|
|
21
|
+
"page.draft": "This content is a draft and will not be included in production builds.",
|
|
21
22
|
"404.text": "Страница не найдена. Проверьте URL или используйте поиск по сайту.",
|
|
22
23
|
"aside.note": "Заметка",
|
|
23
24
|
"aside.tip": "Знали ли вы?",
|
|
24
25
|
"aside.caution": "Осторожно",
|
|
25
26
|
"aside.danger": "Опасно",
|
|
26
|
-
"fileTree.directory": "Директория"
|
|
27
|
+
"fileTree.directory": "Директория",
|
|
28
|
+
"expressiveCode.copyButtonCopied": "Скопировано!",
|
|
29
|
+
"expressiveCode.copyButtonTooltip": "Копировать",
|
|
30
|
+
"expressiveCode.terminalWindowFallbackTitle": "Окно терминала"
|
|
27
31
|
}
|
package/translations/sv.json
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"page.lastUpdated": "Senast uppdaterad:",
|
|
19
19
|
"page.previousLink": "Föregående",
|
|
20
20
|
"page.nextLink": "Nästa",
|
|
21
|
+
"page.draft": "This content is a draft and will not be included in production builds.",
|
|
21
22
|
"404.text": "Sidan hittades inte. Kontrollera URL:n eller testa att använda sökfältet.",
|
|
22
23
|
"aside.note": "Note",
|
|
23
24
|
"aside.tip": "Tip",
|
package/translations/tr.json
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"page.lastUpdated": "Son güncelleme:",
|
|
19
19
|
"page.previousLink": "Önceki",
|
|
20
20
|
"page.nextLink": "Sonraki",
|
|
21
|
+
"page.draft": "This content is a draft and will not be included in production builds.",
|
|
21
22
|
"404.text": "Sayfa bulunamadı. URL'i kontrol edin ya da arama çubuğunu kullanmayı deneyin.",
|
|
22
23
|
"aside.note": "Note",
|
|
23
24
|
"aside.tip": "Tip",
|
package/translations/uk.json
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"page.lastUpdated": "Останнє оновлення:",
|
|
19
19
|
"page.previousLink": "Назад",
|
|
20
20
|
"page.nextLink": "Далі",
|
|
21
|
+
"page.draft": "This content is a draft and will not be included in production builds.",
|
|
21
22
|
"404.text": "Сторінку не знайдено. Перевірте URL або спробуйте скористатися пошуком.",
|
|
22
23
|
"aside.note": "Заувага",
|
|
23
24
|
"aside.tip": "Порада",
|