Texto e traduções¶
O MRBS separa o vocabulário da aplicação, os textos específicos do site, as páginas de Ajuda e este manual MkDocs. Escolha a camada adequada para facilitar futuras atualizações.
| Tarefa | Localização correta |
|---|---|
| Renomear um rótulo para uma instalação | $vocab_override em config.inc.php |
| Adicionar ou melhorar uma linguagem de UI MRBS | web/lang/lang.<language> |
| Traduzir ou personalizar a página de ajuda da aplicação | web/site_faq/site_faq_<language>.html |
| Traduzir este manual | Um ficheiro com sufixo de idioma abaixo docs/ |
Substituir o texto de um site¶
Não edite um ficheiro de idioma fornecido apenas para renomear “Sala” ou alterar o título do site. Encontre o token em web/lang/lang.en e substitua-o:
$vocab_override['en']['mrbs'] = 'Resource Booking';
$vocab_override['de']['mrbs'] = 'Ressourcenbuchung';
$vocab_override['fr']['mrbs'] = 'Réservation de ressources';
$vocab_override['es']['mrbs'] = 'Reserva de recursos';
A ordem do índice é sempre o idioma e depois o token: $vocab_override[LANG][TOKEN].
Os tokens úteis definidos pelo site incluem:
$vocab_override['en']['room.coffee_machine'] = 'Coffee machine';
$vocab_override['en']['entry.catering'] = 'Catering';
$vocab_override['en']['entry.description.placeholder'] =
'Add information for the room team';
$vocab_override['en']['users.zip_code.oninvalid'] =
'Enter a valid ZIP code';
$vocab_override['en']['type.C'] = 'Customer booking';
Os tokens de campo personalizado estão descritos em Campos personalizados. As descrições do tipo de reserva utilizam type.X, em que X é o código do tipo configurado.
As substituições sobrevivem a uma atualização porque residem na configuração do site. Verifique novamente o seu significado se um lançamento alterar o token original ou o seu contexto.
Preservar marcadores de substituição¶
As strings de idioma podem conter marcadores printf, como %s, %d, ou formas posicionais, como %1$d. Preserve cada marcador e o seu tipo. Uma tradução pode reordenar argumentos apenas com a forma posicional.
Preserve também os fragmentos HTML deliberados, a semântica de pontuação e os espaços circundantes. Teste strings com contagens de zero, um e muitos, quando aplicável.
Selecione o idioma do tempo de execução¶
Por predefinição, MRBS escolhe um idioma no browser:
Para forçar um idioma:
O token deve corresponder a um ficheiro web/lang/lang.* disponível. A seleção da localidade para datas e horas pode ser substituída separadamente:
$override_locale também deve ser compatível com o sistema operativo do servidor. $cli_language controla os comandos executados fora do browser. Para diagnóstico, $language_debug = true grava informação de idioma e localidade no registo de erros; desative-o novamente após a resolução de problemas.
Adicionar ou manter um idioma de aplicação¶
O ficheiro em inglês é a referência e o substituto. Para criar um idioma cujo token detetado seja xx:
Então:
- Mantenha a linha de abertura PHP e todas as chaves
$vocab. - Traduza valores de string, e não nomes de token.
- Guarde o ficheiro como UTF-8.
- Não utilize entidades HTML, exceto
; escrever caracteres UTF-8 diretamente. - Preservar os marcadores de substituição e marcação intencional.
- Valide a sintaxe PHP.
MRBS primeiro carrega a referência em inglês e depois o idioma selecionado, de modo a que os tokens em falta voltem para o inglês.
Verifique a integridade¶
checklang.php compara ficheiros de idioma com lang.en. Para uma instância de desenvolvimento, coloque-a ou mantenha-a no diretório web MRBS e abra:
Sem seleção de idioma, oferece todos os ficheiros de idioma instalados. A função opcional de atualização grava ficheiros e, portanto, requer acesso de escrita; evite isso na produção e reveja as alterações geradas. Restrinja ou remova este utilitário de desenvolvimento de uma implementação pública quando a verificação estiver concluída.
A verificação de sintaxe e checklang.php detetam problemas diferentes: utilize ambos.
Traduzir a página de ajuda da aplicação¶
O texto de ajuda não vem de $vocab. É armazenado separadamente:
web/site_faq/site_faq.html
web/site_faq/site_faq_de.html
web/site_faq/site_faq_fr.html
web/site_faq/site_faq_es.html
Selecione o sufixo sem sublinhado:
Valores mais antigos, como '_de', são aceites para compatibilidade, mas estão obsoletos. A configuração é independente do idioma do browser, por isso teste se o FAQ selecionado corresponde ao público-alvo. As edições locais nos ficheiros de perguntas frequentes enviados devem ser registadas e reaplicadas ou fundidas durante uma atualização.
Traduzir este manual¶
O site de documentação utiliza ficheiros de sufixo:
docs/admin-guide/custom-fields.md
docs/admin-guide/custom-fields.de.md
docs/admin-guide/custom-fields.fr.md
docs/admin-guide/custom-fields.es.md
O inglês é o substituto da documentação. Estes ficheiros não afetam a interface do utilizador da aplicação MRBS ou a sua página de Ajuda.
Fluxo de trabalho seguro para atualização¶
- Coloque o texto exclusivo do site em
$vocab_override. - Mantenha uma lista de idiomas e ficheiros de perguntas frequentes mantidos localmente.
- Compare um novo
lang.encom a versão anterior para tokens adicionados ou alterados. - Execute
php -lem cada ficheiro de idioma alterado. - Execute
checklang.phpnuma instância de desenvolvimento restrita. - Reveja as alterações do FAQ separadamente.
- Teste todos os idiomas ativos antes da implementação.
Lista de verificação de verificação¶
- A deteção do navegador e o padrão forçado selecionam o idioma esperado.
- Os tokens em falta voltam a um inglês compreensível.
- As páginas de navegação, formulários, erros, aprovações e administração são renderizadas corretamente.
%s,%de os marcadores posicionais recebem os valores corretos.- As datas, horas, dias da semana e fusos horários utilizam a localidade pretendida.
- Os assuntos e corpos de correio eletrónico, relatórios, exportações e trabalhos de linha de comando utilizam o idioma pretendido.
- Os campos personalizados, os tipos de reserva, os espaços reservados e as mensagens de validação são traduzidos.
- A página de Ajuda utiliza o ficheiro
site_faqesperado. - Os registos não contêm depuração de linguagem persistente ou valores de formulário confidenciais.