JavaScript の月間カレンダーを作成しました。すべての HTML はスクリプトによって動的に生成されます。
利点は、JS および CSS ファイルを含める前に、HTML に必要なのはコンテナーのみであるということです。
<div id="calendar-box"></div>
その中に、スクリプトはカレンダーを追加します。カレンダーは、thead、tbody、およびtfootセクションを持つテーブルです。
はtbody
単に日のグリッドを表示するだけなので、ローカライズする必要はありません。thead
およびには、ユーザー操作用のtfoot
オブジェクト (前または翌月/年に移動するためのリンク、曜日名、およびカレンダーを閉じるためのリンク) が含まれています。
ご想像のとおり、ローカリゼーションごとに異なる場合があります。英語の平日は「Mo、Tu、We、Th、Fr、Sa、Su」ですが、スペイン語では「Lu、Ma、Mi、Ju、Vi、Sa」ですthead
。tfoot
、 行う"。
月の名前についても同じ問題が発生します。
これまでのところ、config
月、曜日、その他のテンプレート パーツの配列を定義するオプションを使用してこれを解決しています。
config = {
// other config stuff...
monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
weekDayNames: ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'],
closeText: 'Close' // text to display in the "close" button
};
しかし、それが最善の解決策とは思えません。私は通常、JavaScript の LOCALE をできる限り減らす傾向があります。これに加えてthead
、多くのJavaScript 生成の HTMLが発生しますが、これもあまり良くありません。
同様の質問で、誰かが JavaScript テンプレート プラグインの使用を提案しているのを見ました。
var t = $.template('<div><img src="${url}" />${name}</div>');
ただし、これはまだ JS 生成の HTML です。この場合、template
メソッドへのパラメーターとして提供されます。
そのため、ロジック部分が最も機能する唯一のセクションをスクリプトが生成するように評価しtbody
、テーブルの残りの部分の静的 HTML 部分を次のようにページに直接提供します。
<table class="calendar">
<thead>
<tr>
<td colspan="2"><a href="#">←</a></td>
<td colspan="3">
<div class="month">June</div><div class="year">2013</div>
</td>
<td colspan="2"><a href="#">⇆</a></td>
</tr>
<tr class="weekDays">
<td>Mo</td><td>Tu</td><td>We</td><td>Th</td><td>Fr</td><td>Sa</td><td>Su</td>
</tr>
</thead>
<tbody>
<!-- only this part is filled by JavaScript -->
</tbody>
<tfoot>
<tr><td colspan="7"><a href="#">Close</a></td></tr>
</tfoot>
</table>
これはハイブリッド ソリューションですが、サーバー側のテンプレートを使用して LOCALE を管理できます。それについてどう思いますか。