@riebeckite/plugin-l10n 0.0.31 → 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 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
- ファイル名はこのリポジトリの慣例に合わせ、ドットの `README.ja.md` 形式を推奨します。`README-ja.md`、`README_ja.md`、`README.en-US.md`、`README.zh-CN.md` も利用できます。ディレクトリ名による検出は行いません。
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
- 組み合わせた場合の組み込み規則の優先順位は **frontmatter > 独自検出 > ファイル名 > 既定言語** です。矛盾は `L10N_LANGUAGE_CONFLICT`、同一の翻訳 ID と言語の重複は `L10N_DUPLICATE_TRANSLATION` として診断します。`strict: true` ではビルドを失敗させます。
34
+ 併用した場合、組み込みの判定は **frontmatter > 独自検出 > ファイル名 > 既定言語** の優先順位で行われます。言語の矛盾は `L10N_LANGUAGE_CONFLICT`、同じ翻訳 ID と言語の組み合わせの重複は `L10N_DUPLICATE_TRANSLATION` として診断します。`strict: true` ではビルドを失敗させます。
31
35
 
32
- `translation` はロケール検出とは別です。異なるパス・ファイル名でも明示的な ID でグループ化できます。
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
- 翻訳がない言語のページを複製・生成することはありません。`getLocalization(manifest, slug)` は存在する翻訳だけを `availableLanguages` と言語ごとの `translations` に含め、`getLocalizedContent(manifest, slug, lang)` は見つからなければ `null` を返します。
55
+ 翻訳がない言語向けにページを複製したり生成したりすることはありません。`getLocalization(manifest, slug)` は存在する翻訳だけを `availableLanguages` と言語ごとの `translations` に含め、`getLocalizedContent(manifest, slug, lang)` は見つからなければ `null` を返します。
52
56
 
53
57
  ## URL・テーマ・SEO
54
58
 
55
- 既定言語は既存の URL(`/about`)、その他は言語プレフィックス付き(`/en/about`)です。既存の Content Location を拡張するため、別の URL 解決プラグインとも併用できます。翻訳ごとに URL を変える場合は、異なるソースパスまたは permalink プラグインを使います。
59
+ 既定言語は既存の URL(`/about`)、その他は言語プレフィックス付き(`/en/about`)です。既存のコンテンツロケーション解決を拡張する作りなので、他の URL 解決プラグインとも併用できます。翻訳ごとに URL を変える場合は、異なるソースパスまたは permalink プラグインを使います。
56
60
 
57
- テーマは `getLocalization(manifest, slug)` から現在の言語、存在する言語、各翻訳の href を取得できます。`getLocalizedContent()` は翻訳がなければ `null` を返します。
61
+ `getLocalization(manifest, slug)` を使うと、現在の言語、存在する言語、各翻訳の href を取得できます。`getLocalizedContent()` は翻訳がなければ `null` を返します。
58
62
 
59
- `l10n(...)` は標準記事レイアウトへ組み込みの言語切替 UI を登録します。標準 Site consumer がこの UI を描画するため、l10n 専用の記事レイアウト実装は不要です。実在する翻訳が 2 つ未満のページには表示されません。
63
+ `l10n(...)` は、標準の記事レイアウトに組み込みの言語切替 UI を追加します。標準の Site consumer がこれを描画するため、l10n 専用の記事レイアウトを実装する必要はありません。実在する翻訳が 2 つ未満のページには表示されません。
60
64
 
61
- ## CSS Hook
65
+ ## CSS フック
62
66
 
63
67
  言語切替 UI には `rr-l10n-switcher`、`rr-l10n-switcher__label`、
64
- `rr-l10n-switcher__list`、`rr-l10n-switcher__link` を使用します。default CSS はこれらの Hook を対象にします。
68
+ `rr-l10n-switcher__list`、`rr-l10n-switcher__link` を使用します。既定の CSS はこれらのフックを対象にします。
65
69
 
66
- 各ページには Core の `headTags` 拡張を通じ、実在する翻訳だけを対象に `hreflang` の alternate link を追加します。サイトシェルはこれらのタグの描画と、リクエストに応じた `<html lang>` の選択を担当します。WikiLink の Content Graph は同言語の翻訳を優先し、なければ元のリンク先を使います。本文では Obsidian WikiLink を `@riebeckite/plugin-obsidian-markdown` が解決した後、WikiLink と Markdown の内部リンクを同じ規則で処理します。現在のページと同じ言語の翻訳があればその URL に切り替え、なければ original/default のリンク先を維持します。クエリ文字列とフラグメントは維持し、外部 URL、フラグメントのみのリンク、不明な URL、asset などコンテンツ以外の URL は変更しません。リンク依存関係の追跡でも描画と同じ解析済み Markdown URL を使用するため、HTML 文字参照も同じように扱います。Content Graph と本文リンクは同じ解決ポリシーを使います。
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
- 独自検出の言語は frontmatter より弱く、ファイル名より強く扱われます。`translationId` は明示的な翻訳グループ ID です。
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, l10nPlugin, } from "./src/l10n.js";
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
  };
@@ -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.31",
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/ui": "0.0.31",
27
- "@riebeckite/core": "0.0.31"
27
+ "yaml": "^2.9.0"
28
28
  },
29
29
  "devDependencies": {
30
- "tsx": "^4.22.4",
31
- "@riebeckite/plugin-obsidian-markdown": "0.0.31"
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"