diff options
Diffstat (limited to 'languages/LanguageJa.php')
-rw-r--r-- | languages/LanguageJa.php | 172 |
1 files changed, 172 insertions, 0 deletions
diff --git a/languages/LanguageJa.php b/languages/LanguageJa.php new file mode 100644 index 00000000..1379c683 --- /dev/null +++ b/languages/LanguageJa.php @@ -0,0 +1,172 @@ +<?php +/** + * Japan (日本語) + * + * @package MediaWiki + * @subpackage Language + */ + +require_once( "LanguageUtf8.php" ); + +if (!$wgCachedMessageArrays) { + require_once('MessagesJa.php'); +} + +class LanguageJa extends LanguageUtf8 { + private $mMessagesJa, $mNamespaceNamesJa = null; + + private $mQuickbarSettingsJa = array( + "なし", "左端", "右端", "ウィンドウの左上に固定" + ); + + private $mSkinNamesJa = array( + 'standard' => "標準", + 'nostalgia' => "ノスタルジア", + 'cologneblue' => "ケルンブルー", + ); + + private $mDateFormatsJa = array( + MW_DATE_DEFAULT => '2001年1月15日 16:12 (デフォルト)', + MW_DATE_ISO => '2001-01-15 16:12:34' + ); + + private $mWeekdayAbbreviationsJa = array( + "日", "月", "火", "水", "木", "金", "土" + ); + + function __construct() { + parent::__construct(); + + global $wgAllMessagesJa; + $this->mMessagesJa =& $wgAllMessagesJa; + + global $wgMetaNamespace; + $this->mNamespaceNamesJa = array( + NS_MEDIA => "Media", /* Media */ + NS_SPECIAL => "特別", /* Special */ + NS_MAIN => "", + NS_TALK => "ノート", /* Talk */ + NS_USER => "利用者", /* User */ + NS_USER_TALK => "利用者‐会話", /* User_talk */ + NS_PROJECT => $wgMetaNamespace, /* Wikipedia */ + NS_PROJECT_TALK => "{$wgMetaNamespace}‐ノート", /* Wikipedia_talk */ + NS_IMAGE => "画像", /* Image */ + NS_IMAGE_TALK => "画像‐ノート", /* Image_talk */ + NS_MEDIAWIKI => "MediaWiki", /* MediaWiki */ + NS_MEDIAWIKI_TALK => "MediaWiki‐ノート", /* MediaWiki_talk */ + NS_TEMPLATE => "Template", /* Template */ + NS_TEMPLATE_TALK => "Template‐ノート", /* Template_talk */ + NS_HELP => "Help", /* Help */ + NS_HELP_TALK => "Help‐ノート", /* Help_talk */ + NS_CATEGORY => "Category", /* Category */ + NS_CATEGORY_TALK => "Category‐ノート" /* Category_talk */ + + ); + } + + function getNamespaces() { + return $this->mNamespaceNamesJa + parent::getNamespaces(); + } + + function getQuickbarSettings() { + return $this->mQuickbarSettingsJa; + } + + function getSkinNames() { + return $this->mSkinNamesJa + parent::getSkinNames(); + } + + function getDateFormats() { + return $this->mDateFormatsJa; + } + + function getMessage( $key ) { + if( isset( $this->mMessagesJa[$key] ) ) { + return $this->mMessagesJa[$key]; + } else { + return parent::getMessage( $key ); + } + } + + function getAllMessages() { + return $this->mMessagesJa; + } + + function date( $ts, $adj = false, $format = true, $tc = false ) { + + if ( $adj ) { $ts = $this->userAdjust( $ts, $tc ); } + $datePreference = $this->dateFormat( $format ); + + if( $datePreference == MW_DATE_ISO ) { + $d = substr($ts, 0, 4). '-' . substr($ts, 4, 2). '-' . + substr($ts, 6, 2); + return $d; + } + + $year = (int)substr( $ts, 0, 4 ); + $month = (int)substr( $ts, 4, 2 ); + $mday = (int)substr( $ts, 6, 2 ); + $hour = (int)substr( $ts, 8, 2 ); + $minute = (int)substr( $ts, 10, 2 ); + $second = (int)substr( $ts, 12, 2 ); + + $time = mktime( $hour, $minute, $second, $month, $mday, $year ); + $date = getdate( $time ); + + $d = $year . "年" . + $this->getMonthAbbreviation( $month ) . + $mday . "日 (" . + $this->mWeekdayAbbreviationsJa[ $date['wday'] ]. ")"; + return $d; + } + + function time( $ts, $adj = false, $format = true, $tc = false ) { + if ( $adj ) { $ts = $this->userAdjust( $ts, $tc ); } + $datePreference = $this->dateFormat( $format ); + + $t = substr( $ts, 8, 2 ) . ":" . substr( $ts, 10, 2 ); + if ( $datePreference == MW_DATE_ISO ) { + $t .= ':' . substr( $ts, 12, 2 ); + } + + return $t; + } + + function timeanddate( $ts, $adj = false, $format = true, $tc = false ) { + return $this->date( $ts, $adj, $format, $tc ) . " " . $this->time( $ts, $adj, $format, $tc ); + } + + function stripForSearch( $string ) { + # MySQL fulltext index doesn't grok utf-8, so we + # need to fold cases and convert to hex + $s = $string; + + # Strip known punctuation ? + #$s = preg_replace( '/\xe3\x80[\x80-\xbf]/', '', $s ); # U3000-303f + + # Space strings of like hiragana/katakana/kanji + $hiragana = '(?:\xe3(?:\x81[\x80-\xbf]|\x82[\x80-\x9f]))'; # U3040-309f + $katakana = '(?:\xe3(?:\x82[\xa0-\xbf]|\x83[\x80-\xbf]))'; # U30a0-30ff + $kanji = '(?:\xe3[\x88-\xbf][\x80-\xbf]' + . '|[\xe4-\xe8][\x80-\xbf]{2}' + . '|\xe9[\x80-\xa5][\x80-\xbf]' + . '|\xe9\xa6[\x80-\x99])'; + # U3200-9999 = \xe3\x88\x80-\xe9\xa6\x99 + $s = preg_replace( "/({$hiragana}+|{$katakana}+|{$kanji}+)/", ' $1 ', $s ); + + # Double-width roman characters: ff00-ff5f ~= 0020-007f + $s = preg_replace( '/\xef\xbc([\x80-\xbf])/e', 'chr((ord("$1") & 0x3f) + 0x20)', $s ); + $s = preg_replace( '/\xef\xbd([\x80-\x99])/e', 'chr((ord("$1") & 0x3f) + 0x60)', $s ); + + # Do general case folding and UTF-8 armoring + return LanguageUtf8::stripForSearch( $s ); + } + + # Italic is not appropriate for Japanese script + # Unfortunately most browsers do not recognise this, and render <em> as italic + function emphasize( $text ) { + return $text; + } +} + +?> |