1

JQueryUI datepickerでフランス語/英語のローカリゼーションを表示しようとしていますが、簡体字中国語のみが表示されています。私は何が間違っているのですか?

ありがとう

<html>
<head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/i18n/jquery-ui-i18n.min.js"></script>
    <link type="text/css" rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/themes/ui-lightness/jquery-ui.css" />
    <script>
        $(document).ready(function () {
            $('#datepicker').datepicker();
            $.datepicker.setDefaults($.datepicker.regional['fr-FR']);
            $('#datepicker').datepicker($.datepicker.regional['fr-FR']);                
        });
    </script>
</head>

<body>
    <label for="datepicker">Date: </label>
    <input type="text" id="datepicker" />
</body>
</html>
4

3 に答える 3

5

Datepickerドキュメント(ローカリゼーション)

Datepickerは、さまざまな言語と日付形式に対応するためにコンテンツをローカライズするためのサポートを提供します。各ローカリゼーションは、名前に言語コードが追加された独自のファイルに含まれています。たとえば、フランス語の場合はjquery.ui.datepicker-fr.jsです。目的のローカリゼーションファイルは、メインの日付ピッカーコードの後に​​含める必要があります。使用可能なローカリゼーションのセットに設定を追加し、すべてのインスタンスのデフォルトとして自動的に適用します。

(正しいローカリゼーションファイルを含める必要があります)

<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/i18n/jquery.ui.datepicker-fr.min.js"></script>

次に変更します。

$.datepicker.setDefaults($.datepicker.regional['fr-FR']);

に:

$.datepicker.setDefaults($.datepicker.regional['fr']);

于 2012-04-13T08:46:10.463 に答える
3

日付ピッカーのjQueryUIスクリプトの名前付け(またはローカリゼーションの欠如)に問題があります。たとえば、ブラウザ言語またはサーバー側から特定のカルチャ「fr-FR」を取得する可能性がありますが、「リージョン」名には、フォールバックカルチャごとの特定のエントリは含まれていません。たとえば、「fr」は「」からのマッピングではありません。 fr-FR"を"fr"に戻します。

完全なjquery-ui-i18n.jsスクリプト(たとえば、NuGetで「jQuery.UI.i18n」として利用可能)を含めてから、サポートされていないときにフォールバックとデフォルトを導入する1つのグローバルヘルパー関数を作成することをお勧めします(つまり、英語の米国の場合は「」を使用します中国語が表示される「undefined」を返すのではなく、見つかりません)。

例:この関数をサイト/ページに追加します。

/// <summary>
///同等の日付ピッカー"region"(ローカリゼーション名)を取得します ///
フォールバックのあるISOローカリゼーション名の場合
///例:"de-DE"は"de"、enまたはen-USがデフォルトです。
///サポートされていないカルチャはデフォルト(英語US)を返します。
/// </ summary>
///<remarks>///「jquery-ui-i18n.js
」結合ライブラリまたは個々のリージョンスクリプトがロードされていることを前提としています。
/// </ summary>
function GetDatePickerRegion(locale){
    
    //リージョンを直接(同じ名前で)取得しようとします
    var region = $ .datepicker.regional [locale];
    if(region!= undefined)
        return region;
    
    //リージョン固有の場合のフォールバック(例:
    if(locale.length> 2){
        region = $ .datepicker.regional [locale.substring(0、2)];
        if(region!= undefined)
            return region;
    }
    
    //デフォルトのリージョンを返す
    region=$ .datepicker.regional [""];
    リターンリージョン;
}

次に、初期化中に次のように呼び出します。

    //それに応じてjQueryカルチャを設定
    しますvardatePickerRegion= GetDatePickerRegion(browserLanguage);
    $ .datepicker.setDefaults(datePickerRegion);

また、ブラウザ、サーバー、クライアントスクリプト間で言語を保存して渡す方法も重要です。ブラウザ言語のサーバー側を検出し、Cookieやサーバーデータベースでオーバーライド/永続化できるようにすることで、HTTPおよびHTML標準に厳密に従っていると感じるものを好みますが、最も重要なのは、それを元に戻し、を使用してドキュメントに永続化することです。 「lang」属性:

    //サーバーが発行したメタタグからブラウザの言語設定を取得します。
    //言語のオーバーライドと永続性を許可するには、サーバーがCookieを使用して設定する必要があります。
    var browserLanguage = $( "\ html")。attr( "lang");
    if(!browserLanguage)
        browserLanguage = "en-US"; //指定されていない場合はデフォルトを使用します

将来的に行う必要があるのは、jQuery UIパッケージを更新するか、独自の翻訳を追加することだけです(これは同じルーチンで機能します)。HTMLの「lang」属性は検索エンジン最適化にも役立ちます(コンテンツが日付ピッカーだけでなく実際にローカライズされていると仮定します)。

于 2013-08-20T12:07:54.343 に答える
0

あなたはこのようにする必要があります:

 $.datepicker.regional['fr'] = {clearText: 'Effacer', clearStatus: '',
    closeText: 'Fermer', closeStatus: 'Fermer sans modifier',
    prevText: '<Préc', prevStatus: 'Voir le mois précédent',
    nextText: 'Suiv>', nextStatus: 'Voir le mois suivant',
    currentText: 'Courant', currentStatus: 'Voir le mois courant',
    monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin',
    'Juillet','Août','Septembre','Octobre','Novembre','Décembre'],
    monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun',
    'Jul','Aoû','Sep','Oct','Nov','Déc'],
    monthStatus: 'Voir un autre mois', yearStatus: 'Voir un autre année',
    weekHeader: 'Sm', weekStatus: '',
    dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],
    dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],
    dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'],
    dayStatus: 'Utiliser DD comme premier jour de la semaine', dateStatus: 'Choisir le DD, MM d',
    dateFormat: 'dd/mm/yy', firstDay: 0, 
    initStatus: 'Choisir la date', isRTL: false};
 $.datepicker.setDefaults($.datepicker.regional['fr']);
于 2012-04-23T07:36:14.887 に答える