PEAK XOOPS - cubeUtilsをEMLH互換とするpreload in englishin japanese

Archive | RSS |
XOOPS
XOOPS : cubeUtilsをEMLH互換とするpreload
Poster : GIJOE on 2008-06-13 16:24:49 (8703 reads)

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番目のパラメータ処理を追加しました


Printer friendly page Send this story to a friend

Comments list

GIJOE  Posted on 2008/6/22 17:18 | Last modified
nobunobuさん、こんにちは。
コメントありがとうございます。

Quote:

nobunobu wrotes:
同じような関数定義を、小生のとあるサイトでは、
直接、MultiLanguagePreLoad.class.php内に追加定義してたりしてました

EMLH-1.30互換となるpreloadを作っていたら確かに、

function cubeUtil_MLConvert($str)

というグローバルスコープの関数を見つけてしまいました
(グローバルスコープなフィルタ関数だと、Smartyで直接使えるのがメリット大きい)

それでも、preloadは1ファイル1機能の方が判りやすいですし、EMLH-1.30互換なんて後付けもできて便利ですね
avtx30  Posted on 2008/6/13 22:39
ありがとうございます。早速導入しました。
nobunobu  Posted on 2008/6/13 17:37
これ・・・
同じような関数定義を、小生のとあるサイトでは、
直接、MultiLanguagePreLoad.class.php内に追加定義してたりしてました・・・別のプリロードの方がスマートですね^^
Login
Username or e-mail:

Password:

Remember Me

Lost Password?

Register now!