From c9654a789267c01bf4c687c47d1978525cf84996 Mon Sep 17 00:00:00 2001 From: ansuz Date: Wed, 30 Jun 2021 16:51:50 +0530 Subject: [PATCH 01/33] remove XXX notes from forms and comment why they were there --- www/form/inner.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/www/form/inner.js b/www/form/inner.js index 123e86d5b..23332b944 100644 --- a/www/form/inner.js +++ b/www/form/inner.js @@ -80,8 +80,11 @@ define([ timeFormat = "h:i K"; } - var MAX_OPTIONS = 15; // XXX - var MAX_ITEMS = 10; // XXX + // multi-line radio, checkboxes, and possibly other things have a max number of items + // we'll consider increasing this restriction if people are unhappy with it + // but as a general rule we expect users will appreciate having simpler questions + var MAX_OPTIONS = 15; + var MAX_ITEMS = 10; var saveAndCancelOptions = function (getRes, cb) { // Cancel changes From 8da7cb023f74a5fdb283aa9c8c4cddc7d52699b1 Mon Sep 17 00:00:00 2001 From: Weblate Date: Wed, 30 Jun 2021 13:23:22 +0200 Subject: [PATCH 02/33] Translated using Weblate (Japanese) Currently translated at 92.4% (1263 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.4% (1263 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.4% (1263 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.3% (1262 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.3% (1262 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.3% (1261 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.2% (1260 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.2% (1260 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.1% (1259 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.1% (1259 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.1% (1259 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.0% (1258 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.0% (1258 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.0% (1258 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.0% (1258 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.0% (1258 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.0% (1257 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.0% (1257 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 91.9% (1256 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 91.9% (1256 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 91.8% (1254 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 91.8% (1254 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 91.8% (1254 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 91.8% (1254 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 91.8% (1254 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 91.8% (1254 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 91.8% (1254 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 91.8% (1254 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 91.7% (1253 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 91.6% (1252 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 91.6% (1252 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 91.7% (1253 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 91.7% (1253 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 91.6% (1252 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 91.6% (1252 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ --- www/common/translations/messages.ja.json | 61 ++++++++++++++---------- 1 file changed, 37 insertions(+), 24 deletions(-) diff --git a/www/common/translations/messages.ja.json b/www/common/translations/messages.ja.json index a2d5e39ae..f8d52b8c6 100644 --- a/www/common/translations/messages.ja.json +++ b/www/common/translations/messages.ja.json @@ -1,7 +1,7 @@ { "common_connectionLost": "サーバーとの接続が切断しました
再接続するまで閲覧モードになります。", "button_newsheet": "新規スプレッドシート", - "button_newkanban": "新規看板", + "button_newkanban": "新規のカンバン", "button_newwhiteboard": "新規ホワイトボード", "button_newslide": "新規プレゼンテーション", "button_newpoll": "新規投票・アンケート", @@ -60,7 +60,7 @@ "fm_folder": "フォルダ", "fm_folderName": "フォルダ名", "fm_fileName": "ファイル名", - "crowdfunding_button2": "CryptPad を助ける", + "crowdfunding_button2": "CryptPadを支援", "fm_padIsOwned": "あなたはこのパッドの所有者です", "creation_expiration": "有効期限", "owner_removeText": "所有者", @@ -101,7 +101,7 @@ "settings_changePasswordNew": "新しいパスワード", "settings_changePasswordCurrent": "現在のパスワード", "settings_changePasswordButton": "パスワードを変更", - "settings_changePasswordHint": "アカウントのパスワードを変更します。「現在のパスワード」と、「新しいパスワード」および「新しいパスワードの確認」を入力してください。
あなたがパスワードを忘れた場合、パスワードをリセットする方法はありません。細心の注意を払って、パスワードを安全に管理してください。", + "settings_changePasswordHint": "アカウントのパスワードを変更します。「現在のパスワード」と、「新しいパスワード」および「新しいパスワードの確認」を入力してください。
パスワードを忘れた場合、パスワードをリセットする方法はありません。細心の注意を払って、パスワードを安全に管理してください。", "settings_changePasswordTitle": "パスワードの変更", "languageButton": "言語", "language": "言語", @@ -120,10 +120,10 @@ "profile_addLink": "あなたのウェブサイトへのリンクを追加", "shareSuccess": "リンクをクリップボードにコピーしました", "shareButton": "共有", - "login_hashing": "パスワードをハッシュ化しています、この処理には時間がかかる場合があります。", + "login_hashing": "パスワードをハッシュ化しています。この処理には時間がかかる場合があります。", "login_invalPass": "パスワードを入力してください", "login_invalUser": "ユーザー名を入力してください", - "register_importRecent": "未登録のセッション中のドキュメントをインポート", + "register_importRecent": "匿名セッションのドキュメントをインポート", "importButton": "インポート", "main_catch_phrase": "コラボレーションスイート
暗号化されかつオープンソース", "tos_3rdparties": "私たちは、法律で義務付けられている場合を除き、個別のデータを第三者に提供しません。", @@ -151,7 +151,7 @@ "login_login": "ログイン", "autostore_hide": "保存しない", "autostore_store": "保存する", - "autostore_notstored": "この {0} は、あなたの CryptDrive に保存されていません。今すぐ保存しますか?", + "autostore_notstored": "この{0}はあなたのCryptDriveに保存されていません。今すぐ保存しますか?", "user_displayName": "表示名", "exportButton": "エクスポート", "user_rename": "表示名を変更", @@ -232,7 +232,7 @@ "settings_autostoreHint": "自動 あなたがアクセスしたすべてのパッドを、あなたの CryptDrive に保存します。
手動 (常に確認する) まだ保存していないパッドにアクセスした場合に、あなたの CryptDrive に保存するかどうか尋ねます。
手動 (確認しない) アクセス先のパッドがあなたの CryptDrive に自動的に保存されなくなります。保存オプションは表示されなくなります。", "settings_userFeedback": "ユーザーフィードバックを有効にする", "settings_userFeedbackHint2": "あなたのパッドのコンテンツがサーバーと共有されることはありません。", - "settings_userFeedbackHint1": "CryptPad は、あなたの経験を向上させる方法を知るために、サーバーにいくつかの非常に基本的なフィードバックを提供します。 ", + "settings_userFeedbackHint1": "CryptPad は、ユーザーエクスペリエンスの向上のため、サーバーにいくつかの非常に基本的なフィードバックを提供します。 ", "settings_userFeedbackTitle": "フィードバック", "settings_autostoreYes": "自動", "settings_importConfirm": "このブラウザで最近使用したパッドを、あなたのユーザーアカウントの CryptDrive にインポートしますか?", @@ -279,7 +279,7 @@ "features_registered": "登録済", "features_title": "機能", "features_anon": "未登録", - "register_whyRegister": "登録するとどの様な利点がありますか?", + "register_whyRegister": "登録するメリットをご紹介します", "historyText": "履歴", "help_button": "ヘルプ", "show_help_button": "ヘルプを表示", @@ -339,9 +339,9 @@ "makeACopy": "コピーを作成", "trimHistory_noHistory": "削除可能な履歴がありません", "areYouSure": "よろしいですか?", - "settings_safeLinksCheckbox": "安全なリンクを有効にする", - "settings_safeLinksTitle": "安全なリンク", - "settings_safeLinksHint": "CryptPad では、あなたのパッドを解読するための鍵がリンクに含まれています。これは、あなたのブラウザの閲覧履歴にアクセスできる人が、潜在的にあなたの CryptPad のデータを解読・閲覧できることを意味します。この「ブラウザの閲覧履歴にアクセスできる人」には、デバイス間で履歴を同期させる侵入的なブラウザ拡張機能やブラウザが含まれます。「安全なリンク」を有効にすると、鍵がブラウザの閲覧履歴に残ったり、アドレスバーに表示されたりするのを可能な限り防ぐことができます。この機能を有効にした上で共有メニューを使用することを強く推奨します。", + "settings_safeLinksCheckbox": "セーフリンクを有効にする", + "settings_safeLinksTitle": "セーフリンク", + "settings_safeLinksHint": "CryptPadでは、リンクの中にパッドを解読するための鍵が含まれています。ブラウザの閲覧履歴にアクセスできる人は、誰でもCryptPadのデータを閲覧することができます。ここにはデバイス間で履歴を同期するブラウザやその拡張機能も含まれます。「セーフリンク」を有効にすると、鍵がブラウザの閲覧履歴に残ったり、アドレスバーに表示されたりするのを可能な限り防ぐことができます。この機能を有効にして{0}の共有メニューを使用することを強く推奨します。", "settings_autostoreTitle": "CryptDrive へのパッドの保存", "settings_logoutEverywhereConfirm": "すべてのデバイスでログインが取り消されるため、今後利用する際にもう一度ログインするよう求められます。続行しますか?", "settings_logoutEverywhere": "他のすべてのウェブセッションからログアウトします", @@ -416,7 +416,7 @@ "fm_removePermanentlyDialog": "ドライブからこのアイテムを削除してよろしいですか?他のユーザーのドライブからは削除されません。", "fm_noname": "無題のドキュメント", "fm_openParent": "フォルダに表示", - "fm_newButtonTitle": "新しいドキュメントやフォルダを作成し、ファイルを現在のフォルダにインポートします。", + "fm_newButtonTitle": "新しいドキュメントやフォルダを作成して、現在のフォルダにインポートします。", "contacts_info4": "チャットの参加者のどちらも履歴を削除できます", "contacts_info2": "連絡先のアイコンをクリックしてチャットを開始", "contacts_confirmRemove": "{0}をあなたの連絡先から削除してよろしいですか?", @@ -440,7 +440,7 @@ "kanban_editCard": "このカードを編集", "kanban_clearFilter": "フィルターを消去", "kanban_tags": "タグでフィルタリング", - "allow_text": "アクセスリストを使用すると、選択したユーザーと所有者だけがこのドキュメントにアクセスできます。", + "allow_text": "アクセスリストを使用すると、選択したユーザーと所有者だけがドキュメントにアクセスできます。", "admin_defaultlimitTitle": "ストレージの制限(MB)", "owner_add": "{0}があなたをパッド {1} の所有者になるよう希望しています。 承諾しますか?", "owner_removeConfirm": "選択したユーザーの所有権を削除してよろしいですか? ユーザーには通知が送られます。", @@ -481,7 +481,7 @@ "upload_pending": "保留中", "settings_resetTips": "ヒント", "chrome68": "バージョン68のChromeあるいはChromiumを使用しているようです。このバージョンには、数秒経過した後でページが白紙になったり、クリックにページが反応しなくなったりするバグがあります。この問題を解決するには、別のタブを表示して改めて表示するか、このページでスクロールを試みてください。このバグは次のバージョンで解決される予定となっています。", - "register_notes": "", + "register_notes": "", "poll_commit": "送信", "admin_removeDonateButtonTitle": "クラウドファンディングに参加", "mediatag_notReady": "ダウンロードを完了してください", @@ -802,7 +802,7 @@ "settings_codeFontSize": "コードエディターのフォントの大きさ", "settings_anonymous": "ログインしていません。設定はこのブラウザのみで有効です。", "settings_deleted": "アカウントが削除されました。OKを押すとホームページに移動します。", - "settings_deleteHint": "アカウントの削除は取り消しできません。あなたのCryptDriveとパッドのリストはサーバーから削除されます。誰もCryptDriveに保存していないパッドは、90日で削除されます。", + "settings_deleteHint": "アカウントの削除は取り消せません。あなたのCryptDriveとパッドのリストはサーバーから削除されます。誰もCryptDriveに保存していないパッドは、90日で削除されます。", "settings_resetThumbnailsDone": "サムネイルが消去されました。", "settings_resetThumbnailsDescription": "ブラウザに保存したサムネイルを削除します。", "settings_disableThumbnailsDescription": "新しいパッドを開くと、サムネイルが自動で作成され、ブラウザに保存されます。ここでサムネイルの作成を無効にできます。", @@ -858,7 +858,7 @@ "crowdfunding_popup_text": "

あなたの援助が必要です!

CryptPadの開発が継続できるよう、OpenCollectiveのページからご支援いただきますようお願いします。ロードマップ資金調達の目標を同ページにて公開しています。", "autostore_notAvailable": "この機能を使うにはCryptDriveにパッドを保存する必要があります。", "autostore_forceSave": "CryptDriveにファイルを保存", - "autostore_saved": "パッドはCryptDriveに保存されました!", + "autostore_saved": "パッドをCryptDriveに保存しました!", "autostore_settings": "自動保存は設定ページで有効にできます!", "broadcast_end": "終了", "broadcast_start": "開始", @@ -937,7 +937,7 @@ "properties_passwordSame": "新しいパスワードは現在のパスワードと異なるものでなければなりません。", "four04_pageNotFound": "お探しのページが見つかりませんでした。", "about": "私たちについて", - "whatis_apps_info": "

CryptPadは共同作業に必要なツールを備えた本格的なオフィススイートです。リッチテキスト、スプレッドシート、コード/マークダウン、カンバン、スライド、ホワイトボード、投票機能を有しています。

それらのアプリケーションには、チャット、連絡先、著者別の色表示(コード/マークダウン)、コメント、メンション(リッチテキスト)などの機能が付属しています。

", + "whatis_apps_info": "

CryptPadは共同作業に必要なツールを備えた本格的なオフィススイートです。リッチテキスト、スプレッドシート、コード/マークダウン、カンバン、スライド、ホワイトボード、投票機能があります。

それらのアプリケーションには、チャット、連絡先、著者別の色表示(コード/マークダウン)、コメント、メンション(リッチテキスト)などの機能が付属しています。

", "mdToolbar_button": "マークダウンのツールバーを表示もしくは隠す", "pad_base64": "このパッドはサイズの大きい画像を含んでいます。パッドのサイズが大きいと、読み込みに時間がかかります。サイズを減らすために、画像のフォーマットを変換して、別の画像ファイルとしてCryptDriveに保存することができます。画像を変換してよろしいですか?", "todo_removeTaskTitle": "このタスクをリストから削除", @@ -953,8 +953,8 @@ "settings_exportCancel": "エクスポートをキャンセルしてよろしいでしょうか?次のエクスポートでは最初からやりなおす必要があります。", "fm_error_cantPin": "内部サーバーエラー。ページを再度読み込んでください。", "fm_info_anonymous": "ログインしていないため、ドキュメントは{0}日後に期限切れになります。また、ブラウザの履歴を消去するとファイルが消えてしまうかもしれません。
ファイルを永続的に保存するには、登録するか(個人情報の登録は不要です)、ログインしてください。登録アカウントについては、こちらを参照してください(英語)。", - "fm_info_recent": "これらのパッドは、最近、あなたか共同作業者により開かれたか、もしくは編集されました。", - "fm_info_template": "新しいパッドを作成する際に利用できるテンプレートとして保存した全てのパッドを含みます。", + "fm_info_recent": "あなたか共同編集者が最近開いた、もしくは編集したパッドの一覧です。", + "fm_info_template": "テンプレートとして保存したパッドの一覧です。以下のテンプレートを使って、新しいパッドを作成することができます。", "fm_categoryError": "選択したカテゴリーが開けません。ルートを表示します。", "fm_morePads": "さらに表示", "oo_reconnect": "サーバーの接続が回復しました。OKをクリックして再読み込みし、編集を継続してください。", @@ -1040,7 +1040,7 @@ "settings_backup2Confirm": "あなたのCryptDriveの全てのパッドをダウンロードします。続けたい場合は、名前を入力してOKを押してください", "settings_backup2": "CryptDriveをダウンロード", "settings_backupHint2": "ドライブの全てのドキュメントをダウンロードします。ドキュメントは、他のアプリケーションで読み込めるフォーマットがあれば、そのフォーマットでダウンロードされます。そうしたフォーマットがなければ、CryptPadで読み込めるフォーマットでダウンロードされます。", - "settings_backupHint": "CryptDriveのコンテンツをバックアップ、あるいは復元します。パッドの内容ではなく、それにアクセスするための鍵だけを含みます。", + "settings_backupHint": "CryptDriveのコンテンツをバックアップもしくは復元します。バックアップには、パッドの内容ではなく、それにアクセスする鍵だけが含まれます。", "register_emailWarning3": "その点を踏まえてなおユーザー名にメールアドレスを使用する場合は、OKをクリックしてください。", "register_emailWarning1": "それもできますが、サーバーには送信されません。", "register_emailWarning0": "ユーザー名にメールアドレスが入力されています。", @@ -1122,15 +1122,15 @@ "upload_modal_filename": "ファイル名(拡張子 {0} を自動で追加)", "settings_padSpellcheckHint": "リッチテキストパッドでスペルチェックを有効にします。間違ったつづりには赤色の下線が表示されます。右クリックをしながらコントロールキーあるいはメタキーを押すと、正しい選択肢が表示されます。", "creation_404": "このパッドは存在しません。以下のフォームより新しいパッドを作成してください。", - "help_genericMore": "CryptPadの使用法についてはドキュメントをご覧ください。", - "whatis_drive": "CryptDriveを使用している組織", + "help_genericMore": "CryptPadの使い方についてはドキュメントをご覧ください。", + "whatis_drive": "CryptDriveでまとめて管理", "mdToolbar_toc": "目次", "mdToolbar_check": "タスクリスト", "mdToolbar_nlist": "番号付きリスト", "mdToolbar_heading": "見出し", "settings_cursorShowHint": "共同ドキュメントであなたが他のユーザーのカーソルの位置を見られるかどうかを決められます。", "settings_cursorShareHint": "共同ドキュメントで他のユーザーがあなたのカーソルの位置を見られるかどうかを決められます。", - "settings_cursorColorHint": "共同ドキュメントのユーザーと関連付けられた色を変更します。", + "settings_cursorColorHint": "共同ドキュメントでの他のユーザーの色を変更できます。", "settings_padWidthHint": "テキストエディターの幅を制限するページモード(既定)と、スクリーン全体の幅を使用するモードを切り替える。", "fm_forbidden": "禁止されたアクション", "team_exportHint": "チームのドライブの全てのドキュメントをダウンロードします。ドキュメントは、他のアプリケーションで読み込めるフォーマットがあれば、そのフォーマットでダウンロードされます。そうしたフォーマットがなければ、CryptPadで読み込めるフォーマットでダウンロードされます。", @@ -1252,5 +1252,18 @@ "owner_removeMeConfirm": "所有権を放棄しようとしています。これは取り消せません。よろしいですか?", "requestEdit_confirm": "{1}がパッド「{0}」の編集権を要求しました。編集権を与えますか?", "admin_supportInitHelp": "サーバーはサポートメールボックスを使用するように設定されていません。サポートメールボックスを有効にし、ユーザーからメッセージを受け取るためには、サーバーの管理者に連絡し、「./scripts/generate-admin-keys.js」のスクリプトを実行してもらい、生成された公開鍵を「config.js」に保存して、秘密鍵をあなたに送信してもらうよう依頼する必要があります。", - "feedback_privacy": "私たちはプライバシーを配慮すると同時に、CryptPadを使いやすくしたいと望んでいます。このファイルは、実行されたアクションを特定するパラメーターと共に要求して、ユーザーにとって重要なUI機能を特定するために使用されます。" + "feedback_privacy": "私たちはプライバシーを配慮すると同時に、CryptPadを使いやすくしたいと望んでいます。このファイルは、実行されたアクションを特定するパラメーターと共に要求して、ユーザーにとって重要なUI機能を特定するために使用されます。", + "register_warning_note": "暗号化を行うCryptPadの性質上、サービス管理者は、ユーザー名とパスワードを忘れた場合にデータを回復することができません。ユーザー名とパスワードを安全な場所に保管してください。", + "history_restoreDriveTitle": "選択したバージョンのCryptDriveを復元", + "errorPopupBlocked": "新しいタブを開く許可が必要です。お使いのブラウザのアドレスバーから、ポップアップウィンドウを許可してください。これらのウィンドウが広告の表示に使用されることはありません。", + "settings_colorthemeHint": "このデバイスでのテーマ色を変更できます。", + "settings_colortheme_default": "システムのデフォルト ({0})", + "settings_codeBrackets": "括弧の自動補完", + "creation_helperText": "ドキュメンテーションを開く", + "contacts_info1": "連絡先の一覧です。", + "share_noContactsLoggedIn": "連絡先がありません。プロフィールのリンクを共有して、連絡先のリクエストを送信してください。", + "settings_cat_security": "セキュリティー", + "whatis_collaboration_info": "

CryptPadはコラボレーションを念頭に作られています。ドキュメントに加えられる変更は、リアルタイムで同期されます。全てのデータは暗号化されているため、サービスとその管理者が、編集され保存されているコンテンツを覗き見ることは不可能です。

", + "whatis_apps": "フルスイートアプリケーション", + "whatis_drive_info": "

ドキュメントをCryptDriveに保存して管理できます。フォルダを作ったり共有したりできるほか、ドキュメントをタグ付けして整理することもできます。PDFファイル、写真、動画、音声などのファイルをアップロードして共有できます。チームのドライブを使うと、メンバーとデータを共有したり、ファイルの管理や、きめ細かいアクセス権のコントロールを行うことができます。

" } From 8e725f3d7c46f6720a78c081097cecb1181277a0 Mon Sep 17 00:00:00 2001 From: ansuz Date: Wed, 30 Jun 2021 17:20:03 +0530 Subject: [PATCH 03/33] stop returning the hash of all user pins after pinning the client doesn't use it and it's CPU-intensive --- lib/commands/pin-rpc.js | 12 +++++------- www/common/outer/async-store.js | 12 ++++++------ 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/lib/commands/pin-rpc.js b/lib/commands/pin-rpc.js index ff6bfdbac..af2c32c64 100644 --- a/lib/commands/pin-rpc.js +++ b/lib/commands/pin-rpc.js @@ -8,7 +8,7 @@ const nThen = require("nthen"); //const escapeKeyCharacters = Util.escapeKeyCharacters; const unescapeKeyCharacters = Util.unescapeKeyCharacters; -var sumChannelSizes = function (sizes) { +var sumChannelSizes = function (sizes) { // FIXME this synchronous code could be done by a worker return Object.keys(sizes).map(function (id) { return sizes[id]; }) .filter(function (x) { // only allow positive numbers @@ -171,7 +171,7 @@ Pinning.pinChannel = function (Env, safeKey, channels, cb) { getMultipleFileSize(Env, toStore, function (e, sizes) { if (typeof(sizes) === 'undefined') { return void cb(e); } - var pinSize = sumChannelSizes(sizes); + var pinSize = sumChannelSizes(sizes); // FIXME don't do this in the main thread... getFreeSpace(Env, safeKey, function (e, free) { if (typeof(free) === 'undefined') { @@ -186,7 +186,7 @@ Pinning.pinChannel = function (Env, safeKey, channels, cb) { toStore.forEach(function (channel) { session.channels[channel] = true; }); - getHash(Env, safeKey, cb); + cb(); }); }); }); @@ -217,7 +217,7 @@ Pinning.unpinChannel = function (Env, safeKey, channels, cb) { toStore.forEach(function (channel) { delete session.channels[channel]; }); - getHash(Env, safeKey, cb); + cb(); }); }); }; @@ -270,9 +270,7 @@ Pinning.resetUserPins = function (Env, safeKey, channelList, cb) { // update in-memory cache IFF the reset was allowed. session.channels = pins; - getHash(Env, safeKey, function (e, hash) { - cb(e, hash); - }); + cb(); }); }); }); diff --git a/www/common/outer/async-store.js b/www/common/outer/async-store.js index 66e1967cd..9f779a0a8 100644 --- a/www/common/outer/async-store.js +++ b/www/common/outer/async-store.js @@ -274,9 +274,9 @@ define([ } var pads = data.pads || data; - s.rpc.pin(pads, function (e, hash) { + s.rpc.pin(pads, function (e) { if (e) { return void cb({error: e}); } - cb({hash: hash}); + cb({}); }); }; @@ -289,9 +289,9 @@ define([ if (!s.rpc) { return void cb({error: 'RPC_NOT_READY'}); } var pads = data.pads || data; - s.rpc.unpin(pads, function (e, hash) { + s.rpc.unpin(pads, function (e) { if (e) { return void cb({error: e}); } - cb({hash: hash}); + cb({}); }); }; @@ -394,9 +394,9 @@ define([ if (!store.rpc) { return void cb({error: 'RPC_NOT_READY'}); } var list = getCanonicalChannelList(false); - store.rpc.reset(list, function (e, hash) { + store.rpc.reset(list, function (e) { if (e) { return void cb(e); } - cb(null, hash); + cb(null); }); }; From 76b90d3c8a8220aee0afd829d0eeaea081d248a6 Mon Sep 17 00:00:00 2001 From: ansuz Date: Wed, 30 Jun 2021 17:55:01 +0530 Subject: [PATCH 04/33] correct a few more places where the client expected hashes in pin responses or where the server incorrectly provided them --- lib/commands/pin-rpc.js | 17 ++++++++--------- scripts/tests/test-rpc.js | 22 ++++++++++------------ www/common/pinpad.js | 35 ++++++++++------------------------- 3 files changed, 28 insertions(+), 46 deletions(-) diff --git a/lib/commands/pin-rpc.js b/lib/commands/pin-rpc.js index af2c32c64..6fc05c202 100644 --- a/lib/commands/pin-rpc.js +++ b/lib/commands/pin-rpc.js @@ -145,7 +145,7 @@ var getFreeSpace = Pinning.getFreeSpace = function (Env, safeKey, cb) { }); }; -var getHash = Pinning.getHash = function (Env, safeKey, cb) { +Pinning.getHash = function (Env, safeKey, cb) { getChannelList(Env, safeKey, function (channels) { Env.hashChannelList(channels, cb); }); @@ -166,7 +166,7 @@ Pinning.pinChannel = function (Env, safeKey, channels, cb) { }); if (toStore.length === 0) { - return void getHash(Env, safeKey, cb); + return void cb(); } getMultipleFileSize(Env, toStore, function (e, sizes) { @@ -208,7 +208,7 @@ Pinning.unpinChannel = function (Env, safeKey, channels, cb) { }); if (toStore.length === 0) { - return void getHash(Env, safeKey, cb); + return void cb(); } Env.pinStore.message(safeKey, JSON.stringify(['UNPIN', toStore, +new Date()]), @@ -222,15 +222,14 @@ Pinning.unpinChannel = function (Env, safeKey, channels, cb) { }); }; -Pinning.resetUserPins = function (Env, safeKey, channelList, cb) { +Pinning.resetUserPins = function (Env, safeKey, channelList, _cb) { + var cb = Util.once(Util.mkAsync(_cb)); if (!Array.isArray(channelList)) { return void cb('INVALID_PIN_LIST'); } var session = Core.getSession(Env.Sessions, safeKey); - if (!channelList.length) { - return void getHash(Env, safeKey, function (e, hash) { - if (e) { return cb(e); } - cb(void 0, hash); - }); + + if (!channelList.length) { // XXX wut + return void cb(); } var pins = {}; diff --git a/scripts/tests/test-rpc.js b/scripts/tests/test-rpc.js index 0fd0abc37..b92cf6287 100644 --- a/scripts/tests/test-rpc.js +++ b/scripts/tests/test-rpc.js @@ -122,14 +122,11 @@ var createUser = function (config, cb) { }); })); }).nThen(function (w) { - user.rpc.reset([], w(function (err, hash) { + user.rpc.reset([], w(function (err) { if (err) { w.abort(); user.shutdown(); - return console.log("RESET_ERR"); - } - if (!hash || hash !== EMPTY_ARRAY_HASH) { - throw new Error("EXPECTED EMPTY ARRAY HASH"); + return console.log("TEST_RESET_ERR"); } })); }).nThen(function (w) { @@ -214,17 +211,17 @@ var createUser = function (config, cb) { // TODO check your quota usage }).nThen(function (w) { - user.rpc.unpin([user.mailboxChannel], w(function (err, hash) { + user.rpc.unpin([user.mailboxChannel], w(function (err) { if (err) { w.abort(); return void cb(err); } + })); + }).nThen(function (w) { + user.rpc.getServerHash(w(function (err, hash) { + console.log(hash); - if (hash[0] !== EMPTY_ARRAY_HASH) { - //console.log('UNPIN_RESPONSE', hash); - throw new Error("UNPIN_DIDNT_WORK"); - } - user.latestPinHash = hash[0]; + user.latestPinHash = hash; })); }).nThen(function (w) { // clean up the pin list to avoid lots of accounts on the server @@ -304,7 +301,8 @@ nThen(function (w) { }, w(function (err, roster) { if (err) { w.abort(); - return void console.trace(err); + console.error(err); + return void console.error("ROSTER_ERROR"); } oscar.roster = roster; oscar.destroy.reg(function () { diff --git a/www/common/pinpad.js b/www/common/pinpad.js index 7e9cd4ee2..de93f066f 100644 --- a/www/common/pinpad.js +++ b/www/common/pinpad.js @@ -26,23 +26,19 @@ var factory = function (Util, Rpc) { exp.send = rpc.send; // you can ask the server to pin a particular channel for you - exp.pin = function (channels, cb) { + exp.pin = function (channels, _cb) { + var cb = Util.once(Util.mkAsync(_cb)); if (!Array.isArray(channels)) { - setTimeout(function () { - cb('[TypeError] pin expects an array'); - }); - return; + return void cb('[TypeError] pin expects an array'); } rpc.send('PIN', channels, cb); }; // you can also ask to unpin a particular channel - exp.unpin = function (channels, cb) { + exp.unpin = function (channels, _cb) { + var cb = Util.once(Util.mkAsync(_cb)); if (!Array.isArray(channels)) { - setTimeout(function () { - cb('[TypeError] pin expects an array'); - }); - return; + return void cb('[TypeError] pin expects an array'); } rpc.send('UNPIN', channels, cb); }; @@ -70,23 +66,12 @@ var factory = function (Util, Rpc) { }; // if local and remote hashes don't match, send a reset - exp.reset = function (channels, cb) { + exp.reset = function (channels, _cb) { + var cb = Util.once(Util.mkAsync(_cb)); if (!Array.isArray(channels)) { - setTimeout(function () { - cb('[TypeError] pin expects an array'); - }); - return; + return void cb('[TypeError] pin expects an array'); } - rpc.send('RESET', channels, function (e, response) { - if (e) { - return void cb(e); - } - if (!response.length) { - console.log(response); - return void cb('INVALID_RESPONSE'); - } - cb(e, response[0]); - }); + rpc.send('RESET', channels, cb); }; // get the combined size of all channels (in bytes) for all the From e57ccf14d70dcbabd15e8d4944c1c6787765e747 Mon Sep 17 00:00:00 2001 From: ansuz Date: Wed, 30 Jun 2021 18:20:57 +0530 Subject: [PATCH 05/33] clean up some pending notes --- www/admin/inner.js | 3 +-- www/convert/inner.js | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/www/admin/inner.js b/www/admin/inner.js index 13f96cdf7..263f9a9bc 100644 --- a/www/admin/inner.js +++ b/www/admin/inner.js @@ -94,7 +94,7 @@ define([ 'cp-admin-list-my-instance', 'cp-admin-consent-to-contact', 'cp-admin-remove-donate-button', - 'cp-admin-instance-purpose', // XXX + 'cp-admin-instance-purpose', ], }; @@ -1902,7 +1902,6 @@ define([ [ value] ], cb); }; - //var spinner = UI.makeSpinner($br); // XXX $opts.on('change', function () { var val = $opts.find('input:radio:checked').val(); diff --git a/www/convert/inner.js b/www/convert/inner.js index d8eca9af2..4952b2d6e 100644 --- a/www/convert/inner.js +++ b/www/convert/inner.js @@ -194,7 +194,7 @@ define([ }; Messages.convertPage = "Convert"; // XXX - Messages.convert_hint = "Pick the file you want to convert. The list of output format will be visible afterward."; + Messages.convert_hint = "Pick the file you want to convert. The list of output format will be visible afterward."; // XXX var createToolbar = function () { var displayed = ['useradmin', 'newpad', 'limit', 'pageTitle', 'notifications']; From 73a47986a71018831e9b01c47293195640307e26 Mon Sep 17 00:00:00 2001 From: Weblate Date: Wed, 30 Jun 2021 15:26:55 +0200 Subject: [PATCH 06/33] Translated using Weblate (German) Currently translated at 99.9% (1365 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/de/ Translated using Weblate (German) Currently translated at 99.8% (1364 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/de/ --- www/common/translations/messages.de.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/www/common/translations/messages.de.json b/www/common/translations/messages.de.json index ee2be161b..bc4ae8952 100644 --- a/www/common/translations/messages.de.json +++ b/www/common/translations/messages.de.json @@ -1356,5 +1356,14 @@ "form_poll_hint": ": Ja, : Nein, : Akzeptabel", "fc_open_formro": "Öffnen (als Teilnehmer)", "resources_openInNewTab": "In neuem Tab öffnen", - "resources_imageBlocked": "CryptPad hat ein externes Bild blockiert" + "resources_imageBlocked": "CryptPad hat ein externes Bild blockiert", + "admin_purpose_noanswer": "Möchte ich nicht sagen", + "admin_purpose_business": "Für ein Unternehmen oder eine kommerzielle Organisation", + "admin_purpose_education": "Für eine Schule, Hochschule oder Universität", + "admin_purpose_org": "Für eine gemeinnützige Organisation oder eine Interessengruppe", + "admin_purpose_personal": "Für mich selbst, Familie oder Freunde", + "admin_purpose_experiment": "Zum Testen der Plattform oder zur Entwicklung neuer Funktionen", + "admin_instancePurposeTitle": "Zweck der Instanz", + "admin_instancePurposeHint": "Warum betreibst du diese Instanz? Deine Antwort wird mit den Entwicklern geteilt, sofern die Telemetrie aktiviert ist.", + "admin_purpose_public": "Zur Bereitstellung eines kostenlosen Dienstes für die Allgemeinheit" } From cbbff49f8935386fb9674d3670f48e48d75c4e96 Mon Sep 17 00:00:00 2001 From: Weblate Date: Wed, 30 Jun 2021 15:26:56 +0200 Subject: [PATCH 07/33] Translated using Weblate (Japanese) Currently translated at 93.2% (1274 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 93.2% (1274 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 93.2% (1274 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 93.2% (1274 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 93.1% (1273 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 93.1% (1272 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 93.0% (1271 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 93.0% (1271 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 93.0% (1271 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.9% (1270 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.9% (1270 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.9% (1270 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.8% (1269 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.8% (1269 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.8% (1269 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.8% (1268 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.7% (1267 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.7% (1267 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.7% (1267 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.6% (1266 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.6% (1266 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.6% (1266 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.6% (1266 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.6% (1266 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.6% (1266 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.6% (1266 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 92.5% (1264 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ --- www/common/translations/messages.ja.json | 78 +++++++++++++----------- 1 file changed, 44 insertions(+), 34 deletions(-) diff --git a/www/common/translations/messages.ja.json b/www/common/translations/messages.ja.json index f8d52b8c6..199ecd76a 100644 --- a/www/common/translations/messages.ja.json +++ b/www/common/translations/messages.ja.json @@ -20,7 +20,7 @@ "poll": "投票", "code": "コード", "pad": "リッチテキスト", - "sheet": "シート", + "sheet": "スプレッドシート", "form": "フォーム" }, "main_title": "CryptPad - 安全にリアルタイム編集可能なコラボレーションツール", @@ -62,7 +62,7 @@ "fm_fileName": "ファイル名", "crowdfunding_button2": "CryptPadを支援", "fm_padIsOwned": "あなたはこのパッドの所有者です", - "creation_expiration": "有効期限", + "creation_expiration": "有効期限を設定", "owner_removeText": "所有者", "creation_owners": "所有者", "download_mt_button": "ダウンロード", @@ -101,7 +101,7 @@ "settings_changePasswordNew": "新しいパスワード", "settings_changePasswordCurrent": "現在のパスワード", "settings_changePasswordButton": "パスワードを変更", - "settings_changePasswordHint": "アカウントのパスワードを変更します。「現在のパスワード」と、「新しいパスワード」および「新しいパスワードの確認」を入力してください。
パスワードを忘れた場合、パスワードをリセットする方法はありません。細心の注意を払って、パスワードを安全に管理してください。", + "settings_changePasswordHint": "アカウントのパスワードを変更します。「現在のパスワード」と、「新しいパスワード」および「新しいパスワードの確認」を入力してください。
パスワードを忘れた場合、再設定する方法はありません。細心の注意を払って、パスワードを安全に管理してください。", "settings_changePasswordTitle": "パスワードの変更", "languageButton": "言語", "language": "言語", @@ -131,8 +131,8 @@ "tos_availability": "私たちはこのサービスがあなたの役に立つことを願っていますが、可用性や性能は保証できません。定期的にデータをエクスポートしてください。", "tos_legal": "悪意ある行為、乱用する行為、または何らかの違法な行為を行わないでください。", "tos_title": "CryptPad サービス利用規約", - "whatis_title": "CryptPad とは?", - "topbar_whatIsCryptpad": "CryptPad とは何か", + "whatis_title": "CryptPadとは?", + "topbar_whatIsCryptpad": "CryptPadとは何か", "footer_tos": "利用規約", "footer_donate": "寄付", "footer_legal": "法的情報", @@ -229,16 +229,16 @@ "notifications_dismiss": "確認済みにする", "settings_autostoreMaybe": "手動 (確認しない)", "settings_autostoreNo": "手動 (常に確認する)", - "settings_autostoreHint": "自動 あなたがアクセスしたすべてのパッドを、あなたの CryptDrive に保存します。
手動 (常に確認する) まだ保存していないパッドにアクセスした場合に、あなたの CryptDrive に保存するかどうか尋ねます。
手動 (確認しない) アクセス先のパッドがあなたの CryptDrive に自動的に保存されなくなります。保存オプションは表示されなくなります。", + "settings_autostoreHint": "自動 アクセスしたすべてのパッドをCryptDriveに保存します。
手動(常に確認) 保存していないパッドにアクセスした際、CryptDriveに保存するかどうかを確認します。
手動(確認しない) アクセス先のパッドはCryptDriveに自動で保存されません。保存オプションは表示されません。", "settings_userFeedback": "ユーザーフィードバックを有効にする", "settings_userFeedbackHint2": "あなたのパッドのコンテンツがサーバーと共有されることはありません。", - "settings_userFeedbackHint1": "CryptPad は、ユーザーエクスペリエンスの向上のため、サーバーにいくつかの非常に基本的なフィードバックを提供します。 ", + "settings_userFeedbackHint1": "CryptPadは、ユーザーエクスペリエンスの向上のため、いくつかの非常に基本的なフィードバックを、サーバーに提供します。 ", "settings_userFeedbackTitle": "フィードバック", "settings_autostoreYes": "自動", - "settings_importConfirm": "このブラウザで最近使用したパッドを、あなたのユーザーアカウントの CryptDrive にインポートしますか?", + "settings_importConfirm": "このブラウザで最近使用したパッドを、あなたのユーザーアカウントのCryptDriveにインポートしますか?", "settings_importDone": "インポートが完了しました", "settings_import": "インポート", - "settings_importTitle": "このブラウザでの最近のパッドをあなたの CryptDrive にインポートします", + "settings_importTitle": "このブラウザでの最近のパッドをあなたのCryptDriveにインポートします", "settings_trimHistoryHint": "ドライブと通知の履歴を削除して、ストレージ容量を節約します。これはパッドの履歴には影響しません。パッドの履歴は、プロパティダイアログから削除できます。", "trimHistory_currentSize": "現在の履歴容量: {0}", "support_cat_other": "その他", @@ -263,13 +263,13 @@ "features_f_devices_note": "ユーザーアカウントでどこからでも CryptDrive にアクセスできます", "features_f_devices": "全てのデバイスであなたのパッドを利用", "features_f_cryptdrive1_note": "フォルダ、共有フォルダ、テンプレート、タグ", - "features_f_cryptdrive1": "CryptDrive への完全なアクセス", + "features_f_cryptdrive1": "CryptDriveの全機能", "features_f_anon_note": "追加機能あり", "features_f_anon": "匿名ユーザーの全機能", "features_f_storage0_note": "ドキュメントは{0}日以上使用されないと削除されます", "features_f_storage0": "一時的な保存", "features_f_cryptdrive0_note": "後で開けるようにブラウザにアクセスしたパッドを保存する機能", - "features_f_cryptdrive0": "CryptDrive への限定的なアクセス", + "features_f_cryptdrive0": "CryptDriveへの限定的なアクセス", "features_f_file0_note": "他のユーザーが共有したドキュメントを表示およびダウンロードできます", "features_f_file0": "ドキュメントを開く", "features_f_core_note": "編集、インポートとエクスポート、履歴、ユーザーリスト、チャット", @@ -288,11 +288,11 @@ "okButton": "OK (enter)", "mustLogin": "このページにアクセスするにはログインする必要があります", "fm_noResult": "見つかりませんでした", - "fm_info_trash": "ごみ箱を空にすると、あなたの CryptDrive の使用可能容量を増やせます。", + "fm_info_trash": "ごみ箱を空にするとCryptDriveの使用可能容量を増やせます。", "features_f_file1": "ファイルのアップロードと共有", "features_f_social_note": "追加した連絡先との安全なコラボレーション、プロフィールの作成、きめ細かいアクセス権のコントロール", "features_f_social": "ソーシャル機能", - "tos_e2ee": "CryptPad のコンテンツは、パッドのフラグメント識別子を推測または取得できる人物なら誰でも閲覧や編集が行えます。エンドツーエンド暗号化(E2EE)を採用したメッセンジャーサービスなどを使用してリンクを共有し、リンク漏洩が発生しないよう対策を行ってください。", + "tos_e2ee": "CryptPadのコンテンツは、パッドのフラグメント識別子を推測または取得できる人物なら誰でも閲覧や編集が行えます。エンドツーエンド暗号化(E2EE)を採用したメッセンジャーサービスなどを使用してリンクを共有し、リンクの漏洩が発生しないよう対策を行ってください。リンクが漏洩した際に、責任を負うことはできません。", "contact_chat": "チャット", "contact_bug": "バグの報告", "footer_product": "製品", @@ -329,7 +329,7 @@ "password_info": "開こうとしているドキュメントが存在しないか、新しいパスワードで保護されています。コンテンツにアクセスするには、正しいパスワードを入力してください。", "properties_confirmNew": "パスワードを追加すると、このパッドの URL が変更され、履歴が削除されます。パスワードを知らないユーザーは、このパッドへアクセスできなくなります。続行してよろしいですか?", "properties_changePassword": "パスワードの変更", - "properties_addPassword": "パスワードの追加", + "properties_addPassword": "パスワードを設定", "history_close": "閉じる", "history_restore": "復元", "fm_emptyTrashOwned": "ごみ箱に、あなたが所有しているドキュメントが入っています。あなたのドライブからのみ削除するか、すべてのユーザーから完全削除するかを選択できます。", @@ -342,7 +342,7 @@ "settings_safeLinksCheckbox": "セーフリンクを有効にする", "settings_safeLinksTitle": "セーフリンク", "settings_safeLinksHint": "CryptPadでは、リンクの中にパッドを解読するための鍵が含まれています。ブラウザの閲覧履歴にアクセスできる人は、誰でもCryptPadのデータを閲覧することができます。ここにはデバイス間で履歴を同期するブラウザやその拡張機能も含まれます。「セーフリンク」を有効にすると、鍵がブラウザの閲覧履歴に残ったり、アドレスバーに表示されたりするのを可能な限り防ぐことができます。この機能を有効にして{0}の共有メニューを使用することを強く推奨します。", - "settings_autostoreTitle": "CryptDrive へのパッドの保存", + "settings_autostoreTitle": "CryptDriveへのパッドの保存", "settings_logoutEverywhereConfirm": "すべてのデバイスでログインが取り消されるため、今後利用する際にもう一度ログインするよう求められます。続行しますか?", "settings_logoutEverywhere": "他のすべてのウェブセッションからログアウトします", "settings_logoutEverywhereTitle": "リモートセッションを閉じる", @@ -369,8 +369,8 @@ "snapshots_new": "新規スナップショット", "snaphot_title": "スナップショット", "snapshots_button": "スナップショット", - "filePicker_description": "埋め込むファイルを CryptDrive から選択するか、新規にアップロードしてください", - "uploadButtonTitle": "CryptDrive に新規ファイルをアップロード", + "filePicker_description": "埋め込むファイルをCryptDriveから選択するか、新規にアップロードしてください", + "uploadButtonTitle": "CryptDriveに新規ファイルをアップロード", "uploadFolderButton": "フォルダをアップロード", "uploadButton": "ファイルをアップロード", "filePicker_filter": "ファイル名で検索", @@ -387,10 +387,10 @@ "whatis_model": "ビジネスモデル", "whatis_collaboration": "プライベートコラボレーション", "home_support_title": "CryptPad を支援する", - "home_opensource": "CryptPad は、個人やプロなど誰でもホストすることができます。ソースコードは GitHub で確認できます。", + "home_opensource": "誰でもCryptPadを運営し、個人的または専門的な仕方でサービスを提供することができます。ソースコードはGitHubで確認できます。", "home_opensource_title": "オープンソース", "home_host_title": "このインスタンスについて", - "home_privacy_text": "CryptPad は、データをプライベートに保護しながらコラボレーションを可能にするように構築されています。すべてのコンテンツは、あなたのブラウザ上で暗号化および復号化されます。つまり、ドキュメント、チャット、およびファイルは、あなたがログインしているセッション以外では読み取れません。サービス管理者でさえ、あなたの情報にアクセスすることはできません。", + "home_privacy_text": "CryptPadは、データをプライベートに保護しながらコラボレーションを可能にするように構築されています。すべてのコンテンツは、あなたのブラウザ上で暗号化および復号化されます。ドキュメント、チャット、およびファイルは、あなたがログインしているセッション以外では読み取れません。サービスの管理者でも、あなたの情報にアクセスすることはできません。", "home_privacy_title": "プライバシー・バイ・デザイン", "mdToolbar_tutorial": "https://www.markdowntutorial.com/jp/", "languageButtonTitle": "シンタックスハイライトを行う言語を選択してください", @@ -399,10 +399,10 @@ "poll_descriptionHint": "投票の詳細を記入してください。入力が終了したら✓(公開)ボタンをクリックしてください。\n詳細はマークダウンの構文で記入できます。CryptDriveのメディアファイルを埋め込むこともできます。\nリンクを知っているひとは誰でも詳細を変更できますが、推奨されません。", "pad_mediatagBorder": "枠線の幅(ピクセル)", "openLinkInNewTab": "新しいタブでリンクを開く", - "history_restorePrompt": "ドキュメントの現在のバージョンを、表示しているバージョンと置き換えてよろしいですか?", + "history_restorePrompt": "ドキュメントの現在のバージョンを、表示しているバージョンに置き換えてよろしいですか?", "slideOptionsTitle": "スライドをカスタマイズ", "propertiesButtonTitle": "パッドのプロパティを表示", - "driveOfflineError": "CryptPadへの接続が切れています。このパッドに加えられる変更はCryptDriveに保存されません。CryptPadの全てのタブを閉じて、新しいウィンドウで開いてみてください。 ", + "driveOfflineError": "CryptPadへの接続が切断されています。このパッドに加えられる変更はCryptDriveに保存されません。CryptPadの全てのタブを閉じて、新しいウィンドウで開いてみてください。 ", "properties_passwordWarningFile": "パスワードは変更されましたが、新しいデータでCryptDriveを更新することができませんでした。古いバージョンのファイルを手動で削除する必要があるかもしれません。", "properties_confirmNewFile": "よろしいですか?パスワードを追加するとファイルのURLが変わります。パスワードをもたないユーザーは、このファイルにアクセスできなくなります。", "properties_confirmChangeFile": "よろしいですか?新しいパスワードをもたないユーザーは、このファイルにアクセスできなくなります。", @@ -416,7 +416,7 @@ "fm_removePermanentlyDialog": "ドライブからこのアイテムを削除してよろしいですか?他のユーザーのドライブからは削除されません。", "fm_noname": "無題のドキュメント", "fm_openParent": "フォルダに表示", - "fm_newButtonTitle": "新しいドキュメントやフォルダを作成して、現在のフォルダにインポートします。", + "fm_newButtonTitle": "新しいドキュメントやフォルダを作成したり、ファイルを現在のフォルダにインポートしたりできます。", "contacts_info4": "チャットの参加者のどちらも履歴を削除できます", "contacts_info2": "連絡先のアイコンをクリックしてチャットを開始", "contacts_confirmRemove": "{0}をあなたの連絡先から削除してよろしいですか?", @@ -426,7 +426,7 @@ "viewShare": "読み込み専用のリンク", "mediatag_loadButton": "添付ファイルを読み込む", "settings_disableThumbnailsAction": "CryptDriveでのサムネイルの作成を無効にする", - "settings_resetError": "入力したテキストが正しくありません。CryptDriveのデータは消去されていません。", + "settings_resetError": "入力した確認文が正しくありません。CryptDriveのデータは消去されていません。", "settings_resetDone": "データが消去されました!", "settings_resetPrompt": "あなたのドライブから全てのパッドを削除します。
本当に続けてよろしいですか?
続けるには「I love CryptPad」と入力してください。", "settings_reset": "CryptDriveの全てのファイルとフォルダを削除", @@ -719,7 +719,7 @@ "imprint": "法定通知", "oo_exportInProgress": "エクスポート中です", "notifyJoined": "{0}が共同セッションに参加しました", - "viewEmbedTag": "パッドを埋め込むには、このiframeを任意の箇所に含めてください。CSSまたはHTMLの属性を使って装飾できます。", + "viewEmbedTag": "パッドを埋め込むには、以下のiframeを任意の箇所に含めてください。CSSまたはHTMLの属性を使って装飾できます。", "slideOptionsText": "オプション", "tags_noentry": "削除したパッドにはタグ付けできません!", "tags_duplicate": "重複タグ: {0}", @@ -774,7 +774,7 @@ "inactiveError": "このパッドは使用されていなかったため削除されました。Escキーを押して新しいパッドを作成します。", "deletedError": "このパッドは所有者によって削除されたため、使用できなくなりました。", "expiredError": "このパッドは使用期限が過ぎてしまったため、使用できなくなりました。", - "anonymousStoreDisabled": "このCryptPadのインスタンスの管理者は、匿名ユーザーの保存を無効にしています。CryptDriveを使用するにはログインする必要があります。", + "anonymousStoreDisabled": "このCryptPadのインスタンスの管理者は、匿名ユーザーによる保存を無効に設定しています。CryptDriveを使用するにはログインする必要があります。", "padNotPinnedVariable": "このパッドは{4}日使用しないと期限切れになります。{0}ログイン{1}または{2}登録{3}し保存してください。", "padNotPinned": "このパッドは3ヶ月間使用しないと有効期限が切れます。{0}ログイン{1}するか{2}登録{3}して保存してください。", "onLogout": "ログアウトしました。{0}ここをクリック{1}するか
Escapeキーを押すと、閲覧モードでパッドにアクセスできます。", @@ -782,8 +782,8 @@ "form_type_page": "ページ分割", "form_description_default": "ここにテキストを入力", "team_pcsSelectHelp": "所有するパッドをチームのドライブに作成すると、そのパッドの所有権はチームに与えられます。", - "sharedFolders_create_owned": "所有するフォルダ", - "creation_owned1": "所有されている項目は、所有者が任意で完全削除できます。完全削除すると、他のユーザーのCryptDriveでも利用できなくなります。", + "sharedFolders_create_owned": "フォルダを所有する", + "creation_owned1": "所有している項目は、所有者が望むときにいつでも完全削除できます。完全削除すると、他のユーザーのCryptDriveからも削除されます。", "creation_owned": "所有するパッド", "uploadFolder_modal_owner": "所有するファイル", "upload_modal_owner": "所有するファイル", @@ -806,7 +806,7 @@ "settings_resetThumbnailsDone": "サムネイルが消去されました。", "settings_resetThumbnailsDescription": "ブラウザに保存したサムネイルを削除します。", "settings_disableThumbnailsDescription": "新しいパッドを開くと、サムネイルが自動で作成され、ブラウザに保存されます。ここでサムネイルの作成を無効にできます。", - "fm_info_root": "ファイルを並べ替えるのに必要な数のネストされたフォルダーをここに作成できます。", + "fm_info_root": "フォルダを作成してファイルを整理できます。", "oo_conversionSupport": "お使いのブラウザはMicrosoft Officeのフォーマットの変換に対応していません。FirefoxもしくはChromeの最新バージョンの使用を推奨します。", "register_registrationIsClosed": "登録は締め切りました。", "settings_notifCalendarHint": "今後のカレンダーのイベントのすべての通知を有効もしくは無効にします。", @@ -1109,7 +1109,7 @@ "admin_diskUsageButton": "レポートを生成", "admin_diskUsageTitle": "ディスクの使用状況", "contact_adminHint": "アカウントに関連した問題、ストレージの制限、サービスの運用状況に関して。\n", - "contact_devHint": "機能のリクエスト、ユーザビリティの改善、あるいはお礼を言う場合。", + "contact_devHint": "機能のリクエスト、ユーザビリティの改善、あるいはお礼については、以下よりお願いします。", "contact_dev": "開発者に連絡", "contact_admin": "管理者に連絡", "admin_flushCacheDone": "キャッシュを消去しました", @@ -1122,7 +1122,7 @@ "upload_modal_filename": "ファイル名(拡張子 {0} を自動で追加)", "settings_padSpellcheckHint": "リッチテキストパッドでスペルチェックを有効にします。間違ったつづりには赤色の下線が表示されます。右クリックをしながらコントロールキーあるいはメタキーを押すと、正しい選択肢が表示されます。", "creation_404": "このパッドは存在しません。以下のフォームより新しいパッドを作成してください。", - "help_genericMore": "CryptPadの使い方についてはドキュメントをご覧ください。", + "help_genericMore": "CryptPadの使い方についてはドキュメンテーションをご覧ください。", "whatis_drive": "CryptDriveでまとめて管理", "mdToolbar_toc": "目次", "mdToolbar_check": "タスクリスト", @@ -1145,7 +1145,7 @@ "fc_noAction": "利用可能なアクションはありません", "support_closed": "このチケットは終了しました", "support_cat_tickets": "既存のチケット", - "support_formHint": "このフォームから、管理者に問題の報告や質問を安全に行うことができます。
それらに関しては CryptPad ユーザーガイドで回答されているものがあるかもしれません。既にチケットを作成している場合、同じ問題に関して新しいチケットを作成するのはお控えください。その代わりに、既存のチケットに追加の情報を送信してください。", + "support_formHint": "このフォームから、管理者に問題の報告や質問を安全に行うことができます。
それらに関しては CryptPadユーザーガイドで回答されているものがあるかもしれません。既にチケットを作成している場合、同じ問題に関して新しいチケットを作成するのはお控えください。その代わりに、既存のチケットに追加の情報を送信してください。", "support_disabledTitle": "サポートは有効になっていません", "admin_supportListHint": "ユーザーからサポートのメールボックスに送信されたチケットの一覧です。管理者はメッセージと回答を閲覧できます。終了したチケットは再開することができます。終了したチケットについては削除する(隠す)ことができますが、他の管理者には引き続き表示されます。", "drive_sfPassword": "共有フォルダ「 {0} 」は利用できません。所有者により削除されたか、新しいパスワードにより保護されています。CryptDriveから削除するか、新しいパスワードを使ってアクセスを回復できます。", @@ -1155,7 +1155,7 @@ "sharedFolders_share": "このリンクを登録ユーザーと共有すると、共有フォルダへのアクセスが可能になります。相手がリンクを開くと、CryptDriveに共有フォルダが追加されます。", "sharedFolders_duplicate": "移動しようとしているパッドのいくつかは既に移動先のフォルダに存在しています。", "sharedFolders_forget": "このパッドは共有フォルダにのみ保存されているため、ゴミ箱に移動できません。あなたのCryptDriveから削除することは可能です。", - "settings_ownDriveHint": "技術上の理由で、旧アカウントは最新の機能にアクセスできません。フリーのアップデートで新しい機能が有効になり、今後のアップデートにも対応します。", + "settings_ownDriveHint": "技術上の理由で、旧アカウントは最新の機能にアクセスできません。フリーのアップデートで新しい機能が有効になり、CryptDriveの今後のアップデートにも対応します。", "admin_activePadsHint": "閲覧もしくは編集中のドキュメント数", "admin_activePadsTitle": "アクティブなパッド", "admin_activeSessionsTitle": "アクティブな接続", @@ -1252,7 +1252,7 @@ "owner_removeMeConfirm": "所有権を放棄しようとしています。これは取り消せません。よろしいですか?", "requestEdit_confirm": "{1}がパッド「{0}」の編集権を要求しました。編集権を与えますか?", "admin_supportInitHelp": "サーバーはサポートメールボックスを使用するように設定されていません。サポートメールボックスを有効にし、ユーザーからメッセージを受け取るためには、サーバーの管理者に連絡し、「./scripts/generate-admin-keys.js」のスクリプトを実行してもらい、生成された公開鍵を「config.js」に保存して、秘密鍵をあなたに送信してもらうよう依頼する必要があります。", - "feedback_privacy": "私たちはプライバシーを配慮すると同時に、CryptPadを使いやすくしたいと望んでいます。このファイルは、実行されたアクションを特定するパラメーターと共に要求して、ユーザーにとって重要なUI機能を特定するために使用されます。", + "feedback_privacy": "私たちはプライバシーを配慮すると同時に、CryptPadを使いやすくしたいと望んでいます。このファイルは、実行されたアクションを特定するパラメーターと共に要求され、ユーザーにとって重要なUI機能を特定するために使用されます。", "register_warning_note": "暗号化を行うCryptPadの性質上、サービス管理者は、ユーザー名とパスワードを忘れた場合にデータを回復することができません。ユーザー名とパスワードを安全な場所に保管してください。", "history_restoreDriveTitle": "選択したバージョンのCryptDriveを復元", "errorPopupBlocked": "新しいタブを開く許可が必要です。お使いのブラウザのアドレスバーから、ポップアップウィンドウを許可してください。これらのウィンドウが広告の表示に使用されることはありません。", @@ -1265,5 +1265,15 @@ "settings_cat_security": "セキュリティー", "whatis_collaboration_info": "

CryptPadはコラボレーションを念頭に作られています。ドキュメントに加えられる変更は、リアルタイムで同期されます。全てのデータは暗号化されているため、サービスとその管理者が、編集され保存されているコンテンツを覗き見ることは不可能です。

", "whatis_apps": "フルスイートアプリケーション", - "whatis_drive_info": "

ドキュメントをCryptDriveに保存して管理できます。フォルダを作ったり共有したりできるほか、ドキュメントをタグ付けして整理することもできます。PDFファイル、写真、動画、音声などのファイルをアップロードして共有できます。チームのドライブを使うと、メンバーとデータを共有したり、ファイルの管理や、きめ細かいアクセス権のコントロールを行うことができます。

" + "whatis_drive_info": "

ドキュメントをCryptDriveに保存して管理できます。フォルダを作ったり共有したりできるほか、ドキュメントをタグ付けして整理することもできます。PDFファイル、写真、動画、音声などのファイルをアップロードして共有できます。チームのドライブを使うと、メンバーとデータを共有したり、ファイルの管理や、きめ細かいアクセス権のコントロールを行うことができます。

", + "whatis_model_info": "

CryptPadは2016年より、寄付金とcryptpad.frの定額利用のほか、BPIフランス、NLNet財団、NGI Trust、Mozillaオープンソースサポートといったフランス、EUの研究助成を受けています。私たちは、公的資金で作られたソフトウェアについては、コードも公的に公開されるべきであると考えているため、サービスは全てオープンソースで提供しています。誰でも自由にこのソフトウェアを使ったり、運営したり、改変したりすることができます。

CryptPadは、ユーザーのデータを使って金銭上の利益を得ることはありません。これはプライバシーを尊重するオンラインサービスの展望の一部をなすものです。個人情報を使って金銭上の利益をあげながら「無料」を装う巨大プラットフォームとは違って、CryptPadは、ユーザーが自発的に支援を行うサービスのモデルを作ることを目指しています。

私たちは、CryptPadのサービスを無料で提供しています。それは、金銭的に余裕のある人々だけでなく、誰もがプライバシーを得るに値すると確信しているからです。もしあなたがこのプロジェクトを支援できる状況にあるなら、機能の開発や、改良、メンテナンスに参加していただきたく考えます。そうすることで、全てのユーザーに利益をもたらされるはずです。

このプロジェクトが実行可能であることが明らかになったいま、次のゴールは、ユーザーによる支援を通じて、プロジェクトを持続可能なものにすることにあります。CryptPadが、巨大プラットフォームに代わる持続可能なサービスを開発できるよう支援していただけるなら、一度もしくは継続的な寄付へのご協力をお願いいたします。

", + "whatis_xwiki_info": "

CryptPadはフランス、パリに所在する会社であるXWikiにて開発されています。当社はオープンソース・ソフトウェアを15年以上にわたって開発しており、情報管理のための共同作業ソフトウェアの開発に関して豊富な経験をもっています。当社の実績は、私たちがCryptPadの長期的な開発と維持にコミットしていることを示しています。

", + "whatis_xwiki": "XWikiにて開発", + "history_restoreDrivePrompt": "CryptDriveの現在のバージョンを、表示されているバージョンに置き換えてよろしいですか?", + "owner_text": "パッドの所有者は、所有者の追加や削除、リストによるアクセス制限のほか、パッドの削除を行うことができます。", + "share_linkWarning": "このリンクは、ドキュメントを暗号化したり復号化したりする鍵を含んでいます。リンクを受け取った相手は、誰でも(ここにはコンピュータープログラムも含まれます)コンテンツにアクセスすることができます。", + "creation_expiresIn": "有効期限", + "settings_mediatagSizeHint": "ドキュメントに埋め込まれたメディア要素(画像、ビデオ、PDF)を自動で読み込む最大のサイズをメガバイト(MB)で指定してください。指定したサイズより大きい要素については、手動で読み込む必要があります。「-1」を設定すると、メディア要素は常に自動的に読み込まれます。", + "settings_mediatagSizeTitle": "自動ダウンロードの制限", + "settings_cacheHint": "CryptPadは、帯域の使用量を減らし、読み込み時間を短縮することを目的に、ドキュメントの各部分をブラウザ上のメモリに保存しています。もし空き容量が少なければ、キャッシュを無効にしてください。セキュリティ上の懸念から、キャッシュはログアウト時に毎回消去されますが、手動でキャッシュを消去して、デバイスの空き容量を確保することもできます。" } From f2f9ace7c63ae7403a7e79c18a14f65828fd7c72 Mon Sep 17 00:00:00 2001 From: ansuz Date: Wed, 30 Jun 2021 18:53:32 +0530 Subject: [PATCH 08/33] fix rendering issue with markdown media-tag format --- www/common/diffMarked.js | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/www/common/diffMarked.js b/www/common/diffMarked.js index 1919f0670..d7c476a90 100644 --- a/www/common/diffMarked.js +++ b/www/common/diffMarked.js @@ -287,9 +287,28 @@ define([ } }; + var isLocalURL = function (href) { + // treat all URLs as remote if you are using an ancient browser + if (typeof(window.URL) === 'undefined') { return false; } + try { + var url = new URL(href, ApiConfig.httpUnsafeOrigin); + var localURL = new URL(ApiConfig.httpUnsafeOrigin); + return url.host === localURL.host; + } catch (err) { + return true; + } + }; + renderer.image = function (href, title, text) { - if (href.slice(0,6) === '/file/') { // FIXME this has been deprecated for about 3 years. Maybe we should display a warning? - // DEPRECATED + if (isLocalURL(href) && href.slice(0, 6) !== '/file/') { + return h('img', { + src: href, + title: title || '', + alt: text, + }).outerHTML; + } + + if (href.slice(0,6) === '/file/') { // Mediatag using markdown syntax should not be used anymore so they don't support // password-protected files console.log('DEPRECATED: mediatag using markdown syntax!'); @@ -297,12 +316,11 @@ define([ var secret = Hash.getSecrets('file', parsed.hash); var src = (ApiConfig.fileHost || '') +Hash.getBlobPathFromHex(secret.channel); var key = Hash.encodeBase64(secret.keys.cryptKey); - var mt = ''; - if (mediaMap[src]) { - mt += mediaMap[src]; - } - mt += ''; - return mt; + var mt = h('media-tag', { + src: src, + 'data-crypto-key': 'cryptpad:' + key, + }); + return mt.outerHTML; } var warning = h('div.cp-inline-img-warning', [ @@ -323,7 +341,7 @@ define([ ]), h('br'), h('a.cp-learn-more', { - href: 'https://docs.cryptpad.fr/user_guide/security.html#remote-content', // XXX make sure this exists + href: 'https://docs.cryptpad.fr/user_guide/security.html#remote-content', }, [ Messages.resources_learnWhy ]), From d27cbb69dc3686dd17680229d61f198bde7edefd Mon Sep 17 00:00:00 2001 From: ansuz Date: Wed, 30 Jun 2021 19:05:37 +0530 Subject: [PATCH 09/33] filter email and instance purpose from telemetry unless we have consent --- lib/stats.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/stats.js b/lib/stats.js index 2a513da44..1dbbb2ad9 100644 --- a/lib/stats.js +++ b/lib/stats.js @@ -12,10 +12,10 @@ Stats.instanceData = function (Env) { httpUnsafeOrigin: Env.httpUnsafeOrigin, httpSafeOrigin: Env.httpSafeOrigin, - adminEmail: Env.adminEmail, + adminEmail: Env.consentToContact? Env.adminEmail: undefined, consentToContact: Boolean(Env.consentToContact), - instancePurpose: Env.instancePurpose, // XXX + instancePurpose: Env.instancePurpose === 'noanswer'? undefined: Env.instancePurpose, }; /* We reserve the right to choose not to include instances From f7f2146fa53e94be742f607a4a089e1c2874f1e0 Mon Sep 17 00:00:00 2001 From: ansuz Date: Wed, 30 Jun 2021 19:09:53 +0530 Subject: [PATCH 10/33] miscellaneous cleanup and notes --- customize.dist/src/less2/include/markdown.less | 4 ++-- lib/commands/pin-rpc.js | 2 +- lib/env.js | 2 +- lib/storage/block.js | 11 ----------- 4 files changed, 4 insertions(+), 15 deletions(-) diff --git a/customize.dist/src/less2/include/markdown.less b/customize.dist/src/less2/include/markdown.less index f52b2666f..f42a27146 100644 --- a/customize.dist/src/less2/include/markdown.less +++ b/customize.dist/src/less2/include/markdown.less @@ -177,12 +177,12 @@ a { color: @cryptpad_text_col; font-size: 0.8em; - &.cp-remote-img::before { + &.cp-remote-img::before { // .fa.fa-question-circle font-family: FontAwesome; //content: "\f08e\00a0"; content: "\f08e\00a0\00a0"; } - &.cp-learn-more::before { + &.cp-learn-more::before { // .fa.fa-external-link font-family: FontAwesome; content: "\f059\00a0"; //content: "\f059\00a0\00a0"; diff --git a/lib/commands/pin-rpc.js b/lib/commands/pin-rpc.js index 6fc05c202..89afc4ee8 100644 --- a/lib/commands/pin-rpc.js +++ b/lib/commands/pin-rpc.js @@ -228,7 +228,7 @@ Pinning.resetUserPins = function (Env, safeKey, channelList, _cb) { var session = Core.getSession(Env.Sessions, safeKey); - if (!channelList.length) { // XXX wut + if (!channelList.length) { return void cb(); } diff --git a/lib/env.js b/lib/env.js index 6b033fa16..141e028ae 100644 --- a/lib/env.js +++ b/lib/env.js @@ -123,7 +123,7 @@ module.exports.create = function (config) { maxWorkers: config.maxWorkers, disableIntegratedTasks: config.disableIntegratedTasks || false, - disableIntegratedEviction: config.disableIntegratedEviction || false, + disableIntegratedEviction: config.disableIntegratedEviction || true, // XXX false, lastEviction: +new Date(), evictionReport: {}, commandTimers: {}, diff --git a/lib/storage/block.js b/lib/storage/block.js index 5dfc393a5..d3e7a1869 100644 --- a/lib/storage/block.js +++ b/lib/storage/block.js @@ -79,14 +79,3 @@ Block.write = function (Env, publicKey, buffer, _cb) { }); }; -/* -Block.create = function (opt, _cb) { - var cb = Util.once(Util.mkAsync(_cb)); - - var env = { - root: opt.root || '', // XXX - - - }; -}; -*/ From 0c652e71b54cf09f99b1d1ed703f47ad3ef9024f Mon Sep 17 00:00:00 2001 From: Weblate Date: Wed, 30 Jun 2021 15:43:41 +0200 Subject: [PATCH 11/33] Translated using Weblate (Japanese) Currently translated at 93.3% (1275 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 93.2% (1274 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ --- www/common/translations/messages.ja.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/www/common/translations/messages.ja.json b/www/common/translations/messages.ja.json index 199ecd76a..1d7366f6d 100644 --- a/www/common/translations/messages.ja.json +++ b/www/common/translations/messages.ja.json @@ -260,7 +260,7 @@ "fm_rootName": "ドキュメント", "team_listTitle": "あなたのチーム", "team_createName": "チーム名", - "features_f_devices_note": "ユーザーアカウントでどこからでも CryptDrive にアクセスできます", + "features_f_devices_note": "ユーザーアカウントでどこからでもCryptDriveにアクセスできます", "features_f_devices": "全てのデバイスであなたのパッドを利用", "features_f_cryptdrive1_note": "フォルダ、共有フォルダ、テンプレート、タグ", "features_f_cryptdrive1": "CryptDriveの全機能", @@ -466,7 +466,7 @@ "sharedFolders_create": "共有フォルダを作成", "share_mediatagCopy": "Mediaタグをクリップボードにコピー", "header_homeTitle": "CryptPadのホームページを開く", - "header_logoTitle": "CryptDriveに行く", + "header_logoTitle": "CryptDriveを開く", "settings_cursorShareTitle": "カーソルの位置を共有", "settings_padWidthLabel": "エディターの幅を減らす", "settings_codeIndentation": "コードエディターのインデント(空白スペース)", @@ -1275,5 +1275,6 @@ "creation_expiresIn": "有効期限", "settings_mediatagSizeHint": "ドキュメントに埋め込まれたメディア要素(画像、ビデオ、PDF)を自動で読み込む最大のサイズをメガバイト(MB)で指定してください。指定したサイズより大きい要素については、手動で読み込む必要があります。「-1」を設定すると、メディア要素は常に自動的に読み込まれます。", "settings_mediatagSizeTitle": "自動ダウンロードの制限", - "settings_cacheHint": "CryptPadは、帯域の使用量を減らし、読み込み時間を短縮することを目的に、ドキュメントの各部分をブラウザ上のメモリに保存しています。もし空き容量が少なければ、キャッシュを無効にしてください。セキュリティ上の懸念から、キャッシュはログアウト時に毎回消去されますが、手動でキャッシュを消去して、デバイスの空き容量を確保することもできます。" + "settings_cacheHint": "CryptPadは、帯域の使用量を減らし、読み込み時間を短縮することを目的に、ドキュメントの各部分をブラウザ上のメモリに保存しています。もし空き容量が少なければ、キャッシュを無効にしてください。セキュリティ上の懸念から、キャッシュはログアウト時に毎回消去されますが、手動でキャッシュを消去して、デバイスの空き容量を確保することもできます。", + "team_infoContent": "それぞれのチームには、チーム所有のCryptDrive、ストレージのクォータ、チャット、メンバーリストが備わっています。チームの所有者はチームを削除することができます。管理者はメンバーを招待したりキックしたりすることができます。メンバーは、チームを退会することができます。" } From 63c852c9aad80cdf342b3b073e68501be632e29d Mon Sep 17 00:00:00 2001 From: Weblate Date: Wed, 30 Jun 2021 15:43:41 +0200 Subject: [PATCH 12/33] Translated using Weblate (German) Currently translated at 100.0% (1366 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/de/ --- www/common/translations/messages.de.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/www/common/translations/messages.de.json b/www/common/translations/messages.de.json index bc4ae8952..866f7f6ea 100644 --- a/www/common/translations/messages.de.json +++ b/www/common/translations/messages.de.json @@ -1365,5 +1365,6 @@ "admin_purpose_experiment": "Zum Testen der Plattform oder zur Entwicklung neuer Funktionen", "admin_instancePurposeTitle": "Zweck der Instanz", "admin_instancePurposeHint": "Warum betreibst du diese Instanz? Deine Antwort wird mit den Entwicklern geteilt, sofern die Telemetrie aktiviert ist.", - "admin_purpose_public": "Zur Bereitstellung eines kostenlosen Dienstes für die Allgemeinheit" + "admin_purpose_public": "Zur Bereitstellung eines kostenlosen Dienstes für die Allgemeinheit", + "resources_learnWhy": "Mehr über die Gründe erfahren" } From 0978074c74e479a34b972cfdc01bfd2f6597a254 Mon Sep 17 00:00:00 2001 From: ansuz Date: Wed, 30 Jun 2021 19:31:48 +0530 Subject: [PATCH 13/33] add convert app to example nginx and update changelog --- CHANGELOG.md | 20 ++++++++++++++++++++ docs/example.nginx.conf | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b41b1d9b0..18fd928a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ * server * `installMethod: 'unspecified'` in the default config to distinguish docker installs * `instancePurpose` on admin panel + * add support for archiving pin lists (instead of deleting them) + * blocks + * archive blocks instead of deleting them outright + * implement as storage API + * validate blocks in worker + * don't include adminEmail in telemetry unless we have consentToContact + * don't include instancePurpose in telemetry if it is "noanswer" * display warnings when remote resources are blocked * in code preview * restrict style tags to a scope when rendering them in markdown preview by compiling their content as scoped less @@ -15,6 +22,19 @@ * form templates * guard against a type error in `getAccessKeys` * guard against invalid or malicious input when constructing media-tags for embedding in markdown +* Japanese translation +* conversions + * convert app + * some basic office formats + * rich text => markdown + * handle some pecularities with headings and ids + * forms => .csv + * trello import with some loss +* fix rendering issue for legacy markdown media tag syntax + * guard against domExceptions + * catch errors thrown by the diff applier +* don't bother returning the hash of a pin list to the client, since they don't use it + # 4.7.0 diff --git a/docs/example.nginx.conf b/docs/example.nginx.conf index 85f42dd81..29317ee27 100644 --- a/docs/example.nginx.conf +++ b/docs/example.nginx.conf @@ -214,7 +214,7 @@ server { # The nodejs server has some built-in forwarding rules to prevent # URLs like /pad from resulting in a 404. This simply adds a trailing slash # to a variety of applications. - location ~ ^/(register|login|settings|user|pad|drive|poll|slide|code|whiteboard|file|media|profile|contacts|todo|filepicker|debug|kanban|sheet|support|admin|notifications|teams|calendar|presentation|doc|form|report)$ { + location ~ ^/(register|login|settings|user|pad|drive|poll|slide|code|whiteboard|file|media|profile|contacts|todo|filepicker|debug|kanban|sheet|support|admin|notifications|teams|calendar|presentation|doc|form|report|convert)$ { rewrite ^(.*)$ $1/ redirect; } From 9d23c42e0b6554db18e9536e3b21ef2ff9db116f Mon Sep 17 00:00:00 2001 From: Weblate Date: Wed, 30 Jun 2021 16:10:24 +0200 Subject: [PATCH 14/33] Translated using Weblate (Japanese) Currently translated at 93.4% (1276 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 93.4% (1276 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 93.3% (1275 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 93.3% (1275 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ --- www/common/translations/messages.ja.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/www/common/translations/messages.ja.json b/www/common/translations/messages.ja.json index 1d7366f6d..03c32921c 100644 --- a/www/common/translations/messages.ja.json +++ b/www/common/translations/messages.ja.json @@ -784,7 +784,7 @@ "team_pcsSelectHelp": "所有するパッドをチームのドライブに作成すると、そのパッドの所有権はチームに与えられます。", "sharedFolders_create_owned": "フォルダを所有する", "creation_owned1": "所有している項目は、所有者が望むときにいつでも完全削除できます。完全削除すると、他のユーザーのCryptDriveからも削除されます。", - "creation_owned": "所有するパッド", + "creation_owned": "パッドを所有", "uploadFolder_modal_owner": "所有するファイル", "upload_modal_owner": "所有するファイル", "settings_driveDuplicateHint": "所有するパッドを共有フォルダに移動すると、あなたのCryptDriveにパッドのコピーが保存され、あなたは引き続きそのパッドをコントロールできます。重複したファイルは隠すことができます。削除しない限り、共有したバージョンだけが表示されます。削除した場合は、以前の場所に元のファイルが表示されます。", @@ -1273,8 +1273,9 @@ "owner_text": "パッドの所有者は、所有者の追加や削除、リストによるアクセス制限のほか、パッドの削除を行うことができます。", "share_linkWarning": "このリンクは、ドキュメントを暗号化したり復号化したりする鍵を含んでいます。リンクを受け取った相手は、誰でも(ここにはコンピュータープログラムも含まれます)コンテンツにアクセスすることができます。", "creation_expiresIn": "有効期限", - "settings_mediatagSizeHint": "ドキュメントに埋め込まれたメディア要素(画像、ビデオ、PDF)を自動で読み込む最大のサイズをメガバイト(MB)で指定してください。指定したサイズより大きい要素については、手動で読み込む必要があります。「-1」を設定すると、メディア要素は常に自動的に読み込まれます。", + "settings_mediatagSizeHint": "ドキュメントに埋め込まれたメディア要素(画像、ビデオ、PDF)を自動で読み込む最大のサイズをメガバイト(MB)で指定してください。指定したサイズより大きい要素については、手動で読み込む必要があります。「-1」を設定すると、メディア要素は常に自動で読み込みます。", "settings_mediatagSizeTitle": "自動ダウンロードの制限", "settings_cacheHint": "CryptPadは、帯域の使用量を減らし、読み込み時間を短縮することを目的に、ドキュメントの各部分をブラウザ上のメモリに保存しています。もし空き容量が少なければ、キャッシュを無効にしてください。セキュリティ上の懸念から、キャッシュはログアウト時に毎回消去されますが、手動でキャッシュを消去して、デバイスの空き容量を確保することもできます。", - "team_infoContent": "それぞれのチームには、チーム所有のCryptDrive、ストレージのクォータ、チャット、メンバーリストが備わっています。チームの所有者はチームを削除することができます。管理者はメンバーを招待したりキックしたりすることができます。メンバーは、チームを退会することができます。" + "team_infoContent": "それぞれのチームには、チーム所有のCryptDrive、ストレージのクォータ、チャット、メンバーリストが備わっています。チームの所有者はチームを削除することができます。管理者はメンバーを招待したりキックしたりすることができます。メンバーは、チームを退会することができます。", + "home_support": "

開発チームは、ユーザーのデータを使って金銭上の利益を得ることはありません。これはプライバシーを尊重するオンラインサービスの展望の一部をなすものです。個人情報を使って金銭上の利益をあげながら「無料」を装う巨大プラットフォームとは違って、CryptPadは、ユーザーが自発的に支援を行うサービスのモデルを作ることを目指しています。

Open Collectiveから、一度もしくは継続的な寄付を行い、プロジェクトを支援していただくことができます。予算には透明性があり、更新については定期的に報告を行っています。お金によらずに貢献する方法も数多くあります。

" } From 41d17a7ee3b51a5123fd51f86b7a2bbe8647248e Mon Sep 17 00:00:00 2001 From: Weblate Date: Wed, 30 Jun 2021 19:39:00 +0200 Subject: [PATCH 15/33] Translated using Weblate (Japanese) Currently translated at 95.5% (1305 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 95.5% (1305 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 95.5% (1305 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 95.5% (1305 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 95.4% (1304 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 95.4% (1304 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 95.4% (1304 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 95.1% (1300 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 95.0% (1299 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 95.0% (1299 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 95.0% (1299 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 95.0% (1299 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 95.0% (1299 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 95.0% (1299 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 95.0% (1298 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 94.9% (1297 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 94.9% (1297 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 94.6% (1293 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 94.5% (1291 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 94.4% (1290 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 94.3% (1289 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 94.2% (1288 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 94.1% (1286 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 94.0% (1285 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 93.9% (1284 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 93.9% (1284 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 93.9% (1283 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 93.9% (1283 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 93.8% (1282 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 93.7% (1280 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 93.6% (1279 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 93.5% (1278 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 93.5% (1278 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 93.5% (1278 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 93.4% (1277 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 93.4% (1276 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ --- www/common/translations/messages.ja.json | 113 ++++++++++++++--------- 1 file changed, 71 insertions(+), 42 deletions(-) diff --git a/www/common/translations/messages.ja.json b/www/common/translations/messages.ja.json index 03c32921c..5159c5859 100644 --- a/www/common/translations/messages.ja.json +++ b/www/common/translations/messages.ja.json @@ -63,8 +63,8 @@ "crowdfunding_button2": "CryptPadを支援", "fm_padIsOwned": "あなたはこのパッドの所有者です", "creation_expiration": "有効期限を設定", - "owner_removeText": "所有者", - "creation_owners": "所有者", + "owner_removeText": "オーナー", + "creation_owners": "オーナー", "download_mt_button": "ダウンロード", "fc_rename": "名前を変更", "forgotten": "ごみ箱へ移動", @@ -74,7 +74,7 @@ "fm_creation": "作成日時", "fm_lastAccess": "最終アクセス日時", "fm_type": "種類", - "team_inviteLinkLoading": "あなたのリンクを生成中", + "team_inviteLinkLoading": "リンクを生成しています", "download_step1": "ダウンロード中", "loading": "読み込み中...", "fm_searchPlaceholder": "検索...", @@ -159,21 +159,21 @@ "saved": "保存しました", "error": "エラー", "deleted": "削除しました", - "profile_editDescription": "説明を編集", - "profile_addDescription": "説明を追加", + "profile_editDescription": "説明文を編集", + "profile_addDescription": "説明文を追加", "profileButton": "プロフィール", "profile_avatar": "アバター", "profile_upload": " 新しいアバターをアップロード", "teams_table_generic_edit": "編集: フォルダとパッドの作成、変更、削除が可能。", "teams_table_generic_view": "表示: フォルダとパッドへのアクセス(閲覧のみ)。", - "teams_table_generic_own": "チームの管理: チーム名とチームアバターの変更、所有者の追加または削除、チームのサブスクリプションの変更、チームの削除が可能。", + "teams_table_generic_own": "チームの管理: チーム名とチームのアバターの変更、オーナーの追加または削除、チームのサブスクリプションの変更、チームの削除が可能。", "teams_table_owners": "チームの管理", "teams_table_generic_admin": "メンバーの管理: メンバーの招待および取り消し、メンバーに管理者までの権限の付与が可能。", "teams_table_admins": "メンバーの管理", "teams_table_generic": "権限一覧", "teams_table": "権限", "contacts_fetchHistory": "古い履歴を取得する", - "contacts_warning": "ここに入力したすべてのものは永続的であり、このパッドの現在および将来のすべてのユーザーが利用できます。機密情報の入力は推奨されません!", + "contacts_warning": "ここに入力したすべてのメッセージは永続的であり、このパッドの現在および将来のすべてのユーザーが利用できます。機密情報の入力は推奨されません!", "contacts_typeHere": "ここにメッセージを入力...", "team_cat_drive": "ドライブ", "team_cat_chat": "チャット", @@ -184,11 +184,11 @@ "team_deleteHint": "チーム自体とチームが所有しているすべてのドキュメントを削除します。", "team_deleteTitle": "チームの削除", "team_avatarHint": "容量 500KB 以下 (png 、jpg 、jpeg 、gif)", - "team_avatarTitle": "チームアバター", + "team_avatarTitle": "チームのアバター", "team_nameHint": "チームの名前を設定します", "team_nameTitle": "チーム名", "team_members": "メンバー", - "team_owner": "所有者", + "team_owner": "オーナー", "team_admins": "管理者", "viewers": "閲覧者", "contacts_padTitle": "チャット", @@ -268,7 +268,7 @@ "features_f_anon": "匿名ユーザーの全機能", "features_f_storage0_note": "ドキュメントは{0}日以上使用されないと削除されます", "features_f_storage0": "一時的な保存", - "features_f_cryptdrive0_note": "後で開けるようにブラウザにアクセスしたパッドを保存する機能", + "features_f_cryptdrive0_note": "アクセスしたパッドをブラウザに保存して、後で開くことができます", "features_f_cryptdrive0": "CryptDriveへの限定的なアクセス", "features_f_file0_note": "他のユーザーが共有したドキュメントを表示およびダウンロードできます", "features_f_file0": "ドキュメントを開く", @@ -317,7 +317,7 @@ "oo_sheetMigration_loading": "あなたのスプレッドシートを最新バージョンにアップグレードしています。1分程度お待ちください。", "settings_ownDriveButton": "アカウントをアップグレード", "features_f_file1_note": "CryptDriveに画像ファイル、PDF、動画などを保存できます。保存したファイルは、連絡先と共有したり、ドキュメントに埋め込んだりできます。(最大容量は{0}MB)", - "crowdfunding_button": "CryptPad を支援", + "crowdfunding_button": "CryptPadを支援", "contacts_removeHistoryTitle": "チャット履歴を削除", "properties_passwordSuccessFile": "パスワードは正常に変更されました。", "drive_sfPasswordError": "誤ったパスワードです", @@ -344,7 +344,7 @@ "settings_safeLinksHint": "CryptPadでは、リンクの中にパッドを解読するための鍵が含まれています。ブラウザの閲覧履歴にアクセスできる人は、誰でもCryptPadのデータを閲覧することができます。ここにはデバイス間で履歴を同期するブラウザやその拡張機能も含まれます。「セーフリンク」を有効にすると、鍵がブラウザの閲覧履歴に残ったり、アドレスバーに表示されたりするのを可能な限り防ぐことができます。この機能を有効にして{0}の共有メニューを使用することを強く推奨します。", "settings_autostoreTitle": "CryptDriveへのパッドの保存", "settings_logoutEverywhereConfirm": "すべてのデバイスでログインが取り消されるため、今後利用する際にもう一度ログインするよう求められます。続行しますか?", - "settings_logoutEverywhere": "他のすべてのウェブセッションからログアウトします", + "settings_logoutEverywhere": "他のすべてのウェブセッションからログアウト", "settings_logoutEverywhereTitle": "リモートセッションを閉じる", "loading_state_5": "ドキュメントを再構築", "loading_state_4": "チームを読み込み", @@ -386,8 +386,8 @@ "previewButtonTitle": "マークダウンのプレビューを表示または非表示にします", "whatis_model": "ビジネスモデル", "whatis_collaboration": "プライベートコラボレーション", - "home_support_title": "CryptPad を支援する", - "home_opensource": "誰でもCryptPadを運営し、個人的または専門的な仕方でサービスを提供することができます。ソースコードはGitHubで確認できます。", + "home_support_title": "CryptPadを支援", + "home_opensource": "誰でもCryptPadを運営し、個人的または専門的な規模でサービスを提供することができます。ソースコードはGitHubで確認できます。", "home_opensource_title": "オープンソース", "home_host_title": "このインスタンスについて", "home_privacy_text": "CryptPadは、データをプライベートに保護しながらコラボレーションを可能にするように構築されています。すべてのコンテンツは、あなたのブラウザ上で暗号化および復号化されます。ドキュメント、チャット、およびファイルは、あなたがログインしているセッション以外では読み取れません。サービスの管理者でも、あなたの情報にアクセスすることはできません。", @@ -440,10 +440,10 @@ "kanban_editCard": "このカードを編集", "kanban_clearFilter": "フィルターを消去", "kanban_tags": "タグでフィルタリング", - "allow_text": "アクセスリストを使用すると、選択したユーザーと所有者だけがドキュメントにアクセスできます。", + "allow_text": "アクセスリストを使用すると、選択したユーザーとオーナーだけがドキュメントにアクセスできます。", "admin_defaultlimitTitle": "ストレージの制限(MB)", - "owner_add": "{0}があなたをパッド {1} の所有者になるよう希望しています。 承諾しますか?", - "owner_removeConfirm": "選択したユーザーの所有権を削除してよろしいですか? ユーザーには通知が送られます。", + "owner_add": "{0}があなたをパッド「{1}」のオーナーになるよう希望しています。 承諾しますか?", + "owner_removeConfirm": "選択したユーザーのオーナー権を削除してよろしいですか? ユーザーには通知が送られます。", "owner_removePendingText": "保留中", "properties_unknownUser": "{0}人の不明なユーザー", "requestEdit_viewPad": "パッドを新しいタブで開く", @@ -474,14 +474,14 @@ "fc_openInCode": "コードエディターで開く", "poll_create_option": "新しいオプションを追加", "poll_create_user": "新しいユーザーを追加", - "pad_mediatagImport": "CryptDriveに保存", + "pad_mediatagImport": "あなたのCryptDriveに保存", "admin_listMyInstanceLabel": "このインスタンスをリストに表示", "admin_checkupTitle": "インスタンスの設定を検証", "cba_disable": "消去して無効にする", "upload_pending": "保留中", "settings_resetTips": "ヒント", "chrome68": "バージョン68のChromeあるいはChromiumを使用しているようです。このバージョンには、数秒経過した後でページが白紙になったり、クリックにページが反応しなくなったりするバグがあります。この問題を解決するには、別のタブを表示して改めて表示するか、このページでスクロールを試みてください。このバグは次のバージョンで解決される予定となっています。", - "register_notes": "
  • ドキュメントは、パスワードによって暗号化されます。パスワードを紛失すると、データを復元することはできません。
  • 共有のコンピュータを使用している場合は、作業完了時に忘れずにログアウトしてください。 ブラウザーのウインドウを閉じても、アカウントからはログアウトされません。
  • 未ログインで作成、共有したファイルを保存するには、 「匿名セッションのデータをインポート」にチェックをしてください。
", + "register_notes": "
  • ドキュメントは、パスワードによって暗号化されます。パスワードを紛失すると、データを復元することはできません。
  • 共有のコンピュータを使用している場合は、作業完了時に忘れずログアウトしてください。 ブラウザーのウインドウを閉じても、アカウントからはログアウトされません。
  • 未ログインで作成、共有したファイルを保存するには、 「匿名セッションのドキュメントをインポート」にチェックをしてください。
", "poll_commit": "送信", "admin_removeDonateButtonTitle": "クラウドファンディングに参加", "mediatag_notReady": "ダウンロードを完了してください", @@ -564,7 +564,7 @@ "form_reset": "リセット", "form_update": "更新", "form_submit": "送信", - "form_type_md": "説明", + "form_type_md": "説明文", "form_type_poll": "投票", "form_type_checkbox": "チェックボックス", "form_type_textarea": "段落", @@ -672,7 +672,7 @@ "fm_newButton": "新規", "fm_sharedFolderName": "共有フォルダ", "fm_tagsName": "タグ", - "fm_filesDataName": "全ファイル", + "fm_filesDataName": "全てのファイル", "contacts_leaveRoom": "このルームから退出", "contacts_rooms": "ルーム", "contacts_removeHistoryServerError": "チャットの履歴を削除する際にエラーが発生しました。後ほど再試行してください", @@ -781,9 +781,9 @@ "typeError": "このパッドは選択したアプリケーションと互換性がありません", "form_type_page": "ページ分割", "form_description_default": "ここにテキストを入力", - "team_pcsSelectHelp": "所有するパッドをチームのドライブに作成すると、そのパッドの所有権はチームに与えられます。", + "team_pcsSelectHelp": "所有するパッドをチームのドライブに作成すると、そのパッドのオーナー権はチームに与えられます。", "sharedFolders_create_owned": "フォルダを所有する", - "creation_owned1": "所有している項目は、所有者が望むときにいつでも完全削除できます。完全削除すると、他のユーザーのCryptDriveからも削除されます。", + "creation_owned1": "所有している項目は、オーナーの望むときにいつでも完全削除できます。完全削除すると、他のユーザーのCryptDriveからも削除されます。", "creation_owned": "パッドを所有", "uploadFolder_modal_owner": "所有するファイル", "upload_modal_owner": "所有するファイル", @@ -851,7 +851,7 @@ "settings_resetTipsDone": "全てのヒントが表示されます。", "settings_resetTipsButton": "利用可能なCryptDriveのヒントをリセット", "settings_resetNewTitle": "CryptDriveのデータを消去", - "settings_exportErrorMissing": "このドキュメントはサーバーにありません(期限切れ、もしくは所有者により削除されました)", + "settings_exportErrorMissing": "このドキュメントはサーバーにありません(期限切れ、もしくはオーナーにより削除されました)", "settings_exportErrorEmpty": "このドキュメントはエクスポートできません(内容が空もしくは無効です)。", "settings_exportErrorDescription": "以下のドキュメントをエクスポートに追加できませんでした:", "settings_exportDescription": "ドキュメントをダウンロードして復号化しております。少々お待ちください。これには数分程度かかることがあります。タブを閉じると作業が中断されます。", @@ -880,7 +880,7 @@ "colorButtonTitle": "プレゼンテーションモードの文字色を変更", "presentButtonTitle": "プレゼンテーションモードに変更", "exportPrompt": "ファイル名は何にしますか?", - "share_formEdit": "著者", + "share_formEdit": "作者", "history_userNext": "次の著者", "history_userPrev": "以前の著者", "comments_deleted": "コメントは著者により削除されました", @@ -932,7 +932,7 @@ "properties_passwordWarning": "パスワードは変更されましたが、CryptDriveを更新することができませんでした。古いバージョンのパッドは手動で削除しなければならないかもしれません。
OKを押して再読み込みし、アクセス権限を更新してください。", "properties_confirmChange": "パスワードを変更すると履歴が削除されます。パスワードを知らないユーザーは、このパッドにアクセスできなくなります。続行してよろしいですか?", "creation_newPadModalDescription": "作成するドキュメントの種類をクリックしてください。タブキーで選択し、エンターキーで作成することもできます。", - "creation_noOwner": "所有者がありません", + "creation_noOwner": "オーナーがいません", "properties_passwordError": "パスワードの変更中にエラーが発生しました。再度試してください。", "properties_passwordSame": "新しいパスワードは現在のパスワードと異なるものでなければなりません。", "four04_pageNotFound": "お探しのページが見つかりませんでした。", @@ -952,7 +952,7 @@ "settings_export_reading": "CryptDriveを読み込んでいます…", "settings_exportCancel": "エクスポートをキャンセルしてよろしいでしょうか?次のエクスポートでは最初からやりなおす必要があります。", "fm_error_cantPin": "内部サーバーエラー。ページを再度読み込んでください。", - "fm_info_anonymous": "ログインしていないため、ドキュメントは{0}日後に期限切れになります。また、ブラウザの履歴を消去するとファイルが消えてしまうかもしれません。
ファイルを永続的に保存するには、登録するか(個人情報の登録は不要です)、ログインしてください。登録アカウントについては、こちらを参照してください(英語)。", + "fm_info_anonymous": "ログインしていないため、ドキュメントは{0}日後に期限切れになります。また、ブラウザの履歴を消去するとファイルが削除される恐れがあります。
ファイルを永続的に保存するには、登録するか(個人情報の登録は不要です)ログインしてください。登録アカウントについては、こちらを参照してください。", "fm_info_recent": "あなたか共同編集者が最近開いた、もしくは編集したパッドの一覧です。", "fm_info_template": "テンプレートとして保存したパッドの一覧です。以下のテンプレートを使って、新しいパッドを作成することができます。", "fm_categoryError": "選択したカテゴリーが開けません。ルートを表示します。", @@ -1030,7 +1030,7 @@ "team_invitedToTeam": "{0}があなたをチーム「{1}」に招待しました", "team_inviteFromMsg": "{0}があなたをチーム「{1}」に招待しました", "team_invitePleaseLogin": "招待を承諾するには、ログインもしくは登録してください。", - "team_inviteEnterPassword": "招待パスワードを入力してください。", + "team_inviteEnterPassword": "招待のパスワードを入力してください。", "team_inviteGetData": "チームのデータを取得中です", "team_inviteInvalidLinkError": "招待リンクが無効です。", "admin_getlimitsHint": "インスタンスに適用されている全てのカスタムストレージの制限を一覧表示します。", @@ -1058,7 +1058,7 @@ "form_answerName": "{0}から{1}について回答", "form_addMultipleHint": "複数の日時を追加", "admin_consentToContactTitle": "連絡に同意", - "form_poll_hint": ": はい、: いいえ、: 許容できる", + "form_poll_hint": ": はい、: いいえ、: 可", "admin_provideAggregateStatisticsLabel": "集計済みの統計を提供", "admin_provideAggregateStatisticsTitle": "統計による集計", "admin_blockDailyCheckHint": "以後CryptPadのインスタンスは、1日に1回、CryptPadの開発者のサーバーにメッセージを送信します。開発者はそれをもとに、CryptPadのバージョンごとのサーバー数を追跡することができます。以下からこの測定をオプトアプトできます。なお、送信されるメッセージの内容は、確認用として、アプリケーションのサーバーのログに記録されます。", @@ -1094,7 +1094,7 @@ "trimHistory_error": "履歴を削除している途中でエラーが発生しました", "trimHistory_getSizeError": "ドライブの履歴のサイズを計算している途中でエラーが発生しました", "profile_login": "このユーザーを連絡先に追加するにはログインする必要があります", - "dontShowAgain": "二度と表示しない", + "dontShowAgain": "再び表示しない", "oo_sheetMigration_anonymousEditor": "登録ユーザーが最新のバージョンに更新するまで、このスプレッドシートを未登録ユーザーが編集することはできません。", "oo_invalidFormat": "このファイルはインポートできません", "burnAfterReading_warningDeleted": "このパッドは削除されました。ウインドウを閉じた後で再びアクセスすることはできません。", @@ -1130,8 +1130,8 @@ "mdToolbar_heading": "見出し", "settings_cursorShowHint": "共同ドキュメントであなたが他のユーザーのカーソルの位置を見られるかどうかを決められます。", "settings_cursorShareHint": "共同ドキュメントで他のユーザーがあなたのカーソルの位置を見られるかどうかを決められます。", - "settings_cursorColorHint": "共同ドキュメントでの他のユーザーの色を変更できます。", - "settings_padWidthHint": "テキストエディターの幅を制限するページモード(既定)と、スクリーン全体の幅を使用するモードを切り替える。", + "settings_cursorColorHint": "共同ドキュメントでの他のユーザーのカーソルの色を変更できます。", + "settings_padWidthHint": "テキストエディターの幅を制限するページモード(既定)と、スクリーン全体の幅を使用するモードを切り替えられます。", "fm_forbidden": "禁止されたアクション", "team_exportHint": "チームのドライブの全てのドキュメントをダウンロードします。ドキュメントは、他のアプリケーションで読み込めるフォーマットがあれば、そのフォーマットでダウンロードされます。そうしたフォーマットがなければ、CryptPadで読み込めるフォーマットでダウンロードされます。", "admin_limitUser": "ユーザーの公開鍵", @@ -1148,7 +1148,7 @@ "support_formHint": "このフォームから、管理者に問題の報告や質問を安全に行うことができます。
それらに関しては CryptPadユーザーガイドで回答されているものがあるかもしれません。既にチケットを作成している場合、同じ問題に関して新しいチケットを作成するのはお控えください。その代わりに、既存のチケットに追加の情報を送信してください。", "support_disabledTitle": "サポートは有効になっていません", "admin_supportListHint": "ユーザーからサポートのメールボックスに送信されたチケットの一覧です。管理者はメッセージと回答を閲覧できます。終了したチケットは再開することができます。終了したチケットについては削除する(隠す)ことができますが、他の管理者には引き続き表示されます。", - "drive_sfPassword": "共有フォルダ「 {0} 」は利用できません。所有者により削除されたか、新しいパスワードにより保護されています。CryptDriveから削除するか、新しいパスワードを使ってアクセスを回復できます。", + "drive_sfPassword": "共有フォルダ「 {0} 」は利用できません。オーナーにより削除されたか、新しいパスワードで保護されています。CryptDriveから削除するか、新しいパスワードを使ってアクセスを回復できます。", "fm_info_sharedFolderHistory": "これは共有フォルダの履歴です: {0}
CryptDriveは閲覧モードを継続します。", "notification_folderShared": "{0}があなたとフォルダを共有しました: {1}", "convertFolderToSF_SFChildren": "このフォルダは共有フォルダを含んでいるため、共有フォルダに変更できません。続けるには、このフォルダを共有フォルダの外に移動してください。", @@ -1226,15 +1226,15 @@ "settings_driveRedirectHint": "ログイン時にホームページからドライブに自動で転送する機能は、デフォルトで有効ではなくなりました。以前の動作は以下で有効にできます。", "admin_removeDonateButtonLabel": "クラウドファンディングのキャンペーンの宣伝を表示しない", "admin_purpose_public": "誰でも利用できるフリーのサービスを提供するため", - "owner_team_add": "{0}があなたをチーム({1})の所有者にしようとしています。承諾しますか?", + "owner_team_add": "{0}があなたをチーム({1})のオーナーにしようとしています。承諾しますか?", "friendRequest_accepted": "{0}が連絡先リクエストを承諾しました", "friendRequest_accept": "承諾(Enter)", "admin_flushCacheHint": "サーバーから最新のコンテンツをダウンロードするようユーザーに強制(サーバーが「フレッシュ」モードの場合のみ)", "admin_activeSessionsHint": "アクティブなwebsocketの接続(および接続する一意のIPアドレス)の数", "convertFolderToSF_SFParent": "このフォルダは別の共有フォルダ内にあるため、共有フォルダに変換できません。続行するには、外部に移動してください。", "settings_deleteWarning": "注意:現在、プレミアムプランに加入しています(別のユーザーが支払いまたは提供)。アカウントを削除する前に、プランをキャンセルしてください。アカウントを削除すると、サポートに連絡しないとキャンセルできなくなります。", - "owner_request": "{0}はあなたを{1}の所有者にしようとしています", - "owner_addConfirm": "共同所有者は内容を変更したり、あなたを所有者から削除したりすることができます。続行してよろしいですか?", + "owner_request": "{0}はあなたを{1}のオーナーにしようとしています", + "owner_addConfirm": "共同オーナーは内容を変更したり、あなたをオーナーから削除したりすることができます。続行してよろしいですか?", "download_zip_file": "ファイル {0}/{1}", "documentID": "ドキュメントの識別子", "admin_setlimitButton": "制限を設定", @@ -1249,7 +1249,7 @@ "isNotContact": "{0}はあなたの連絡先ではありません", "isContact": "{0}はあなたの連絡先です", "profile_info": "他のユーザーは、ドキュメントのユーザーリストであなたのアバターをクリックして、あなたのプロフィールを確認できます。", - "owner_removeMeConfirm": "所有権を放棄しようとしています。これは取り消せません。よろしいですか?", + "owner_removeMeConfirm": "オーナー権を放棄しようとしています。これは取り消せません。よろしいですか?", "requestEdit_confirm": "{1}がパッド「{0}」の編集権を要求しました。編集権を与えますか?", "admin_supportInitHelp": "サーバーはサポートメールボックスを使用するように設定されていません。サポートメールボックスを有効にし、ユーザーからメッセージを受け取るためには、サーバーの管理者に連絡し、「./scripts/generate-admin-keys.js」のスクリプトを実行してもらい、生成された公開鍵を「config.js」に保存して、秘密鍵をあなたに送信してもらうよう依頼する必要があります。", "feedback_privacy": "私たちはプライバシーを配慮すると同時に、CryptPadを使いやすくしたいと望んでいます。このファイルは、実行されたアクションを特定するパラメーターと共に要求され、ユーザーにとって重要なUI機能を特定するために使用されます。", @@ -1266,16 +1266,45 @@ "whatis_collaboration_info": "

CryptPadはコラボレーションを念頭に作られています。ドキュメントに加えられる変更は、リアルタイムで同期されます。全てのデータは暗号化されているため、サービスとその管理者が、編集され保存されているコンテンツを覗き見ることは不可能です。

", "whatis_apps": "フルスイートアプリケーション", "whatis_drive_info": "

ドキュメントをCryptDriveに保存して管理できます。フォルダを作ったり共有したりできるほか、ドキュメントをタグ付けして整理することもできます。PDFファイル、写真、動画、音声などのファイルをアップロードして共有できます。チームのドライブを使うと、メンバーとデータを共有したり、ファイルの管理や、きめ細かいアクセス権のコントロールを行うことができます。

", - "whatis_model_info": "

CryptPadは2016年より、寄付金とcryptpad.frの定額利用のほか、BPIフランス、NLNet財団、NGI Trust、Mozillaオープンソースサポートといったフランス、EUの研究助成を受けています。私たちは、公的資金で作られたソフトウェアについては、コードも公的に公開されるべきであると考えているため、サービスは全てオープンソースで提供しています。誰でも自由にこのソフトウェアを使ったり、運営したり、改変したりすることができます。

CryptPadは、ユーザーのデータを使って金銭上の利益を得ることはありません。これはプライバシーを尊重するオンラインサービスの展望の一部をなすものです。個人情報を使って金銭上の利益をあげながら「無料」を装う巨大プラットフォームとは違って、CryptPadは、ユーザーが自発的に支援を行うサービスのモデルを作ることを目指しています。

私たちは、CryptPadのサービスを無料で提供しています。それは、金銭的に余裕のある人々だけでなく、誰もがプライバシーを得るに値すると確信しているからです。もしあなたがこのプロジェクトを支援できる状況にあるなら、機能の開発や、改良、メンテナンスに参加していただきたく考えます。そうすることで、全てのユーザーに利益をもたらされるはずです。

このプロジェクトが実行可能であることが明らかになったいま、次のゴールは、ユーザーによる支援を通じて、プロジェクトを持続可能なものにすることにあります。CryptPadが、巨大プラットフォームに代わる持続可能なサービスを開発できるよう支援していただけるなら、一度もしくは継続的な寄付へのご協力をお願いいたします。

", + "whatis_model_info": "

CryptPadは2016年より、寄付金とcryptpad.frの定額利用のほか、BPIフランス、NLNet財団、NGI Trust、Mozillaオープンソースサポートといったフランス、EUの研究助成を受けています。私たちは、公的資金で作られたソフトウェアについては、コードも公的に公開されるべきであると考えているため、サービスは全てオープンソースで提供しています。誰でも自由にこのソフトウェアを使用、運営、改変することができます。

CryptPadは、ユーザーのデータを使って金銭上の利益を得ることはありません。これはプライバシーを尊重するオンラインサービスの展望の一部をなすものです。個人情報を使って金銭上の利益をあげながら「無料」を装う巨大プラットフォームとは違って、CryptPadは、ユーザーが自発的に支援を行うサービスのモデルを作ることを目指しています。

私たちは、CryptPadのサービスを無料で提供しています。それは、金銭的に余裕のある人々だけでなく、誰もがプライバシーを得るに値すると確信しているからです。もしあなたがこのプロジェクトを支援できる状況にあるなら、機能の開発や、改良、メンテナンスに参加していただきたく考えます。そうすることで、全てのユーザーに利益をもたらされるはずです。

このプロジェクトが実行可能であることが明らかになったいま、次のゴールは、ユーザーによる支援を通じて、プロジェクトを持続可能なものにすることにあります。CryptPadが、巨大プラットフォームに代わる持続可能なサービスを開発できるよう支援していただけるなら、一度もしくは継続的な寄付へのご協力をお願いいたします。

", "whatis_xwiki_info": "

CryptPadはフランス、パリに所在する会社であるXWikiにて開発されています。当社はオープンソース・ソフトウェアを15年以上にわたって開発しており、情報管理のための共同作業ソフトウェアの開発に関して豊富な経験をもっています。当社の実績は、私たちがCryptPadの長期的な開発と維持にコミットしていることを示しています。

", "whatis_xwiki": "XWikiにて開発", "history_restoreDrivePrompt": "CryptDriveの現在のバージョンを、表示されているバージョンに置き換えてよろしいですか?", - "owner_text": "パッドの所有者は、所有者の追加や削除、リストによるアクセス制限のほか、パッドの削除を行うことができます。", + "owner_text": "パッドのオーナーは、オーナーの追加や削除、リストによるアクセス制限のほか、パッドの削除を行うことができます。", "share_linkWarning": "このリンクは、ドキュメントを暗号化したり復号化したりする鍵を含んでいます。リンクを受け取った相手は、誰でも(ここにはコンピュータープログラムも含まれます)コンテンツにアクセスすることができます。", "creation_expiresIn": "有効期限", "settings_mediatagSizeHint": "ドキュメントに埋め込まれたメディア要素(画像、ビデオ、PDF)を自動で読み込む最大のサイズをメガバイト(MB)で指定してください。指定したサイズより大きい要素については、手動で読み込む必要があります。「-1」を設定すると、メディア要素は常に自動で読み込みます。", "settings_mediatagSizeTitle": "自動ダウンロードの制限", - "settings_cacheHint": "CryptPadは、帯域の使用量を減らし、読み込み時間を短縮することを目的に、ドキュメントの各部分をブラウザ上のメモリに保存しています。もし空き容量が少なければ、キャッシュを無効にしてください。セキュリティ上の懸念から、キャッシュはログアウト時に毎回消去されますが、手動でキャッシュを消去して、デバイスの空き容量を確保することもできます。", - "team_infoContent": "それぞれのチームには、チーム所有のCryptDrive、ストレージのクォータ、チャット、メンバーリストが備わっています。チームの所有者はチームを削除することができます。管理者はメンバーを招待したりキックしたりすることができます。メンバーは、チームを退会することができます。", - "home_support": "

開発チームは、ユーザーのデータを使って金銭上の利益を得ることはありません。これはプライバシーを尊重するオンラインサービスの展望の一部をなすものです。個人情報を使って金銭上の利益をあげながら「無料」を装う巨大プラットフォームとは違って、CryptPadは、ユーザーが自発的に支援を行うサービスのモデルを作ることを目指しています。

Open Collectiveから、一度もしくは継続的な寄付を行い、プロジェクトを支援していただくことができます。予算には透明性があり、更新については定期的に報告を行っています。お金によらずに貢献する方法も数多くあります。

" + "settings_cacheHint": "CryptPadは、帯域の使用量を減らし、読み込み時間を短縮することを目的に、ドキュメントの各部分をブラウザ上のメモリに保存しています。もし空き容量が少なければ、キャッシュを無効にしてください。セキュリティー上の懸念から、キャッシュはログアウト時に毎回消去されますが、手動でキャッシュを消去して、デバイスの空き容量を確保することもできます。", + "team_infoContent": "それぞれのチームには、チーム所有のCryptDrive、ストレージのクォータ、チャット、メンバーリストが備わっています。チームのオーナーはチームを削除することができます。管理者はメンバーを招待したりキックしたりすることができます。メンバーは、チームを退会することができます。", + "home_support": "

開発チームは、ユーザーのデータを使って金銭上の利益を得ることはありません。これはプライバシーを尊重するオンラインサービスの展望の一部をなすものです。個人情報を使って金銭上の利益をあげながら「無料」を装う巨大プラットフォームとは違って、CryptPadは、ユーザーが自発的に支援を行うサービスのモデルを作ることを目指しています。

Open Collectiveから、一度もしくは継続的な寄付を行い、プロジェクトを支援していただくことができます。予算には透明性があり、更新については定期的に報告を行っています。お金によらずに貢献する方法も数多くあります。

", + "form_default": "ここに質問を入力", + "form_poll_switch": "行と列を入れ替える", + "settings_kanbanTagsHint": "複数のタグを選択したときにタグフィルターがどのように機能するかについて、「かつ」もしくは「または」から選択できます。「かつ」を選択すると、選択したタグを全て含むカードのみを表示し、「または」を選択すると、選択したタグのいずれかを含むカードを表示します。", + "notifications_cat_pads": "共有に関する通知", + "form_type_multicheck": "チェックボックス式グリッド", + "form_type_multiradio": "選択式グリッド", + "form_type_sort": "番号付きリスト", + "safeLinks_error": "このリンクはブラウザーのアドレスバーからコピーされており、ドキュメントにアクセスすることはできません。 共有メニューを使って、連絡先と直接ドキュメントを共有するか、リンクをコピーしてください。セーフリンク機能についてはこちらよりご確認ください。", + "team_cat_general": "チームについて", + "team_ownerConfirm": "共同オーナーはチームを変更もしくは削除したり、あなたをオーナーから削除したりすることができます。続行してよろしいですか?", + "owner_request_accepted": "{0}はあなたのリクエストを承諾し、「{1}」のオーナーになりました", + "team_acceptInvitation": "{0}がチーム「{1}」への招待を承諾しました", + "team_declineInvitation": "{0}がチーム「{1}」への招待を拒否しました", + "team_inviteLinkWarning": "このリンクにアクセスする最初の人は、このチームに参加して、コンテンツを閲覧することができます。リンクは慎重に共有してください。", + "team_inviteLinkTitle": "このチームへの招待状を好みに合わせて作成", + "team_inviteLinkTempName": "一時的な名前(招待の保留中リストに表示)", + "team_inviteLinkNoteMsg": "このメッセージは、チームに参加するかどうかを決める前に表示されます。", + "owner_removedPending": "{0}は「{1}」に関するオーナー権の申し出をキャンセルしました", + "team_pendingOwnerTitle": "この管理者はオーナー権の申し出を受諾していません。", + "team_rosterPromoteOwner": "オーナー権を提供", + "owner_removed": "{0}は「{1}」に関するあなたのオーナー権を削除しました", + "owner_request_declined": "{0}は「{1}」のオーナーになる依頼を拒否しました", + "team_demoteMeConfirm": "オーナー権を放棄しようとしています。これは取り消せません。よろしいですか?", + "share_noContactsNotLoggedIn": "ログインもしくは新規登録して、連絡先を確認するか新たに追加してください。", + "passwordFaqLink": "パスワードについて確認", + "share_embedPasswordAlert": "この項目はパスワードで保護されています。このパッドを埋め込む際、閲覧にはパスワードの入力が必要となります。", + "share_contactPasswordAlert": "この項目はパスワードで保護されています。CryptPadの連絡先と共有するため、相手がパスワードを入力する必要はありません。", + "share_linkPasswordAlert": "この項目はパスワードで保護されています。リンクを受け取った相手はパスワードを入力する必要があります。", + "register_notes_title": "重要な注意事項" } From 0bb4f0fc3dd1a7c932e363efa31d8799a01364a7 Mon Sep 17 00:00:00 2001 From: ansuz Date: Thu, 1 Jul 2021 11:46:56 +0530 Subject: [PATCH 16/33] set a generic documentation link in translations to be properly set and localized in the code --- www/common/drive-ui.js | 9 ++++++++- www/common/translations/messages.de.json | 2 +- www/common/translations/messages.es.json | 2 +- www/common/translations/messages.fi.json | 2 +- www/common/translations/messages.fr.json | 2 +- www/common/translations/messages.ja.json | 2 +- www/common/translations/messages.json | 2 +- www/common/translations/messages.nl.json | 2 +- www/common/translations/messages.pt-br.json | 2 +- www/common/translations/messages.zh.json | 2 +- 10 files changed, 17 insertions(+), 10 deletions(-) diff --git a/www/common/drive-ui.js b/www/common/drive-ui.js index a145ab23b..4a75459a5 100644 --- a/www/common/drive-ui.js +++ b/www/common/drive-ui.js @@ -2401,7 +2401,14 @@ define([ } if (!APP.loggedIn) { msg = APP.newSharedFolder ? Messages.fm_info_sharedFolder : Messages._getKey('fm_info_anonymous', [ApiConfig.inactiveTime || 90]); - return $(common.fixLinks($box.html(msg))); + var docsLink = 'https://docs.cryptpad.fr/en/user_guide/user_account.html#account-types'; + $box.html(msg).find('a[href="#docs"]').each(function () { + $(this).attr({ + href: Pages.localizeDocsLink(docsLink), + target: '_blank', + }); + }); + return $(common.fixLinks($box)); } if (!msg || APP.store['hide-info-' + path[0]] === '1') { $box.hide(); diff --git a/www/common/translations/messages.de.json b/www/common/translations/messages.de.json index 866f7f6ea..6c2e6695c 100644 --- a/www/common/translations/messages.de.json +++ b/www/common/translations/messages.de.json @@ -279,7 +279,7 @@ "fm_info_template": "Hier sind alle Dokumente enthalten, die als Vorlage gespeichert wurden und die du wiederverwenden kannst, um ein neues Pad zu erstellen.", "fm_info_recent": "Diese Pads wurden kürzlich von dir oder von Personen, mit denen du zusammenarbeitest, geöffnet oder geändert.", "fm_info_trash": "Leere den Papierkorb, um mehr freien Platz in deinem CryptDrive zu erhalten.", - "fm_info_anonymous": "Du bist nicht eingeloggt, daher laufen deine Dokumente nach {0} Tagen aus. Sie könnten durch Löschen des Browserverlaufs verloren gehen.
Registriere dich (keine persönlichen Informationen benötigt) oder logge dich ein, um sie dauerhaft in deinem Drive zu speichern. Mehr zu registrierten Accounts.", + "fm_info_anonymous": "Du bist nicht eingeloggt, daher laufen deine Dokumente nach {0} Tagen aus. Sie könnten durch Löschen des Browserverlaufs verloren gehen.
Registriere dich (keine persönlichen Informationen benötigt) oder logge dich ein, um sie dauerhaft in deinem Drive zu speichern. Mehr zu registrierten Accounts.", "fm_info_sharedFolder": "Dieser Ordner ist geteilt. Da du aber nicht eingeloggt bist, hast du nur einen schreibgeschützen Zugriff.
Registriere oder logge ich ein, damit du diesen Ordner in dein CryptDrive importieren und bearbeiten kannst.", "fm_info_owned": "Diese Pads sind deine eigenen. Das heißt, dass du sie jederzeit vom Server entfernen kannst. Wenn du das machst, sind sie auch für andere Nutzer nicht mehr zugänglich.", "fm_error_cantPin": "Interner Serverfehler. Bitte lade die Seite neu und versuche es erneut.", diff --git a/www/common/translations/messages.es.json b/www/common/translations/messages.es.json index 59b0b16db..34b53ef47 100644 --- a/www/common/translations/messages.es.json +++ b/www/common/translations/messages.es.json @@ -216,7 +216,7 @@ "upload_success": "Tu archivo ({0}) ha sido subido con éxito y fue añadido a tu drive.", "pinLimitReachedAlertNoAccounts": "Has llegado a tu límite de espacio", "previewButtonTitle": "Mostrar/esconder la vista previa Markdown", - "fm_info_anonymous": "No has iniciado sesión, por lo que tus documentos expirarán después de {0} días. Borrar el historial de tu navegador puede hacer que desaparezcan.
Inscríbete (no se requieren datos personales) o Ingresa para almacenarlos en tu disco de forma indefinida. Más información sobre las cuentas registradas.", + "fm_info_anonymous": "No has iniciado sesión, por lo que tus documentos expirarán después de {0} días. Borrar el historial de tu navegador puede hacer que desaparezcan.
Inscríbete (no se requieren datos personales) o Ingresa para almacenarlos en tu disco de forma indefinida. Más información sobre las cuentas registradas.", "fm_error_cantPin": "Error del servidor. Por favor, recarga la página e inténtalo de nuevo.", "upload_notEnoughSpace": "No tienes suficiente espacio para este archivo en tu CryptDrive", "upload_tooLarge": "Este archivo supera el límite de carga permitido por tu cuenta.", diff --git a/www/common/translations/messages.fi.json b/www/common/translations/messages.fi.json index 3d6172c14..960853bc8 100644 --- a/www/common/translations/messages.fi.json +++ b/www/common/translations/messages.fi.json @@ -287,7 +287,7 @@ "fm_info_template": "Sisältää kaikki mallipohjiksi tallennetut padit, joita voit käyttää uudelleen luodessasi uuden padin.", "fm_info_recent": "Tässä näytetään sinun tai yhteistyökumppaniesi äskettäin avaamat tai muokkaamat padit.", "fm_info_trash": "Tyhjennä roskakorisi vapauttaaksesi CryptDrive-tallennustilaa.", - "fm_info_anonymous": "Et ole kirjautunut sisään, joten luomasi asiakirjat vanhenevat {0} päivän päästä. Selaushistorian tyhjentäminen saattaa myös hävittää ne.
Rekisteröidy (henkilötietoja ei tarvita) tai kirjaudu sisään säilyttääksesi luomasi asiakirjat pysyvästi CryptDrivessa. Lue lisää rekisteröitymisestä ja käyttäjätileistä.", + "fm_info_anonymous": "Et ole kirjautunut sisään, joten luomasi asiakirjat vanhenevat {0} päivän päästä. Selaushistorian tyhjentäminen saattaa myös hävittää ne.
Rekisteröidy (henkilötietoja ei tarvita) tai kirjaudu sisään säilyttääksesi luomasi asiakirjat pysyvästi CryptDrivessa. Lue lisää rekisteröitymisestä ja käyttäjätileistä.", "fm_info_sharedFolder": "Tämä on jaettu kansio. Et ole kirjautunut sisään, joten voit käyttää sitä ainoastaan vain luku-tilassa.
Rekisteröidy tai kirjaudu sisään tuodaksesi kansion omaan CryptDriveesi ja muokataksesi sen sisältöä.", "fm_info_owned": "Omistat tässä näytetyt padit. Se tarkoittaa, että voit halutessasi poistaa ne palvelimelta. Jos teet niin, muut käyttäjät eivät voi enää käyttää niitä.", "fm_error_cantPin": "Sisäinen palvelinvirhe. Ole hyvä ja lataa sivu uudelleen.", diff --git a/www/common/translations/messages.fr.json b/www/common/translations/messages.fr.json index 2193de407..563b89ade 100644 --- a/www/common/translations/messages.fr.json +++ b/www/common/translations/messages.fr.json @@ -283,7 +283,7 @@ "fm_info_template": "Contient tous les fichiers que vous avez sauvés en tant que modèle afin de les réutiliser lors de la création d'un nouveau pad.", "fm_info_recent": "Ces pads ont été récemment ouverts ou modifiés par vous ou vos collaborateurs.", "fm_info_trash": "Vider la corbeille permet de libérer de l'espace dans votre CryptDrive.", - "fm_info_anonymous": "Vous n'êtes pas connecté, ces documents seront donc supprimés après {0} jours. Nettoyer l'historique de votre navigateur peut les faire disparaître.
Enregistrez vous (aucune information personelle requise) ou Connectez vous pour les stocker de manière permanente dans votre drive. En lire plus sur les comptes utilisateurs.", + "fm_info_anonymous": "Vous n'êtes pas connecté, ces documents seront donc supprimés après {0} jours. Nettoyer l'historique de votre navigateur peut les faire disparaître.
Enregistrez vous (aucune information personelle requise) ou Connectez vous pour les stocker de manière permanente dans votre drive. En lire plus sur les comptes utilisateurs.", "fm_info_sharedFolder": "Voici le contenu d'un dossier partagé. Il n'est accessible qu'en lecture seule car vous n'êtes pas connecté.
Inscrivez-vous ou connectez-vous pour pouvoir l'importer dans votre CryptDrive et le modifier.", "fm_info_owned": "Vous êtes propriétaire des pads affichés dans cette catégorie. Cela signifie que vous pouvez choisir de les supprimer définitivement du serveur à n'importe quel moment. Ils seront alors inaccessibles pour tous les autres utilisateurs.", "fm_error_cantPin": "Erreur interne du serveur. Veuillez recharger la page et essayer de nouveau.", diff --git a/www/common/translations/messages.ja.json b/www/common/translations/messages.ja.json index 5159c5859..3343d8873 100644 --- a/www/common/translations/messages.ja.json +++ b/www/common/translations/messages.ja.json @@ -952,7 +952,7 @@ "settings_export_reading": "CryptDriveを読み込んでいます…", "settings_exportCancel": "エクスポートをキャンセルしてよろしいでしょうか?次のエクスポートでは最初からやりなおす必要があります。", "fm_error_cantPin": "内部サーバーエラー。ページを再度読み込んでください。", - "fm_info_anonymous": "ログインしていないため、ドキュメントは{0}日後に期限切れになります。また、ブラウザの履歴を消去するとファイルが削除される恐れがあります。
ファイルを永続的に保存するには、登録するか(個人情報の登録は不要です)ログインしてください。登録アカウントについては、こちらを参照してください。", + "fm_info_anonymous": "ログインしていないため、ドキュメントは{0}日後に期限切れになります。また、ブラウザの履歴を消去するとファイルが削除される恐れがあります。
ファイルを永続的に保存するには、登録するか(個人情報の登録は不要です)ログインしてください。登録アカウントについては、こちらを参照してください。", "fm_info_recent": "あなたか共同編集者が最近開いた、もしくは編集したパッドの一覧です。", "fm_info_template": "テンプレートとして保存したパッドの一覧です。以下のテンプレートを使って、新しいパッドを作成することができます。", "fm_categoryError": "選択したカテゴリーが開けません。ルートを表示します。", diff --git a/www/common/translations/messages.json b/www/common/translations/messages.json index f61659809..4573aa665 100644 --- a/www/common/translations/messages.json +++ b/www/common/translations/messages.json @@ -287,7 +287,7 @@ "fm_info_template": "Contains all the pads stored as templates and that you can re-use when you create a new pad.", "fm_info_recent": "These pads have recently been opened or modified by you or people you collaborate with.", "fm_info_trash": "Empty your trash to free space in your CryptDrive.", - "fm_info_anonymous": "You are not logged in so your documents will expire after {0} days. Clearing your browser's history may make them disappear.
Sign up (no personal information required) or Log in to store them in your drive indefinitely. Read more about registered accounts.", + "fm_info_anonymous": "You are not logged in so your documents will expire after {0} days. Clearing your browser's history may make them disappear.
Sign up (no personal information required) or Log in to store them in your drive indefinitely. Read more about registered accounts.", "fm_info_sharedFolder": "This is a shared folder. You're not logged in so you can only access it in read-only mode.
Sign up or Log in to be able to import it to your CryptDrive and to modify it.", "fm_info_owned": "You are the owner of the pads displayed here. This means you can remove them permanently from the server whenever you want. If you do so, other users won't be able to access them anymore.", "fm_error_cantPin": "Internal server error. Please reload the page and try again.", diff --git a/www/common/translations/messages.nl.json b/www/common/translations/messages.nl.json index d9933fef6..393b91a05 100644 --- a/www/common/translations/messages.nl.json +++ b/www/common/translations/messages.nl.json @@ -414,7 +414,7 @@ "fm_viewListButton": "Lijstweergave", "fm_info_owned": "U bent de eigenaar van de werkomgevingen die hier zijn weergegeven. Dit betekent dat u ze voorgoed van de server kunt verwijderen. Als u dat doet, zijn ze niet meer toegankelijk voor andere gebruikers.", "fm_info_sharedFolder": "Dit is een gedeelde map. U bent niet ingelogd, dus u kunt de inhoud alleen lezen. U kunt zich
registreren of inloggen om het in uw CryptDrive te importeren en het te wijzigen.", - "fm_info_anonymous": "U bent niet ingelogd, dus uw documenten zullen verlopen na {0} dagen. Ze kunnen ook verdwijnen als uw browsergeschiedenis gewist wordt.
Registreren (geen persoonlijke gegevens vereist) of Inloggen om ze voor altijd in uw drive op te slaan. Lees meer over geregistreerde accounts.", + "fm_info_anonymous": "U bent niet ingelogd, dus uw documenten zullen verlopen na {0} dagen. Ze kunnen ook verdwijnen als uw browsergeschiedenis gewist wordt.
Registreren (geen persoonlijke gegevens vereist) of Inloggen om ze voor altijd in uw drive op te slaan. Lees meer over geregistreerde accounts.", "fm_info_trash": "Leeg uw prullenbak om opslagruimte vrij te maken in uw CryptDrive.", "fm_info_recent": "Deze werkomgevingen zijn onlangs geopend of gewijzigd door u of door mensen met wie u samenwerkt.", "fm_info_template": "Dit bevat alle werkomgevingen die zijn opgeslagen als sjablonen en die je kunt gebruiken voor een nieuwe werkomgeving.", diff --git a/www/common/translations/messages.pt-br.json b/www/common/translations/messages.pt-br.json index 2a2f3dcd8..971bf959a 100644 --- a/www/common/translations/messages.pt-br.json +++ b/www/common/translations/messages.pt-br.json @@ -138,7 +138,7 @@ "fm_categoryError": "Incapaz de abrir a categoria selecionada, Exibindo diretório raiz", "fm_info_root": "Crie quantos diretórios aninhados aqui desejar para organizar seus arquivos..", "fm_info_trash": "Empty your trash to free space in your CryptDrive.", - "fm_info_anonymous": "Você não está logado, então estes documentos vão expirar em {0} dias. Limpar o histórico do seu navegador pode fazê-los desaparecer.
Registre-se (nenhuma informação pessoal será requerida) ou Faça login para guarda-lo no seu disco. Leia mais sobre contas registradas.", + "fm_info_anonymous": "Você não está logado, então estes documentos vão expirar em {0} dias. Limpar o histórico do seu navegador pode fazê-los desaparecer.
Registre-se (nenhuma informação pessoal será requerida) ou Faça login para guarda-lo no seu disco. Leia mais sobre contas registradas.", "fm_error_cantPin": "Erro interno do servidor. Por favor recarregue a página e tente novamente.", "fc_newfolder": "Nova pasta", "fc_rename": "Renomear", diff --git a/www/common/translations/messages.zh.json b/www/common/translations/messages.zh.json index 814d92cb3..49331f9a5 100644 --- a/www/common/translations/messages.zh.json +++ b/www/common/translations/messages.zh.json @@ -139,7 +139,7 @@ "fm_info_root": "在此建立任何巢狀目錄夾以便於整理分類你的檔案。", "fm_info_template": "包含所有工作檔案已存成模版,便於讓你在建立新工作檔案時套用。", "fm_info_trash": "清空垃圾筒好讓 CryptDrive 多出一些空間", - "fm_info_anonymous": "您没有登录,所以您的文档将在{0}天后过期。清除你的浏览器历史记录可能会使它们消失。
注册 (无需个人信息) 或登录以无限期地把它们储存在你的硬盘里。 阅读更多关于注册帐户。", + "fm_info_anonymous": "您没有登录,所以您的文档将在{0}天后过期。清除你的浏览器历史记录可能会使它们消失。
注册 (无需个人信息) 或登录以无限期地把它们储存在你的硬盘里。 阅读更多关于注册帐户。", "fm_error_cantPin": "內部伺服器出錯,請重新載入本頁並再試一次。", "fc_newfolder": "新資料夾", "fc_rename": "重新命名", From 17adbc27bf124e5170425bd76755bcf107929dbd Mon Sep 17 00:00:00 2001 From: ansuz Date: Thu, 1 Jul 2021 12:46:43 +0530 Subject: [PATCH 17/33] remove blog link from out-of-date translations --- www/common/translations/messages.ca.json | 2 +- www/common/translations/messages.el.json | 2 +- www/common/translations/messages.it.json | 2 +- www/common/translations/messages.ro.json | 2 +- www/common/translations/messages.ru.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/www/common/translations/messages.ca.json b/www/common/translations/messages.ca.json index ad8254798..0132646a2 100644 --- a/www/common/translations/messages.ca.json +++ b/www/common/translations/messages.ca.json @@ -282,7 +282,7 @@ "fm_info_template": "Conté tots els documents desats com plantilles i que podeu reutilitzar quan vulgueu crear un nou document.", "fm_info_recent": "Aquests documents s'han modificat o obert darrerament, per vós o per alguna persona col·laboradora.", "fm_info_trash": "Buideu la paperera per alliberar espai al vostre CryptDrive.", - "fm_info_anonymous": "No heu iniciat la sessió, per tant, els vostres documents caducaran d'aquí a 3 mesos (saber-ne més). Es desen al vostre navegador, per tant, si netegeu el vostre historial podríeu perdre'ls.
Registreu-vos o Inicieu la sessió per mantenir-los accessibles.
", + "fm_info_anonymous": "No heu iniciat la sessió, per tant, els vostres documents caducaran d'aquí a 3 mesos. Es desen al vostre navegador, per tant, si netegeu el vostre historial podríeu perdre'ls.
Registreu-vos o Inicieu la sessió per mantenir-los accessibles.
", "fm_info_sharedFolder": "Aquesta és una carpeta compartida. No heu iniciat cap sessió, pel que només podeu accedir en mode només de lectura.
Registreu-vos o Inicieu la sessió per poder importar-ho al vostre CryptDrive i modificar-ho.", "fm_info_owned": "Es documents que es mostren són de la vostra propietat. Això vol dir que podeu eliminar-los permanentment del servidor quan vulgueu. Si ho feu, la resta de persones no podran accedir-hi mai més.", "fm_error_cantPin": "Error intern del servidor. Si us plau, torneu a garregar la pàgina i torneu a provar-ho.", diff --git a/www/common/translations/messages.el.json b/www/common/translations/messages.el.json index 67c2e30a8..7bbcaf861 100644 --- a/www/common/translations/messages.el.json +++ b/www/common/translations/messages.el.json @@ -224,7 +224,7 @@ "fm_info_template": "Περιέχει όλα τα pads που έχουν αποθηκευτεί ως πρότυπα και μπορείτε να ξαναχρησιμοποιήσετε όταν δημιουργείτε ένα νέο pad.", "fm_info_recent": "Λίστα των πρόσφατα τροποποιημένων ή ανοιγμένων pads.", "fm_info_trash": "Αδειάστε τον κάδο σας για να απελευθερώσετε χώρο στο CryptDrive σας.", - "fm_info_anonymous": "Δεν έχετε συνδεθεί, οπότε τα pads σας θα διαγραφούν μετά από 3 μήνες (μάθετε περισσότερα). Εγγραφείτε ή Συνδεθείτε για να τα κρατήσετε επ' αόριστον.", + "fm_info_anonymous": "Δεν έχετε συνδεθεί, οπότε τα pads σας θα διαγραφούν μετά από 3 μήνες. Εγγραφείτε ή Συνδεθείτε για να τα κρατήσετε επ' αόριστον.", "fm_error_cantPin": "Εσωτερικό σφάλμα διακομιστή. Παρακαλούμε επαναφορτώστε τη σελίδα και προσπαθήστε ξανά.", "fm_viewListButton": "Προβολή λίστας", "fm_viewGridButton": "Προβολή πλέγματος", diff --git a/www/common/translations/messages.it.json b/www/common/translations/messages.it.json index 2910e0ce2..5cade40ab 100644 --- a/www/common/translations/messages.it.json +++ b/www/common/translations/messages.it.json @@ -282,7 +282,7 @@ "fm_info_template": "Contiene tutti i pad salvati come modelli e che puoi riutilizzare per creare nuovi pad.", "fm_info_recent": "Questi pad sono stati recentemente aperti o modificati da te o da persone con le quali tu collabori.", "fm_info_trash": "Svuota il tuo cestino per liberare spazio nel tuo CryptDrive.", - "fm_info_anonymous": "Non hai effettuato l'accesso, quindi i tuoi pad scadranno fra tre mesi (scopri di più). Sono conservati nel tuo browser, quindi cancellando la cronologia potresti farli scomparire.
Registrati o Accedi per conservarli permanentemente.
", + "fm_info_anonymous": "Non hai effettuato l'accesso, quindi i tuoi pad scadranno fra tre mesi. Sono conservati nel tuo browser, quindi cancellando la cronologia potresti farli scomparire.
Registrati o Accedi per conservarli permanentemente.
", "fm_info_sharedFolder": "Questa è una cartella condivisa. Non hai effettuato l'accesso, quindi puoi visualizzarla solo in modalità di sola lettura.
Registrati o Accedi per poterla importare nel tuo CryptDrive e per modificarla.", "fm_info_owned": "Sei il proprietario dei pad mostrati qui. Questo significa che puoi rimuoverli permanentemente dal server quando lo desideri. Se lo fai, gli altri utenti non potranno più accedervi.", "fm_error_cantPin": "Errore interno del server. Ricarica la pagina e prova di nuovo.", diff --git a/www/common/translations/messages.ro.json b/www/common/translations/messages.ro.json index 0125606ae..0c0fe1f0e 100644 --- a/www/common/translations/messages.ro.json +++ b/www/common/translations/messages.ro.json @@ -118,7 +118,7 @@ "fm_info_root": "Crează câte foldere tip cuib ai nevoie pentru a-ți sorta fișierele.", "fm_info_template": "Conține toate pad-urile stocate ca șabloane și pe care le poți refolosi atunci când creezi un nou pad.", "fm_info_trash": "Fișierele șterse din gunoi vor fi șterse și din \"Toate fișierele\", făcând imposibilă recuperarea fișierelor din managerul de fișiere.", - "fm_info_anonymous": "Nu ești logat cu un cont valid așa că aceste pad-uri vor fi șterse (află de ce). Înscrie-te sau Loghează-te pentru a le salva.", + "fm_info_anonymous": "Nu ești logat cu un cont valid așa că aceste pad-uri vor fi șterse. Înscrie-te sau Loghează-te pentru a le salva.", "fc_newfolder": "Folder nou", "fc_rename": "Redenumește", "fc_open": "Deschide", diff --git a/www/common/translations/messages.ru.json b/www/common/translations/messages.ru.json index 8f08c3f0d..a46232761 100644 --- a/www/common/translations/messages.ru.json +++ b/www/common/translations/messages.ru.json @@ -299,7 +299,7 @@ "printCSS": "Пользовательские настройки вида (CSS):", "viewEmbedTag": "Чтобы встроить данный документ, вставьте iframe в нужную страницу. Вы можете настроить внешний вид используя CSS и HTML атрибуты.", "fm_ownedPadsName": "Собственный", - "fm_info_anonymous": "Вы не вошли в учетную запись, поэтому срок действия ваших пэдов истечет через 3 месяца (find out more). Они хранятся в вашем браузере, поэтому очистка истории может привести к их исчезновению..
Sign up or Log in to keep them alive.
", + "fm_info_anonymous": "Вы не вошли в учетную запись, поэтому срок действия ваших пэдов истечет через 3 месяца. Они хранятся в вашем браузере, поэтому очистка истории может привести к их исчезновению..
Sign up or Log in to keep them alive.", "fm_burnThisDriveButton": "Удалить всю информацию, хранящуюся от CryptPad в браузере", "fm_tags_used": "Количество использований", "fm_restoreDrive": "Восстановление прежнего состояния диска. Для достижения наилучших результатов не вносите изменения в диск, пока этот процесс не будет завершен.", From 575269e5a1fbcc7d5b96e47f7ca50ad77905326e Mon Sep 17 00:00:00 2001 From: ansuz Date: Thu, 1 Jul 2021 13:08:35 +0530 Subject: [PATCH 18/33] use a standard function for creating basic media-tags --- www/code/inner.js | 2 +- www/common/common-interface.js | 9 +++++++++ www/common/diffMarked.js | 1 - www/common/inner/common-mediatag.js | 5 ++--- www/common/sframe-app-framework.js | 4 ++-- www/common/sframe-common.js | 3 +-- www/kanban/inner.js | 2 +- www/poll/inner.js | 4 ++-- www/slide/inner.js | 2 +- 9 files changed, 19 insertions(+), 13 deletions(-) diff --git a/www/code/inner.js b/www/code/inner.js index d74513035..785e82788 100644 --- a/www/code/inner.js +++ b/www/code/inner.js @@ -507,7 +507,7 @@ define([ var fileHost = privateData.fileHost || privateData.origin; var src = fileHost + Hash.getBlobPathFromHex(secret.channel); var key = Hash.encodeBase64(secret.keys.cryptKey); - var mt = ''; + var mt = UI.mediaTag(src, key).outerHTML; editor.replaceSelection(mt); } }; diff --git a/www/common/common-interface.js b/www/common/common-interface.js index 9bdf9ec7a..4d3520426 100644 --- a/www/common/common-interface.js +++ b/www/common/common-interface.js @@ -41,6 +41,15 @@ define([ return e; }; + // FIXME almost everywhere this is used would also be + // a good candidate for sframe-common's getMediatagFromHref + UI.mediaTag = function (src, key) { + return h('media-tag', { + src: src, + 'data-crypto-key': 'cryptpad:' + key, + }); + }; + var findCancelButton = UI.findCancelButton = function (root) { if (root) { return $(root).find('button.cancel').last(); diff --git a/www/common/diffMarked.js b/www/common/diffMarked.js index d7c476a90..52a8cf0a1 100644 --- a/www/common/diffMarked.js +++ b/www/common/diffMarked.js @@ -676,7 +676,6 @@ define([ if (el.childNodes.length === 1 && el.childNodes[0].nodeType === 3) { var type = el.getAttribute('data-plugin'); var plugin = plugins[type]; - console.log(type); if (!plugin) { return; } var src = canonicalizeMermaidSource(el.childNodes[0].wholeText); el.setAttribute(plugin.attr, src); diff --git a/www/common/inner/common-mediatag.js b/www/common/inner/common-mediatag.js index 966724fa1..b8550fcac 100644 --- a/www/common/inner/common-mediatag.js +++ b/www/common/inner/common-mediatag.js @@ -127,9 +127,8 @@ define([ if (e || !data) { return void displayDefault(); } if (typeof data !== "number") { return void displayDefault(); } if (Util.bytesToMegabytes(data) > 0.5) { return void displayDefault(); } - var $img = $('').appendTo($container); - $img.attr('src', src); - $img.attr('data-crypto-key', 'cryptpad:' + cryptKey); + var mt = UI.mediaTag(src, cryptKey); + var $img = $(mt).appendTo($container); MT.displayMediatagImage(common, $img, function (err, $image) { if (err) { return void console.error(err); } centerImage($img, $image); diff --git a/www/common/sframe-app-framework.js b/www/common/sframe-app-framework.js index 796640f6d..0fd250f80 100644 --- a/www/common/sframe-app-framework.js +++ b/www/common/sframe-app-framework.js @@ -748,8 +748,8 @@ define([ var privateDat = cpNfInner.metadataMgr.getPrivateData(); var origin = privateDat.fileHost || privateDat.origin; var src = data.src = data.src.slice(0,1) === '/' ? origin + data.src : data.src; - mediaTagEmbedder($(''), data); + var mt = UI.mediaTag(src, data.key); + mediaTagEmbedder($(mt), data); }); }).appendTo(toolbar.$bottomL).hide(); }; diff --git a/www/common/sframe-common.js b/www/common/sframe-common.js index 3fd4869d1..5d3738cbb 100644 --- a/www/common/sframe-common.js +++ b/www/common/sframe-common.js @@ -145,8 +145,7 @@ define([ var hexFileName = secret.channel; var origin = data.fileHost || data.origin; var src = origin + Hash.getBlobPathFromHex(hexFileName); - return '' + - ''; + return UI.mediaTag(src, key).outerHTML; } return; }; diff --git a/www/kanban/inner.js b/www/kanban/inner.js index 8eb090ffc..4832adcca 100644 --- a/www/kanban/inner.js +++ b/www/kanban/inner.js @@ -289,7 +289,7 @@ define([ var fileHost = privateData.fileHost || privateData.origin; var src = fileHost + Hash.getBlobPathFromHex(secret.channel); var key = Hash.encodeBase64(secret.keys.cryptKey); - var mt = ''; + var mt = UI.mediaTag(src, key).outerHTML; editor.replaceSelection(mt); } }; diff --git a/www/poll/inner.js b/www/poll/inner.js index 6d4e0590e..53faea7e9 100644 --- a/www/poll/inner.js +++ b/www/poll/inner.js @@ -955,7 +955,7 @@ define([ var fileHost = privateData.fileHost || privateData.origin; var src = fileHost + Hash.getBlobPathFromHex(secret.channel); var key = Hash.encodeBase64(secret.keys.cryptKey); - var mt = ''; + var mt = UI.mediaTag(src, key).outerHTML; APP.editor.replaceSelection(mt); } }; @@ -1235,7 +1235,7 @@ define([ common.openFilePicker(pickerCfg, function (data) { if (data.type === 'file' && APP.editor) { common.setPadAttribute('atime', +new Date(), null, data.href); - var mt = ''; + var mt = UI.mediaTag(data.src, data.key).outerHTML; APP.editor.replaceSelection(mt); return; } diff --git a/www/slide/inner.js b/www/slide/inner.js index 3eb1435ed..e40bd6d79 100644 --- a/www/slide/inner.js +++ b/www/slide/inner.js @@ -556,7 +556,7 @@ define([ var fileHost = privateData.fileHost || privateData.origin; var src = fileHost + Hash.getBlobPathFromHex(secret.channel); var key = Hash.encodeBase64(secret.keys.cryptKey); - var mt = ''; + var mt = UI.mediaTag(src, key).outerHTML; editor.replaceSelection(mt); } }; From 7d634ab54b90a0e1efe28edb48dd13d17ee6038b Mon Sep 17 00:00:00 2001 From: ansuz Date: Thu, 1 Jul 2021 13:58:17 +0530 Subject: [PATCH 19/33] suppress 'convert' from new pad modal and make it easy to configure what's displayed via a list in appconfig --- www/common/application_config_internal.js | 6 ++++++ www/common/common-ui-elements.js | 10 ++-------- www/common/drive-ui.js | 1 + 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/www/common/application_config_internal.js b/www/common/application_config_internal.js index 68ba4ed06..971da32ee 100644 --- a/www/common/application_config_internal.js +++ b/www/common/application_config_internal.js @@ -22,6 +22,12 @@ define(function() { */ AppConfig.registeredOnlyTypes = ['file', 'contacts', 'notifications', 'support']; + // XXX to prevent apps that aren't officially supported from showing up + // in the document creation modal + AppConfig.hiddenTypes = ['drive', 'teams', 'contacts', 'todo', 'file', 'accounts', 'calendar', 'poll', 'convert', + //'doc', 'presentation' + ]; + /* CryptPad is available is multiple languages, but only English and French are maintained * by the developers. The other languages may be outdated, and any missing string for a langauge * will use the english version instead. You can customize the langauges you want to be available diff --git a/www/common/common-ui-elements.js b/www/common/common-ui-elements.js index 3e27b4ee7..a7ef39de6 100644 --- a/www/common/common-ui-elements.js +++ b/www/common/common-ui-elements.js @@ -2075,15 +2075,9 @@ define([ var $container = $('
'); var i = 0; + var types = AppConfig.availablePadTypes.filter(function (p) { - if (p === 'drive') { return; } - if (p === 'teams') { return; } - if (p === 'contacts') { return; } - if (p === 'todo') { return; } - if (p === 'file') { return; } - if (p === 'accounts') { return; } - if (p === 'calendar') { return; } - if (p === 'poll') { return; } // Replaced by forms + if (AppConfig.hiddenTypes.indexOf(p) !== -1) { return; } if (!common.isLoggedIn() && AppConfig.registeredOnlyTypes && AppConfig.registeredOnlyTypes.indexOf(p) !== -1) { return; } return true; diff --git a/www/common/drive-ui.js b/www/common/drive-ui.js index 4a75459a5..0db7018eb 100644 --- a/www/common/drive-ui.js +++ b/www/common/drive-ui.js @@ -3082,6 +3082,7 @@ define([ } // Pads getNewPadTypes().forEach(function (type) { + if (AppConfig.hiddenTypes.indexOf(type) !== -1) { return; } var $element = $('
  • ', { 'class': 'cp-app-drive-new-doc cp-app-drive-element-row ' + 'cp-app-drive-element-grid' From 899eef1ee87d7ddb013efba8f849c36ba9a1b0a8 Mon Sep 17 00:00:00 2001 From: ansuz Date: Thu, 1 Jul 2021 14:01:43 +0530 Subject: [PATCH 20/33] filter hidden types from a more sensible place in the drive --- www/common/drive-ui.js | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/www/common/drive-ui.js b/www/common/drive-ui.js index 0db7018eb..e079ad2b9 100644 --- a/www/common/drive-ui.js +++ b/www/common/drive-ui.js @@ -2571,14 +2571,7 @@ define([ var getNewPadTypes = function () { var arr = []; AppConfig.availablePadTypes.forEach(function (type) { - if (type === 'drive') { return; } - if (type === 'teams') { return; } - if (type === 'contacts') { return; } - if (type === 'todo') { return; } - if (type === 'file') { return; } - if (type === 'accounts') { return; } - if (type === 'calendar') { return; } - if (type === 'poll') { return; } // replaced by forms + if (AppConfig.hiddenTypes.indexOf(type) !== -1) { return; } if (!APP.loggedIn && AppConfig.registeredOnlyTypes && AppConfig.registeredOnlyTypes.indexOf(type) !== -1) { return; @@ -3082,7 +3075,6 @@ define([ } // Pads getNewPadTypes().forEach(function (type) { - if (AppConfig.hiddenTypes.indexOf(type) !== -1) { return; } var $element = $('
  • ', { 'class': 'cp-app-drive-new-doc cp-app-drive-element-row ' + 'cp-app-drive-element-grid' From 3b44c09bc4b0bfe4c9b7933142fd0f5c660cfeaf Mon Sep 17 00:00:00 2001 From: ansuz Date: Thu, 1 Jul 2021 16:42:09 +0530 Subject: [PATCH 21/33] check COOP headers for multiple endpoints and improve some error reporting in the checkup RPC --- docs/example.nginx.conf | 2 +- server.js | 2 +- www/checkup/main.js | 30 ++++++++++++++++++++++++++++++ www/checkup/sandbox/main.js | 12 +++++++++--- 4 files changed, 41 insertions(+), 5 deletions(-) diff --git a/docs/example.nginx.conf b/docs/example.nginx.conf index 29317ee27..8bc47d9f8 100644 --- a/docs/example.nginx.conf +++ b/docs/example.nginx.conf @@ -64,7 +64,7 @@ server { add_header Permissions-Policy interest-cohort=(); set $coop ''; - if ($uri ~ ^\/(sheet|presentation|doc)\/.*$) { set $coop 'same-origin'; } + if ($uri ~ ^\/(sheet|presentation|doc|convert)\/.*$) { set $coop 'same-origin'; } # Enable SharedArrayBuffer in Firefox (for .xlsx export) add_header Cross-Origin-Resource-Policy cross-origin; diff --git a/server.js b/server.js index 848167a98..3cea171c6 100644 --- a/server.js +++ b/server.js @@ -90,7 +90,7 @@ var setHeaders = (function () { return function (req, res) { // apply a bunch of cross-origin headers for XLSX export in FF and printing elsewhere applyHeaderMap(res, { - "Cross-Origin-Opener-Policy": /^\/sheet\//.test(req.url)? 'same-origin': '', + "Cross-Origin-Opener-Policy": /^\/(sheet|presentation|doc|convert)\//.test(req.url)? 'same-origin': '', }); if (Env.NO_SANDBOX) { // handles correct configuration for local development diff --git a/www/checkup/main.js b/www/checkup/main.js index 732197a2d..143d1709b 100644 --- a/www/checkup/main.js +++ b/www/checkup/main.js @@ -732,6 +732,36 @@ define([ cb(isHTTPS(trimmedUnsafe) && isHTTPS(trimmedSafe)); }); + + [ + 'sheet', + 'presentation', + 'doc', + 'convert', + ].forEach(function (url) { + assert(function (cb, msg) { + var header = 'cross-origin-opener-policy'; + var expected = 'same-origin'; + deferredPostMessage({ + command: 'GET_HEADER', + content: { + url: '/' + url + '/', + header: header, + } + }, function (content) { + msg.appendChild(h('span', [ + code(url), + ' was served without the correct ', + code(header), + ' HTTP header value (', + code(expected), + '). This will interfere with your ability to convert between office file formats.' + ])); + cb(content === expected); + }); + }); + }); + /* assert(function (cb, msg) { setWarningClass(msg); diff --git a/www/checkup/sandbox/main.js b/www/checkup/sandbox/main.js index 7ddfb07f8..e11aa1d52 100644 --- a/www/checkup/sandbox/main.js +++ b/www/checkup/sandbox/main.js @@ -27,12 +27,14 @@ define([ }; window.addEventListener("message", function (event) { + var txid, command; if (event && event.data) { try { //console.log(JSON.parse(event.data)); var msg = JSON.parse(event.data); - var command = msg.command; - var txid = msg.txid; + command = msg.command; + txid = msg.txid; + if (!txid) { return; } COMMANDS[command](msg.content, function (response) { // postMessage with same txid postMessage({ @@ -41,7 +43,11 @@ define([ }); }); } catch (err) { - console.error(err); + postMessage({ + txid: txid, + content: err, + }); + console.error(err, command); } } else { console.error(event); From 1c1dc421a324fd6c5b60a0aee8af97e8761fdbdd Mon Sep 17 00:00:00 2001 From: ansuz Date: Thu, 1 Jul 2021 16:44:40 +0530 Subject: [PATCH 22/33] fix broken block archival --- lib/commands/block.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/commands/block.js b/lib/commands/block.js index ea6a19dc2..195e0c494 100644 --- a/lib/commands/block.js +++ b/lib/commands/block.js @@ -167,7 +167,7 @@ Block.writeLoginBlock = function (Env, safeKey, msg, _cb) { }); }; -const DELETE_BLOCK = Nacl.util.decodeUTF8('DELETE_BLOCK'); +const DELETE_BLOCK = Nacl.util.encodeBase64(Nacl.util.decodeUTF8('DELETE_BLOCK')); /* When users write a block, they upload the block, and provide From 279db28e86e0c2cab14ab0e2a14153cc7774efa2 Mon Sep 17 00:00:00 2001 From: ansuz Date: Thu, 1 Jul 2021 18:44:35 +0530 Subject: [PATCH 23/33] start tracking the versions of our vendored software --- www/lib/changelog.md | 4 + www/lib/turndown.browser.umd.js | 135 ++++++++++++++++++-------------- 2 files changed, 80 insertions(+), 59 deletions(-) create mode 100644 www/lib/changelog.md diff --git a/www/lib/changelog.md b/www/lib/changelog.md new file mode 100644 index 000000000..86ef6ec22 --- /dev/null +++ b/www/lib/changelog.md @@ -0,0 +1,4 @@ +This file is intended to be used as a log of what third-party source we have vendored, where we got it, and what modifications we have made to it (if any). + +* [turndown v7.1.1](https://github.com/mixmark-io/turndown/releases/tag/v7.1.1) built from unmodified source as per its build scripts. + diff --git a/www/lib/turndown.browser.umd.js b/www/lib/turndown.browser.umd.js index 9b8c40d13..a812101ae 100644 --- a/www/lib/turndown.browser.umd.js +++ b/www/lib/turndown.browser.umd.js @@ -1,7 +1,7 @@ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, global.TurndownService = factory()); + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.TurndownService = factory()); }(this, (function () { 'use strict'; function extend (destination) { @@ -18,6 +18,17 @@ return Array(count + 1).join(character) } + function trimLeadingNewlines (string) { + return string.replace(/^\n*/, '') + } + + function trimTrailingNewlines (string) { + // avoid match-at-end regexp bottleneck, see #370 + var indexEnd = string.length; + while (indexEnd > 0 && string[indexEnd - 1] === '\n') indexEnd--; + return string.substring(0, indexEnd) + } + var blockElements = [ 'ADDRESS', 'ARTICLE', 'ASIDE', 'AUDIO', 'BLOCKQUOTE', 'BODY', 'CANVAS', 'CENTER', 'DD', 'DIR', 'DIV', 'DL', 'DT', 'FIELDSET', 'FIGCAPTION', 'FIGURE', @@ -303,19 +314,15 @@ }, replacement: function (content) { - if (!content.trim()) return '' + if (!content) return '' + content = content.replace(/\r?\n|\r/g, ' '); + var extraSpace = /^`|^ .*?[^ ].* $|`$/.test(content) ? ' ' : ''; var delimiter = '`'; - var leadingSpace = ''; - var trailingSpace = ''; - var matches = content.match(/`+/gm); - if (matches) { - if (/^`/.test(content)) leadingSpace = ' '; - if (/`$/.test(content)) trailingSpace = ' '; - while (matches.indexOf(delimiter) !== -1) delimiter = delimiter + '`'; - } + var matches = content.match(/`+/gm) || []; + while (matches.indexOf(delimiter) !== -1) delimiter = delimiter + '`'; - return delimiter + leadingSpace + content + trailingSpace + delimiter + return delimiter + extraSpace + content + extraSpace + delimiter } }; @@ -459,7 +466,7 @@ if (!element.firstChild || isPre(element)) return var prevText = null; - var prevVoid = false; + var keepLeadingWs = false; var prev = null; var node = next(prev, element, isPre); @@ -469,7 +476,7 @@ var text = node.data.replace(/[ \r\n\t]+/g, ' '); if ((!prevText || / $/.test(prevText.data)) && - !prevVoid && text[0] === ' ') { + !keepLeadingWs && text[0] === ' ') { text = text.substr(1); } @@ -489,11 +496,14 @@ } prevText = null; - prevVoid = false; - } else if (isVoid(node)) { - // Avoid trimming space around non-block, non-BR void elements. + keepLeadingWs = false; + } else if (isVoid(node) || isPre(node)) { + // Avoid trimming space around non-block, non-BR void elements and inline PRE. prevText = null; - prevVoid = true; + keepLeadingWs = true; + } else if (prevText) { + // Drop protection if set previously. + keepLeadingWs = false; } } else { node = remove(node); @@ -609,7 +619,7 @@ var HTMLParser = canParseHTMLNatively() ? root.DOMParser : createHTMLParser(); - function RootNode (input) { + function RootNode (input, options) { var root; if (typeof input === 'string') { var doc = htmlParser().parseFromString( @@ -626,7 +636,8 @@ collapseWhitespace({ element: root, isBlock: isBlock, - isVoid: isVoid + isVoid: isVoid, + isPre: options.preformattedCode ? isPreOrCode : null }); return root @@ -638,11 +649,15 @@ return _htmlParser } - function Node (node) { + function isPreOrCode (node) { + return node.nodeName === 'PRE' || node.nodeName === 'CODE' + } + + function Node (node, options) { node.isBlock = isBlock(node); - node.isCode = node.nodeName.toLowerCase() === 'code' || node.parentNode.isCode; + node.isCode = node.nodeName === 'CODE' || node.parentNode.isCode; node.isBlank = isBlank(node); - node.flankingWhitespace = flankingWhitespace(node); + node.flankingWhitespace = flankingWhitespace(node, options); return node } @@ -656,28 +671,39 @@ ) } - function flankingWhitespace (node) { - var leading = ''; - var trailing = ''; + function flankingWhitespace (node, options) { + if (node.isBlock || (options.preformattedCode && node.isCode)) { + return { leading: '', trailing: '' } + } - if (!node.isBlock) { - var hasLeading = /^\s/.test(node.textContent); - var hasTrailing = /\s$/.test(node.textContent); - var blankWithSpaces = node.isBlank && hasLeading && hasTrailing; + var edges = edgeWhitespace(node.textContent); - if (hasLeading && !isFlankedByWhitespace('left', node)) { - leading = ' '; - } + // abandon leading ASCII WS if left-flanked by ASCII WS + if (edges.leadingAscii && isFlankedByWhitespace('left', node, options)) { + edges.leading = edges.leadingNonAscii; + } - if (!blankWithSpaces && hasTrailing && !isFlankedByWhitespace('right', node)) { - trailing = ' '; - } + // abandon trailing ASCII WS if right-flanked by ASCII WS + if (edges.trailingAscii && isFlankedByWhitespace('right', node, options)) { + edges.trailing = edges.trailingNonAscii; } - return { leading: leading, trailing: trailing } + return { leading: edges.leading, trailing: edges.trailing } } - function isFlankedByWhitespace (side, node) { + function edgeWhitespace (string) { + var m = string.match(/^(([ \t\r\n]*)(\s*))[\s\S]*?((\s*?)([ \t\r\n]*))$/); + return { + leading: m[1], // whole string for whitespace-only strings + leadingAscii: m[2], + leadingNonAscii: m[3], + trailing: m[4], // empty for whitespace-only strings + trailingNonAscii: m[5], + trailingAscii: m[6] + } + } + + function isFlankedByWhitespace (side, node, options) { var sibling; var regExp; var isFlanked; @@ -693,6 +719,8 @@ if (sibling) { if (sibling.nodeType === 3) { isFlanked = regExp.test(sibling.nodeValue); + } else if (options.preformattedCode && sibling.nodeName === 'CODE') { + isFlanked = false; } else if (sibling.nodeType === 1 && !isBlock(sibling)) { isFlanked = regExp.test(sibling.textContent); } @@ -701,8 +729,6 @@ } var reduce = Array.prototype.reduce; - var leadingNewLinesRegExp = /^\n*/; - var trailingNewLinesRegExp = /\n*$/; var escapes = [ [/\\/g, '\\\\'], [/\*/g, '\\*'], @@ -734,6 +760,7 @@ linkStyle: 'inlined', linkReferenceStyle: 'full', br: ' ', + preformattedCode: false, blankReplacement: function (content, node) { return node.isBlock ? '\n\n' : '' }, @@ -766,7 +793,7 @@ if (input === '') return '' - var output = process.call(this, new RootNode(input)); + var output = process.call(this, new RootNode(input, this.options)); return postProcess.call(this, output) }, @@ -855,7 +882,7 @@ function process (parentNode) { var self = this; return reduce.call(parentNode.childNodes, function (output, node) { - node = new Node(node); + node = new Node(node, self.options); var replacement = ''; if (node.nodeType === 3) { @@ -908,31 +935,21 @@ } /** - * Determines the new lines between the current output and the replacement + * Joins replacement to the current output with appropriate number of new lines * @private * @param {String} output The current conversion output * @param {String} replacement The string to append to the output - * @returns The whitespace to separate the current output and the replacement + * @returns Joined output * @type String */ - function separatingNewlines (output, replacement) { - var newlines = [ - output.match(trailingNewLinesRegExp)[0], - replacement.match(leadingNewLinesRegExp)[0] - ].sort(); - var maxNewlines = newlines[newlines.length - 1]; - return maxNewlines.length < 2 ? maxNewlines : '\n\n' - } - - function join (string1, string2) { - var separator = separatingNewlines(string1, string2); - - // Remove trailing/leading newlines and replace with separator - string1 = string1.replace(trailingNewLinesRegExp, ''); - string2 = string2.replace(leadingNewLinesRegExp, ''); + function join (output, replacement) { + var s1 = trimTrailingNewlines(output); + var s2 = trimLeadingNewlines(replacement); + var nls = Math.max(output.length - s1.length, replacement.length - s2.length); + var separator = '\n\n'.substring(0, nls); - return string1 + separator + string2 + return s1 + separator + s2 } /** From eaf80b731728e33d511686421481988bf759ac6d Mon Sep 17 00:00:00 2001 From: ansuz Date: Thu, 1 Jul 2021 18:44:50 +0530 Subject: [PATCH 24/33] update changelog --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 18fd928a0..d74a37dc4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ * display actual FLoC header in checkup test * WIP check for `server_tokens` settings (needs work for HTTP2) * nicer output in error/warning tables + * more tests for Cross-Origin-Opener-Policy headers * form templates * guard against a type error in `getAccessKeys` * guard against invalid or malicious input when constructing media-tags for embedding in markdown @@ -26,7 +27,7 @@ * conversions * convert app * some basic office formats - * rich text => markdown + * rich text => markdown (via turndown.js v7.1.1) * handle some pecularities with headings and ids * forms => .csv * trello import with some loss @@ -35,7 +36,6 @@ * catch errors thrown by the diff applier * don't bother returning the hash of a pin list to the client, since they don't use it - # 4.7.0 ## Goals From 68e489a2a3acb17dac55631e147cf9e575169299 Mon Sep 17 00:00:00 2001 From: Weblate Date: Fri, 2 Jul 2021 07:34:59 +0200 Subject: [PATCH 25/33] Translated using Weblate (Japanese) Currently translated at 95.6% (1307 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 95.6% (1307 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 95.6% (1307 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ --- www/common/translations/messages.ja.json | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/www/common/translations/messages.ja.json b/www/common/translations/messages.ja.json index 3343d8873..749a5c184 100644 --- a/www/common/translations/messages.ja.json +++ b/www/common/translations/messages.ja.json @@ -503,7 +503,7 @@ "slide_backCol": "背景色", "code_editorTheme": "エディターのテーマ", "unknownPad": "不明なパッド", - "admin_openFilesTitle": "ファイルを開く", + "admin_openFilesTitle": "開かれているファイル", "kanban_conflicts": "編集中:", "kanban_noTags": "タグがありません", "historyTrim_historySize": "履歴: {0}", @@ -1022,7 +1022,7 @@ "canvas_imageEmbed": "コンピューターの画像を埋め込む", "canvas_currentBrush": "現在のブラシ", "poll_total": "合計", - "kanban_todo": "タスク", + "kanban_todo": "未着手", "slide_invalidLess": "ユーザー定義のスタイルは無効です", "printCSS": "ユーザー定義のスタイルルール(CSS):", "admin_provideAggregateStatisticsHint": "追加の利用状況を開発者に提供することも選択できます。追加の情報には、あなたのインスタンスのおおよその登録ユーザー数や一日あたりのユーザー数などがあります。", @@ -1306,5 +1306,7 @@ "share_embedPasswordAlert": "この項目はパスワードで保護されています。このパッドを埋め込む際、閲覧にはパスワードの入力が必要となります。", "share_contactPasswordAlert": "この項目はパスワードで保護されています。CryptPadの連絡先と共有するため、相手がパスワードを入力する必要はありません。", "share_linkPasswordAlert": "この項目はパスワードで保護されています。リンクを受け取った相手はパスワードを入力する必要があります。", - "register_notes_title": "重要な注意事項" + "register_notes_title": "重要な注意事項", + "teams_table_specificHint": "以前のバージョンの共有フォルダでは、閲覧者は既存のパッドを変更することができます。 これらのフォルダで作成またはコピーしたパッドには、標準の権限が与えられます。", + "broadcast_maintenance": "{0}から{1}の間でメンテナンスを予定しています。その間CryptPadは使用できません。" } From edc1e95ffe659a5812eccf77a2bbe504c85426cb Mon Sep 17 00:00:00 2001 From: Weblate Date: Fri, 2 Jul 2021 08:42:03 +0200 Subject: [PATCH 26/33] Translated using Weblate (Japanese) Currently translated at 95.8% (1309 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 95.7% (1308 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 95.6% (1307 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 95.6% (1307 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ --- www/common/translations/messages.ja.json | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/www/common/translations/messages.ja.json b/www/common/translations/messages.ja.json index 749a5c184..977211485 100644 --- a/www/common/translations/messages.ja.json +++ b/www/common/translations/messages.ja.json @@ -1061,7 +1061,7 @@ "form_poll_hint": ": はい、: いいえ、: 可", "admin_provideAggregateStatisticsLabel": "集計済みの統計を提供", "admin_provideAggregateStatisticsTitle": "統計による集計", - "admin_blockDailyCheckHint": "以後CryptPadのインスタンスは、1日に1回、CryptPadの開発者のサーバーにメッセージを送信します。開発者はそれをもとに、CryptPadのバージョンごとのサーバー数を追跡することができます。以下からこの測定をオプトアプトできます。なお、送信されるメッセージの内容は、確認用として、アプリケーションのサーバーのログに記録されます。", + "admin_blockDailyCheckHint": "CryptPadのインスタンスは、1日に1度、開発者のサーバーにメッセージを送信するよう設定されています。開発者はそれをもとに、CryptPadのバージョンごとのサーバー数を追跡しています。以下からこの測定をオプトアプトできます。なお、送信されるメッセージの内容は、確認用として、アプリケーションのサーバーのログに記録されます。", "admin_listMyInstanceHint": "あなたのインスタンスが誰でも利用できる場合、同意によってウェブディレクトリに表示できます。その際は、サーバーのテレメトリーが有効になっている必要があります。", "settings_driveRedirectTitle": "ホームページにリダイレクト", "form_defaultItem": "項目{0}", @@ -1203,7 +1203,7 @@ "admin_diskUsageHint": "CryptPadのリソースが消費しているストレージ容量", "timeoutError": "エラーが発生してサーバーへの接続が切断されました。
    Escキーを押してページをリロードしてください。", "footer_team": "貢献者", - "admin_updateLimitHint": "ユーザーのストレージ制限の強制アップデートはいつでも可能ですが、エラーが発生したときのみ必須となります", + "admin_updateLimitHint": "ユーザーのストレージ制限の強制アップデートはいつでも可能です。エラーが発生したときは必須となります", "admin_cat_general": "全般", "poll_bookmarked_col": "列をブックマークしました。常に編集可能な仕方で左端に表示されます。", "poll_bookmark_col": "この列をブックマークすると、常に編集可能な仕方で左端に表示されます", @@ -1229,7 +1229,7 @@ "owner_team_add": "{0}があなたをチーム({1})のオーナーにしようとしています。承諾しますか?", "friendRequest_accepted": "{0}が連絡先リクエストを承諾しました", "friendRequest_accept": "承諾(Enter)", - "admin_flushCacheHint": "サーバーから最新のコンテンツをダウンロードするようユーザーに強制(サーバーが「フレッシュ」モードの場合のみ)", + "admin_flushCacheHint": "サーバーから最新のコンテンツをダウンロードするようユーザーに強制(サーバーがフレッシュモードの場合のみ)", "admin_activeSessionsHint": "アクティブなwebsocketの接続(および接続する一意のIPアドレス)の数", "convertFolderToSF_SFParent": "このフォルダは別の共有フォルダ内にあるため、共有フォルダに変換できません。続行するには、外部に移動してください。", "settings_deleteWarning": "注意:現在、プレミアムプランに加入しています(別のユーザーが支払いまたは提供)。アカウントを削除する前に、プランをキャンセルしてください。アカウントを削除すると、サポートに連絡しないとキャンセルできなくなります。", @@ -1308,5 +1308,7 @@ "share_linkPasswordAlert": "この項目はパスワードで保護されています。リンクを受け取った相手はパスワードを入力する必要があります。", "register_notes_title": "重要な注意事項", "teams_table_specificHint": "以前のバージョンの共有フォルダでは、閲覧者は既存のパッドを変更することができます。 これらのフォルダで作成またはコピーしたパッドには、標準の権限が与えられます。", - "broadcast_maintenance": "{0}から{1}の間でメンテナンスを予定しています。その間CryptPadは使用できません。" + "broadcast_maintenance": "{0}から{1}の間でメンテナンスを予定しています。その間CryptPadは使用できません。", + "admin_archiveHint": "ドキュメントを完全削除することなく、利用できないよう設定できます。「アーカイブ」フォルダに移動し、数日後に削除します(期間については設定ファイルより設定できます)。", + "admin_unarchiveHint": "アーカイブされたドキュメントを復元できます" } From 29d2fb38efc9b7a29cac0820616a08c8d30ab391 Mon Sep 17 00:00:00 2001 From: ansuz Date: Fri, 2 Jul 2021 12:41:34 +0530 Subject: [PATCH 27/33] trim leading and trailing whitespace from usernames when registering --- www/register/main.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/www/register/main.js b/www/register/main.js index 4c63e4482..4d9274253 100644 --- a/www/register/main.js +++ b/www/register/main.js @@ -47,7 +47,11 @@ define([ var I_REALLY_WANT_TO_USE_MY_EMAIL_FOR_MY_USERNAME = false; var registerClick = function () { - var uname = $uname.val(); + var uname = $uname.val().trim(); + // trim whitespace surrounding the username since it is otherwise included in key derivation + // most people won't realize that its presence is significant + $uname.val(uname); + var passwd = $passwd.val(); var confirmPassword = $confirm.val(); From 568ced1b7f5909a9a1f063cb2c61b3feff51ca09 Mon Sep 17 00:00:00 2001 From: Weblate Date: Fri, 2 Jul 2021 11:17:00 +0200 Subject: [PATCH 28/33] Translated using Weblate (Japanese) Currently translated at 97.5% (1332 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 97.4% (1331 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 97.2% (1329 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 96.9% (1324 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 96.9% (1324 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 96.8% (1323 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 96.7% (1322 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 96.7% (1321 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 96.6% (1320 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 96.5% (1319 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 96.5% (1319 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 96.5% (1319 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 96.4% (1318 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 96.4% (1317 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 96.4% (1317 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 96.3% (1316 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 96.2% (1315 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 96.1% (1314 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 96.1% (1314 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 96.1% (1313 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 96.0% (1312 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 95.9% (1311 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 95.9% (1310 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ --- www/common/translations/messages.ja.json | 45 ++++++++++++++++++------ 1 file changed, 34 insertions(+), 11 deletions(-) diff --git a/www/common/translations/messages.ja.json b/www/common/translations/messages.ja.json index 977211485..4d02d98c6 100644 --- a/www/common/translations/messages.ja.json +++ b/www/common/translations/messages.ja.json @@ -173,7 +173,7 @@ "teams_table_generic": "権限一覧", "teams_table": "権限", "contacts_fetchHistory": "古い履歴を取得する", - "contacts_warning": "ここに入力したすべてのメッセージは永続的であり、このパッドの現在および将来のすべてのユーザーが利用できます。機密情報の入力は推奨されません!", + "contacts_warning": "ここに入力したすべてのメッセージは永続的であり、このパッドの現在および将来のすべてのユーザーが確認できます。機密情報の入力には注意してください!", "contacts_typeHere": "ここにメッセージを入力...", "team_cat_drive": "ドライブ", "team_cat_chat": "チャット", @@ -454,7 +454,7 @@ "upload_choose": "ファイルを選択", "form_page": "{0}/{1}ページ", "form_addMultiple": "全て追加", - "admin_consentToContactLabel": "同意", + "admin_consentToContactLabel": "同意する", "admin_updateAvailableButton": "リリースノートを見る", "admin_updateAvailableHint": "CryptPadの新しいバージョンが利用可能です", "admin_updateAvailableTitle": "新しいバージョン", @@ -475,7 +475,7 @@ "poll_create_option": "新しいオプションを追加", "poll_create_user": "新しいユーザーを追加", "pad_mediatagImport": "あなたのCryptDriveに保存", - "admin_listMyInstanceLabel": "このインスタンスをリストに表示", + "admin_listMyInstanceLabel": "このインスタンスをリストに表示する", "admin_checkupTitle": "インスタンスの設定を検証", "cba_disable": "消去して無効にする", "upload_pending": "保留中", @@ -483,7 +483,7 @@ "chrome68": "バージョン68のChromeあるいはChromiumを使用しているようです。このバージョンには、数秒経過した後でページが白紙になったり、クリックにページが反応しなくなったりするバグがあります。この問題を解決するには、別のタブを表示して改めて表示するか、このページでスクロールを試みてください。このバグは次のバージョンで解決される予定となっています。", "register_notes": "
    • ドキュメントは、パスワードによって暗号化されます。パスワードを紛失すると、データを復元することはできません。
    • 共有のコンピュータを使用している場合は、作業完了時に忘れずログアウトしてください。 ブラウザーのウインドウを閉じても、アカウントからはログアウトされません。
    • 未ログインで作成、共有したファイルを保存するには、 「匿名セッションのドキュメントをインポート」にチェックをしてください。
    ", "poll_commit": "送信", - "admin_removeDonateButtonTitle": "クラウドファンディングに参加", + "admin_removeDonateButtonTitle": "クラウドファンディングへの参加", "mediatag_notReady": "ダウンロードを完了してください", "pad_mediatagOpen": "ファイルを開く", "pad_mediatagShare": "ファイルを共有", @@ -560,7 +560,7 @@ "form_form": "フォーム", "form_editor": "エディタ", "form_delete": "削除", - "form_sent": "送信済", + "form_sent": "送信しました", "form_reset": "リセット", "form_update": "更新", "form_submit": "送信", @@ -1046,7 +1046,7 @@ "register_emailWarning0": "ユーザー名にメールアドレスが入力されています。", "fm_tags_used": "使用数", "fm_deletedPads": "これらのパッドはサーバーにありません。あなたのCryptDriveから削除されています: {0}", - "fm_renamedPad": "このパッドにユーザー定義の名前を設定しました。共有のファイル名は
    {0}", + "fm_renamedPad": "このパッドにユーザー定義の名前を設定しました。共有のファイル名は「{0}」です", "fm_ownedPadsName": "所有", "burnAfterReading_generateLink": "下のボタンをクリックするとリンクを生成します。", "fm_restricted": "アクセス権がありません", @@ -1062,11 +1062,11 @@ "admin_provideAggregateStatisticsLabel": "集計済みの統計を提供", "admin_provideAggregateStatisticsTitle": "統計による集計", "admin_blockDailyCheckHint": "CryptPadのインスタンスは、1日に1度、開発者のサーバーにメッセージを送信するよう設定されています。開発者はそれをもとに、CryptPadのバージョンごとのサーバー数を追跡しています。以下からこの測定をオプトアプトできます。なお、送信されるメッセージの内容は、確認用として、アプリケーションのサーバーのログに記録されます。", - "admin_listMyInstanceHint": "あなたのインスタンスが誰でも利用できる場合、同意によってウェブディレクトリに表示できます。その際は、サーバーのテレメトリーが有効になっている必要があります。", + "admin_listMyInstanceHint": "あなたのインスタンスが誰でも利用できる場合、同意によってウェブディレクトリに表示できます。表示には、サーバーのテレメトリーが有効になっている必要があります。", "settings_driveRedirectTitle": "ホームページにリダイレクト", "form_defaultItem": "項目{0}", "form_defaultOption": "オプション{0}", - "form_answerAnonymous": "{0}についての匿名の回答", + "form_answerAnonymous": "{0}に匿名の回答", "form_maxLength": "文字数制限: {0}/{1}", "form_textType": "テキストの種類", "form_pollYourAnswers": "あなたの回答", @@ -1215,7 +1215,7 @@ "form_anonymous_off": "ブロック", "admin_checkupHint": "CryptPadには、一般的な構成に関する問題を自動で診断し、必要に応じてそれらを修正する方法を提案するページがあります。", "admin_broadcastTitle": "メッセージを送信", - "admin_broadcastHint": "このインスタンスの全ユーザーにメッセージを送信します。ユーザーはメッセージを通知で受け取ります。「通知をプレビュー」で送信前のメッセージを確認できます。通知のプレビューには赤いアイコンがあり、あなたにだけ表示されます。", + "admin_broadcastHint": "このインスタンスの全ユーザーにメッセージを送信します。ユーザーはメッセージを通知で受け取ります。送信前のメッセージは「通知をプレビュー」から確認できます。プレビューには赤いアイコンが付いており、プレビューはあなたの通知画面にのみ表示されます。", "calendar_before": "以前", "share_formAuditor": "監査人", "form_editMax": "選択できるオプションの最大数", @@ -1245,7 +1245,7 @@ "docs_link": "ドキュメンテーション", "admin_support_collapse": "折りたたむ", "team_inviteFrom": "送信元:", - "admin_supportInitHint": "サポートのメールボックスを設定すれば、あなたのCryptPadのインスタンスのユーザーが、アカウントから安全に問い合わせを行うことができるようになります。", + "admin_supportInitHint": "サポートのメールボックスを設定すると、あなたのCryptPadのインスタンスのユーザーが、アカウントから安全に問い合わせを行うことができるようになります。", "isNotContact": "{0}はあなたの連絡先ではありません", "isContact": "{0}はあなたの連絡先です", "profile_info": "他のユーザーは、ドキュメントのユーザーリストであなたのアバターをクリックして、あなたのプロフィールを確認できます。", @@ -1310,5 +1310,28 @@ "teams_table_specificHint": "以前のバージョンの共有フォルダでは、閲覧者は既存のパッドを変更することができます。 これらのフォルダで作成またはコピーしたパッドには、標準の権限が与えられます。", "broadcast_maintenance": "{0}から{1}の間でメンテナンスを予定しています。その間CryptPadは使用できません。", "admin_archiveHint": "ドキュメントを完全削除することなく、利用できないよう設定できます。「アーカイブ」フォルダに移動し、数日後に削除します(期間については設定ファイルより設定できます)。", - "admin_unarchiveHint": "アーカイブされたドキュメントを復元できます" + "admin_unarchiveHint": "アーカイブされたドキュメントを復元できます", + "admin_registrationTitle": "登録を締め切る", + "admin_defaultlimitHint": "ユーザー定義のルールが適用されていない際の最大のストレージ容量(ユーザーとチームについて)を設定できます", + "admin_limit": "現在の制限: {0}", + "admin_getquotaHint": "ユーザーもしくはチームの公開鍵を入力して、設定されているクォータに対するストレージの使用量を確認できます。", + "admin_openFilesHint": "サーバー上で現在開いているファイル記述子の数", + "admin_support_premium": "プレミアムチケット:", + "admin_maintenanceHint": "このインスタンスのメンテナンスの日程を設定し、ユーザーに通知を送ることができます。メンテナンスの日程を複数設定することはできません。", + "admin_surveyHint": "外部サイトで行うアンケートのリンクを追加、更新、削除できます。ユーザーには通知が送信され、アンケートはユーザーのメニューから開くことができます。", + "broadcast_defaultLanguage": "この言語にフォールバック", + "admin_performanceProfilingHint": "サーバー側でコマンドを実行する際に掛かった合計時間の一覧です", + "admin_consentToContactHint": "サーバーのテレメトリーには、ソフトウェアや設定に関する重大な問題が発生した際に開発者が連絡できるよう、管理者の連絡先のメールアドレスが含まれます。メールアドレスが共有、売却、マーケティングの目的で使用されることはありません。サーバーに重大な問題が発生した際に連絡を希望する場合は、「同意する」にチェックをつけてください。", + "admin_removeDonateButtonHint": "CryptPadの開発の一部は、公的な助成金と寄付金によってまかなわれています。クラウドファンディングに関する宣伝をあなたのインスタンスで行うことで、開発者が万人のためにプラットフォームを改良することへの支援につながります。ただし、もし宣伝が不適切な場合は、宣伝を無効にすることもできます。", + "admin_performanceTimeHeading": "時間(秒)", + "team_maxTeams": "それぞれのユーザーアカウントがメンバーになることができるのは、最大{0}チームまでです。", + "team_listSlot": "利用可能なチームのスロット", + "resources_learnWhy": "ブロックした理由について", + "admin_purpose_business": "ビジネス・営利団体での使用", + "admin_purpose_education": "教育機関での使用", + "admin_purpose_org": "非営利団体・支援団体での使用", + "admin_purpose_personal": "個人利用、家族、友人との利用", + "burnAfterReading_linkBurnAfterReading": "一度だけ表示した後に自動で削除", + "feedback_about": "これを読んでいるのは、特定のアクションの実行時にCryptPadがウェブページのリクエストを送信している理由が気になるからだと思います。", + "burnAfterReading_warningLink": "パッドを自動削除に設定しました。リンクを受け取った相手がリンクを開くと、パッドは一度だけ表示され、その後削除されます。" } From 09cbeefd99c913043b4de0a2bf7a69931082cc12 Mon Sep 17 00:00:00 2001 From: ansuz Date: Fri, 2 Jul 2021 14:48:24 +0530 Subject: [PATCH 29/33] double-check that blocks have been written even if 'write' calls back with no error also update the changelog --- CHANGELOG.md | 3 +++ customize.dist/login.js | 15 ++++++++++++--- www/common/cryptpad-common.js | 11 +++++++++++ 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d74a37dc4..92a38bfb1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,6 +35,9 @@ * guard against domExceptions * catch errors thrown by the diff applier * don't bother returning the hash of a pin list to the client, since they don't use it +* accounts + * trim leading and trailing whitespace from usernames when registering + * double-check that login blocks can be loaded after they have been written without error # 4.7.0 diff --git a/customize.dist/login.js b/customize.dist/login.js index 74e5e86f6..3309190c0 100644 --- a/customize.dist/login.js +++ b/customize.dist/login.js @@ -153,7 +153,7 @@ define([ register: isRegister, }; - var RT, blockKeys, blockHash, Pinpad, rpc, userHash; + var RT, blockKeys, blockHash, blockUrl, Pinpad, rpc, userHash; nThen(function (waitFor) { // derive a predefined number of bytes from the user's inputs, @@ -171,7 +171,7 @@ define([ // the rest of their data // determine where a block for your set of keys would be stored - var blockUrl = Block.getBlockUrl(res.opt.blockKeys); + blockUrl = Block.getBlockUrl(res.opt.blockKeys); // Check whether there is a block at that location Util.fetch(blockUrl, waitFor(function (err, block) { @@ -412,12 +412,21 @@ define([ toPublish.edPublic = RT.proxy.edPublic; var blockRequest = Block.serialize(JSON.stringify(toPublish), res.opt.blockKeys); - rpc.writeLoginBlock(blockRequest, waitFor(function (e) { if (e) { console.error(e); + waitFor.abort(); return void cb(e); } + })); + }).nThen(function (waitFor) { + // confirm that the block was actually written before considering registration successful + Util.fetch(blockUrl, waitFor(function (err /*, block */) { + if (err) { + console.error(err); + waitFor.abort(); + return void cb(err); + } console.log("blockInfo available at:", blockHash); LocalStore.setBlockHash(blockHash); diff --git a/www/common/cryptpad-common.js b/www/common/cryptpad-common.js index 9eb5398e7..15234c35e 100644 --- a/www/common/cryptpad-common.js +++ b/www/common/cryptpad-common.js @@ -1937,6 +1937,17 @@ define([ waitFor.abort(); return void cb(obj); } + })); + }).nThen(function (waitFor) { + var blockUrl = Block.getBlockUrl(blockKeys); + Util.fetch(blockUrl, waitFor(function (err /* block */) { + if (err) { + console.error(err); + waitFor.abort(); + return cb({ + error: err, + }); + } console.log("new login block written"); var newBlockHash = Block.getBlockHash(blockKeys); LocalStore.setBlockHash(newBlockHash); From ed438d7b3be7a0fe82ce6ef40a5a391c7265d373 Mon Sep 17 00:00:00 2001 From: Weblate Date: Fri, 2 Jul 2021 13:17:35 +0200 Subject: [PATCH 30/33] Translated using Weblate (Japanese) Currently translated at 100.0% (1366 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 100.0% (1366 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 99.9% (1365 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 99.9% (1365 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 99.7% (1362 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 99.7% (1362 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 99.6% (1361 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 98.6% (1348 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 98.1% (1341 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 97.7% (1335 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 97.7% (1335 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 97.6% (1334 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 97.5% (1333 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ --- www/common/translations/messages.ja.json | 61 ++++++++++++++++++------ 1 file changed, 47 insertions(+), 14 deletions(-) diff --git a/www/common/translations/messages.ja.json b/www/common/translations/messages.ja.json index 4d02d98c6..25122b243 100644 --- a/www/common/translations/messages.ja.json +++ b/www/common/translations/messages.ja.json @@ -313,7 +313,7 @@ "features_f_register": "無料登録", "features_f_storage1_note": "CryptDriveに保存したドキュメントは、有効期限切れで削除されることはありません", "features_f_storage1": "個人用ストレージ({0})", - "oo_sheetMigration_complete": "新しいバージョンが利用可能です。「OK」を押して再読み込みしてください。", + "oo_sheetMigration_complete": "新しいバージョンが利用可能です。OKを押して再読み込みしてください。", "oo_sheetMigration_loading": "あなたのスプレッドシートを最新バージョンにアップグレードしています。1分程度お待ちください。", "settings_ownDriveButton": "アカウントをアップグレード", "features_f_file1_note": "CryptDriveに画像ファイル、PDF、動画などを保存できます。保存したファイルは、連絡先と共有したり、ドキュメントに埋め込んだりできます。(最大容量は{0}MB)", @@ -763,7 +763,7 @@ "userlist_offline": "現在オフラインのため、ユーザーリストは利用できません。", "readonly": "読み取り専用", "errorState": "重大なエラー: {0}", - "realtime_unrecoverableError": "回復不可能なエラーが発生しました。OKをクリックしてリロードしてください。", + "realtime_unrecoverableError": "回復不可能なエラーが発生しました。OKをクリックして再読み込みを行ってください。", "disabledApp": "このアプリケーションは無効になっています。詳細については、このCryptPadの管理者にお問い合わせください。", "deletedFromServer": "パッドは完全削除されました", "newVersionError": "新しいバージョンのCryptPadがあります。
    リロードすると新しいバージョンを読み込みます。Escキーを押すとオフラインモードでコンテンツにアクセスします。", @@ -811,7 +811,7 @@ "register_registrationIsClosed": "登録は締め切りました。", "settings_notifCalendarHint": "今後のカレンダーのイベントのすべての通知を有効もしくは無効にします。", "reminder_inProgressAllDay": "今日: {0}", - "reminder_inProgress": "{0}が{1}で開始しました", + "reminder_inProgress": "{0}が{1}に開始しました", "reminder_now": "{0}が開始しました", "reminder_missed": "{0}が{1}で開催されました", "calendar_dateRange": "{0} - {1}", @@ -842,7 +842,7 @@ "pad_settings_show": "表示", "pad_settings_hide": "隠す", "pad_settings_width_small": "ページモード", - "pad_settings_info": "このドキュメントの既定の設定。新しいユーザーがドキュメントを閲覧したときに適用されます。", + "pad_settings_info": "このドキュメントの既定の設定です。新しいユーザーがドキュメントを閲覧したときに適用されます。", "pad_settings_title": "ドキュメントの設定", "admin_getquotaTitle": "アカウントのストレージを確認", "settings_colorthemeTitle": "テーマ色", @@ -871,8 +871,8 @@ "notifyRenamed": "{0}は{1}になりました", "printBackgroundNoValue": "背景画像が選択されていません", "canvas_saveToDrive": "この画像をファイル形式でCryptDriveに保存", - "canvas_opacityLabel": "透明度: {0}", - "canvas_opacity": "透明度", + "canvas_opacityLabel": "不透明度: {0}", + "canvas_opacity": "不透明度", "poll_comment_disabled": "✓ボタンを押して投票を公開すると、コメントが有効になります。", "kanban_item": "項目 {0}", "fileEmbedScript": "このファイルを埋め込むには、Media Tagのロード用に、このスクリプトをページに一度含めてください。", @@ -930,7 +930,7 @@ "share_linkEmbed": "埋め込みモード(ツールバーとユーザー一覧を隠します)", "properties_passwordSuccess": "パスワードは変更されました。
    OKを押して再読み込みし、アクセス権限を更新してください。", "properties_passwordWarning": "パスワードは変更されましたが、CryptDriveを更新することができませんでした。古いバージョンのパッドは手動で削除しなければならないかもしれません。
    OKを押して再読み込みし、アクセス権限を更新してください。", - "properties_confirmChange": "パスワードを変更すると履歴が削除されます。パスワードを知らないユーザーは、このパッドにアクセスできなくなります。続行してよろしいですか?", + "properties_confirmChange": "続行してよろしいですか?パスワードを変更すると履歴が削除されます。パスワードを知らないユーザーは、このパッドにアクセスできなくなります。", "creation_newPadModalDescription": "作成するドキュメントの種類をクリックしてください。タブキーで選択し、エンターキーで作成することもできます。", "creation_noOwner": "オーナーがいません", "properties_passwordError": "パスワードの変更中にエラーが発生しました。再度試してください。", @@ -957,7 +957,7 @@ "fm_info_template": "テンプレートとして保存したパッドの一覧です。以下のテンプレートを使って、新しいパッドを作成することができます。", "fm_categoryError": "選択したカテゴリーが開けません。ルートを表示します。", "fm_morePads": "さらに表示", - "oo_reconnect": "サーバーの接続が回復しました。OKをクリックして再読み込みし、編集を継続してください。", + "oo_reconnect": "サーバーの接続が回復しました。OKをクリックして再読み込みを行い、編集を継続してください。", "changeNamePrompt": "名前を変更(匿名で利用する場合は空欄): ", "form_text_text": "テキスト", "form_poll_time": "時", @@ -977,7 +977,7 @@ "calendar_notifications": "リマインダー", "settings_notifCalendarCheckbox": "カレンダーの通知を有効にする", "calendar_days": "日", - "calendar_hours": "時", + "calendar_hours": "時間", "calendar_minutes": "分", "calendar_allDay": "全日", "calendar_location": "場所: {0}", @@ -1055,7 +1055,7 @@ "settings_cacheCheckbox": "このデバイスでキャッシュを有効にする", "form_submitWarning": "強制的に送信", "form_updateWarning": "強制的にアップデート", - "form_answerName": "{0}から{1}について回答", + "form_answerName": "{0}が{1}に回答", "form_addMultipleHint": "複数の日時を追加", "admin_consentToContactTitle": "連絡に同意", "form_poll_hint": ": はい、: いいえ、: 可", @@ -1201,7 +1201,7 @@ "friendRequest_received": "{0}が連絡先への追加を希望しています", "friendRequest_declined": "{0}が連絡先のリクエストを拒否しました", "admin_diskUsageHint": "CryptPadのリソースが消費しているストレージ容量", - "timeoutError": "エラーが発生してサーバーへの接続が切断されました。
    Escキーを押してページをリロードしてください。", + "timeoutError": "エラーが発生してサーバーへの接続が切断されました。
    Escキーを押してページを再読み込みしてください。", "footer_team": "貢献者", "admin_updateLimitHint": "ユーザーのストレージ制限の強制アップデートはいつでも可能です。エラーが発生したときは必須となります", "admin_cat_general": "全般", @@ -1216,7 +1216,7 @@ "admin_checkupHint": "CryptPadには、一般的な構成に関する問題を自動で診断し、必要に応じてそれらを修正する方法を提案するページがあります。", "admin_broadcastTitle": "メッセージを送信", "admin_broadcastHint": "このインスタンスの全ユーザーにメッセージを送信します。ユーザーはメッセージを通知で受け取ります。送信前のメッセージは「通知をプレビュー」から確認できます。プレビューには赤いアイコンが付いており、プレビューはあなたの通知画面にのみ表示されます。", - "calendar_before": "以前", + "calendar_before": "前", "share_formAuditor": "監査人", "form_editMax": "選択できるオプションの最大数", "form_invalidWarning": "回答にエラーがあります:", @@ -1260,7 +1260,7 @@ "settings_colortheme_default": "システムのデフォルト ({0})", "settings_codeBrackets": "括弧の自動補完", "creation_helperText": "ドキュメンテーションを開く", - "contacts_info1": "連絡先の一覧です。", + "contacts_info1": "連絡先の一覧が表示されます。ここでは以下を行うことができます:", "share_noContactsLoggedIn": "連絡先がありません。プロフィールのリンクを共有して、連絡先のリクエストを送信してください。", "settings_cat_security": "セキュリティー", "whatis_collaboration_info": "

    CryptPadはコラボレーションを念頭に作られています。ドキュメントに加えられる変更は、リアルタイムで同期されます。全てのデータは暗号化されているため、サービスとその管理者が、編集され保存されているコンテンツを覗き見ることは不可能です。

    ", @@ -1333,5 +1333,38 @@ "admin_purpose_personal": "個人利用、家族、友人との利用", "burnAfterReading_linkBurnAfterReading": "一度だけ表示した後に自動で削除", "feedback_about": "これを読んでいるのは、特定のアクションの実行時にCryptPadがウェブページのリクエストを送信している理由が気になるからだと思います。", - "burnAfterReading_warningLink": "パッドを自動削除に設定しました。リンクを受け取った相手がリンクを開くと、パッドは一度だけ表示され、その後削除されます。" + "burnAfterReading_warningLink": "パッドを自動削除に設定しました。リンクを受け取った相手がリンクを開くと、パッドは一度だけ表示され、その後削除されます。", + "burnAfterReading_warningAccess": "このドキュメントは自動的に削除されます。下のボタンをクリックするとコンテンツが自動的に表示され、その後で削除されます。ドキュメントを表示した後でウィンドウを閉じると、二度とドキュメントにアクセスすることはできません。準備が出来ていない場合は、ドキュメントを表示する前にこのウィンドウを閉じて、後ほどアクセスしてください。", + "form_sort_hint": "項目を優先順位(1が最も高く{0}が最も低い)に従って並べてください。", + "canvas_brush": "ペン", + "share_versionHash": "ドキュメントの選択したバージョンを閲覧モードで共有します。それにより、このドキュメントの全てのバージョンへの読み取り専用アクセスも可能になります。", + "history_cantRestore": "復元に失敗しました。接続が切れています。", + "todo_move": "タスクリストはCryptDriveのカンバン「{0}」に移動しました。", + "info_imprintFlavour": "このインスタンスの管理者に関する法的情報。", + "settings_safeLinkDefault": "セーフリンクは既定で有効になっています。ブラウザーのアドレスバーではなく、 共有メニューを使ってリンクをコピーしてください。", + "comments_notification": "{1}でのあなたのコメント「{0}」に対する返信", + "infobar_versionHash": "このドキュメントの過去のバージョンを閲覧しています({0})。", + "history_fastNext": "次の編集セッション", + "history_fastPrev": "以前の編集セッション", + "unableToDisplay": "ドキュメントを表示できません。Escキーを押してページの再読み込みを行ってください。問題が継続する場合は、サポートに連絡してください。", + "snapshots_cantMake": "スナップショットを作成できませんでした。接続が切れています。", + "snapshots_notFound": "ドキュメントの履歴が削除されたため、スナップショットは存在しません。", + "snapshot_error_exists": "このバージョンのスナップショットは既に存在します", + "calendar_dateTimeRange": "{0} {1} - {2}", + "toolbar_degraded": "現在{0}人以上がこのドキュメントを編集しています。パフォーマンスの改善のため、ユーザーリストとチャットを無効に設定しました。", + "oo_lostEdits": "新しいデータと同期したため、保存されていない編集箇所を復元することができませんでした。", + "pad_settings_comments": "コメントを既定で表示するか隠すかを選択してください。", + "pad_settings_outline": "目次を既定で表示するか隠すかを選択してください。", + "pad_settings_width_large": "最大幅", + "offlineError": "データを同期できないため、このページは現在表示できません。サービスへの接続が復旧すると読み込みを継続します。", + "share_noContactsOffline": "現在オフラインです。連絡先にアクセスすることはできません。", + "access_offline": "現在オフラインです。管理画面にアクセスすることはできません。", + "admin_support_last": "アップデートした日時: ", + "admin_support_first": "作成日時: ", + "contacts_confirmCancel": "{0}との連絡先リクエストをキャンセルしてよろしいですか?", + "history_trimPrompt": "このドキュメントは{0}の履歴があり、読み込みを遅くしている恐れがあります。必要でない場合は、履歴の削除を検討してください。", + "reminder_date": "{0}が{1}にあります", + "calendar_more": "あと{0}個", + "reminder_time": "{0}が今日の{1}にあります", + "form_answerWarning": "本人であることが確認されていません" } From 9ad74aeba106c01b8c9baabab5ef9b0e599b4b88 Mon Sep 17 00:00:00 2001 From: Weblate Date: Fri, 2 Jul 2021 13:48:25 +0200 Subject: [PATCH 31/33] Translated using Weblate (Japanese) Currently translated at 100.0% (1366 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ Translated using Weblate (Japanese) Currently translated at 100.0% (1366 of 1366 strings) Translation: CryptPad/App Translate-URL: http://weblate.cryptpad.fr/projects/cryptpad/app/ja/ --- www/common/translations/messages.ja.json | 38 ++++++++++++------------ 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/www/common/translations/messages.ja.json b/www/common/translations/messages.ja.json index 25122b243..e3982bca6 100644 --- a/www/common/translations/messages.ja.json +++ b/www/common/translations/messages.ja.json @@ -173,7 +173,7 @@ "teams_table_generic": "権限一覧", "teams_table": "権限", "contacts_fetchHistory": "古い履歴を取得する", - "contacts_warning": "ここに入力したすべてのメッセージは永続的であり、このパッドの現在および将来のすべてのユーザーが確認できます。機密情報の入力には注意してください!", + "contacts_warning": "ここに入力した全てのメッセージは永続的であり、このパッドの現在および将来の全てのユーザーが確認できます。機密情報の入力には注意してください!", "contacts_typeHere": "ここにメッセージを入力...", "team_cat_drive": "ドライブ", "team_cat_chat": "チャット", @@ -181,7 +181,7 @@ "team_cat_admin": "管理", "adminPage": "管理", "team_deleteButton": "削除", - "team_deleteHint": "チーム自体とチームが所有しているすべてのドキュメントを削除します。", + "team_deleteHint": "チームと、チームが所有している全てのドキュメントを削除します。", "team_deleteTitle": "チームの削除", "team_avatarHint": "容量 500KB 以下 (png 、jpg 、jpeg 、gif)", "team_avatarTitle": "チームのアバター", @@ -221,7 +221,7 @@ "support_languagesPreamble": "サポートチームは次の言語に対応可能です:", "support_listHint": "管理者に送信されたチケットとその回答のリストは以下の通りです。閉じたチケットを再開することはできませんが、新しいチケットを作成することはできます。閉じたチケットは非表示にできます。", "support_listTitle": "サポートチケット", - "settings_padNotifCheckbox": "コメント通知を無効化", + "settings_padNotifCheckbox": "コメント通知を無効にする", "settings_padNotifTitle": "コメント通知", "notifications_dismissAll": "全て確認済みにする", "notifications_cat_archived": "履歴", @@ -229,7 +229,7 @@ "notifications_dismiss": "確認済みにする", "settings_autostoreMaybe": "手動 (確認しない)", "settings_autostoreNo": "手動 (常に確認する)", - "settings_autostoreHint": "自動 アクセスしたすべてのパッドをCryptDriveに保存します。
    手動(常に確認) 保存していないパッドにアクセスした際、CryptDriveに保存するかどうかを確認します。
    手動(確認しない) アクセス先のパッドはCryptDriveに自動で保存されません。保存オプションは表示されません。", + "settings_autostoreHint": "自動 アクセスした全てのパッドをCryptDriveに保存します。
    手動(常に確認) 保存していないパッドにアクセスした際、CryptDriveに保存するかどうかを確認します。
    手動(確認しない) アクセス先のパッドはCryptDriveに自動で保存されません。保存オプションは表示されません。", "settings_userFeedback": "ユーザーフィードバックを有効にする", "settings_userFeedbackHint2": "あなたのパッドのコンテンツがサーバーと共有されることはありません。", "settings_userFeedbackHint1": "CryptPadは、ユーザーエクスペリエンスの向上のため、いくつかの非常に基本的なフィードバックを、サーバーに提供します。 ", @@ -332,7 +332,7 @@ "properties_addPassword": "パスワードを設定", "history_close": "閉じる", "history_restore": "復元", - "fm_emptyTrashOwned": "ごみ箱に、あなたが所有しているドキュメントが入っています。あなたのドライブからのみ削除するか、すべてのユーザーから完全削除するかを選択できます。", + "fm_emptyTrashOwned": "ごみ箱に、あなたが所有しているドキュメントが入っています。あなたのドライブからのみ削除するか、全てのユーザーから完全削除するかを選択できます。", "access_destroyPad": "このドキュメントまたはフォルダを完全に削除する", "accessButton": "アクセス", "access_allow": "リスト", @@ -343,8 +343,8 @@ "settings_safeLinksTitle": "セーフリンク", "settings_safeLinksHint": "CryptPadでは、リンクの中にパッドを解読するための鍵が含まれています。ブラウザの閲覧履歴にアクセスできる人は、誰でもCryptPadのデータを閲覧することができます。ここにはデバイス間で履歴を同期するブラウザやその拡張機能も含まれます。「セーフリンク」を有効にすると、鍵がブラウザの閲覧履歴に残ったり、アドレスバーに表示されたりするのを可能な限り防ぐことができます。この機能を有効にして{0}の共有メニューを使用することを強く推奨します。", "settings_autostoreTitle": "CryptDriveへのパッドの保存", - "settings_logoutEverywhereConfirm": "すべてのデバイスでログインが取り消されるため、今後利用する際にもう一度ログインするよう求められます。続行しますか?", - "settings_logoutEverywhere": "他のすべてのウェブセッションからログアウト", + "settings_logoutEverywhereConfirm": "全てのデバイスでログインが取り消されるため、今後利用する際にもう一度ログインするよう求められます。続行しますか?", + "settings_logoutEverywhere": "他の全てのウェブセッションからログアウト", "settings_logoutEverywhereTitle": "リモートセッションを閉じる", "loading_state_5": "ドキュメントを再構築", "loading_state_4": "チームを読み込み", @@ -390,7 +390,7 @@ "home_opensource": "誰でもCryptPadを運営し、個人的または専門的な規模でサービスを提供することができます。ソースコードはGitHubで確認できます。", "home_opensource_title": "オープンソース", "home_host_title": "このインスタンスについて", - "home_privacy_text": "CryptPadは、データをプライベートに保護しながらコラボレーションを可能にするように構築されています。すべてのコンテンツは、あなたのブラウザ上で暗号化および復号化されます。ドキュメント、チャット、およびファイルは、あなたがログインしているセッション以外では読み取れません。サービスの管理者でも、あなたの情報にアクセスすることはできません。", + "home_privacy_text": "CryptPadは、データをプライベートに保護しながらコラボレーションを可能にするように構築されています。のコンテンツは、あなたのブラウザ上で暗号化および復号化されます。ドキュメント、チャット、およびファイルは、あなたがログインしているセッション以外では読み取れません。サービスの管理者でも、あなたの情報にアクセスすることはできません。", "home_privacy_title": "プライバシー・バイ・デザイン", "mdToolbar_tutorial": "https://www.markdowntutorial.com/jp/", "languageButtonTitle": "シンタックスハイライトを行う言語を選択してください", @@ -402,7 +402,7 @@ "history_restorePrompt": "ドキュメントの現在のバージョンを、表示しているバージョンに置き換えてよろしいですか?", "slideOptionsTitle": "スライドをカスタマイズ", "propertiesButtonTitle": "パッドのプロパティを表示", - "driveOfflineError": "CryptPadへの接続が切断されています。このパッドに加えられる変更はCryptDriveに保存されません。CryptPadの全てのタブを閉じて、新しいウィンドウで開いてみてください。 ", + "driveOfflineError": "CryptPadへの接続が切断されています。このパッドに加えられる変更はCryptDriveに保存されません。CryptPadののタブを閉じて、新しいウィンドウで開いてみてください。 ", "properties_passwordWarningFile": "パスワードは変更されましたが、新しいデータでCryptDriveを更新することができませんでした。古いバージョンのファイルを手動で削除する必要があるかもしれません。", "properties_confirmNewFile": "よろしいですか?パスワードを追加するとファイルのURLが変わります。パスワードをもたないユーザーは、このファイルにアクセスできなくなります。", "properties_confirmChangeFile": "よろしいですか?新しいパスワードをもたないユーザーは、このファイルにアクセスできなくなります。", @@ -410,7 +410,7 @@ "team_pendingOwner": "(保留中)", "fm_contextMenuError": "そのアイテムのコンテクストメニューを開けません。問題が続くなら、ページを再読み込みしてみてください。", "fm_selectError": "そのアイテムを選択できません。問題が続くなら、ページを再読み込みしてみてください。", - "fm_unknownFolderError": "選択、あるいは最後に開いたディレクトリは存在しません。親フォルダを開きます…", + "fm_unknownFolderError": "選択、もしくは最後に開いたディレクトリは存在しません。親フォルダを開きます…", "fm_restoreDialog": "{0}を元の場所に復元してよろしいですか?", "fm_removeSeveralPermanentlyDialog": "ドライブから{0}個のアイテムを削除してよろしいですか?他のユーザーのドライブからは削除されません。", "fm_removePermanentlyDialog": "ドライブからこのアイテムを削除してよろしいですか?他のユーザーのドライブからは削除されません。", @@ -428,7 +428,7 @@ "settings_disableThumbnailsAction": "CryptDriveでのサムネイルの作成を無効にする", "settings_resetError": "入力した確認文が正しくありません。CryptDriveのデータは消去されていません。", "settings_resetDone": "データが消去されました!", - "settings_resetPrompt": "あなたのドライブから全てのパッドを削除します。
    本当に続けてよろしいですか?
    続けるには「I love CryptPad」と入力してください。", + "settings_resetPrompt": "あなたのドライブからのパッドを削除します。
    本当に続けてよろしいですか?
    続けるには「I love CryptPad」と入力してください。", "settings_reset": "CryptDriveの全てのファイルとフォルダを削除", "settings_exportErrorOther": "ドキュメントのエクスポート中にエラーが発生しました: {0}", "drive_activeOld": "以前のパッド", @@ -480,7 +480,7 @@ "cba_disable": "消去して無効にする", "upload_pending": "保留中", "settings_resetTips": "ヒント", - "chrome68": "バージョン68のChromeあるいはChromiumを使用しているようです。このバージョンには、数秒経過した後でページが白紙になったり、クリックにページが反応しなくなったりするバグがあります。この問題を解決するには、別のタブを表示して改めて表示するか、このページでスクロールを試みてください。このバグは次のバージョンで解決される予定となっています。", + "chrome68": "バージョン68のChromeもしくはChromiumを使用しているようです。このバージョンには、数秒経過した後でページが白紙になったり、クリックにページが反応しなくなったりするバグがあります。この問題を解決するには、別のタブを表示して改めて表示するか、このページでスクロールを試みてください。このバグは次のバージョンで解決される予定となっています。", "register_notes": "
    • ドキュメントは、パスワードによって暗号化されます。パスワードを紛失すると、データを復元することはできません。
    • 共有のコンピュータを使用している場合は、作業完了時に忘れずログアウトしてください。 ブラウザーのウインドウを閉じても、アカウントからはログアウトされません。
    • 未ログインで作成、共有したファイルを保存するには、 「匿名セッションのドキュメントをインポート」にチェックをしてください。
    ", "poll_commit": "送信", "admin_removeDonateButtonTitle": "クラウドファンディングへの参加", @@ -686,7 +686,7 @@ "history_next": "次のバージョン", "historyButton": "ドキュメントの履歴を表示", "notifyLeft": "{0}が共同セッションから退出しました", - "fileEmbedTag": "そして、ファイルを埋め込みたい任意のページの箇所に、このMedia Tagを配置してください:", + "fileEmbedTag": "その後、ファイルを埋め込みたい任意のページの箇所に、このMedia Tagを配置してください:", "themeButtonTitle": "コードとスライドのエディタのテーマ色を選択", "printTransition": "遷移アニメーションを有効にする", "admin_blockDailyCheckTitle": "サーバーのテレメトリー", @@ -809,7 +809,7 @@ "fm_info_root": "フォルダを作成してファイルを整理できます。", "oo_conversionSupport": "お使いのブラウザはMicrosoft Officeのフォーマットの変換に対応していません。FirefoxもしくはChromeの最新バージョンの使用を推奨します。", "register_registrationIsClosed": "登録は締め切りました。", - "settings_notifCalendarHint": "今後のカレンダーのイベントのすべての通知を有効もしくは無効にします。", + "settings_notifCalendarHint": "今後のカレンダーのイベントの全ての通知を有効もしくは無効にします。", "reminder_inProgressAllDay": "今日: {0}", "reminder_inProgress": "{0}が{1}に開始しました", "reminder_now": "{0}が開始しました", @@ -1001,7 +1001,7 @@ "settings_padSpellcheckLabel": "リッチテキストのパッドでスペルチェックを有効にする", "settings_padWidth": "エディターの最大幅", "settings_codeUseTabs": "タブを使ってインデント(空白スペースの代わりに)", - "login_noSuchUser": "無効なユーザー名あるいはパスワードです。再度試すか、サインアップしてください", + "login_noSuchUser": "無効なユーザー名もしくはパスワードです。再度試すか、サインアップしてください", "fo_unavailableName": "同じ名前のファイルまたはフォルダが既に存在しています。アイテムの名前を変更して、再度試してください。", "fo_moveFolderToChildError": "フォルダをサブフォルダに移動することはできません", "fo_existingNameError": "その名前はディレクトリで既に使用されています。他の名前を選んでください。", @@ -1026,7 +1026,7 @@ "slide_invalidLess": "ユーザー定義のスタイルは無効です", "printCSS": "ユーザー定義のスタイルルール(CSS):", "admin_provideAggregateStatisticsHint": "追加の利用状況を開発者に提供することも選択できます。追加の情報には、あなたのインスタンスのおおよその登録ユーザー数や一日あたりのユーザー数などがあります。", - "fm_info_sharedFolder": "これは共有フォルダです。ログインしていないため、閲覧モードでしかアクセスできません。
    登録あるいはログインすると、CryptDriveにインポートして編集できます。", + "fm_info_sharedFolder": "これは共有フォルダです。ログインしていないため、閲覧モードでしかアクセスできません。
    登録もしくはログインすると、CryptDriveにインポートして編集できます。", "team_invitedToTeam": "{0}があなたをチーム「{1}」に招待しました", "team_inviteFromMsg": "{0}があなたをチーム「{1}」に招待しました", "team_invitePleaseLogin": "招待を承諾するには、ログインもしくは登録してください。", @@ -1109,7 +1109,7 @@ "admin_diskUsageButton": "レポートを生成", "admin_diskUsageTitle": "ディスクの使用状況", "contact_adminHint": "アカウントに関連した問題、ストレージの制限、サービスの運用状況に関して。\n", - "contact_devHint": "機能のリクエスト、ユーザビリティの改善、あるいはお礼については、以下よりお願いします。", + "contact_devHint": "機能のリクエスト、ユーザビリティの改善、もしくはお礼については、以下よりお願いします。", "contact_dev": "開発者に連絡", "contact_admin": "管理者に連絡", "admin_flushCacheDone": "キャッシュを消去しました", @@ -1120,7 +1120,7 @@ "admin_updateLimitTitle": "ユーザーのクォータを更新", "mdToolbar_defaultText": "ここにテキストを入力", "upload_modal_filename": "ファイル名(拡張子 {0} を自動で追加)", - "settings_padSpellcheckHint": "リッチテキストパッドでスペルチェックを有効にします。間違ったつづりには赤色の下線が表示されます。右クリックをしながらコントロールキーあるいはメタキーを押すと、正しい選択肢が表示されます。", + "settings_padSpellcheckHint": "リッチテキストパッドでスペルチェックを有効にします。間違ったつづりには赤色の下線が表示されます。右クリックをしながらコントロールキーもしくはメタキーを押すと、正しい選択肢が表示されます。", "creation_404": "このパッドは存在しません。以下のフォームより新しいパッドを作成してください。", "help_genericMore": "CryptPadの使い方についてはドキュメンテーションをご覧ください。", "whatis_drive": "CryptDriveでまとめて管理", @@ -1167,7 +1167,7 @@ "team_deleteConfirm": "チーム全体のデータを全て削除しようとしています。削除すると、チームの他のメンバーもデータにアクセスできなくなります。これは取り消せません。削除してよろしいですか?", "team_kickConfirm": "{0}はチームから削除された旨通知されます。よろしいですか?", "admin_instancePurposeHint": "インスタンスを運用する目的は何ですか?テレメトリーが有効になっている場合、回答は開発ロードマップに利用されます。", - "admin_purpose_experiment": "プラットフォームのテストあるいは新機能の開発", + "admin_purpose_experiment": "プラットフォームのテストもしくは新機能の開発", "admin_purpose_noanswer": "回答しない", "admin_instancePurposeTitle": "インスタンスの目的", "requestEdit_request": "{1}がパッド({0})の編集を希望しています", From 27f3223490ba132cd5ed995e310790d88be5ad2c Mon Sep 17 00:00:00 2001 From: ansuz Date: Fri, 2 Jul 2021 17:55:15 +0530 Subject: [PATCH 32/33] provide the language we detect to CKEditor --- www/pad/inner.js | 1 + 1 file changed, 1 insertion(+) diff --git a/www/pad/inner.js b/www/pad/inner.js index ae22af23c..304e9abe4 100644 --- a/www/pad/inner.js +++ b/www/pad/inner.js @@ -1327,6 +1327,7 @@ define([ $(waitFor()); }).nThen(function(waitFor) { Ckeditor.config.toolbarCanCollapse = true; + Ckeditor.config.language = Messages._getLanguage(); if (screen.height < 800) { Ckeditor.config.toolbarStartupExpanded = false; $('meta[name=viewport]').attr('content', From ca1016ad3a674b760bbf54767d7b2ad0add6fe97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Benqu=C3=A9?= Date: Fri, 2 Jul 2021 13:45:20 +0100 Subject: [PATCH 33/33] Add spacing to Form results --- www/form/app-form.less | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/www/form/app-form.less b/www/form/app-form.less index 433316448..95802e18b 100644 --- a/www/form/app-form.less +++ b/www/form/app-form.less @@ -470,7 +470,11 @@ //padding: 10px; } + .cp-form-creator-results-export { + margin-bottom: 20px; + } .cp-form-creator-results-content { + padding-bottom: 100px; .cp-form-block { background: @cp_form-bg1; padding: 10px;