| 完全日本語化プロジェクト | |
|---|---|
| 対象プログラム | Moodle ver. 1.5 dev (rev. 9/1/2004) |
| 内容 | graphlib.php / moodlelib.php / Worksheet.php / Format.php の改変 |
| 説明 | 環境1:Windows 2K + Apache 1.3.31 + PHP 4.3.8 + Moodle 1.5 dev + GD2 (検証者 Takahito Kashiwagi) 環境2:WinXP Home + Apache 2 + PHP 4.3.8 cgi版 + Moodle1.5 dev + GD2 (検証者 KAGO氏) 上記環境において動作検証を行っています。
<注意と設置方法>
<改定内容> |
| 日付 | 2004/9/6 |
| バージョン | 1.3.1 |
| 作者 | Takahito Kashiwagi |
| 履歴 | 2004/9/1 初版作成 |
moodle\lib\setup.php の 86行〜 101行付近
※以下の変更を、ver. 1.2.1にて行った方は、青い部分を削除してください。
$CFG[$config->name] = $config->value;
}
$CFG = (object)$CFG;
unset($configs);
unset($config);
}
/// Load up Language Library
$currlang = current_language();
if (file_exists("$CFG->dirroot/lang/$currlang/lib/langlib.php")) {
require_once("$CFG->dirroot/lang/$currlang/lib/langlib.php"); // Language Library
}
/// Set error reporting back to normal
if (empty($CFG->debug)) {
$CFG->debug = 7;
}
error_reporting($CFG->debug);
/// File permissions on created directories in the $CFG->dataroot
moodle\lib\setup.php の 249行〜 275行付近
※以下が新たな挿入位置です。
if (!empty($CFG->opentogoogle)) {
if (empty($_SESSION['USER'])) {
if (!empty($_SERVER['HTTP_USER_AGENT'])) {
if (strpos($_SERVER['HTTP_USER_AGENT'], 'Googlebot') !== false ) {
$USER = guest_user();
}
if (strpos($_SERVER['HTTP_USER_AGENT'], 'google.com') !== false ) {
$USER = guest_user();
}
}
if (empty($_SESSION['USER']) and !empty($_SERVER['HTTP_REFERER'])) {
if (strpos($_SERVER['HTTP_REFERER'], 'google') !== false ) {
$USER = guest_user();
}
}
}
}
/// Load up Language Library
$currlang = current_language();
if (file_exists("$CFG->dirroot/lang/$currlang/lib/langlib.php")) {
require_once("$CFG->dirroot/lang/$currlang/lib/langlib.php"); // Language Library
}
?>
moodle\lib\graphlib.php の 197行〜 212行付近
※以下の変更を以前に行った方は、青い部分を削除してください。
$this->calculated['boundary_box']['right'] -= $this->parameter['outer_padding'];
$this->calculated['boundary_box']['bottom'] -= $this->parameter['outer_padding'];
$this->init_x_axis();
$this->init_y_axis();
$this->init_legend();
$this->init_labels();
if (function_exists('use_lang_lib') && use_lang_lib()) {
graph_encoding($this);
}
// take into account tick lengths
$this->calculated['bottom_inner_padding'] = $this->parameter['inner_padding'];
if (($this->parameter['x_ticks_colour'] != 'none') && ($this->parameter['tick_length'] < 0))
$this->calculated['bottom_inner_padding'] -= $this->parameter['tick_length'];
$this->calculated['boundary_box']['bottom'] -= $this->calculated['bottom_inner_padding'];
$this->calculated['left_inner_padding'] = $this->parameter['inner_padding'];
if ($this->parameter['y_axis_text_left']) {
moodle\lib\moodlelib.php の 1549行〜 1564行付近
$mail->AddStringAttachment("Error in attachment. User attempted to attach a filename with a unsafe name.", "error.txt", "8bit", "text/plain");
} else {
include_once("$CFG->dirroot/files/mimetypes.php");
$mimetype = mimeinfo("type", $attachname);
$mail->AddAttachment("$CFG->dataroot/$attachment", "$attachname", "base64", "$mimetype");
}
}
if (function_exists('use_lang_lib') && use_lang_lib()) {
email_encoding($mail);
}
if ($mail->Send()) {
return true;
} else {
mtrace("ERROR: $mail->ErrorInfo");
add_to_log(SITEID, "library", "mailer", $_SERVER["REQUEST_URI"], "ERROR: $mail->ErrorInfo");
return false;
}
}
moodle\lib\moodlelib.php の 2651行〜 2666行付近
} else if (!empty($SESSION->lang) and ($SESSION->lang != $CFG->lang) ) {
$CFG->locale = get_string('locale');
} else if (!empty($USER->lang) and ($USER->lang != $CFG->lang) ) {
$CFG->locale = get_string('locale');
} else if (empty($CFG->locale)) {
$CFG->locale = get_string('locale');
set_config('locale', $CFG->locale); // cache it to save lookups in future
}
$currlang = current_language();
if ($currlang != 'en') {
setlocale (LC_ALL, $CFG->locale);
}
setlocale (LC_TIME, $CFG->locale);
setlocale (LC_COLLATE, $CFG->locale);
if ($CFG->locale != 'tr_TR') { // To workaround a well-known PHP bug with Turkish
setlocale (LC_CTYPE, $CFG->locale);
}
}
moodle\lib\excel\Worksheet.php の 1035行〜 1050行付近
* @access public
* @param integer $row Zero indexed row
* @param integer $col Zero indexed column
* @param string $str The string to write
* @param mixed $format The XF format for the cell
*/
function write_string($row, $col, $str, $format = 0)
{
if (function_exists('use_lang_lib') && use_lang_lib() && define_usr_agent()) {
$str = ex_convert_encoding($str, 'shift_jis', 'auto');
}
$strlen = strlen($str);
$record = 0x0204; // Record identifier
$length = 0x0008 + $strlen; // Bytes to follow
$xf = $this->_XF($format); // The cell format
$str_error = 0;
// Check that row and col are valid and store max and min values
moodle\mod\lesson\format.php の 146行〜 161行付近
function readdata($filename) {
/// Returns complete file with an array, one item per line
if (is_readable($filename)) {
$filearray =
file($filename);
if (function_exists('use_lang_lib') && use_lang_lib()) {
$lang_code = rtn_lang_code();
foreach ($filearray as $i => $temp_array) {
$filearray[$i] = ex_convert_encoding($temp_array, $lang_code, "auto");
}
}
/// Check for
Macintosh OS line returns (ie file on one line), and fix
if (ereg("\r",
$filearray[0]) AND !ereg("\n", $filearray[0])) {
return explode("\r", $filearray[0]);
} else {
return $filearray;
}
}
return false;
moodle\mod\quiz\format.php の 78行〜 93行付近
function readdata($filename) {
/// Returns complete file with an array, one item per line
if (is_readable($filename)) {
$filearray =
file($filename);
if (function_exists('use_lang_lib') && use_lang_lib()) {
$lang_code = rtn_lang_code();
foreach ($filearray as $i => $temp_array) {
$filearray[$i] = ex_convert_encoding($temp_array, $lang_code, "auto");
}
}
/// Check for
Macintosh OS line returns (ie file on one line), and fix
if (ereg("\r",
$filearray[0]) AND !ereg("\n", $filearray[0])) {
return explode("\r", $filearray[0]);
} else {
return $filearray;
}
}
return false;
moodle\mod\quiz\questiontypes\numerical\questiontype.php の 147行〜 162行付近
function grade_response($question, $nameprefix, $addedanswercondition='') {
$result->answers = array();
$units = get_records('quiz_numerical_units',
'question', $question->id);
if (isset($question->response[$nameprefix])) {
$response = trim(stripslashes($question->response[$nameprefix]));
if (function_exists('use_lang_lib') && use_lang_lib()) {
$response = normalize_string($response);
}
// Arrays with 'wild cards':
$search = array(' ',',');
$replace = array('','.');
$responsenum = str_replace($search, $replace, $response);
if (empty($units)) {
if ('' !== $responsenum && is_numeric($responsenum)) {
$responsenum = (float)$responsenum;
} else {
moodle\mod\quiz\questiontypes\shortanswer\questiontype.php の 159行〜 174行付近
$answer->answer = trim($answer->answer); // Just in case
if (empty($result->answers) || $answer->fraction
> $result->answers[$nameprefix]->fraction) {
if (!$answer->usecase) { // Don't compare case
$response0 = strtolower($response0);
$answer0 = strtolower($answer->answer);
if (function_exists('use_lang_lib') && use_lang_lib()) {
$response0 = normalize_string($response0);
$answer0 = normalize_string($answer0);
}
} else {
$answer0 = $answer->answer;
}
if (strpos(' '.$answer0, '*')) {
$answer0 = str_replace('\*','@@@@@@',$answer0);
$answer0 = str_replace('*','.*',$answer0);
$answer0 = str_replace($search, $replace, $answer0);
moodle\mod\quiz\report\fullstat\report.php の 309行〜 324行付近
}
/// If spreadsheet is wanted, produce one
if ($download == "xls") {
require_once("$CFG->libdir/excel/Worksheet.php");
require_once("$CFG->libdir/excel/Workbook.php");
header("Content-type: application/vnd.ms-excel");
$downloadfilename = clean_filename("$course->shortname $quiz->name");
header("Content-Disposition: attachment; filename=$downloadfilename.xls");
if (function_exists('use_lang_lib') && use_lang_lib()) {
$set_usr_agent = define_usr_agent();
if($set_usr_agent) {
$quiz->name = ex_convert_encoding($quiz->name, 'sjis', 'auto');
$course->shortname = ex_convert_encoding($course->shortname, 'sjis', 'auto');
}
header("Content-Disposition: attachment; filename=$course->shortname ".$quiz->name.".xls");
}
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
header("Pragma: public");
$workbook = new Workbook("-");
// Creating the first worksheet
$myxls = &$workbook->add_worksheet('Responses for each student');
/// format types
moodle\mod\quiz\report\fullstat\report.php の 566行〜 581行付近
exit;
}
////////---------------------------
/// If a text file is wanted, produce one
if ($download == "txt") {
/// Print header to force download
if (function_exists('use_lang_lib') && use_lang_lib()) {
full_text_out($course, $quiz, $data_tally, $qs_in_order, $question_ids, $qcount, $quests, $match_qs, $analysis, $max_choices, $table_colcount);
}
header("Content-Type: application/download\n");
$downloadfilename = clean_filename("$course->shortname $quiz->name");
header("Content-Disposition: attachment; filename=\"$downloadfilename.txt\"");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
header("Pragma: public");
/// Print names of all the fields
moodle\mod\quiz\report\simplestat\report.php の 81行〜 96行付近
$answer->answer = trim($answer->answer); // Just in case
if ($answer->fraction >= 1.0) {
$correct[] = $answer->answer;
}
if (!$answer->usecase) { // Don't compare case
$answer->answer = strtolower($answer->answer);
$question->answer = strtolower($question->answer);
if (function_exists('use_lang_lib') && use_lang_lib()) {
$answer->answer = normalize_string($answer->answer);
$question->answer = normalize_string($question->answer);
}
}
$potentialgrade = (float)$answer->fraction * $question->grade;
if ($potentialgrade >= $grade and (strpos(' '.$answer->answer, '*'))) {
$answer->answer = str_replace('\*','@@@@@@',$answer->answer);
$answer->answer = str_replace('*','.*',$answer->answer);
$answer->answer = str_replace('@@@@@@', '\*',$answer->answer);
moodle\mod\quiz\report\simplestat\report.php の 106行〜 121行付近
}
}
break;
case NUMERICAL:
if ($question->answer) {
$question->answer = trim(stripslashes($question->answer[0]));
if (function_exists('use_lang_lib') && use_lang_lib()) {
$question->answer = normalize_string($question->answer);
}
} else {
$question->answer = "";
}
$response[0] = $question->answer;
$bestshortanswer = 0;
foreach ($answers as $answer) { // There might be multiple right answers
if ($answer->fraction > $bestshortanswer) {
$correct[$answer->id] = $answer->answer;
moodle\mod\quiz\report\simplestat\report.php の 529行〜 544行付近
}
/// If spreadsheet is wanted, produce one
if ($download == "xls") {
require_once("$CFG->libdir/excel/Worksheet.php");
require_once("$CFG->libdir/excel/Workbook.php");
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=$course->shortname ".$quiz->name.".xls" );
if (function_exists('use_lang_lib') && use_lang_lib()) {
$set_usr_agent = define_usr_agent();
if($set_usr_agent) {
$quiz->name = ex_convert_encoding($quiz->name, 'sjis', 'auto');
$course->shortname = ex_convert_encoding($course->shortname, 'sjis', 'auto');
}
header("Content-Disposition: attachment; filename=$course->shortname ".$quiz->name.".xls");
}
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
header("Pragma: public");
$workbook = new Workbook("-");
// Creating the first worksheet
$myxls = &$workbook->add_worksheet('Simple Quiz Statistics');
moodle\mod\quiz\report\simplestat\report.php の 586行〜 601行付近
exit;
}
/// If a text file is wanted, produce one
if ($download == "txt") {
/// Print header to force download
if (function_exists('use_lang_lib') && use_lang_lib()) {
simple_text_out($count, $course, $quiz, $data, $average);
}
header("Content-Type: application/download\n");
header("Content-Disposition: attachment; filename=$course->shortname ".$quiz->name.".txt");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
header("Pragma: public");
/// Print names of all the fields
moodle\lang\ja\lib\langlib.php
※これは、「langlib***.lzh」に含まれているlanglib.phpに関する説明です。
<?php
/* Language Library for Japanese
by Takahito Kashiwagi (webmaster@supertak.com)
jcode.php / jcode_wrapper.php
by TOMO (http://www.spencernetwork.org/)
SAZANAMI FONT
by eFont (http://sourceforge.jp/projects/efont/) */
※langlib.phpの再配布、改造は自由に行っていただいてかまいません。 ※ただし、langlibに添付しているさざなみフォント及び、jcode.phpには、 ※それぞれに著作権がありますのでそれぞれの利用規約に従ってください。
// Current Language Code // define current language type such as 'iso-2022-jp', 'sjis', 'euc-jp', or 'utf-8'.
$lang_code = 'euc-jp'; ※設置環境に合わせて変更してください。 ※基本的にEUC-JP環境であることを前提に改定を行っており、 ※他の言語使用環境でのテストは行っていません。
// Switch to use Language Library // 1: ON / 0: OFF
$uselibrary = '1'; ※このライブラリを使用するかどうかのスイッチです。 ※ライブラリの動作を止めたいときにご使用ください。 ※1でON、0でOFFになります。
// Switch to compare Zenkaku and Hankaku // 1: ON / 0: OFF
$zentohans = '1'; ※小テストの判定において、大文字小文字を区別しない設定を ※行った際に、同時に半角全角の判定もなくすかどうかの ※設定を上記でおこないます。 ※1でON、0でOFFになります。
※ここより、以下はFUNCTIONになります。 ※改変時以外変更する必要はありません。
// Functions
function use_lang_lib()
{
global $uselibrary;
return $uselibrary;
}
function rtn_lang_code()
{
global $lang_code;
$lang_code = strtolower($lang_code);
return $lang_code;
}
function normalize_string($string1)
{
global $zentohans;
if($zentohans) {
require_once dirname(__FILE__).'/jcode.php';
$lang_code1 = rtn_lang_code();
if (extension_loaded('mbstring')) {
$string1 = mb_convert_kana($string1, "KVas", $lang_code1);
} else {
$lang_code2 = _check_encoding($lang_code1);
$string2 = ' ';
$string3 = ' ';
if($lang_code2 != 1){
$string2 = JcodeConvert($string2, 1, $lang_code2);
$string3 = JcodeConvert($string3, 1, $lang_code2);
}
$string1 = HANtoZEN($string1, $lang_code2);
$string1 = ZENtoHAN($string1, $lang_code2, 0, 1);
$string1 = jstr_replace($string2, $string3, $string1);
}
}
return $string1;
}
function ex_convert_encoding($string1, $string2, $string3)
{
if ($string3 == '') {
$string3 = rtn_lang_code();
}
if (extension_loaded('mbstring')) {
$lang_conv = 'mb_convert_encoding';
} else {
$lang_conv = 'lang_convert_encoding';
}
$string1 = $lang_conv($string1, $string2, $string3);
return $string1;
}
function mm_convert_encoding($string1, $string2)
{
if ($string2 == '') {
$string2 = rtn_lang_code();
}
$string1 = ex_convert_encoding($string1, 'iso-2022-jp', $string2);
$string1 = "=?ISO-2022-JP?B?".base64_encode($string1)."?=";
return $string1;
}
function email_encoding(&$mail)
{
$mail->FromName = mm_convert_encoding($mail->FromName, 'auto');
$mail->Subject = mm_convert_encoding($mail->Subject, 'auto');
$mail->Body = ex_convert_encoding($mail->Body, 'iso-2022-jp', 'auto');
$mail->CharSet = 'ISO-2022-JP';
$mail->Encoding = '7bit';
foreach ($mail->to as $i => $temp_mail) {
$mail->to[$i][1] = mm_convert_encoding($temp_mail[1], 'auto');
}
foreach ($mail->cc as $i => $temp_mail) {
$mail->cc[$i][1] = mm_convert_encoding($temp_mail[1], 'auto');
}
foreach ($mail->bcc as $i => $temp_mail) {
$mail->bcc[$i][1] = mm_convert_encoding($temp_mail[1], 'auto');
}
}
function lang_convert_encoding($str, $to, $from = '')
{
require_once dirname(__FILE__).'/jcode.php';
$jc_to = _check_encoding($to); $jc_from = _check_encoding($from);
if ($jc_from == 0) {
$jc_from = AutoDetect($str);
}
if ($jc_to == 4) {
global $table_jis_utf8;
include_once dirname(__FILE__).'/code_table.jis2ucs';
}
if ($jc_from == 4) {
global $table_utf8_jis;
include_once dirname(__FILE__).'/code_table.ucs2jis';
}
return JcodeConvert($str, $jc_from, $jc_to);
}
function _check_encoding($str_encoding)
{
switch (strtolower($str_encoding)) {
case 'e':
case 'euc':
case 'euc-jp':
$jc_encoding = 1;
break;
case 's':
case 'sjis':
case 'shift_jis':
$jc_encoding = 2;
break;
case 'j':
case 'jis':
case 'iso-2022-jp':
$jc_encoding = 3;
break;
case 'u':
case 'utf8':
case 'utf-8':
$jc_encoding = 4;
break;
default:
$jc_encoding = 0;
break;
}
return $jc_encoding;
}
function simple_text_out($count, $course, $quiz, $data, $average)
{
$set_usr_agent = define_usr_agent();
if ($set_usr_agent == 1) {
$set_return = "\r\n";
} elseif ($set_usr_agent == 2) {
$set_return = "\r";
} else {
$set_return = "\n";
}
header("Content-Type: application/download\n");
if($set_usr_agent) {
$quiz->name = ex_convert_encoding($quiz->name, 'sjis', 'auto');
$course->shortname = ex_convert_encoding($course->shortname, 'sjis', 'auto');
}
header("Content-Disposition: attachment; filename=$course->shortname ".$quiz->name.".txt");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
header("Pragma: public");
/// Print names of all the fields
echo "$quiz->name";
for ($i=1; $i<=$count; $i++) {
echo "\t$i";
}
echo "$set_return";
/// Print all the user data
foreach ($data as $userid => $datum) {
if($set_usr_agent) {
$temp_dataum = ex_convert_encoding(fullname($datum), 'sjis', 'auto');
} else {
$temp_dataum = fullname($datum);
}
echo $temp_dataum;
for ($i=1; $i<=$count; $i++) {
echo "\t";
if (isset($datum->grades[$i])) {
if($set_usr_agent) {
$temp_dataum = ex_convert_encoding($datum->grades[$i], 'sjis', 'auto');
} else {
$temp_dataum = $datum->grades[$i];
}
echo $temp_dataum;
}
}
echo "$set_return";
}
/// Print all the averages
echo "\t";
for ($i=1; $i<=$count; $i++) {
echo "\t".$average[$i];
}
echo "$set_return";
/// Print all the averages as percentages
echo "\t%";
for ($i=1; $i<=$count; $i++) {
$percent = format_float($average[$i] * 100);
echo "\t$percent";
}
echo "$set_return";
exit; }
function full_text_out($course, $quiz, $data_tally, $qs_in_order, $question_ids, $qcount, $quests, $match_qs, $analysis, $max_choices, $table_colcount)
{
$set_usr_agent = define_usr_agent();
if ($set_usr_agent == 1) {
$set_return = "\r\n";
} elseif ($set_usr_agent == 2) {
$set_return = "\r";
} else {
$set_return = "\n";
}
header("Content-Type: application/download\n");
if($set_usr_agent) {
$quiz->name = ex_convert_encoding($quiz->name, 'sjis', 'auto');
$course->shortname = ex_convert_encoding($course->shortname, 'sjis', 'auto');
}
header("Content-Disposition: attachment; filename=$course->shortname ".$quiz->name.".txt");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
header("Pragma: public");
/// Print names of all the fields
echo "$quiz->name";
echo "$set_return";
/// Print all the user data
$colcount = count($question_ids);
foreach ($data_tally as $thisuserno=>$thisuser){
foreach($thisuser as $thisattemptno=>$thisattempt){
foreach($thisattempt as $thisitemkey=>$thisitem) {
if ($thisitem['score'] < 1) {$mark = "";} else {$mark = "*";}
//First two items are name & grade
if ($thisitemkey < 2){
if($set_usr_agent) {
$temp_dataum = ex_convert_encoding($thisitem, 'sjis', 'auto');
} else {
$temp_dataum = $thisitem;
}
echo $temp_dataum . "\t";
} elseif ($thisitemkey['qtype'] == 2){
if($set_usr_agent) {
$temp_dataum = ex_convert_encoding($thisitem['data']['answer'], 'sjis', 'auto');
} else {
$temp_dataum = $thisitem['data']['answer'];
}
echo $temp_dataum . "\t";
} elseif ($thisitem['qtype'] == 5) {
if ($thisitem['score'] == 1) {$mark = "*";} else {$mark="";}
if(!$thisitem['data'][1]){$thisitem['data'][1]="(No Response)";}
if($set_usr_agent) {
$temp_dataum_1 = ex_convert_encoding($thisitem['data'][0], 'sjis', 'auto');
$temp_dataum_2 = ex_convert_encoding($thisitem['data'][1], 'sjis', 'auto');
} else {
$temp_dataum_1 = $thisitem['data'][0];
$temp_dataum_2 = $thisitem['data'][1];
}
echo "{$temp_dataum_1} -- $mark{$temp_dataum_2}\t";
} else {
if($set_usr_agent) {
$temp_dataum = ex_convert_encoding($thisitem['data'], 'sjis', 'auto');
} else {
$temp_dataum = $thisitem['data'];
}
echo "$mark{$temp_dataum}\t";
}
}
}
echo " $set_return";
}
echo " $set_return";
echo "* Asterisk indicates correct response";
echo " $set_return";
//Question numbers
for ($i = 1;$i <= $colcount;$i++) {
echo "Q-$i\t";
}
echo " $set_return";
//Q numbers
foreach($qs_in_order as $qid){
$qcount++;
if($quests[$qid]['qtype'] == 5) {
$i = 0;
foreach ($match_qs[$qid] as $nowq){
$i++;
echo "Q-$qcount M-$i\t";
}
} else {
echo "Q-$qcount\t";
}
}
echo " $set_return";
//Repeat for q answers
foreach($qs_in_order as $qid){
$qcount++;
if($quests[$qid]['qtype'] == 5) {
foreach ($match_qs[$qid] as $nowq){
if($set_usr_agent) {
$temp_dataum = ex_convert_encoding($nowq, 'sjis', 'auto');
} else {
$temp_dataum = $nowq;
}
echo $temp_dataum. "\t";
}
} else {
echo "\t";
}
}
echo " $set_return";
for ($i = 1; $i<= $max_choices;$i++){
echo "M/C #$i\t";
//display answer tallies
for ($j = 1; $j <= $table_colcount; $j++){
//substitute "<br>" for a "//"
$nowdata = $analysis[$i][$j];
if (strpos($nowdata,"//")>0) {
$nowdata = str_replace("//"," : ",$nowdata);
}
if($set_usr_agent) {
$temp_dataum = ex_convert_encoding($nowdata, 'sjis', 'auto');
} else {
$temp_dataum = $nowdata;
}
echo $nowdata . "\t";
}
echo " $set_return";
}
exit;
}
function define_usr_agent()
{
$usr_agent_data = getenv('HTTP_USER_AGENT');
if (preg_match('/WIN/i', $usr_agent_data)) {
$set_usr_agent = 1;
} elseif (preg_match('/MAC/i', $usr_agent_data)) {
$set_usr_agent = 2;
} else {
$set_usr_agent = 0;
}
return $set_usr_agent;
}
?>
moodle\lang\ja\fonts\lang_decode.php
※これは、「langlib***.lzh」に含まれているlang_decode.phpに関する説明です。
<?php
/* Language Library for Japanese
by Takahito Kashiwagi (webmaster@supertak.com)
jcode.php / jcode_wrapper.php
by TOMO (http://www.spencernetwork.org/)
SAZANAMI FONT
by eFont (http://sourceforge.jp/projects/efont/) */
// Switch to use Language Library // 1: ON / 0: OFF
$uselibrary = '1';
// Functions
function lang_decode($string1)
{
global $uselibrary;
if(!$uselibrary) {return $string1;}
$string2 = 'utf-8'; $string3 = 'auto';
if (extension_loaded('mbstring')) {
$lang_conv = 'mb_convert_encoding';
} else {
$lang_conv = 'lang_convert_encoding';
}
$string1 = $lang_conv($string1, $string2, $string3);
return $string1;
}
?>