Wikipédia:Esplanada/propostas/Conversor de idiomas para as variantes do português (30mai2010)/PHP
MediaWiki:
editar- pt
- MediaWiki:Conversion-ns-2: Multimédia
- MediaWiki:Conversion-ns6: Ficheiro
- MediaWiki:Conversion-ns7: Ficheiro Discussão
- MediaWiki:Conversion-ns2: Utilizador
- MediaWiki:Conversion-ns3: Utilizador Discussão
- pt-br
- MediaWiki:Conversion-ns-2/pt-br: Mídia
- MediaWiki:Conversion-ns6/pt-br: Arquivo
- MediaWiki:Conversion-ns7/pt-br: Arquivo Discussão
- MediaWiki:Conversion-ns2/pt-br: Usuário
- MediaWiki:Conversion-ns3/pt-br: Usuário Discussão
LanguagePt.php
editarPtConverter class for language conversion in portuguese:
<?php
require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' );
/**
* @ingroup Language
*/
class PtConverter extends LanguageConverter {
function __construct( $langobj, $maincode, $variants = array(),
$variantfallbacks = array(), $flags = array(),
$manualLevel = array()
)
{
parent::__construct( $langobj, $maincode, $variants, $variantfallbacks,
$flags, $manualLevel
);
$names = array(
'pt' => 'Português (sem conversão de variantes)', #Original, no conversion
'pt-ao' => 'Português de Angola',
'pt-br' => 'Português do Brasil',
'pt-cv' => 'Português de Cabo Verde',
'pt-gw' => 'Português da Guiné-Bissau',
'pt-gq' => 'Português da Guiné Equatorial',
'pt-mo' => 'Português de Macau',
'pt-mz' => 'Português de Moçambique',
'pt-pt' => 'Português de Portugal',
'pt-st' => 'Português de São Tomé e Príncipe',
'pt-tl' => 'Português de Timor-Leste',
# 'pt-??' => 'Português de Goa, Damão e Diu', # Territory in Índia
);
$this->mVariantNames = array_merge( $this->mVariantNames, $names );
}
function loadDefaultTables() {
/* Is this line necessary for Portuguese? What should be in each default table $pt2**?
require( dirname( __FILE__ ) . "/../../includes/PtConversion.php" );
*/
# Is this syntax ok? Should this loop be used here?
$variants = $this->mVariants;
foreach ( $variants as $v ) {
$this->mTables[$v] = new ReplacementArray;
}
}
# Is this necessary for Portuguese?
function postLoadTables() {
# Which variants should use pt-pt conversion table as default and
# eventually override some rules
$vars = array(
'pt-ao', 'pt-cv', 'pt-gw', 'pt-gq', 'pt-mo', 'pt-mz', 'pt-st',
'pt-tl'
);
foreach ( $vars as $v ){
$this->mTables[$v]->setArray(
array_merge(
$this->mTables['pt-pt']->getArray(),
$this->mTables[$v]->getArray()
)
);
}
}
/* there shouldn't be any latin text in Chinese conversion, so no need
to mark anything.
$noParse is there for compatibility with LanguageConvert::markNoConversion
*/
function markNoConversion( $text, $noParse = false ) {
return $text;
}
function convertCategoryKey( $key ) {
return $this->autoConvert( $key, 'pt' );
}
}
/**
* class that handles Portuguese variants
*
* @ingroup Language
*/
class LanguagePt extends Language {
function __construct() {
parent::__construct();
$variants = array('pt','pt-ao','pt-br','pt-cv','pt-gw','pt-gq','pt-mo','pt-mz','pt-pt','pt-st','pt-tl');
/* Should we update loadDefaultTables() above when changing the fallbacks below ?
*/
$variantfallbacks = array(
'pt' => array(
'pt-pt', 'pt-ao', 'pt-br', 'pt-cv', 'pt-gw',
'pt-gq', 'pt-mo', 'pt-mz', 'pt-st', 'pt-tl'
),
'pt-ao' => array( 'pt-pt' ),
'pt-br' => array( 'pt-pt' ),
'pt-cv' => array( 'pt-pt' ),
'pt-gw' => array( 'pt-pt' ),
'pt-gq' => array( 'pt-pt' ),
'pt-mo' => array( 'pt-pt' ),
'pt-mz' => array( 'pt-pt' ),
'pt-pt' => array( 'pt-br' ),
'pt-st' => array( 'pt-pt' ),
'pt-tl' => array( 'pt-pt' ),
);
/* Should we use translated names for the flags, as in "Sr" language?
$flags = array(
'S' => 'S', 'писмо' => 'S', 'pismo' => 'S',
'W' => 'W', 'реч' => 'W', 'reč' => 'W', 'ријеч' => 'W', 'riječ' => 'W'
);
*/
$flags = array();
$ml = array(
'pt' => 'disable', /*#Should we use "unidirectional" or "bidirectional" manual level? What is the difference?
'pt-ao' => 'unidirectional', #Default is "bidirectional" for each variant
'pt-br' => 'unidirectional',
'pt-cv' => 'unidirectional',
'pt-gw' => 'unidirectional',
'pt-gq' => 'unidirectional',
'pt-mo' => 'unidirectional',
'pt-mz' => 'unidirectional',
'pt-pt' => 'unidirectional',
'pt-st' => 'unidirectional',
'pt-tl' => 'unidirectional',*/
);
$this->mConverter = new PtConverter(
$this, 'pt', $variants,
$variantfallbacks, $flags, $ml
);
global $wgHooks;
$wgHooks['ArticleSaveComplete'][] = $this->mConverter;
}
}
Create and/or edit the following MediaWiki messages files:
MediaWiki messages to add:
/*
Short names for language variants used for language conversion links.
To disable showing a particular link, set it to 'disable', e.g.
'variantname-zh-sg' => 'disable',
Variants for portuguese language
*/
'variantname-pt' => 'Sem conversão de variantes', # Original wikicode, no conversion
'variantname-pt-ao' => 'Angolano', # Português de Angola
'variantname-pt-br' => 'Brasileiro', # Português do Brasil
'variantname-pt-cv' => 'Cabo-verdiano', # Cabo-verdense, Português de Cabo Verde
'variantname-pt-gw' => 'Guinéu', # Guineano or Guineense, Português da Guiné-Bissau
'variantname-pt-gq' => 'Guinéu-equatoriano', # Guineense, Português da Guiné Equatorial
'variantname-pt-mo' => 'Macaense', # De Macau? Português de Macau
'variantname-pt-mz' => 'Moçambicano', # Português de Moçambique
'variantname-pt-pt' => 'Português', # Português de Portugal
'variantname-pt-st' => 'São-tomense', # Português de São Tomé e Príncipe
'variantname-pt-tl' => 'Timorense', # Maubere, Português de Timor-Leste
MessagesPt_*.php
editarCreate one file for each variant:
- MessagesPt_ao.php
MessagesPt_br.php(already exists!)- MessagesPt_cv.php
- MessagesPt_gw.php
- MessagesPt_gq.php
- MessagesPt_mo.php
- MessagesPt_mz.php
- MessagesPt_pt.php (Should the current MessagesPt.php be here, and the main file MessagesPt.php use messages as neutral as possible, to be useful in all variants? Or what?)
- MessagesPt_st.php
- MessagesPt_tl.php
/*
<?php
/** Portuguese (<Country ???>)
*
* See MessagesQqq.php for message documentation incl. usage of parameters
* To improve a translation please visit http://translatewiki.net
*
* @ingroup Language
* @file
*/
# Inherit everything for now
$fallback = 'pt';
MediaWiki language names to add:
'pt-ao' => 'Português de Angola', # Portuguese (Angola)
'pt-br' => 'Português do Brasil', # Portuguese (Brazil)
'pt-cv' => 'Português de Cabo Verde', # Portuguese (Cape Verde)
'pt-gw' => 'Português da Guiné-Bissau', # Portuguese (Guinea-Bissau)
'pt-gq' => 'Português da Guiné Equatorial', # Portuguese (Equatorial Guinea)
'pt-mo' => 'Português de Macau', # Portuguese (Macau)
'pt-mz' => 'Português de Moçambique', # Portuguese (Mozambique)
'pt-pt' => 'Português de Portugal', # Portuguese (Portugal)
'pt-st' => 'Português de São Tomé e Príncipe', # Portuguese (São Tomé and Príncipe)
'pt-tl' => 'Português de Timor-Leste', # Portuguese (East Timor)