diff --git a/res/app/components/stf/common-ui/modals/fatal-message/fatal-message.jade b/res/app/components/stf/common-ui/modals/fatal-message/fatal-message.jade index 83f17d34..31a6f8d5 100644 --- a/res/app/components/stf/common-ui/modals/fatal-message/fatal-message.jade +++ b/res/app/components/stf/common-ui/modals/fatal-message/fatal-message.jade @@ -3,8 +3,9 @@ button(type='button', ng-click='cancel()').close × h4.modal-title.text-danger i.fa.fa-warning - span(translate) Device was disconnected - .modal-body.text-danger(translate) Device is not in use anymore + .button-spacer + span(translate) Device was disconnected + .modal-body.text-danger(translate) You are no longer controlling the device. .modal-footer button.btn.btn-primary(type='button', ng-click='ok()') i.fa.fa-refresh diff --git a/res/app/components/stf/common-ui/modals/version-update/version-update-service.js b/res/app/components/stf/common-ui/modals/version-update/version-update-service.js index e09c4bbb..721f6b84 100644 --- a/res/app/components/stf/common-ui/modals/version-update/version-update-service.js +++ b/res/app/components/stf/common-ui/modals/version-update/version-update-service.js @@ -1,4 +1,4 @@ -module.exports = function FatalMessageServiceFactory($modal, $location) { +module.exports = function ServiceFactory($modal, $location) { var service = {} var ModalInstanceCtrl = function ($scope, $modalInstance) { diff --git a/res/app/components/stf/common-ui/modals/version-update/version-update-spec.js b/res/app/components/stf/common-ui/modals/version-update/version-update-spec.js index 4b20e0a6..5a14afb3 100644 --- a/res/app/components/stf/common-ui/modals/version-update/version-update-spec.js +++ b/res/app/components/stf/common-ui/modals/version-update/version-update-spec.js @@ -2,7 +2,7 @@ describe('VersionUpdateService', function() { beforeEach(module('stf.version-update')); - it('should ...', inject(function(FatalMessageService) { + it('should ...', inject(function(VersionUpdateService) { //expect(FatalMessageService.doSomething()).toEqual('something'); diff --git a/res/app/components/stf/device/device-service.js b/res/app/components/stf/device/device-service.js index 4a30dc06..90f01294 100644 --- a/res/app/components/stf/device/device-service.js +++ b/res/app/components/stf/device/device-service.js @@ -99,16 +99,16 @@ module.exports = function DeviceServiceFactory($http, socket) { // For convenience, add the sorting priority to each state function getStateSorting(state) { return { - 'using': 1, - 'available': 2, - 'ready': 3, - 'present': 4, - 'busy': 5, - 'absent': 6, - 'preparing': 7, - 'unauthorized': 8, - 'offline': 9 - }[state] || 10 + 'using': 10, + 'available': 9, + 'ready': 8, + 'present': 7, + 'busy': 6, + 'absent': 5, + 'preparing': 4, + 'unauthorized': 3, + 'offline': 2 + }[state] || 1 } function get(data) { diff --git a/res/app/components/stf/user/group/group-service.js b/res/app/components/stf/user/group/group-service.js index de2659d5..c30c3b68 100644 --- a/res/app/components/stf/user/group/group-service.js +++ b/res/app/components/stf/user/group/group-service.js @@ -1,3 +1,5 @@ +var Promise = require('bluebird') + module.exports = function GroupServiceFactory( socket , TransactionService @@ -6,6 +8,10 @@ module.exports = function GroupServiceFactory( } groupService.invite = function (device) { + if (!device.usable) { + return Promise.reject(new Error('Device is not usable')) + } + var tx = TransactionService.create(device) socket.emit('group.invite', device.channel, tx.channel, { requirements: { @@ -24,6 +30,10 @@ module.exports = function GroupServiceFactory( } groupService.kick = function (device) { + if (!device.usable) { + return Promise.reject(new Error('Device is not usable')) + } + var tx = TransactionService.create(device) socket.emit('group.kick', device.channel, tx.channel, { requirements: { diff --git a/res/app/control-panes/control-panes-controller.js b/res/app/control-panes/control-panes-controller.js index 299c9a9f..8d9aacf0 100644 --- a/res/app/control-panes/control-panes-controller.js +++ b/res/app/control-panes/control-panes-controller.js @@ -1,15 +1,4 @@ -module.exports = function ControlPanesController( - $scope -, $http -, gettext -, $routeParams -, $location -, DeviceService -, GroupService -, ControlService -, StorageService -, FatalMessageService -) { +module.exports = function ControlPanesController($scope, $http, gettext, $routeParams, $timeout, $location, DeviceService, GroupService, ControlService, StorageService, FatalMessageService) { var sharedTabs = [ { title: gettext('Screenshots'), @@ -83,53 +72,46 @@ module.exports = function ControlPanesController( $scope.installFileForced = function ($files) { $scope.$apply(function () { $scope.upload = { - progress: 0 - , lastData: 'uploading' + progress: 0, lastData: 'uploading' } }) return StorageService.storeFile('apk', $files, { - filter: function(file) { - return /\.apk$/i.test(file.name) - } - }) - .progressed(function(e) { + filter: function (file) { + return /\.apk$/i.test(file.name) + } + }) + .progressed(function (e) { if (e.lengthComputable) { $scope.$apply(function () { $scope.upload = { - progress: e.loaded / e.total * 100 - , lastData: 'uploading' + progress: e.loaded / e.total * 100, lastData: 'uploading' } }) } }) - .then(function(res) { + .then(function (res) { $scope.$apply(function () { $scope.upload = { - progress: 100 - , lastData: 'processing' + progress: 100, lastData: 'processing' } }) var href = res.data.resources.file0.href return $http.get(href + '/manifest') - .then(function(res) { + .then(function (res) { $scope.upload = { - progress: 100 - , lastData: 'success' - , settled: true + progress: 100, lastData: 'success', settled: true } if (res.data.success) { return $scope.installForced({ - href: href - , launch: true - , manifest: res.data.manifest + href: href, launch: true, manifest: res.data.manifest }) } }) }) - .catch(function(err) { + .catch(function (err) { $scope.$apply(function () { if (err.code === 'no_input_files') { $scope.upload = null @@ -137,10 +119,7 @@ module.exports = function ControlPanesController( else { console.log('Upload error', err) $scope.upload = { - progress: 100 - , lastData: 'fail' - , settled: true - , error: err.message + progress: 100, lastData: 'fail', settled: true, error: err.message } } }) @@ -175,17 +154,22 @@ module.exports = function ControlPanesController( return device }) .catch(function () { - $location.path('/') + $timeout(function () { + $location.path('/') + }) }) + $scope.$watch('device') + $scope.$watch('device.state', function (newValue, oldValue) { + if (newValue !== oldValue) { if (oldValue === 'using') { FatalMessageService.open(angular.copy($scope.device)) - } else { - } + } else if (typeof newValue === 'undefined' && typeof oldValue === 'undefined') { + //FatalMessageService.open(angular.copy($scope.device)) } }, true) } diff --git a/res/app/device-list/device-list-details-controller.js b/res/app/device-list/device-list-details-controller.js index a12533bc..b9a217b9 100644 --- a/res/app/device-list/device-list-details-controller.js +++ b/res/app/device-list/device-list-details-controller.js @@ -30,7 +30,7 @@ module.exports = function DeviceListCtrlDetails($scope, DeviceService, GroupServ // }) $scope.tableSorting = { - stateSorting: 'asc' // initial sorting + stateSorting: 'desc' // initial sorting } // SettingsService.bind($scope, { // key: 'tableSorting', diff --git a/res/common/lang/po/stf.ja.po b/res/common/lang/po/stf.ja.po index e4bd5e5c..1e168a43 100644 --- a/res/common/lang/po/stf.ja.po +++ b/res/common/lang/po/stf.ja.po @@ -235,13 +235,9 @@ msgstr "開発者向け設定" msgid "Device" msgstr "デバイス" -#: /Users/a12907/STF/stf/tmp/html/app/components/stf/common-ui/modals/fatal-message/fatal-message.html -msgid "Device is not in use anymore" -msgstr "実機が使われなくなりました" - #: /Users/a12907/STF/stf/tmp/html/app/components/stf/common-ui/modals/fatal-message/fatal-message.html msgid "Device was disconnected" -msgstr "デバイスがオフラインになりました" +msgstr "デバイスへの接続が切れました" #: /Users/a12907/STF/stf/tmp/html/app/device-list/device-list.html msgid "Devices" @@ -1038,6 +1034,13 @@ msgstr "Y DPI" msgid "Yes" msgstr "はい" +#: /Users/a12907/STF/stf/tmp/html/app/components/stf/common-ui/modals/fatal-message/fatal-message.html +msgid "You are no longer controlling the device." +msgstr "この実機のリモート操作ができなくなりました。" + +#~ msgid "Device is not in use anymore" +#~ msgstr "実機が使われなくなりました" + #~ msgid "Device Port" #~ msgstr "端末側のポート" diff --git a/res/common/lang/po/stf.pot b/res/common/lang/po/stf.pot index a1bbf14f..e8e7ec97 100644 --- a/res/common/lang/po/stf.pot +++ b/res/common/lang/po/stf.pot @@ -231,10 +231,6 @@ msgstr "" msgid "Device" msgstr "" -#: /Users/a12907/STF/stf/tmp/html/app/components/stf/common-ui/modals/fatal-message/fatal-message.html -msgid "Device is not in use anymore" -msgstr "" - #: /Users/a12907/STF/stf/tmp/html/app/components/stf/common-ui/modals/fatal-message/fatal-message.html msgid "Device was disconnected" msgstr "" @@ -1026,3 +1022,7 @@ msgstr "" #: /Users/a12907/STF/stf/res/app/components/stf/device/device-info-filter/index.js msgid "Yes" msgstr "" + +#: /Users/a12907/STF/stf/tmp/html/app/components/stf/common-ui/modals/fatal-message/fatal-message.html +msgid "You are no longer controlling the device." +msgstr "" diff --git a/res/common/lang/translations/stf.ja.json b/res/common/lang/translations/stf.ja.json index 9eb6812c..cb777c32 100644 --- a/res/common/lang/translations/stf.ja.json +++ b/res/common/lang/translations/stf.ja.json @@ -1 +1 @@ -{"ja":{"(Absent)":"(オフライン)","-":"-","A new version of STF is available":"STFの新しいバージョンがリリースされました","ABI":"ABI","AC":"AC","Absent":"オフライン","Action":"アクション","Activity":"アクティビティ","Add":"追加","Advanced":"高度機能","Advanced Input":"高度な入力","Airplane Mode":"機内モード","App":"アプリ","App Store":"アプリストア","App Upload":"アプリアップロード","Apps":"アプリ","Available":"利用可能","Back":"戻る","Battery":"バッテリー","Battery Health":"バッテリー健康状態","Battery Level":"バッテリーレベル","Battery Source":"バッテリー電力源","Battery Status":"バッテリー状態","Battery Temperature":"バッテリー温度","Bluetooth":"Bluetooth","Browser":"ブラウザ","Busy":"貸し出し中","CPU":"CPU","Camera":"カメラ","Cannot access specified URL":"指定されたURLはアクセスできません","Carrier":"キャリア","Category":"カテゴリー","Charging":"充電中","Clear":"クリア","Clipboard":"クリップボード","Close":"閉じる","Cold":"コールド","Connected":"接続中","Connected successfully.":"接続できました。","Connecting...":"接続中...","Cookies":"クッキー","D-pad Center":"D-padセンター","D-pad Down":"D-pad下","D-pad Left":"D-pad左","D-pad Right":"D-pad右","D-pad Up":"D-pad上","Dashboard":"ダッシュボード","Data":"データ","Dead":"残量なし","Delete":"削除","Density":"表示密度","Details":"詳細","Developer Settings":"開発者向け設定","Device":"デバイス","Device is not in use anymore":"実機が使われなくなりました","Device was disconnected":"デバイスがオフラインになりました","Devices":"端末リスト","Discharging":"放電中","Disconnected.
Socket connection was lost, try again reloading the page.":"接続が切れました。
ソケット接続が失われました。もう一度ページを再ロードしてみてください。","Display":"ディスプレー","Domain":"ドメイン","Drop file to upload":"ここにファイルをドロップ","Dummy":"ダミー","Eject":"排出","Enable notifications":"通知を有効にする","Encrypted":"暗号化","Error":"エラー","Error while connecting.":"接続中にエラーが発生しました。","Error while getting data":"データ取得中にエラーが発生しました。","Error while reconnecting.":"再接続中にエラーが発生しました。","Error.":"エラー","Ethernet":"イーサーネット","FPS":"FPS","Failed to download file":"ファイルのダウンロードが失敗しした。","Fast Forward":"早送り","Filter":"フィルター","Find Device":"実機を探す","Forward Ports":"ポートフォワード","Full":"フル","Get":"取得","Go Back":"戻る","Go Forward":"進む","Go to Device List":"端末リストへ","Good":"良い","Hardware":"ハードウェア","Health":"健康状態","Height":"高さ","Help":"ヘルプ","Hide Screen":"画面を非表しない","Home":"ホーム","Host":"ホスト","Hostname":"ホスト名","ICCID":"ICCID","ID":"ID","IMEI":"IMEI","Info":"情報","Inspect Device":"端末の要素検証","Inspecting is currently only supported in WebView":"要素の検証機能は、現在WebViewのみ対応","Inspector":"要素の検証","Installation failed":"インストールが失敗しました","Installing app...":"アプリをインストール中...","Landscape":"横","Language":"言語","Launch Activity":"アクティビティを起動する","Launching activity...":"アクティビティを起動中...","Level":"レベル","Local Settings":"ローカル設定","Location":"場所","Logs":"ログ","Manage Apps":"アプリ管理","Manufacturer":"メーカー","Media":"メディア","Menu":"メニュー","Mobile":"モバイル","Mobile DUN":"モバイルDUN","Mobile High Priority":"モバイル最優先","Mobile MMS":"モバイルMMS","Mobile SUPL":"モバイルSUPL","Model":"機種名","Model:":"機種名:","Mute":"音を消す","N/A":"適用なし","Name":"ネーム","Native":"Native","Navigation":"ブラウジング","Network":"ネットワーク","Next":"次","No":"いいえ","No clipboard data":"クリップボードデータはありません","No cookies to show":"クッキーはありません","No device screen":"画面が表示できません","No devices connected":"端末が接続されていません","No screenshots taken":"キャプチャはありません","Not Charging":"充電されていない","Nothing to inspect":"要素の検証対象はありません","Notifications":"通知","Number":"番号","OS":"OS","Offline":"オフライン","Open":"開く","Orientation":"方向","Over Voltage":"過電圧","Overheat":"過熱","PID":"PID","Package":"パッケージ","Path":"パス","Pause":"停止","Phone":"電話番号","Phone ICCID":"携帯ICCID","Phone IMEI":"携帯IMEI","Place":"場所","Platform":"プラットホーム","Play":"再生","Play/Pause":"再生/停止","Port":"ポート","Port forwarding":"ポートフォワーディング","Portrait":"縦","Power":"電源","Power Source":"電力源","Preparing":"準備中","Present":"存在する","Previous":"前","Processing...":"処理中...","Product":"型番","Pushing app...":"アプリをプッシュ中...","Ready":"利用可能","Reconnected successfully.":"正常に再接続しました。","Reconnecting...":"再接続中...","Record":"記録する","Reference":"参考","Refresh":"更新","Relaunch":"再起動","Relaunch the browser":"ブラウザを再起動する","Released":"発売日","Reload":"再読込","Reset":"初期化","Reset Settings":"すべての設定をリセット","Reset all browser settings":"ブラウザの設定をリセット","Retrieving the device screen has timed out.":"実機画面の取得はタイムアウトになりました。","Retry":"再試行","Rewind":"巻き戻す","Roaming":"ローミング","Run":"実行","Run Command":"コマンドを実行","Run JavaScript":"JavaScript注入","SDK":"SDK","SIM":"SIM","Save...":"保存する...","Saved to: {{savedTo}}":"保存先: {{savedTo}}","Screen":"解像度","Screenshot":"キャプチャ","Screenshots":"キャプチャ","Search":"検索","Secure":"セキュア","Serial":"シリアル","Set":"設定","Set Cookie":"クッキー設定","Settings":"設定","Shell":"シェル","Show All":"すべてを表示","Show Screen":"画面を表示する","Special Keys":"特別なキー","Start/Stop Logging":"ログ取得の開始/停止","Status":"ステータス","Stop":"停止","Stop Using":"停止する","Sub Type":"サブタイプ","Switch Charset":"文字入力の切り替え","TID":"TID","Tag":"タグ","Take Pageshot (Needs WebView running)":"ページ全体ショットを撮る(現在はWebViewのみ対応)","Take Screenshot":"スクリーンショットを撮る","Temperature":"温度","Text":"テキスト","This might be caused by a network error, or you might be trying to access a secure view.":"これはネットワークエラーに起因するか、暗号化されたビューに起因するかもしれません。","Time":"時刻","Try to reconnect":"再接続する","Type":"タイプ","USB":"USB","Unauthorized":"権限外","Unforward Ports":"ポートフォワード解除","Uninstall":"削除","Unknown":"未知","Unspecified Failure":"未定義の失敗","Upload From Link":"リンク先よりアップロードする","Upload complete":"アップロードが完了しました","Upload failed":"アップロードが失敗しました","Uploaded file is not valid":"アップロードされたファイル","Uploading...":"アップロード中...","Usb speed":"USB速度","Use":"利用する","User":"ユーザ","Using Fallback":"フォールバックを使用中","Value":"値","Version":"バージョン","Version Update":"バージョンアップ","Voltage":"電圧","Volume":"音量","Volume Down":"音量↓","Volume Up":"音量↑","Web":"Web","WiFi":"無線LAN","WiFi Settings":"無線LAN設定","WiMAX":"WiMAX","Width":"幅","Wireless":"無線","X DPI":"X DPI","Y DPI":"Y DPI","Yes":"はい","Device Port":"端末側のポート","Example: 3000":"例:3000","Local":"ローカル","Maker":"メーカー","Release":"リリース","Target IP / Hostname":"ローカル側のIP / ホスト名","Target Port":"ローカル側のポート","Target host (detect if blank)":"対象ホスト(空のときは自動検知)","Using":"利用中","(Needs refreshing the page)":"(ページの再読込が必要)","Aa":"あA","Control":"リモート操作","Detected":"検知済み","Failed to get device screen":"端末の画面が取得できません","H":"高","High":"高画質","High Quality":"高画質","Image Quality":"画質","Inspect":"要素の検証","Just control device":"端末を操作のみする","Keyboard Input":"キーボード入力","L":"低","Local storage":"ローカルストレージ","Low":"低画質","Low Quality":"低画質","M":"中","Medium":"中画質","Medium Quality":"中画質","Original":"原寸","Other Keys":"キー・その他","Pageshot":"ページ全体","Power Button":"電源ボタン","Release Date":"発売日","Resources":"リソース","Start Using":"利用する","System":"システム","Terminal":"ターミナル","Types text. Only ASCII characters are supported.":"テキストをタイピングします。ASCII文字のみ入力が可能。","USB Speed Benchmark":"USBベンチマーク","View device":"デバイスを表示する","{{ started ? 'Stop' : 'Start' }}":"{{ started ? '停止' : '取得' }}","Start":"開始","{{ device.control ? 'Stop' : 'Use' }}":"{{ device.control ? '停止する' : '利用する' }}","Inspect Current Page":"開いているページを検証","Input":"入力"}} \ No newline at end of file +{"ja":{"(Absent)":"(オフライン)","-":"-","A new version of STF is available":"STFの新しいバージョンがリリースされました","ABI":"ABI","AC":"AC","Absent":"オフライン","Action":"アクション","Activity":"アクティビティ","Add":"追加","Advanced":"高度機能","Advanced Input":"高度な入力","Airplane Mode":"機内モード","App":"アプリ","App Store":"アプリストア","App Upload":"アプリアップロード","Apps":"アプリ","Available":"利用可能","Back":"戻る","Battery":"バッテリー","Battery Health":"バッテリー健康状態","Battery Level":"バッテリーレベル","Battery Source":"バッテリー電力源","Battery Status":"バッテリー状態","Battery Temperature":"バッテリー温度","Bluetooth":"Bluetooth","Browser":"ブラウザ","Busy":"貸し出し中","CPU":"CPU","Camera":"カメラ","Cannot access specified URL":"指定されたURLはアクセスできません","Carrier":"キャリア","Category":"カテゴリー","Charging":"充電中","Clear":"クリア","Clipboard":"クリップボード","Close":"閉じる","Cold":"コールド","Connected":"接続中","Connected successfully.":"接続できました。","Connecting...":"接続中...","Cookies":"クッキー","D-pad Center":"D-padセンター","D-pad Down":"D-pad下","D-pad Left":"D-pad左","D-pad Right":"D-pad右","D-pad Up":"D-pad上","Dashboard":"ダッシュボード","Data":"データ","Dead":"残量なし","Delete":"削除","Density":"表示密度","Details":"詳細","Developer Settings":"開発者向け設定","Device":"デバイス","Device was disconnected":"デバイスへの接続が切れました","Devices":"端末リスト","Discharging":"放電中","Disconnected.
Socket connection was lost, try again reloading the page.":"接続が切れました。
ソケット接続が失われました。もう一度ページを再ロードしてみてください。","Display":"ディスプレー","Domain":"ドメイン","Drop file to upload":"ここにファイルをドロップ","Dummy":"ダミー","Eject":"排出","Enable notifications":"通知を有効にする","Encrypted":"暗号化","Error":"エラー","Error while connecting.":"接続中にエラーが発生しました。","Error while getting data":"データ取得中にエラーが発生しました。","Error while reconnecting.":"再接続中にエラーが発生しました。","Error.":"エラー","Ethernet":"イーサーネット","FPS":"FPS","Failed to download file":"ファイルのダウンロードが失敗しした。","Fast Forward":"早送り","Filter":"フィルター","Find Device":"実機を探す","Forward Ports":"ポートフォワード","Full":"フル","Get":"取得","Go Back":"戻る","Go Forward":"進む","Go to Device List":"端末リストへ","Good":"良い","Hardware":"ハードウェア","Health":"健康状態","Height":"高さ","Help":"ヘルプ","Hide Screen":"画面を非表しない","Home":"ホーム","Host":"ホスト","Hostname":"ホスト名","ICCID":"ICCID","ID":"ID","IMEI":"IMEI","Info":"情報","Inspect Device":"端末の要素検証","Inspecting is currently only supported in WebView":"要素の検証機能は、現在WebViewのみ対応","Inspector":"要素の検証","Installation failed":"インストールが失敗しました","Installing app...":"アプリをインストール中...","Landscape":"横","Language":"言語","Launch Activity":"アクティビティを起動する","Launching activity...":"アクティビティを起動中...","Level":"レベル","Local Settings":"ローカル設定","Location":"場所","Logs":"ログ","Manage Apps":"アプリ管理","Manufacturer":"メーカー","Media":"メディア","Menu":"メニュー","Mobile":"モバイル","Mobile DUN":"モバイルDUN","Mobile High Priority":"モバイル最優先","Mobile MMS":"モバイルMMS","Mobile SUPL":"モバイルSUPL","Model":"機種名","Model:":"機種名:","Mute":"音を消す","N/A":"適用なし","Name":"ネーム","Native":"Native","Navigation":"ブラウジング","Network":"ネットワーク","Next":"次","No":"いいえ","No clipboard data":"クリップボードデータはありません","No cookies to show":"クッキーはありません","No device screen":"画面が表示できません","No devices connected":"端末が接続されていません","No screenshots taken":"キャプチャはありません","Not Charging":"充電されていない","Nothing to inspect":"要素の検証対象はありません","Notifications":"通知","Number":"番号","OS":"OS","Offline":"オフライン","Open":"開く","Orientation":"方向","Over Voltage":"過電圧","Overheat":"過熱","PID":"PID","Package":"パッケージ","Path":"パス","Pause":"停止","Phone":"電話番号","Phone ICCID":"携帯ICCID","Phone IMEI":"携帯IMEI","Place":"場所","Platform":"プラットホーム","Play":"再生","Play/Pause":"再生/停止","Port":"ポート","Port forwarding":"ポートフォワーディング","Portrait":"縦","Power":"電源","Power Source":"電力源","Preparing":"準備中","Present":"存在する","Previous":"前","Processing...":"処理中...","Product":"型番","Pushing app...":"アプリをプッシュ中...","Ready":"利用可能","Reconnected successfully.":"正常に再接続しました。","Reconnecting...":"再接続中...","Record":"記録する","Reference":"参考","Refresh":"更新","Relaunch":"再起動","Relaunch the browser":"ブラウザを再起動する","Released":"発売日","Reload":"再読込","Reset":"初期化","Reset Settings":"すべての設定をリセット","Reset all browser settings":"ブラウザの設定をリセット","Retrieving the device screen has timed out.":"実機画面の取得はタイムアウトになりました。","Retry":"再試行","Rewind":"巻き戻す","Roaming":"ローミング","Run":"実行","Run Command":"コマンドを実行","Run JavaScript":"JavaScript注入","SDK":"SDK","SIM":"SIM","Save...":"保存する...","Saved to: {{savedTo}}":"保存先: {{savedTo}}","Screen":"解像度","Screenshot":"キャプチャ","Screenshots":"キャプチャ","Search":"検索","Secure":"セキュア","Serial":"シリアル","Set":"設定","Set Cookie":"クッキー設定","Settings":"設定","Shell":"シェル","Show All":"すべてを表示","Show Screen":"画面を表示する","Special Keys":"特別なキー","Start/Stop Logging":"ログ取得の開始/停止","Status":"ステータス","Stop":"停止","Stop Using":"停止する","Sub Type":"サブタイプ","Switch Charset":"文字入力の切り替え","TID":"TID","Tag":"タグ","Take Pageshot (Needs WebView running)":"ページ全体ショットを撮る(現在はWebViewのみ対応)","Take Screenshot":"スクリーンショットを撮る","Temperature":"温度","Text":"テキスト","This might be caused by a network error, or you might be trying to access a secure view.":"これはネットワークエラーに起因するか、暗号化されたビューに起因するかもしれません。","Time":"時刻","Try to reconnect":"再接続する","Type":"タイプ","USB":"USB","Unauthorized":"権限外","Unforward Ports":"ポートフォワード解除","Uninstall":"削除","Unknown":"未知","Unspecified Failure":"未定義の失敗","Upload From Link":"リンク先よりアップロードする","Upload complete":"アップロードが完了しました","Upload failed":"アップロードが失敗しました","Uploaded file is not valid":"アップロードされたファイル","Uploading...":"アップロード中...","Usb speed":"USB速度","Use":"利用する","User":"ユーザ","Using Fallback":"フォールバックを使用中","Value":"値","Version":"バージョン","Version Update":"バージョンアップ","Voltage":"電圧","Volume":"音量","Volume Down":"音量↓","Volume Up":"音量↑","Web":"Web","WiFi":"無線LAN","WiFi Settings":"無線LAN設定","WiMAX":"WiMAX","Width":"幅","Wireless":"無線","X DPI":"X DPI","Y DPI":"Y DPI","Yes":"はい","You are no longer controlling the device.":"この実機のリモート操作ができなくなりました。","Device is not in use anymore":"実機が使われなくなりました","Device Port":"端末側のポート","Example: 3000":"例:3000","Local":"ローカル","Maker":"メーカー","Release":"リリース","Target IP / Hostname":"ローカル側のIP / ホスト名","Target Port":"ローカル側のポート","Target host (detect if blank)":"対象ホスト(空のときは自動検知)","Using":"利用中","(Needs refreshing the page)":"(ページの再読込が必要)","Aa":"あA","Control":"リモート操作","Detected":"検知済み","Failed to get device screen":"端末の画面が取得できません","H":"高","High":"高画質","High Quality":"高画質","Image Quality":"画質","Inspect":"要素の検証","Just control device":"端末を操作のみする","Keyboard Input":"キーボード入力","L":"低","Local storage":"ローカルストレージ","Low":"低画質","Low Quality":"低画質","M":"中","Medium":"中画質","Medium Quality":"中画質","Original":"原寸","Other Keys":"キー・その他","Pageshot":"ページ全体","Power Button":"電源ボタン","Release Date":"発売日","Resources":"リソース","Start Using":"利用する","System":"システム","Terminal":"ターミナル","Types text. Only ASCII characters are supported.":"テキストをタイピングします。ASCII文字のみ入力が可能。","USB Speed Benchmark":"USBベンチマーク","View device":"デバイスを表示する","{{ started ? 'Stop' : 'Start' }}":"{{ started ? '停止' : '取得' }}","Start":"開始","{{ device.control ? 'Stop' : 'Use' }}":"{{ device.control ? '停止する' : '利用する' }}","Inspect Current Page":"開いているページを検証","Input":"入力"}} \ No newline at end of file