Wikipedia:井戸端/subj/Luaエラーについて
表示
< Wikipedia:井戸端 | subj
|
Luaエラーについて
[編集]英語版にあるテンプレートを導入しようとTemplate:Sports links(ウィキデータから外部リンクを呼び出すテンプレートです)を作成したのですがLua エラーになってしまいました。モジュール:External links、モジュール:External links/conf、モジュール:External links/conf/Sportsを英語版の最新版からそのままコピーして作成しました。英語版ではエラーにはなっていません。理由がわかる方教えていただけないでしょうか。--Rain night 2018年6月2日 (土) 23:48 (UTC)
Lua エラー モジュール:External_links/conf 内、28 行目: attempt to index field 'messages' (a nil value)
バックトレース:
- 1 モジュール:External_links/conf:28: 関数「g」内
- 2 モジュール:External_links:831: 関数「chunk」内
- 3 mw.lua:511: ?
- 4 [C]: ?
- コメント モジュール:External_links/conf 内の2行目が messages['en'] = { になってるのが問題とか。日本語版なので「'ja'」でないとダメとか。--Challemoni(会話) 2018年6月3日 (日) 00:16 (UTC)
- jaにしてみたのですがエラーメッセージが変わっただけです。モジュールのソースに詳しい方助けてください。--Rain night 2018年6月3日 (日) 00:38 (UTC)
Lua エラー モジュール:External_links 内、812 行目: bad argument #1 to 'ipairs' (table expected, got nil)
- コメント モジュール:External links/conf/Sports も直しておきました。--Challemoni(会話) 2018年6月3日 (日) 01:10 (UTC)
- エラーメッセージが消えたことを確認しました。ありがとうございます。リンク元を修正し、まだ日本語版にないものにはTemplate:仮リンクを入れてみたのですが、うまく表示されてないようです。仮リンクは使えないのでしょうか。仮リンクを表示する方法はないでしょうか。--Rain night 2018年6月3日 (日) 02:36 (UTC)
- 返信 モジュール:External links/conf 内の16行目を ['arg-short'] = '', にしてみては?、違ったらごめんなさい。--Challemoni(会話) 2018年6月3日 (日) 03:30 (UTC)
- ['arg-short'] = '', してイザベル・ワースに入れてみたのですが、上手く表示されません。仮リンクを表示させるのが難しいようなら除去しますが直せないでしょうか。--Rain night 2018年6月3日 (日) 05:11 (UTC)
- コメント モジュール:External_links/conf/Sportsが原因のように思います。Luaモジュール内で既存テンプレートを
{{仮リンク|云々}}
の形で呼び出すことはできませんので、仮リンクの部分をframe:expandTemplate{ title = '仮リンク', args = { hogehoge } }
またはframe:preprocess( '{{仮リンク|云々}}' )
と書くと動くんじゃないかなあ、と思います。--Nami-ja (会話 / 履歴) 2018年6月3日 (日) 06:04 (UTC)
→詳細は「mw:Extension:Scribunto/Lua_reference_manual § frame:expandTemplate」、および「mw:Extension:Scribunto/Lua_reference_manual § frame:preprocess」を参照
- コメント よくわからないのでモジュールを直接修正していただけないでしょうか。自分ですればさらに壊してしまいそうです。モジュール:Twitterも追跡カテゴリを入れたいのですが、どこを修正すればいいかわかりません。Wikipedia:バグの報告#Template:Twitterの追跡カテゴリで質問したのですが反応はありません。モジュールは複雑でわからないことが多く、修正について相談出来る場所があるといいのですが。--Rain night 2018年6月3日 (日) 08:17 (UTC)
- ふと思ったのはLuaで生成する場合、仮リンクは使わない(内部リンク(言語)の直記述)方がいいような気がします。リンク作成された後、作業が異なるため言語リンクだけ消えた状態のままとなりかねないので明示的にリンク作成後も言語リンクは残した方がベターではないでしょうか。--115.38.210.107 2018年6月3日 (日) 20:39 (UTC)
- 2-3バイト文字を使用する他言語版の同モジュールが参考になるのではないかと思いましたが、IPさんのおっしゃる通り、他言語版では仮リンク自体が使用されておらず直リンク生成で対処されていますね(no:Modul:External links/conf/Sport(ノルウェー語版)、ar:External_links/conf/Sports(アラビア語版) / 本家英語版でもen:Template:Interlanguage link(Template:仮リンク)が存在するけど敢えて使用されていない)。「他言語版から持ち込みで、モジュール作成者自身が内部引数の動きがよく解っていない」という前提ですから今後英語版が改訂更新されるたびに同種問題が発生する懸念を考えますと「日本語版独自仕様を諦めて他言語版の表記に合わせた方が良い」とも思います。 / 一応、モジュール関係の相談事はPJ:WTECHの範疇になるようです(プロジェクト‐ノート:ウィキ技術部)。--Nami-ja (会話 / 履歴) 2018年6月3日 (日) 22:24 (UTC)
- 追記 Luaモジュールからテンプレートを呼び出すと処理速度が(テンプレート呼び出し・実行速度に依存して)落ちる、という既知の問題がありますので他言語版のLuaモジュールが一様に仮リンクテンプレートを使用していないのはそれを嫌った結果ではないかな、と個人的には思います。--Nami-ja (会話 / 履歴) 2018年6月3日 (日) 23:41 (UTC)
- 仮リンクは全て除去しました。これで問題はないでしょうか。このテンプレートを導入したかったのは外部リンクサイトが消滅して多くのリンク切れが発生していたからです。ウェブキャッシュに置き換えられていたのもありましたが、変わりになるプロフィールがあれば変更したほうがいいと思いました。6000件以上で使用しているTemplate:SportsReferenceがあるのですが、このサイトが閉鎖するかもしれないので[1]、このテンプレートに置き換えようと考えています。リンク切れの修正や追加もやりやすいと思います。外部リンクのプロフィールはテンプレート呼び出しにして、多くの記事で使用されていてウィキデータにない場合はプロパティの追加を依頼してほしいです。--Rain night 2018年6月9日 (土) 01:48 (UTC)
テンプレの張替えが始まってるようですが、従来のテンプレと併用するかとかの運用方法とかはどんな感じなんでしょうか。既存のテンプレの置換えがでてくるので、スポーツのプロジェクトとかへの周知、合意のあとに実運用はお願いします。Template‐ノート:Sports linksにコメントしておきました。--115.38.210.107 2018年6月9日 (土) 11:59 (UTC)