@rigel-cms/rigel 1.0.0-rc.1 → 1.1.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.
Files changed (158) hide show
  1. package/README.md +19 -7
  2. package/docs/extensions.md +194 -0
  3. package/package.json +16 -9
  4. package/src/article-body.ts +49 -37
  5. package/src/article-render.ts +25 -2
  6. package/src/article.ts +44 -0
  7. package/src/config.ts +18 -3
  8. package/src/editor/App.svelte +99 -98
  9. package/src/editor/blocks/extension.ts +29 -0
  10. package/src/editor/blocks/index.ts +17 -15
  11. package/src/editor/blocks/video.ts +2 -1
  12. package/src/editor/i18n/README.md +23 -0
  13. package/src/editor/i18n/de/connection.json +136 -0
  14. package/src/editor/i18n/de/defaults.json +6 -0
  15. package/src/editor/i18n/de/fields.json +130 -0
  16. package/src/editor/i18n/de/local.json +49 -0
  17. package/src/editor/i18n/de/media.json +166 -0
  18. package/src/editor/i18n/de/richtext.json +116 -0
  19. package/src/editor/i18n/de/shell.json +181 -0
  20. package/src/editor/i18n/de/system.json +14 -0
  21. package/src/editor/i18n/de/validation.json +82 -0
  22. package/src/editor/i18n/en/connection.json +136 -0
  23. package/src/editor/i18n/en/defaults.json +6 -0
  24. package/src/editor/i18n/en/fields.json +130 -0
  25. package/src/editor/i18n/en/local.json +49 -0
  26. package/src/editor/i18n/en/media.json +166 -0
  27. package/src/editor/i18n/en/richtext.json +116 -0
  28. package/src/editor/i18n/en/shell.json +181 -0
  29. package/src/editor/i18n/en/system.json +14 -0
  30. package/src/editor/i18n/en/validation.json +82 -0
  31. package/src/editor/i18n/es/connection.json +136 -0
  32. package/src/editor/i18n/es/defaults.json +6 -0
  33. package/src/editor/i18n/es/fields.json +130 -0
  34. package/src/editor/i18n/es/local.json +49 -0
  35. package/src/editor/i18n/es/media.json +166 -0
  36. package/src/editor/i18n/es/richtext.json +116 -0
  37. package/src/editor/i18n/es/shell.json +181 -0
  38. package/src/editor/i18n/es/system.json +14 -0
  39. package/src/editor/i18n/es/validation.json +82 -0
  40. package/src/editor/i18n/format.ts +26 -0
  41. package/src/editor/i18n/fr/connection.json +136 -0
  42. package/src/editor/i18n/fr/defaults.json +6 -0
  43. package/src/editor/i18n/fr/fields.json +130 -0
  44. package/src/editor/i18n/fr/local.json +49 -0
  45. package/src/editor/i18n/fr/media.json +166 -0
  46. package/src/editor/i18n/fr/richtext.json +116 -0
  47. package/src/editor/i18n/fr/shell.json +181 -0
  48. package/src/editor/i18n/fr/system.json +14 -0
  49. package/src/editor/i18n/fr/validation.json +82 -0
  50. package/src/editor/i18n/index.ts +18 -0
  51. package/src/editor/i18n/it/connection.json +136 -0
  52. package/src/editor/i18n/it/defaults.json +6 -0
  53. package/src/editor/i18n/it/fields.json +130 -0
  54. package/src/editor/i18n/it/local.json +49 -0
  55. package/src/editor/i18n/it/media.json +166 -0
  56. package/src/editor/i18n/it/richtext.json +116 -0
  57. package/src/editor/i18n/it/shell.json +181 -0
  58. package/src/editor/i18n/it/system.json +14 -0
  59. package/src/editor/i18n/it/validation.json +82 -0
  60. package/src/editor/i18n/ja/connection.json +136 -0
  61. package/src/editor/i18n/ja/defaults.json +6 -0
  62. package/src/editor/i18n/ja/fields.json +130 -0
  63. package/src/editor/i18n/ja/local.json +49 -0
  64. package/src/editor/i18n/ja/media.json +166 -0
  65. package/src/editor/i18n/ja/richtext.json +116 -0
  66. package/src/editor/i18n/ja/shell.json +181 -0
  67. package/src/editor/i18n/ja/system.json +14 -0
  68. package/src/editor/i18n/ja/validation.json +82 -0
  69. package/src/editor/i18n/locales.ts +13 -0
  70. package/src/editor/i18n/nl/connection.json +136 -0
  71. package/src/editor/i18n/nl/defaults.json +6 -0
  72. package/src/editor/i18n/nl/fields.json +130 -0
  73. package/src/editor/i18n/nl/local.json +49 -0
  74. package/src/editor/i18n/nl/media.json +166 -0
  75. package/src/editor/i18n/nl/richtext.json +116 -0
  76. package/src/editor/i18n/nl/shell.json +181 -0
  77. package/src/editor/i18n/nl/system.json +14 -0
  78. package/src/editor/i18n/nl/validation.json +82 -0
  79. package/src/editor/i18n/ru/connection.json +138 -0
  80. package/src/editor/i18n/ru/defaults.json +6 -0
  81. package/src/editor/i18n/ru/fields.json +132 -0
  82. package/src/editor/i18n/ru/local.json +49 -0
  83. package/src/editor/i18n/ru/media.json +166 -0
  84. package/src/editor/i18n/ru/richtext.json +116 -0
  85. package/src/editor/i18n/ru/shell.json +181 -0
  86. package/src/editor/i18n/ru/system.json +14 -0
  87. package/src/editor/i18n/ru/validation.json +82 -0
  88. package/src/editor/i18n/server.ts +13 -0
  89. package/src/editor/i18n/zh/connection.json +136 -0
  90. package/src/editor/i18n/zh/defaults.json +6 -0
  91. package/src/editor/i18n/zh/fields.json +130 -0
  92. package/src/editor/i18n/zh/local.json +49 -0
  93. package/src/editor/i18n/zh/media.json +166 -0
  94. package/src/editor/i18n/zh/richtext.json +116 -0
  95. package/src/editor/i18n/zh/shell.json +181 -0
  96. package/src/editor/i18n/zh/system.json +14 -0
  97. package/src/editor/i18n/zh/validation.json +82 -0
  98. package/src/editor/lib/ActionDialog.svelte +5 -4
  99. package/src/editor/lib/BlockEditor.svelte +305 -88
  100. package/src/editor/lib/CollectionPanel.svelte +17 -15
  101. package/src/editor/lib/DatePicker.svelte +15 -12
  102. package/src/editor/lib/ExtensionMount.svelte +12 -0
  103. package/src/editor/lib/Field.svelte +3 -2
  104. package/src/editor/lib/ImagePicker.svelte +82 -81
  105. package/src/editor/lib/MarkdownEditor.svelte +25 -24
  106. package/src/editor/lib/MediaPicker.svelte +6 -5
  107. package/src/editor/lib/MenuEditor.svelte +31 -30
  108. package/src/editor/lib/PreviewFrame.svelte +11 -6
  109. package/src/editor/lib/PropertiesTabs.svelte +3 -2
  110. package/src/editor/lib/PublishDialog.svelte +15 -14
  111. package/src/editor/lib/ReferenceSelect.svelte +3 -2
  112. package/src/editor/lib/SchemaField.svelte +15 -13
  113. package/src/editor/lib/SchemaPanel.svelte +20 -19
  114. package/src/editor/lib/Select.svelte +3 -2
  115. package/src/editor/lib/SeoGuidance.svelte +6 -5
  116. package/src/editor/lib/Settings.svelte +54 -54
  117. package/src/editor/lib/Shortcuts.svelte +7 -6
  118. package/src/editor/lib/SitePreview.svelte +10 -9
  119. package/src/editor/lib/TopBar.svelte +18 -17
  120. package/src/editor/lib/UnsavedChanges.svelte +7 -6
  121. package/src/editor/lib/VisualEditor.svelte +14 -13
  122. package/src/editor/lib/calendar.ts +10 -4
  123. package/src/editor/lib/embed-preview.ts +23 -5
  124. package/src/editor/lib/extension-preview.ts +121 -0
  125. package/src/editor/lib/github-auth.ts +23 -22
  126. package/src/editor/lib/github-backend.ts +96 -91
  127. package/src/editor/lib/icons.ts +4 -0
  128. package/src/editor/lib/images.ts +33 -31
  129. package/src/editor/lib/menu-tree.ts +5 -4
  130. package/src/editor/lib/preview-frame.ts +4 -3
  131. package/src/editor/lib/schema-edit.ts +3 -2
  132. package/src/editor/lib/settings.ts +5 -3
  133. package/src/editor/lib/slash-command.ts +1 -0
  134. package/src/editor/lib/tooltip.ts +1 -1
  135. package/src/editor/main.ts +9 -0
  136. package/src/editor/styles.css +6 -3
  137. package/src/env.d.ts +11 -1
  138. package/src/extensions.ts +160 -0
  139. package/src/manifest/collections.ts +6 -5
  140. package/src/manifest/menu.ts +12 -10
  141. package/src/manifest/navigation.ts +9 -8
  142. package/src/manifest/references.ts +8 -7
  143. package/src/manifest/seo.ts +4 -3
  144. package/src/manifest/types.ts +1 -0
  145. package/src/preview-urls.ts +6 -0
  146. package/src/preview.ts +38 -7
  147. package/src/routes/local-api.ts +5 -3
  148. package/src/routes/local-documents.ts +20 -16
  149. package/src/routes/local-media.ts +21 -16
  150. package/src/routes/local-menu.ts +9 -7
  151. package/src/routes/local-post.ts +18 -12
  152. package/src/routes/media-files.ts +10 -8
  153. package/src/routes/rigel-page.astro +2 -1
  154. package/src/schema/store.ts +22 -20
  155. package/src/schema/types.ts +1 -0
  156. package/src/schema/validate.ts +73 -69
  157. package/src/slugs.ts +12 -11
  158. package/src/vite/manifest-plugin.ts +33 -1
@@ -0,0 +1,136 @@
1
+ {
2
+ "connection.invalidAuthOrigin": "認証ゲートウェイのオリジンが無効です。",
3
+ "connection.authorizationDenied": "GitHub の認可が拒否されました。続行するには再度ログインし、アクセスを許可してください。",
4
+ "connection.tokenExchangeFailed": "認証ゲートウェイで GitHub の認可コードをトークンに交換できませんでした。リポジトリへのアクセスはまだ確認されていません。",
5
+ "connection.loginFailed": "GitHub へのログインに失敗しました。再度ログインしてください。",
6
+ "connection.invalidCredentials": "GitHub から無効または期限切れの認証情報が返されました。再度ログインしてください。",
7
+ "connection.loginOpenFailed": "GitHub のログイン画面を開けません。ポップアップを許可して再試行してください。",
8
+ "connection.loginBlocked": "GitHub のログイン用ポップアップがブロックされました。ポップアップを許可して再試行してください。",
9
+ "connection.loginCancelled": "GitHub へのログインがキャンセルされました。再試行してください。",
10
+ "connection.loginTimeout": "GitHub へのログインがタイムアウトしました。再試行してください。",
11
+ "connection.invalidSession": "GitHub のセッションが無効です。再度ログインしてください。",
12
+ "connection.invalidConfiguration": "GitHub リポジトリまたはアプリの設定が無効です。",
13
+ "connection.unreachable": "GitHub に接続できません。接続を確認して再試行してください。",
14
+ "connection.sessionExpired": "GitHub のセッションが期限切れ、または取り消されています。再度ログインしてください。",
15
+ "connection.accessRateLimited": "GitHub のレート制限に達しました。数分待って再試行してください。",
16
+ "connection.accessDenied": "GitHub へのアクセスが拒否されました。アプリの権限と組織の承認を確認し、再度ログインしてください。",
17
+ "connection.repositoryUnavailable": "GitHub リポジトリまたはアプリのインストールを利用できません。リポジトリ名とアプリのインストール状況を確認して再試行してください。",
18
+ "connection.accessCheckFailed": "GitHub でアクセスを確認できませんでした。後で再試行してください。",
19
+ "connection.invalidAccessResponse": "GitHub から無効なアクセス応答が返されました。再試行してください。",
20
+ "connection.incompleteAccessListing": "GitHub のアクセス一覧が不完全です。再試行するか、アプリがアクセスするリポジトリを絞り込んでください。",
21
+ "connection.invalidUser": "GitHub から無効なユーザーが返されました。再度ログインしてください。",
22
+ "connection.invalidRepository": "GitHub から無効なリポジトリが返されました。再試行してください。",
23
+ "connection.unsafePath": "GitHub コンテンツのパスが安全ではありません",
24
+ "connection.invalidBranch": "GitHub ブランチが無効です",
25
+ "connection.connectFirst": "まず設定済みの GitHub リポジトリに接続してください",
26
+ "connection.dedicatedDraftBranch": "GitHub コンテンツの変更には専用の下書きブランチが必要です。公開用ブランチは使用できません",
27
+ "connection.overlappingDirectories": "GitHub コンテンツのディレクトリは重複させないでください",
28
+ "connection.invalidFilename": "コンテンツのファイル名が無効です",
29
+ "connection.requestFailed": "GitHub へのリクエストに失敗しました。接続を確認して再接続してください",
30
+ "connection.malformedResponse": "GitHub API の応答形式が不正です",
31
+ "connection.malformedSha": "GitHub SHA の形式が不正です",
32
+ "connection.malformedPayload": "GitHub コンテンツのペイロード形式が不正です",
33
+ "connection.invalidPayload": "GitHub コンテンツのペイロードが無効、またはサイズが上限を超えています",
34
+ "connection.invalidUtf8": "GitHub コンテンツのペイロードが有効な UTF-8 ではありません",
35
+ "connection.contentTooLarge": "コンテンツが 1 MiB の上限を超えています",
36
+ "connection.invalidRemoteJson": "リモートコンテンツの JSON が無効です",
37
+ "connection.incompleteTree": "GitHub ツリーが不完全なため、コンテンツを安全に読み込めません",
38
+ "connection.malformedTreeEntry": "GitHub ツリーのエントリー形式が不正です",
39
+ "connection.duplicateTreePath": "GitHub ツリーのパスが重複しています",
40
+ "connection.invalidDirectory": "コンテンツディレクトリは実在する GitHub ディレクトリである必要があります",
41
+ "connection.invalidFile": "コンテンツは既存の GitHub 通常ファイルである必要があります",
42
+ "connection.blobShaMismatch": "GitHub blob の SHA が一致しません",
43
+ "connection.invalidRemoteFilename": "リモートコンテンツのファイル名が無効です",
44
+ "connection.invalidCopyGroups": "コピーグループには値オブジェクトを含める必要があります",
45
+ "connection.invalidDocument": "リモートドキュメントはオブジェクトである必要があります",
46
+ "connection.missingCollection": "設定済みの GitHub コレクションが見つかりません",
47
+ "connection.invalidArticle": "リモートの記事が無効です",
48
+ "connection.menuSlugMismatch": "リモートメニューのスラッグがファイル名と一致しません",
49
+ "connection.reloadDraft": "このリポジトリに保存する前に下書きコンテンツを再読み込みしてください",
50
+ "connection.draftConflictUnsaved": "GitHub の下書きブランチで競合しています。保存前に再読み込みしてください。未保存の編集内容は保持されています。",
51
+ "connection.draftConflict": "GitHub の下書きブランチで競合しています。保存前に再読み込みしてください。",
52
+ "connection.branchUpdateUnverified": "GitHub ブランチの更新を確認できませんでした。再試行または再読み込みしてください。",
53
+ "connection.deletionUnverified": "GitHub での削除を確認できませんでした。再読み込みしてください",
54
+ "connection.saveChanged": "確認前に GitHub の保存内容が変更されました。再読み込みしてください",
55
+ "connection.waitBeforeSaving": "公開が完了するまで待ってから保存してください。",
56
+ "connection.invalidValues": "コンテンツの値はオブジェクトである必要があります",
57
+ "connection.unknownCopyPage": "不明なコピーページです",
58
+ "connection.reloadCopyPage": "保存前にコピーページを再読み込みしてください",
59
+ "connection.unknownCollection": "不明なコレクションです",
60
+ "connection.missingSchema": "ドキュメントのスキーマが設定されていません",
61
+ "connection.unknownDocument": "不明なドキュメントの種類またはスラッグです",
62
+ "connection.creationDisabled": "この種類のドキュメントではエントリーの作成が無効になっています",
63
+ "connection.menusNotConfigured": "メニューはサイト開発者による設定が必要です",
64
+ "connection.selectContent": "保存前に編集可能なコンテンツを選択してください",
65
+ "connection.incompletePublishTree": "GitHub ツリーが不完全です。公開できません。GitHub でこの変更を確認してください。",
66
+ "connection.malformedPublishTree": "GitHub の公開用ツリーの形式が不正です",
67
+ "connection.malformedPublishTreeMode": "GitHub の公開用ツリーのモードが不正です",
68
+ "connection.publishWriteRequired": "公開にはリポジトリへの書き込み権限が必要です。",
69
+ "connection.squashDisabled": "スカッシュマージが無効です。公開前にリポジトリの所有者に有効化を依頼してください。",
70
+ "connection.automaticDeletionEnabled": "下書きブランチを保持するため、公開前にリポジトリの所有者にヘッドブランチの自動削除を無効にするよう依頼してください。",
71
+ "connection.comparisonTargetMismatch": "GitHub の比較対象が確認済みの対象と一致しません。",
72
+ "connection.comparisonLimit": "300 ファイル以上の GitHub 比較には対応していません。GitHub でこの変更を公開してください。一部だけの一覧は表示しません。",
73
+ "connection.unsupportedComparison": "GitHub のファイル比較が不完全、または未対応です。GitHub でこの変更を公開してください。",
74
+ "connection.incompleteRename": "GitHub の名前変更の比較が不完全です",
75
+ "connection.incompleteComparison": "GitHub のファイル比較が不完全です。公開できません。一部だけの一覧は表示しません。",
76
+ "connection.publishFileLimit": "300 ファイル以上の公開には対応していません。GitHub でこの変更を確認して公開してください。",
77
+ "connection.branchesChangedDuringReview": "確認中にブランチが変更されました。公開前に変更内容を再確認してください。",
78
+ "connection.waitForWrite": "実行中の保存または公開が完了するまでお待ちください。",
79
+ "connection.reviewFirst": "公開前に保存済みの変更を確認してください。",
80
+ "connection.branchesChanged": "ブランチが変更されました。公開前に変更内容を再確認してください。",
81
+ "connection.pullRequestMismatch": "プルリクエストが今回の確認内容と一致しなくなりました。変更内容を再確認してください。",
82
+ "connection.incompletePullRequests": "GitHub のプルリクエスト一覧が不完全です",
83
+ "connection.multiplePullRequests": "一致するプルリクエストが複数あります。公開前に GitHub で解決してください。",
84
+ "connection.pullRequestListingStopped": "GitHub のプルリクエスト一覧が不完全なため、公開を停止しました。",
85
+ "connection.publishSettingsChanged": "公開設定またはアクセス権限が変更されました。スカッシュマージを有効にし、ブランチの自動削除を無効にして、書き込み権限を確認してから再確認してください。",
86
+ "connection.pullRequestCreationUnconfirmed": "前回のプルリクエスト作成は未確認です。再試行前に GitHub を確認してください。重複するプルリクエストは作成していません。",
87
+ "connection.pullRequestTargetChanged": "プルリクエストまたは対象が変更されました。公開前に変更内容を再確認してください。",
88
+ "connection.syncUnverified": "GitHub で下書きの同期が続いているか、同期を確認できませんでした。しばらく待って下書きコンテンツを再読み込みし、再確認してください。何も公開されていません。",
89
+ "connection.mergeBlocked": "GitHub がこのマージを許可していません。GitHub で競合、必須チェック、レビュー、ブランチ保護の条件を解決してから再試行してください。保護は一切回避しません。",
90
+ "connection.mergeFailed": "GitHub はプルリクエストをマージしませんでした。必須チェック、レビュー、ブランチ保護を確認して再試行してください。",
91
+ "connection.publishUnverified": "公開結果を確認できませんでした。再試行前に GitHub でこのプルリクエストを確認してください。",
92
+ "connection.publishPermissions": "公開には GitHub App の Contents と Pull requests の読み取り・書き込み権限、インストール所有者の承認、リポジトリへの書き込み権限が必要です。承認後に再接続してください。ブランチ保護は引き続き適用されます。",
93
+ "connection.publishRejected": "GitHub が公開を拒否しました。競合、必須チェックとレビュー、ブランチ保護、スカッシュ設定を確認してください。いずれかのブランチが進んだ場合は変更内容を再確認してください。",
94
+ "connection.waitBeforeDeleting": "公開が完了するまで待ってから削除してください。",
95
+ "connection.contentExists": "コンテンツはすでに存在します。別のスラッグを選択してください",
96
+ "connection.reloadContent": "変更前にこのコンテンツを再読み込みしてください",
97
+ "connection.requestRateLimited": "GitHub のレート制限に達しました。しばらく待って再試行してください({status})",
98
+ "connection.requestSessionExpired": "GitHub のセッションが期限切れです。再接続してください({status})",
99
+ "connection.requestAccessDenied": "GitHub へのアクセスが拒否されました。リポジトリにインストールしたアプリの権限を確認してください({status})",
100
+ "connection.requestUnavailable": "GitHub リポジトリ、ブランチ、またはファイルを利用できません。アクセス権限を確認して再読み込みしてください({status})",
101
+ "connection.requestConflict": "GitHub コンテンツが競合しています。保存前に再読み込みしてください({status})",
102
+ "connection.requestRejected": "GitHub がこの変更を拒否しました。パスまたはブランチがすでに存在する可能性があります。再読み込みしてください({status})",
103
+ "connection.requestError": "GitHub へのリクエストに失敗しました。リポジトリへのアクセスを確認して再試行してください({status})",
104
+ "connection.publishOutcomeUnconfirmed": "公開結果は未確認です。GitHub でプルリクエスト #{number} を確認するか、再試行して結果を確認してから、次の公開を開始してください。",
105
+ "connection.cancel": "キャンセル",
106
+ "connection.working": "処理中…",
107
+ "connection.actionFailed": "操作を完了できませんでした。再試行してください。",
108
+ "connection.publishTitle": "保存済みの変更を公開",
109
+ "connection.closePublishReview": "公開内容の確認を閉じる",
110
+ "connection.publishDescription": "公開には、CMS のコンテンツフォルダー外のファイルも含め、{scope}が含まれます。未保存の編集内容は一切含まれず、自動保存もされません。",
111
+ "connection.publishScope": "下書きブランチの保存済みの変更すべて",
112
+ "connection.loadingReview": "確認用のファイル一覧をすべて読み込み中…",
113
+ "connection.publishBranches": "{branch} から {publishBranch} へ、1 つのスカッシュコミットとして反映します。",
114
+ "connection.syncDescription": "公開用ブランチには、以前のスカッシュ公開など、下書きにない変更があります。まず GitHub の通常のマージを使って、明示的に下書きへ同期してください。この操作では公開されません。競合が発生すると同期は停止します。その後、公開前に更新されたファイルを再確認してください。",
115
+ "connection.treeDifferences": "以下は現在のツリーの差分であり、最終的な公開対象の一覧ではありません。",
116
+ "connection.fileCount.one": "{count} ファイル",
117
+ "connection.fileCount.other": "{count} ファイル",
118
+ "connection.allChangedFiles": "変更されたすべてのファイル",
119
+ "connection.previousFilename": "変更前: {filename}",
120
+ "connection.noSavedChanges": "公開する保存済みの変更はありません。両ブランチのツリーは同一です。",
121
+ "connection.publishSafety": "公開前に両ブランチのリビジョンを再確認します。GitHub は下書きのリビジョンを固定しますが、対象のリビジョンをアトミックにロックできません。そのため、直前の対象の更新と競合する可能性は残ります。必須チェック、レビュー、ブランチ保護が適用されます。",
122
+ "connection.close": "閉じる",
123
+ "connection.reviewAgain": "再確認",
124
+ "connection.syncDraftsFirst": "先に下書きを同期",
125
+ "connection.confirmPublish": "公開を確定",
126
+ "connection.unsavedTitle": "未保存の変更",
127
+ "connection.keepEditing": "編集を続ける",
128
+ "connection.unsavedDescription": "未保存の変更があります。保存してから移動しますか?それともこの下書きを破棄しますか?",
129
+ "connection.discardChanges": "変更を破棄",
130
+ "connection.saving": "保存中…",
131
+ "connection.saveAndLeave": "保存して移動",
132
+ "connection.fileStatus.added": "追加",
133
+ "connection.fileStatus.modified": "変更",
134
+ "connection.fileStatus.removed": "削除",
135
+ "connection.fileStatus.renamed": "名前変更"
136
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "defaults.draft": "下書き",
3
+ "defaults.seoTitle": "SEOタイトル",
4
+ "defaults.seoDescription": "SEO説明文",
5
+ "defaults.socialImage": "SNS共有画像"
6
+ }
@@ -0,0 +1,130 @@
1
+ {
2
+ "fields.remove": "削除",
3
+ "fields.addItem": "項目を追加",
4
+ "fields.colorPicker": "{label}のカラーピッカー",
5
+ "fields.colorHexValue": "{label}の16進数カラー値",
6
+ "fields.hideValue": "{label}を非表示",
7
+ "fields.showValue": "{label}を表示",
8
+ "fields.choose": "選択…",
9
+ "fields.itemNumber": "項目{number}",
10
+ "fields.moveItemUp": "{label}の項目{number}を上へ移動",
11
+ "fields.moveItemDown": "{label}の項目{number}を下へ移動",
12
+ "fields.duplicateItem": "{label}の項目{number}を複製",
13
+ "fields.removeItem": "{label}の項目{number}を削除",
14
+ "fields.itemLabel": "{label}の項目{number}",
15
+ "fields.moveUp": "上へ移動",
16
+ "fields.moveDown": "下へ移動",
17
+ "fields.duplicate": "複製",
18
+ "fields.selectLabel": "{label}を選択…",
19
+ "fields.unavailableReference": "利用できません({id})",
20
+ "fields.noEntries": "エントリーはまだ定義されていません。",
21
+ "fields.properties": "プロパティ",
22
+ "fields.content": "コンテンツ",
23
+ "fields.seo": "SEO",
24
+ "fields.selectOptions": "選択肢を選択…",
25
+ "fields.noOptions": "選択肢がありません。",
26
+ "fields.demoContentNotice": "テスト用のフィールド例です。これらの値はウェブサイトの設定とは別です。",
27
+ "fields.sharedContentNotice": "共有コンテンツです。変更はこれを参照するすべてのページに反映されます。",
28
+ "fields.pageProperties": "ページのプロパティ",
29
+ "fields.urlSlug": "URLスラッグ",
30
+ "fields.documentSlugHint": "ドキュメントの識別子やファイル名ではなく、URLを変更します。ウェブサイトのルートではslugメタデータを使う必要があります。",
31
+ "fields.newPageNotice": "新しいページです。保存するとJSONファイルが書き込まれ、サイトにファイルが追加されるとルートが利用可能になります。",
32
+ "fields.structure": "構造",
33
+ "fields.moveSectionUp": "{label}を上へ移動",
34
+ "fields.moveSectionDown": "{label}を下へ移動",
35
+ "fields.duplicateSection": "{label}を複製",
36
+ "fields.removeSection": "{label}を削除",
37
+ "fields.sectionTypeToAdd": "追加するセクションの種類",
38
+ "fields.chooseSection": "セクションを選択…",
39
+ "fields.addSection": "セクションを追加",
40
+ "fields.pendingSections.one": "保存すると新しいセクションが{count}件表示されます。",
41
+ "fields.pendingSections.other": "保存すると新しいセクションが{count}件表示されます。",
42
+ "fields.sectionProperties": "セクションのプロパティ",
43
+ "fields.editReference": "{label}を編集 ↗",
44
+ "fields.articleDetails": "記事の詳細",
45
+ "fields.collectionSlugHint": "コンテンツのファイル名ではなく、URLを変更します。ウェブサイトのルートではslugメタデータを使う必要があります。",
46
+ "fields.commaSeparatedLabel": "{label}(カンマ区切り)",
47
+ "fields.editArticleBody": "プレビューで記事本文を編集",
48
+ "fields.loadingPreview": "プレビューを読み込み中…",
49
+ "fields.editArticleBodyHint": "プレビューの記事本文をクリックすると編集できます。コンテンツの変更には保存が必要です。",
50
+ "fields.seoNotSet": "未設定",
51
+ "fields.seoTooShort": "短すぎます",
52
+ "fields.seoTooLong": "長すぎます",
53
+ "fields.seoRecommendedLength": "推奨の長さです",
54
+ "fields.seoTitleLength": "SEOタイトルの長さ",
55
+ "fields.seoDescriptionLength": "SEO説明文の長さ",
56
+ "fields.seoLengthDetails": "{count}文字。{status}。推奨は{min}〜{max}文字です。",
57
+ "fields.seoRecommendedCharacters": "推奨:{min}〜{max}文字。",
58
+ "fields.seoRecommendedImageSize": "推奨サイズ:1200 × 628 px。",
59
+ "fields.section": "セクション",
60
+ "fields.menuItemNotFound": "メニュー項目が見つかりません",
61
+ "fields.menuMoveIntoSelf": "項目を自身やその子項目の中に移動することはできません",
62
+ "fields.menuDropTargetMissing": "ドロップ先はすでに存在しません",
63
+ "fields.menuMoveDepthLimit": "この移動は{maxDepth}階層の制限を超えます",
64
+ "fields.menuItemMoved": "メニュー項目を移動しました",
65
+ "fields.menuCannotMoveItem": "項目を移動できません",
66
+ "fields.menuMaximumLevels": "最大{maxDepth}階層",
67
+ "fields.menuNewItem": "新しい項目",
68
+ "fields.menuItemAdded": "メニュー項目を追加しました",
69
+ "fields.menuMoveCancelled": "移動をキャンセルしました",
70
+ "fields.menuItems": "メニュー項目",
71
+ "fields.menuPath": "メニューパス",
72
+ "fields.menuUntitledItem": "無題の項目",
73
+ "fields.menuItemDetails": "{label}の詳細",
74
+ "fields.menuItemActions": "{label}の操作",
75
+ "fields.menuUp": "上へ",
76
+ "fields.menuDown": "下へ",
77
+ "fields.menuIndent": "階層を下げる",
78
+ "fields.menuOutdent": "階層を上げる",
79
+ "fields.menuLabel": "ラベル",
80
+ "fields.menuLabelFor": "{id}のラベル",
81
+ "fields.menuUrl": "URL",
82
+ "fields.menuUrlFor": "{id}のURL",
83
+ "fields.menuUrlPlaceholder": "/about または https://example.com",
84
+ "fields.menuOpenInNewTab": "新しいタブで開く",
85
+ "fields.menuGroupItems": "項目",
86
+ "fields.menuDragItem": "{label}をドラッグ",
87
+ "fields.menuOpenItem": "{label}を開く",
88
+ "fields.menuEmptyGroup": "このグループに項目はありません。",
89
+ "fields.menuEmpty": "メニュー項目はまだありません。",
90
+ "fields.menuAddChild": "子項目を追加",
91
+ "fields.menuMaximumLevelsHint": "最大{maxDepth}階層。",
92
+ "fields.menuRemoveTitle": "「{label}」を削除しますか?",
93
+ "fields.menuRemoveDescription": "この項目とすべての子項目を下書きから削除します。変更を確定するには保存してください。",
94
+ "fields.menuItemRemoved": "メニュー項目を削除しました",
95
+ "fields.calendarHeading": "{year}年{month}",
96
+ "fields.chooseDate": "日付を選択…",
97
+ "fields.calendarFor": "{label}のカレンダー",
98
+ "fields.previousMonth": "前の月",
99
+ "fields.calendarMonth": "カレンダーの月",
100
+ "fields.calendarYear": "カレンダーの年",
101
+ "fields.nextMonth": "次の月",
102
+ "fields.today": "今日",
103
+ "fields.clear": "クリア",
104
+ "fields.month.january": "1月",
105
+ "fields.month.february": "2月",
106
+ "fields.month.march": "3月",
107
+ "fields.month.april": "4月",
108
+ "fields.month.may": "5月",
109
+ "fields.month.june": "6月",
110
+ "fields.month.july": "7月",
111
+ "fields.month.august": "8月",
112
+ "fields.month.september": "9月",
113
+ "fields.month.october": "10月",
114
+ "fields.month.november": "11月",
115
+ "fields.month.december": "12月",
116
+ "fields.weekday.sunday": "日曜日",
117
+ "fields.weekday.monday": "月曜日",
118
+ "fields.weekday.tuesday": "火曜日",
119
+ "fields.weekday.wednesday": "水曜日",
120
+ "fields.weekday.thursday": "木曜日",
121
+ "fields.weekday.friday": "金曜日",
122
+ "fields.weekday.saturday": "土曜日",
123
+ "fields.weekdayShort.sunday": "日",
124
+ "fields.weekdayShort.monday": "月",
125
+ "fields.weekdayShort.tuesday": "火",
126
+ "fields.weekdayShort.wednesday": "水",
127
+ "fields.weekdayShort.thursday": "木",
128
+ "fields.weekdayShort.friday": "金",
129
+ "fields.weekdayShort.saturday": "土"
130
+ }
@@ -0,0 +1,49 @@
1
+ {
2
+ "local.documentTooLarge": "文書が上限の1 MiBを超えています",
3
+ "local.dataRequired": "リクエスト本文にはdataオブジェクトが必要です",
4
+ "local.unknownDocument": "不明な文書です",
5
+ "local.readDocumentFailed": "文書を読み込めませんでした",
6
+ "local.documentDeveloperOnly": "文書の作成と削除はサイト開発者が行います",
7
+ "local.unknownDocumentTarget": "不明な文書の種類またはスラッグです",
8
+ "local.saveDocumentFailed": "文書を保存できませんでした",
9
+ "local.unknownCollectionSlug": "不明なコレクションまたはスラッグです",
10
+ "local.invalidArticle": "記事が無効です",
11
+ "local.postExists": "このスラッグの投稿はすでに存在します。コレクションを再読み込みして、下書きを作成し直してください。",
12
+ "local.postNotFound": "該当する投稿がありません",
13
+ "local.invalidMenuSlug": "メニューのスラッグが無効です",
14
+ "local.menuDeveloperOnly": "メニューはサイト開発者が定義します。既存のメニューのみ編集できます。",
15
+ "local.menuSlugMismatch": "メニューのスラッグはリクエストのスラッグと一致する必要があります",
16
+ "local.menuNotFound": "該当するメニューがありません",
17
+ "local.notFound": "見つかりません",
18
+ "local.unsupportedMedia": "メディアの種類またはファイル名が未対応か、一致していません",
19
+ "local.mediaTooLarge": "メディアが{limit} MBを超えています",
20
+ "local.emptyMedia": "メディアの本文が空です",
21
+ "local.readImageFailed": "画像の本文を読み込めませんでした",
22
+ "local.emptyImage": "画像の本文が空です",
23
+ "local.mediaBytesMismatch": "メディアの種類が実際のバイト列と一致しません",
24
+ "local.saveImageFailed": "画像を保存できませんでした",
25
+ "local.saveMetadataFailed": "メタデータを保存できませんでした",
26
+ "local.mediaUrlRequired": "メディアのURLが必要です",
27
+ "local.fileNotFound": "ファイルが見つかりません",
28
+ "local.deleteFileFailed": "ファイルを削除できませんでした。もう一度お試しください。",
29
+ "local.missingSlug": "スラッグがありません",
30
+ "local.copyNotFound": "{slug}のcopyモジュールがありません",
31
+ "local.copyValuesNotFound": "{slug}.tsにvaluesブロックが見つかりません",
32
+ "local.unknownDocumentType": "不明な文書の種類です:{type}",
33
+ "local.creatingDisabled": "この文書の種類ではエントリーの作成が無効になっています",
34
+ "local.invalidDocumentSlug": "文書のスラッグが無効です",
35
+ "local.documentObjectRequired": "文書はオブジェクトである必要があります",
36
+ "local.documentExists": "このスラッグの文書はすでに存在します",
37
+ "local.documentNotFound": "該当する文書がありません",
38
+ "local.writeDocumentFailed": "文書を書き込めませんでした",
39
+ "local.invalidMetadataBody": "リクエスト本文が無効です",
40
+ "local.unknownMetadataField": "不明なメタデータフィールドです",
41
+ "local.unknownAsset": "不明なアセットです",
42
+ "local.invalidDisplayName": "表示名が無効です",
43
+ "local.metadataTitleString": "タイトルは文字列である必要があります",
44
+ "local.metadataDescriptionString": "説明は文字列である必要があります",
45
+ "local.metadataAltString": "代替テキストは文字列である必要があります",
46
+ "local.metadataAltImagesOnly": "代替テキストは画像でのみ使用できます",
47
+ "local.mediaDirectoryUnavailable": "メディアディレクトリを利用できません",
48
+ "local.menuStorageUnavailable": "メニューにアクセスできませんでした。保存済みデータが無効か、保存先が安全でない、または利用できません"
49
+ }
@@ -0,0 +1,166 @@
1
+ {
2
+ "media.insertMedia": "メディアを挿入",
3
+ "media.image": "画像",
4
+ "media.video": "動画",
5
+ "media.insertImage": "画像を挿入",
6
+ "media.metadataSaveFailedStatus": "メタデータの保存に失敗しました({status})",
7
+ "media.metadataSaved": "メタデータを保存しました。",
8
+ "media.metadataSaveFailed": "メタデータの保存に失敗しました",
9
+ "media.deleteFailed": "ファイルを削除できませんでした({status})。もう一度お試しください。",
10
+ "media.fileDeleted": "ファイルを削除しました。",
11
+ "media.listingUnavailable": "メディア一覧を取得できません。ローカル開発サーバーを起動するか、サイトを再ビルドしてください。",
12
+ "media.enterVideoUrl": "https:// または / で始まる動画のURLを入力してください",
13
+ "media.enterImageUrl": "https:// または / で始まる画像のURLを入力してください",
14
+ "media.chooseVideoUrl": "MP4、WebM、MOV形式の動画のURLを選択してください。",
15
+ "media.chooseImageUrl": "文書や他のメディアファイルではなく、画像のURLを選択してください。",
16
+ "media.searchFailed": "検索に失敗しました",
17
+ "media.pasteVideoUrl": "{provider}の動画のURLを貼り付けてください。",
18
+ "media.unsafeMediaUrl": "安全でないメディアURLです",
19
+ "media.uploadedMetadataFailed": "ファイルはアップロードされましたが、メタデータを保存できませんでした({status})。再試行してインポートを完了してください。",
20
+ "media.availableInLibrary": "メディアはリポジトリのライブラリで利用できます。",
21
+ "media.photoImportFailed": "写真のインポートに失敗しました",
22
+ "media.chooseSupportedFile": "安全なファイル名で、{limit} MB以下の対応ファイルを選択してください。",
23
+ "media.chooseSupportedVideo": "安全なファイル名で、{limit} MB以下の対応動画を選択してください。",
24
+ "media.chooseSupportedImage": "安全なファイル名で、{limit} MB以下の対応画像を選択してください。",
25
+ "media.heading": "メディア",
26
+ "media.upload": "アップロード",
27
+ "media.noImage": "画像なし",
28
+ "media.choose": "選択…",
29
+ "media.removeImage": "画像を削除",
30
+ "media.repositoryWritable": "リポジトリのメディア:public/{folder}。アップロードは確認後すぐにファイルに書き込まれます。コンテンツは別途保存が必要です。",
31
+ "media.repositorySnapshot": "リポジトリのメディア:public/{folder}。ビルド時点のスナップショットです。アップロードとストック写真のインポートにはローカル開発サーバーが必要です。GitHubへのアップロードは未接続です。",
32
+ "media.view": "メディアの表示",
33
+ "media.gridView": "グリッド表示",
34
+ "media.listView": "リスト表示",
35
+ "media.type": "メディアの種類",
36
+ "media.videoFormat": "動画形式",
37
+ "media.imageFormat": "画像形式",
38
+ "media.allItems": "すべてのメディア",
39
+ "media.allVideos": "すべての動画",
40
+ "media.allImages": "すべての画像",
41
+ "media.category.Images": "画像",
42
+ "media.category.Audio": "音声",
43
+ "media.category.Video": "動画",
44
+ "media.category.Documents": "文書",
45
+ "media.category.Spreadsheets": "スプレッドシート",
46
+ "media.category.Archives": "アーカイブ",
47
+ "media.category.Other": "その他",
48
+ "media.modifiedMonth": "更新月",
49
+ "media.modifiedMonthHint": "ファイルシステム上の更新月(UTC)。アップロード日ではありません",
50
+ "media.allModifiedDates": "すべての更新日",
51
+ "media.refresh": "再読み込み",
52
+ "media.resetFilters": "フィルターをリセット",
53
+ "media.searchMedia": "メディアを検索",
54
+ "media.searchMediaPlaceholder": "メディアを検索…",
55
+ "media.fileExtension": "ファイル",
56
+ "media.library": "メディアライブラリ",
57
+ "media.file": "ファイル",
58
+ "media.fileType": "種類",
59
+ "media.size": "サイズ",
60
+ "media.modifiedUtc": "更新日時(UTC)",
61
+ "media.loading": "メディアを読み込み中…",
62
+ "media.noMatches": "条件に一致するメディアはありません。",
63
+ "media.emptyFolder": "このフォルダーにはまだメディアがありません。",
64
+ "media.editVideo": "動画を編集",
65
+ "media.addVideoLink": "動画リンクを追加",
66
+ "media.uploadMedia": "メディアをアップロード",
67
+ "media.chooseVideo": "動画を選択",
68
+ "media.chooseImage": "画像を選択",
69
+ "media.editProviderVideo": "{provider}の動画を編集",
70
+ "media.addProviderVideo": "{provider}の動画を追加",
71
+ "media.previewMedia": "メディアをプレビュー",
72
+ "media.close": "閉じる",
73
+ "media.pdfPreview": "PDFプレビュー",
74
+ "media.textPreview": "テキストプレビュー",
75
+ "media.selectedImagePreview": "選択した画像のプレビュー",
76
+ "media.displayName": "表示名",
77
+ "media.mediaDisplayName": "メディアの表示名",
78
+ "media.decorativeAlt": "代替テキスト(装飾用の場合は空欄)",
79
+ "media.imageAlt": "画像の代替テキスト",
80
+ "media.alt": "代替テキスト",
81
+ "media.mediaAlt": "メディアの代替テキスト",
82
+ "media.title": "タイトル",
83
+ "media.imageTitle": "画像のタイトル",
84
+ "media.mediaTitle": "メディアのタイトル",
85
+ "media.description": "説明",
86
+ "media.imageDescription": "画像の説明",
87
+ "media.mediaDescription": "メディアの説明",
88
+ "media.author": "作成者:{author}",
89
+ "media.localUser": "ローカルユーザー",
90
+ "media.videoUrl": "動画のURL",
91
+ "media.imageUrl": "画像のURL",
92
+ "media.captionOptional": "キャプション(任意)",
93
+ "media.descriptiveAlt": "代替テキスト(画像の内容を説明。装飾用の場合は空欄)",
94
+ "media.videoCaption": "動画のキャプション",
95
+ "media.muted": "ミュート",
96
+ "media.showControls": "操作ボタンを表示",
97
+ "media.confirmUpload": "確認すると、このファイルがリポジトリのメディアフォルダーにアップロードされます。コンテンツは別途保存が必要です。",
98
+ "media.confirmDownload": "確認すると、このファイルがリポジトリのメディアフォルダーにダウンロードされます。コンテンツは別途保存が必要です。",
99
+ "media.downloadFile": "ファイルをダウンロード",
100
+ "media.deleteFile": "ファイルを削除",
101
+ "media.filePath": "メディアファイルのパス",
102
+ "media.cancel": "キャンセル",
103
+ "media.saving": "保存中…",
104
+ "media.save": "保存",
105
+ "media.back": "戻る",
106
+ "media.done": "完了",
107
+ "media.uploadingVideo": "動画をアップロード中…",
108
+ "media.importingPhoto": "写真をインポート中…",
109
+ "media.useVideo": "動画を使用",
110
+ "media.uploadFile": "ファイルをアップロード",
111
+ "media.importImage": "画像をインポート",
112
+ "media.videoSources": "動画の取得元",
113
+ "media.imageSources": "画像の取得元",
114
+ "media.source.library": "ライブラリ",
115
+ "media.source.upload": "アップロード",
116
+ "media.source.url": "URL",
117
+ "media.unsplashUploadsHint": "Unsplash APIの写真は直リンクが必須です。コンテンツへの画像挿入時のみ利用でき、リポジトリへのアップロードはできません。",
118
+ "media.providerLinkHint": "{provider}のリンクを貼り付けてください。プライバシー強化モードは標準で有効です。",
119
+ "media.accessibleTitle": "アクセシビリティ用のタイトル(任意)",
120
+ "media.privacyEnhanced": "プライバシー強化(再生するまでCookieを使用しない)",
121
+ "media.updateVideo": "動画を更新",
122
+ "media.insert": "挿入",
123
+ "media.localFileHint": "ローカルファイルを選択し、プレビューして確認してください。確認するまでアップロードされません。",
124
+ "media.uploadVideoLimit": "動画をアップロード(MP4、WebM、MOV)· 最大{limit} MB",
125
+ "media.uploadMediaLimit": "メディアをアップロード(画像、音声、動画、文書、スプレッドシート、アーカイブ)· 最大{limit} MB",
126
+ "media.uploadImageLimit": "画像をアップロード(JPEG、PNG、WebP、GIF、AVIF)· 最大{limit} MB",
127
+ "media.readOnlyUploads": "ローカルからのアップロードにはローカル開発サーバーが必要です。このライブラリは読み取り専用です。",
128
+ "media.videoUrlPlaceholder": "https://… または /media/video.mp4",
129
+ "media.imageUrlPlaceholder": "https://… または /images/photo.jpg",
130
+ "media.useUrl": "このURLを使用",
131
+ "media.picsumHint": "Lorem Picsumの仮画像です(シード値で指定。意味に基づく検索ではありません)。",
132
+ "media.unsplashHint": "Unsplashの写真はUnsplashへのリンクを維持します。選択するとダウンロードが記録されます。",
133
+ "media.stockImportHint": "選択した写真をメディアフォルダーにインポートします(ローカル開発時のみ)。",
134
+ "media.searchPhotos": "写真を検索",
135
+ "media.searchPhotosPlaceholder": "写真を検索…",
136
+ "media.search": "検索",
137
+ "media.noPhotos": "写真が見つかりません。別の検索語をお試しください。",
138
+ "media.deleteTitle": "「{name}」を削除しますか?",
139
+ "media.deleteDescription": "ファイルとそのメタデータを完全に削除します。この操作は取り消せません。このファイルを使用しているページでは、メディアの表示やリンクが機能しなくなります。",
140
+ "media.pexelsKeyPlaceholder": "例:Ab3dE6fG9hJ2…",
141
+ "media.pixabayKeyPlaceholder": "例:12345678-abcdef012345…",
142
+ "media.unsplashKeyPlaceholder": "例:AbCdEf12_GhIjKl34…",
143
+ "media.providerStatus": "{provider} {status}",
144
+ "media.pixabayKeyRequired": "設定 → メディアでPixabayのAPIキーを追加してください",
145
+ "media.unsplashKeyRequired": "設定でUnsplashのAPIキーを追加してください",
146
+ "media.pexelsKeyRequired": "設定 → メディアでPexelsのAPIキーを追加してください",
147
+ "media.unknownStockProvider": "不明なストック写真プロバイダーです",
148
+ "media.unexpectedStockUrl": "予期しないストック写真のURLです",
149
+ "media.unsplashPhotoMissing": "Unsplashの写真またはAPIキーがありません",
150
+ "media.unsplashTrackingFailed": "Unsplashのダウンロード記録に失敗しました({status})",
151
+ "media.unsafeImageUrl": "安全でない画像URLです",
152
+ "media.remoteRequiresHttps": "リモートからのインポートにはHTTPSが必要です",
153
+ "media.unsplashHotlinkRequired": "Unsplash APIの画像は直リンクを維持する必要があります。コンテンツの画像選択画面でUnsplashを使用してください。",
154
+ "media.imageDownloadFailed": "画像のダウンロードに失敗しました。取得元がブラウザーからのダウンロードを許可している必要があります(CORS)。または、画像ファイルをアップロードしてください。",
155
+ "media.photoDownloadFailed": "写真のダウンロードに失敗しました({status})",
156
+ "media.photoLimitExceeded": "写真がインポート上限の{limit} MBを超えています",
157
+ "media.chooseImageFormat": "JPEG、PNG、WebP形式の画像を選択してください。",
158
+ "media.emptyDownload": "ダウンロードした画像が空です",
159
+ "media.uploadFailed": "アップロードに失敗しました({status}):{body}",
160
+ "media.invalidUploadedUrl": "アップロードしたアセットのURLが無効です",
161
+ "media.localImportRequired": "写真のインポートにはローカル開発サーバーが必要です",
162
+ "media.photoImportFailedStatus": "写真のインポートに失敗しました({status})",
163
+ "media.invalidImportedUrl": "インポートした写真のURLが無効です",
164
+ "media.providerVideo": "{provider}の動画",
165
+ "media.embedCaption": "{provider} · {title}"
166
+ }