Laravelの多言語関数でエラー:array_replace_recursive(): Argument #2 must be of type array, int given

Laravel
※当サイトはアフィリエイト広告を掲載しています。

今回は、とてもつまらないことでちょっとだけ無駄に時間を消費したので、恥さらしに書きます。

Laravelの多言語サイトを作る際、__()メソッドを使うと思いますが、array_replace_recursive(): Argument #2 must be of type array, int givenというエラーが出てしまう事態に陥りました。

エラーが出ているのは次のLaravel内のファイルです。vendor\laravel\framework\src\Illuminate\Translation\FileLoader.php : 129

これらのキーワードで検索しても出てこなかったので、同じ経験をしている人は少ないのかもしれませんが、1人でも役に立てば幸いです。

結論:言語ファイルで配列返してないですよ!

結論から言えばそういうことです。

例えば/lang/en/message.phpというファイルがあったとします。私の場合はこんなでした。

return [
    'welcome' => 'Welcome to our first multilingual site!',
];

よく考えれば当たり前なダメコードです。……え?普通に見える?

<?php抜けとる!

<?php
return [
    'welcome' => 'Welcome to our first multilingual site!',
];

初心者かよ!と思うような清々しいミスをしたフリーランス20年の私(二日酔い中)です。

Lara
Lara

コードは絶対間違えてないという思い込み、怖いですよね。。

いらないと思うけど解説

本件が発生した理由を、自戒の念を込めて書きます。

ChatGPTは<?phpを入れてくれない

最近はChatGPTと協力してコードを書くことが増えました。出力されたコードは手直しすればかなり使えるからです。

……が、ChatGPTは基本的に<?phpを省略するんですよね。

ChatGPTのコードでエラーは出ない(はず)

コードの中身自体は、100%と言って良いほど動作するコードを出力してくれます。

そのためChatGPTが作ったコードでエラーは出ない。そんな思い込みがあったことが、今回は裏目に出ました。

新規にファイルを作り丸々コピーするような用途では、今後注意が必要そうです。

普段は丸々コピーはしませんが、今回は多言語のテストだったためです。

まとめ

昨日は土曜日だったので飲み過ぎ→二日酔いが酷くて頭が働いてませんでした(言い訳)。

こんな日は効率が悪いので、プログラミングはせずにYoutubeかプライムビデオでも見るに限ります。。

コメント

タイトルとURLをコピーしました