aboutsummaryrefslogtreecommitdiffstats
path: root/languages/LanguageLatin1.php
diff options
context:
space:
mode:
Diffstat (limited to 'languages/LanguageLatin1.php')
-rw-r--r--languages/LanguageLatin1.php252
1 files changed, 252 insertions, 0 deletions
diff --git a/languages/LanguageLatin1.php b/languages/LanguageLatin1.php
new file mode 100644
index 000000000000..a03de9111aec
--- /dev/null
+++ b/languages/LanguageLatin1.php
@@ -0,0 +1,252 @@
+<?php
+# Copyright (C) 2004 Brion Vibber <brion@pobox.com>
+# http://www.mediawiki.org/
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# http://www.gnu.org/copyleft/gpl.html
+
+#
+# Latin-1 compatibility layer hack.
+#
+# Enable by setting "$wgUseLatin1 = true;" in LocalSettings.php
+# (Preferably at install time so you get the messages right!)
+#
+# This will replace anything that can't be described in Latin-1 with
+# an ugly question mark (?) so don't use this mode on languages that
+# aren't suited to it!
+#
+
+$wgInputEncoding = "iso-8859-1";
+$wgOutputEncoding = "iso-8859-1";
+
+function utf8_decode_array( $arr ) {
+ if( !is_array( $arr ) ) {
+ wfDebugDieBacktrace( "utf8_decode_array given non-array" );
+ }
+ return array_map( "utf8_decode", $arr );
+}
+
+#
+# This is a proxy object; the Language instance handed to us speaks
+# UTF-8, while the wiki outside speaks Latin-1. We translate as
+# necessary so neither knows the other is in the wrong charset.
+#
+class LanguageLatin1 {
+ var $lang;
+
+ function LanguageLatin1( &$language ) {
+ $this->lang =& $language;
+ }
+
+ function getDefaultUserOptions() {
+ return $this->lang->getDefaultUserOptions();
+ }
+
+ function getBookstoreList() {
+ return utf8_decode_array( $this->lang->getBookstoreList() );
+ }
+
+ function getNamespaces() {
+ return utf8_decode_array( $this->lang->getNamespaces() );
+ }
+
+ function getNsText( $index ) {
+ return utf8_decode( $this->lang->getNsText( $index ) );
+ }
+
+ function getNsIndex( $text ) {
+ return $this->lang->getNsIndex( utf8_encode( $text ) );
+ }
+
+ function specialPage( $name ) {
+ # At least one function calls this with Special:Undelete/Article_title, so it needs encoding
+ return utf8_decode( $this->lang->specialPage( utf8_encode( $name ) ) );
+ }
+
+ function getQuickbarSettings() {
+ return utf8_decode_array( $this->lang->getQuickbarSettings() );
+ }
+
+ function getSkinNames() {
+ return utf8_decode_array( $this->lang->getSkinNames() );
+ }
+
+ function getMathNames() {
+ return utf8_decode_array( $this->lang->getMathNames() );
+ }
+
+ function getDateFormats() {
+ return utf8_decode_array( $this->lang->getDateFormats() );
+ }
+
+ function getUserToggles() {
+ return utf8_decode_array( $this->lang->getUserToggles() );
+ }
+
+ function getUserToggle( $tog ) {
+ return utf8_decode( $this->lang->getUserToggle( $tog ) );
+ }
+
+ function getLanguageNames() {
+ return utf8_decode_array( $this->lang->getLanguageNames() );
+ }
+
+ function getLanguageName( $code ) {
+ return utf8_decode( $this->lang->getLanguageName( $code ) );
+ }
+
+ function getMonthName( $key ) {
+ return utf8_decode( $this->lang->getMonthName( $key ) );
+ }
+
+ function getMonthNameGen( $key ) {
+ return utf8_decode( $this->lang->getMonthNameGen( $key ) );
+ }
+
+ function getMonthAbbreviation( $key ) {
+ return utf8_decode( $this->lang->getMonthAbbreviation( $key ) );
+ }
+
+ function getWeekdayName( $key ) {
+ return utf8_decode( $this->lang->getWeekdayName( $key ) );
+ }
+
+ function userAdjust( $ts ) {
+ return $this->lang->userAdjust( $ts );
+ }
+
+ function date( $ts, $adj = false ) {
+ return utf8_decode( $this->lang->date( $ts, $adj ) );
+ }
+
+ function time( $ts, $adj = false, $seconds = false ) {
+ return utf8_decode( $this->lang->time( $ts, $adj ) );
+ }
+
+ function timeanddate( $ts, $adj = false ) {
+ return utf8_decode( $this->lang->timeanddate( $ts, $adj ) );
+ }
+
+ function rfc1123( $ts ) {
+ # ASCII by definition
+ return $this->lang->rfc1123( $ts );
+ }
+
+ function getValidSpecialPages() {
+ return utf8_decode_array( $this->lang->getValidSpecialPages() );
+ }
+
+ function getSysopSpecialPages() {
+ return utf8_decode_array( $this->lang->getSysopSpecialPages() );
+ }
+
+ function getDeveloperSpecialPages() {
+ return utf8_decode_array( $this->lang->getDeveloperSpecialPages() );
+ }
+
+ function getMessage( $key ) {
+ return utf8_decode( $this->lang->getMessage( $key ) );
+ }
+
+ function getAllMessages() {
+ return utf8_decode_array( $this->lang->getAllMessages() );
+ }
+
+ function iconv( $in, $out, $string ) {
+ # Use 8-bit version
+ return Language::iconv( $in, $out, $string );
+ }
+
+ function ucfirst( $string ) {
+ # Use 8-bit version
+ return Language::ucfirst( $string );
+ }
+
+ function lcfirst( $s ) {
+ # Use 8-bit version
+ return Language::lcfirst( $s );
+ }
+
+ function checkTitleEncoding( $s ) {
+ # Use 8-bit version
+ return Language::checkTitleEncoding( $s );
+ }
+
+ function stripForSearch( $in ) {
+ # Use 8-bit version
+ return Language::stripForSearch( $in );
+ }
+
+ function firstChar( $s ) {
+ # Use 8-bit version
+ return Language::firstChar( $s );
+ }
+
+ function setAltEncoding() {
+ # Not sure if this should be handled
+ $this->lang->setAltEncoding();
+ }
+
+ function recodeForEdit( $s ) {
+ # Use 8-bit version
+ return Language::recodeForEdit( $s );
+ }
+
+ function recodeInput( $s ) {
+ # Use 8-bit version
+ return Language::recodeInput( $s );
+ }
+
+ function isRTL() {
+ # boolean
+ return $this->lang->isRTL();
+ }
+
+ function linkPrefixExtension() {
+ # boolean
+ return $this->lang->linkPrefixExtension();
+ }
+
+ function &getMagicWords() {
+ return utf8_decode_array( $this->lang->getMagicWords() );
+ }
+
+ function getMagic( &$mw ) {
+ # Not sure how to handle this.
+ # A moot point perhaps as few language files currently
+ # assign localised magic words, and none of the ones we
+ # need backwards compatibility for.
+ return $this->lang->getMagic( $mw );
+ }
+
+ function emphasize( $text ) {
+ # It's unlikely that the emphasis markup itself will
+ # include any non-ASCII chars.
+ return $this->lang->emphasize( $text );
+ }
+
+ function formatNum( $number ) {
+ # Probably not necessary...
+ return utf8_decode( $this->lang->formatNum( $number ) );
+ }
+
+ function listToText( $l ) {
+ # It's unlikely that the list markup itself will
+ # include any non-ASCII chars. (?)
+ return $this->lang->listToText( $l );
+ }
+}
+
+?>