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): exiberesource.titlestatic: true: exibe a tradução detitle.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: falsepara ícones decorativos - Use
static: truepara 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: falseem campos que precisam de acessibilidade