文字列の非推奨化 (Dev docs)

提供:MoodleDocs
移動先:案内検索
重要:

このページの内容は更新され、新しいMoodle Developer Resourcesに移行されました。このページに含まれる情報は、もはや最新であるとみなされるべきではありません。

このページを新サイトで閲覧する そして より多くのコンテンツを新サイトに移行するために協力する というのはいかがでしょうか!

String deprecation
Project state Implemented
Tracker issue MDL-46585
Discussion
Assignee Marina Glancy

Moodle 2.8


使用されていない文字列の削除

Moodle 2.8以降では、関数が非推奨になるのと非常に似た方法で、文字列を非推奨にすることができます。この機能により、使用されていないことが合理的に確信できるまで安全に文字列を削除することができます。このプロセスにより、不要な文字列が言語パックから削除され、翻訳者がそれらを翻訳するために貴重な時間を浪費することがなくなります。また、どこかでまだ使用されている文字列を誤って削除することからも保護されます。


動作方法

非推奨の文字列のリストが含まれるファイルがあります。非推奨の文字列が使用されると(通常は

get_string()

呼び出しを介して)、次のような警告メッセージが表示されます。

   String [identifier,component] is deprecated. Either you should no longer be using that string, 
   or the string has been incorrectly deprecated, in which case you should report this as a bug. 
   Please refer to https://docs.moodle.org/dev/String_deprecation

この警告は、DEBUG_DEVELOPERレベルのみで表示されることに注意してください(これはMoodle開発者が選択する必要があるものです)。このメッセージが表示された場合の対処方法については、以下を参照してください。

なぜ文字列を廃止する必要があり、いつ廃止すべきか?

最も一般的なケースは、ある文字列が標準の Moodle コードで使用されなくなったことがわかった場合です。おそらく、Moodle 全体を検索して文字列識別子を探し、関連するのは文字列定義自体だけだとわかるでしょう。標準の Moodle コードで使用されなくなったと思われる文字列でも、いくつかの追加の(貢献された)プラグインが依存している可能性があります。これは、"Yes"、"Continue"、"Hidden" などの moodle.php(コア)コンポーネントによって提供される意味的に一般的な文字列について典型的です。

注意しておくべきことは、文字列の識別子だけを検索すると、場合によっては誤った結果につながることがあるということです。仮に、ある文字列識別子 "actionloginremote" が実際に使われていないという疑いがあったとします。しかし、次のような場所がある可能性があります。

$action = optional_param('action', 'loginremote', PARAM_ALPHA);
print_string('action'.$action);

これらは検出が難しい場合があります。したがって、単に文字列 "actionloginremote" を削除する代わりに、非推奨文字列のリストに追加します。

別のシナリオでは、意味的に同じ文字列が2回定義されたり、間違ったコンポーネントに配置された場合があります。間違った場所(コンポーネント)に依存する場所があると思われる場合は、それを非推奨にする必要があります。文字列を新しい場所にコピーします(すべての既存の翻訳に変更を再生するためにAMOSのCPY命令を使用することを忘れないでください)そして古いものを非推奨にします。

また、いくつかの文字列は曖昧に定義され、明確で独自の文脈/意味を持っていない場合があります。理想的には、Moodleのコードは、すべての場合をカバーする1つの一般的な文字列に頼るのではなく、文脈に応じた文字列を使用するべきです。文法的な性別 などのものは、多くの言語で重要な役割を果たしています。たとえば、チェコ語では、"役割" や "質問" は女性の性別であり、"隠された" の正しい翻訳は "skrytá" であり、一方、"バッジ" は男性の性別であり、"skrytý" が正しい翻訳です。ですので、"hiddenrole"、"hiddenquestion"、"hiddenbadge" のように別々の文字列を持っている方がよいでしょう。英語の言語パックではすべて "Hidden" になっている場合でも、です。既存の文字列をいくつかの特定の文字列に分割する場合は、最後に一般的な文字列を廃止することを検討することも必要です(また、CPYを再度使用することを忘れないでください)。

文字列を削除するタイミングはいつですか?

非推奨にすることが意味を成さない場合があります。たとえば、機能全体が削除された場合や、コードで使用されなくなった非常に特定の文字列(エラーメッセージなど)がある場合です。他のコードで文字列が使用されない可能性が非常に低い場合は、完全な非推奨処理なしで単に削除できます。

同じロジックは、非常に特定の文字列を移動または名前を変更する場合にも適用されます。この場合、一致する AMOScript の MOV 命令と一緒に移動するだけで有効です。

文字列の非推奨化方法

  • 文字列は、マスターブランチのみで非推奨化および削除することができます。
  • lang/en/ または componentfullpath/lang/en/ にあるファイル deprecated.txt を検索または作成してください。
  • このファイルの末尾に "identifier、fullcomponentname" という行を追加してください。
  • 既存の言語ファイル内の文字列を、
    // Moodle X.Y以降非推奨化
    
    というコメントの下にあるファイルの末尾に移動してください(このコメントは後で非推奨化された文字列を削除するのに役立ちます)。
  • 最終的な非推奨化(4つのメジャーバージョン後)では、deprecated.txt と対応する言語ファイルの両方から文字列を削除してください。

注:lang/en/xxxx.php からコアの文字列を非推奨化する場合、fullcomponentname は "core_xxxx" である必要があります。ただし、fullcomponentname "core" を持つ lang/en/moodle.php を除きます。

注:Moodle 3.0 以前は、最終的な非推奨化は2つのメジャーバージョン後でした。3.0 以降、ポリシーは4つのメジャーリリース後に切り替わりました。


en_fix が en とマージされる数週間以内に文字列を非推奨化する場合、競合が発生する可能性があるため(MDL-52315で発生したように)、注意が必要です。

デバッグメッセージが表示された場合の対処方法

2つの可能性があります。非推奨化された文字列を使用するコードを修正する必要がある場合と、文字列が非推奨化されるべきではなく、リストから削除する必要がある場合です。

対応する lang/en/deprecated.txt に git-blame ツールを使用し、文字列を非推奨化したコミット/問題を見つけてください。これにより、最適なアクションを決定するための十分な情報が得られるはずです。

  • 文字列が誤って非推奨化されたと思われる場合は、トラッカーで新しい問題を作成し、リストから削除するように指示してください(マスターだけでなく、すべてのサポートされているブランチで)。
  • 文字列が名前変更または移動された場合、呼び出し元を修正して新しい名前/場所を使用するように修正する必要があります。
  • 文脈に応じた文字列を使用するために、文字列を自分自身のプラグインスコープにコピーすることもできます。
 git blame lang/en/deprecated.txt
 git blame mod/quiz/lang/en/deprecated.txt

関連項目

  • MDL-64905 新しい文字列の導入と古い文字列の非推奨化に関するコメント