EC-CUBE4を日本語以外で使う

# EC-CUBE4で多言語に対応できる様になりました
<img width="1305" alt="スクリーンショット 2018-10-03 19.19.08.png" src="https://qiita-image-store.s3.amazonaws.com/0/5743/bb4b8ede-4f35-6dff-f479-a3e093d0b662.png">
<img width="1187" alt="スクリーンショット 2018-10-03 19.18.24.png" src="https://qiita-image-store.s3.amazonaws.com/0/5743/b2863849-49a7-f731-8817-d5659b98a40b.png">

新しいバージョンのEC-CUBE、EC-CUBE Ver.4では日本語以外の言語に対応できる様になりました。
そのため、テンプレート等には日本語は記述されておらず、日本語のメッセージも全て言語ファイルにまとめられています。

- `/src/Eccube/Resource/locale/messages.ja.yaml`
- `/src/Eccube/Resource/locale/validation.ja.yaml`

## 言語ファイル
原語ファイルは`messages.[lang].yaml`と`validation.[lang].yaml`というファイルに分かれており、yaml形式でメッセージIDとメッセージが記述されています。もし、標準の日本語の表記を変えたかったら、`messages.ja.yaml`を変えると変更できます。
英語版では、`messages.en.yaml`とかになる感じです。

```yaml:messages.ja.yaml
#====================================================================================
# 共通
#====================================================================================

common.select: 選択してください
common.select__pref: 都道府県を選択
common.select__unspecified: 指定なし
common.select__all_products: 全ての商品
common.required: 必須
common.back: 戻る
common.close: 閉じる
common.send: 送信する
common.registration: 登録する
common.change: 変更
common.delete: 削除
common.ok: OK
common.cancel: キャンセル
common.go_to_top: トップページへ
common.go_to_cart: カートへ進む
common.go_to_confirm: 確認ページへ
...
```

```yaml:messages.en.yaml
#====================================================================================
# Common
#====================================================================================

common.select: Please select
common.select__pref: Select prefecture
common.select__unspecified: Unspecified
common.select__all_products: All Products
common.required: Required
common.back: Go back
common.close: Close
common.send: Submit
common.registration: Save
common.change: Change
common.delete: Delete
common.ok: OK
common.cancel: Cancel
common.go_to_top: Back to Home
common.go_to_cart: Proceed to Cart
common.go_to_confirm: Review
...
```

# 日本語以外での利用方法
EC-CUBEの多言語周りの設定はEC-CUBEのルートディレクトリにある`.env`ファイルで設定します。

```bash:.env
ECCUBE_LOCALE=en #言語設定
ECCUBE_TIMEZONE=Asia/Tokyo #タイムゾーン
ECCUBE_CURRENCY=USD #利用する通貨
```
`ECCUBE_LOCALE`が言語設定です。標準では`ja`が利用されます。

## UIの言語設定
たとえばEC-CUBE4を英語で利用するためには、上記の`.env`ファイルで言語設定を`en`にして、`/src/Eccube/Resource/locale/`配下に`messages.en.yaml`と`validation.ja.yaml`を作成します。
これらのファイルに英語のメッセージをyaml形式で記述していけば表示が英語になります。

## コンテンツ等インストールデータの言語設定
ただ、言語ファイルだけではDBの中に入っている内容までは翻訳されません。受注ステータスとか主にマスタ系のデータですね。
これらのデータを英語で利用するためには、インストール段階で英語の初期データをインストールする必要があります。
~~現状では https://github.com/EC-CUBE/ec-cube/pull/3868 のコミット内容を適用して、`.env.install`に`ECCUBE_LOCALE=en`を追記した状態でインストールすると英語版の初期データでインストールされます。なお、このプルリクエストには、`messages.en.yaml`も含まれています。~~Ver. 4.0.1以降では配布パッケージに英語の言語ファイル等含まれています。
この場合、各言語ごとの初期データは`/src/Eccube/Resource/doctrine/import_csv/`配下にCSV形式であります。
なお、EC-CUBEの公式サイトで配布されているパッケージのテンプレートはこの他言語に対応していません。githubから落とした物を使う必要があります。

# 現状では1言語のみの対応
現状の仕様では、ひとつのEC-CUBE4のインストールで、複数の言語に対応する様にはなっていません。追加で英語版のECサイトが欲しくなった時に、別で立てるとか、日本で運営するけど海外向けに販売したい時なんかに使う用です。
管理画面とショップフロントで言語を分けたい、ユーザ毎に言語をわけたいとなると、別途カスタマイズが必要になってきます。
## 本格的な多言語対応のためにはもう一声
上記の設定で表示は英語になりますが、例えばユーザ登録フォームに「フリガナ」のフィールドがあったり、都道府県の選択肢が日本の都道府県になっていたりと、日本以外に対して販売する越境ECをやろうとすると、もう一声という状態です。
<img width="706" alt="スクリーンショット 2018-10-03 19.45.03.png" src="https://qiita-image-store.s3.amazonaws.com/0/5743/9a23d38c-604c-e7a7-3f17-2adbb350c366.png">

今後、バージョンが上がっていくに従い対応されたり、プラグインで対応されていくことになると思います。

ご質問等あればEC-CUBEの各ユーザグループの勉強会に行くとか、githubや開発コミュニテイに質問するとか、弊社まで[お問い合わせ](https://www.xross-cube.com/contact/)ください。
あと、「ここの翻訳変だよ！」とか、「中国語版作ってみたよ！」とかも大歓迎なのでお待ちしております。（方言版も作れます）