<?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/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>無限なる開発ブログ &#187; 多言語サポート</title>
	<atom:link href="http://www.oto-kichi.com/tag/%e5%a4%9a%e8%a8%80%e8%aa%9e%e3%82%b5%e3%83%9d%e3%83%bc%e3%83%88/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.oto-kichi.com</link>
	<description>ロサンゼルス在住ITエンジニアの開発ブログ</description>
	<lastBuildDate>Thu, 21 Apr 2011 00:33:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.oto-kichi.com/tag/%e5%a4%9a%e8%a8%80%e8%aa%9e%e3%82%b5%e3%83%9d%e3%83%bc%e3%83%88/feed/" />
		<item>
		<title>Magentoの管理画面の日本語化</title>
		<link>http://www.oto-kichi.com/2011/01/02/magento%e3%81%ae%e7%ae%a1%e7%90%86%e7%94%bb%e9%9d%a2%e3%81%ae%e6%97%a5%e6%9c%ac%e8%aa%9e%e5%8c%96/</link>
		<comments>http://www.oto-kichi.com/2011/01/02/magento%e3%81%ae%e7%ae%a1%e7%90%86%e7%94%bb%e9%9d%a2%e3%81%ae%e6%97%a5%e6%9c%ac%e8%aa%9e%e5%8c%96/#comments</comments>
		<pubDate>Mon, 03 Jan 2011 05:59:05 +0000</pubDate>
		<dc:creator>Viruke</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[多言語サポート]]></category>
		<category><![CDATA[magento]]></category>

		<guid isPermaLink="false">http://www.oto-kichi.com/?p=180</guid>
		<description><![CDATA[Magentoの管理画面の日本語化の方法です。 今回のMagentoのVersionは1.4.2.0です。 Step 1.  日本語化ファイルを以下のURLからダウンロード。 https://github.com/rac [...]]]></description>
			<content:encoded><![CDATA[
<!-- wp-jquery-lightbox, a WordPress plugin by ulfben --> 
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.oto-kichi.com%2F2011%2F01%2F02%2Fmagento%25e3%2581%25ae%25e7%25ae%25a1%25e7%2590%2586%25e7%2594%25bb%25e9%259d%25a2%25e3%2581%25ae%25e6%2597%25a5%25e6%259c%25ac%25e8%25aa%259e%25e5%258c%2596%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.oto-kichi.com%2F2011%2F01%2F02%2Fmagento%25e3%2581%25ae%25e7%25ae%25a1%25e7%2590%2586%25e7%2594%25bb%25e9%259d%25a2%25e3%2581%25ae%25e6%2597%25a5%25e6%259c%25ac%25e8%25aa%259e%25e5%258c%2596%2F&amp;source=Viruke&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Magentoの管理画面の日本語化の方法です。</p>
<p>今回のMagentoのVersionは1.4.2.0です。</p>
<p>Step 1.  日本語化ファイルを以下のURLからダウンロード。</p>
<p style="padding-left: 30px;"><a href="https://github.com/rack990/Magento-Japanese-Translation">https://github.com/rack990/Magento-Japanese-Translation</a></p>
<p>Step 2.  解凍した中にあるフォルダ[ja_JP]を&#8221;/app/locale&#8221;にアップロード。</p>
<p>Step 3.  [System] → [Cache Management]から[Flush Magento Cache]ボタンをクリック<a href="http://www.oto-kichi.com/wp-content/uploads/2011/01/magento-cache.jpg" rel="lightbox[180]"><img src="http://www.oto-kichi.com/wp-content/uploads/2011/01/magento-cache-150x150.jpg" title="magento-cache" width="150" height="150" class="aligncenter size-thumbnail wp-image-181" /></a></p>
<p>Step 4. 管理画面のページの下の[interface Locale]ドロップダウンから[日本語]を選択。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.oto-kichi.com/2011/01/02/magento%e3%81%ae%e7%ae%a1%e7%90%86%e7%94%bb%e9%9d%a2%e3%81%ae%e6%97%a5%e6%9c%ac%e8%aa%9e%e5%8c%96/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.oto-kichi.com/2011/01/02/magento%e3%81%ae%e7%ae%a1%e7%90%86%e7%94%bb%e9%9d%a2%e3%81%ae%e6%97%a5%e6%9c%ac%e8%aa%9e%e5%8c%96/" />
	</item>
		<item>
		<title>CakePHP1.2を使った多言語サポート対応時の覚書き</title>
		<link>http://www.oto-kichi.com/2009/10/29/cakephp1-2%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%9f%e5%a4%9a%e8%a8%80%e8%aa%9e%e3%82%b5%e3%83%9d%e3%83%bc%e3%83%88%e5%af%be%e5%bf%9c%e6%99%82%e3%81%ae%e8%a6%9a%e6%9b%b8%e3%81%8d/</link>
		<comments>http://www.oto-kichi.com/2009/10/29/cakephp1-2%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%9f%e5%a4%9a%e8%a8%80%e8%aa%9e%e3%82%b5%e3%83%9d%e3%83%bc%e3%83%88%e5%af%be%e5%bf%9c%e6%99%82%e3%81%ae%e8%a6%9a%e6%9b%b8%e3%81%8d/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 02:54:01 +0000</pubDate>
		<dc:creator>Viruke</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[多言語サポート]]></category>

		<guid isPermaLink="false">http://www.oto-kichi.com/?p=104</guid>
		<description><![CDATA[CakePHP 1.2を使った国際化を実装する際に調べて役に立ったサイトを（主に自分のために）纏めておきます。 １）いつも、人知れずお世話になっているサイト「CakePHPのおいしい食べ方」にとても分かりやすい解説があり [...]]]></description>
			<content:encoded><![CDATA[
<!-- wp-jquery-lightbox, a WordPress plugin by ulfben --> 
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.oto-kichi.com%2F2009%2F10%2F29%2Fcakephp1-2%25e3%2582%2592%25e4%25bd%25bf%25e3%2581%25a3%25e3%2581%259f%25e5%25a4%259a%25e8%25a8%2580%25e8%25aa%259e%25e3%2582%25b5%25e3%2583%259d%25e3%2583%25bc%25e3%2583%2588%25e5%25af%25be%25e5%25bf%259c%25e6%2599%2582%25e3%2581%25ae%25e8%25a6%259a%25e6%259b%25b8%25e3%2581%258d%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.oto-kichi.com%2F2009%2F10%2F29%2Fcakephp1-2%25e3%2582%2592%25e4%25bd%25bf%25e3%2581%25a3%25e3%2581%259f%25e5%25a4%259a%25e8%25a8%2580%25e8%25aa%259e%25e3%2582%25b5%25e3%2583%259d%25e3%2583%25bc%25e3%2583%2588%25e5%25af%25be%25e5%25bf%259c%25e6%2599%2582%25e3%2581%25ae%25e8%25a6%259a%25e6%259b%25b8%25e3%2581%258d%2F&amp;source=Viruke&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>CakePHP 1.2を使った国際化を実装する際に調べて役に立ったサイトを（主に自分のために）纏めておきます。</p>
<p>１）いつも、人知れずお世話になっているサイト「CakePHPのおいしい食べ方」にとても分かりやすい解説がありました。</p>
<blockquote><p>CakePHP1.2の簡単国際化</p>
<p>CakePHP1.2のbakeで自動生成した画面は、画面に表示される文字列が__(&#8216;文字列&#8217;) で囲まれています。これは、簡単に多言語翻訳ができるように配慮されているからです。</p>
<p>引用元: <a href="http://cakephp.seesaa.net/article/87269708.html">CakePHP のおいしい食べ方: CakePHP1.2の簡単国際化</a>.</p></blockquote>
<p>２）次に、言語の切り替えをマニュアルでするためのリンクの作り方では、このサイトの情報が役に立ちました。</p>
<blockquote><p>To better understand the goal and why some things were done the way they were, I’ll summarize the requirements:</p>
<p>1. The app has to support two languages or more (in this case English and Russian)</p>
<p>2. Default language is English</p>
<p>3. The language switching is based on a URL param</p>
<p>4. The URL format should be: example.com/eng/controller/action</p>
<p>5. Language choice should persist in the session and a cookie</p>
<p>引用元: <a href="http://teknoid.wordpress.com/2008/11/28/cakephp-url-based-language-switching-for-i18n-and-l10n-internationalization-and-localization/">CakePHP URL-based language switching for i18n and l10n (internationalization and localization) « nuts and bolts of cakephp</a>.</p></blockquote>
<p>なお、自分のサイトでは</p>
<ol>
<li>多言語サポートとして英語と日本語をサポート</li>
<li>デフォルトの言語は日本語</li>
<li>言語はURL paramで変更できる</li>
<li>URLフォーマットは: example.com/ja/controller/action といった感じ</li>
<li>好みの言語はセッションとクッキーで保持される。</li>
</ol>
<p>としています。用はWordpressのプラグインで「qTranslate」という便利なプラグインがあるが、同じことをしたい！</p>
<p>なので、こちらの例ではConfigフォルダの中のroutes.phpで以下のように</p>
<pre>
<pre class="brush:php">Router::connect('/:language/:controller/:action/*',
                       array(),
                       array('language' =&gt; '[a-z]{3}'));</pre>
<p>としていますが、自分は[en]と[ja]など2文字がよかったので以下のようにしました。</p>
<pre class="brush:php">Router::connect('/:language/:controller/:action/*', array(), array('language' =&gt; '[a-z]{2}'));</pre>
<p>で、後は引用元にもあるように、_setLanguage()をapp_controller.phpの中に記述して、beforeFilter()関数から呼び出すようにします。</p>
<pre class="brush:php">
	function _setLanguage() {

	    if ($this-&gt;Cookie-&gt;read('lang') &amp;&amp; !$this-&gt;Session-&gt;check('Config.language')) {
	        $this-&gt;Session-&gt;write('Config.language', $this-&gt;Cookie-&gt;read('lang'));
	    }
	    else if (isset($this-&gt;params['language']) &amp;&amp; ($this-&gt;params['language']
	             !=  $this-&gt;Session-&gt;read('Config.language'))) {     

	        $this-&gt;Session-&gt;write('Config.language', $this-&gt;params['language']);
	        $this-&gt;Cookie-&gt;write('lang', $this-&gt;params['language'], null, '20 days');
	    }
	}</pre>
<p>さらに、app_helper.phpに以下のurl()関数をオーバーライドする関数を作ってお膳立ては出来上がり。</p>
<pre class="brush:php">	function url($url = null, $full = false) {
        if(!isset($url['language']) &amp;&amp; isset($this-&gt;params['language'])) {
          $url['language'] = $this-&gt;params['language'];
        }     

        return parent::url($url, $full);
	}</pre>
<p>最後に、肝心のリンクを作ります。<br />
自分はviews/layouts/default.ctpにリンクを作りました。</p>
<pre class="brush:php">&lt;p&gt;
    &lt;?php echo $html-&gt;link('English', array('language'=&gt;'en')); ?&gt;
&lt;/p&gt;
&lt;p&gt;
    &lt;?php echo $html-&gt;link('Japanese', array('language'=&gt;'ja')); ?&gt;
&lt;/p&gt;</pre>
<p>で、出来上がり。<br />
example.com/en/controller/action<br />
で言語を英語に切り替えた後、<br />
example.com/controller/action<br />
でアクセスしても、選択言語が保持されているのを確認します。</p>
<p>自分が作っているCakePHPサイトで挙動が確認できます。<br />
<a href="http://labeauty.getmycity.com" target="_blank">http://labeauty.getmycity.com</a><br />
(実はまだ多言語サポート対応中のためFooterの一番下にEnglish、Japaneseの隠しリンクがあるｗ)</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.oto-kichi.com/2009/10/29/cakephp1-2%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%9f%e5%a4%9a%e8%a8%80%e8%aa%9e%e3%82%b5%e3%83%9d%e3%83%bc%e3%83%88%e5%af%be%e5%bf%9c%e6%99%82%e3%81%ae%e8%a6%9a%e6%9b%b8%e3%81%8d/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.oto-kichi.com/2009/10/29/cakephp1-2%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%9f%e5%a4%9a%e8%a8%80%e8%aa%9e%e3%82%b5%e3%83%9d%e3%83%bc%e3%83%88%e5%af%be%e5%bf%9c%e6%99%82%e3%81%ae%e8%a6%9a%e6%9b%b8%e3%81%8d/" />
	</item>
	</channel>
</rss>

