カレンダー入力やManagerManagerのエラーメッセージを日本語化したい  【解決済み】

質問全般・改善要望
返信する
aki
メンバー
メンバー
記事: 56
登録日時: 2013年1月23日(水) 20:59

カレンダー入力やManagerManagerのエラーメッセージを日本語化したい

投稿記事 by aki »

いつもお世話になっております。
表題の件について質問です。

テンプレート変数とManagerManagerを利用して、リソース投稿画面を
カスタマイズしています。日本語化について2つ質問させてください。

1) 入力タイプを「DateOnly」にした、カレンダー入力式のテンプレート変数を作っているのですが、
リソースの投稿画面で、表示されるカレンダーの月名が英語です。
できれば、日本語で「○月」と表示したいのですが、方法はありますでしょうか?

自分なりに、MODXフォルダ全体を「July」など英語の月名で検索してみると、TinyMCEの中身と
manager/media/calendarフォルダ内の「datepicker.js」が引っかかるのですが、
datepicker.jsフォルダの「monthNames」は、日本語化ファイルで日本語になるように
設定されているような感じがしました。
実際、リソース投稿時のページ設定タブの方にある「公開開始日時」などは、同じカレンダーなのですが
月名が日本語で出てきます。(確かどこかのバージョンアップで追加された翻訳でしたよね?)

テンプレート変数のカレンダー入力もこれと同じになると思っていたのですが、
こちらはまた別の仕組みで月名を表示するようになっているのでしょうか?


2) ManagerManagerでテンプレート変数の一部に「入力必須」のルールを加えています。
この時、未入力のまま保存しようとすると期待通りエラーのアラートが出て保存ができないのですが、
エラーメッセージが英語なので、できれば日本語にしたいです。

ちなみに、入力必須項目を未入力にした時のエラーメッセージは以下です。

コード: 全て選択

1 required fields are missing:
  - (テンプレート変数の見出し)
Please correct the indicated fields.
こちらもフォルダ内を検索をして、おそらくmm_requirefields.phpで表示させているのだろうと思います。
わがままなお願いなのですが、プログラムファイルを直接触って日本語に直すのは
バージョンアップ時や再インストール時にメンテナンスしにくくなるなと思うので、
日本語化ファイルを別に用意して被せるような仕組みにできないでしょうか?

よろしくお願いいたします。

-----
ご利用のサーバ:さくらサーバー
MODXのバージョン:1.0.12J
PHPのバージョン:5.3.27
MySQLのバージョン:5.1.67
ブラウザ:Firefox(Windows)
-----
mmc
メンバー
メンバー
記事: 13
登録日時: 2013年5月11日(土) 03:44

Re: カレンダー入力やManagerManagerのエラーメッセージを日本語化したい

投稿記事 by mmc »

1) 入力タイプを「DateOnly」にした、カレンダー入力式のテンプレート変数を作っているのですが、
リソースの投稿画面で、表示されるカレンダーの月名が英語です。
できれば、日本語で「○月」と表示したいのですが、方法はありますでしょうか?
やったことがあるので参考までに。
修正ファイル:manager/includes/tmplvars.inc.php
35行目~ テンプレート変数 日付+時間
48行目~ テンプレート変数 日付のみ
のswitch case文があるので修正します。

コード: 全て選択

			case "date":
				$field_id = str_replace(array('-', '.'),'_', urldecode($field_id));	
                if($field_value=='') $field_value=0;
				$field_html .=  '<input id="tv'.$field_id.'" name="tv'.$field_id.'" class="DatePicker" type="text" value="' . ($field_value==0 || !isset($field_value) ? "" : $field_value) . '" onblur="documentDirty=true;" />';
				$field_html .=  ' <a onclick="document.forms[\'mutate\'].elements[\'tv'.$field_id.'\'].value=\'\';document.forms[\'mutate\'].elements[\'tv'.$field_id.'\'].onblur(); return true;" style="cursor:pointer; cursor:hand"><img src="media/style/' . $manager_theme . '/images/icons/cal_nodate.gif" border="0" alt="No date"></a>';

				$field_html .=  '<script type="text/javascript">';
				$field_html .=  '	window.addEvent(\'domready\', function() {';
				$field_html .=  '		var dayNames = ["日","月","火","水","木","金","土"];';
				$field_html .=  '		var monthNames = ["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"];';
				$field_html .=  '   	new DatePicker($(\'tv'.$field_id.'\'), {\'yearOffset\' : '.$modx->config['datepicker_offset']. ", 'format' : " . "'" . $modx->config['datetime_format']  . ' hh:mm:00\'' . ',\'dayNames\':dayNames,\'monthNames\':monthNames});';
				$field_html .=  '});';
				$field_html .=  '</script>';

				break;
			case "dateonly":
				$field_id = str_replace(array('-', '.'),'_', urldecode($field_id));	
                if($field_value=='') $field_value=0;
				$field_html .=  '<input id="tv'.$field_id.'" name="tv'.$field_id.'" class="DatePicker" type="text" value="' . ($field_value==0 || !isset($field_value) ? "" : $field_value) . '" onblur="documentDirty=true;" />';
				$field_html .=  ' <a onclick="document.forms[\'mutate\'].elements[\'tv'.$field_id.'\'].value=\'\';document.forms[\'mutate\'].elements[\'tv'.$field_id.'\'].onblur(); return true;" style="cursor:pointer; cursor:hand"><img src="media/style/'.$manager_theme.'/images/icons/cal_nodate.gif" border="0" alt="No date"></a>';

				$field_html .=  '<script type="text/javascript">';
				$field_html .=  '	window.addEvent(\'domready\', function() {';
				$field_html .=  '		var dayNames = ["日","月","火","水","木","金","土"];';
				$field_html .=  '		var monthNames = ["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"];';
				$field_html .=  '   	new DatePicker($(\'tv'.$field_id.'\'), {\'yearOffset\' : ' . $modx->config['datepicker_offset'] . ", 'format' : '" . $modx->config['datetime_format']  . '\',\'dayNames\':dayNames,\'monthNames\':monthNames});';
				$field_html .=  '});';
				$field_html .=  '</script>';

				break;
javascriptは詳しくないので更新日時に使われていた方法をそのまま書いてます。

manager/media/calendar/datepicker.js のファイルの曜日と月を書き直したほうが早そうですが・・・^^;
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: カレンダー入力やManagerManagerのエラーメッセージを日本語化したい

投稿記事 by yama »

次のリリースでの改善を検討します。しばらくお待ちいただけますでしょうか。
aki
メンバー
メンバー
記事: 56
登録日時: 2013年1月23日(水) 20:59

Re: カレンダー入力やManagerManagerのエラーメッセージを日本語化したい  【解決済み】

投稿記事 by aki »

お返事が遅れてすみません。

mmcさん、ご返信ありがとうございます。
教えていただいた箇所に変更を加えて、カレンダーの日本語表示ができました!

yamaさん、いつもありがとうございます。
はい、お待ちしております^^
返信する