Feature Request for WeWeb: Bulk Language Extraction & CSV Import/Export for Translations

=== Description ===
This would be an absolute game-changer for WeWeb teams shipping multilingual apps. WeWeb already “knows” which elements render text; let’s turn that knowledge into a first-class Translations workflow that can translate 300+ pages in hours, not weeks—and get the community buzzing. :rocket:

Why this would be epic

  • Ridiculously fast: auto-discover every translatable string across selected pages or the whole project and export a single CSV. Translate in your spreadsheet of choice, then import to instantly update the app.
  • No more copy/paste archaeology: stable keys + context mean translators work with confidence, devs keep shipping.
  • Forum-worthy wow: this is the feature people love to upvote—massive time saver, obvious value, and easy to demo.

=== Proposed capabilities ===

  1. Auto-extract translatable strings
  • Scope: Current page / Selected pages / Entire project.
  • Sources: static text nodes, component props (labels, placeholders, tooltips), validation messages, menus, meta tags, and string literals in bindings.
  • Stable keys: pageSlug.componentId.prop (e.g., pricing/btn_3.label).
  • Extra columns: page, component type, path, context, notes.
  1. CSV export/import (bulk)
  • Export columns (minimum): page, component_id, path, key, original_text, context, notes, lang_pt, lang_en, lang_es, …
  • Options: export by scope; export only “missing”; export diffs since last run.
  • Import: dry-run validation, conflict preview, idempotent merges (no duplicates), per-row overwrite/skip.
  1. Runtime integration
  • Generated dictionaries per language with fallback chain (lang → defaultLang → original_text).
  • Seamless with the existing URL/internal lang parameter—zero breaking changes.

=== Bonus superpowers (the killer add-ons) ===

A) Out-of-sync translation notifications (change tracking)
When a string is edited in any language, flag all other languages as “Needs update.” In the Translations panel and inline on the component:

  • Show status chip: Up-to-date / Needs update / Missing
  • Quick actions: Propagate, Mark as up-to-date (clear), Ignore for now
  • Batch ops: resolve a whole page or language in one go

B) WeWeb AI for real-time translations :sparkles:
Let WeWeb’s AI instantly draft and insert translations:

  • Per-field button: text – pt [INPUT] [:sparkles: Update languages] → fills other languages on click
  • Per-page: “Translate this entire page to [en/es/fr]”
  • Per-project: “Fill all missing strings for [en]” with review queue
  • Keeps translation memory so future updates get smarter; respects glossary/brand terms if provided

C) New language = instant bootstrap
When adding a language, prompt:
“Auto-translate the entire project to [new language] now?”

  • Options: Translate all, Only missing, Skip
  • Mirrors the best of what Webflow users expect, but with WeWeb’s extractor + keys for superior control

=== Acceptance criteria ===

  • I can run Extract on the entire project and get a CSV of all strings with stable keys + context.
  • Editing that CSV and importing applies changes app-wide immediately, without breaking existing keys.
  • Re-extracting after page edits updates the catalog and preserves previously mapped keys.
  • Out-of-sync statuses appear automatically when a source language changes, with batch resolve actions.
  • The :sparkles: Update languages button fills missing/updatable translations in real time (field, page, or project).
  • Adding a new language offers an automatic full-project translation option.

=== Example CSV ===
page,component_id,path,key,original_text,context,notes,lang_pt,lang_en,lang_es
home,heroTitle,text,home/heroTitle.text,“Bem-vindo”,“Text”,“Homepage hero”,Bem-vindo,“Welcome”,“Bienvenido”
pricing,btn_3,label,pricing/btn_3.label,“Assinar”,“Button”,“CTA primary”,Assinar,“Subscribe”,“Suscribirse”
form-contact,input_email,placeholder,form-contact/input_email.placeholder,“Seu e-mail”,“Input”,“”,Seu e-mail,“Your email”,“Tu correo”

——– Português ——–
=== Descrição ===
Isso seria uma verdadeira revolução para as equipes do WeWeb que desenvolvem aplicativos multilíngues. O WeWeb já “sabe” quais elementos renderizam texto; vamos transformar esse conhecimento em um fluxo de trabalho de traduções de primeira classe que possa traduzir mais de 300 páginas em horas, não em semanas — e deixar a comunidade empolgada. :rocket:

Por que isso seria incrível?

  • Incrivelmente rápido: descubra automaticamente todas as strings traduzíveis em páginas selecionadas ou em todo o projeto e exporte um único arquivo CSV. Traduza na planilha de sua preferência e importe para atualizar o aplicativo instantaneamente.

  • Chega de arqueologia de copiar e colar: chaves estáveis ​​+ contexto significam que os tradutores trabalham com confiança e os desenvolvedores continuam lançando atualizações.

  • Impressionante o suficiente para ser comentado no fórum: este é o recurso que as pessoas adoram votar — economia de tempo enorme, valor óbvio e fácil de demonstrar.

=== Recursos propostos ===

  1. Extração automática de strings traduzíveis
  • Escopo: Página atual / Páginas selecionadas / Projeto inteiro.
  • Fontes: nós de texto estáticos, propriedades de componentes (rótulos, espaços reservados, dicas de ferramentas), mensagens de validação, menus, meta tags e literais de string em vinculações.
  • Chaves estáveis: pageSlug.componentId.prop (por exemplo, pricing/btn_3.label).
  • Colunas extras: página, tipo de componente, caminho, contexto, notas.
  1. Exportação/importação em lote (CSV)
  • Colunas de exportação (mínimas): página, component_id, caminho, chave, texto_original, contexto, notas, idioma_pt, idioma_en, idioma_es, …

  • Opções: exportar por escopo; exportar apenas os itens ausentes; exportar diferenças desde a última execução.

  • Importação: validação de simulação, pré-visualização de conflitos, mesclagens idempotentes (sem duplicados), sobrescrita/ignorar por linha.

  1. Integração em tempo de execução
  • Dicionários gerados por idioma com cadeia de fallback (idioma → idioma_padrão → texto_original).
  • Integração perfeita com o parâmetro de idioma interno/URL existente — sem alterações incompatíveis.

=== Superpoderes extras (os complementos essenciais) ===

A) Notificações de tradução dessincronizada (rastreamento de alterações)
Quando uma string é editada em qualquer idioma, sinaliza todos os outros idiomas como “Precisa de atualização”. No painel de Traduções e diretamente no componente:

  • Exibir indicador de status: Atualizado / Precisa de atualização / Ausente
  • Ações rápidas: Propagar, Marcar como atualizado (limpar), Ignorar por enquanto
  • Operações em lote: resolva uma página inteira ou um idioma de uma só vez

B) IA da WeWeb para traduções em tempo real :sparkles:
Deixe a IA da WeWeb criar e inserir traduções instantaneamente:

  • Botão por campo: texto – pt [ENTRADA] [:sparkles: Atualizar idiomas] → preenche outros idiomas ao clicar
  • Por página: “Traduzir esta página inteira para [en/es/fr]”
  • Por projeto: “Preencher todas as strings ausentes para [en]” com fila de revisão
  • Mantém a memória de tradução para que as atualizações futuras sejam mais inteligentes; respeita os termos do glossário/marca, se fornecidos

C) Novo idioma = inicialização instantânea
Ao adicionar um idioma, exibir a mensagem:
“Traduzir automaticamente todo o projeto para [novo idioma] agora?” - Opções: Traduzir tudo, Somente ausentes, Ignorar

  • Reflete o melhor que os usuários do Webflow esperam, mas com o extrator do WeWeb + chaves para um controle superior

=== Critérios de aceitação ===

  • Posso executar a Extração em todo o projeto e obter um CSV com todas as strings, com chaves estáveis ​​e contexto.

  • Editar esse CSV e importá-lo aplica as alterações em todo o aplicativo imediatamente, sem quebrar as chaves existentes.

  • Reextrair após edições na página atualiza o catálogo e preserva as chaves mapeadas anteriormente.

  • Status de dessincronização aparecem automaticamente quando um idioma de origem é alterado, com ações de resolução em lote.

  • O botão :sparkles: Atualizar idiomas preenche traduções ausentes/atualizáveis ​​em tempo real (campo, página ou projeto).

  • Adicionar um novo idioma oferece uma opção de tradução automática para todo o projeto.

=== Exemplo CSV ===

page,component_id,path,key,original_text,context,notes,lang_pt,lang_en,lang_es
home,heroTitle,text,home/heroTitle.text,“Bem-vindo”,“Text”,“Homepage hero”,Bem-vindo,“Welcome”,“Bienvenido”
pricing,btn_3,label,pricing/btn_3.label,“Assinar”,“Button”,“CTA primary”,Assinar,“Subscribe”,“Suscribirse”
form-contact,input_email,placeholder,form-contact/input_email.placeholder,“Seu e-mail”,“Input”,“”,Seu e-mail,“Your email”,“Tu correo”

1 Like

Hi Augusto, welcome back :waving_hand:

thank you for the feature idea!