JavaScript内で言語変数を管理する方法は?


8

私のカスタムコンポーネントでは、各ビューに対して多くのJavaScript検証を行います。検証によりさまざまなエラーメッセージがスローされ、それらのメッセージは言語ファイルen-GB.com_mycomp.ini内で構成され、JavaScriptインクルードを以下のようにPHPファイル内に記述します。

view.html.php

require_once JPATH_COMPONENT.'/views/send/tmpl/validation.php';

validation.php

function doValidation(){
  // do some checking
  alert("<?php echo JText::_( 'VALIDATION_ERROR'); ?>");
}

これにより、JavaScriptコードがPHPファイルとともにレンダリングされます。

私が考えていたのは、標準$document->addScript(...)関数を使用して、.jsファイルがヘッダーの一部としてロードされるようにすることです。インラインPHPステートメントを取得したので、そのようにすることはできません。

注:コンポーネントは言語に依存しないため、.jsファイル内のエラーメッセージをハードコーディングしたくありません。

言語固有の値を持つJavaScriptコードをインクルードする最良の方法に関するいくつかの指示が必要です。

回答:


12

Joomlaはこれのための特定の方法を持っています。最初に、view.html.phpすべての文字列を追加します。これで翻訳する必要があるもの:

JText::script('VALIDATION_ERROR');

これにより、文字列がjavascriptオブジェクトに追加され、後で使用できるようになります。

そしてJavaScriptでは、次を使用します:

Joomla.JText._('VALIDATION_ERROR')

現在の言語で一致する翻訳を提供します。これにより、JSとPHPを別々のファイルに保存できます。


これJText::script('VALIDATION_ERROR');view.html.phpファイルのどこに追加するのですか?
ankit suthar

@ankitsutharはい、view.html.phpで問題ありません。
Rene Korss

@ankitsutharファイル内の場所を意味する場合は、表示メソッドの内部。
Rene Korss
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.