@riebeckite/plugin-l10n 0.0.32 → 0.0.33
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/README.md +4 -0
- package/README_ja.md +15 -11
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -3
- package/dist/src/l10n.d.ts +0 -1
- package/package.json +7 -6
package/README.md
CHANGED
|
@@ -6,6 +6,10 @@ Content localization for Riebeckite Markdown. It detects a locale and a separate
|
|
|
6
6
|
|
|
7
7
|
[日本語](./README_ja.md)
|
|
8
8
|
|
|
9
|
+
## Live example
|
|
10
|
+
|
|
11
|
+
The language switcher under the breadcrumbs links this page to its Japanese translation. Both URLs belong to the same translation group.
|
|
12
|
+
|
|
9
13
|
## Basic setup
|
|
10
14
|
|
|
11
15
|
```ts
|
package/README_ja.md
CHANGED
|
@@ -6,6 +6,10 @@ Riebeckite の Markdown コンテンツをローカライズするプラグイ
|
|
|
6
6
|
|
|
7
7
|
[English](./README.md)
|
|
8
8
|
|
|
9
|
+
## 実行例
|
|
10
|
+
|
|
11
|
+
パンくずリストの下にある言語切り替えから、このページの日本語版へ移動できます。どちらの URL も同じ翻訳グループに属しています。
|
|
12
|
+
|
|
9
13
|
## 基本設定
|
|
10
14
|
|
|
11
15
|
```ts
|
|
@@ -16,7 +20,7 @@ l10n({ defaultLang: "ja", languages: ["ja", "en", "zh-CN"] });
|
|
|
16
20
|
|
|
17
21
|
## ロケール検出と翻訳グループ
|
|
18
22
|
|
|
19
|
-
|
|
23
|
+
ファイル名はこのリポジトリの慣例に合わせ、`README.ja.md` のようにドットで言語を区切る形式を推奨します。`README-ja.md`、`README_ja.md`、`README.en-US.md`、`README.zh-CN.md` も利用できます。ディレクトリ名による検出は行いません。
|
|
20
24
|
|
|
21
25
|
frontmatter も利用できます。
|
|
22
26
|
|
|
@@ -27,9 +31,9 @@ translation: getting-started
|
|
|
27
31
|
---
|
|
28
32
|
```
|
|
29
33
|
|
|
30
|
-
|
|
34
|
+
併用した場合、組み込みの判定は **frontmatter > 独自検出 > ファイル名 > 既定言語** の優先順位で行われます。言語の矛盾は `L10N_LANGUAGE_CONFLICT`、同じ翻訳 ID と言語の組み合わせの重複は `L10N_DUPLICATE_TRANSLATION` として診断します。`strict: true` ではビルドを失敗させます。
|
|
31
35
|
|
|
32
|
-
`translation`
|
|
36
|
+
`translation` はロケール検出とは独立しています。異なるパス・ファイル名でも明示的な ID でグループ化できます。
|
|
33
37
|
|
|
34
38
|
```text
|
|
35
39
|
日本語/はじめに.md lang: ja, translation: getting-started
|
|
@@ -48,22 +52,22 @@ l10n({
|
|
|
48
52
|
|
|
49
53
|
この場合、`translation: getting-started` の代わりに `translationId: getting-started` を使用します。既定値は `translation` です。
|
|
50
54
|
|
|
51
|
-
|
|
55
|
+
翻訳がない言語向けにページを複製したり生成したりすることはありません。`getLocalization(manifest, slug)` は存在する翻訳だけを `availableLanguages` と言語ごとの `translations` に含め、`getLocalizedContent(manifest, slug, lang)` は見つからなければ `null` を返します。
|
|
52
56
|
|
|
53
57
|
## URL・テーマ・SEO
|
|
54
58
|
|
|
55
|
-
既定言語は既存の URL(`/about`)、その他は言語プレフィックス付き(`/en/about
|
|
59
|
+
既定言語は既存の URL(`/about`)、その他は言語プレフィックス付き(`/en/about`)です。既存のコンテンツロケーション解決を拡張する作りなので、他の URL 解決プラグインとも併用できます。翻訳ごとに URL を変える場合は、異なるソースパスまたは permalink プラグインを使います。
|
|
56
60
|
|
|
57
|
-
|
|
61
|
+
`getLocalization(manifest, slug)` を使うと、現在の言語、存在する言語、各翻訳の href を取得できます。`getLocalizedContent()` は翻訳がなければ `null` を返します。
|
|
58
62
|
|
|
59
|
-
`l10n(...)`
|
|
63
|
+
`l10n(...)` は、標準の記事レイアウトに組み込みの言語切替 UI を追加します。標準の Site consumer がこれを描画するため、l10n 専用の記事レイアウトを実装する必要はありません。実在する翻訳が 2 つ未満のページには表示されません。
|
|
60
64
|
|
|
61
|
-
## CSS
|
|
65
|
+
## CSS フック
|
|
62
66
|
|
|
63
67
|
言語切替 UI には `rr-l10n-switcher`、`rr-l10n-switcher__label`、
|
|
64
|
-
`rr-l10n-switcher__list`、`rr-l10n-switcher__link`
|
|
68
|
+
`rr-l10n-switcher__list`、`rr-l10n-switcher__link` を使用します。既定の CSS はこれらのフックを対象にします。
|
|
65
69
|
|
|
66
|
-
|
|
70
|
+
各ページには、Core の `headTags` 拡張を通じて、実在する翻訳だけを対象にした `hreflang` の alternate link が追加されます。サイトシェルはこれらのタグの描画と、リクエストに応じた `<html lang>` の選択を担当します。WikiLink の Content Graph は同じ言語の翻訳を優先し、なければ元のリンク先を使います。本文では、`@riebeckite/plugin-obsidian-markdown` が Obsidian WikiLink を解決した後に、WikiLink と Markdown の内部リンクを同じ規則で書き換えます。現在のページと同じ言語の翻訳があればその URL に切り替え、なければ元のリンク先を維持します。クエリ文字列とフラグメントは維持し、外部 URL、フラグメントのみのリンク、不明な URL、アセットなどコンテンツ以外の URL は変更しません。リンク依存関係の追跡でも描画と同じ解析済み Markdown URL を使用するため、HTML 文字参照も同じように扱います。Content Graph と本文リンクは同じ解決ポリシーを使います。
|
|
67
71
|
|
|
68
72
|
## 独自検出
|
|
69
73
|
|
|
@@ -76,7 +80,7 @@ l10n({
|
|
|
76
80
|
});
|
|
77
81
|
```
|
|
78
82
|
|
|
79
|
-
|
|
83
|
+
独自検出の言語は、frontmatter より優先度が低く、ファイル名より優先度が高くなります。`translationId` は明示的な翻訳グループ ID です。
|
|
80
84
|
|
|
81
85
|
## 関連リンク
|
|
82
86
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export type { LanguageSwitcherProps } from "./components/language-switcher.js";
|
|
2
2
|
export { default as LanguageSwitcher } from "./components/language-switcher.js";
|
|
3
|
-
export { getLanguageFromPath, getLocalization, getLocalizedContent, type L10nContent, type L10nDetectorContext, type L10nDetectorResult, type L10nOptions, type LocalizedContent, l10n,
|
|
3
|
+
export { getLanguageFromPath, getLocalization, getLocalizedContent, type L10nContent, type L10nDetectorContext, type L10nDetectorResult, type L10nOptions, type LocalizedContent, l10n, } from "./src/l10n.js";
|
package/dist/index.js
CHANGED
|
@@ -78,7 +78,6 @@ function l10n(options) {
|
|
|
78
78
|
addDiagnostics: () => state.diagnostics
|
|
79
79
|
});
|
|
80
80
|
}
|
|
81
|
-
var l10nPlugin = l10n;
|
|
82
81
|
function remarkLocalizedLinks(options) {
|
|
83
82
|
return (tree) => {
|
|
84
83
|
const source = options.sourceSlug ? options.state.contents.get(options.sourceSlug) : void 0;
|
|
@@ -630,6 +629,5 @@ export {
|
|
|
630
629
|
getLanguageFromPath,
|
|
631
630
|
getLocalization,
|
|
632
631
|
getLocalizedContent,
|
|
633
|
-
l10n
|
|
634
|
-
l10nPlugin
|
|
632
|
+
l10n
|
|
635
633
|
};
|
package/dist/src/l10n.d.ts
CHANGED
|
@@ -28,7 +28,6 @@ export type LocalizedContent = {
|
|
|
28
28
|
readonly translations: Readonly<Record<string, string>>;
|
|
29
29
|
};
|
|
30
30
|
export declare function l10n(options: L10nOptions): import("@riebeckite/core").RiebeckitePlugin<L10nOptions>;
|
|
31
|
-
export declare const l10nPlugin: typeof l10n;
|
|
32
31
|
/** Returns one entry's language and available real translations. */
|
|
33
32
|
export declare function getLocalization(view: ContentManifest | PublicContentView, slug: string): LocalizedContent | null;
|
|
34
33
|
/** Resolves an existing translation; missing translations return `null`. */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@riebeckite/plugin-l10n",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.33",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -21,14 +21,15 @@
|
|
|
21
21
|
"./style.css": "./style.css"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
+
"@riebeckite/core": "0.0.33",
|
|
25
|
+
"@riebeckite/ui": "0.0.33",
|
|
24
26
|
"hono": "^4.12.25",
|
|
25
|
-
"yaml": "^2.9.0"
|
|
26
|
-
"@riebeckite/core": "0.0.32",
|
|
27
|
-
"@riebeckite/ui": "0.0.32"
|
|
27
|
+
"yaml": "^2.9.0"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"
|
|
31
|
-
"@riebeckite/
|
|
30
|
+
"@riebeckite/plugin-obsidian-markdown": "0.0.33",
|
|
31
|
+
"@riebeckite/node": "0.0.33",
|
|
32
|
+
"tsx": "^4.22.4"
|
|
32
33
|
},
|
|
33
34
|
"publishConfig": {
|
|
34
35
|
"access": "public"
|