今回は、とてもつまらないことでちょっとだけ無駄に時間を消費したので、恥さらしに書きます。
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年の私(二日酔い中)です。
コードは絶対間違えてないという思い込み、怖いですよね。。
いらないと思うけど解説
本件が発生した理由を、自戒の念を込めて書きます。
ChatGPTは<?phpを入れてくれない
最近はChatGPTと協力してコードを書くことが増えました。出力されたコードは手直しすればかなり使えるからです。
……が、ChatGPTは基本的に<?phpを省略するんですよね。
ChatGPTのコードでエラーは出ない(はず)
コードの中身自体は、100%と言って良いほど動作するコードを出力してくれます。
そのためChatGPTが作ったコードでエラーは出ない。そんな思い込みがあったことが、今回は裏目に出ました。
新規にファイルを作り丸々コピーするような用途では、今後注意が必要そうです。
まとめ
昨日は土曜日だったので飲み過ぎ→二日酔いが酷くて頭が働いてませんでした(言い訳)。
こんな日は効率が悪いので、プログラミングはせずにYoutubeかプライムビデオでも見るに限ります。。
コメント