Pular para o conteúdo principal

Ignorar Traduções

Em alguns casos, você pode querer que um componente não seja traduzido ou use um valor fixo. O Nerdify oferece opções para controlar esse comportamento.


Campos sem Tradução

translate: false

No model, use translate: false para componentes que não precisam de tradução:

component :icon, name: :phone, translate: false
component :text, name: :total_value, translate: false

Isso é útil para:

  • Valores dinâmicos que vêm do banco
  • Ícones com nomes técnicos
  • Campos que exibem dados puros

Valores Fixos

static: true

Para componentes que exibem labels fixos (da tradução) ao invés de valores do recurso:

component :text, name: :title, static: true

Comportamento:

  • static: false (padrão): exibe resource.title
  • static: true: exibe a tradução de title.name

Campos Ocultos

Sem tradução no YAML

Se um campo não tiver tradução, ele aparecerá com a chave técnica:

# Se não definir:
# name:
# name: Nome

# O campo aparecerá como "name" (chave técnica)

hidden: true

Para ocultar completamente um campo da UI:

field :internal_code, hidden: true

Valores Default

Fallback para chave

Se a tradução não existir, o Nerdify usa a chave como fallback:

# Se não existir tradução para "customer_name"
# O label será "customer_name"

I18n.t com default

No Ruby, você pode definir defaults:

I18n.t("path.to.key", default: "Valor Padrão")

Campos Computados

Para campos que são calculados e não precisam de tradução específica:

# No model
def full_address
"#{street}, #{number} - #{city}"
end

# Na tradução, defina apenas se quiser um label
components:
full_address:
name: Endereço Completo

Ícones sem Tradução

Ícones geralmente não precisam de tradução do nome:

component :icon, name: :star, static: true, translate: false

Apenas o tooltip pode precisar:

star_icon:
tooltip: Favorito

Campos de Sistema

Campos de sistema geralmente não precisam de tradução:

field :created_at
field :updated_at
field :_id

Se não definir tradução, eles aparecerão com nomes técnicos ou serão ocultados dependendo da configuração.


Backend-Only Fields

Campos que só existem no backend e não aparecem na UI:

# No model - campo oculto
field :sync_token, type: :text, backend_if: "false"

# Ou usando attribute sem fieldset
field :internal_flag, type: Boolean
# (campos fora de fieldsets não aparecem na UI)

Exemplo de Configuração

class Customer
include Nerdify::Model
orm :mongoid

fieldset :customer_form do
# Campos normais (precisam de tradução)
field :name, type: :text, presence: true
field :email, type: :email

# Campo com valor fixo da tradução
component :text, name: :section_title, static: true

# Ícone sem tradução
component :icon, name: :favorite, static: true, translate: false

# Campo oculto
field :internal_code, hidden: true
end

# Campo fora do fieldset (não aparece na UI)
field :api_token, type: String
end
# Tradução
components:
name:
name: Nome
placeholder: Digite o nome

email:
name: E-mail
placeholder: email@exemplo.com

section_title:
name: Informações Adicionais

# internal_code não precisa de tradução (hidden)
# favorite não precisa de tradução (translate: false)
# api_token não precisa de tradução (fora do fieldset)

Quando Ignorar Traduções

Ignorar quando:

  • Valores são dinâmicos e vêm do banco de dados
  • Ícones decorativos sem significado textual
  • Campos de sistema (IDs, timestamps)
  • Campos ocultos da interface
  • Valores computados auto-explicativos

Traduzir quando:

  • Labels de formulário
  • Placeholders e hints
  • Mensagens de erro
  • Tooltips informativos
  • Opções de select/radio
  • Actions e botões

Boas Práticas

Faça

  • Use translate: false para ícones decorativos
  • Use static: true para labels fixos
  • Mantenha campos de sistema sem tradução
  • Documente campos que intencionalmente não têm tradução

Evite

  • Deixar campos visíveis sem tradução acidentalmente
  • Traduzir valores que são dados (não labels)
  • Usar translate: false em campos que precisam de acessibilidade