Laravel5の言語設定での迷走

関連URL
[MAMPにLaravel5を使える環境を作ってみる](http://qiita.com/tagosaku324/items/0c51a400e0402b6ca2ad)
[MAMPにLaravel5を使える環境を作ってみる~DB設定編~](http://qiita.com/tagosaku324/items/3974ce60a181fc528236)
[Laravel5でFORMの作成](http://qiita.com/tagosaku324/items/c538c905ce1f7be745e4)


自分環境のブラウザアクセス
http://pj_laravel5.dev:8888/

ずっと気になっていたこと。
ソースのlang='en' は手動でjaに変えていいものなのか？
日本語化設定といわれる何かをすれば変わるものなのか？

##現状
views/ にUI用のHTML言語でかかれたphpファイルがあります。
例えばwelcomeページ
migrateを実行しているとインストール直後のwelcomeページとは変わりますが、全体のレイアウト部分が読み込まれるようになります。

```:resources/views/welcome.blade.php
@extends('layouts.app')

@section('content')
<div class="container spark-screen">
    <div class="row">
        <div class="col-md-10 col-md-offset-1">
            <div class="panel panel-default">
                <div class="panel-heading">Welcome</div>

                <div class="panel-body">
                    Your Application's Landing Page.
                </div>
            </div>
        </div>
    </div>
</div>
@endsection
```
@extends('layouts.app')　が全体のレイアウトのようで、この実態は
 resources/views/layouts/app.blade.php みたいです。
ブラウザのソースをみると、lang='en' となっています。
![スクリーンショット 2016-01-13 14.46.53.png](https://qiita-image-store.s3.amazonaws.com/0/39911/7cd320a5-1263-cfb6-84f9-ab6e76438ecd.png)

##日本語化１
環境設定として config/app.php のファイルの言語設定を 'locale' => 'ja',にする。
単純にここを変えてもlang='en' のままです。
この環境設定はエラーメッセージなどの言語設定をしている場所　resources/lang/　配下の読み出し順番としての設定っぽいです。
[Laravel 5.1 多言語化](http://readouble.com/laravel/5/1/ja/localization.html)に書いてありました。

エラーメッセージを日本語化するには
[初めてのLARAVEL 5.1 : (19) エラーメッセージの日本語化](https://laravel10.wordpress.com/2015/03/11/%E5%88%9D%E3%82%81%E3%81%A6%E3%81%AElaravel-5-19-%E3%82%A8%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%81%AE%E6%97%A5%E6%9C%AC%E8%AA%9E%E5%8C%96/)
を参照してください。
ここにも「初めは日本語のファイルは存在しないので、英語のファイルをコピーして作成します」とある通り、lang/ja が初期状態だとないですね。
jaフォルダがあればconfig/app.phpのlocaleをjaに変えていれば、enより先にjaフォルダ内を見に来てくれるようです。

で、これを実行してみてからブラウザのソースをみてみますが、
（わかっていたけど）lang='en' のままです。


##日本語化2
日本語化のライブラリ：laravel-ja/comja5 を適応する。
[laravel-ja/comja5のGithub](https://github.com/laravel-ja/comja5)

インストールで展開されたスクリプトファイル中のコメントは英字です。
それを日本語化してくれるものらしいです。
composer.jsonのある場所でcomposerをします。
私の環境ではMAMPのbinの下にcomposer.pharのまま置いてあるのでそれを実行しています。
進め方はreadmeに記載通りに。。

```:プロジェクト直下
$ ../../bin/composer.phar require laravel-ja/comja5
Using version ^1.0 for laravel-ja/comja5
./composer.json has been updated
> php artisan clear-compiled
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing laravelcollective/html (v5.2)
    Downloading: 100%         

  - Installing laravel-ja/comja5 (1.0.15)
    Downloading: 100%         

Writing lock file
Generating autoload files
> php artisan optimize
Generating optimized class loader
$ ls vendor/bin/
comja5		php-parse	phpunit		psysh
$ vendor/bin/comja5 -f    <-これでresources/lang/ja にファイルができました。
$ vendor/bin/comja5 -a    <-スクリプトファイルの中が翻訳されました。 
```
コメント部分翻訳やら、タブスペースの変換やらのオプションが多数ありますが、-aだけでいいみたいですね。
コメントの翻訳はちょっと不思議な感じに書かれているところもありました。。
また、migrateした時につくられたユーザ管理関係のサンプルファイルたちも日本語に置き換わっていました。

```:composer.jsonに追記されていること
11         "laravel-ja/comja5": "^1.0"
```
~~追記されているところを削除しておくほうがいいらしいです。
とりあえず、自分はコメントにしておきました。。~~

追記の場所は削除しておきましょう！
下手に残しておくと思わぬエラーに見舞われます。
私の場合はただの文法エラーでしたが。。

```:ひとつ前の記述に[,]が残っていたとか                       
  [Seld\JsonLint\ParsingException]                                  
  "./composer.json" does not contain valid JSON                     
  Parse error on line 10:                                           
  ...ive/html": "5.2.*",//        "laravel-j                        
  ---------------------^                                            
  Expected: 'STRING' - It appears you have an extra trailing comma
```                                                                
```:コメントの記号が間違っているとか
 [Seld\JsonLint\ParsingException]               
  "./composer.json" does not contain valid JSON  
  Parse error on line 10:                        
  ...tive/html": "5.2.*"//        "laravel-j     
  ---------------------^                         
  Expected one of: 'EOF', '}', ':', ',', ']'  
```

で、これを実行してみてからブラウザのソースをみてみますが、
（わかっていたけど）lang='en' のままです。

##結論
~~結局は、 resources/views/layouts/app.blade.php　を書き換えろってことですね。
既存のファイルはあくまでも参考。
app.blade.phpのファイルを書き換えれば@extends('layouts.app')を記載で自分レイアウトが作れるようです。~~

どうやら間違っていたようです。
migrate だけで実行したときにユーザー認証のプログラムが自動生成されましたが、resources/views/layouts/app.blade.php はその時につくられたようです。[参考](http://qiita.com/tagosaku324/items/3974ce60a181fc528236#%E3%81%A1%E3%82%87%E3%81%A3%E3%81%A8%E8%84%B1%E7%B7%9A)
migrate していなければ作られていないようなので、レイアウト変えるのは migrate してからですかね。。
migrate せずにデータベースを使うとうことはなさそうなので。。。

別記事：Laravel5のマイグレーションでの迷走