sqlite_graphrag/i18n/validation/
app_error_pt.rs1pub fn validation(msg: &str) -> String {
3 format!("erro de validação: {msg}")
4}
5
6pub fn usage(msg: &str) -> String {
12 format!("erro de uso: {msg}")
13}
14
15pub fn duplicate(msg: &str) -> String {
17 let translated = msg
18 .replace("already exists in namespace", "já existe no namespace")
19 .replace(
20 "exists but is soft-deleted in namespace",
21 "existe mas está excluída temporariamente no namespace",
22 )
23 .replace(
24 "Use --force-merge to update.",
25 "Use --force-merge para atualizar.",
26 )
27 .replace(
28 "use --force-merge to restore and update, or `restore` to revive it",
29 "use --force-merge para restaurar e atualizar, ou `restore` para revivê-la",
30 )
31 .replace("memory", "memória");
32 format!("duplicata detectada: {translated}")
33}
34
35pub fn conflict(msg: &str) -> String {
37 let translated = msg
38 .replace("optimistic lock conflict", "conflito de lock otimista")
39 .replace("but current is", "mas atual é")
40 .replace(
41 "was modified by another process",
42 "foi modificada por outro processo",
43 );
44 format!("conflito: {translated}")
45}
46
47pub fn not_found(msg: &str) -> String {
49 let translated = msg
70 .replace("source entity '", "entidade de origem '")
72 .replace("target entity '", "entidade de destino '")
73 .replace("memory not found:", "memória não encontrada:")
75 .replace(
76 "exists but belongs to namespace",
77 "existe mas pertence ao namespace",
78 )
79 .replace("' not found in namespace", "' não encontrada no namespace")
80 .replace("not found in namespace", "não encontrado no namespace")
81 .replace("not found for memory", "não encontrada para memória")
82 .replace("does not exist in namespace", "não existe no namespace")
83 .replace("memory or entity", "memória ou entidade")
84 .replace("Did you mean:", "Você quis dizer:")
85 .replace(
86 "Re-run with --fuzzy to auto-resolve a clear match, or pass the canonical name.",
87 "Repita com --fuzzy para resolver automaticamente uma correspondência clara, \
88 ou informe o nome canônico.",
89 )
90 .replace(
91 "is not held (no file at",
92 "não está retido (nenhum arquivo em",
93 )
94 .replace("no key with fingerprint", "nenhuma chave com fingerprint")
95 .replace("name='", "nome='")
96 .replace("relationship", "relacionamento")
98 .replace("edge '", "aresta '")
99 .replace("memory", "memória")
100 .replace("entity", "entidade")
101 .replace("' not found", "' não encontrada")
103 .replace("not found", "não encontrado")
104 .replace(", not '", ", e não '")
106 .replace(" in namespace '", " no namespace '")
107 .replace("version", "versão")
108 .replace("soft-deleted", "excluída temporariamente");
109 format!("não encontrado: {translated}")
110}
111
112pub fn memory_not_found(name: &str, namespace: &str) -> String {
117 not_found(&format!(
118 "memory not found: name='{name}' in namespace '{namespace}'"
119 ))
120}
121
122pub fn memory_not_found_by_id(id: i64) -> String {
124 not_found(&format!("memory not found: id={id}"))
125}
126
127pub fn entity_not_yet_materialized(name: &str, namespace: &str) -> String {
131 format!("entidade '{name}' ainda não materializada no namespace '{namespace}'")
132}
133
134pub fn namespace_error(msg: &str) -> String {
136 format!("namespace não resolvido: {msg}")
137}
138
139pub fn limit_exceeded(msg: &str) -> String {
141 let translated = msg
142 .replace("exceeds limit of", "excede limite de")
143 .replace("body exceeds", "corpo excede")
144 .replace("entities exceed limit", "entidades excedem limite")
145 .replace(
146 "relationships exceed limit",
147 "relacionamentos excedem limite",
148 );
149 format!("limite excedido: {translated}")
150}
151
152pub fn body_too_large(bytes: u64, limit: u64) -> String {
157 format!(
158 "limite excedido: corpo tem {bytes} bytes, acima do teto de {limit} bytes \
159 (MAX_MEMORY_BODY_LEN); divida o conteúdo em múltiplas memórias"
160 )
161}
162
163pub fn too_many_chunks(chunks: usize, limit: usize) -> String {
165 format!(
166 "limite excedido: documento produz {chunks} chunks, acima do teto de {limit} \
167 chunks (REMEMBER_MAX_SAFE_MULTI_CHUNKS); divida o documento antes da escrita"
168 )
169}
170
171pub fn too_many_tokens(tokens: u64, limit: u64) -> String {
175 format!(
176 "limite excedido: corpo tem {tokens} tokens (estimado), acima do teto de \
177 {limit} tokens (EMBEDDING_REQUEST_MAX_TOKENS); divida o conteúdo em \
178 múltiplas memórias"
179 )
180}
181
182pub fn database(err: &str) -> String {
184 format!("erro de banco de dados: {err}")
185}
186
187pub fn embedding(msg: &str) -> String {
189 format!("erro de embedding: {msg}")
190}
191
192pub fn vec_extension(msg: &str) -> String {
194 format!("extensão sqlite-vec falhou: {msg}")
195}
196
197pub fn provider_error(code: &str, message: &str) -> String {
199 format!("erro do provedor (código {code}): {message}")
200}
201
202pub fn db_busy(msg: &str) -> String {
204 format!("banco ocupado: {msg}")
205}
206
207pub fn batch_partial_failure(total: usize, failed: usize) -> String {
209 format!("falha parcial em batch: {failed} de {total} itens falharam")
210}
211
212pub fn io(err: &str) -> String {
214 format!("erro de I/O: {err}")
215}
216
217pub fn internal(err: &str) -> String {
219 format!("erro interno: {err}")
220}
221
222pub fn json(err: &str) -> String {
224 format!("erro de JSON: {err}")
225}
226
227pub fn lock_busy(msg: &str) -> String {
229 format!("lock ocupado: {msg}")
230}
231
232pub fn all_slots_full(max: usize, waited_secs: u64) -> String {
234 format!(
235 "todos os {max} slots de concorrência ocupados após aguardar {waited_secs}s \
236 (exit 75); use --max-concurrency ou aguarde outras invocações terminarem"
237 )
238}
239
240pub fn job_singleton_locked(job_type: &str, namespace: &str) -> String {
242 format!(
243 "job {job_type} para o namespace '{namespace}' já está em execução (exit 75); \
244 aguarde a conclusão ou passe --wait-job-singleton <SEGUNDOS>"
245 )
246}
247
248pub fn embedding_singleton_locked(namespace: &str) -> String {
250 format!(
251 "singleton de embedding para o namespace '{namespace}' já está retido (exit 75); \
252 outra CLI está chamando o LLM neste banco; passe --wait-lock <SEGUNDOS> para aguardar"
253 )
254}
255
256pub fn low_memory(available_mb: u64, required_mb: u64) -> String {
258 format!(
259 "memória disponível ({available_mb}MB) abaixo do mínimo requerido ({required_mb}MB) \
260 para carregar o modelo; aborte outras cargas ou use --skip-memory-guard (exit 77)"
261 )
262}
263
264pub fn shutdown(signal: &str) -> String {
266 format!("sinal de desligamento recebido: {signal}; operação cancelada pelo usuário (exit 19)")
267}
268
269pub fn binary_not_found(name: &str) -> String {
276 format!("binário não encontrado: {name} — instale e adicione ao PATH")
277}
278
279pub fn rate_limited(detail: &str) -> String {
281 format!("taxa de requisição excedida: {detail}")
282}
283
284pub fn timeout(operation: &str, secs: u64) -> String {
286 format!("timeout após {secs}s: {operation}")
287}