remote-webview-debugger 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/CHANGELOG.zh-CN.md +20 -0
- package/README.ar.md +185 -0
- package/README.de.md +169 -0
- package/README.es.md +169 -0
- package/README.fr.md +169 -0
- package/README.ja.md +169 -0
- package/README.ko.md +169 -0
- package/README.md +68 -14
- package/README.pt-BR.md +169 -0
- package/README.ru.md +169 -0
- package/README.zh-CN.md +69 -14
- package/README.zh-TW.md +169 -0
- package/dist/index.d.ts +216 -8
- package/dist/index.mjs +2479 -2873
- package/dist/index.mjs.map +1 -1
- package/dist/locales/ar.d.ts +4 -0
- package/dist/locales/ar.js +2 -0
- package/dist/locales/ar.mjs +150 -0
- package/dist/locales/ar.mjs.map +1 -0
- package/dist/locales/de.d.ts +4 -0
- package/dist/locales/de.js +2 -0
- package/dist/locales/de.mjs +150 -0
- package/dist/locales/de.mjs.map +1 -0
- package/dist/locales/es.d.ts +4 -0
- package/dist/locales/es.js +2 -0
- package/dist/locales/es.mjs +150 -0
- package/dist/locales/es.mjs.map +1 -0
- package/dist/locales/fr.d.ts +4 -0
- package/dist/locales/fr.js +2 -0
- package/dist/locales/fr.mjs +150 -0
- package/dist/locales/fr.mjs.map +1 -0
- package/dist/locales/ja.d.ts +4 -0
- package/dist/locales/ja.js +2 -0
- package/dist/locales/ja.mjs +150 -0
- package/dist/locales/ja.mjs.map +1 -0
- package/dist/locales/ko.d.ts +4 -0
- package/dist/locales/ko.js +2 -0
- package/dist/locales/ko.mjs +156 -0
- package/dist/locales/ko.mjs.map +1 -0
- package/dist/locales/pt.d.ts +4 -0
- package/dist/locales/pt.js +2 -0
- package/dist/locales/pt.mjs +150 -0
- package/dist/locales/pt.mjs.map +1 -0
- package/dist/locales/ru.d.ts +4 -0
- package/dist/locales/ru.js +2 -0
- package/dist/locales/ru.mjs +150 -0
- package/dist/locales/ru.mjs.map +1 -0
- package/dist/locales/zh-TW.d.ts +4 -0
- package/dist/locales/zh-TW.js +2 -0
- package/dist/locales/zh-TW.mjs +150 -0
- package/dist/locales/zh-TW.mjs.map +1 -0
- package/dist/sdk.js +24 -326
- package/dist/sdk.js.map +1 -1
- package/package.json +8 -2
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! remote-webview-debugger sdk v0.2.0 | locale pt */
|
|
2
|
+
(function(){let e={id:`pt`,name:`Português`,dir:`ltr`,ui:{levels:{observe:`Apenas visualizar`,interact:`Visualizar e interagir`,advanced:`Avançado (executar scripts, ler armazenamento)`},attachLevels:{observe:`Apenas visualizar`,interact:`Visualizar e interagir`,advanced:`Avançado (também executar scripts, ler armazenamento)`},state:{none:`Inativo: nenhuma IA conectada`,observe:`A IA está vendo esta página`,agent:`A IA está no controle; seus toques estão pausados`,user:`Você assumiu o controle; a IA está pausada`},link:{connecting:`Conectando`,online:`Online`,offline:`Offline`},connecting:`Conectando…`,helpPending:`Em atendimento`,copy:`Copiar`,copied:`Copiado`,noteHelp:`Assistência solicitada. O desenvolvedor vai encontrar você por este código do dispositivo.`,noteAuto:`Permissão automática ativada: a IA se conecta sem perguntar. Você pode assumir o controle ou encerrar a qualquer momento.`,noteShare:`Envie este código do dispositivo para o desenvolvedor. A IA pede sua permissão antes de se conectar, e você pode assumir o controle ou encerrar a qualquer momento.`,help:`Solicitar assistência`,cancelHelp:`Cancelar solicitação`,collapse:`Ocultar`,deviceCode:`Código do dispositivo`,barViewing:`IA vendo`,barAgent:`IA operando`,barUser:`Sua vez`,connectedFor:e=>`Conectado · ${e}`,takeover:`Assumir`,handback:`Devolver à IA`,end:`Encerrar`,autoTitle:`Permitir a IA automaticamente`,autoOn:e=>`Conecta sem perguntar · ${e}`,autoOff:`Perguntar sempre que a IA quiser se conectar`,lockTitle:`Bloquear a tela com a IA conectada`,lockOn:`Seus toques e deslizes ficam bloqueados enquanto a IA estiver conectada`,lockOff:`Você ainda pode tocar e rolar; tente não atrapalhar a IA`,lockedToast:`A tela será bloqueada enquanto a IA estiver conectada`,unlockedToast:`A tela não será bloqueada enquanto a IA estiver conectada`,autoOffToast:`Permissão automática desativada. A IA vai pedir antes de se conectar`,autoDialogTitle:`Ativar a permissão automática?`,autoDialogText:`Quando a IA pedir para se conectar a este dispositivo, ela se conecta na hora com o acesso que você escolher abaixo. Você verá um aviso toda vez, pode assumir o controle ou encerrar a qualquer momento e pode desativar isso aqui.`,turnOn:`Ativar`,cancel:`Cancelar`,autoOnToast:e=>`Permissão automática ativada · ${e}`,countdown:e=>`Negado automaticamente em ${e} s`,agentName:`Assistente de IA`,autoAllowedToast:(e,t)=>`“${e}” permitido automaticamente · ${t}`,attachTitle:`A IA quer se conectar`,attachText:e=>`“${e}” quer ver esta página. Permitir?`,confirmTitle:`Confirme, por favor`,confirmText:e=>`A IA quer ${e}. Permitir?`,allow:`Permitir`,deny:`Negar`},action:{quote:e=>`“${e}”`,click:e=>`tocar em ${e}`,enterActivate:e=>`pressionar Enter em ${e}`,enterSubmit:e=>`pressionar Enter para enviar ${e}`},agent:{missingParam:e=>`Parâmetro ausente: ${e}`,notString:e=>`O parâmetro ${e} deve ser uma string`,unknownMethod:e=>`Método desconhecido: ${e}`,needLevel:e=>`Requer o nível ${e}`,takenOver:`O usuário assumiu o controle; aguarde até que ele o devolva`,userDenied:`O usuário negou esta ação`,confirmBusy:`Ainda aguardando o usuário confirmar a ação anterior`,unknownModifier:e=>`Tecla modificadora desconhecida: ${e}`,unknownKey:e=>`Tecla desconhecida: ${e}`,refNotInSnapshot:e=>`ref=${e} não está no snapshot mais recente; faça um novo snapshot`,refDetached:e=>`O elemento de ref=${e} não está mais na página; faça um novo snapshot`,queryNeedsCriteria:`É necessário pelo menos um de text, role ou name`,noSuchRecord:e=>`Não há registro seq=${e} no log da sessão (ele pode ter sido removido)`,noSuchSession:e=>`Não há log da sessão ${e} neste dispositivo (só as 3 últimas inicializações são mantidas)`,noSessionLog:`Ainda não há log da sessão neste dispositivo (o projeto pode ter desativado a gravação, ou a página passou run({ record: false }))`,sessionLogUnavailable:`IndexedDB não está disponível nesta página: sem log da sessão`,readOnly:e=>`${e} é somente leitura`,isSelect:e=>`${e} é uma lista suspensa; use rwd.select`,notFillable:e=>`${e} não é um campo de texto e não pode ser preenchido`,notSelect:e=>`${e} não é uma lista suspensa (select); use click`,singleSelect:`Esta lista suspensa permite apenas uma opção`,noSuchOption:(e,t)=>`A lista suspensa não tem a opção “${e}”; disponíveis: ${t.join(`, `)}`,optionDisabled:e=>`A opção “${e}” está desativada`,badUrl:e=>`URL inválida: ${e}`,httpOnly:`Só é possível abrir URLs http(s)`,textAppearTimeout:e=>`Tempo esgotado aguardando o texto “${e}” aparecer`,textGoneTimeout:e=>`Tempo esgotado aguardando o texto “${e}” desaparecer`,badFunction:e=>`Não foi possível analisar function: ${e}`,notAFunction:`function deve ser uma expressão de função, por exemplo "() => document.title"`,elementDetached:e=>`O elemento ${e} não está mais na página; faça um novo snapshot`,notActionable:(e,t)=>`Não é possível operar o elemento ${e}: ${t}`,notVisible:e=>`O elemento ${e} não está visível`,reasonMoving:`a posição dele continua mudando (pode estar em animação)`,reasonOffscreen:`ele está fora da área visível (viewport)`,reasonObscured:(e,t)=>`o ponto do clique está coberto por ${e} (ref=${t}; clique nele diretamente, por exemplo no fundo de um pop-up para fechá-lo)`,overlayHeader:`[Sobreposições] Estes elementos ficam por cima da página. Quando um clique for bloqueado, clique neles diretamente (por exemplo no fundo para fechar um pop-up):`,overlayMask:(e,t,n)=>`- fundo ${e}, cobre ${t}% da viewport [ref=${n}]`,overlayLayer:(e,t,n,r)=>`- camada ${e}${t?` “${t}”`:``}, cobre ${n}% da viewport [ref=${r}]`,reasonHidden:`ele não está visível`,reasonDisabled:`ele está desativado`,storageUnavailable:e=>`${e}Storage não está disponível`,badStorageArea:`O parâmetro area deve ser 'local', 'session' ou 'cookie'`,requestFailed:`A requisição falhou`,noSuchRequest:e=>`Nenhuma requisição com id=${e} (ela pode ter sido descartada)`,netFailed:(e,t)=>`${e} → falhou (${t})`,wsFailed:e=>`WebSocket ${e} → falhou`,tapped:(e,t)=>`Tocou em ${e} “${t}”`,tappedTag:(e,t)=>`Tocou em ${e} ${t}`,roles:{button:`botão`,link:`link`,textbox:`campo de texto`,searchbox:`campo de busca`,checkbox:`caixa de seleção`,radio:`botão de opção`,switch:`chave`,combobox:`lista suspensa`,listbox:`lista`,option:`opção`,tab:`aba`,menuitem:`item de menu`,img:`imagem`,heading:`título`,cell:`célula`,row:`linha`,listitem:`item de lista`},element:`elemento`}};var t=typeof window<`u`?window:{},n=t.RemoteWebviewDebugger;n&&n.registerLocale?n.registerLocale(e):(t.__RWD_LOCALES__=t.__RWD_LOCALES__||[]).push(e)})();
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/*! remote-webview-debugger sdk v0.2.0 | includes chobitsu (MIT), Playwright (Apache-2.0), licia (MIT), modern-screenshot (MIT) */
|
|
2
|
+
// src/locales/pt.ts
|
|
3
|
+
var e = {
|
|
4
|
+
id: "pt",
|
|
5
|
+
name: "Português",
|
|
6
|
+
dir: "ltr",
|
|
7
|
+
ui: {
|
|
8
|
+
levels: {
|
|
9
|
+
observe: "Apenas visualizar",
|
|
10
|
+
interact: "Visualizar e interagir",
|
|
11
|
+
advanced: "Avançado (executar scripts, ler armazenamento)"
|
|
12
|
+
},
|
|
13
|
+
attachLevels: {
|
|
14
|
+
observe: "Apenas visualizar",
|
|
15
|
+
interact: "Visualizar e interagir",
|
|
16
|
+
advanced: "Avançado (também executar scripts, ler armazenamento)"
|
|
17
|
+
},
|
|
18
|
+
state: {
|
|
19
|
+
none: "Inativo: nenhuma IA conectada",
|
|
20
|
+
observe: "A IA está vendo esta página",
|
|
21
|
+
agent: "A IA está no controle; seus toques estão pausados",
|
|
22
|
+
user: "Você assumiu o controle; a IA está pausada"
|
|
23
|
+
},
|
|
24
|
+
link: {
|
|
25
|
+
connecting: "Conectando",
|
|
26
|
+
online: "Online",
|
|
27
|
+
offline: "Offline"
|
|
28
|
+
},
|
|
29
|
+
connecting: "Conectando…",
|
|
30
|
+
helpPending: "Em atendimento",
|
|
31
|
+
copy: "Copiar",
|
|
32
|
+
copied: "Copiado",
|
|
33
|
+
noteHelp: "Assistência solicitada. O desenvolvedor vai encontrar você por este código do dispositivo.",
|
|
34
|
+
noteAuto: "Permissão automática ativada: a IA se conecta sem perguntar. Você pode assumir o controle ou encerrar a qualquer momento.",
|
|
35
|
+
noteShare: "Envie este código do dispositivo para o desenvolvedor. A IA pede sua permissão antes de se conectar, e você pode assumir o controle ou encerrar a qualquer momento.",
|
|
36
|
+
help: "Solicitar assistência",
|
|
37
|
+
cancelHelp: "Cancelar solicitação",
|
|
38
|
+
collapse: "Ocultar",
|
|
39
|
+
deviceCode: "Código do dispositivo",
|
|
40
|
+
barViewing: "IA vendo",
|
|
41
|
+
barAgent: "IA operando",
|
|
42
|
+
barUser: "Sua vez",
|
|
43
|
+
connectedFor: (e) => `Conectado · ${e}`,
|
|
44
|
+
takeover: "Assumir",
|
|
45
|
+
handback: "Devolver à IA",
|
|
46
|
+
end: "Encerrar",
|
|
47
|
+
autoTitle: "Permitir a IA automaticamente",
|
|
48
|
+
autoOn: (e) => `Conecta sem perguntar · ${e}`,
|
|
49
|
+
autoOff: "Perguntar sempre que a IA quiser se conectar",
|
|
50
|
+
lockTitle: "Bloquear a tela com a IA conectada",
|
|
51
|
+
lockOn: "Seus toques e deslizes ficam bloqueados enquanto a IA estiver conectada",
|
|
52
|
+
lockOff: "Você ainda pode tocar e rolar; tente não atrapalhar a IA",
|
|
53
|
+
lockedToast: "A tela será bloqueada enquanto a IA estiver conectada",
|
|
54
|
+
unlockedToast: "A tela não será bloqueada enquanto a IA estiver conectada",
|
|
55
|
+
autoOffToast: "Permissão automática desativada. A IA vai pedir antes de se conectar",
|
|
56
|
+
autoDialogTitle: "Ativar a permissão automática?",
|
|
57
|
+
autoDialogText: "Quando a IA pedir para se conectar a este dispositivo, ela se conecta na hora com o acesso que você escolher abaixo. Você verá um aviso toda vez, pode assumir o controle ou encerrar a qualquer momento e pode desativar isso aqui.",
|
|
58
|
+
turnOn: "Ativar",
|
|
59
|
+
cancel: "Cancelar",
|
|
60
|
+
autoOnToast: (e) => `Permissão automática ativada · ${e}`,
|
|
61
|
+
countdown: (e) => `Negado automaticamente em ${e} s`,
|
|
62
|
+
agentName: "Assistente de IA",
|
|
63
|
+
autoAllowedToast: (e, t) => `“${e}” permitido automaticamente · ${t}`,
|
|
64
|
+
attachTitle: "A IA quer se conectar",
|
|
65
|
+
attachText: (e) => `“${e}” quer ver esta página. Permitir?`,
|
|
66
|
+
confirmTitle: "Confirme, por favor",
|
|
67
|
+
confirmText: (e) => `A IA quer ${e}. Permitir?`,
|
|
68
|
+
allow: "Permitir",
|
|
69
|
+
deny: "Negar"
|
|
70
|
+
},
|
|
71
|
+
action: {
|
|
72
|
+
quote: (e) => `“${e}”`,
|
|
73
|
+
click: (e) => `tocar em ${e}`,
|
|
74
|
+
enterActivate: (e) => `pressionar Enter em ${e}`,
|
|
75
|
+
enterSubmit: (e) => `pressionar Enter para enviar ${e}`
|
|
76
|
+
},
|
|
77
|
+
agent: {
|
|
78
|
+
missingParam: (e) => `Parâmetro ausente: ${e}`,
|
|
79
|
+
notString: (e) => `O parâmetro ${e} deve ser uma string`,
|
|
80
|
+
unknownMethod: (e) => `Método desconhecido: ${e}`,
|
|
81
|
+
needLevel: (e) => `Requer o nível ${e}`,
|
|
82
|
+
takenOver: "O usuário assumiu o controle; aguarde até que ele o devolva",
|
|
83
|
+
userDenied: "O usuário negou esta ação",
|
|
84
|
+
confirmBusy: "Ainda aguardando o usuário confirmar a ação anterior",
|
|
85
|
+
unknownModifier: (e) => `Tecla modificadora desconhecida: ${e}`,
|
|
86
|
+
unknownKey: (e) => `Tecla desconhecida: ${e}`,
|
|
87
|
+
refNotInSnapshot: (e) => `ref=${e} não está no snapshot mais recente; faça um novo snapshot`,
|
|
88
|
+
refDetached: (e) => `O elemento de ref=${e} não está mais na página; faça um novo snapshot`,
|
|
89
|
+
queryNeedsCriteria: "É necessário pelo menos um de text, role ou name",
|
|
90
|
+
noSuchRecord: (e) => `Não há registro seq=${e} no log da sessão (ele pode ter sido removido)`,
|
|
91
|
+
noSuchSession: (e) => `Não há log da sessão ${e} neste dispositivo (só as 3 últimas inicializações são mantidas)`,
|
|
92
|
+
noSessionLog: "Ainda não há log da sessão neste dispositivo (o projeto pode ter desativado a gravação, ou a página passou run({ record: false }))",
|
|
93
|
+
sessionLogUnavailable: "IndexedDB não está disponível nesta página: sem log da sessão",
|
|
94
|
+
readOnly: (e) => `${e} é somente leitura`,
|
|
95
|
+
isSelect: (e) => `${e} é uma lista suspensa; use rwd.select`,
|
|
96
|
+
notFillable: (e) => `${e} não é um campo de texto e não pode ser preenchido`,
|
|
97
|
+
notSelect: (e) => `${e} não é uma lista suspensa (select); use click`,
|
|
98
|
+
singleSelect: "Esta lista suspensa permite apenas uma opção",
|
|
99
|
+
noSuchOption: (e, t) => `A lista suspensa não tem a opção “${e}”; disponíveis: ${t.join(", ")}`,
|
|
100
|
+
optionDisabled: (e) => `A opção “${e}” está desativada`,
|
|
101
|
+
badUrl: (e) => `URL inválida: ${e}`,
|
|
102
|
+
httpOnly: "Só é possível abrir URLs http(s)",
|
|
103
|
+
textAppearTimeout: (e) => `Tempo esgotado aguardando o texto “${e}” aparecer`,
|
|
104
|
+
textGoneTimeout: (e) => `Tempo esgotado aguardando o texto “${e}” desaparecer`,
|
|
105
|
+
badFunction: (e) => `Não foi possível analisar function: ${e}`,
|
|
106
|
+
notAFunction: "function deve ser uma expressão de função, por exemplo \"() => document.title\"",
|
|
107
|
+
elementDetached: (e) => `O elemento ${e} não está mais na página; faça um novo snapshot`,
|
|
108
|
+
notActionable: (e, t) => `Não é possível operar o elemento ${e}: ${t}`,
|
|
109
|
+
notVisible: (e) => `O elemento ${e} não está visível`,
|
|
110
|
+
reasonMoving: "a posição dele continua mudando (pode estar em animação)",
|
|
111
|
+
reasonOffscreen: "ele está fora da área visível (viewport)",
|
|
112
|
+
reasonObscured: (e, t) => `o ponto do clique está coberto por ${e} (ref=${t}; clique nele diretamente, por exemplo no fundo de um pop-up para fechá-lo)`,
|
|
113
|
+
overlayHeader: "[Sobreposições] Estes elementos ficam por cima da página. Quando um clique for bloqueado, clique neles diretamente (por exemplo no fundo para fechar um pop-up):",
|
|
114
|
+
overlayMask: (e, t, n) => `- fundo ${e}, cobre ${t}% da viewport [ref=${n}]`,
|
|
115
|
+
overlayLayer: (e, t, n, r) => `- camada ${e}${t ? ` “${t}”` : ""}, cobre ${n}% da viewport [ref=${r}]`,
|
|
116
|
+
reasonHidden: "ele não está visível",
|
|
117
|
+
reasonDisabled: "ele está desativado",
|
|
118
|
+
storageUnavailable: (e) => `${e}Storage não está disponível`,
|
|
119
|
+
badStorageArea: "O parâmetro area deve ser 'local', 'session' ou 'cookie'",
|
|
120
|
+
requestFailed: "A requisição falhou",
|
|
121
|
+
noSuchRequest: (e) => `Nenhuma requisição com id=${e} (ela pode ter sido descartada)`,
|
|
122
|
+
netFailed: (e, t) => `${e} → falhou (${t})`,
|
|
123
|
+
wsFailed: (e) => `WebSocket ${e} → falhou`,
|
|
124
|
+
tapped: (e, t) => `Tocou em ${e} “${t}”`,
|
|
125
|
+
tappedTag: (e, t) => `Tocou em ${e} ${t}`,
|
|
126
|
+
roles: {
|
|
127
|
+
button: "botão",
|
|
128
|
+
link: "link",
|
|
129
|
+
textbox: "campo de texto",
|
|
130
|
+
searchbox: "campo de busca",
|
|
131
|
+
checkbox: "caixa de seleção",
|
|
132
|
+
radio: "botão de opção",
|
|
133
|
+
switch: "chave",
|
|
134
|
+
combobox: "lista suspensa",
|
|
135
|
+
listbox: "lista",
|
|
136
|
+
option: "opção",
|
|
137
|
+
tab: "aba",
|
|
138
|
+
menuitem: "item de menu",
|
|
139
|
+
img: "imagem",
|
|
140
|
+
heading: "título",
|
|
141
|
+
cell: "célula",
|
|
142
|
+
row: "linha",
|
|
143
|
+
listitem: "item de lista"
|
|
144
|
+
},
|
|
145
|
+
element: "elemento"
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
export { e as default };
|
|
149
|
+
|
|
150
|
+
//# sourceMappingURL=pt.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pt.mjs","names":["pt","time","level","seconds","agent","action","name","target","method","m","key","ref","seq","id","tag","value","choices","url","text","message","reason","coverage","area","what","error","role"],"sources":["../../src/locales/pt.ts"],"sourcesContent":["import type { ActionMessages, AgentMessages, Locale, UiMessages } from '../i18n'\n\n// Português do Brasil (também usado como fallback para pt-PT).\n\nconst ui: UiMessages = {\n levels: {\n observe: 'Apenas visualizar',\n interact: 'Visualizar e interagir',\n advanced: 'Avançado (executar scripts, ler armazenamento)',\n },\n attachLevels: {\n observe: 'Apenas visualizar',\n interact: 'Visualizar e interagir',\n advanced: 'Avançado (também executar scripts, ler armazenamento)',\n },\n state: {\n none: 'Inativo: nenhuma IA conectada',\n observe: 'A IA está vendo esta página',\n agent: 'A IA está no controle; seus toques estão pausados',\n user: 'Você assumiu o controle; a IA está pausada',\n },\n link: {\n connecting: 'Conectando',\n online: 'Online',\n offline: 'Offline',\n },\n connecting: 'Conectando…',\n helpPending: 'Em atendimento',\n copy: 'Copiar',\n copied: 'Copiado',\n noteHelp: 'Assistência solicitada. O desenvolvedor vai encontrar você por este código do dispositivo.',\n noteAuto:\n 'Permissão automática ativada: a IA se conecta sem perguntar. Você pode assumir o controle ou encerrar a qualquer momento.',\n noteShare:\n 'Envie este código do dispositivo para o desenvolvedor. A IA pede sua permissão antes de se conectar, e você pode assumir o controle ou encerrar a qualquer momento.',\n help: 'Solicitar assistência',\n cancelHelp: 'Cancelar solicitação',\n collapse: 'Ocultar',\n deviceCode: 'Código do dispositivo',\n barViewing: 'IA vendo',\n barAgent: 'IA operando',\n barUser: 'Sua vez',\n connectedFor: time => `Conectado · ${time}`,\n takeover: 'Assumir',\n handback: 'Devolver à IA',\n end: 'Encerrar',\n autoTitle: 'Permitir a IA automaticamente',\n autoOn: level => `Conecta sem perguntar · ${level}`,\n autoOff: 'Perguntar sempre que a IA quiser se conectar',\n lockTitle: 'Bloquear a tela com a IA conectada',\n lockOn: 'Seus toques e deslizes ficam bloqueados enquanto a IA estiver conectada',\n lockOff: 'Você ainda pode tocar e rolar; tente não atrapalhar a IA',\n lockedToast: 'A tela será bloqueada enquanto a IA estiver conectada',\n unlockedToast: 'A tela não será bloqueada enquanto a IA estiver conectada',\n autoOffToast: 'Permissão automática desativada. A IA vai pedir antes de se conectar',\n autoDialogTitle: 'Ativar a permissão automática?',\n autoDialogText:\n 'Quando a IA pedir para se conectar a este dispositivo, ela se conecta na hora com o acesso que você escolher abaixo. Você verá um aviso toda vez, pode assumir o controle ou encerrar a qualquer momento e pode desativar isso aqui.',\n turnOn: 'Ativar',\n cancel: 'Cancelar',\n autoOnToast: level => `Permissão automática ativada · ${level}`,\n countdown: seconds => `Negado automaticamente em ${seconds} s`,\n\n agentName: 'Assistente de IA',\n autoAllowedToast: (agent, level) => `“${agent}” permitido automaticamente · ${level}`,\n attachTitle: 'A IA quer se conectar',\n attachText: agent => `“${agent}” quer ver esta página. Permitir?`,\n confirmTitle: 'Confirme, por favor',\n confirmText: action => `A IA quer ${action}. Permitir?`,\n allow: 'Permitir',\n deny: 'Negar',\n}\n\nconst agent: AgentMessages = {\n missingParam: name => `Parâmetro ausente: ${name}`,\n notString: name => `O parâmetro ${name} deve ser uma string`,\n unknownMethod: method => `Método desconhecido: ${method}`,\n needLevel: level => `Requer o nível ${level}`,\n takenOver: 'O usuário assumiu o controle; aguarde até que ele o devolva',\n userDenied: 'O usuário negou esta ação',\n confirmBusy: 'Ainda aguardando o usuário confirmar a ação anterior',\n\n unknownModifier: m => `Tecla modificadora desconhecida: ${m}`,\n unknownKey: key => `Tecla desconhecida: ${key}`,\n\n refNotInSnapshot: ref => `ref=${ref} não está no snapshot mais recente; faça um novo snapshot`,\n refDetached: ref => `O elemento de ref=${ref} não está mais na página; faça um novo snapshot`,\n queryNeedsCriteria: 'É necessário pelo menos um de text, role ou name',\n noSuchRecord: seq => `Não há registro seq=${seq} no log da sessão (ele pode ter sido removido)`,\n noSuchSession: id => `Não há log da sessão ${id} neste dispositivo (só as 3 últimas inicializações são mantidas)`,\n noSessionLog:\n 'Ainda não há log da sessão neste dispositivo (o projeto pode ter desativado a gravação, ou a página passou run({ record: false }))',\n sessionLogUnavailable: 'IndexedDB não está disponível nesta página: sem log da sessão',\n\n readOnly: tag => `${tag} é somente leitura`,\n isSelect: tag => `${tag} é uma lista suspensa; use rwd.select`,\n notFillable: tag => `${tag} não é um campo de texto e não pode ser preenchido`,\n notSelect: tag => `${tag} não é uma lista suspensa (select); use click`,\n singleSelect: 'Esta lista suspensa permite apenas uma opção',\n noSuchOption: (value, choices) => `A lista suspensa não tem a opção “${value}”; disponíveis: ${choices.join(', ')}`,\n optionDisabled: value => `A opção “${value}” está desativada`,\n\n badUrl: url => `URL inválida: ${url}`,\n httpOnly: 'Só é possível abrir URLs http(s)',\n textAppearTimeout: text => `Tempo esgotado aguardando o texto “${text}” aparecer`,\n textGoneTimeout: text => `Tempo esgotado aguardando o texto “${text}” desaparecer`,\n badFunction: message => `Não foi possível analisar function: ${message}`,\n notAFunction: 'function deve ser uma expressão de função, por exemplo \"() => document.title\"',\n\n elementDetached: tag => `O elemento ${tag} não está mais na página; faça um novo snapshot`,\n notActionable: (tag, reason) => `Não é possível operar o elemento ${tag}: ${reason}`,\n notVisible: tag => `O elemento ${tag} não está visível`,\n reasonMoving: 'a posição dele continua mudando (pode estar em animação)',\n reasonOffscreen: 'ele está fora da área visível (viewport)',\n reasonObscured: (tag, ref) =>\n `o ponto do clique está coberto por ${tag} (ref=${ref}; clique nele diretamente, por exemplo no fundo de um pop-up para fechá-lo)`,\n\n overlayHeader:\n '[Sobreposições] Estes elementos ficam por cima da página. Quando um clique for bloqueado, clique neles diretamente (por exemplo no fundo para fechar um pop-up):',\n overlayMask: (tag, coverage, ref) => `- fundo ${tag}, cobre ${coverage}% da viewport [ref=${ref}]`,\n overlayLayer: (tag, text, coverage, ref) =>\n `- camada ${tag}${text ? ` “${text}”` : ''}, cobre ${coverage}% da viewport [ref=${ref}]`,\n reasonHidden: 'ele não está visível',\n reasonDisabled: 'ele está desativado',\n\n storageUnavailable: area => `${area}Storage não está disponível`,\n badStorageArea: \"O parâmetro area deve ser 'local', 'session' ou 'cookie'\",\n\n requestFailed: 'A requisição falhou',\n noSuchRequest: id => `Nenhuma requisição com id=${id} (ela pode ter sido descartada)`,\n netFailed: (what, error) => `${what} → falhou (${error})`,\n wsFailed: url => `WebSocket ${url} → falhou`,\n\n tapped: (role, text) => `Tocou em ${role} “${text}”`,\n tappedTag: (role, tag) => `Tocou em ${role} ${tag}`,\n roles: {\n button: 'botão',\n link: 'link',\n textbox: 'campo de texto',\n searchbox: 'campo de busca',\n checkbox: 'caixa de seleção',\n radio: 'botão de opção',\n switch: 'chave',\n combobox: 'lista suspensa',\n listbox: 'lista',\n option: 'opção',\n tab: 'aba',\n menuitem: 'item de menu',\n img: 'imagem',\n heading: 'título',\n cell: 'célula',\n row: 'linha',\n listitem: 'item de lista',\n },\n element: 'elemento',\n}\n\nconst action: ActionMessages = {\n quote: name => `“${name}”`,\n click: target => `tocar em ${target}`,\n enterActivate: target => `pressionar Enter em ${target}`,\n enterSubmit: target => `pressionar Enter para enviar ${target}`,\n}\n\nconst pt: Locale = { id: 'pt', name: 'Português', dir: 'ltr', ui, action, agent }\n\nexport default pt\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! remote-webview-debugger sdk v0.2.0 | locale ru */
|
|
2
|
+
(function(){let e={id:`ru`,name:`Русский`,dir:`ltr`,ui:{levels:{observe:`Только просмотр`,interact:`Просмотр и управление`,advanced:`Расширенный (скрипты, чтение хранилища)`},attachLevels:{observe:`Только просмотр`,interact:`Просмотр и управление`,advanced:`Расширенный (плюс скрипты, чтение хранилища)`},state:{none:`Ожидание: ИИ не подключён`,observe:`ИИ просматривает эту страницу`,agent:`ИИ управляет, ваш ввод приостановлен`,user:`Вы взяли управление, ИИ на паузе`},link:{connecting:`Подключение`,online:`В сети`,offline:`Не в сети`},connecting:`Подключение…`,helpPending:`Идёт поддержка`,copy:`Копировать`,copied:`Скопировано`,noteHelp:`Поддержка запрошена. Разработчик найдёт вас по этому коду устройства.`,noteAuto:`Автоматическое разрешение включено: ИИ подключается без вопросов. Вы можете в любой момент взять управление или завершить.`,noteShare:`Сообщите этот код устройства разработчику. ИИ спросит разрешения перед подключением, а вы сможете в любой момент взять управление или завершить.`,help:`Запросить поддержку`,cancelHelp:`Отменить запрос`,collapse:`Свернуть`,deviceCode:`Код устройства`,barViewing:`ИИ смотрит`,barAgent:`ИИ работает`,barUser:`Управляете вы`,connectedFor:e=>`Подключено · ${e}`,takeover:`Перехватить`,handback:`Вернуть ИИ`,end:`Завершить`,autoTitle:`Автоматическое разрешение`,autoOn:e=>`Подключается без вопросов · ${e}`,autoOff:`Спрашивать каждый раз, когда ИИ хочет подключиться`,lockTitle:`Блокировать экран, пока подключён ИИ`,lockOn:`Пока подключён ИИ, ваши касания и свайпы блокируются`,lockOff:`Вы можете касаться и прокручивать, но постарайтесь не мешать ИИ`,lockedToast:`Экран будет заблокирован, пока подключён ИИ`,unlockedToast:`Экран не будет блокироваться, пока подключён ИИ`,autoOffToast:`Автоматическое разрешение выключено. ИИ спросит перед подключением`,autoDialogTitle:`Включить автоматическое разрешение?`,autoDialogText:`Когда ИИ попросит подключиться к этому устройству, он сразу подключится с выбранным ниже уровнем доступа. Каждый раз вы увидите уведомление, сможете в любой момент взять управление или завершить, а выключить эту функцию можно здесь.`,turnOn:`Включить`,cancel:`Отмена`,autoOnToast:e=>`Автоматическое разрешение включено · ${e}`,countdown:e=>`Автоотказ через ${e} с`,agentName:`ИИ-ассистент`,autoAllowedToast:(e,t)=>`«${e}» подключён автоматически · ${t}`,attachTitle:`ИИ хочет подключиться`,attachText:e=>`«${e}» хочет просматривать эту страницу. Разрешить?`,confirmTitle:`Подтвердите действие`,confirmText:e=>`ИИ хочет ${e}. Разрешить?`,allow:`Разрешить`,deny:`Отклонить`},action:{quote:e=>`«${e}»`,click:e=>`нажать ${e}`,enterActivate:e=>`нажать Enter на ${e}`,enterSubmit:e=>`нажать Enter и отправить ${e}`},agent:{missingParam:e=>`Не указан параметр: ${e}`,notString:e=>`Параметр ${e} должен быть строкой`,unknownMethod:e=>`Неизвестный метод: ${e}`,needLevel:e=>`Требуется уровень ${e}`,takenOver:`Пользователь взял управление; дождитесь, пока он вернёт управление`,userDenied:`Пользователь отклонил это действие`,confirmBusy:`Пользователь ещё не подтвердил предыдущее действие`,unknownModifier:e=>`Неизвестная клавиша-модификатор: ${e}`,unknownKey:e=>`Неизвестная клавиша: ${e}`,refNotInSnapshot:e=>`ref=${e} нет в последнем снимке; сделайте новый снимок`,refDetached:e=>`Элемента с ref=${e} больше нет на странице; сделайте новый снимок`,queryNeedsCriteria:`Нужен хотя бы один из параметров: text, role или name`,noSuchRecord:e=>`В журнале сеанса нет записи seq=${e} (возможно, она уже удалена)`,noSuchSession:e=>`На этом устройстве нет журнала сеанса ${e} (хранятся только 3 последних запуска)`,noSessionLog:`На этом устройстве пока нет журнала сеанса (возможно, в проекте отключена запись или страница передала run({ record: false }))`,sessionLogUnavailable:`На этой странице недоступен IndexedDB, поэтому журнала сеанса нет`,readOnly:e=>`${e} доступен только для чтения`,isSelect:e=>`${e} — выпадающий список; используйте rwd.select`,notFillable:e=>`${e} не является текстовым полем, заполнить его нельзя`,notSelect:e=>`${e} не является выпадающим списком (select); используйте click`,singleSelect:`В этом выпадающем списке можно выбрать только один вариант`,noSuchOption:(e,t)=>`В выпадающем списке нет варианта «${e}»; доступны: ${t.join(`, `)}`,optionDisabled:e=>`Вариант «${e}» отключён`,badUrl:e=>`Недопустимый URL: ${e}`,httpOnly:`Открывать можно только URL http(s)`,textAppearTimeout:e=>`Истекло время ожидания появления текста «${e}»`,textGoneTimeout:e=>`Истекло время ожидания исчезновения текста «${e}»`,badFunction:e=>`Не удалось разобрать function: ${e}`,notAFunction:`function должен быть функциональным выражением, например "() => document.title"`,elementDetached:e=>`Элемента ${e} больше нет на странице; сделайте новый снимок`,notActionable:(e,t)=>`С элементом ${e} нельзя взаимодействовать: ${t}`,notVisible:e=>`Элемент ${e} не виден`,reasonMoving:`его положение всё время меняется (возможно, идёт анимация)`,reasonOffscreen:`он за пределами области просмотра`,reasonObscured:(e,t)=>`точку нажатия перекрывает ${e} (ref=${t}; нажмите на него напрямую, например на фон всплывающего окна, чтобы закрыть его)`,overlayHeader:`[Оверлеи] Эти элементы лежат поверх страницы. Если нажатие перекрыто, нажимайте на них напрямую (например, на фон, чтобы закрыть всплывающее окно):`,overlayMask:(e,t,n)=>`- фон ${e}, закрывает ${t}% области просмотра [ref=${n}]`,overlayLayer:(e,t,n,r)=>`- слой ${e}${t?` «${t}»`:``}, закрывает ${n}% области просмотра [ref=${r}]`,reasonHidden:`он не виден`,reasonDisabled:`он отключён`,storageUnavailable:e=>`${e}Storage недоступен`,badStorageArea:`Параметр area должен быть 'local', 'session' или 'cookie'`,requestFailed:`Запрос не выполнен`,noSuchRequest:e=>`Нет запроса с id=${e} (возможно, он уже отброшен)`,netFailed:(e,t)=>`${e} → ошибка (${t})`,wsFailed:e=>`WebSocket ${e} → ошибка`,tapped:(e,t)=>`Нажатие: ${e} «${t}»`,tappedTag:(e,t)=>`Нажатие: ${e} ${t}`,roles:{button:`кнопка`,link:`ссылка`,textbox:`текстовое поле`,searchbox:`поле поиска`,checkbox:`флажок`,radio:`переключатель`,switch:`тумблер`,combobox:`выпадающий список`,listbox:`список`,option:`вариант`,tab:`вкладка`,menuitem:`пункт меню`,img:`изображение`,heading:`заголовок`,cell:`ячейка`,row:`строка`,listitem:`элемент списка`},element:`элемент`}};var t=typeof window<`u`?window:{},n=t.RemoteWebviewDebugger;n&&n.registerLocale?n.registerLocale(e):(t.__RWD_LOCALES__=t.__RWD_LOCALES__||[]).push(e)})();
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/*! remote-webview-debugger sdk v0.2.0 | includes chobitsu (MIT), Playwright (Apache-2.0), licia (MIT), modern-screenshot (MIT) */
|
|
2
|
+
// src/locales/ru.ts
|
|
3
|
+
var e = {
|
|
4
|
+
id: "ru",
|
|
5
|
+
name: "Русский",
|
|
6
|
+
dir: "ltr",
|
|
7
|
+
ui: {
|
|
8
|
+
levels: {
|
|
9
|
+
observe: "Только просмотр",
|
|
10
|
+
interact: "Просмотр и управление",
|
|
11
|
+
advanced: "Расширенный (скрипты, чтение хранилища)"
|
|
12
|
+
},
|
|
13
|
+
attachLevels: {
|
|
14
|
+
observe: "Только просмотр",
|
|
15
|
+
interact: "Просмотр и управление",
|
|
16
|
+
advanced: "Расширенный (плюс скрипты, чтение хранилища)"
|
|
17
|
+
},
|
|
18
|
+
state: {
|
|
19
|
+
none: "Ожидание: ИИ не подключён",
|
|
20
|
+
observe: "ИИ просматривает эту страницу",
|
|
21
|
+
agent: "ИИ управляет, ваш ввод приостановлен",
|
|
22
|
+
user: "Вы взяли управление, ИИ на паузе"
|
|
23
|
+
},
|
|
24
|
+
link: {
|
|
25
|
+
connecting: "Подключение",
|
|
26
|
+
online: "В сети",
|
|
27
|
+
offline: "Не в сети"
|
|
28
|
+
},
|
|
29
|
+
connecting: "Подключение…",
|
|
30
|
+
helpPending: "Идёт поддержка",
|
|
31
|
+
copy: "Копировать",
|
|
32
|
+
copied: "Скопировано",
|
|
33
|
+
noteHelp: "Поддержка запрошена. Разработчик найдёт вас по этому коду устройства.",
|
|
34
|
+
noteAuto: "Автоматическое разрешение включено: ИИ подключается без вопросов. Вы можете в любой момент взять управление или завершить.",
|
|
35
|
+
noteShare: "Сообщите этот код устройства разработчику. ИИ спросит разрешения перед подключением, а вы сможете в любой момент взять управление или завершить.",
|
|
36
|
+
help: "Запросить поддержку",
|
|
37
|
+
cancelHelp: "Отменить запрос",
|
|
38
|
+
collapse: "Свернуть",
|
|
39
|
+
deviceCode: "Код устройства",
|
|
40
|
+
barViewing: "ИИ смотрит",
|
|
41
|
+
barAgent: "ИИ работает",
|
|
42
|
+
barUser: "Управляете вы",
|
|
43
|
+
connectedFor: (e) => `Подключено · ${e}`,
|
|
44
|
+
takeover: "Перехватить",
|
|
45
|
+
handback: "Вернуть ИИ",
|
|
46
|
+
end: "Завершить",
|
|
47
|
+
autoTitle: "Автоматическое разрешение",
|
|
48
|
+
autoOn: (e) => `Подключается без вопросов · ${e}`,
|
|
49
|
+
autoOff: "Спрашивать каждый раз, когда ИИ хочет подключиться",
|
|
50
|
+
lockTitle: "Блокировать экран, пока подключён ИИ",
|
|
51
|
+
lockOn: "Пока подключён ИИ, ваши касания и свайпы блокируются",
|
|
52
|
+
lockOff: "Вы можете касаться и прокручивать, но постарайтесь не мешать ИИ",
|
|
53
|
+
lockedToast: "Экран будет заблокирован, пока подключён ИИ",
|
|
54
|
+
unlockedToast: "Экран не будет блокироваться, пока подключён ИИ",
|
|
55
|
+
autoOffToast: "Автоматическое разрешение выключено. ИИ спросит перед подключением",
|
|
56
|
+
autoDialogTitle: "Включить автоматическое разрешение?",
|
|
57
|
+
autoDialogText: "Когда ИИ попросит подключиться к этому устройству, он сразу подключится с выбранным ниже уровнем доступа. Каждый раз вы увидите уведомление, сможете в любой момент взять управление или завершить, а выключить эту функцию можно здесь.",
|
|
58
|
+
turnOn: "Включить",
|
|
59
|
+
cancel: "Отмена",
|
|
60
|
+
autoOnToast: (e) => `Автоматическое разрешение включено · ${e}`,
|
|
61
|
+
countdown: (e) => `Автоотказ через ${e} с`,
|
|
62
|
+
agentName: "ИИ-ассистент",
|
|
63
|
+
autoAllowedToast: (e, t) => `«${e}» подключён автоматически · ${t}`,
|
|
64
|
+
attachTitle: "ИИ хочет подключиться",
|
|
65
|
+
attachText: (e) => `«${e}» хочет просматривать эту страницу. Разрешить?`,
|
|
66
|
+
confirmTitle: "Подтвердите действие",
|
|
67
|
+
confirmText: (e) => `ИИ хочет ${e}. Разрешить?`,
|
|
68
|
+
allow: "Разрешить",
|
|
69
|
+
deny: "Отклонить"
|
|
70
|
+
},
|
|
71
|
+
action: {
|
|
72
|
+
quote: (e) => `«${e}»`,
|
|
73
|
+
click: (e) => `нажать ${e}`,
|
|
74
|
+
enterActivate: (e) => `нажать Enter на ${e}`,
|
|
75
|
+
enterSubmit: (e) => `нажать Enter и отправить ${e}`
|
|
76
|
+
},
|
|
77
|
+
agent: {
|
|
78
|
+
missingParam: (e) => `Не указан параметр: ${e}`,
|
|
79
|
+
notString: (e) => `Параметр ${e} должен быть строкой`,
|
|
80
|
+
unknownMethod: (e) => `Неизвестный метод: ${e}`,
|
|
81
|
+
needLevel: (e) => `Требуется уровень ${e}`,
|
|
82
|
+
takenOver: "Пользователь взял управление; дождитесь, пока он вернёт управление",
|
|
83
|
+
userDenied: "Пользователь отклонил это действие",
|
|
84
|
+
confirmBusy: "Пользователь ещё не подтвердил предыдущее действие",
|
|
85
|
+
unknownModifier: (e) => `Неизвестная клавиша-модификатор: ${e}`,
|
|
86
|
+
unknownKey: (e) => `Неизвестная клавиша: ${e}`,
|
|
87
|
+
refNotInSnapshot: (e) => `ref=${e} нет в последнем снимке; сделайте новый снимок`,
|
|
88
|
+
refDetached: (e) => `Элемента с ref=${e} больше нет на странице; сделайте новый снимок`,
|
|
89
|
+
queryNeedsCriteria: "Нужен хотя бы один из параметров: text, role или name",
|
|
90
|
+
noSuchRecord: (e) => `В журнале сеанса нет записи seq=${e} (возможно, она уже удалена)`,
|
|
91
|
+
noSuchSession: (e) => `На этом устройстве нет журнала сеанса ${e} (хранятся только 3 последних запуска)`,
|
|
92
|
+
noSessionLog: "На этом устройстве пока нет журнала сеанса (возможно, в проекте отключена запись или страница передала run({ record: false }))",
|
|
93
|
+
sessionLogUnavailable: "На этой странице недоступен IndexedDB, поэтому журнала сеанса нет",
|
|
94
|
+
readOnly: (e) => `${e} доступен только для чтения`,
|
|
95
|
+
isSelect: (e) => `${e} — выпадающий список; используйте rwd.select`,
|
|
96
|
+
notFillable: (e) => `${e} не является текстовым полем, заполнить его нельзя`,
|
|
97
|
+
notSelect: (e) => `${e} не является выпадающим списком (select); используйте click`,
|
|
98
|
+
singleSelect: "В этом выпадающем списке можно выбрать только один вариант",
|
|
99
|
+
noSuchOption: (e, t) => `В выпадающем списке нет варианта «${e}»; доступны: ${t.join(", ")}`,
|
|
100
|
+
optionDisabled: (e) => `Вариант «${e}» отключён`,
|
|
101
|
+
badUrl: (e) => `Недопустимый URL: ${e}`,
|
|
102
|
+
httpOnly: "Открывать можно только URL http(s)",
|
|
103
|
+
textAppearTimeout: (e) => `Истекло время ожидания появления текста «${e}»`,
|
|
104
|
+
textGoneTimeout: (e) => `Истекло время ожидания исчезновения текста «${e}»`,
|
|
105
|
+
badFunction: (e) => `Не удалось разобрать function: ${e}`,
|
|
106
|
+
notAFunction: "function должен быть функциональным выражением, например \"() => document.title\"",
|
|
107
|
+
elementDetached: (e) => `Элемента ${e} больше нет на странице; сделайте новый снимок`,
|
|
108
|
+
notActionable: (e, t) => `С элементом ${e} нельзя взаимодействовать: ${t}`,
|
|
109
|
+
notVisible: (e) => `Элемент ${e} не виден`,
|
|
110
|
+
reasonMoving: "его положение всё время меняется (возможно, идёт анимация)",
|
|
111
|
+
reasonOffscreen: "он за пределами области просмотра",
|
|
112
|
+
reasonObscured: (e, t) => `точку нажатия перекрывает ${e} (ref=${t}; нажмите на него напрямую, например на фон всплывающего окна, чтобы закрыть его)`,
|
|
113
|
+
overlayHeader: "[Оверлеи] Эти элементы лежат поверх страницы. Если нажатие перекрыто, нажимайте на них напрямую (например, на фон, чтобы закрыть всплывающее окно):",
|
|
114
|
+
overlayMask: (e, t, n) => `- фон ${e}, закрывает ${t}% области просмотра [ref=${n}]`,
|
|
115
|
+
overlayLayer: (e, t, n, r) => `- слой ${e}${t ? ` «${t}»` : ""}, закрывает ${n}% области просмотра [ref=${r}]`,
|
|
116
|
+
reasonHidden: "он не виден",
|
|
117
|
+
reasonDisabled: "он отключён",
|
|
118
|
+
storageUnavailable: (e) => `${e}Storage недоступен`,
|
|
119
|
+
badStorageArea: "Параметр area должен быть 'local', 'session' или 'cookie'",
|
|
120
|
+
requestFailed: "Запрос не выполнен",
|
|
121
|
+
noSuchRequest: (e) => `Нет запроса с id=${e} (возможно, он уже отброшен)`,
|
|
122
|
+
netFailed: (e, t) => `${e} → ошибка (${t})`,
|
|
123
|
+
wsFailed: (e) => `WebSocket ${e} → ошибка`,
|
|
124
|
+
tapped: (e, t) => `Нажатие: ${e} «${t}»`,
|
|
125
|
+
tappedTag: (e, t) => `Нажатие: ${e} ${t}`,
|
|
126
|
+
roles: {
|
|
127
|
+
button: "кнопка",
|
|
128
|
+
link: "ссылка",
|
|
129
|
+
textbox: "текстовое поле",
|
|
130
|
+
searchbox: "поле поиска",
|
|
131
|
+
checkbox: "флажок",
|
|
132
|
+
radio: "переключатель",
|
|
133
|
+
switch: "тумблер",
|
|
134
|
+
combobox: "выпадающий список",
|
|
135
|
+
listbox: "список",
|
|
136
|
+
option: "вариант",
|
|
137
|
+
tab: "вкладка",
|
|
138
|
+
menuitem: "пункт меню",
|
|
139
|
+
img: "изображение",
|
|
140
|
+
heading: "заголовок",
|
|
141
|
+
cell: "ячейка",
|
|
142
|
+
row: "строка",
|
|
143
|
+
listitem: "элемент списка"
|
|
144
|
+
},
|
|
145
|
+
element: "элемент"
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
export { e as default };
|
|
149
|
+
|
|
150
|
+
//# sourceMappingURL=ru.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ru.mjs","names":["ru","time","level","seconds","agent","action","name","target","method","m","key","ref","seq","id","tag","value","choices","url","text","message","reason","coverage","area","what","error","role"],"sources":["../../src/locales/ru.ts"],"sourcesContent":["import type { ActionMessages, AgentMessages, Locale, UiMessages } from '../i18n'\n\n// Русский.\n\nconst ui: UiMessages = {\n levels: {\n observe: 'Только просмотр',\n interact: 'Просмотр и управление',\n advanced: 'Расширенный (скрипты, чтение хранилища)',\n },\n attachLevels: {\n observe: 'Только просмотр',\n interact: 'Просмотр и управление',\n advanced: 'Расширенный (плюс скрипты, чтение хранилища)',\n },\n state: {\n none: 'Ожидание: ИИ не подключён',\n observe: 'ИИ просматривает эту страницу',\n agent: 'ИИ управляет, ваш ввод приостановлен',\n user: 'Вы взяли управление, ИИ на паузе',\n },\n link: {\n connecting: 'Подключение',\n online: 'В сети',\n offline: 'Не в сети',\n },\n connecting: 'Подключение…',\n helpPending: 'Идёт поддержка',\n copy: 'Копировать',\n copied: 'Скопировано',\n noteHelp: 'Поддержка запрошена. Разработчик найдёт вас по этому коду устройства.',\n noteAuto: 'Автоматическое разрешение включено: ИИ подключается без вопросов. Вы можете в любой момент взять управление или завершить.',\n noteShare:\n 'Сообщите этот код устройства разработчику. ИИ спросит разрешения перед подключением, а вы сможете в любой момент взять управление или завершить.',\n help: 'Запросить поддержку',\n cancelHelp: 'Отменить запрос',\n collapse: 'Свернуть',\n deviceCode: 'Код устройства',\n barViewing: 'ИИ смотрит',\n barAgent: 'ИИ работает',\n barUser: 'Управляете вы',\n connectedFor: time => `Подключено · ${time}`,\n takeover: 'Перехватить',\n handback: 'Вернуть ИИ',\n end: 'Завершить',\n autoTitle: 'Автоматическое разрешение',\n autoOn: level => `Подключается без вопросов · ${level}`,\n autoOff: 'Спрашивать каждый раз, когда ИИ хочет подключиться',\n lockTitle: 'Блокировать экран, пока подключён ИИ',\n lockOn: 'Пока подключён ИИ, ваши касания и свайпы блокируются',\n lockOff: 'Вы можете касаться и прокручивать, но постарайтесь не мешать ИИ',\n lockedToast: 'Экран будет заблокирован, пока подключён ИИ',\n unlockedToast: 'Экран не будет блокироваться, пока подключён ИИ',\n autoOffToast: 'Автоматическое разрешение выключено. ИИ спросит перед подключением',\n autoDialogTitle: 'Включить автоматическое разрешение?',\n autoDialogText:\n 'Когда ИИ попросит подключиться к этому устройству, он сразу подключится с выбранным ниже уровнем доступа. Каждый раз вы увидите уведомление, сможете в любой момент взять управление или завершить, а выключить эту функцию можно здесь.',\n turnOn: 'Включить',\n cancel: 'Отмена',\n autoOnToast: level => `Автоматическое разрешение включено · ${level}`,\n countdown: seconds => `Автоотказ через ${seconds} с`,\n\n agentName: 'ИИ-ассистент',\n autoAllowedToast: (agent, level) => `«${agent}» подключён автоматически · ${level}`,\n attachTitle: 'ИИ хочет подключиться',\n attachText: agent => `«${agent}» хочет просматривать эту страницу. Разрешить?`,\n confirmTitle: 'Подтвердите действие',\n confirmText: action => `ИИ хочет ${action}. Разрешить?`,\n allow: 'Разрешить',\n deny: 'Отклонить',\n}\n\nconst agent: AgentMessages = {\n missingParam: name => `Не указан параметр: ${name}`,\n notString: name => `Параметр ${name} должен быть строкой`,\n unknownMethod: method => `Неизвестный метод: ${method}`,\n needLevel: level => `Требуется уровень ${level}`,\n takenOver: 'Пользователь взял управление; дождитесь, пока он вернёт управление',\n userDenied: 'Пользователь отклонил это действие',\n confirmBusy: 'Пользователь ещё не подтвердил предыдущее действие',\n\n unknownModifier: m => `Неизвестная клавиша-модификатор: ${m}`,\n unknownKey: key => `Неизвестная клавиша: ${key}`,\n\n refNotInSnapshot: ref => `ref=${ref} нет в последнем снимке; сделайте новый снимок`,\n refDetached: ref => `Элемента с ref=${ref} больше нет на странице; сделайте новый снимок`,\n queryNeedsCriteria: 'Нужен хотя бы один из параметров: text, role или name',\n noSuchRecord: seq => `В журнале сеанса нет записи seq=${seq} (возможно, она уже удалена)`,\n noSuchSession: id => `На этом устройстве нет журнала сеанса ${id} (хранятся только 3 последних запуска)`,\n noSessionLog:\n 'На этом устройстве пока нет журнала сеанса (возможно, в проекте отключена запись или страница передала run({ record: false }))',\n sessionLogUnavailable: 'На этой странице недоступен IndexedDB, поэтому журнала сеанса нет',\n\n readOnly: tag => `${tag} доступен только для чтения`,\n isSelect: tag => `${tag} — выпадающий список; используйте rwd.select`,\n notFillable: tag => `${tag} не является текстовым полем, заполнить его нельзя`,\n notSelect: tag => `${tag} не является выпадающим списком (select); используйте click`,\n singleSelect: 'В этом выпадающем списке можно выбрать только один вариант',\n noSuchOption: (value, choices) => `В выпадающем списке нет варианта «${value}»; доступны: ${choices.join(', ')}`,\n optionDisabled: value => `Вариант «${value}» отключён`,\n\n badUrl: url => `Недопустимый URL: ${url}`,\n httpOnly: 'Открывать можно только URL http(s)',\n textAppearTimeout: text => `Истекло время ожидания появления текста «${text}»`,\n textGoneTimeout: text => `Истекло время ожидания исчезновения текста «${text}»`,\n badFunction: message => `Не удалось разобрать function: ${message}`,\n notAFunction: 'function должен быть функциональным выражением, например \"() => document.title\"',\n\n elementDetached: tag => `Элемента ${tag} больше нет на странице; сделайте новый снимок`,\n notActionable: (tag, reason) => `С элементом ${tag} нельзя взаимодействовать: ${reason}`,\n notVisible: tag => `Элемент ${tag} не виден`,\n reasonMoving: 'его положение всё время меняется (возможно, идёт анимация)',\n reasonOffscreen: 'он за пределами области просмотра',\n reasonObscured: (tag, ref) =>\n `точку нажатия перекрывает ${tag} (ref=${ref}; нажмите на него напрямую, например на фон всплывающего окна, чтобы закрыть его)`,\n\n overlayHeader:\n '[Оверлеи] Эти элементы лежат поверх страницы. Если нажатие перекрыто, нажимайте на них напрямую (например, на фон, чтобы закрыть всплывающее окно):',\n overlayMask: (tag, coverage, ref) => `- фон ${tag}, закрывает ${coverage}% области просмотра [ref=${ref}]`,\n overlayLayer: (tag, text, coverage, ref) =>\n `- слой ${tag}${text ? ` «${text}»` : ''}, закрывает ${coverage}% области просмотра [ref=${ref}]`,\n reasonHidden: 'он не виден',\n reasonDisabled: 'он отключён',\n\n storageUnavailable: area => `${area}Storage недоступен`,\n badStorageArea: \"Параметр area должен быть 'local', 'session' или 'cookie'\",\n\n requestFailed: 'Запрос не выполнен',\n noSuchRequest: id => `Нет запроса с id=${id} (возможно, он уже отброшен)`,\n netFailed: (what, error) => `${what} → ошибка (${error})`,\n wsFailed: url => `WebSocket ${url} → ошибка`,\n\n tapped: (role, text) => `Нажатие: ${role} «${text}»`,\n tappedTag: (role, tag) => `Нажатие: ${role} ${tag}`,\n roles: {\n button: 'кнопка',\n link: 'ссылка',\n textbox: 'текстовое поле',\n searchbox: 'поле поиска',\n checkbox: 'флажок',\n radio: 'переключатель',\n switch: 'тумблер',\n combobox: 'выпадающий список',\n listbox: 'список',\n option: 'вариант',\n tab: 'вкладка',\n menuitem: 'пункт меню',\n img: 'изображение',\n heading: 'заголовок',\n cell: 'ячейка',\n row: 'строка',\n listitem: 'элемент списка',\n },\n element: 'элемент',\n}\n\nconst action: ActionMessages = {\n quote: name => `«${name}»`,\n click: target => `нажать ${target}`,\n enterActivate: target => `нажать Enter на ${target}`,\n enterSubmit: target => `нажать Enter и отправить ${target}`,\n}\n\nconst ru: Locale = { id: 'ru', name: 'Русский', dir: 'ltr', ui, action, agent }\n\nexport default ru\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! remote-webview-debugger sdk v0.2.0 | locale zh-TW */
|
|
2
|
+
(function(){let e={id:`zh-TW`,name:`繁體中文`,dir:`ltr`,ui:{levels:{observe:`僅檢視`,interact:`檢視並操作`,advanced:`進階(可執行指令碼、讀取儲存資料)`},attachLevels:{observe:`僅檢視`,interact:`檢視並操作`,advanced:`進階(另可執行指令碼、讀取儲存資料)`},state:{none:`閒置:沒有 AI 連線`,observe:`AI 正在檢視這個頁面`,agent:`AI 正在操作,你的輸入已暫停`,user:`你已接管,AI 已暫停`},link:{connecting:`連線中`,online:`線上`,offline:`離線`},connecting:`連線中…`,helpPending:`協助中`,copy:`複製`,copied:`已複製`,noteHelp:`已請求協助,開發人員會透過裝置碼找到你。`,noteAuto:`已開啟自動允許:AI 加入時不會再詢問,你隨時可以接管或結束。`,noteShare:`把裝置碼提供給開發人員:AI 加入前會先徵求你的同意,加入後你隨時可以接管或結束。`,help:`請求協助`,cancelHelp:`取消請求`,collapse:`收合`,deviceCode:`裝置碼`,barViewing:`AI 檢視中`,barAgent:`AI 操作中`,barUser:`由你操作`,connectedFor:e=>`已連線 · ${e}`,takeover:`接管`,handback:`交還 AI`,end:`結束`,autoTitle:`自動允許 AI 加入`,autoOn:e=>`不再詢問,以「${e}」加入`,autoOff:`每次 AI 要求加入時都先詢問你`,lockTitle:`AI 連線時鎖定螢幕`,lockOn:`AI 連線期間,你的點擊和滑動會被擋下`,lockOff:`AI 連線期間你仍可點擊和捲動,但請盡量別干擾 AI`,lockedToast:`AI 連線期間會鎖定螢幕`,unlockedToast:`AI 連線期間不再鎖定螢幕`,autoOffToast:`已關閉自動允許,AI 加入前會先詢問你`,autoDialogTitle:`要開啟自動允許嗎?`,autoDialogText:`開啟後,AI 要求加入這台裝置時不會再跳出詢問,而是直接以下方選擇的權限加入。每次自動加入時畫面上都會顯示通知,你隨時可以接管或結束,也可以在這裡關閉。`,turnOn:`開啟`,cancel:`取消`,autoOnToast:e=>`已開啟自動允許 · ${e}`,countdown:e=>`${e} 秒後自動拒絕`,agentName:`AI 助理`,autoAllowedToast:(e,t)=>`已自動允許「${e}」加入 · ${t}`,attachTitle:`AI 請求加入`,attachText:e=>`「${e}」想要檢視這個頁面,要允許嗎?`,confirmTitle:`請確認`,confirmText:e=>`AI 想要${e},要允許嗎?`,allow:`允許`,deny:`拒絕`},action:{quote:e=>`「${e}」`,click:e=>`點擊${e}`,enterActivate:e=>`在${e}上按 Enter`,enterSubmit:e=>`按 Enter 送出${e}`},agent:{missingParam:e=>`缺少參數 ${e}`,notString:e=>`參數 ${e} 必須是字串`,unknownMethod:e=>`未知的方法:${e}`,needLevel:e=>`需要 ${e} 權限`,takenOver:`使用者已接管控制,請等待使用者交還`,userDenied:`使用者拒絕了這項操作`,confirmBusy:`仍在等待使用者確認上一項操作`,unknownModifier:e=>`未知的修飾鍵:${e}`,unknownKey:e=>`未知的按鍵:${e}`,refNotInSnapshot:e=>`ref=${e} 不在最新的快照裡,請重新取得快照`,refDetached:e=>`ref=${e} 對應的元素已不在頁面上,請重新取得快照`,queryNeedsCriteria:`至少需要 text、role、name 其中一項`,noSuchRecord:e=>`工作階段記錄裡沒有 seq=${e} 的項目(可能已被清除)`,noSuchSession:e=>`這台裝置上沒有工作階段 ${e} 的記錄(只保留最近 3 次啟動)`,noSessionLog:`這台裝置上還沒有工作階段記錄(專案可能已關閉記錄,或頁面以 run({ record: false }) 停用了記錄)`,sessionLogUnavailable:`這個頁面無法使用 IndexedDB,因此沒有工作階段記錄`,readOnly:e=>`${e} 是唯讀的`,isSelect:e=>`${e} 是下拉式選單,請用 rwd.select`,notFillable:e=>`${e} 不是文字欄位,無法填入`,notSelect:e=>`${e} 不是下拉式選單(select),請用 click`,singleSelect:`這個下拉式選單只能選一個選項`,noSuchOption:(e,t)=>`下拉式選單裡沒有選項「${e}」,可選:${t.join(`、`)}`,optionDisabled:e=>`選項「${e}」已停用`,badUrl:e=>`無效的網址:${e}`,httpOnly:`只能開啟 http(s) 網址`,textAppearTimeout:e=>`等待文字「${e}」出現逾時`,textGoneTimeout:e=>`等待文字「${e}」消失逾時`,badFunction:e=>`無法解析 function:${e}`,notAFunction:`function 必須是函式運算式,例如 "() => document.title"`,elementDetached:e=>`元素 ${e} 已不在頁面上,請重新取得快照`,notActionable:(e,t)=>`元素 ${e} 無法操作:${t}`,notVisible:e=>`元素 ${e} 不可見`,reasonMoving:`元素位置持續變動(可能正在播放動畫)`,reasonOffscreen:`元素不在可視區域內`,reasonObscured:(e,t)=>`點擊位置被 ${e} 遮住(遮住它的元素 ref=${t},可以直接 click 它,例如點遮罩來關閉彈出視窗)`,overlayHeader:`[浮層] 以下元素蓋在頁面內容上方。點擊被擋住時,可以直接點它們(例如點遮罩來關閉彈出視窗):`,overlayMask:(e,t,n)=>`- 遮罩 ${e},覆蓋可視區域的 ${t}% [ref=${n}]`,overlayLayer:(e,t,n,r)=>`- 浮層 ${e}${t?`「${t}」`:``},覆蓋可視區域的 ${n}% [ref=${r}]`,reasonHidden:`元素不可見`,reasonDisabled:`元素已停用`,storageUnavailable:e=>`${e}Storage 無法使用`,badStorageArea:`參數 area 必須是 'local'、'session' 或 'cookie'`,requestFailed:`請求失敗`,noSuchRequest:e=>`找不到 id=${e} 的請求(可能已被捨棄)`,netFailed:(e,t)=>`${e} → 失敗(${t})`,wsFailed:e=>`WebSocket ${e} → 失敗`,tapped:(e,t)=>`點擊了${e}「${t}」`,tappedTag:(e,t)=>`點擊了${e} ${t}`,roles:{button:`按鈕`,link:`連結`,textbox:`文字欄位`,searchbox:`搜尋欄位`,checkbox:`核取方塊`,radio:`選項按鈕`,switch:`開關`,combobox:`下拉式選單`,listbox:`清單`,option:`選項`,tab:`分頁`,menuitem:`選單項目`,img:`圖片`,heading:`標題`,cell:`儲存格`,row:`列`,listitem:`清單項目`},element:`元素`}};var t=typeof window<`u`?window:{},n=t.RemoteWebviewDebugger;n&&n.registerLocale?n.registerLocale(e):(t.__RWD_LOCALES__=t.__RWD_LOCALES__||[]).push(e)})();
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/*! remote-webview-debugger sdk v0.2.0 | includes chobitsu (MIT), Playwright (Apache-2.0), licia (MIT), modern-screenshot (MIT) */
|
|
2
|
+
// src/locales/zh-TW.ts
|
|
3
|
+
var e = {
|
|
4
|
+
id: "zh-TW",
|
|
5
|
+
name: "繁體中文",
|
|
6
|
+
dir: "ltr",
|
|
7
|
+
ui: {
|
|
8
|
+
levels: {
|
|
9
|
+
observe: "僅檢視",
|
|
10
|
+
interact: "檢視並操作",
|
|
11
|
+
advanced: "進階(可執行指令碼、讀取儲存資料)"
|
|
12
|
+
},
|
|
13
|
+
attachLevels: {
|
|
14
|
+
observe: "僅檢視",
|
|
15
|
+
interact: "檢視並操作",
|
|
16
|
+
advanced: "進階(另可執行指令碼、讀取儲存資料)"
|
|
17
|
+
},
|
|
18
|
+
state: {
|
|
19
|
+
none: "閒置:沒有 AI 連線",
|
|
20
|
+
observe: "AI 正在檢視這個頁面",
|
|
21
|
+
agent: "AI 正在操作,你的輸入已暫停",
|
|
22
|
+
user: "你已接管,AI 已暫停"
|
|
23
|
+
},
|
|
24
|
+
link: {
|
|
25
|
+
connecting: "連線中",
|
|
26
|
+
online: "線上",
|
|
27
|
+
offline: "離線"
|
|
28
|
+
},
|
|
29
|
+
connecting: "連線中…",
|
|
30
|
+
helpPending: "協助中",
|
|
31
|
+
copy: "複製",
|
|
32
|
+
copied: "已複製",
|
|
33
|
+
noteHelp: "已請求協助,開發人員會透過裝置碼找到你。",
|
|
34
|
+
noteAuto: "已開啟自動允許:AI 加入時不會再詢問,你隨時可以接管或結束。",
|
|
35
|
+
noteShare: "把裝置碼提供給開發人員:AI 加入前會先徵求你的同意,加入後你隨時可以接管或結束。",
|
|
36
|
+
help: "請求協助",
|
|
37
|
+
cancelHelp: "取消請求",
|
|
38
|
+
collapse: "收合",
|
|
39
|
+
deviceCode: "裝置碼",
|
|
40
|
+
barViewing: "AI 檢視中",
|
|
41
|
+
barAgent: "AI 操作中",
|
|
42
|
+
barUser: "由你操作",
|
|
43
|
+
connectedFor: (e) => `已連線 · ${e}`,
|
|
44
|
+
takeover: "接管",
|
|
45
|
+
handback: "交還 AI",
|
|
46
|
+
end: "結束",
|
|
47
|
+
autoTitle: "自動允許 AI 加入",
|
|
48
|
+
autoOn: (e) => `不再詢問,以「${e}」加入`,
|
|
49
|
+
autoOff: "每次 AI 要求加入時都先詢問你",
|
|
50
|
+
lockTitle: "AI 連線時鎖定螢幕",
|
|
51
|
+
lockOn: "AI 連線期間,你的點擊和滑動會被擋下",
|
|
52
|
+
lockOff: "AI 連線期間你仍可點擊和捲動,但請盡量別干擾 AI",
|
|
53
|
+
lockedToast: "AI 連線期間會鎖定螢幕",
|
|
54
|
+
unlockedToast: "AI 連線期間不再鎖定螢幕",
|
|
55
|
+
autoOffToast: "已關閉自動允許,AI 加入前會先詢問你",
|
|
56
|
+
autoDialogTitle: "要開啟自動允許嗎?",
|
|
57
|
+
autoDialogText: "開啟後,AI 要求加入這台裝置時不會再跳出詢問,而是直接以下方選擇的權限加入。每次自動加入時畫面上都會顯示通知,你隨時可以接管或結束,也可以在這裡關閉。",
|
|
58
|
+
turnOn: "開啟",
|
|
59
|
+
cancel: "取消",
|
|
60
|
+
autoOnToast: (e) => `已開啟自動允許 · ${e}`,
|
|
61
|
+
countdown: (e) => `${e} 秒後自動拒絕`,
|
|
62
|
+
agentName: "AI 助理",
|
|
63
|
+
autoAllowedToast: (e, t) => `已自動允許「${e}」加入 · ${t}`,
|
|
64
|
+
attachTitle: "AI 請求加入",
|
|
65
|
+
attachText: (e) => `「${e}」想要檢視這個頁面,要允許嗎?`,
|
|
66
|
+
confirmTitle: "請確認",
|
|
67
|
+
confirmText: (e) => `AI 想要${e},要允許嗎?`,
|
|
68
|
+
allow: "允許",
|
|
69
|
+
deny: "拒絕"
|
|
70
|
+
},
|
|
71
|
+
action: {
|
|
72
|
+
quote: (e) => `「${e}」`,
|
|
73
|
+
click: (e) => `點擊${e}`,
|
|
74
|
+
enterActivate: (e) => `在${e}上按 Enter`,
|
|
75
|
+
enterSubmit: (e) => `按 Enter 送出${e}`
|
|
76
|
+
},
|
|
77
|
+
agent: {
|
|
78
|
+
missingParam: (e) => `缺少參數 ${e}`,
|
|
79
|
+
notString: (e) => `參數 ${e} 必須是字串`,
|
|
80
|
+
unknownMethod: (e) => `未知的方法:${e}`,
|
|
81
|
+
needLevel: (e) => `需要 ${e} 權限`,
|
|
82
|
+
takenOver: "使用者已接管控制,請等待使用者交還",
|
|
83
|
+
userDenied: "使用者拒絕了這項操作",
|
|
84
|
+
confirmBusy: "仍在等待使用者確認上一項操作",
|
|
85
|
+
unknownModifier: (e) => `未知的修飾鍵:${e}`,
|
|
86
|
+
unknownKey: (e) => `未知的按鍵:${e}`,
|
|
87
|
+
refNotInSnapshot: (e) => `ref=${e} 不在最新的快照裡,請重新取得快照`,
|
|
88
|
+
refDetached: (e) => `ref=${e} 對應的元素已不在頁面上,請重新取得快照`,
|
|
89
|
+
queryNeedsCriteria: "至少需要 text、role、name 其中一項",
|
|
90
|
+
noSuchRecord: (e) => `工作階段記錄裡沒有 seq=${e} 的項目(可能已被清除)`,
|
|
91
|
+
noSuchSession: (e) => `這台裝置上沒有工作階段 ${e} 的記錄(只保留最近 3 次啟動)`,
|
|
92
|
+
noSessionLog: "這台裝置上還沒有工作階段記錄(專案可能已關閉記錄,或頁面以 run({ record: false }) 停用了記錄)",
|
|
93
|
+
sessionLogUnavailable: "這個頁面無法使用 IndexedDB,因此沒有工作階段記錄",
|
|
94
|
+
readOnly: (e) => `${e} 是唯讀的`,
|
|
95
|
+
isSelect: (e) => `${e} 是下拉式選單,請用 rwd.select`,
|
|
96
|
+
notFillable: (e) => `${e} 不是文字欄位,無法填入`,
|
|
97
|
+
notSelect: (e) => `${e} 不是下拉式選單(select),請用 click`,
|
|
98
|
+
singleSelect: "這個下拉式選單只能選一個選項",
|
|
99
|
+
noSuchOption: (e, t) => `下拉式選單裡沒有選項「${e}」,可選:${t.join("、")}`,
|
|
100
|
+
optionDisabled: (e) => `選項「${e}」已停用`,
|
|
101
|
+
badUrl: (e) => `無效的網址:${e}`,
|
|
102
|
+
httpOnly: "只能開啟 http(s) 網址",
|
|
103
|
+
textAppearTimeout: (e) => `等待文字「${e}」出現逾時`,
|
|
104
|
+
textGoneTimeout: (e) => `等待文字「${e}」消失逾時`,
|
|
105
|
+
badFunction: (e) => `無法解析 function:${e}`,
|
|
106
|
+
notAFunction: "function 必須是函式運算式,例如 \"() => document.title\"",
|
|
107
|
+
elementDetached: (e) => `元素 ${e} 已不在頁面上,請重新取得快照`,
|
|
108
|
+
notActionable: (e, t) => `元素 ${e} 無法操作:${t}`,
|
|
109
|
+
notVisible: (e) => `元素 ${e} 不可見`,
|
|
110
|
+
reasonMoving: "元素位置持續變動(可能正在播放動畫)",
|
|
111
|
+
reasonOffscreen: "元素不在可視區域內",
|
|
112
|
+
reasonObscured: (e, t) => `點擊位置被 ${e} 遮住(遮住它的元素 ref=${t},可以直接 click 它,例如點遮罩來關閉彈出視窗)`,
|
|
113
|
+
overlayHeader: "[浮層] 以下元素蓋在頁面內容上方。點擊被擋住時,可以直接點它們(例如點遮罩來關閉彈出視窗):",
|
|
114
|
+
overlayMask: (e, t, n) => `- 遮罩 ${e},覆蓋可視區域的 ${t}% [ref=${n}]`,
|
|
115
|
+
overlayLayer: (e, t, n, r) => `- 浮層 ${e}${t ? `「${t}」` : ""},覆蓋可視區域的 ${n}% [ref=${r}]`,
|
|
116
|
+
reasonHidden: "元素不可見",
|
|
117
|
+
reasonDisabled: "元素已停用",
|
|
118
|
+
storageUnavailable: (e) => `${e}Storage 無法使用`,
|
|
119
|
+
badStorageArea: "參數 area 必須是 'local'、'session' 或 'cookie'",
|
|
120
|
+
requestFailed: "請求失敗",
|
|
121
|
+
noSuchRequest: (e) => `找不到 id=${e} 的請求(可能已被捨棄)`,
|
|
122
|
+
netFailed: (e, t) => `${e} → 失敗(${t})`,
|
|
123
|
+
wsFailed: (e) => `WebSocket ${e} → 失敗`,
|
|
124
|
+
tapped: (e, t) => `點擊了${e}「${t}」`,
|
|
125
|
+
tappedTag: (e, t) => `點擊了${e} ${t}`,
|
|
126
|
+
roles: {
|
|
127
|
+
button: "按鈕",
|
|
128
|
+
link: "連結",
|
|
129
|
+
textbox: "文字欄位",
|
|
130
|
+
searchbox: "搜尋欄位",
|
|
131
|
+
checkbox: "核取方塊",
|
|
132
|
+
radio: "選項按鈕",
|
|
133
|
+
switch: "開關",
|
|
134
|
+
combobox: "下拉式選單",
|
|
135
|
+
listbox: "清單",
|
|
136
|
+
option: "選項",
|
|
137
|
+
tab: "分頁",
|
|
138
|
+
menuitem: "選單項目",
|
|
139
|
+
img: "圖片",
|
|
140
|
+
heading: "標題",
|
|
141
|
+
cell: "儲存格",
|
|
142
|
+
row: "列",
|
|
143
|
+
listitem: "清單項目"
|
|
144
|
+
},
|
|
145
|
+
element: "元素"
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
export { e as default };
|
|
149
|
+
|
|
150
|
+
//# sourceMappingURL=zh-TW.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zh-TW.mjs","names":["zhTW","time","level","seconds","agent","action","name","target","method","m","key","ref","seq","id","tag","value","choices","url","text","message","reason","coverage","area","what","error","role"],"sources":["../../src/locales/zh-TW.ts"],"sourcesContent":["import type { ActionMessages, AgentMessages, Locale, UiMessages } from '../i18n'\n\n// 繁體中文(台灣)。\n\nconst ui: UiMessages = {\n levels: {\n observe: '僅檢視',\n interact: '檢視並操作',\n advanced: '進階(可執行指令碼、讀取儲存資料)',\n },\n attachLevels: {\n observe: '僅檢視',\n interact: '檢視並操作',\n advanced: '進階(另可執行指令碼、讀取儲存資料)',\n },\n state: {\n none: '閒置:沒有 AI 連線',\n observe: 'AI 正在檢視這個頁面',\n agent: 'AI 正在操作,你的輸入已暫停',\n user: '你已接管,AI 已暫停',\n },\n link: {\n connecting: '連線中',\n online: '線上',\n offline: '離線',\n },\n connecting: '連線中…',\n helpPending: '協助中',\n copy: '複製',\n copied: '已複製',\n noteHelp: '已請求協助,開發人員會透過裝置碼找到你。',\n noteAuto: '已開啟自動允許:AI 加入時不會再詢問,你隨時可以接管或結束。',\n noteShare: '把裝置碼提供給開發人員:AI 加入前會先徵求你的同意,加入後你隨時可以接管或結束。',\n help: '請求協助',\n cancelHelp: '取消請求',\n collapse: '收合',\n deviceCode: '裝置碼',\n barViewing: 'AI 檢視中',\n barAgent: 'AI 操作中',\n barUser: '由你操作',\n connectedFor: time => `已連線 · ${time}`,\n takeover: '接管',\n handback: '交還 AI',\n end: '結束',\n autoTitle: '自動允許 AI 加入',\n autoOn: level => `不再詢問,以「${level}」加入`,\n autoOff: '每次 AI 要求加入時都先詢問你',\n lockTitle: 'AI 連線時鎖定螢幕',\n lockOn: 'AI 連線期間,你的點擊和滑動會被擋下',\n lockOff: 'AI 連線期間你仍可點擊和捲動,但請盡量別干擾 AI',\n lockedToast: 'AI 連線期間會鎖定螢幕',\n unlockedToast: 'AI 連線期間不再鎖定螢幕',\n autoOffToast: '已關閉自動允許,AI 加入前會先詢問你',\n autoDialogTitle: '要開啟自動允許嗎?',\n autoDialogText:\n '開啟後,AI 要求加入這台裝置時不會再跳出詢問,而是直接以下方選擇的權限加入。每次自動加入時畫面上都會顯示通知,你隨時可以接管或結束,也可以在這裡關閉。',\n turnOn: '開啟',\n cancel: '取消',\n autoOnToast: level => `已開啟自動允許 · ${level}`,\n countdown: seconds => `${seconds} 秒後自動拒絕`,\n\n agentName: 'AI 助理',\n autoAllowedToast: (agent, level) => `已自動允許「${agent}」加入 · ${level}`,\n attachTitle: 'AI 請求加入',\n attachText: agent => `「${agent}」想要檢視這個頁面,要允許嗎?`,\n confirmTitle: '請確認',\n confirmText: action => `AI 想要${action},要允許嗎?`,\n allow: '允許',\n deny: '拒絕',\n}\n\nconst agent: AgentMessages = {\n missingParam: name => `缺少參數 ${name}`,\n notString: name => `參數 ${name} 必須是字串`,\n unknownMethod: method => `未知的方法:${method}`,\n needLevel: level => `需要 ${level} 權限`,\n takenOver: '使用者已接管控制,請等待使用者交還',\n userDenied: '使用者拒絕了這項操作',\n confirmBusy: '仍在等待使用者確認上一項操作',\n\n unknownModifier: m => `未知的修飾鍵:${m}`,\n unknownKey: key => `未知的按鍵:${key}`,\n\n refNotInSnapshot: ref => `ref=${ref} 不在最新的快照裡,請重新取得快照`,\n refDetached: ref => `ref=${ref} 對應的元素已不在頁面上,請重新取得快照`,\n queryNeedsCriteria: '至少需要 text、role、name 其中一項',\n noSuchRecord: seq => `工作階段記錄裡沒有 seq=${seq} 的項目(可能已被清除)`,\n noSuchSession: id => `這台裝置上沒有工作階段 ${id} 的記錄(只保留最近 3 次啟動)`,\n noSessionLog: '這台裝置上還沒有工作階段記錄(專案可能已關閉記錄,或頁面以 run({ record: false }) 停用了記錄)',\n sessionLogUnavailable: '這個頁面無法使用 IndexedDB,因此沒有工作階段記錄',\n\n readOnly: tag => `${tag} 是唯讀的`,\n isSelect: tag => `${tag} 是下拉式選單,請用 rwd.select`,\n notFillable: tag => `${tag} 不是文字欄位,無法填入`,\n notSelect: tag => `${tag} 不是下拉式選單(select),請用 click`,\n singleSelect: '這個下拉式選單只能選一個選項',\n noSuchOption: (value, choices) => `下拉式選單裡沒有選項「${value}」,可選:${choices.join('、')}`,\n optionDisabled: value => `選項「${value}」已停用`,\n\n badUrl: url => `無效的網址:${url}`,\n httpOnly: '只能開啟 http(s) 網址',\n textAppearTimeout: text => `等待文字「${text}」出現逾時`,\n textGoneTimeout: text => `等待文字「${text}」消失逾時`,\n badFunction: message => `無法解析 function:${message}`,\n notAFunction: 'function 必須是函式運算式,例如 \"() => document.title\"',\n\n elementDetached: tag => `元素 ${tag} 已不在頁面上,請重新取得快照`,\n notActionable: (tag, reason) => `元素 ${tag} 無法操作:${reason}`,\n notVisible: tag => `元素 ${tag} 不可見`,\n reasonMoving: '元素位置持續變動(可能正在播放動畫)',\n reasonOffscreen: '元素不在可視區域內',\n reasonObscured: (tag, ref) => `點擊位置被 ${tag} 遮住(遮住它的元素 ref=${ref},可以直接 click 它,例如點遮罩來關閉彈出視窗)`,\n\n overlayHeader: '[浮層] 以下元素蓋在頁面內容上方。點擊被擋住時,可以直接點它們(例如點遮罩來關閉彈出視窗):',\n overlayMask: (tag, coverage, ref) => `- 遮罩 ${tag},覆蓋可視區域的 ${coverage}% [ref=${ref}]`,\n overlayLayer: (tag, text, coverage, ref) => `- 浮層 ${tag}${text ? `「${text}」` : ''},覆蓋可視區域的 ${coverage}% [ref=${ref}]`,\n reasonHidden: '元素不可見',\n reasonDisabled: '元素已停用',\n\n storageUnavailable: area => `${area}Storage 無法使用`,\n badStorageArea: \"參數 area 必須是 'local'、'session' 或 'cookie'\",\n\n requestFailed: '請求失敗',\n noSuchRequest: id => `找不到 id=${id} 的請求(可能已被捨棄)`,\n netFailed: (what, error) => `${what} → 失敗(${error})`,\n wsFailed: url => `WebSocket ${url} → 失敗`,\n\n tapped: (role, text) => `點擊了${role}「${text}」`,\n tappedTag: (role, tag) => `點擊了${role} ${tag}`,\n roles: {\n button: '按鈕',\n link: '連結',\n textbox: '文字欄位',\n searchbox: '搜尋欄位',\n checkbox: '核取方塊',\n radio: '選項按鈕',\n switch: '開關',\n combobox: '下拉式選單',\n listbox: '清單',\n option: '選項',\n tab: '分頁',\n menuitem: '選單項目',\n img: '圖片',\n heading: '標題',\n cell: '儲存格',\n row: '列',\n listitem: '清單項目',\n },\n element: '元素',\n}\n\nconst action: ActionMessages = {\n quote: name => `「${name}」`,\n click: target => `點擊${target}`,\n enterActivate: target => `在${target}上按 Enter`,\n enterSubmit: target => `按 Enter 送出${target}`,\n}\n\nconst zhTW: Locale = { id: 'zh-TW', name: '繁體中文', dir: 'ltr', ui, action, agent }\n\nexport default zhTW\n"],"mappings":"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"}
|