Metadados e Traduções
Tradutor do Omeka S
O Omeka S possui um sistema de tradução centralizado baseado em gettext. Cada módulo e tema pode fornecer arquivos .po e .mo com traduções para diferentes idiomas. O helper $this->translate() acessa estas traduções em tempo de execução.
Quando o tema ou um template chama $this->translate('Texto'), o Omeka S busca a tradução nos arquivos de idioma carregados. A ordem de precedência é: tema primeiro, depois módulos, depois core. Se nenhuma tradução for encontrada, o texto original é retornado.
Para vocabulários de metadados como Dublin Core, o Omeka S armazena os labels em inglês no banco de dados. O tradutor do Omeka S deve fornecer a tradução destes labels através dos arquivos de idioma. Quando um template exibe $property->label(), o valor vem do banco e pode ser traduzido via $translate().
Fallback do tema
Arquivo view/common/property-translations.php fornece um fallback estático para labels de propriedades que o tradutor do Omeka S não resolve. Este arquivo é carregado via require_once em templates que precisam de traduções de metadados.
Como foi construído
O arquivo define um array global $GLOBALS['propertyTranslationMap'] mapeando termos de propriedade para labels em português. O array cobre múltiplos vocabulários:
- Dublin Core Terms: 55 termos de
dcterms: - Dublin Core: 15 termos de
dc: - Friend of a Friend: 5 termos de
foaf: - SKOS e RDFS: 4 termos
- schema.org: 8 termos
- BIBO: 75 termos bibliográficos
Exemplo de estrutura:
$GLOBALS['propertyTranslationMap'] = [
'dcterms:title' => 'Título',
'dcterms:creator' => 'Criador',
'bibo:author' => 'Autor',
'bibo:isbn' => 'ISBN',
];
Como usar como desenvolvedor
Templates que exibem metadados de recursos carregam o arquivo e usam o mapeamento:
require_once __DIR__ . '/property-translations.php';
$translationMap = &$GLOBALS['propertyTranslationMap'];
$propertyTerm = 'dcterms:title';
if (isset($translationMap[$propertyTerm])) {
$label = $translationMap[$propertyTerm]; // 'Título'
} else {
$label = $translate($rawLabel); // Fallback para tradutor do Omeka
}
Consumidores deste fallback:
view/common/resources/meta.phtml: exibição de metadados de itens e coleçõesview/omeka/site/index/search.phtml: filtros de busca
Extensão do mapeamento
Para adicionar traduções de novos vocabulários:
- Edite
view/common/property-translations.php - Adicione entradas ao array
$GLOBALS['propertyTranslationMap'] - Use o prefixo do vocabulário seguido do termo:
'prefix:termo' => 'Tradução'
O mapeamento estático é consultado antes do tradutor do Omeka S. Se o termo existe no array, a tradução do array é usada. Se não existe, o sistema recorre ao tradutor ou ao label bruto do banco.
Exibição de metadados
Arquivo view/common/resources/meta.phtml renderiza metadados de itens e coleções em formato tabular. Este partial consome o fallback de traduções para labels de propriedades.
Estrutura de renderização
O partial recebe um recurso e opcionalmente coleções associadas. Ele itera sobre $resource->values(), obtém o termo de cada propriedade, e busca a tradução no mapeamento. Valores são renderizados via asHtml() com ajustes para URIs receberem sublinhado.
Layout de duas colunas
Metadados são distribuídos em duas colunas. A primeira coluna exibe campos principais em ordem fixa: título, data, criador, assunto, formato, editor, tipo, direitos. A segunda coluna exibe propriedades restantes.
O controle de quais campos aparecem na primeira coluna é feito via array $firstColumnFields e mapeamento $fieldTermMapping no próprio partial. Cada campo pode mapear para múltiplos termos de vocabulário.
URI styling
Valores do tipo URI recebem classe CSS underline! para indicar que são links:
if ($value->type() === 'uri') {
$valueString = preg_replace(
'/(<a\s+[^>]*class=["\'])([^"\']*)(["\'])/i',
'$1$2 underline!$3',
$valueString,
1
);
}
Integração com templates
Templates de item e item-set incluem o partial de metadados passando contexto:
echo $this->partial('common/resources/meta', [
'item' => $item,
'itemSets' => $itemSets,
'filterLocale' => $filterLocale,
'lang' => $lang,
]);
O partial carrega property-translations.php, processa valores do recurso, aplica traduções, e renderiza HTML estruturado com classes Tailwind para estilização.