From 58f3a76da76e65cc53f8d8ca7ff60b3e1579083e Mon Sep 17 00:00:00 2001 From: Hiroyasu Nishiyama Date: Sat, 15 Jan 2022 20:39:05 +0900 Subject: [PATCH] fix to make actions list i18n ready and Japanese translation --- .../editor-client/locales/ja/editor.json | 132 ++++++++++++++++++ .../editor-client/src/js/ui/actionList.js | 19 ++- .../editor-client/src/js/ui/keyboard.js | 45 ++++-- 3 files changed, 184 insertions(+), 12 deletions(-) diff --git a/packages/node_modules/@node-red/editor-client/locales/ja/editor.json b/packages/node_modules/@node-red/editor-client/locales/ja/editor.json index 17054c0d3..2bee33955 100644 --- a/packages/node_modules/@node-red/editor-client/locales/ja/editor.json +++ b/packages/node_modules/@node-red/editor-client/locales/ja/editor.json @@ -1151,5 +1151,137 @@ "ru": "ロシア語", "zh-CN": "中国語(簡体)", "zh-TW": "中国語(繁体)" + }, + "action-list": { + "toggle-show-tips" : "ヒント表示切替", + "show-about" : "Node-REDの説明を表示", + "show-welcome-tour": "ウェルカムツアー表示", + "show-next-tab": "次のタブを表示", + "show-previous-tab": "前のタブを表示", + "add-flow": "フローを追加", + "add-flow-to-right": "フローを右に追加", + "edit-flow": "フローを編集", + "remove-flow": "フローを削除", + "enable-flow": "フローを有効化", + "disable-flow": "フローを無効化", + "hide-flow": "フローを隠す", + "hide-other-flows": "他のフローを非表示", + "hide-all-flows": "全てのフローを非表示", + "show-all-flows": "全てのフローを表示", + "show-last-hidden-flow": "最後に非表示にしたフローを表示", + "list-hidden-flows": "非表示フローを表示", + "list-flows": "フロー一覧", + "list-subflows": "サブフロー一覧", + "go-to-previous-location": "前の位置に移動", + "go-to-next-location": "次の位置に移動", + "copy-selection-to-internal-clipboard": "選択をクリップボードにコピー", + "cut-selection-to-internal-clipboard": "選択をクリップボードに切り取り", + "paste-from-internal-clipboard": "クリップボードから貼り付け", + "detach-selected-nodes": "選択ノードを接続から外す", + "delete-selection": "選択を削除", + "delete-selection-and-reconnect": "選択を削除し再接続", + "edit-selected-node": "選択したノードを編集", + "go-to-selection": "選択に移動", + "undo": "変更操作を戻す", + "redo": "変更操作をやり直し", + "select-all-nodes": "全てのノードを選択", + "select-none": "ノードを選択", + "enable-selected-nodes": "選択ノードを有効化", + "disable-selected-nodes": "選択ノードを無効化", + "toggle-show-grid": "グリッド表示切替", + "toggle-snap-grid": "ノードの配置補助切替", + "toggle-status": "ステータス表示切替", + "show-selected-node-labels": "選択したノードのラベルを表示", + "hide-selected-node-labels": "選択したノードのラベルを非表示", + "scroll-view-up": "上スクロール", + "scroll-view-right": "右スクロール", + "scroll-view-down": "下スクロール", + "scroll-view-left": "左スクロール", + "step-view-up": "一単位上スクロール", + "step-view-right": "一単位右スクロール", + "step-view-down": "一単位下スクロール", + "step-view-left": "一単位左スクロール", + "move-selection-up": "選択を上移動", + "move-selection-right": "選択を右移動", + "move-selection-down": "選択を下移動", + "move-selection-left": "選択を左移動", + "move-selection-forwards": "選択を前面に移動", + "move-selection-backwards": "選択を背面に移動", + "move-selection-to-front": "選択を最前面に移動", + "move-selection-to-back": "選択を最背面に移動", + "step-selection-up": "選択を一単位上移動", + "step-selection-right": "選択を一単位右移動", + "step-selection-down": "選択を一単位下移動", + "step-selection-left": "選択を一単位左移動", + "select-connected-nodes": "接続されたノードを選択", + "select-downstream-nodes": "後方に接続されたノードを選択", + "select-upstream-nodes": "前方に接続されたノードを選択", + "go-to-next-node": "次のノードに移動", + "go-to-previous-node": "前のノードに移動", + "go-to-next-sibling": "次の兄弟ノードに移動", + "go-to-previous-sibling": "前の兄弟ノードに移動", + "go-to-nearest-node-on-left": "最も近い左側ノードに移動", + "go-to-nearest-node-on-right": "最も近い右側ノードに移動", + "go-to-nearest-node-above": "最も近い上側ノードに移動", + "go-to-nearest-node-below": "最も近い下側ノードに移動", + "align-selection-to-grid": "選択を整列", + "align-selection-to-left": "選択を左揃え", + "align-selection-to-right": "選択を右揃え", + "align-selection-to-top": "選択を上揃え", + "align-selection-to-bottom": "選択を下揃え", + "align-selection-to-middle": "選択を上下中央揃え", + "align-selection-to-center": "選択を左右中央揃え", + "distribute-selection-horizontally": "選択を左右に整列", + "distribute-selection-vertically": "選択を上下に整列", + "wire-series-of-nodes": "ノードを一続きに接続", + "wire-node-to-multiple": "ノードを複数に接続", + "show-user-settings": "ユーザ設定を表示", + "show-help": "ヘルプを表示", + "toggle-palette": "パレットの表示切替", + "show-event-log": "イベントログを表示", + "manage-palette": "パレットの管理", + "toggle-sidebar": "サイドバーの表示切替", + "show-info-tab": "ノード情報タブの表示", + "show-help-tab": "ノードヘルプタブの表示", + "show-config-tab": "設定ノードタブの表示", + "select-all-config-nodes": "全ての設定ノードを選択", + "delete-config-selection": "選択した設定ノードを削除", + "show-context-tab": "コンテクキストデータタブを表示", + "create-subflow": "サブフローを作成", + "convert-to-subflow": "選択をサブフローに変換", + "group-selection": "選択をグループ化", + "ungroup-selection": "選択をグループ解除", + "merge-selection-to-group": "選択をグループにマージ", + "remove-selection-from-group": "選択をグループから削除", + "copy-group-style": "グループのスタイルをコピー", + "paste-group-style": "グループのスタイルを貼り付け", + "show-export-dialog": "書き出しダイアログを表示", + "show-import-dialog": "読み込みダイアログを表示", + "show-library-export-dialog": "ライブラリ書き出しダイアログを表示", + "show-library-import-dialog": "ライブラリ読み込みダイアログを表示", + "show-examples-import-dialog": "サンプル読み込みダイアログを表示", + "search": "検索", + "show-action-list": "アクション一覧を表示", + "confirm-edit-tray": "編集を完了", + "cancel-edit-tray": "編集をキャンセル", + "show-remote-diff": "リモートとの変更差分を表示", + "deploy-flows": "フローをデプロイ", + "restart-flows": "フローを再起動", + "set-deploy-type-to-full": "デプロイを「全て」に設定", + "set-deploy-type-to-modified-flows": "デプロイを「変更したフロー」に設定", + "set-deploy-type-to-modified-nodes": "デプロイを「変更したノード」に設定", + "show-debug-tab": "デバッグタブを表示", + "clear-debug-messages": "デバッグメッセージをクリア", + "clear-filtered-debug-messages": "フィルタしたデバッグメッセージをクリア", + "activate-selected-debug-nodes": "選択したデバッグノードを有効化", + "activate-all-debug-nodes": "全てのデバッグノードを有効化", + "activate-all-flow-debug-nodes" : "フロー内の全デバッグノードを有効化", + "deactivate-selected-debug-nodes": "選択したデバッグノードを無効化", + "deactivate-all-debug-nodes": "全てのデバッグノードを無効化", + "deactivate-all-flow-debug-nodes": "フロー内の全デバッグノードを無効化", + "zoom-in": "ズームイン", + "zoom-out": "ズームアウト", + "zoom-reset": "ズームリセット", + "toggle-navigator": "ナビゲータ表示切替" } } diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/actionList.js b/packages/node_modules/@node-red/editor-client/src/js/ui/actionList.js index a1ed26afb..5496ee1f4 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/actionList.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/actionList.js @@ -164,11 +164,26 @@ RED.actionList = (function() { searchResults.editableList('empty'); results = []; var actions = RED.actions.list(); + actions.forEach(function (sc) { + var id = sc.id.replace(/^.*:/,""); + var key = "action-list."+id; + var translation = RED._(key); + if (translation !== key) { + sc.translation = translation; + } + }); actions.sort(function(A,B) { - return A.id.localeCompare(B.id); + var Aid = A.translation ? A.translation : A.id; + var Bid = B.translation ? B.translation : B.id; + return Aid.localeCompare(Bid); }); actions.forEach(function(action) { - action.label = action.id.replace(/:/,": ").replace(/-/g," ").replace(/(^| )./g,function() { return arguments[0].toUpperCase()}); + if (action.translation) { + action.label = action.translation; + } + else { + action.label = action.id.replace(/:/,": ").replace(/-/g," ").replace(/(^| )./g,function() { return arguments[0].toUpperCase()}); + } action._label = action.label.toLowerCase(); searchResults.editableList('addItem',action) }) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/keyboard.js b/packages/node_modules/@node-red/editor-client/src/js/ui/keyboard.js index 5c1be9c2b..c722d0411 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/keyboard.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/keyboard.js @@ -588,13 +588,16 @@ RED.keyboard = (function() { var item = $('
').appendTo(container); container.data('data',object); - var text = object.id.replace(/(^.+:([a-z]))|(-([a-z]))/g,function() { - if (arguments[5] === 0) { - return arguments[2].toUpperCase(); - } else { - return " "+arguments[4].toUpperCase(); - } - }); + var text = object.translation; + if (!object.translation) { + text = object.id.replace(/(^.+:([a-z]))|(-([a-z]))/g,function() { + if (arguments[5] === 0) { + return arguments[2].toUpperCase(); + } else { + return " "+arguments[4].toUpperCase(); + } + }); + } var label = $('
').addClass("keyboard-shortcut-entry-text").text(text).appendTo(item); var user = $('').prependTo(label); @@ -635,7 +638,14 @@ RED.keyboard = (function() { } else { filterValue = filterValue.replace(/\s/g,""); shortcutList.editableList('filter', function(data) { - return data.id.toLowerCase().replace(/^.*:/,"").replace("-","").indexOf(filterValue) > -1; + var label; + if (data.translation) { + label = data.translation.toLowerCase(); + } + else { + label = data.id.toLowerCase().replace(/^.*:/,"").replace("-",""); + } + return label.indexOf(filterValue) > -1; }) } } @@ -656,9 +666,24 @@ RED.keyboard = (function() { }); var shortcuts = RED.actions.list(); + var missing = []; + shortcuts.forEach(function (sc) { + var id = sc.id.replace(/^.*:/,""); + var key = "action-list."+id; + var translation = RED._(key); + + if (translation !== key) { + sc.translation = translation; + } + else { + missing.push(id); + } + }); + // console.log("; missing:", missing); + shortcuts.sort(function(A,B) { - var Aid = A.id.replace(/^.*:/,"").replace(/[ -]/g,"").toLowerCase(); - var Bid = B.id.replace(/^.*:/,"").replace(/[ -]/g,"").toLowerCase(); + var Aid = A.translation ? A.translation : A.id.replace(/^.*:/,"").replace(/[ -]/g,"").toLowerCase(); + var Bid = B.translation ? B.translation : B.id.replace(/^.*:/,"").replace(/[ -]/g,"").toLowerCase(); return Aid.localeCompare(Bid); }); knownShortcuts = new Set();