cubeUtilsをEMLH互換とするpreload

Date 2008-06-13 16:24:49 | Category: XOOPS

in englishin japanese
EMLHはXCL2.1でもまったく問題なく動きますが、いろいろな意味でcubeUtilsの方がより使いやすい多言語処理と言えるでしょう。前者は一応Hackで、後者はモジュールだ、というのもあります。

ただ、この手の多言語処理は、ob_filterを利用しているので、メール送信処理などで、言語タグが未処理のまま送られてしまうことはままあります。

そのあたりの経験を積んでいるモジュール作者であれば、メールを送信する前、本文などに言語タグ書き換え処理を入れます。


if( function_exists('easiestml') ) {
	$body = easiestml( $body ) ;
}


実際に私が作ったモジュールにも、このようなコードを沢山使ってます。

ただ、このロジックでは、EMLHを入れている場合は良いのですが、cubeUtilsを入れている場合に効きません。そのため、例えばpicoのフォームメール機能を言語タグを利用して記述した場合、タグが未処理のままメール本文になってしまいます。

というわけで、cubeUtilsを利用していても、EMLHと同じ処理がされるようなpreloadを作ってみました。preloadフォルダに放りこんでください。この場合、ファイル名は何でも良いのですが、MultiLanguagePreLoad.class.php と併存する必要があるので、それっぽく名づけてあります。

MultiLanguageCompatibleEMLH.class.php

<?php
function easiestml( $s , $lang = '' )
{
	global $cubeUtilMlang ;

	if( is_object( @$cubeUtilMlang ) ) {
		if( $lang ) {
			$orig_lang = $cubeUtilMlang->mLanguage ;
			$cubeUtilMlang->mLanguage = $lang ;
			$ret = $cubeUtilMlang->obFilter( $s ) ;
			$cubeUtilMlang->mLanguage = $orig_lang ;
			return $ret ;
		} else {
			return $cubeUtilMlang->obFilter( $s ) ;
		}
	} else {
		return $s ;
	}
}

え? これだけ?
ええ。これだけです

「なんじゃそりゃ!」と突っ込みを受けそうなコードですが、cubeUtilsの言語切替機能を使っている人にはかなりお勧めです。
------------
(2008/06/22 更新)
EMLH 1.30互換とするために、2番目のパラメータ処理を追加しました





You can read more news at PEAK XOOPS.
http://xoops.peak.ne.jp

The URL for this story is:
http://xoops.peak.ne.jp/md/news/index.php?page=article&storyid=455