バージョン選択

フォーラム

メニュー

オンライン状況

25 人のユーザが現在オンラインです。 (15 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 25
もっと...

サイト内検索

その他 > その他 > 【EC-CUBE次期バージョン】多言語化対応についてのフィードバック依頼

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
eccube_admin
投稿日時: 2012/10/5 17:24
対応状況: −−−
管理人
登録日: 2006/9/6
居住地:
投稿: 157
【EC-CUBE次期バージョン】多言語化対応についてのフィードバック依頼
EC-CUBEコミッター・コミュニティの皆様

お世話になっております。
EC-CUBE 運営チーム 吉本です。

EC-CUBE次期バージョンで実装される予定の多言語化対応について現段階での仕様
を共有致します。
http://svn.ec-cube.net/open_trac/ticket/163

10月14日まで多言語化システム仕様検討期間とさせて頂き
コミッターの皆様からご意見を頂ければと思います。

現時点でお気づきの点、懸念事項など御座いましたらご指摘の方よろしくお願い
いたします。

■概要
▼多言語化対応
EC-CUBEのテキストを全て外部ファイルに切り出す事で
日本語以外への言語対応・テキスト自体のメンテナンス性向上を目的としていま
す。

▼開発リビジョン
http://svn.ec-cube.net/open/branches/version-2_12-multilang

▼スコープ
以下、出力される全テキストを対象とします。
・インストール画面
・フロント画面(PC、スマホ、モバイル)
・管理画面
・各種ログ出力
・各種メール
・マスタデータ

▼その他
・コード内のコメントについては現時点では日本語で考えています。


■スケジュール
 多言語システム
 - 10月12日仕様FIX
 開発期間
 - 10月下旬〜12月中旬
 β版リリース
 - 12月中旬
 正式版リリース
 - 1月末リリース予定
 
* 仕様検討〜開発についてはコミッターの皆様にご協力頂く事が多々あるかと思
います。
 よろしくお願いいたします。

■仕様
▼使用方法
SC_I18n::t()、SC_I18n::t_plural()により定数をキーにテキスト出力を行う。
ex==============================
 【1】msgidをキーとし、msgstrに対となる文字列を定義します。
 data/locales/jp.po
msgid "SC_CARTSESSION_UNWORKABLE_METHOD_CALLED"
msgstr "正しく動作しないメソッドが呼び出されました。"

 【2】定義したメッセージは以下の形で呼び出す。
SC_I18n_Ex::t('SC_CARTSESSION_UNWORKABLE_METHOD_CALLED');

================================

▼言語ファイル
言語ファイルは以下の様に作成・配置する。
 data/locales/jp.mo :バイナリファイル
 data/locales/jp.po :元ファイル
 html/user_data/packages/admin/locales/
 html/user_data/packages/admin/default/locales/
 html/user_data/packages/admin/mobile/locales/
 html/user_data/packages/admin/sphone/locales/

▼テンプレートへの出力
テンプレートからSmartyエクステンション関数を実行する
 data/smarty_extends/function.t.php
 data/smarty_extends/function.t_plural.php

 
■懸念点
・javascriptの対応
・メールの対応
・パフォーマンスについて
 →現状の仕様でメモリの負荷などパフォーマンスの観点で問題が出る可能性が
ある。
・マスタデータ

以上が現時点での仕様となります。
細かいレベルでも結構ですので、フィードバック頂けますと幸いです。

ご不明な点、説明不足な点があればご連絡下さいませ。
よろしくお願いいたします。
namacha
投稿日時: 2012/10/7 19:47
対応状況: −−−
半人前
登録日: 2012/7/15
居住地:
投稿: 24
Re: 【EC-CUBE次期バージョン】多言語化対応についてのフィードバック依頼
ここに書けばいいのかな・・

この機能に限ったことではないのですが、気になった点としては「静的呼び出し」で実装されようとしていることです。

1.静的に呼び出された関数内でthisを用いると、呼び出し側クラスのthisとして扱われる。

2.静的に呼び出される関数を静的関数にするとオーバーライドできない。※1

以上を踏まえた上で、ECCUBEの現状は主に、
・呼び出す側は静的に呼び出す
・呼び出される側は通常のメンバ関数として定義
として実装されているかと思います。

仮にこれらと同じように実装をすると上記1が関与してきて、SC_I18n_Ex(SC_I18n)の中では自分自身をさすthisを扱うことができなくなります。

クラスが扱う情報は「メッセージ」という変更されやすい情報であるので、
実装時、および、Exでのオーバーライド時に問題がない実装をするべきと思うのですが、
この辺りの実装についてどのようにお考えなのでしょうか?

(というのも最近、これが原因で自分と同じクラス内の関数を見つけられずに落ちている関数が居ましたので・・)


…と!!!思いきや!!!
メッセージはファイルとして外に出すんですね。
そうするとクラスその物への変更をする機会って、使う側はあんまりないんですね。
若干勘違いしてました。ごめんなさい。

機会はあまりなさそうですが、可能性はあるということで、お時間ありましたらお答え戴ければ幸いです。


※1について追記。
検索して見た時の情報が古かったようで、「昔はできなかった(制限があった?)感じだけど今はできる」ようです。誤った情報を掲載してすみません。
私はphpに触れて3〜4ヶ月程度の者ですので、言語特有の仕様についてはまだまだ勘違いしているかも知れません。

公式ドキュメントとしては、下記辺りが絡みそうです。
PHP: static
PHP: 遅延静的束縛

加えて下記はサンプルのコードです。
私が知る限りECCUBEにおいてこの辺の実装は、a3の実装パターンが主です(parentの呼び出しは除く)。

thisを制限するa2、a2_2の実装パターンを使用せずに、
あえて、thisを使用できるa3の状態で実装しているのにも関わらず、
その関数を静的呼び出ししている。
この認識が呼び出す側と呼び出される側との間で矛盾していて、バグに繋がっている。

この辺りの実装の仕様が、先に作った者勝ちになっていて、明確になっていないのでは?という疑問からきた投稿です。


PHP 5.3.17, Zend Engine v2.3.0, Xdebug v2.2.1で確認

<?php

class a
{
	function a1(){
		echo "a1";
	}

	static function a2(){
		echo "a2";
	}
	
	function a3(){
		echo "a3";
	}
}

class a_Ex extends a
{
	function a1_1(){
		echo "a_Ex1_1";
		parent::a1();   // Non-static method a::a1() should not be called statically
	}

	static function a1_2(){
		echo "a_Ex1_2";
		parent::a1();   // Non-static method a::a1() should not be called statically
	}

	function a2_1(){
		echo "a_Ex2_1";
		parent::a2();
	}

	static function a2_2(){
		echo "a_Ex2_2";
		parent::a2();
	}

	function a3(){
		echo "a_Ex3";
		parent::a3();   // Non-static method a::a3() should not be called statically
	}
}

a_Ex::a1();   // Non-static method a::a1() should not be called statically
a_Ex::a1_1(); // Non-static method a_Ex::a1_1() should not be called statically
a_Ex::a1_2();
a_Ex::a2();
a_Ex::a2_1(); // Non-static method a_Ex::a2_1() should not be called statically
a_Ex::a2_2();
a_Ex::a3();   // Non-static method a_Ex::a3() should not be called statically

?>
seasoft
投稿日時: 2012/10/8 12:52
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: 【EC-CUBE次期バージョン】多言語化対応についてのフィードバック依頼
> 1.静的に呼び出された関数内でthisを用いると、呼び出し側クラスのthisとして扱われる。

共感いたします。カスタマイズ中に何度か「あれ?」っと思った経験があります。


> 2.静的に呼び出される関数を静的関数にするとオーバーライドできない。

この辺り詳しくなくて恐縮ですが、PHP5 において「できない」という事が記載された仕様書類や、サンプルソースを頂けるとマズさ加減を共有できるかもしれません。


(本題は概ね自己解決されたようなので、このスレッドで続けるのはやめたほうが良いかも)


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

kodama417
投稿日時: 2012/10/10 14:02
対応状況: −−−
新米
登録日: 2011/8/11
居住地:
投稿: 9
Re: 【EC-CUBE次期バージョン】多言語化対応についてのフィードバック依頼
ECCUBEで日本語用サイトと海外用サイトと2種類運用していますが
多言語化対応が検討されているということで希望意見を。

・海外通貨表示対応 円 → $・€・その他
・価格の小数点対応

自前で海外用に改造したときは小数点対応で苦労しました。
red
投稿日時: 2012/10/11 15:25
対応状況: −−−
登録日: 2010/2/15
居住地: 東京都
投稿: 1570
Re: 【EC-CUBE次期バージョン】多言語化対応についてのフィードバック依頼
EC-CUBEの話ではなくPHPの話にはなりますが念のため

PHP: static
PHP: 遅延静的束縛

こちらはPHP5.3から実装された機能になります
EC-CUBE自体はPHP5.1で動くことが求められますので、この機能を使うことができませんのでご注意下さい
red
投稿日時: 2012/10/11 15:34
対応状況: −−−
登録日: 2010/2/15
居住地: 東京都
投稿: 1570
Re: 【EC-CUBE次期バージョン】多言語化対応についてのフィードバック依頼
多言語化対応がパッケージとして必要なのかはよくわかりませんが、今の形で実装されるのは避けて欲しいと思います

■1点目
▼使用方法
SC_I18n::t()、SC_I18n::t_plural()により定数をキーにテキスト出力を行う。
ex==============================
 【1】msgidをキーとし、msgstrに対となる文字列を定義します。
 data/locales/jp.po
msgid "SC_CARTSESSION_UNWORKABLE_METHOD_CALLED"
msgstr "正しく動作しないメソッドが呼び出されました。"

 【2】定義したメッセージは以下の形で呼び出す。
SC_I18n_Ex::t('SC_CARTSESSION_UNWORKABLE_METHOD_CALLED');


テキストをすべて定数で管理されてしまうと、カスタマイズする際の視認性が劇的に悪くなるのではないかと思います

最近のフレームワークですと大体の場合(cakephp2の例ですが)
#: Controller/HogeController.php:65;166;188;214
2
msgid "Hello world"
3
msgstr "世界こんにちわ"

こういった書き方になるのではないかと思います

テンプレートも
<h2><?php echo __('Intermationalization');?></h2>
<p><?php echo __('Test now');?></p>

こう書いてあれば、修正するのが楽ですが、定数で書いてあると内容の重複した定数がひたすら増える形にならないでしょうか?


■2点目
仮に英語化してもformの仕様上カナの入力が求められることもあり、そのまま使うことは難しいのではないでしょうか?

eccube_admin
投稿日時: 2012/10/11 18:48
対応状況: −−−
管理人
登録日: 2006/9/6
居住地:
投稿: 157
Re: 【EC-CUBE次期バージョン】多言語化対応についてのフィードバック依頼
> kodama417さま
ご意見ありがとうございます!
ローカライズに関しては
プラグインで行う箇所、本体側で対応を行う箇所を切り分けて
多言語化と別で進めさせて頂きます。

こちらはローカライズの観点で検討させて頂きます。


> redさま
ご意見ありがとうございます!

■1点目
こちらについてはcomu-mlでも同様のご意見を頂きました。
ご提案頂いております様に、英文もしくはIDで検討しております。

■2点目
ありがとうございます。
確かに、フォームについては何らかの対応が必要になりそうですね。


頂きましたフィードバックは運営チーム内で共有させて頂きます。
引き続き、ご意見ありましたらよろしくお願いいたします。
namacha
投稿日時: 2012/10/11 21:32
対応状況: −−−
半人前
登録日: 2012/7/15
居住地:
投稿: 24
Re: 【EC-CUBE次期バージョン】多言語化対応についてのフィードバック依頼
引用:
PHP: static
PHP: 遅延静的束縛

こちらはPHP5.3から実装された機能になります
EC-CUBE自体はPHP5.1で動くことが求められますので、この機能を使うことができませんのでご注意下さい

なるほど、それならまだ納得ができます。
互換のためにECCUBEではあえて制約をゆるく実装しているのですね。

私は割と新しいバージョンのPHPから触れたもので、そういう背景を知らず、クラスメンバにstaticやらprotected等の制約を付けずにおいて自ら落ちるプログラム、追加機能よりもバグ修正の方に工数を取られる最新版、毎日のようにこのコミュニティに上がるバグやエラー報告、そして恐らくそのままの仕様で機能を追加しようとする運営を見て、正直本当にこれ大丈夫か?と思っていました。

しかし、互換性維持の為に安定性を犠牲にする開発方針なのであれば、それは仕方がないことですね。
ご回答ありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は89,554名です
総投稿数は110,121件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1656
8
red
1570
9
mcontact
1312
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.