3

システムプラグイン(Joomla 2.5)のインストール中に、ローカライズされた文字列を表示するのに非常に苦労しています。xmlファイルにローカライズされた文字列を使用する「通常の」方法は機能していないようです(この他の質問:言語ベースのインストールの説明を参照してください)。

ここで提案されている方法を試して、インストールスクリプトを介して説明を表示しました。この種の動作(テキストを正常にエコーできます)、ただし、そこにローカライズすることもできません。言語をデバッグすると、plugin.sys.iniがまだロードされていないことが示されます。ファイルを手動でロードしようとしましたが、プラグイン言語ファイルをロードできませんでした。これは私がこれまでに得たものです(setupscripts.phpという名前のファイルで):

<?php // no direct access
defined('_JEXEC') or die('Restricted access');

class plgsystemmyplgnameInstallerScript {

    static function loadLanguage() {
        $lang =& JFactory::getLanguage();
        $lang->load('plg_system_myname', JPATH_ADMINISTRATOR);
    }

    function install($parent)
    {
        self::loadLanguage();
        echo JTEXT::_("PLG_MYNAME_TEST_TEXT");
    }
    function uninstall($parent)
    {
        self::loadLanguage();
        echo JText::_('PLG_MYNAME_UNINSTALL_TEXT');
    }
    function update($parent)
    {
        self::loadLanguage();
        echo JText::_('PLG_MYNAME_UPDATE_TEXT');
    }
    function preflight($type, $parent) {}
    function postflight($type, $parent) {
        self::loadLanguage();
        echo JText::_('PLG_MYNAME_INSTALL_TEXT');
    }
}

しかし、私は??PLG_MYNAME_TEST_TEXT??しか取得しません ?? PLG_MYNAME_INSTALL_TEXT ?? (言語デバッグがオンになっている)インストール中...奇妙なことに、ページ下部の「未翻訳の文字列」の下にある言語デバッグ機能には「なし」と表示されます(試行されたが失敗した場合は疑問符が表示されます)翻訳???)。

それのいくつかのバリエーションを試しました(プラグイン名の最後に.sysを付けて、セットアップ文字列は2番目のパラメーターなしで.sys.iniファイルにあるべきだと実際に思っているので(デフォルトのまま)、運がない-エラーはありません、ログには何もありません(実際、私のログファイルは存在しません。おそらくまだエントリがありませんか?Joomlaでログレベルを設定できますか?)しかし、ファイルがロードされることはありません(「ロードされた言語ファイル」では何も変更されません) 。

言語を正しくロードする方法を知っている人はいますか?

セットアップ中に言語をロードするときに考慮すべき特別なことはありますか?言語の読み込みに失敗してもエラーメッセージが表示されないのはなぜですか?インストール中に言語ファイルを認識させるために、言語ファイルを特別な場所にインストールする必要がありますか?私の現在のxmlは次のようになります:

<extension version="2.5" type="plugin" group="system" method="upgrade">
<name>PLG_MYNAME</name>
<!-- ... author, copyright, version, .. --> 
<scriptfile>setupscripts.php</scriptfile>
<files>
    <filename plugin="myname">myname.php</filename>
    <filename>setupscripts.php</filename>
    <filename>index.html</filename>
    <folder>sql</folder>
</files>
<!-- ... install->sql->file ... -->
<!-- ... uninstall->sql->file ... -->
<!-- ... update->schemas->schemapath ... -->
<languages [folder="admin"]>
   <language tag="en-GB">en-GB.plg_system_myname.ini</language>
   <language tag="en-GB">en-GB.plg_system_myname.sys.ini</language>
   <!-- ... other languages ... -->
</languages>
<!-- ... config->fields->fieldset->field ... -->
</extension>

(folder = "admin"の周りの四角い括弧は、この属性がある場合とない場合の両方を試したことを示しているはずです。何も変更されません)。

4

2 に答える 2

3

ファイルを管理言語フォルダーにもコピーした場合にのみ、インストール時に機能します。コア拡張機能を見ると、両方を実行していることがわかります。これは本当にバグですが、それが回避策です。

于 2013-01-06T21:03:11.627 に答える
1

ついに私はそれを実際に行う方法を見つけました。google Joomla devグループで徹底的に検索すると、この非常によく似た質問が出てきました。

基本的に、言語ファイルは別の言語フォルダにあるように見える必要があり、ファイルセクションもそれらを参照する必要があります。私のxmlは次のようになります:

<!-- ... everything else stayed the same, except: -->
<files>
    <filename plugin="myplg">myplg.php</filename>
    <filename>index.html</filename>
    <folder>language</folder>
    <folder>sql</folder>
</files>
<languages folder="language">
        <language tag="en-GB">en-GB/en-GB.plg_system_myplg.ini</language>
        <language tag="en-GB">en-GB/en-GB.plg_system_myplg.sys.ini</language>
        <!-- .. other languages ... ->
</languages>
<!-- ... rest of the xml file ... -->

言語ファイルはすべて別々のサブフォルダーにあります...以前とまったく同じ場所(administrator / language // ...)にコピーされますが、XMLからの説明もローカライズされています!

言語ファイルを指定する方法がたくさんあるのは非常に奇妙だと思います。これらはすべて、インストールの1つのコーナーケースを除いて基本的に機能します...

これが他の人々がこれに苦しんでいるのを助けることを願っています!

于 2013-01-13T20:33:27.670 に答える