Files
TREK/shared/src/i18n/br/packing.ts
T
Maurice 5c312a8497 feat(packing): print, PDF and Markdown/CSV export of packing lists
The packing list bar gets an export menu next to the import button, both
now icon only. The menu prints the open view as a TREK styled page (trip,
dates, packed count, one card per category, bags), which the browser can
also save as a PDF, and downloads it as a Markdown checklist or as a CSV
in the exact format the import reads, bags included, so a list works as a
personal template without admin rights.

The import now also reads Markdown checklists: headings become
categories, "- [x]" marks an item packed, a "3x" prefix sets the
quantity and a "(200 g)" suffix the weight. The phone action sheet
offers the same exports through the shared usePackingExport hook.

The help center gets an export guide with new pictures, the import guide
and the wiki page describe the Markdown format, in all 27 languages.

Addresses discussions #1420 and #875.
2026-09-25 11:31:23 +02:00

95 lines
4.5 KiB
TypeScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import type { TranslationStrings } from '../types';
const packing: TranslationStrings = {
'packing.actions': 'Ações',
'packing.editDone': 'Concluído',
'packing.personalEmptyHint': 'Sua lista pessoal está vazia — copie itens compartilhados ou adicione os seus.',
'packing.assignMembers': 'Atribuir membros',
'packing.categoryOptions': 'Opções da lista',
'packing.editItem': 'Editar item',
'packing.itemName': 'Nome',
'packing.itemQuantity': 'Quantidade',
'packing.itemWeight': 'Peso (g)',
'packing.title': 'Lista de mala',
'packing.empty': 'A lista de mala está vazia',
'packing.import': 'Importar',
'packing.importTitle': 'Importar lista de bagagem',
'packing.importHint': 'Um item por linha. Formato: Categoria, Nome, Peso (g), Bolsa, checked/unchecked (opcional)',
'packing.importPlaceholder':
'Higiene, Escova de dentes\nRoupas, Camisetas, 200\nDocumentos, Passaporte, , Mala de mão\nEletrônicos, Carregador, 50, Mala, checked',
'packing.importCsv': 'Carregar CSV/TXT/MD',
'packing.export': 'Exportar',
'packing.exportPrint': 'Imprimir ou salvar como PDF',
'packing.exportMarkdown': 'Checklist em Markdown (.md)',
'packing.exportCsv': 'CSV para importação (.csv)',
'packing.printItems': 'Itens',
'packing.printPacked': 'Na mala',
'packing.importHintMarkdown':
'Uma lista em Markdown também funciona: um título define a categoria, "- [ ]" e "- [x]" viram itens e "3x" antes do nome define a quantidade.',
'packing.importAction': 'Importar {count}',
'packing.importSuccess': '{count} itens importados',
'packing.importError': 'Falha na importação',
'packing.importEmpty': 'Nenhum item para importar',
'packing.progress': '{packed} de {total} na mala ({percent}%)',
'packing.clearChecked': 'Remover {count} marcado(s)',
'packing.clearCheckedShort': 'Remover {count}',
'packing.allPacked': 'Tudo na mala!',
'packing.addPlaceholder': 'Adicionar item...',
'packing.categoryPlaceholder': 'Lista...',
'packing.saveAsTemplate': 'Salvar como modelo',
'packing.templateName': 'Nome do modelo',
'packing.templateSaved': 'Lista de bagagem salva como modelo',
'packing.filterAll': 'Todos',
'packing.filterOpen': 'Abertos',
'packing.filterDone': 'Prontos',
'packing.emptyTitle': 'A lista de mala está vazia',
'packing.emptyFiltered': 'Nenhum item corresponde ao filtro',
'packing.menuRename': 'Renomear',
'packing.menuCheckAll': 'Marcar todos',
'packing.menuUncheckAll': 'Desmarcar todos',
'packing.menuDeleteCat': 'Excluir lista',
'packing.noMembers': 'Nenhum membro na viagem',
'packing.addItem': 'Adicionar item',
'packing.addItemPlaceholder': 'Nome do item...',
'packing.addCategory': 'Adicionar lista',
'packing.newCategoryPlaceholder': 'Nome da lista (ex: Roupas)',
'packing.applyTemplate': 'Aplicar modelo',
'packing.template': 'Modelo',
'packing.templateApplied': '{count} itens adicionados do modelo',
'packing.templateError': 'Falha ao aplicar modelo',
'packing.bags': 'Malas',
'packing.noBag': 'Sem mala',
'packing.totalWeight': 'Peso total',
'packing.quantity': 'Qtd.',
'packing.bagName': 'Nome da mala...',
'packing.addBag': 'Adicionar mala',
'packing.changeCategory': 'Mover para lista',
'packing.confirm.clearChecked': 'Remover {count} item(ns) marcado(s)?',
'packing.confirm.deleteCat': 'Tem certeza de que deseja excluir a lista "{name}" com {count} itens?',
'packing.defaultCategory': 'Outros',
'packing.toast.saveError': 'Falha ao salvar',
'packing.toast.deleteError': 'Falha ao excluir',
'packing.toast.renameError': 'Falha ao renomear',
'packing.toast.addError': 'Falha ao adicionar',
'packing.makePrivate': 'Tornar privado',
'packing.makePublic': 'Compartilhar',
'packing.privateHint': 'Privado — visível apenas para você',
'packing.viewCommon': 'Compartilhado',
'packing.viewPersonal': 'Minha lista',
'packing.share': 'Compartilhar',
'packing.tierCommonHint': 'No grupo, visível para todos',
'packing.tierPersonal': 'Pessoal',
'packing.tierPersonalHint': 'Privado — só você vê',
'packing.tierShared': 'Compartilhar com…',
'packing.noOneToShare': 'Ninguém mais nesta viagem ainda',
'packing.takenCareOf': 'por {name}',
'packing.sharedWithCount': 'compartilhado com {count}',
'packing.broughtBy': 'trazido por {name}',
'packing.alsoBring': 'Eu também posso levar',
'packing.alsoBringingStop': 'Não vou levar',
'packing.cloneToMine': 'Copiar para minha lista',
'packing.bagLimit': 'Limite de peso',
'packing.setBagLimit': 'Definir limite',
};
export default packing;