Internationalizations
O PmWiki suporta a internacionalização de páginas web, permitindo que caracteres acentuados apareçma em nomes de página e a quese completa customização dos prompts e mensagens do pmwiki. Grande parte da customização é fornecida pela função XLPage() no PmWiki, que carrega um conjunto de variáveis de tradução de uma página wiki (tipicamente nomeada XLPage, mas pode ter qualquer nome que você desejar).
O resto desa página é devotada à instalação, configuração e uso de outros idiomas. Se você está procurando por ferramentas e ajuda para localização do PmWiki na sua lingua, ou como você pode melhorar traduções existentes, comece em pmwiki.org com a página Localization - O portal de tradução.
Carregando páginas de tradução
Muitas páginas em Outras Linguas já foram criadas e mantidas no site pmwiki.org. Você pode baixar um arquivo com essas traduções do endereço http://www.pmwiki.org/pub/pmwiki/i18n/ . Simplismente faça o download dos arquivos de linguagens aprorpiados, e desempacote-os no diretório contendo o arquivo pmwiki.php da sua instalação. Cada arquivo contém um número de arquivos de página que serão colocados dentro do diretório wikilib.d/, e alguns scripts especiais para a tradução que usam um a character set outro que não o iso-8859-1 (padrão do PmWiki). Você também pode usar o charset UTF-8?.
Uma vez que as páginas de tradução estejam instaladas, você habilita uma linguagem adicionando uma chamada para o XLPage() no seu arquivo config.php. Por exemplo, para selecionar prompts em francês, você deve especificar
XLPage('fr','PmWikiFr.XLPage');
Que diz para carregar as traduções para o francês ('fr') da página PmWikiFr.XLPage. É perfeitamente normal carregar multiplas páginas; assim, se você quer criar suas próprias traduções sem mudar as que você tem no arquivo i18n, simplesmente crie uma nova página (veja abaixo) e carregue-a no topo. certifique-se de carregar primeiro a página com as suas mudanças locais:
XLPage('fr','PmWikiFr.XLPageLocal'); # minhas traduções locais XLPage('fr','PmWikiFr.XLPage'); # do pacote i18n.tgz
Se a sua intenção é oferecer múltiplas linguagens no seu site, e usar Grupo como seletores de linguagem, você talvez queira colocar este código no seu arquivo de customizações por grupo (veja GroupCustomizations?). Por exemplo, se o seu site está publicado em Francês e Inglês, e as páginas em francês estão no grupo chamado Fr, você poderia criar um arquivo nomeado como Fr.php no seu diretório local/ , contendo:
<?php if (!defined('PmWiki')) exit(); ## mude para o francês XLPage('fr','PmWikiFr.XLPage');
You may wish to create a page called PmwikiFr.php with the same content to access the French documentation in the PmwikiFr group. En.php is not necessary in this case since English is the default language.
An alternative to the above would be to add to config.php the following, which tests if there is an XLPage in a group, and if it finds one it gets loaded:
$xlpage = FmtPageName('$Group.XLPage', $pagename); if (PageExists($xlpage)) XLPage($xlpage, $xlpage);
With this method you would need to copy any relevant XLPage into any group which needs the different language support.
See also Cookbook:MultiLanguage
Creating New Translations
If language pages don't exist for your desired language, it's easy to create one! An XLPage translation file simply contains lines of the form
'phrase' => 'translated phrase',
where "phrase" is an internationalized phrase (denoted by $[phrase]
) in PmWiki's $...Fmt variables, and "translated phrase" is what should be printed in your particular language. For example, the line (in PmWikiFr.XLPage
)
'Search' => 'Rechercher',
converts "$[Search]
" to "Rechercher" on output. The file Localization:XLPageTemplate is a good starting point for creating a new XLPage and has most of PmWiki's key phrases already listed in it.
If you create new versions of PmWiki pages in other languages, please consider adding them to the main PmWiki site so that they can be made available to others in the i18n archives! (Be sure to check out The Localization Portal? for further information on effectively internationalizing PmWiki.)
Enabling "Special" Characters in WikiLinks
To enable "special" characters like for example German umlauts in WikiLinks, it is necessary to configure the server locale to ensure that PmWiki uses the proper character set definition.
If this is not possible due to limited access to the server configuration, PmWiki can be configured to use a specific locale by using the XLPage options (see XLPageTemplate).
For German umlauts, you'd need for example:
- 'Locale' => 'deu', <- for Windows servers, see MSDN List of locale identifiers
- 'Locale' => 'de_DE', <- for Linux servers
Note that the locale identifier depends on the operation system and perhaps on the specific installation.
Notes
If my wiki is internationalized by config.php, how do I revert a specific group to English?
Use $XLLangs = array('en');
in the group's group customization? file.
If my wiki is in English and I want just one page, or group, in Spanish do I say XLPage('es','PmWikiEs.XLPage');
in the group or page configuration file?
Yes, that is usually the best method. If you were doing this with many scattered pages, or with several languages, you might find it easier to maintain if you load the translations all in config.php like this:
XLPage('es','PmWikiEs.XLPage');
XLPage('fr','PmWikiFr.XLPage');
XLPage('ru','PmWikiRu.XLPage');
$XLLangs
= array('en');
Then in each group or page configuration file, you'd just use $XLLangs
= array('es'); to set the language to use (in this case, Spanish). Note that though this method is easier to maintain, its somewhat slower because it loads all the dictionaries for each page view, even if they won't be used.
What does the first parameter of this function stand for? How can it be used?
The XLPage mechanism allows multiple sets of translations to be loaded, and the first parameter is used to distinguish them.
For example, suppose I want to have translations for both normal French and "Canadian" French. Rather than maintain two entirely separate sets of pages, I could do:
XLPage('fr', 'PmWikiFr.XLPage'); XLPage('fr-ca', 'PmWikiFrCa.XLPage');
PmWikiFr.XLPage would contain all of the standard French translations, while PmWikiFrCA.XLPage would only need to contain "Canada-specific" translations -- i.e., those that are different from the ones in the French page.
The first parameter distinguishes the two sets of translations.
In addition, a config.php script can use the $XLLangs
variable
to adjust the order of translation, so if there was a group or
page where I only wanted the standard French translation, I
can set
$XLLangs
= array('fr', 'en');
and PmWiki will use only the 'fr' and 'en' translations (in that order), no matter how many translations have been loaded with XLPage().
How can I use PHP to add a translation for an individual string on the fly?
Use the XLSDV() function to provide a translation for a specific (English) string. For instance, with this in config.php
XLSDV('nl', array('my English expression'=>'mijn Nederlandse uitdrukking'));
any instance of the variable expression $[my English expression]
in wiki mark-up will be displayed as my English expression in default (English) context, but as mijn Nederlandse uitdrukking in Dutch (nl) context, i.e. when XLPage('nl',...)
has been called for that page in config.php or a cookbook recipe.
But beware: XLPage() uses XLSDV() internally for its translation pairs, too, and only the first definition is accepted! Thus, if the Dutch XLPage already contains a translation for your string like
'my English expression' => 'bla bla',
and you want to override that, you need to use your XLSDV('nl',...) before calling the correspondent XLPage('nl',...). Otherwise, by using XLSDV() after XLPage() - e.g. within a recipe that is included later in config.php - your translation will only work as long nobody defines 'my English expression' in that XLPage.
Essa é possivelmente a tradução do original em : PmWiki.Internationalizations - Retroenlaces
Essa tradução se encontra em : PmWikiPtBr.Internationalizations - Retroenlaces
Últimas modificações da tradução feitas em : 06 de January de 2012 a las 17h16
Últimas modificações feitas no original em : 19 de December de 2022 a las 08h35