<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>WIDGET-INFO &#187; 言語</title>
	<atom:link href="http://blog.widget-info.net/tag/language/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.widget-info.net</link>
	<description>WIDGET-INFOではCakePHPやIPhone情報、その他開発に関する情報を発信</description>
	<lastBuildDate>Tue, 09 Feb 2010 13:44:47 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>CakePHP　Stringクラスのinsert()を使ってみる</title>
		<link>http://blog.widget-info.net/2009/11/cakephp_string_insert/</link>
		<comments>http://blog.widget-info.net/2009/11/cakephp_string_insert/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 15:06:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[String]]></category>
		<category><![CDATA[その他クラス]]></category>
		<category><![CDATA[国際化]]></category>
		<category><![CDATA[言語]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=358</guid>
		<description><![CDATA[CakePHPのStringクラスにある「insert()」を試してみました。]]></description>
			<content:encoded><![CDATA[<p>CakePHPのStringクラスにある「insert()」を試してみました。<br />
自分のメモでもありますが。。。</p>
<p>特に便利と感じた利用方法。。。</p>
<p>皆さんは「__(&#8216;CakePHP best&#8217;)」などような言語ファイルを使った国際化を自動で行ってくれる機能を、をすでに使っているかと思います。<br />
例えばこの「CakePHP best」の部分を動的に変えたいと思う場合もあるかと思います。</p>
<p>簡単にコーディングを行おうと思えば次のようなるかと思います。<br />
<span id="more-358"></span></p>
<pre class="brush:php">$value='best';
echo __('CakePHP ',true).$value;</pre>
<p>と言った形で「$value」の値を変更していくと言った形でしょうか。。。<br />
もちろん100%悪い形というわけではありませんが、もし「CakePHP 」を最終的に<br />
「CakePHP is」+「$value」+「PHP」に変更しなければならなくなった場合。。。</p>
<p>もちろん先ほどの状態では次のように変更しなければならなくなります。</p>
<pre class="brush:php">$value='best';
echo __('CakePHP ',true).$value.__('PHP',true);</pre>
<p>これでは修正がある度に手間がかかり、これがいくつものファイルに存在した場合を考えると。。。<br />
悪夢です（笑）</p>
<p>そこで活躍するのが今回のStringクラスの「insert()」。</p>
<p>先ほどの例を「insert()」に置き変えた場合の答えを先に記述すると次のようになります。</p>
<pre class="brush:php">echo String::insert(__('CakePHP :status PHP',true),array('status'=&gt;'best'));
//CakePHP best PHP</pre>
<p>さてお気づきでしょうか？</p>
<p>「:status」が「insert()」の第2引数である配列のキーの値を参照し、置き換えてくれます。<br />
こうすることで、言語ファイルには「CakePHP :status PHP」だけを記述し、自由に変更することができます。<br />
もちろん配列のキーは複数指定することもできるので、</p>
<pre class="brush:php">echo String::insert(__('CakePHP :status PHP by :foo',true),array('status'=&gt;'best','foo'=&gt;'me'));
//CakePHP best PHP by me</pre>
<p>も可能です。<br />
これで無駄に言語ファイルが肥大化することも抑えることかと思います。<br />
英文の文法についてはご了承ください（笑）</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/11/cakephp_string_insert/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
