i18n(app-svep) + i18n-vakt: hela mobil-UI:t översatt + CI-vakt mot regress
- Svepte 51 hårdkodade strängar -> t() över konto, sök/bläddra, sparade recept, kök, planera, skanna, byt måltid, inköp, minne, cooking, api-fel (+ locLabel/ kategorier via nycklar). 47 nya nycklar, översatta till alla 12 språk. - NY: apps/mobile/scripts/i18n-check.mjs (i18n:check) – fäller bygget om ett språk saknar en nyckel, en använd nyckel saknas, eller det finns hårdkodad UI-text. Wire:ad i CI (.github/workflows/ci.yml) efter typecheck. => 'lägg till språk' blir: kör vakten, den listar exakt vad som fattas. Aldrig mer leta för hand. - Prettier-fixade 5 filer från tidigare leveranser så format:check blir grön. - submit-recipe fri-text-payload + firebase dev-stubs markerade // i18n-ignore. Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -51,6 +51,53 @@
|
||||
"common.add": "Adicionar",
|
||||
"common.back": "Voltar",
|
||||
"common.cancel": "Cancelar",
|
||||
"common.remove": "Remover",
|
||||
"common.all": "Todos",
|
||||
"auth.tagline": "Menos desperdício, menos stress, mais dinheiro na carteira",
|
||||
"auth.passwordMin8": "A palavra-passe tem de ter pelo menos 8 caracteres.",
|
||||
"auth.passwordMismatch": "As palavras-passe não coincidem.",
|
||||
"auth.repeatPassword": "Repetir palavra-passe",
|
||||
"plan.swapDish": "Trocar prato",
|
||||
"scan.maxTitle": "Concluído",
|
||||
"scan.maxBody": "Máximo de {max} fotos nesta digitalização – a analisar.",
|
||||
"scan.photoTaken": "Foto {count} tirada",
|
||||
"scan.multiAngleHint": "Podes tirar mais ângulos do mesmo sítio – a app lista cada artigo uma vez. Cada foto conta como uma digitalização.",
|
||||
"scan.takeAnother": "Tirar mais uma",
|
||||
"scan.analyzeCount": "Analisar ({count})",
|
||||
"scan.tips.merge": "Frigorífico/congelador/despensa: tira várias fotos na mesma digitalização – a app junta os duplicados.",
|
||||
"cooking.timerHint": "Tempo aproximado para o passo – usa o temporizador do teu telemóvel.",
|
||||
"kitchen.deleteConfirm": "Remover os artigos selecionados de {label}?",
|
||||
"kitchen.scopeSearch": "a pesquisa",
|
||||
"kitchen.scopeAll": "todo o inventário",
|
||||
"kitchen.scopeSelection": "a seleção",
|
||||
"kitchen.searchPlaceholder": "Pesquisar artigo…",
|
||||
"kitchen.clearList": "Esvaziar lista",
|
||||
"kitchen.empty": "Não há artigos para mostrar. Digitaliza ou adiciona artigos.",
|
||||
"kitchen.pastBefore": "validade",
|
||||
"memory.trainingNote": "A memória pessoal nunca é usada como dados de treino sem consentimento em separado.",
|
||||
"recipe.source": "Fonte: {name}",
|
||||
"recipes.sub.bread": "Pão",
|
||||
"recipes.sub.bun": "Pãezinhos",
|
||||
"recipes.sub.pie": "Tarte",
|
||||
"recipes.sub.cake": "Bolos e tortas",
|
||||
"recipes.sub.cookie": "Bolachas",
|
||||
"recipes.searchPlaceholder": "Pesquisar receitas…",
|
||||
"recipes.emptyCategory": "Ainda não há receitas nesta categoria – aparecem à medida que o catálogo cresce.",
|
||||
"savedRecipes.searchPlaceholder": "Pesquisar nas tuas receitas guardadas",
|
||||
"savedRecipes.empty": "Ainda não tens receitas guardadas. Toca em ☆ Guardar numa receita e aparece aqui.",
|
||||
"savedRecipes.emptySearch": "Nenhuma receita guardada corresponde à tua pesquisa.",
|
||||
"shopping.removeConfirm": "Remover o artigo da lista?",
|
||||
"swap.addTitle": "Adicionar refeição",
|
||||
"swap.swapTitle": "Trocar refeição",
|
||||
"swap.chooseFor": "Escolhe um prato para {meal} – ou pesquisa qualquer prato.",
|
||||
"swap.chooseOther": "Escolhe outro prato para {meal} – ou pesquisa qualquer prato.",
|
||||
"swap.mealLunch": "o almoço",
|
||||
"swap.mealBreakfast": "o pequeno-almoço",
|
||||
"swap.mealDinner": "o jantar",
|
||||
"swap.searchPlaceholder": "Pesquisar em todas as receitas …",
|
||||
"swap.showingResults": "A mostrar resultados para ”{query}”.",
|
||||
"swap.clearHint": "Limpa a caixa de pesquisa e pesquisa sem texto para voltares a ver as sugestões.",
|
||||
"errors.uploadTimeout": "O carregamento demorou demasiado tempo – verifica a ligação e tenta novamente.",
|
||||
"common.done": "Concluído",
|
||||
"common.error": "Algo correu mal. Tente novamente.",
|
||||
"common.estimate": "Estimativa",
|
||||
|
||||
Reference in New Issue
Block a user