Skip to content

Commit c27f1fe

Browse files
committed
feat(clips): add local history and duplicate-save warning
1 parent e087d08 commit c27f1fe

25 files changed

Lines changed: 1325 additions & 60 deletions

public/_locales/de/messages.json

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,53 @@
197197
}
198198
}
199199
},
200+
"historyDocumentTitle": { "message": "Memos Web Clipper – Gespeicherte Clips" },
201+
"popupOpenHistory": { "message": "Gespeicherte Clips öffnen" },
202+
"popupSaveAgain": { "message": "Erneut speichern" },
203+
"popupSavedBefore": {
204+
"message": "Bereits gespeichert · $DATE$",
205+
"placeholders": { "date": { "content": "$1", "example": "29. Juli, 14:32" } }
206+
},
207+
"popupOpenMemo": { "message": "Memo öffnen" },
208+
"popupDismissSavedNotice": { "message": "Hinweis schließen" },
209+
"historyTitle": { "message": "Gespeicherte Clips" },
210+
"historyStoredLocally": { "message": "In diesem Browser gespeichert" },
211+
"historySettings": { "message": "Einstellungen" },
212+
"historyCount_one": {
213+
"message": "$COUNT$ gespeicherter Clip",
214+
"placeholders": { "count": { "content": "$1", "example": "1" } }
215+
},
216+
"historyCount_other": {
217+
"message": "$COUNT$ gespeicherte Clips",
218+
"placeholders": { "count": { "content": "$1", "example": "38" } }
219+
},
220+
"historySearch": { "message": "Titel, URL oder Inhalt durchsuchen" },
221+
"historyDestinationFilter": { "message": "Memos-Ziel" },
222+
"historyAllDestinations": { "message": "Alle Ziele" },
223+
"historyOpenSource": { "message": "Quellseite öffnen" },
224+
"historyOpenMemo": { "message": "Memo öffnen" },
225+
"historySelection": { "message": "Ihre Auswahl" },
226+
"historySelectedImages_one": {
227+
"message": "$COUNT$ ausgewähltes Bild",
228+
"placeholders": { "count": { "content": "$1", "example": "1" } }
229+
},
230+
"historySelectedImages_other": {
231+
"message": "$COUNT$ ausgewählte Bilder",
232+
"placeholders": { "count": { "content": "$1", "example": "2" } }
233+
},
234+
"historyImageOnlySelection": { "message": "Nur Bilder ausgewählt" },
235+
"historyMemoContent": { "message": "In Memos gespeicherter Inhalt" },
236+
"historyDetails": { "message": "Details" },
237+
"historySourceUrl": { "message": "Quell-URL" },
238+
"historyDestination": { "message": "Ziel" },
239+
"historySavedAt": { "message": "Gespeichert am" },
240+
"historyTechnicalDetails": { "message": "Technische Details" },
241+
"historyRecordId": { "message": "Datensatz-ID" },
242+
"historyDedupeKey": { "message": "Deduplizierungsschlüssel" },
243+
"historyMemoName": { "message": "Memo-Name" },
244+
"historyEmptyTitle": { "message": "Noch keine gespeicherten Clips" },
245+
"historyEmptyDescription": { "message": "Speichern Sie eine Webseite mit dem Clipper. Sie erscheint dann hier." },
246+
"historyNoResults": { "message": "Keine gespeicherten Clips entsprechen Ihrer Suche." },
200247
"optionsClipTemplate": {
201248
"message": "Clipvorlage"
202249
},

public/_locales/en/messages.json

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"actionTitle": { "message": "Clip to Memos", "description": "Toolbar button tooltip." },
88
"popupDocumentTitle": { "message": "Clip to Memos" },
99
"optionsDocumentTitle": { "message": "Memos Web Clipper — Settings" },
10+
"historyDocumentTitle": { "message": "Memos Web Clipper — Saved clips" },
1011
"optionsLanguage": { "message": "Language" },
1112
"localeBrowserDefault": { "message": "Browser language" },
1213
"optionsLanguageSaveError": { "message": "The language preference couldn't be saved. Please try again." },
@@ -27,6 +28,7 @@
2728
"commonDirect": { "message": "Direct" },
2829

2930
"popupOpenInstance": { "message": "Open your Memos instance" },
31+
"popupOpenHistory": { "message": "Open saved clips" },
3032
"popupExtensionSettings": { "message": "Extension settings" },
3133
"popupMemoContent": { "message": "Memo content" },
3234
"popupVisibility": { "message": "Visibility" },
@@ -35,7 +37,14 @@
3537
"popupPublicDescription": { "message": "Visible to everyone" },
3638
"popupEmptyCapturePlaceholder": { "message": "Nothing could be captured from this page — write your memo here" },
3739
"popupSaveToMemos": { "message": "Save to Memos" },
40+
"popupSaveAgain": { "message": "Save again" },
3841
"popupSavedToMemos": { "message": "Saved to Memos" },
42+
"popupSavedBefore": {
43+
"message": "Saved before · $DATE$",
44+
"placeholders": { "date": { "content": "$1", "example": "Jul 29, 14:32" } }
45+
},
46+
"popupOpenMemo": { "message": "Open memo" },
47+
"popupDismissSavedNotice": { "message": "Dismiss saved notice" },
3948
"popupFailedImages_one": {
4049
"message": "$COUNT$ image couldn't be uploaded",
4150
"description": "Shown after saving when exactly one image upload failed.",
@@ -86,6 +95,45 @@
8695
}
8796
},
8897

98+
"historyTitle": { "message": "Saved clips" },
99+
"historyStoredLocally": { "message": "Saved in this browser" },
100+
"historySettings": { "message": "Settings" },
101+
"historyCount_one": {
102+
"message": "$COUNT$ saved clip",
103+
"placeholders": { "count": { "content": "$1", "example": "1" } }
104+
},
105+
"historyCount_other": {
106+
"message": "$COUNT$ saved clips",
107+
"placeholders": { "count": { "content": "$1", "example": "38" } }
108+
},
109+
"historySearch": { "message": "Search title, URL, or content" },
110+
"historyDestinationFilter": { "message": "Memos destination" },
111+
"historyAllDestinations": { "message": "All destinations" },
112+
"historyOpenSource": { "message": "Open source" },
113+
"historyOpenMemo": { "message": "Open memo" },
114+
"historySelection": { "message": "Your selection" },
115+
"historySelectedImages_one": {
116+
"message": "$COUNT$ selected image",
117+
"placeholders": { "count": { "content": "$1", "example": "1" } }
118+
},
119+
"historySelectedImages_other": {
120+
"message": "$COUNT$ selected images",
121+
"placeholders": { "count": { "content": "$1", "example": "2" } }
122+
},
123+
"historyImageOnlySelection": { "message": "Image-only selection" },
124+
"historyMemoContent": { "message": "Content saved to Memos" },
125+
"historyDetails": { "message": "Details" },
126+
"historySourceUrl": { "message": "Source URL" },
127+
"historyDestination": { "message": "Destination" },
128+
"historySavedAt": { "message": "Saved at" },
129+
"historyTechnicalDetails": { "message": "Technical details" },
130+
"historyRecordId": { "message": "Record ID" },
131+
"historyDedupeKey": { "message": "Dedupe key" },
132+
"historyMemoName": { "message": "Memo name" },
133+
"historyEmptyTitle": { "message": "No saved clips yet" },
134+
"historyEmptyDescription": { "message": "Save a web page with the clipper and it will appear here." },
135+
"historyNoResults": { "message": "No saved clips match your search." },
136+
89137
"optionsClipTemplate": { "message": "Clip template" },
90138
"optionsTemplateLocked": { "message": "Connect a supported Memos instance first; then you can configure how clips are formatted." },
91139
"optionsTemplateDescription": {

public/_locales/es/messages.json

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,53 @@
197197
}
198198
}
199199
},
200+
"historyDocumentTitle": { "message": "Memos Web Clipper — Clips guardados" },
201+
"popupOpenHistory": { "message": "Abrir clips guardados" },
202+
"popupSaveAgain": { "message": "Guardar de nuevo" },
203+
"popupSavedBefore": {
204+
"message": "Guardado antes · $DATE$",
205+
"placeholders": { "date": { "content": "$1", "example": "29 jul, 14:32" } }
206+
},
207+
"popupOpenMemo": { "message": "Abrir memo" },
208+
"popupDismissSavedNotice": { "message": "Cerrar aviso de guardado" },
209+
"historyTitle": { "message": "Clips guardados" },
210+
"historyStoredLocally": { "message": "Guardados en este navegador" },
211+
"historySettings": { "message": "Ajustes" },
212+
"historyCount_one": {
213+
"message": "$COUNT$ clip guardado",
214+
"placeholders": { "count": { "content": "$1", "example": "1" } }
215+
},
216+
"historyCount_other": {
217+
"message": "$COUNT$ clips guardados",
218+
"placeholders": { "count": { "content": "$1", "example": "38" } }
219+
},
220+
"historySearch": { "message": "Buscar título, URL o contenido" },
221+
"historyDestinationFilter": { "message": "Destino de Memos" },
222+
"historyAllDestinations": { "message": "Todos los destinos" },
223+
"historyOpenSource": { "message": "Abrir página original" },
224+
"historyOpenMemo": { "message": "Abrir memo" },
225+
"historySelection": { "message": "Tu selección" },
226+
"historySelectedImages_one": {
227+
"message": "$COUNT$ imagen seleccionada",
228+
"placeholders": { "count": { "content": "$1", "example": "1" } }
229+
},
230+
"historySelectedImages_other": {
231+
"message": "$COUNT$ imágenes seleccionadas",
232+
"placeholders": { "count": { "content": "$1", "example": "2" } }
233+
},
234+
"historyImageOnlySelection": { "message": "Selección solo de imágenes" },
235+
"historyMemoContent": { "message": "Contenido guardado en Memos" },
236+
"historyDetails": { "message": "Detalles" },
237+
"historySourceUrl": { "message": "URL de origen" },
238+
"historyDestination": { "message": "Destino" },
239+
"historySavedAt": { "message": "Guardado el" },
240+
"historyTechnicalDetails": { "message": "Detalles técnicos" },
241+
"historyRecordId": { "message": "ID del registro" },
242+
"historyDedupeKey": { "message": "Clave de deduplicación" },
243+
"historyMemoName": { "message": "Nombre del memo" },
244+
"historyEmptyTitle": { "message": "Todavía no hay clips guardados" },
245+
"historyEmptyDescription": { "message": "Guarda una página web con el clipper y aparecerá aquí." },
246+
"historyNoResults": { "message": "Ningún clip guardado coincide con tu búsqueda." },
200247
"optionsClipTemplate": {
201248
"message": "Plantilla de clip"
202249
},

public/_locales/fr/messages.json

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,53 @@
197197
}
198198
}
199199
},
200+
"historyDocumentTitle": { "message": "Memos Web Clipper — Extraits enregistrés" },
201+
"popupOpenHistory": { "message": "Ouvrir les extraits enregistrés" },
202+
"popupSaveAgain": { "message": "Enregistrer à nouveau" },
203+
"popupSavedBefore": {
204+
"message": "Déjà enregistré · $DATE$",
205+
"placeholders": { "date": { "content": "$1", "example": "29 juil., 14:32" } }
206+
},
207+
"popupOpenMemo": { "message": "Ouvrir le mémo" },
208+
"popupDismissSavedNotice": { "message": "Fermer l’avis d’enregistrement" },
209+
"historyTitle": { "message": "Extraits enregistrés" },
210+
"historyStoredLocally": { "message": "Enregistrés dans ce navigateur" },
211+
"historySettings": { "message": "Paramètres" },
212+
"historyCount_one": {
213+
"message": "$COUNT$ extrait enregistré",
214+
"placeholders": { "count": { "content": "$1", "example": "1" } }
215+
},
216+
"historyCount_other": {
217+
"message": "$COUNT$ extraits enregistrés",
218+
"placeholders": { "count": { "content": "$1", "example": "38" } }
219+
},
220+
"historySearch": { "message": "Rechercher un titre, une URL ou du contenu" },
221+
"historyDestinationFilter": { "message": "Destination Memos" },
222+
"historyAllDestinations": { "message": "Toutes les destinations" },
223+
"historyOpenSource": { "message": "Ouvrir la page source" },
224+
"historyOpenMemo": { "message": "Ouvrir le mémo" },
225+
"historySelection": { "message": "Votre sélection" },
226+
"historySelectedImages_one": {
227+
"message": "$COUNT$ image sélectionnée",
228+
"placeholders": { "count": { "content": "$1", "example": "1" } }
229+
},
230+
"historySelectedImages_other": {
231+
"message": "$COUNT$ images sélectionnées",
232+
"placeholders": { "count": { "content": "$1", "example": "2" } }
233+
},
234+
"historyImageOnlySelection": { "message": "Sélection composée uniquement d’images" },
235+
"historyMemoContent": { "message": "Contenu enregistré dans Memos" },
236+
"historyDetails": { "message": "Détails" },
237+
"historySourceUrl": { "message": "URL source" },
238+
"historyDestination": { "message": "Destination" },
239+
"historySavedAt": { "message": "Enregistré le" },
240+
"historyTechnicalDetails": { "message": "Détails techniques" },
241+
"historyRecordId": { "message": "ID de l’enregistrement" },
242+
"historyDedupeKey": { "message": "Clé de déduplication" },
243+
"historyMemoName": { "message": "Nom du mémo" },
244+
"historyEmptyTitle": { "message": "Aucun extrait enregistré" },
245+
"historyEmptyDescription": { "message": "Enregistrez une page web avec le clipper pour la voir apparaître ici." },
246+
"historyNoResults": { "message": "Aucun extrait enregistré ne correspond à votre recherche." },
200247
"optionsClipTemplate": {
201248
"message": "Modèle de clip"
202249
},

public/_locales/ja/messages.json

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,53 @@
200200
}
201201
}
202202
},
203+
"historyDocumentTitle": { "message": "Memos Web Clipper — 保存履歴" },
204+
"popupOpenHistory": { "message": "保存履歴を開く" },
205+
"popupSaveAgain": { "message": "もう一度保存" },
206+
"popupSavedBefore": {
207+
"message": "保存済み · $DATE$",
208+
"placeholders": { "date": { "content": "$1", "example": "7月29日 14:32" } }
209+
},
210+
"popupOpenMemo": { "message": "Memoを開く" },
211+
"popupDismissSavedNotice": { "message": "保存済みの通知を閉じる" },
212+
"historyTitle": { "message": "保存履歴" },
213+
"historyStoredLocally": { "message": "このブラウザーに保存されています" },
214+
"historySettings": { "message": "設定" },
215+
"historyCount_one": {
216+
"message": "$COUNT$ 件の保存",
217+
"placeholders": { "count": { "content": "$1", "example": "1" } }
218+
},
219+
"historyCount_other": {
220+
"message": "$COUNT$ 件の保存",
221+
"placeholders": { "count": { "content": "$1", "example": "38" } }
222+
},
223+
"historySearch": { "message": "タイトル、URL、内容を検索" },
224+
"historyDestinationFilter": { "message": "Memosの保存先" },
225+
"historyAllDestinations": { "message": "すべての保存先" },
226+
"historyOpenSource": { "message": "元ページを開く" },
227+
"historyOpenMemo": { "message": "Memoを開く" },
228+
"historySelection": { "message": "選択した内容" },
229+
"historySelectedImages_one": {
230+
"message": "選択した画像 $COUNT$ 件",
231+
"placeholders": { "count": { "content": "$1", "example": "1" } }
232+
},
233+
"historySelectedImages_other": {
234+
"message": "選択した画像 $COUNT$ 件",
235+
"placeholders": { "count": { "content": "$1", "example": "2" } }
236+
},
237+
"historyImageOnlySelection": { "message": "画像のみの選択" },
238+
"historyMemoContent": { "message": "Memosに保存した内容" },
239+
"historyDetails": { "message": "詳細" },
240+
"historySourceUrl": { "message": "元のURL" },
241+
"historyDestination": { "message": "保存先" },
242+
"historySavedAt": { "message": "保存日時" },
243+
"historyTechnicalDetails": { "message": "技術情報" },
244+
"historyRecordId": { "message": "レコードID" },
245+
"historyDedupeKey": { "message": "重複排除キー" },
246+
"historyMemoName": { "message": "Memo名" },
247+
"historyEmptyTitle": { "message": "保存履歴はまだありません" },
248+
"historyEmptyDescription": { "message": "Webページをクリッパーで保存すると、ここに表示されます。" },
249+
"historyNoResults": { "message": "検索に一致する保存履歴はありません。" },
203250
"optionsClipTemplate": {
204251
"message": "クリップテンプレート"
205252
},

public/_locales/zh_CN/messages.json

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,53 @@
200200
}
201201
}
202202
},
203+
"historyDocumentTitle": { "message": "Memos 网页剪藏器 — 保存历史" },
204+
"popupOpenHistory": { "message": "打开保存历史" },
205+
"popupSaveAgain": { "message": "再次保存" },
206+
"popupSavedBefore": {
207+
"message": "保存过 · $DATE$",
208+
"placeholders": { "date": { "content": "$1", "example": "7月29日 14:32" } }
209+
},
210+
"popupOpenMemo": { "message": "打开 Memo" },
211+
"popupDismissSavedNotice": { "message": "忽略保存提示" },
212+
"historyTitle": { "message": "保存历史" },
213+
"historyStoredLocally": { "message": "保存在这个浏览器中" },
214+
"historySettings": { "message": "设置" },
215+
"historyCount_one": {
216+
"message": "$COUNT$ 条保存记录",
217+
"placeholders": { "count": { "content": "$1", "example": "1" } }
218+
},
219+
"historyCount_other": {
220+
"message": "$COUNT$ 条保存记录",
221+
"placeholders": { "count": { "content": "$1", "example": "38" } }
222+
},
223+
"historySearch": { "message": "搜索标题、网址或内容" },
224+
"historyDestinationFilter": { "message": "Memos 保存目标" },
225+
"historyAllDestinations": { "message": "所有目标" },
226+
"historyOpenSource": { "message": "打开原网页" },
227+
"historyOpenMemo": { "message": "打开 Memo" },
228+
"historySelection": { "message": "你选择的内容" },
229+
"historySelectedImages_one": {
230+
"message": "$COUNT$ 张选中图片",
231+
"placeholders": { "count": { "content": "$1", "example": "1" } }
232+
},
233+
"historySelectedImages_other": {
234+
"message": "$COUNT$ 张选中图片",
235+
"placeholders": { "count": { "content": "$1", "example": "2" } }
236+
},
237+
"historyImageOnlySelection": { "message": "仅选择了图片" },
238+
"historyMemoContent": { "message": "保存到 Memos 的内容" },
239+
"historyDetails": { "message": "详细信息" },
240+
"historySourceUrl": { "message": "来源网址" },
241+
"historyDestination": { "message": "保存目标" },
242+
"historySavedAt": { "message": "保存时间" },
243+
"historyTechnicalDetails": { "message": "技术信息" },
244+
"historyRecordId": { "message": "记录 ID" },
245+
"historyDedupeKey": { "message": "去重键" },
246+
"historyMemoName": { "message": "Memo 名称" },
247+
"historyEmptyTitle": { "message": "还没有保存记录" },
248+
"historyEmptyDescription": { "message": "用扩展保存一个网页后,它会出现在这里。" },
249+
"historyNoResults": { "message": "没有符合搜索条件的保存记录。" },
203250
"optionsClipTemplate": {
204251
"message": "剪藏模板"
205252
},

0 commit comments

Comments
 (0)