diff --git a/README.md b/README.md
index df7e1b425..2870f960b 100644
--- a/README.md
+++ b/README.md
@@ -18,6 +18,7 @@ npm run dev
### Russian
Russian translation is maintained by Translation Gang.
+
* Translation Repo — [/translation-gang/ru.docs.nuxtjs](https://github.com/translation-gang/ru.docs.nuxtjs)
* Primary maintainer - [Grigoriy Beziuk](https://gbezyuk.github.io)
* Primary translator - [Nicholas Shachmatov](https://github.com/theOnlyBoy)
@@ -25,10 +26,19 @@ Russian translation is maintained by Translation Gang.
### Chinese
Chinese translation is maintained by AOTU Labs from China, Shenzhen.
+
* Translation Repo — [/o2team/i18n-cn-nuxtjs-docs](https://github.com/o2team/i18n-cn-nuxtjs-docs)
* Primary maintainer - [AOTU Labs](https://aotu.io)
* Primary translator - [Levin Wong](http://faso.me), [Edward Chu](https://github.com/chuyik)
+### Japanese
+
+Japanese translation is maintained by INOUE Takuya.
+
+* Translation Repo — [/inouetakuya/ja.docs.nuxtjs](https://github.com/inouetakuya/ja.docs.nuxtjs)
+* Primary maintainer - [INOUE Takuya](http://blog.inouetakuya.info/)
+* Primary translator - [INOUE Takuya](https://github.com/inouetakuya)
+
### Want to help with the translation?
If you feel okay with translating sorta alone, just fork the repo, create a "work-in-progress" pull request (mark it with [WIP], see [Russian translation](https://github.com/nuxt/docs/pull/3) if you need an example) — and just go on.
diff --git a/ja/api/components-nuxt-child.md b/ja/api/components-nuxt-child.md
new file mode 100644
index 000000000..7aeab77ad
--- /dev/null
+++ b/ja/api/components-nuxt-child.md
@@ -0,0 +1,64 @@
+---
+title: "API: コンポーネント"
+description: 現在のページを表示します。
+---
+
+
+
+
+
+
+# <nuxt-child> コンポーネント
+
+
+
+> このコンポーネントは [ネストされたルート](/guide/routing#ネストされたルート) 内で子コンポーネントを表示するために使われます。
+
+
+
+例:
+
+```bash
+-| pages/
+---| parent/
+------| child.vue
+---| parent.vue
+```
+
+
+
+このファイルの木構造から次のルーティングが生成されます:
+
+```js
+[
+ {
+ path: '/parent',
+ component: '~pages/parent.vue',
+ name: 'parent',
+ children: [
+ {
+ path: 'child',
+ component: '~pages/parent/child.vue',
+ name: 'parent-child'
+ }
+ ]
+ }
+]
+```
+
+
+
+`child.vue` コンポーネントを表示するには `pages/parent.vue` 内に `` を挿入する必要があります:
+
+```html
+
+
+
I am the parent view
+
+
+
+```
+
+
+
+実際の例を見たいときは [ネストされたルートの例](/examples/nested-routes) を参照してください。
diff --git a/ja/api/components-nuxt-link.md b/ja/api/components-nuxt-link.md
new file mode 100644
index 000000000..e97961a3f
--- /dev/null
+++ b/ja/api/components-nuxt-link.md
@@ -0,0 +1,45 @@
+---
+title: "API: コンポーネント"
+description: ページ間を nuxt-link を使ってリンクさせます。
+---
+
+
+
+
+
+
+# <nuxt-link> コンポーネント
+
+
+
+ページ間を nuxt-link を使ってリンクさせます。
+
+
+
+現在のところ `` は [``](https://router.vuejs.org/en/api/router-link.html) と同じです。したがって、このコンポーネントの使い方を [vue-router のドキュメント](https://router.vuejs.org/en/api/router-link.html) で確認することをお勧めします。
+
+
+
+例(`pages/index.vue`):
+
+
+
+
+
+
+
+
+
+
+```html
+
+
+
ホーム
+ このサイトについて
+
+
+```
+
+
+
+将来においては、Nuxt.js アプリケーションの応答性を改善するためにバックグランドでプリフェッチするような機能を nuxt-link コンポーネントに追加する予定です。
diff --git a/ja/api/components-nuxt.md b/ja/api/components-nuxt.md
new file mode 100644
index 000000000..70791440d
--- /dev/null
+++ b/ja/api/components-nuxt.md
@@ -0,0 +1,33 @@
+---
+title: "API: コンポーネント"
+description: レイアウト内でページコンポーネントを表示します。
+---
+
+
+
+
+
+
+# <nuxt> コンポーネント
+
+
+
+> このコンポーネントは [レイアウト](/guide/views#レイアウト) 内でのみ、ページコンポーネントを表示するために使われます。
+
+
+
+例(`layouts/default.vue`):
+
+```html
+
+
+
My nav bar
+
+
My footer
+
+
+```
+
+
+
+実際の例を見たいときは [レイアウトの例](/examples/layouts) を参照してください。
diff --git a/ja/api/configuration-build.md b/ja/api/configuration-build.md
new file mode 100644
index 000000000..27efec16e
--- /dev/null
+++ b/ja/api/configuration-build.md
@@ -0,0 +1,368 @@
+---
+title: "API: build プロパティ"
+description: Nuxt.js ではウェブアプリケーションを自由にビルドできるよう Webpack 設定をカスタマイズできます。
+---
+
+
+
+
+
+
+# build プロパティ
+
+
+
+> Nuxt.js ではウェブアプリケーションを自由にビルドできるよう Webpack 設定をカスタマイズできます。
+
+## analyze
+
+
+
+> Nuxt.js では [webpack-bundle-analyzer](https://github.com/th0r/webpack-bundle-analyzer) を使ってバンドルファイルと最適化の仕方を視覚化できます。
+
+
+
+
+- タイプ: `ブーリアン` または `オブジェクト`
+- デフォルト: `false`
+
+
+
+オブジェクトの場合は、利用できるプロパティは [こちら](https://github.com/th0r/webpack-bundle-analyzer#as-plugin) を参照してください。
+
+
+
+例(`nuxt.config.js`):
+
+
+
+
+
+
+
+
+
+
+
+
+
+```js
+module.exports = {
+ build: {
+ analyze: true
+ // または
+ analyze: {
+ analyzerMode: 'static'
+ }
+ }
+}
+```
+
+
+
+**情報:** `nuxt build --analyzer` または `nuxt build -a` コマンドを使って、アプリケーションをビルドしてバンドルアナライザを [http://localhost:8888](http://localhost:8888) で起動できます。
+
+## babel
+
+
+
+- タイプ: `オブジェクト`
+
+
+
+> JS や Vue ファイルのために babel の設定をカスタマイズします。
+
+
+
+デフォルト:
+
+```js
+{
+ plugins: [
+ 'transform-async-to-generator',
+ 'transform-runtime'
+ ],
+ presets: [
+ ['es2015', { modules: false }],
+ 'stage-2'
+ ]
+}
+```
+
+
+
+例(`nuxt.config.js`):
+
+```js
+module.exports = {
+ build: {
+ babel: {
+ presets: ['es2015', 'stage-0']
+ }
+ }
+}
+```
+
+## extend
+
+
+
+- タイプ: `関数`
+
+
+
+クライアント及びサーバーのバンドルについて Webpack の設定を手動で拡張します。
+
+
+
+extend メソッドは一度はサーバーのバンドルのため、一度はクライアントのバンドルのため、つまり二度呼び出されます。メソッドの引数は次のとおり:
+
+
+
+
+1. Webpack 設定オブジェクト
+2. 次のキーを持つオブジェクト(すべてブーリアン): `dev`, `isClient`, `isServer`
+
+
+
+例(`nuxt.config.js`):
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```js
+module.exports = {
+ build: {
+ extend (config, { isClient }) {
+ // クライアントのバンドルの Webpack 設定のみを拡張する
+ if (isClient) {
+ config.devtool = 'eval-source-map'
+ }
+ }
+ }
+}
+```
+
+
+
+デフォルトの Webpack の設定についてもう少し見てみたい場合は Nuxt.js の [webpack ディレクトリ](https://github.com/nuxt/nuxt.js/tree/master/lib/webpack) を参照してください。
+
+## filenames
+
+
+
+- タイプ: `オブジェクト`
+
+
+
+> バンドルのファイル名をカスタマイズします。
+
+
+
+デフォルト:
+
+```js
+{
+ css: 'style.css',
+ vendor: 'vendor.bundle.js',
+ app: 'nuxt.bundle.js'
+}
+```
+
+
+
+例(`nuxt.config.js`):
+
+```js
+module.exports = {
+ build: {
+ filenames: {
+ css: 'app.css',
+ vendor: 'vendor.js',
+ app: 'app.js'
+ }
+ }
+}
+```
+
+## loaders
+
+
+
+
+- タイプ: `配列`
+ - 要素: `オブジェクト`
+
+
+
+> Webpack のローダーをカスタマイズします。
+
+
+
+デフォルト:
+
+```js
+[
+ {
+ test: /\.(png|jpe?g|gif|svg)$/,
+ loader: 'url-loader',
+ query: {
+ limit: 1000, // 1KO
+ name: 'img/[name].[hash:7].[ext]'
+ }
+ },
+ {
+ test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
+ loader: 'url-loader',
+ query: {
+ limit: 1000, // 1 KO
+ name: 'fonts/[name].[hash:7].[ext]'
+ }
+ }
+]
+```
+
+
+
+例(`nuxt.config.js`):
+
+```js
+module.exports = {
+ build: {
+ loaders: [
+ {
+ test: /\.(png|jpe?g|gif|svg)$/,
+ loader: 'url-loader',
+ query: {
+ limit: 10000, // 10KO
+ name: 'img/[name].[hash].[ext]'
+ }
+ }
+ ]
+ }
+}
+```
+
+
+
+loaders が `nuxt.config.js` で定義されているときは、デフォルトのローダー設定は上書きされます。
+
+## plugins
+
+
+
+
+- タイプ: `配列`
+- デフォルト: `[]`
+
+
+
+> Webpack のプラグインを追加します。
+
+
+
+例(`nuxt.config.js`):
+
+```js
+const webpack = require('webpack')
+
+module.exports = {
+ build: {
+ plugins: [
+ new webpack.DefinePlugin({
+ 'process.VERSION': require('./package.json').version
+ })
+ ]
+ }
+}
+```
+
+## postcss
+
+
+
+- **タイプ:** `配列`
+
+
+
+> [postcss](https://github.com/postcss/postcss) オプションをカスタマイズします。
+
+
+
+デフォルト:
+
+```js
+[
+ require('autoprefixer')({
+ browsers: ['last 3 versions']
+ })
+]
+```
+
+
+
+例(`nuxt.config.js`):
+
+```js
+module.exports = {
+ build: {
+ postcss: [
+ require('postcss-nested')(),
+ require('postcss-responsive-type')(),
+ require('postcss-hexrgba')(),
+ require('autoprefixer')({
+ browsers: ['last 3 versions']
+ })
+ ]
+ }
+}
+```
+
+## vendor
+
+
+
+> Nuxt.js では `vendor.bundle.js` ファイル内にモジュールを追加できます。このファイルは app バンドルファイルのサイズを小さくするために生成します。外部モジュール(例えば `axios` など)を使うときにとても便利です。
+
+
+
+
+- **タイプ:** `配列`
+ - **要素:** `文字列`
+
+
+
+vendor バンドルファイル内にモジュール/ファイルを追加するには、`nuxt.config.js` 内の `build.vendor` キーに追加します:
+
+```js
+module.exports = {
+ build: {
+ vendor: ['axios']
+ }
+}
+```
+
+
+
+ファイルへのパスを指定することもできます。例えば自分で作成した独自ライブラリを使いたいときなどはファイルへのパスを指定します:
+
+```js
+module.exports = {
+ build: {
+ vendor: [
+ 'axios',
+ '~plugins/my-lib.js'
+ ]
+ }
+}
+```
diff --git a/ja/api/configuration-cache.md b/ja/api/configuration-cache.md
new file mode 100644
index 000000000..cdcdce5ee
--- /dev/null
+++ b/ja/api/configuration-cache.md
@@ -0,0 +1,65 @@
+---
+title: "API: cache プロパティ"
+description: Nuxt.js はレンダリングのパフォーマンス向上を目的としてコンポーネントをキャッシュするために lru-cache を使います。
+---
+
+
+
+
+# cache プロパティ
+
+
+
+> Nuxt.js はレンダリングのパフォーマンス向上を目的としてコンポーネントをキャッシュするために [lru-cache](https://github.com/isaacs/node-lru-cache) を使います。
+
+
+
+## 使い方
+
+
+
+- **タイプ:** `ブーリアン` または `オブジェクト`(デフォルト: `false`)
+
+
+
+オブジェクトの場合は [lru-cache オプション](https://github.com/isaacs/node-lru-cache#options) を参照してください。
+
+
+
+`nuxt.config.js` 内で `cache` キーを使います:
+
+
+
+
+
+
+
+
+
+
+
+
+```js
+module.exports = {
+ cache: true
+ // または
+ cache: {
+ max: 1000,
+ maxAge: 900000
+ }
+}
+```
+
+
+
+`cache` に `true` がセットされた場合はデフォルトのキーが適用されます:
+
+
+
+
+
+
+| キー | 必須か否か | タイプ | デフォルト | 説明 |
+|------|------------|-----|---------|------------|
+| `max` | 必須ではない | 整数 | 1000 | キャッシュするコンポーネントの最大数。1001個目のコンポーネントが追加されるときに、スペースを空けるために、最初にキャッシュされたコンポーネントがキャッシュから削除されます |
+| `maxAge` | 必須ではない | 整数 | 900000 | キャッシュさせる最大時間をミリ秒で指定します。デフォルトは 15分間です |
diff --git a/ja/api/configuration-css.md b/ja/api/configuration-css.md
new file mode 100644
index 000000000..067254de0
--- /dev/null
+++ b/ja/api/configuration-css.md
@@ -0,0 +1,65 @@
+---
+title: "API: css プロパティ"
+description: Nuxt.js ではグローバルに適用したい(すべてのページにインクルードしたい)CSS ファイル/モジュール/ライブラリを設定できます。
+---
+
+
+
+
+
+
+# css プロパティ
+
+
+
+> Nuxt.js ではグローバルに適用したい(すべてのページにインクルードしたい)CSS ファイル/モジュール/ライブラリを設定できます。
+
+
+
+
+- **タイプ:** `配列`
+ - **要素:** `文字列` または `オブジェクト`
+
+
+
+要素がオブジェクトのときは、プロパティは次のとおりです:
+
+
+
+
+- src: `文字列`(ファイルのパス)
+- lang: `文字列`([プリプロセッサを使うには?](/faq/pre-processors))
+
+
+
+`nuxt.config.js` 内で CSS リソースを追加するには:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```js
+module.exports = {
+ css: [
+ // node.js モジュールをロード
+ 'hover.css/css/hover-min.css',
+ // node.js モジュール。プリプロセッサを指定
+ { src: 'bulma', lang: 'sass' },
+ // プロジェクト内の CSS ファイル
+ '~assets/css/main.css'
+ ]
+}
+```
+
+
+
+**プロダクションでは**、すべての CSS はミニファイされ `styles.css` というファイルに抽出されます。そしてページの `
` タグ内に `style.css` を読み込む link タグが追加されます。
diff --git a/ja/api/configuration-dev.md b/ja/api/configuration-dev.md
new file mode 100644
index 000000000..0141fc316
--- /dev/null
+++ b/ja/api/configuration-dev.md
@@ -0,0 +1,111 @@
+---
+title: "API: dev プロパティ"
+description: 開発モードかプロダクションモードかを指定します。
+---
+
+
+
+
+
+
+# dev プロパティ
+
+
+
+
+- タイプ: `ブーリアン`
+- デフォルト: `true`
+
+
+
+> Nuxt.js の開発モードなのかプロダクションモードなのかを指定します。
+
+
+
+このプロパティは [nuxt コマンド](/guide/commands) によって上書きされます:
+
+
+
+
+- `nuxt` コマンドを使うときは `dev` は強制的に `true` になります
+- `nuxt build`、`nuxt start`、`nuxt generate` コマンドを使うときは `dev` は強制的に `false` になります
+
+
+
+このプロパティは [Nuxt.js をプログラムで使う](/api/nuxt) ときに合わせて使うと良いです:
+
+
+
+例:
+
+`nuxt.config.js`
+
+```js
+module.exports = {
+ dev: (process.env.NODE_ENV !== 'production')
+}
+```
+
+`server.js`
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```js
+const Nuxt = require('nuxt')
+const app = require('express')()
+const port = process.env.PORT || 3000
+
+// Nuxt.js をオプションを使ってインスタンス化する
+let config = require('./nuxt.config.js')
+const nuxt = new Nuxt(config)
+app.use(nuxt.render)
+
+// 開発モードのときのみビルドする
+if (config.dev) {
+ nuxt.build()
+ .catch((error) => {
+ console.error(error)
+ process.exit(1)
+ })
+}
+
+// サーバーを Listen する
+app.listen(port, '0.0.0.0')
+console.log('Server listening on localhost:' + port)
+```
+
+
+
+それから `package.json` に次のように書きます:
+
+```json
+{
+ "scripts": {
+ "dev": "node server.js",
+ "build": "nuxt build",
+ "start": "NODE_ENV=production node server.js"
+ }
+}
+```
diff --git a/ja/api/configuration-env.md b/ja/api/configuration-env.md
new file mode 100644
index 000000000..ec23ebd60
--- /dev/null
+++ b/ja/api/configuration-env.md
@@ -0,0 +1,67 @@
+---
+title: "API: env プロパティ"
+description: クライアントサイドとサーバーサイドで環境変数を共有します。
+---
+
+
+
+
+
+
+# env プロパティ
+
+
+
+- タイプ: `オブジェクト`
+
+
+
+Nuxt.js ではクライアントサイドとサーバーサイドで共有される環境変数を作成できます。
+
+
+
+例(`nuxt.config.js`):
+
+```js
+module.exports = {
+ env: {
+ baseUrl: process.env.BASE_URL || 'http://localhost:3000'
+ }
+}
+```
+
+
+
+このように記述すると `baseUrl` プロパティは、環境変数 `BASE_URL` が定義されていればそれと同じになり、そうでなければ `http://localhost:3000` になります。
+
+
+
+そして `baseUrl` 変数にアクセスするには 2つの方法があります:
+
+
+
+
+1. `process.env.baseUrl` 経由でアクセスする
+2. `context.baseUrl` を経由する。詳細は [コンテキスト API](/api#コンテキスト)
+
+
+
+例えば `env` プロパティを使って公開トークンを付与することができます。
+
+
+
+上記の例として env プロパティを使って [axios](https://github.com/mzabriskie/axios) を設定できます。
+
+`plugins/axios.js`:
+
+```js
+import axios from 'axios'
+
+export default axios.create({
+ baseURL: process.env.baseUrl
+})
+```
+
+
+
+このように記述するとページ内で `import axios from '~plugins/axios'` という具合に axios をインポートできます。
diff --git a/ja/api/configuration-generate.md b/ja/api/configuration-generate.md
new file mode 100644
index 000000000..6cb59d411
--- /dev/null
+++ b/ja/api/configuration-generate.md
@@ -0,0 +1,171 @@
+---
+title: "API: generate プロパティ"
+description: ユニバーサルなウェブアプリケーションから静的なウェブアプリケーションの生成について設定します。
+---
+
+
+
+
+
+
+# generate プロパティ
+
+
+
+- タイプ: `オブジェクト`
+
+
+
+> ユニバーサルなウェブアプリケーションから静的なウェブアプリケーションの生成について設定します。
+
+
+
+`nuxt generate` コマンドを実行するか `nuxt.generate()` を呼び出したとき、Nuxt.js は `generete` プロパティで定義された設定を使います。
+
+## dir
+
+
+
+
+- タイプ: '文字列'
+- デフォルト: `'dist'`
+
+
+
+`nuxt generate` で作成されるディレクトリ名です。
+
+## routeParams
+
+
+
+
+
+- タイプType: `オブジェクト`
+ - キー: `文字列`(ルートのパス)
+ - 値: `配列` または `関数`
+
+
+
+[動的なルーティング](/guide/routing#動的なルーティング) を使うときは、パラメータとそれぞれの動的なルートとのマッピングを定義する必要があります。
+
+
+
+例:
+
+```bash
+-| pages/
+---| index.vue
+---| users/
+-----| _id.vue
+```
+
+
+
+Nuxt.js によって生成されるルートは `/` と `/users/:id` です。
+
+
+
+上のような設定で `nuxt generate` コマンドを実行しようとすると、ターミナルはエラー終了するでしょう:
+
+```bash
+Could not generate the dynamic route /users/:id, please add the mapping params in nuxt.config.js (generate.routeParams).
+```
+
+
+
+そこで `nuxt.config.js` 内に `/users/:id` のマッピングを追加します:
+
+```js
+module.exports = {
+ generate: {
+ routeParams: {
+ '/users/:id': [
+ { id: 1 },
+ { id: 2 },
+ { id: 3 }
+ ]
+ }
+ }
+}
+```
+
+
+
+そして `nuxt generate` を実行します:
+
+```bash
+[nuxt] Generating...
+[...]
+nuxt:render Rendering url / +154ms
+nuxt:render Rendering url /users/1 +12ms
+nuxt:render Rendering url /users/2 +33ms
+nuxt:render Rendering url /users/3 +7ms
+nuxt:generate Generate file: /index.html +21ms
+nuxt:generate Generate file: /users/1/index.html +31ms
+nuxt:generate Generate file: /users/2/index.html +15ms
+nuxt:generate Generate file: /users/3/index.html +23ms
+nuxt:generate HTML Files generated in 7.6s +6ms
+[nuxt] Generate done
+```
+
+
+
+いいですね。しかし、もし **動的なパラメータ** が必要な場合はどうでしょう?
+
+
+
+
+1. `Promise` を返す `関数` を使う
+2. コールバックと一緒に `関数` を使う
+
+
+
+### Promise を返す関数を使う
+
+`nuxt.config.js`
+
+```js
+import axios from 'axios'
+
+module.exports = {
+ generate: {
+ routeParams: {
+ '/users/:id': function () {
+ return axios.get('https://my-api/users')
+ .then((res) => {
+ return res.data.map((user) => {
+ return { id: user.id }
+ })
+ })
+ }
+ }
+ }
+}
+```
+
+
+
+### コールバックと一緒に関数を使う
+
+`nuxt.config.js`
+
+```js
+import axios from 'axios'
+
+module.exports = {
+ generate: {
+ routeParams: {
+ '/users/:id': function (callback) {
+ axios.get('https://my-api/users')
+ .then((res) => {
+ var params = res.data.map((user) => {
+ return { id: user.id }
+ })
+ callback(null, params)
+ })
+ .catch(callback)
+ }
+ }
+ }
+}
+```
diff --git a/ja/api/configuration-head.md b/ja/api/configuration-head.md
new file mode 100644
index 000000000..04cb4adf8
--- /dev/null
+++ b/ja/api/configuration-head.md
@@ -0,0 +1,40 @@
+---
+title: "API: head プロパティ"
+description: Nuxt.js では nuxt.config.js 内にアプリケーションのデフォルトのメタ情報を定義できます。
+---
+
+
+
+
+
+
+# head プロパティ
+
+
+
+Nuxt.js では `nuxt.config.js` 内にアプリケーションのデフォルトのメタ情報を定義できます。それには `head` プロパティを使います:
+
+
+
+- **タイプ:** `オブジェクト`
+
+```js
+module.exports = {
+ head: {
+ titleTemplate: '%s - Nuxt.js',
+ meta: [
+ { charset: 'utf-8' },
+ { name: 'viewport', content: 'width=device-width, initial-scale=1' },
+ { hid: 'description', name: 'description', content: 'Meta description' }
+ ]
+ }
+}
+```
+
+
+
+`head` に設定できるオプション一覧は [vue-meta のドキュメント](https://github.com/declandewet/vue-meta#recognized-metainfo-properties) を参照してください。
+
+
+
+情報: ページのコンポーネントでも `head` を使うことができ、`this` を経由してコンポーネントのデータにアクセスできます。詳しくは [コンポーネントの head プロパティ](/api/pages-head) を参照してください。
diff --git a/ja/api/configuration-loading.md b/ja/api/configuration-loading.md
new file mode 100644
index 000000000..fc8a902fc
--- /dev/null
+++ b/ja/api/configuration-loading.md
@@ -0,0 +1,159 @@
+---
+title: "API: loading プロパティ"
+description: Nuxt.js はルートから別のルートへ遷移する間、プログレスバーを表示するために自身のコンポーネントを使います。これをカスタマイズしたり、プログレスバーを使わないようにしたり、独自のコンポーネントを作成したりできます。
+---
+
+
+
+
+
+
+# loadding プロパティ
+
+
+
+- タイプ: `ブーリアン` または `オブジェクト` または `文字列`
+
+
+
+> Nuxt.js はルートから別のルートへ遷移する間、プログレスバーを表示するために自身のコンポーネントを使います。これをカスタマイズしたり、プログレスバーを使わないようにしたり、独自のコンポーネントを作成したりできます。
+
+
+
+## プログレスバーを無効にする
+
+
+
+- タイプ: `ブーリアン`
+
+
+
+ルートから別のルートへ遷移する間にプログレスバーを表示したくないときは `nuxt.config.js` ファイル内に単に `loading: false` と記述します:
+
+```js
+module.exports = {
+ loading: false
+}
+```
+
+
+
+## プログレスバーをカスタマイズする
+
+
+
+- タイプ: `オブジェクト`
+
+
+
+プログレスバーをカスタマイズするために使えるプロパティ一覧。
+
+
+
+
+
+
+
+
+| キー | タイプ | デフォルト | 説明 |
+|-----|------|---------|-------------|
+| `color` | 文字列 | `'black'` | プログレスバーの CSS カラー |
+| `failedColor` | 文字列 | `'red'` | ルートをレンダリング中にエラーが発生した場合のプログレスバーの CSS カラー(例えば `data` または `fetch` がエラーを返したとき) |
+| `height` | 文字列 | `'2px'` | プログレスバーの高さ(プログレスバーの `style` プロパティで使われます) |
+| `duration` | 数値 | `5000` | プログレスバーを表示する時間の最大値をミリ秒で指定します。Nuxt.js は各ルートが 5秒以内にレンダリングされると想定しています |
+
+
+
+例として、青いプログレスバーを 5px の高さで表示するには `nuxt.config.js` を次のように編集します:
+
+```js
+module.exports = {
+ loading: {
+ color: 'blue',
+ height: '5px'
+ }
+}
+```
+
+
+
+## 独自のコンポーネントを使う
+
+
+
+- タイプ: `文字列`
+
+
+
+Nuxt.js がデフォルトのコンポーネントの代わりに呼び出す、独自のコンポーネントを作成できます。そのためには `loading` オプション内に独自コンポーネントのパスを指定する必要があります。そうすれば独自コンポーネントは Nuxt.js により直接呼び出されます。
+
+
+
+**独自コンポーネントはいくつかのメソッドを備えている必要があります:**
+
+
+
+
+
+
+
+
+| メソッド | 必須か否か | 説明 |
+|--------|----------|-------------|
+| `start()` | 必須 | ルートが変更されたときに呼び出されます。このときに独自コンポーネントの表示が開始されます |
+| `finish()` | 必須 | ルートがロード(及びデータ取得)されたときに呼び出されます。このときに独自コンポーネントが表示が終了します |
+| `fail()` | *必須でない* | ルートがロードできなかったときに呼び出されます(例えばデータの取得に失敗したなど) |
+| `increase(num)` | *必須でない* | ルートのコンポーネントがロードされている間に呼び出されます。`num` は 100 未満の整数です |
+
+
+
+`components/loading.vue` に独自コンポーネントを作ることができます:
+
+```html
+
+
+
+
+
+
+
+```
+
+
+
+それから `nuxt.config.js` を編集して、独自コンポーネントを使うことを Nuxt.js に伝えます:
+
+```js
+module.exports = {
+ loading: '~components/loading.vue'
+}
+```
diff --git a/ja/api/configuration-plugins.md b/ja/api/configuration-plugins.md
new file mode 100644
index 000000000..eb520cc78
--- /dev/null
+++ b/ja/api/configuration-plugins.md
@@ -0,0 +1,54 @@
+---
+title: "API: plugins プロパティ"
+description: Nuxt.js の plugins オプションで Vue.js プラグインを使うことができます。
+---
+
+
+
+
+
+
+# plugins プロパティ
+
+
+
+
+- タイプ: `配列`
+ - 要素: `文字列`
+
+
+
+> plugins プロパティを使うと Vue.js プラグインをメインアプリケーションに簡単に追加できます。
+
+
+
+例(`nuxt.config.js`):
+
+```js
+module.exports = {
+ plugins: ['~plugins/vue-notifications']
+}
+```
+
+
+
+それから `plugins/vue-notifications.js` ファイルを作る必要があります:
+
+```js
+import Vue from 'vue'
+import VueNotifications from 'vue-notifications'
+
+Vue.use(VueNotifications)
+```
+
+
+
+`plugins` プロパティで設定されたパスはすべて、メインアプリケーションが初期化される前に **インポート** されます。
+
+
+
+`Vue.use()` を使う必要があるときは毎回 `plugins/` 内にファイルを作成し、そのパスを `nuxt.config.js` 内の `plugins` に追加する必要があります。
+
+
+
+plugins の使い方をより深く理解するには [ガイド](/guide/plugins#vue-プラグイン) を参照してください。
diff --git a/ja/api/configuration-rootdir.md b/ja/api/configuration-rootdir.md
new file mode 100644
index 000000000..c13f08814
--- /dev/null
+++ b/ja/api/configuration-rootdir.md
@@ -0,0 +1,33 @@
+---
+title: "API: rootDir プロパティ"
+description: Nuxt.js アプリケーションのワークスペースを指定します。
+---
+
+
+
+
+
+
+# rootDir プロパティ
+
+
+
+
+- タイプ: `文字列`
+- デフォルト: `process.cwd()`
+
+
+
+Nuxt.js アプリケーションのワークスペースを指定します。
+
+
+
+このプロパティは [nuxt コマンド](/guide/commands) により上書きされ、そのコマンドの引数がセットされます(例: `nuxt my-app/` を実行すると `rootDir` に `my-app/` が絶対パス付きでセットされます)
+
+
+
+このプロパティは [Nuxt.js をプログラムで使う](/api/nuxt) ときに用いると良いです。
+
+
+
+このオプションは `node_modules` ディレクトリが `rootDir` フォルダ内にあることを求めるという側面もあります。もしアプリケーションのパスを node_modules なしで設定したいときは [`srcDir` オプション](/api/configuration-srcdir) を使ってください。
diff --git a/ja/api/configuration-router.md b/ja/api/configuration-router.md
new file mode 100644
index 000000000..98b8428ca
--- /dev/null
+++ b/ja/api/configuration-router.md
@@ -0,0 +1,252 @@
+---
+title: "API: router プロパティ"
+description: router プロパティを使って Nuxt.js のルーターをカスタマイズできます。
+---
+
+
+
+
+
+
+# router プロパティ
+
+
+
+> router プロパティを使って Nuxt.js のルーター([vue-router](https://router.vuejs.org/en/))をカスタマイズできます。
+
+## base
+
+
+
+
+- タイプ: `文字列`
+- デフォルト: `'/'`
+
+
+
+アプリケーションのベース URL です。例えばシングルページアプリケーション全体を `/app/` 配下で配信したい場合は base に `'/app/'` を設定します。
+
+
+
+例(`nuxt.config.js`):
+
+```js
+module.exports = {
+ router: {
+ base: '/app/'
+ }
+}
+```
+
+
+
+`base` がセットされているときは Nuxt.js はドキュメントのヘッダーに `` を追加します。
+
+
+
+> このオプションは vue-router の [Router コンストラクタ](https://router.vuejs.org/en/api/options.html) に直接付与されます。
+
+## linkActiveClass
+
+
+
+
+- タイプ: `文字列`
+- デフォルト: `'nuxt-link-active'`
+
+
+
+[``](/api/components-nuxt-link) のデフォルトの active class をグローバルに設定します。
+
+
+
+例(`nuxt.config.js`):
+
+```js
+module.exports = {
+ router: {
+ linkActiveClass: 'active-link'
+ }
+}
+```
+
+
+
+> このオプションは [vue-router の Router コンストラクタ](https://router.vuejs.org/en/api/options.html) に直接付与されます。
+
+## scrollBehavior
+
+
+
+- タイプ: `関数`
+
+
+
+`scrollBehavior` オプションを使って、ページ間のスクロール位置についての独自の振る舞いを定義できます。このメソッドはページがレンダリングされるたびに毎回呼び出されます。
+
+
+
+デフォルトでは scrollBehavior オプションは次のようにセットされています:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```js
+const scrollBehavior = (to, from, savedPosition) => {
+ // savedPosition は popState ナビゲーションでのみ利用できます
+ if (savedPosition) {
+ return savedPosition
+ } else {
+ let position = {}
+ // 子パスが見つからないとき
+ if (to.matched.length < 2) {
+ // ページのトップへスクロールする
+ position = { x: 0, y: 0 }
+ }
+ else if (to.matched.some((r) => r.components.default.options.scrollToTop)) {
+ // 子パスのひとつが scrollToTop オプションが true にセットされているとき
+ position = { x: 0, y: 0 }
+ }
+ // アンカーがあるときは、セレクタを返すことでアンカーまでスクロールする
+ if (to.hash) {
+ position = { selector: to.hash }
+ }
+ return position
+ }
+}
+```
+
+
+
+すべてのルートにおいて強制的にトップまでスクロールさせる例:
+
+`nuxt.config.js`
+
+```js
+module.exports = {
+ router: {
+ scrollBehavior: function (to, from, savedPosition) {
+ return { x: 0, y: 0 }
+ }
+ }
+}
+```
+
+
+
+> このオプションは vue-router の [Router コンストラクタ](https://router.vuejs.org/en/api/options.html) に直接付与されます。
+
+## middleware
+
+
+
+
+- タイプ: `文字列` または `配列`
+ - 要素: `文字列`
+
+
+
+
+アプリケーションのすべてのページに対してデフォルトのミドルウェアをセットします。
+
+
+
+例:
+
+`nuxt.config.js`
+
+
+
+
+
+
+
+
+
+
+```js
+module.exports = {
+ router: {
+ // すべてのページで middleware/user-agent.js を実行します
+ middleware: 'user-agent'
+ }
+}
+```
+
+`middleware/user-agent.js`
+
+
+
+
+
+
+
+
+```js
+export default function (context) {
+ // userAgent プロパティを context 内に追加します(context は `data` メソッドや `fetch` メソッド内で利用できます)
+ context.userAgent = context.isServer ? context.req.headers['user-agent'] : navigator.userAgent
+}
+```
+
+
+
+ミドルウェアについてより深く理解するには [ミドルウェア](/guide/routing#ミドルウェア) ガイドを参照してください。
+
+## extendRoutes
+
+
+
+- タイプ: `関数`
+
+
+
+Nuxt.js によって作成されるルーティングを拡張したいことがあるかもしれません。それは `extendRoutes` オプションで実現できます。
+
+
+
+独自のルートを追加する例:
+
+`nuxt.config.js`
+
+```js
+const resolve = require('path').resolve
+
+module.exports = {
+ router: {
+ extendRoutes (routes) {
+ routes.push({
+ name: 'custom',
+ path: '*',
+ component: resolve(__dirname, 'pages/404.vue')
+ })
+ }
+ }
+}
+```
+
+
+
+ルートのスキーマは [vue-router](https://router.vuejs.org/en/) のスキーマを尊重すべきです。
diff --git a/ja/api/configuration-srcdir.md b/ja/api/configuration-srcdir.md
new file mode 100644
index 000000000..5e496a659
--- /dev/null
+++ b/ja/api/configuration-srcdir.md
@@ -0,0 +1,49 @@
+---
+title: "API: srcDir プロパティ"
+description: Nuxt.js アプリケーションのソースディレクトリを指定します。
+---
+
+
+
+
+
+
+# srcDir プロパティ
+
+
+
+
+- タイプ: `文字列`
+- デフォルト: [rootDir の値](/api/configuration-rootdir)
+
+
+
+> Nuxt.js アプリケーションのソースディレクトリを指定します。
+
+
+
+例(`nuxt.config.js`):
+
+```js
+module.exports = {
+ srcDir: 'client/'
+}
+```
+
+
+
+上のように指定すると、アプリケーションの構造を次のようにできます:
+
+```bash
+-| app/
+---| node_modules/
+---| client/
+------| pages/
+------| components/
+---| nuxt.config.js
+---| package.json
+```
+
+
+
+このオプションは Nuxt.js を使いつつ独自のサーバーを持ちたいときに役に立ちます。そのようなときに、すべての npm 依存パッケージをひとつの `package.json` 内にまとめることができます。
diff --git a/ja/api/configuration-transition.md b/ja/api/configuration-transition.md
new file mode 100644
index 000000000..4a0df526e
--- /dev/null
+++ b/ja/api/configuration-transition.md
@@ -0,0 +1,66 @@
+---
+title: "API: transition プロパティ"
+description: ページのトランジションのデフォルト設定を指定します。
+---
+
+
+
+
+
+
+# transition プロパティ
+
+
+
+- タイプ: `文字列` または `オブジェクト`
+
+
+
+> ページのトランジションのデフォルト設定を指定するために使われます。
+
+
+
+デフォルト:
+
+```js
+{
+ name: 'page',
+ mode: 'out-in'
+}
+```
+
+
+
+例(`nuxt.config.js`):
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```js
+module.exports = {
+ transition: 'page'
+ // または
+ transition: {
+ name: 'page',
+ mode: 'out-in',
+ beforeEnter (el) {
+ console.log('Before enter...');
+ }
+ }
+}
+```
+
+
+
+`nuxt.config.js` 内の transition キーはページのトランジションのデフォルト設定を指定するために使われます。`transition` キーがオブジェクトのときに利用可能なキーについてより深く理解するには [ページのトランジションプロパティ](/api/pages-transition#オブジェクト) を参照してください。
diff --git a/ja/api/index.md b/ja/api/index.md
new file mode 100644
index 000000000..22c9580e5
--- /dev/null
+++ b/ja/api/index.md
@@ -0,0 +1,73 @@
+---
+title: "API: data メソッド"
+description: Nuxt.js は Vue.js の data メソッドに手を加えて、コンポーネントのデータがセットされる前に非同期処理を行えるようにしています。
+---
+
+
+
+
+
+
+# data メソッド
+
+
+
+> Nuxt.js は Vue.js の `data` メソッドに手を加えて、コンポーネントのデータがセットされる前に非同期処理を行えるようにしています。
+
+
+
+- **タイプ:** `関数`
+
+
+
+`data` はコンポーネントがローディングされる前に毎回呼び出されます(ページコンポーネントに限ります)。サーバーサイドもしくは(訳注: クライアントサイドでは)ユーザーがページ遷移する前に呼び出されます。このメソッドは第一引数として **コンテキスト** を受け取り、コンテキストを使ってデータを取得してコンポーネントのデータを返すことができます。
+
+```js
+export default {
+ data (context) {
+ return { foo: 'bar' }
+ }
+}
+```
+
+
+
+`data` メソッド内で、コンポーネントのインスタンスに `this` を経由してアクセスしては**いけません**。なぜなら `data` メソッドはコンポーネントが **インスタンス化される前に** 呼び出されるためです。
+
+
+
+## コンテキスト
+
+
+
+`context` 内の利用できるキーの一覧:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+| キー | タイプ | どこで利用できるか | 説明 |
+|-----|------|--------------|-------------|
+| `isClient` | ブーリアン | クライアント&サーバー | クライアントサイドでレンダリングしているか否か |
+| `isServer` | ブーリアン | クライアント&サーバー | サーバーサイドでレンダリングしているか否か |
+| `isDev` | ブーリアン | クライアント&サーバー | 開発モードか否か。このキーはプロダクションモードでデータをキャッシュさせるときに役立ちます |
+| `route` | [vue-router のルート](https://router.vuejs.org/en/api/route-object.html) | クライアント&サーバー | `vue-router` のルートインスタンス |
+| `store` | [Vuex ストア](http://vuex.vuejs.org/en/api.html#vuexstore-instance-properties) | クライアント&サーバー | `Vuex` のストアインスタンス。**[Vuex ストア](/guide/vuex-store) が設定されている場合のみ利用できます** |
+| `env` | オブジェクト | クライアント&サーバー | `nuxt.config.js` でセットされた環境変数。詳細は [env API](/api/configuration-env) を参照してください |
+| `params` | オブジェクト | クライアント&サーバー | route.params のエイリアス |
+| `query` | オブジェクト | クライアント&サーバー | route.query のエイリアス |
+| `req` | [http.Request](https://nodejs.org/api/http.html#http_class_http_incomingmessage) | サーバー | Node.js サーバーのリクエスト。Nuxt.js をミドルウェアとして使っているとき、req オブジェクトは利用しているフレームワークによって異なります。*`nuxt generate` からは利用できません* |
+| `res` | [http.Response](https://nodejs.org/api/http.html#http_class_http_serverresponse) | サーバー | Node.js サーバーのレスポンス。Nuxt.js をミドルウェアとして使っているとき、res オブジェクトは利用しているフレームワークによって異なります。*`nuxt generate` からは利用できません* |
+| `redirect` | 関数 | クライアント&サーバー | 別のルートにリダイレクトさせたいときに使います。サーバーサイドで使われるステータスコードはデフォルトで 302 です: `redirect([status,] path [, query])` |
+| `error` | 関数 | クライアント&サーバー | エラーページを表示させたいときに使います: `error(params)`。`params` は `statusCode` と `message` というフィールドを持っている必要があります |
diff --git a/ja/api/menu.json b/ja/api/menu.json
new file mode 100644
index 000000000..eb68a3cde
--- /dev/null
+++ b/ja/api/menu.json
@@ -0,0 +1,95 @@
+[
+ {
+ "title": "ページ",
+ "links": [
+ { "name": "data", "to": "/" },
+ { "name": "fetch", "to": "/pages-fetch" },
+ { "name": "head", "to": "/pages-head" },
+ { "name": "layout", "to": "/pages-layout" },
+ { "name": "middleware", "to": "/pages-middleware" },
+ { "name": "scrollToTop", "to": "/pages-scrolltotop" },
+ {
+ "name": "transition", "to": "/pages-transition",
+ "contents": [
+ { "name": "文字列", "to": "#文字列" },
+ { "name": "オブジェクト", "to": "#オブジェクト" },
+ { "name": "関数", "to": "#関数" }
+ ]
+ },
+ { "name": "validate", "to": "/pages-validate" }
+ ]
+ },
+ {
+ "title": "コンポーネント",
+ "links": [
+ { "name": "nuxt", "to": "/components-nuxt" },
+ { "name": "nuxt-child", "to": "/components-nuxt-child" },
+ { "name": "nuxt-link", "to": "/components-nuxt-link" }
+ ]
+ },
+ {
+ "title": "設定",
+ "links": [
+ {
+ "name": "build",
+ "to": "/configuration-build",
+ "contents": [
+ { "name": "analyze", "to": "#analyze" },
+ { "name": "babel", "to": "#babel" },
+ { "name": "extend", "to": "#extend" },
+ { "name": "filenames", "to": "#filenames" },
+ { "name": "loaders", "to": "#loaders" },
+ { "name": "plugins", "to": "#plugins" },
+ { "name": "postcss", "to": "#postcss" },
+ { "name": "vendor", "to": "#vendor" }
+ ]
+ },
+ { "name": "cache", "to": "/configuration-cache" },
+ { "name": "css", "to": "/configuration-css" },
+ { "name": "dev", "to": "/configuration-dev" },
+ { "name": "env", "to": "/configuration-env" },
+ {
+ "name": "generate",
+ "to": "/configuration-generate",
+ "contents": [
+ { "name": "dir", "to": "#dir" },
+ { "name": "routeParams", "to": "#routeparams" }
+ ]
+ },
+ { "name": "head", "to": "/configuration-head" },
+ {
+ "name": "loading",
+ "to": "/configuration-loading",
+ "contents": [
+ { "name": "プログレスバーを無効にする", "to": "#プログレスバーを無効にする" },
+ { "name": "プログレスバーをカスタマイズする", "to": "#プログレスバーをカスタマイズする" },
+ { "name": "独自のコンポーネントを使う", "to": "#独自のコンポーネントを使う" }
+ ]
+ },
+ { "name": "plugins", "to": "/configuration-plugins" },
+ { "name": "rootDir", "to": "/configuration-rootdir" },
+ {
+ "name": "router",
+ "to": "/configuration-router",
+ "contents": [
+ { "name": "base", "to": "#base" },
+ { "name": "linkActiveClass", "to": "#linkactiveclass" },
+ { "name": "scrollBehavior", "to": "#scrollbehavior" },
+ { "name": "middleware", "to": "#middleware" },
+ { "name": "extendRoutes", "to": "#extendroutes" }
+ ]
+ },
+ { "name": "srcDir", "to": "/configuration-srcdir" },
+ { "name": "transition", "to": "/configuration-transition" }
+ ]
+ },
+ {
+ "title": "Nuxt モジュール",
+ "links": [
+ { "name": "Nuxt.js をプログラムで使う", "to": "/nuxt" },
+ { "name": "render", "to": "/nuxt-render" },
+ { "name": "renderRoute", "to": "/nuxt-render-route" },
+ { "name": "renderAndGetWindow", "to": "/nuxt-render-and-get-window" }
+ ]
+ }
+]
diff --git a/ja/api/nuxt-render-and-get-window.md b/ja/api/nuxt-render-and-get-window.md
new file mode 100644
index 000000000..2686e2b0a
--- /dev/null
+++ b/ja/api/nuxt-render-and-get-window.md
@@ -0,0 +1,67 @@
+---
+title: "API: nuxt.renderAndGetWindow(url, options)"
+description: Nuxt.js アプリケーションの URL を渡して window を取得します。
+---
+
+
+
+
+# nuxt.renderAndGetWindow(url, options = {})
+
+
+
+
+
+
+
+
+
+- タイプ: `関数`
+- 引数: `文字列`
+ 1. `文字列`: レンダリングする URL
+ 2. *オプション*, `オブジェクト`: オプション
+ - virtualConsole: `ブーリアン`(デフォルト: `true`)
+- 戻り値: `プロミス`
+ - 戻り値: `window`
+
+
+
+> Nuxt.js アプリケーションの URL を渡して window を取得します。
+
+
+
+このメソッドは [テストする目的](guide/development-tools#end-to-end-testing) で使われます。
+
+
+
+この関数を使うためには `jsdom` をインストールする必要があります。:
+
+```bash
+npm install --save-dev jsdom
+```
+
+
+
+例:
+
+
+
+
+
+
+
+
+
+
+
+
+```js
+const Nuxt = require('nuxt')
+const nuxt = new Nuxt()
+
+nuxt.renderAndGetWindow('http://localhost:3000')
+.then((window) => {
+ // head 内の の内容を表示
+ console.log(window.document.title)
+})
+```
diff --git a/ja/api/nuxt-render-route.md b/ja/api/nuxt-render-route.md
new file mode 100644
index 000000000..1d6f4c013
--- /dev/null
+++ b/ja/api/nuxt-render-route.md
@@ -0,0 +1,85 @@
+---
+title: "API: nuxt.renderRoute(route, context)"
+description: 特定のルートをレンダリングします。その際にコンテキストを渡すことができます。
+---
+
+
+
+
+# nuxt.renderRoute(route, context = {})
+
+
+
+
+
+
+
+
+
+
+- タイプ: `関数`
+- 引数:
+ 1. `文字列`, レンダリングするルート
+ 2. *オプション*, `オブジェクト`, 付与するコンテキスト, 利用できるキー: `req` 及び `res`
+- 戻り値: `プロミス`
+ - `html`: `文字列`
+ - `error`: `null` または `オブジェクト`
+ - `redirected`: `false` または `オブジェクト`
+
+
+
+> 特定のルートをレンダリングします。その際にコンテキストを渡すことができます。
+
+
+
+このメソッドはほとんどの場合 [nuxt.renderAndGetWindow](/api/nuxt-render-and-get-window) とともに [テストする目的](guide/development-tools#エンドツーエンドテスト) で使われます。
+
+
+
+`nuxt.renderRoute` はプロダクションモード(dev: false)ではビルド処理の後に実行すると良いでしょう。
+
+
+
+例:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```js
+const Nuxt = require('nuxt')
+let config = require('./nuxt.config.js')
+config.dev = false
+const nuxt = new Nuxt(config)
+
+nuxt.build()
+.then(() => {
+ return nuxt.renderRoute('/')
+})
+.then(({ html, error, redirected }) => {
+ // html は常に文字列
+
+ // エラーレイアウトが表示されるときは error は null ではありません。エラーフォーマットは下記:
+ // { statusCode: 500, message: 'エラーメッセージ' }
+
+ // data() や fetch() で redirect() が使われたときは redirected は false ではありません
+ // { path: '/other-path', query: {}, status: 302 }
+})
+```
diff --git a/ja/api/nuxt-render.md b/ja/api/nuxt-render.md
new file mode 100644
index 000000000..9fb07a72c
--- /dev/null
+++ b/ja/api/nuxt-render.md
@@ -0,0 +1,89 @@
+---
+title: "API: nuxt.render(req, res)"
+description: Nuxt.js を独自の Node.js サーバーのミドルウェアとして使うことができます。
+---
+
+
+
+
+# nuxt.render(req, res)
+
+
+
+
+
+
+
+- タイプ: `関数`
+- 引数:
+ 1. [リクエスト](https://nodejs.org/api/http.html#http_class_http_incomingmessage)
+ 2. [レスポンス](https://nodejs.org/api/http.html#http_class_http_serverresponse)
+- 戻り値: `プロミス`
+
+
+
+> `nuxt.render` を使うと Nuxt.js を独自の Node.js サーバーのミドルウェアとして使うことができます。
+
+
+
+Nuxt.js を [express](https://github.com/expressjs/express) と一緒に使う例:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```js
+const Nuxt = require('nuxt')
+const app = require('express')()
+const isProd = (process.env.NODE_ENV === 'production')
+const port = process.env.PORT || 3000
+
+// Nuxt.js をオプションとともにインスタンス化する
+let config = require('./nuxt.config.js')
+config.dev = !isProd
+const nuxt = new Nuxt(config)
+
+// すべてのルートを Nuxt.js でレンダリングする
+app.use(nuxt.render)
+
+// ホットリローディングする開発モードのときのみビルドする
+if (config.dev) {
+ nuxt.build()
+ .catch((error) => {
+ console.error(error)
+ process.exit(1)
+ })
+}
+
+// サーバーを Listen する
+app.listen(port, '0.0.0.0')
+console.log('Server listening on localhost:' + port)
+```
+
+
+
+ミドルウェアの最後で **nuxt.render** を呼び出すことが推奨されます。それは nuxt.render はウェブアプリケーションのレンダリングをハンドリングし、next() メソッドを呼び出さないためです。
diff --git a/ja/api/nuxt.md b/ja/api/nuxt.md
new file mode 100644
index 000000000..0eee66359
--- /dev/null
+++ b/ja/api/nuxt.md
@@ -0,0 +1,67 @@
+---
+title: "API: Nuxt(options)"
+description: Nuxt.js はプログラム上で、ミドルウェアとして使うことができます。そうすることでウェブアプリケーションをレンダリングする独自のサーバーを自由に作ることができます。
+---
+
+
+
+
+
+
+# Nuxt.js をプログラムで使う
+
+
+
+ミドルウェアや API と合わせて独自サーバーを使いたいときがあるかもしれません。そのため、Nuxt.js はプログラムで使うことができるようにしています。
+
+
+
+Nuxt.js は ES2015 以上でビルドされます。ES2015 はコーディングをより楽しいものし、より読みやすくしてくれますよね。また、Nuxt.js はトランスパイラを利用せず、また V8 エンジンで実装された機能に依存しません。このような理由から Nuxt.js は Node.js `4.0` 以上をターゲットにしています。
+
+
+
+Nuxt.js をこのように require できます:
+
+```js
+const Nuxt = require('nuxt')
+```
+
+## Nuxt(options)
+
+
+
+Nuxt.js に渡すことができるオプション一覧を見るには、設定のセクションを参照してください。
+
+
+
+
+
+
+
+
+
+
+
+```js
+const options = {}
+
+const nuxt = new Nuxt(options)
+nuxt.build()
+.then(() => {
+ // nuxt.render(req, res) あるいは nuxt.renderRoute(route, context) を使うことができます
+})
+```
+
+
+
+手っ取り早く始めるために [nuxt-express](https://github.com/nuxt/express) や [adonuxt](https://github.com/nuxt/adonuxt) スターターを参照できます。
+
+### ログを使ってデバッグする
+
+
+
+Nuxt.js のログを表示したいときはファイルのトップに次のコードを追加してください:
+
+```js
+process.env.DEBUG = 'nuxt:*'
+```
diff --git a/ja/api/pages-fetch.md b/ja/api/pages-fetch.md
new file mode 100644
index 000000000..74c26bb69
--- /dev/null
+++ b/ja/api/pages-fetch.md
@@ -0,0 +1,67 @@
+---
+title: "API: fetch メソッド"
+description: fetch メソッドは、ページがレンダリングされる前に、データをストアに入れるために使われます。コンポーネントのデータをセットしないという点を除いては data メソッドとよく似ています。
+---
+
+
+
+
+
+
+# fetch メソッド
+
+
+
+> fetch メソッドは、ページがレンダリングされる前に、データをストアに入れるために使われます。コンポーネントのデータをセットしないという点を除いては data メソッドとよく似ています。
+
+
+
+- **タイプ:** `関数`
+
+
+
+`fetch` メソッドは、*もしセットされていれば*、コンポーネントがローディングされる前に毎回呼び出されます(**ページコンポーネントに限ります**)。サーバーサイドもしくは(訳注: クライアントサイドでは)ユーザーがページ遷移する前に呼び出されます。
+
+
+
+`fetch` メソッドは第一引数として [コンテキスト](/api#コンテキスト) を受け取り、コンテキストを使ってデータを取得してデータをストアに入れることができます。fetch メソッドを非同期にするためには **Promise を返すようにしてください**。Nuxt.js はコンポーネントがレンダリングされる前に Promise が解決されるまで待ちます。
+
+
+
+`pages/index.vue` の例:
+
+```html
+
+ Stars: {{ $store.state.stars }}
+
+
+
+```
+
+
+
+async/await を使ってコードをスッキリさせることもできます:
+
+```html
+
+ Stars: {{ $store.state.stars }}
+
+
+
+```
diff --git a/ja/api/pages-head.md b/ja/api/pages-head.md
new file mode 100644
index 000000000..d63e42b1f
--- /dev/null
+++ b/ja/api/pages-head.md
@@ -0,0 +1,55 @@
+---
+title: "API: head メソッド"
+description: Nuxt.js はアプリケーションの `headers` 及び `html attributes` を更新するために vue-meta と使います。
+---
+
+
+
+
+
+
+# head メソッド
+
+
+
+> Nuxt.js はアプリケーションの `headers` 及び `html attributes` を更新するために [vue-meta](https://github.com/declandewet/vue-meta) を使います。
+
+
+
+- **タイプ:** `オブジェクト` または `関数`
+
+
+
+現在のページの HTML の head タグを設定するために `head` メソッド使います。
+
+
+
+コンポーネントのデータは `head` メソッド内で `this` を使って利用できます。ページのデータを使って独自のメタタグを設定することもできます。
+
+```html
+
+ {{ title }}
+
+
+
+```
+
+
+
+子コンポーネント利用されたときにメタ情報が重複してしまうことを避けるために `hid` キーでユニーク識別子を与えてください。これについてより深く理解するには [こちら](https://github.com/declandewet/vue-meta#lists-of-tags) を参照してください。
diff --git a/ja/api/pages-layout.md b/ja/api/pages-layout.md
new file mode 100644
index 000000000..41d8eb90b
--- /dev/null
+++ b/ja/api/pages-layout.md
@@ -0,0 +1,40 @@
+---
+title: "API: layout プロパティ"
+description: layouts ディレクトリの(第一階層の)ファイルはカスタムレイアウトになります。これらはページコンポーネントの layout プロパティで指定して利用できます。
+---
+
+
+
+
+
+
+# layout プロパティ
+
+
+
+> layouts ディレクトリの(第一階層の)ファイルはカスタムレイアウトになります。これらはページコンポーネントの layout プロパティで指定して利用できます。
+
+
+
+- **タイプ:** `文字列`(デフォルト: `'default'`)
+
+
+
+どのレイアウトを使うか指定するために、ページコンポーネントで `layout` キーを使ってください:
+
+```js
+export default {
+ layout: 'blog'
+}
+```
+
+
+
+この例では Nuxt.js は `layouts/blog.vue` ファイルをこのページコンポーネントのレイアウトとしてインクルードします。
+
+
+
+動作する様子を [デモ動画](https://www.youtube.com/watch?v=YOKnSTp7d38) で確認してみてください。
+
+
+Nuxt.js でレイアウトがどのように動作するかをより深く理解するには [layout ドキュメント](/guide/views#レイアウト) を参照してください。
diff --git a/ja/api/pages-middleware.md b/ja/api/pages-middleware.md
new file mode 100644
index 000000000..088e5a094
--- /dev/null
+++ b/ja/api/pages-middleware.md
@@ -0,0 +1,75 @@
+---
+title: "API: middleware プロパティ"
+description: アプリケーションの特定のページにミドルウェアを設定します。
+---
+
+
+
+
+
+
+# middleware プロパティ
+
+
+
+
+- タイプ: `文字列` または `配列`
+ - 要素: `文字列`
+
+
+
+アプリケーションの特定のページにミドルウェアを設定します。
+
+
+
+例:
+
+`pages/secret.vue`
+
+
+
+
+
+
+
+
+
+
+
+
+
+```html
+
+ シークレットページ
+
+
+
+```
+
+`middleware/authenticated.js`
+
+
+
+
+
+
+
+
+
+
+```js
+export default function ({ store, redirect }) {
+ // ユーザーが認証されていないとき
+ if (!store.state.authenticated) {
+ return redirect('/login')
+ }
+}
+```
+
+
+
+ミドルウェアについてより深く理解するには [ミドルウェアのガイド](/guide/routing#ミドルウェア) を参照してください。
diff --git a/ja/api/pages-scrolltotop.md b/ja/api/pages-scrolltotop.md
new file mode 100644
index 000000000..d5d6197e2
--- /dev/null
+++ b/ja/api/pages-scrolltotop.md
@@ -0,0 +1,39 @@
+---
+title: "API: scrollToTop プロパティ"
+description: scrollToTop プロパティで、ページをレンダリングする前にトップまでスクロールか否かを指定できます。
+---
+
+
+
+
+
+
+# scrollToTop プロパティ
+
+
+
+> scrollToTop プロパティで、ページをレンダリングする前にトップまでスクロールか否かを指定できます。
+
+
+
+- **タイプ:** `ブーリアン`(デフォルト: `false`)
+
+
+
+別のページへ遷移する際にトップまでスクロールしますが、子ルートがあるときはスクロール位置をキープする、というのが Nuxt.js のデフォルトの挙動です。子ルートをレンダリングするときにトップまでスクロールさせたいときは `scrollToTop: true` と設定してください:
+
+```html
+
+ My child component
+
+
+
+```
+
+
+
+スクロールについて Nuxt.js のデフォルトの挙動を上書きしたいときは [scrollBehavior オプション](/api/configuration-router#scrollBehavior) を参照してください。
diff --git a/ja/api/pages-transition.md b/ja/api/pages-transition.md
new file mode 100644
index 000000000..689cdd8cc
--- /dev/null
+++ b/ja/api/pages-transition.md
@@ -0,0 +1,168 @@
+---
+title: "API: transition プロパティ"
+description: Nuxt.js では transition コンポーネントを使って、ページ間を遷移する際のトランジション/アニメーションを行うことができます。
+---
+
+
+
+
+
+
+# transition プロパティ
+
+
+
+> Nuxt.js は [<transition>](http://vuejs.org/v2/guide/transitions.html#Transitioning-Single-Elements-Components) コンポーネントを使って、ページ間を遷移する際のトランジション/アニメーションを行うことができます。
+
+
+
+- **タイプ:** `文字列` または `オブジェクト` または `関数`
+
+
+
+特定のルートに対してカスタムトランジションを設定するには、ページコンポーネントに `transition` キーを追加してください。
+
+
+
+
+
+
+
+
+
+
+
+
+```js
+export default {
+ // 文字列を指定できます
+ transition: ''
+ // またはオブジェクト
+ transition: {}
+ // または関数
+ transition (to, from) {}
+}
+```
+
+
+
+## 文字列
+
+
+
+`transition` キーに文字列がセットされたときは `transition.name` として用いられます。
+
+```js
+export default {
+ transition: 'test'
+}
+```
+
+
+
+上のように設定されると、コンポーネントは次のようにセットされます:
+
+```html
+
+```
+
+
+
+## オブジェクト
+
+
+
+`transition` キーにオブジェクトがセットされたとき:
+
+```js
+export default {
+ transition: {
+ name: 'test',
+ mode: 'out-in'
+ }
+}
+```
+
+
+
+上のように設定されると、コンポーネントは次のようにセットされます:
+
+```html
+
+```
+
+
+
+`transition` オブジェクトが持つことができるプロパティは以下のとおり:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+| キー | タイプ | デフォルト | 定義 |
+|------|------|---------|-----------|
+| `name` | 文字列 | `"page"` | すべてのトランジション時に適用されるトランジション名 |
+| `mode` | 文字列 | `"out-in"` | すべてのトランジション時に適用されるトランジションモード。詳細は [Vue.js のドキュメント](http://vuejs.org/v2/guide/transitions.html#Transition-Modes) 参照 |
+| `css` | ブーリアン | `true` | CSS トランジションクラスを適用するか否か。デフォルトは true です。false を設定すると、コンポーネントのイベントで登録された JavaScript フックのみがトリガーになります |
+| `type` | 文字列 | `n/a` | トランジション終了のタイミングを判定するために待ち受けるトランジションのイベントタイプを指定します。"transition" または "animation" を指定できます。デフォルトでは、より時間がかかるほうのタイプが自動的に選ばれます |
+| `enterClass` | 文字列 | `n/a` | トランジション開始時の状態のクラスです。詳細は [Vue.js のドキュメント](https://vuejs.org/v2/guide/transitions.html#Custom-Transition-Classes) 参照 |
+| `enterToClass` | 文字列 | `n/a` | トランジション終了時の状態のクラスです。詳細は [Vue.js のドキュメント](https://vuejs.org/v2/guide/transitions.html#Custom-Transition-Classes) 参照 |
+| `enterActiveClass` | 文字列 | `n/a` | トランジション中に適用されるクラスです。詳細は [Vue.js のドキュメント](https://vuejs.org/v2/guide/transitions.html#Custom-Transition-Classes) 参照 |
+| `leaveClass` | 文字列 | `n/a` | トランジション開始時の状態のクラスです。詳細は [Vue.js のドキュメント](https://vuejs.org/v2/guide/transitions.html#Custom-Transition-Classes) 参照 |
+| `leaveToClass` | 文字列 | `n/a` | トランジション終了時の状態のクラスです。詳細は [Vue.js のドキュメント](https://vuejs.org/v2/guide/transitions.html#Custom-Transition-Classes) 参照 |
+| `leaveActiveClass` | 文字列 | `n/a` | トランジション中に適用されるクラスです。詳細は [Vue.js のドキュメント](https://vuejs.org/v2/guide/transitions.html#Custom-Transition-Classes) 参照 |
+
+
+
+`transition` の中でメソッドを定義することもでき、メソッドは [JavaScript フック](https://vuejs.org/v2/guide/transitions.html#JavaScript-Hooks) で使われます:
+
+- beforeEnter(el)
+- enter(el, done)
+- afterEnter(el)
+- enterCancelled(el)
+- beforeLeave(el)
+- leave(el, done)
+- afterLeave(el)
+- leaveCancelled(el)
+
+
+
+*メモ: JavaScript のみのトランジションのために明示的に `css: false` を追加しておくのは良いアイディアです。これは Vue は CSS 判定をスキップさせます。また誤って CSS ルールがトランジションに干渉するのを防ぎます。*
+
+
+
+## 関数
+
+
+
+`transition` キーに関数がセットされたとき:
+
+```js
+export default {
+ transition (to, from) {
+ if (!from) return 'slide-left'
+ return +to.query.page < +from.query.page ? 'slide-right' : 'slide-left'
+ }
+}
+```
+
+
+
+トランジションは各ページ遷移時に次のように適用されます:
+
+
+
+
+
+- `/` から `/posts` へ遷移するとき => `slide-left`
+- `/posts` から `/posts?page=3` へ遷移するとき => `slide-left`
+- `/posts?page=3` から `/posts?page=2` へ遷移するとき => `slide-right`
diff --git a/ja/api/pages-validate.md b/ja/api/pages-validate.md
new file mode 100644
index 000000000..20787e05e
--- /dev/null
+++ b/ja/api/pages-validate.md
@@ -0,0 +1,59 @@
+---
+title: "API: validate メソッド"
+description: Nuxt.js では動的なルーティングを行うコンポーネント内でバリデーションメソッドを定義できます。
+---
+
+
+
+
+
+
+# validate メソッド
+
+
+
+> Nuxt.js では動的なルーティングを行うコンポーネント内でバリデーションメソッドを定義できます。
+
+
+
+- **タイプ:** `関数`
+
+
+
+
+
+
+
+
+```js
+validate({ params, query }) {
+ return true // params バリデーションを通過したとき
+ return false // Nuxt.js がルートをレンダリングするのを中止して、エラーページを表示させる
+}
+```
+
+
+
+Nuxt.js では動的なルーティングを行うコンポーネント内でバリデーションメソッドを定義できます(下記の例は `pages/users/_id.vue` 内です)
+
+
+
+バリデーションメソッドが `true` を返さないときは Nuxt.js は自動的に 404 エラーページをロードします。
+
+
+
+
+
+
+
+
+
+
+```js
+export default {
+ validate ({ params }) {
+ // 数値でなければならない
+ return /^\d+$/.test(params.id)
+ }
+}
+```
diff --git a/ja/examples/async-data.md b/ja/examples/async-data.md
new file mode 100644
index 000000000..9084ffe9e
--- /dev/null
+++ b/ja/examples/async-data.md
@@ -0,0 +1,9 @@
+---
+title: 非同期データ
+description: Nuxt.js で非同期データを取り扱う例
+github: async-data
+documentation: /guide/async-data
+---
+
+
+
diff --git a/ja/examples/auth-routes.md b/ja/examples/auth-routes.md
new file mode 100644
index 000000000..c5edc038d
--- /dev/null
+++ b/ja/examples/auth-routes.md
@@ -0,0 +1,408 @@
+---
+title: 認証ルート
+description: Nuxt.js を使った認証ルートの例
+github: auth-routes
+livedemo: https://nuxt-auth-routes.gomix.me
+liveedit: https://gomix.com/#!/project/nuxt-auth-routes
+---
+
+
+
+
+
+
+
+
+
+# ドキュメント
+
+
+
+> Nuxt.js を使うと認証が必要なルートを簡単に作成できます。
+
+
+
+## express とセッションを使う
+
+
+
+アプリケーションにセッション機能を追加するために `express` と `express-session` を使います。そのために Nuxt.js をプログラムで使う必要があります。
+
+
+
+まず依存パッケージをインストールします:
+
+```bash
+yarn add express express-session body-parser whatwg-fetch
+```
+
+
+
+*`whatwg-fetch` については後ほど述べます。*
+
+
+
+それから `server.js` ファイルを作成します:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```js
+const Nuxt = require('nuxt')
+const bodyParser = require('body-parser')
+const session = require('express-session')
+const app = require('express')()
+
+// req.body へアクセスするために body-parser を使う
+app.use(bodyParser.json())
+
+// req.session を作成します
+app.use(session({
+ secret: 'super-secret-key',
+ resave: false,
+ saveUninitialized: false,
+ cookie: { maxAge: 60000 }
+}))
+
+// POST /api/login してログインし、認証されたユーザーを req.session.authUser に追加
+app.post('/api/login', function (req, res) {
+ if (req.body.username === 'demo' && req.body.password === 'demo') {
+ req.session.authUser = { username: 'demo' }
+ return res.json({ username: 'demo' })
+ }
+ res.status(401).json({ error: 'Bad credentials' })
+})
+
+// POST /api/logout してログアウトし、ログアウトしたユーザーを req.session から削除
+app.post('/api/logout', function (req, res) {
+ delete req.session.authUser
+ res.json({ ok: true })
+})
+
+// オプションとともに Nuxt.js をインスタンス化
+const isProd = process.env.NODE_ENV === 'production'
+const nuxt = new Nuxt({ dev: !isProd })
+
+// プロダクション環境ではビルドしない
+const promise = (isProd ? Promise.resolve() : nuxt.build())
+promise.then(() => {
+ app.use(nuxt.render)
+ app.listen(3000)
+ console.log('Server is listening on http://localhost:3000')
+})
+.catch((error) => {
+ console.error(error)
+ process.exit(1)
+})
+```
+
+
+
+また `package.json` scripts を更新します:
+
+```json
+// ...
+"scripts": {
+ "dev": "node server.js",
+ "build": "nuxt build",
+ "start": "NODE_ENV=production node server.js"
+}
+// ...
+```
+
+
+
+## ストアを使う
+
+
+
+アプリケーションが、ユーザーが認証されているか否かを **ページをまたいで** 知るためには、グローバルなステート(状態)が必要です。
+
+
+
+Nuxt.js が Vuex を使うよう `store/index.js` ファイルを作成します:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```js
+import Vue from 'vue'
+import Vuex from 'vuex'
+
+Vue.use(Vuex)
+
+// window.fetch() のためのポリフィル
+require('whatwg-fetch')
+
+const store = new Vuex.Store({
+ state: {
+ authUser: null
+ },
+
+ mutations: {
+ SET_USER: function (state, user) {
+ state.authUser = user
+ }
+ },
+
+ actions: {
+ // ...
+ }
+})
+
+export default store
+```
+
+
+
+
+
+
+1. `Vue` 及び `Vuex` をインポートし(これらは Nuxt.js 内でインクルードされています)、コンポーネント内で `$store` を使うために Vuex を使うことを Vue に伝えます
+2. すべてのブラウザで `fetch()` メソッドをポリフィルするために `require('whatwg-fetch')` します(詳しくは [fetch リポジトリ](https://github.com/github/fetch) 参照)
+3. `SET_USER` ミューテーションを作成します。これは認証されたユーザーを `state.authUser` にセットします
+4. Nuxt.js がストアインスタンスをメインアプリケーションに注入できるようにするため、ストアインスタンスをエクスポートします
+
+
+
+### nuxtServerInit() アクション
+
+
+
+Nuxt.js は `nuxtServerInit` と呼ばれる特定のアクションを、引数でコンテキストを渡して呼び出します。したがって、アプリケーションがロードされたとき、サーバーから取得できるデータがストアに既には入れられています。
+
+
+
+`store/index.js` 内に `nuxtServerInit` アクションを追加できます:
+
+```js
+nuxtServerInit ({ commit }, { req }) {
+ if (req.session && req.session.authUser) {
+ commit('SET_USER', req.session.authUser)
+ }
+}
+```
+
+
+
+### login() アクション
+
+
+
+`login` アクションを追加できます。このアクションはログインするためにページコンポーネントから呼び出されます:
+
+ログインするためにページコンポーネントから呼び出される `login` アクションを追加します:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```js
+login ({ commit }, { username, password }) {
+ return fetch('/api/login', {
+ // クライアントのクッキーをサーバーに送信
+ credentials: 'same-origin',
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify({
+ username,
+ password
+ })
+ })
+ .then((res) => {
+ if (res.status === 401) {
+ throw new Error('Bad credentials')
+ } else {
+ return res.json()
+ }
+ })
+ .then((authUser) => {
+ commit('SET_USER', authUser)
+ })
+}
+```
+
+
+
+### logout() メソッド
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```js
+logout ({ commit }) {
+ return fetch('/api/logout', {
+ // クライアントのクッキーをサーバーに送信
+ credentials: 'same-origin',
+ method: 'POST'
+ })
+ .then(() => {
+ commit('SET_USER', null)
+ })
+}
+```
+
+
+
+## ページコンポーネント
+
+
+
+ユーザーがアプリケーションで認証されているか否かをチェックするために、ページコンポーネント内で `$store.state.authUser` を使うことができます。
+
+
+
+### ユーザーが認証されていないときはリダイレクトする
+
+
+
+認証されたユーザーのみがコンテンツを閲覧できる `/secret` ルートを追加してみましょう:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```html
+
+
+
Super secret page
+ Back to the home page
+
+
+
+
+```
+
+
+
+ユーザーが認証されていなかったときは `fetch` メソッド内で `redirect('/')` が呼び出されます。
diff --git a/ja/examples/cached-components.md b/ja/examples/cached-components.md
new file mode 100644
index 000000000..791410c25
--- /dev/null
+++ b/ja/examples/cached-components.md
@@ -0,0 +1,9 @@
+---
+title: コンポーネントのキャッシュ
+description: コンポーネントのキャッシュを行う例
+github: cached-components
+documentation: /api/configuration-cache
+---
+
+
+
diff --git a/ja/examples/custom-loading.md b/ja/examples/custom-loading.md
new file mode 100644
index 000000000..071fe2c70
--- /dev/null
+++ b/ja/examples/custom-loading.md
@@ -0,0 +1,10 @@
+---
+title: カスタムローディングコンポーネント
+description: カスタムローディングコンポーネントの例
+github: custom-loading
+livedemo: https://custom-loading.nuxtjs.org
+documentation: /api/configuration-loading
+---
+
+
+
diff --git a/ja/examples/custom-routes.md b/ja/examples/custom-routes.md
new file mode 100644
index 000000000..21fd68e1b
--- /dev/null
+++ b/ja/examples/custom-routes.md
@@ -0,0 +1,10 @@
+---
+title: カスタムルーティング
+description: カスタムルーティングを行う例
+github: custom-routes
+livedemo: https://custom-routes.nuxtjs.org
+documentation: /guide/routing#動的なルーティング
+---
+
+
+
diff --git a/ja/examples/global-css.md b/ja/examples/global-css.md
new file mode 100644
index 000000000..c32bb88bf
--- /dev/null
+++ b/ja/examples/global-css.md
@@ -0,0 +1,10 @@
+---
+title: グローバル CSS
+description: グローバル CSS の例
+github: global-css
+livedemo: https://global-css.nuxtjs.org
+documentation: /api/configuration-css
+---
+
+
+
diff --git a/ja/examples/hello-world.md b/ja/examples/hello-world.md
new file mode 100644
index 000000000..0eb44f393
--- /dev/null
+++ b/ja/examples/hello-world.md
@@ -0,0 +1,12 @@
+---
+title: Hello World
+description: Hello World する例
+github: hello-world
+youtube: https://www.youtube.com/embed/kmf-p-pTi40
+livedemo: https://hello-world.nuxtjs.org
+liveedit: https://gomix.com/#!/project/nuxt-hello-world
+documentation: /guide/installation#スクラッチから始める
+---
+
+
+
diff --git a/ja/examples/i18n.md b/ja/examples/i18n.md
new file mode 100644
index 000000000..755532312
--- /dev/null
+++ b/ja/examples/i18n.md
@@ -0,0 +1,10 @@
+---
+title: 国際化(i18n)
+description: 国際化(i18n)の例
+github: i18n
+livedemo: https://i18n.nuxtjs.org
+documentation: /guide/routing#ミドルウェア
+---
+
+
+
diff --git a/ja/examples/layouts.md b/ja/examples/layouts.md
new file mode 100644
index 000000000..2766f5ffa
--- /dev/null
+++ b/ja/examples/layouts.md
@@ -0,0 +1,11 @@
+---
+title: レイアウト
+description: レイアウトの例
+github: custom-layouts
+livedemo: https://nuxt-custom-layouts.gomix.me/
+liveedit: https://gomix.com/#!/project/nuxt-custom-layouts
+documentation: /guide/views#レイアウト
+---
+
+
+
diff --git a/ja/examples/menu.json b/ja/examples/menu.json
new file mode 100644
index 000000000..c3472a19d
--- /dev/null
+++ b/ja/examples/menu.json
@@ -0,0 +1,33 @@
+[
+ {
+ "title": "基本的な使い方",
+ "links": [
+ { "name": "Hello world", "to": "" },
+ { "name": "SEO HTML Head", "to": "/seo-html-head" }
+ ]
+ },
+ {
+ "title": "カスタマイズ",
+ "links": [
+ { "name": "コンポーネントのキャッシュ", "to": "/cached-components" },
+ { "name": "カスタムローディング", "to": "/custom-loading" },
+ { "name": "カスタムルーティング", "to": "/custom-routes" },
+ { "name": "グローバル CSS", "to": "/global-css" },
+ { "name": "レイアウト", "to": "/layouts" },
+ { "name": "ミドルウェア", "to": "/middleware" },
+ { "name": "ネストされたルート", "to": "/nested-routes" },
+ { "name": "プラグイン", "to": "/plugins" },
+ { "name": "ページ遷移時のトランジション", "to": "/routes-transitions" }
+ ]
+ },
+ {
+ "title": "高度な使い方",
+ "links": [
+ { "name": "非同期データ", "to": "/async-data" },
+ { "name": "認証ルート", "to": "/auth-routes" },
+ { "name": "Vuex ストア", "to": "/vuex-store" },
+ { "name": "国際化(i18n)", "to": "/i18n" },
+ { "name": "テスト", "to": "/testing" }
+ ]
+ }
+]
diff --git a/ja/examples/middleware.md b/ja/examples/middleware.md
new file mode 100644
index 000000000..1cddc895c
--- /dev/null
+++ b/ja/examples/middleware.md
@@ -0,0 +1,10 @@
+---
+title: ミドルウェア
+description: ミドルウェアの例
+github: middleware
+livedemo: https://middleware.nuxtjs.org
+documentation: /guide/routing#ミドルウェア
+---
+
+
+
diff --git a/ja/examples/nested-routes.md b/ja/examples/nested-routes.md
new file mode 100644
index 000000000..e9ab70bd4
--- /dev/null
+++ b/ja/examples/nested-routes.md
@@ -0,0 +1,10 @@
+---
+title: ネストされたルート
+description: ネストされたルートの例
+github: nested-routes
+livedemo: https://nested-routes.nuxtjs.org
+documentation: /guide/routing#ネストされたルート
+---
+
+title: Nested Routes
+description: Nested Routes example with Nuxt.js
diff --git a/ja/examples/plugins.md b/ja/examples/plugins.md
new file mode 100644
index 000000000..d4ffe0596
--- /dev/null
+++ b/ja/examples/plugins.md
@@ -0,0 +1,10 @@
+---
+title: プラグイン
+description: 外部モジュール及びプラグインを利用する例
+github: plugins-vendor
+livedemo: https://plugins-vendor.nuxtjs.org
+documentation: /guide/plugins
+---
+
+
+
diff --git a/ja/examples/routes-transitions.md b/ja/examples/routes-transitions.md
new file mode 100644
index 000000000..1b289d607
--- /dev/null
+++ b/ja/examples/routes-transitions.md
@@ -0,0 +1,11 @@
+---
+title: ページ遷移時のトランジション
+description: ページ間を遷移する際のトランジションの例
+github: routes-transitions
+youtube: https://www.youtube.com/embed/RIXOzJWFfc8
+livedemo: https://routes-transitions.nuxtjs.org
+documentation: /guide/routing#トランジション
+---
+
+
+
diff --git a/ja/examples/seo-html-head.md b/ja/examples/seo-html-head.md
new file mode 100644
index 000000000..c47954aa6
--- /dev/null
+++ b/ja/examples/seo-html-head.md
@@ -0,0 +1,10 @@
+---
+title: SEO HTML Head
+description: SEO のために HTML の head 情報を設定する例
+github: head-elements
+livedemo: https://head-elements.nuxtjs.org
+documentation: /guide/views#html-の-head-情報
+---
+
+
+
diff --git a/ja/examples/testing.md b/ja/examples/testing.md
new file mode 100644
index 000000000..1c759aded
--- /dev/null
+++ b/ja/examples/testing.md
@@ -0,0 +1,9 @@
+---
+title: テスト
+description: テストの例
+github: with-ava
+documentation: /guide/development-tools#エンドツーエンドテスト
+---
+
+
+
diff --git a/ja/examples/vuex-store.md b/ja/examples/vuex-store.md
new file mode 100644
index 000000000..33dfb1ac9
--- /dev/null
+++ b/ja/examples/vuex-store.md
@@ -0,0 +1,10 @@
+---
+title: Vuex ストア
+description: Nuxt.js で Vuex ストアを使う例
+github: vuex-store
+livedemo: https://vuex-store.nuxtjs.org
+documentation: /guide/vuex-store
+---
+
+
+
diff --git a/ja/faq/async-data-components.md b/ja/faq/async-data-components.md
new file mode 100644
index 000000000..ebcef579d
--- /dev/null
+++ b/ja/faq/async-data-components.md
@@ -0,0 +1,29 @@
+---
+title: コンポーネント内の非同期データ
+description: コンポーネント内で非同期データを扱うには?
+---
+
+
+
+
+
+
+# コンポーネント内で非同期データを扱うには?
+
+
+
+コンポーネントはルートに関連付けられていないため(訳注: 基本的には)非同期データを扱うことはできません。Nuxt.js ではルートに関連付けられたコンポーネント(訳注: pages ディレクトリ内のコンポーネントのこと)の data() メソッドに手を加えて非同期データを扱えるようにしています。
+
+
+
+しかしながら、サブコンポーネント(訳注: components ディレクトリ内のコンポーネントのこと)でも非同期データを扱えるようにする方法が 2つあります:
+
+
+
+
+1. mounted() フック内に API コールを作成し、その呼び出し以降にデータをセットすること。マイナスな側面としては、サーバーサイドレンダリングできなくなります。
+2. ページコンポーネントの data() メソッド内に API コールを作成し、データをプロパティとしてサブコンポーネントに渡すこと。この方法ではサーバーサイドレンダリングできます。しかしページの data() メソッドがサブコンポーネントの非同期データをロードするため、可読性が落ちるかもしれません。
+
+
+
+どちらを選ぶべきかは、サブコンポーネントをサーバーサイドレンダリングしたいか否かにかかっています。
diff --git a/ja/faq/css-flash.md b/ja/faq/css-flash.md
new file mode 100644
index 000000000..583bf6b8d
--- /dev/null
+++ b/ja/faq/css-flash.md
@@ -0,0 +1,21 @@
+---
+title: CSS Flash
+description: なぜ CSS Flash が見えるのか?
+---
+
+
+
+
+
+
+# なぜ CSS Flash が見えるのか?
+
+
+
+
+
+これが見えるのは Webpack をとおしてホットリローディングする **開発モード** でビルドした JavaScript の中に CSS が埋め込まれているためです。
+
+
+
+大丈夫です。プロダクションモードでは CSS は分離されて head に置かれるため、このような "flash" は見えません。
diff --git a/ja/faq/duplicated-meta-tags.md b/ja/faq/duplicated-meta-tags.md
new file mode 100644
index 000000000..cf4767a61
--- /dev/null
+++ b/ja/faq/duplicated-meta-tags.md
@@ -0,0 +1,61 @@
+---
+title: 重複したメタタグ
+description: メタタグが重複したときは?
+---
+
+
+
+
+
+
+# メタタグが重複したときは?
+
+
+
+これは [vue-meta](https://github.com/declandewet/vue-meta) の "特徴" です。[head 要素のドキュメント](/guide/views#html-の-head-情報) を参照してください。
+
+
+
+コンポーネントで vue-meta が使われたときに重複を避けるためには、ユニーク識別子を hid キーで付与してください。詳細は [こちら](https://github.com/declandewet/vue-meta#lists-of-tags) を参照してください。
+
+
+
+例えば description のメタタグについて、`hid` ユニーク識別子を付与する必要があります。そうすれば vue-meta は、デフォルトのタグを上書きすべきということを知ることができます。
+
+
+
+`nuxt.config.js`:
+
+```js
+...head: {
+ title: 'starter',
+ meta: [
+ { charset: 'utf-8' },
+ { name: 'viewport', content: 'width=device-width, initial-scale=1' },
+ { name: 'keywords', content: 'keyword 1, keyword 2'},
+ { hid: 'description', name: 'description', content: 'This is the generic description.'}
+ ],
+ },
+...
+```
+
+
+
+それから個別ページには次のように記述します:
+
+```js
+export default {
+ head () {
+ return {
+ title: `Page 1 (${this.name}-side)`,
+ meta: [
+ { hid: 'description', name: 'description', content: "Page 1 description" }
+ ],
+ }
+ }
+}
+```
+
+
+
+ページ内の `head` プロパティの使い方をより深く理解するには [HTML の head 情報のドキュメント](/guide/views#html-の-head-情報) を参照してください。
diff --git a/ja/faq/extend-webpack.md b/ja/faq/extend-webpack.md
new file mode 100644
index 000000000..4953adfbc
--- /dev/null
+++ b/ja/faq/extend-webpack.md
@@ -0,0 +1,25 @@
+---
+title: Webpack 設定を拡張する
+description: Webpack の設定を拡張するには?
+---
+
+
+
+
+
+
+# Webpack の設定を拡張するには?
+
+
+
+`nuxt.config.js` 内の `extend` オプションで Webpack の設定を拡張できます:
+
+```js
+module.exports = {
+ build: {
+ extend (config, { isDev, isClient }) {
+ // ...
+ }
+ }
+}
+```
diff --git a/ja/faq/external-resources.md b/ja/faq/external-resources.md
new file mode 100644
index 000000000..3321ee8fd
--- /dev/null
+++ b/ja/faq/external-resources.md
@@ -0,0 +1,59 @@
+---
+title: 外部リソース
+description: Nuxt.js で外部リソースを使うには?
+---
+
+
+
+
+
+
+# 外部リソースを使うには?
+
+
+
+## グローバルな設定
+
+
+
+`nuxt.config.js` ファイル内でリソースをインクルードします:
+
+```js
+module.exports = {
+ head: {
+ script: [
+ { src: 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js' }
+ ],
+ link: [
+ { rel: 'stylesheet', href: 'https://fonts.googleapis.com/css?family=Roboto' }
+ ]
+ }
+}
+```
+
+
+
+## ローカルな設定
+
+
+
+pages ディレクトリの .vue ファイル内でリソースをインクルードします:
+
+```html
+
+ About page with jQuery and Roboto font
+
+
+
+```
diff --git a/ja/faq/github-pages.md b/ja/faq/github-pages.md
new file mode 100644
index 000000000..5e5d9b520
--- /dev/null
+++ b/ja/faq/github-pages.md
@@ -0,0 +1,70 @@
+---
+title: Github Pages へデプロイ
+description: Github Pages へデプロイするには?
+---
+
+
+
+
+
+
+# Github Pages へデプロイするには?
+
+
+
+Nuxt.js を使うと、例えば [Github Pages](https://pages.github.com/) のような静的ホスティングサービスで、ウェブアプリケーションをホストすることが可能です。
+
+
+
+Github Pages へデプロイするには、静的なウェブアプリケーションを生成する必要があります:
+
+```bash
+npm run generate
+```
+
+
+
+このとき dist フォルダが作成され、その中に Github Pages ホスティングへデプロイされるものがすべて入ります。
+
+
+
+プロジェクトリポジトリならば `gh-pages` ブランチ、ユーザーまたは組織サイトならば `master` ブランチを指定してください。
+
+
+
+## コマンドラインでデプロイする
+
+
+
+[push-dir package](https://github.com/L33T-KR3W/push-dir) を使うこともできます:
+
+
+
+まず npm でインストールしてください:
+
+```bash
+npm install push-dir --save-dev
+```
+
+
+
+`deploy` コマンドを package.json に追加してください。ブランチは、プロジェクトリポジトリならば `gh-pages` ブランチ、ユーザーまたは組織サイトならば `master` ブランチを指定してください。
+
+```js
+"scripts": {
+ "dev": "nuxt",
+ "build": "nuxt build",
+ "start": "nuxt start",
+ "generate": "nuxt generate",
+ "deploy": "push-dir --dir=dist --branch=gh-pages --cleanup"
+},
+```
+
+
+
+それから静的なアプリケーションを生成し、デプロイしてください:
+
+```bash
+npm run generate
+npm run deploy
+```
diff --git a/ja/faq/google-analytics.md b/ja/faq/google-analytics.md
new file mode 100644
index 000000000..d69ca33aa
--- /dev/null
+++ b/ja/faq/google-analytics.md
@@ -0,0 +1,111 @@
+---
+title: Google アナリティクスの統合
+description: Google アナリティクスを使うには?
+---
+
+
+
+
+
+
+# Google アナリティクスを使うには?
+
+
+
+Nuxt.js アプリケーションで [Google アナリティクス](https://analytics.google.com/analytics/web/) を使うには `plugins/ga.js` というファイルを作成することを推奨します:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```js
+/*
+** クライアントサイドかつプロダクションモードでのみ実行
+*/
+if (process.BROWSER_BUILD && process.env.NODE_ENV === 'production') {
+ /*
+ ** Google アナリティクスのスクリプトをインクルード
+ */
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+ })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+ /*
+ ** 現在のページをセット
+ */
+ ga('create', 'UA-XXXXXXXX-X', 'auto')
+ ga('send', 'pageview')
+ /*
+ ** アプリケーションがマウントしたとき
+ */
+ window.onNuxtReady((app) => {
+ /*
+ ** ルートが変更されるたびに
+ */
+ app.$nuxt.$on('routeChanged', (to, from) => {
+ /*
+ ** Google アナリティクスにページビューが追加されたことを伝える
+ */
+ ga('set', 'page', to.fullPath)
+ ga('send', 'pageview')
+ })
+ })
+}
+```
+
+
+
+> `UA-XXXXXXXX-X`を Google アナリティクスのトラッキング ID に置き換えてください。
+
+
+
+それから `plugins/ga.js` をメインアプリケーション内でインポートすることを Nuxt.js に伝えます:
+
+`nuxt.config.js`
+
+```js
+module.exports = {
+ plugins: [
+ '~plugins/ga.js'
+ ]
+}
+```
+
+
+
+よし!これで Google アナリティクスは Nuxt.js アプリケーションに統合され、すべてのページビューをトラッキングするようになりました!
+
+
+
+情報: 他のトラッキングサービスでも、同様の方法を使うことができます。
diff --git a/ja/faq/heroku-deployment.md b/ja/faq/heroku-deployment.md
new file mode 100644
index 000000000..75e07720c
--- /dev/null
+++ b/ja/faq/heroku-deployment.md
@@ -0,0 +1,63 @@
+---
+title: Heroku へデプロイ
+description: Heroku へデプロイするには?
+---
+
+
+
+
+
+
+# Heroku へデプロイするには?
+
+
+
+[Node.js 用の Heroku ドキュメント](https://devcenter.heroku.com/articles/nodejs-support) をお読みになることをお勧めします。
+
+
+
+まず `npm run build` を実行できるようにするために、Heroku にプロジェクトの `devDependencies` をインストールすることを伝える必要があります:
+
+```bash
+heroku config:set NPM_CONFIG_PRODUCTION=false
+```
+
+
+
+またアプリケーションに `0.0.0.0` ポートを Listen させ、プロダクションモードで起動します:
+
+```bash
+heroku config:set HOST=0.0.0.0
+heroku config:set NODE_ENV=production
+```
+
+
+
+下記は Heroku ダッシュボードの Settings セクションに表示されています:
+
+ 
+
+
+
+それから `package.json` 内の `heroku-postbuild` スクリプトを使って、Heroku に `npm run build` を実行するよう伝えます:
+
+```js
+"scripts": {
+ "dev": "nuxt",
+ "build": "nuxt build",
+ "start": "nuxt start",
+ "heroku-postbuild": "npm run build"
+}
+```
+
+
+
+最後にアプリケーションを Heroku に git push します:
+
+```bash
+git push heroku master
+```
+
+
+
+やりました!これで Nuxt.js アプリケーションは Heroku でホストされるようになりました!
diff --git a/ja/faq/host-port.md b/ja/faq/host-port.md
new file mode 100644
index 000000000..efc8538cc
--- /dev/null
+++ b/ja/faq/host-port.md
@@ -0,0 +1,41 @@
+---
+title: ホストとポート番号
+description: Nuxt.js でホストとポート番号を変更するには?
+---
+
+
+
+
+
+
+# ホストとポート番号を変更するには?
+
+
+
+ポート番号を設定するには 2つの異なる方法があります:
+
+
+
+- 環境変数を使う
+
+```js
+"scripts": {
+ "dev": "HOST=0.0.0.0 PORT=3333 nuxt"
+}
+```
+
+
+
+- `package.json` 内の nuxt 設定を使う:
+
+```js
+"config": {
+ "nuxt": {
+ "host": "0.0.0.0",
+ "port": "3333"
+ }
+},
+"scripts": {
+ "dev": "nuxt"
+}
+```
diff --git a/ja/faq/jsx.md b/ja/faq/jsx.md
new file mode 100644
index 000000000..0245ca36f
--- /dev/null
+++ b/ja/faq/jsx.md
@@ -0,0 +1,58 @@
+---
+title: JSX
+description: Nuxt.js で JSX を使うには?
+---
+
+
+
+
+
+
+# JSX を使うには?
+
+
+
+コンポーネントで JSX を使いたい場合は、まず JSX のための Babel プラグインをインストールする必要があります:
+
+```bash
+npm install --save-dev babel-plugin-syntax-jsx babel-plugin-transform-vue-jsx babel-helper-vue-jsx-merge-props
+```
+
+
+
+それから `nuxt.config.js` 内で [transform-vue-jsx](https://github.com/vuejs/babel-plugin-transform-vue-jsx) プラグインを使うことを Nuxt.js に伝えます:
+
+```js
+module.exports = {
+ build: {
+ babel: {
+ plugins: ['transform-vue-jsx']
+ }
+ }
+}
+```
+
+
+
+Babel のオプションをより深く理解するには [ビルド設定のドキュメント](/api/configuration-build) を参照してください。
+
+
+
+ここまでの設定で、コンポーネントの `render` メソッド内で JSX が使えるようになっています:
+
+```html
+
+```
+
+
+
+JSX の使い方をより深く理解するには Vue.js ドキュメントの [JSX のセクション](https://vuejs.org/v2/guide/render-function.html#JSX) を参照してください。
diff --git a/ja/faq/menu.json b/ja/faq/menu.json
new file mode 100644
index 000000000..2eb6f68d9
--- /dev/null
+++ b/ja/faq/menu.json
@@ -0,0 +1,33 @@
+[
+ {
+ "title": "設定",
+ "links": [
+ { "name": "外部リソースを使うには?", "to": "" },
+ { "name": "プリプロセッサを使うには?", "to": "/pre-processors" },
+ { "name": "JSX を使うには?", "to": "/jsx" },
+ { "name": "PostCSS プラグインを追加するには?", "to": "/postcss-plugins" },
+ { "name": "Webpack の設定を拡張するには?", "to": "/extend-webpack" },
+ { "name": "Webpack プラグインを追加するには?", "to": "/webpack-plugins" },
+ { "name": "ホストとポート番号を変更するには?", "to": "/host-port" },
+ { "name": "Google アナリティクスを使うには?", "to": "/google-analytics" }
+ ]
+ },
+ {
+ "title": "開発",
+ "links": [
+ { "name": "window または document が undefined のときは?", "to": "/window-document-undefined" },
+ { "name": "なぜ CSS Flash が見えるのか?", "to": "/css-flash" },
+ { "name": "コンポーネント内で非同期データを扱うには?", "to": "/async-data-components" },
+ { "name": "メタタグが重複したときは?", "to": "/duplicated-meta-tags" }
+ ]
+ },
+ {
+ "title": "デプロイ",
+ "links": [
+ { "name": "Heroku へデプロイするには?", "to": "/heroku-deployment" },
+ { "name": "Now を使ってデプロイするには?", "to": "/now-deployment" },
+ { "name": "Surge.sh へデプロイするには?", "to": "/surge-deployment" },
+ { "name": "Github Pages へデプロイするには?", "to": "/github-pages" }
+ ]
+ }
+]
diff --git a/ja/faq/now-deployment.md b/ja/faq/now-deployment.md
new file mode 100644
index 000000000..db41cf3ca
--- /dev/null
+++ b/ja/faq/now-deployment.md
@@ -0,0 +1,37 @@
+---
+title: Now を使ったデプロイ
+description: Now を使ってデプロイするには?
+---
+
+
+
+
+
+
+# Now を使ってデプロイするには?
+
+
+
+[now.sh](https://zeit.co/now) を使ってデプロイするには `package.json` を次のように記述することが推奨されます:
+
+```json
+{
+ "name": "my-app",
+ "dependencies": {
+ "nuxt": "latest"
+ },
+ "scripts": {
+ "dev": "nuxt",
+ "build": "nuxt build",
+ "start": "nuxt start"
+ }
+}
+```
+
+
+
+これで `now` を実行できます!エンジョイ!
+
+
+
+メモ: `.nuxt` を `.npmignore` または `.gitignore` に入れておくことをお勧めします。
diff --git a/ja/faq/postcss-plugins.md b/ja/faq/postcss-plugins.md
new file mode 100644
index 000000000..1dfa5bf98
--- /dev/null
+++ b/ja/faq/postcss-plugins.md
@@ -0,0 +1,27 @@
+---
+title: PostCSS プラグイン
+description: PostCSS プラグインを追加するには?
+---
+
+
+
+
+
+
+# PostCSS プラグインを追加するには?
+
+
+
+`nuxt.config.js` ファイル内に次のように記述します:
+
+```js
+module.exports = {
+ build: {
+ postcss: [
+ require('postcss-nested')(),
+ require('postcss-responsive-type')(),
+ require('postcss-hexrgba')(),
+ ]
+ }
+}
+```
diff --git a/ja/faq/pre-processors.md b/ja/faq/pre-processors.md
new file mode 100644
index 000000000..d34bd9297
--- /dev/null
+++ b/ja/faq/pre-processors.md
@@ -0,0 +1,43 @@
+---
+title: プリプロセッサ
+description: Nuxt.js でプリプロセッサを使うには?
+---
+
+
+
+
+
+
+# プリプロセッサを使うには?
+
+
+
+[vue-loader](http://vue-loader.vuejs.org/en/configurations/pre-processors.html) のおかげで、ただ `lang` 属性を使うだけで `` や `
+
+
+```
+
+
+
+これらのプリプロセッサを使うために Webpack のローダーをインストールする必要があります。
+
+```bash
+npm install --save-dev pug@2.0.0-beta6 pug-loader coffee-script coffee-loader node-sass sass-loader
+```
diff --git a/ja/faq/surge-deployment.md b/ja/faq/surge-deployment.md
new file mode 100644
index 000000000..84c2c3001
--- /dev/null
+++ b/ja/faq/surge-deployment.md
@@ -0,0 +1,55 @@
+---
+title: Surge へデプロイ
+description: Surge.sh へデプロイするには?
+---
+
+
+
+
+
+
+# Surge.sh へデプロイするには?
+
+
+
+Nuxt.js を使うと、例えば [surge.sh](https://surge.sh/) のような静的ホスティングサービスで、ウェブアプリケーションをホストすることが可能です。
+
+
+
+surge.sh へデプロイするには、まず surge をインストールします:
+
+```bash
+npm install -g surge
+```
+
+
+
+それから Nuxt.js にウェブアプリケーションを生成させます:
+
+```bash
+npm run generate
+```
+
+
+
+このとき `dist` フォルダが作成され、その中に静的ホスティングサービスへデプロイされるものがすべて入ります。
+
+
+
+そして surge.sh へデプロイできます:
+
+```bash
+surge dist/
+```
+
+
+
+これで完了です。:)
+
+
+
+プロジェクトが [動的なルーティング](/guide/routing#動的なルーティング) をしている場合は、動的なルーティングをどのように生成するかを Nuxt.js に伝えるために [生成の設定](/api/configuration-generate) を参照してください。
+
+
+
+`nuxt generate` でウェブアプリケーションを生成するときは [data()](/guide/async-data#the-data-method) や [fetch()](/guide/vuex-store#the-fetch-method) に渡される [context](/api) が `req` 及び `res` を持っていません。
diff --git a/ja/faq/webpack-plugins.md b/ja/faq/webpack-plugins.md
new file mode 100644
index 000000000..78682f2bb
--- /dev/null
+++ b/ja/faq/webpack-plugins.md
@@ -0,0 +1,31 @@
+---
+title: Webpack プラグイン
+description: Webpack プラグインを追加するには?
+---
+
+
+
+
+
+
+# Webpack プラグインを追加するには?
+
+
+
+`nuxt.config.js` ファイル内に次のように記述します:
+
+```js
+const webpack = require('webpack')
+
+module.exports = {
+ build: {
+ plugins: [
+ new webpack.ProvidePlugin({
+ '$': 'jquery',
+ '_': 'lodash'
+ // ...etc.
+ })
+ ]
+ }
+}
+```
diff --git a/ja/faq/window-document-undefined.md b/ja/faq/window-document-undefined.md
new file mode 100644
index 000000000..6d3511907
--- /dev/null
+++ b/ja/faq/window-document-undefined.md
@@ -0,0 +1,39 @@
+---
+title: window または document が undefined
+description: Nuxt.js で window または document が undefined のときは?
+---
+
+
+
+
+
+
+# window または document が undefined のときは?
+
+
+
+このエラーはサーバーサイドレンダリングに起因しています。
+
+
+
+あるリソースをクライアントサイドでのみインポートしたいときは `process.BROWSER_BUILD` 変数を使う必要があります。
+
+
+
+例えば .vue ファイルに次のように書きます:
+
+```js
+if (process.BROWSER_BUILD) {
+ require('external_library')
+}
+```
+
+
+
+`nuxt.config.js` ファイル内で当該ライブラリを [vendor バンドル](/api/configuration-build#vendor) に加えておくのを忘れないでください。
+
+```js
+ build: {
+ vendor: ['external_library']
+ }
+```
diff --git a/ja/guide/assets.md b/ja/guide/assets.md
new file mode 100644
index 000000000..800c2c6a5
--- /dev/null
+++ b/ja/guide/assets.md
@@ -0,0 +1,153 @@
+---
+title: アセット
+description: Nuxt.js はアセットファイルを配信するために(デフォルトでは)Webpack のローダーとして vue-loader、file-loader 及び url-loader を使います。しかし Webpack の取り扱う対象としない静的ファイル専用のディレクトリを使うこともできます。
+---
+
+
+
+
+
+
+> Nuxt.js はアセットファイルを配信するために(デフォルトでは)Webpack のローダーとして vue-loader、file-loader 及び url-loader を使います。しかし Webpack の取り扱う対象としない静的ファイル専用のディレクトリを使うこともできます。
+
+
+
+## Webpack で取り扱う
+
+
+
+デフォルトでは [vue-loader](http://vue-loader.vuejs.org/en/) は `css-loader` 及び `vue-template-compiler` を用いて、スタイルやテンプレートファイルを処理します。このコンパイル処理の中で、`
` や `background: url(...)` や CSS `@import` などのすべての URL はモジュールの依存関係のように解決されます。
+
+
+
+例えば、次のようなファイルがあるとします:
+
+```bash
+-| assets/
+----| image.png
+-| pages/
+----| index.vue
+```
+
+
+
+CSS で `url('~assets/image.png')` と書いていたら、それは `require('~assets/image.png')` に変換されます。
+
+
+
+あるいは `pages/index.vue` の中で下記のように書いていたとします:
+
+```html
+
+
+
+```
+
+
+
+それは次のようにコンパイルされます:
+
+```js
+createElement('img', { attrs: { src: require('~assets/image.png') }})
+```
+
+
+
+PNG ファイル JavaScript ファイルではないため、Nuxt.js は Webpack が PNG ファイルを扱えるように [file-loader](https://github.com/webpack/file-loader) と [url-loader](https://github.com/webpack/url-loader) を使う設定を行います。
+
+
+
+file-loader と url-loader の役割:
+
+
+
+
+- `file-loader` はアセットファイルをどこにコピーし配置すべきか、また、ファイル名をどうすべきかを決定します。ファイル名は上手にキャッシュするためにバージョンのハッシュ値を含める等を行います。
+- `url-loader` はもしファイルサイズが閾値よりも小さければ、ファイルの内容を Base64 エンコードして埋め込みます。こうすると小さなファイルを取得するための HTTP リクエストの数を減らすことができます。一方で、もしファイルサイズが閾値よりも大きければ、自動的に `file-loader` にフォールバックします。
+
+
+
+実際には Nuxt.js のデフォルトのローダー設定は次のようになっています:
+
+```js
+[
+ {
+ test: /\.(png|jpe?g|gif|svg)$/,
+ loader: 'url-loader',
+ query: {
+ limit: 1000, // 1KO
+ name: 'img/[name].[hash:7].[ext]'
+ }
+ },
+ {
+ test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
+ loader: 'url-loader',
+ query: {
+ limit: 1000, // 1 KO
+ name: 'fonts/[name].[hash:7].[ext]'
+ }
+ }
+]
+```
+
+
+
+ファイルサイズが 1KB を下回るファイルはすべて Base64 エンコードされて埋め込まれます。反対に 1KB を上回る画像やフォントは(`.nuxt` ディレクトリ配下の)対応するディレクトリにコピーされます。このときファイル名はうまくキャッシュさせるためにバージョンのハッシュ値を含んだものになります。
+
+
+
+アプリケーションを `nuxt` コマンドで起動するとき、`pages/index.vue` 内のテンプレートは下記のようになっており:
+
+```html
+
+
+
+```
+
+
+
+そこから次のように生成されます:
+
+```html
+
+```
+
+
+
+これらのローダーの設定を更新したり、ローダーを使わないようにするには、[ローダー設定](/api/configuration-build#loaders) を参照してください。
+
+
+
+## Webpack で扱わない静的ファイル
+
+
+
+Webpack で扱う対象となる `assets` ディレクトリを使いたくない場合は、プロジェクトのルートディレクトリに `static` ディレクトリを作成して利用することができます。
+
+
+
+これらのファイルは自動的に Nuxt.js により配信され、またプロジェクトのルート URL からアクセス可能になります。
+
+
+
+このオプションは `robots.txt` や `sitemap.xml` などのファイルの扱いに役立ちます。
+
+
+
+`/` URL からそれらのファイルを参照できます:
+
+
+
+
+
+
+
+
+
+```html
+
+
+
+
+
+```
diff --git a/ja/guide/async-data.md b/ja/guide/async-data.md
new file mode 100644
index 000000000..8f841be3e
--- /dev/null
+++ b/ja/guide/async-data.md
@@ -0,0 +1,192 @@
+---
+title: 非同期なデータ
+description: Nuxt.js はコンポーネントのデータをセットする前に非同期の処理を行えるようにするために、Vue.js の data メソッドに手を加えています。
+---
+
+
+
+
+
+
+> Nuxt.js はコンポーネントのデータをセットする前に非同期の処理を行えるようにするために、Vue.js の `data` メソッドに手を加えています。
+
+
+
+## data メソッド
+
+
+
+`data` メソッドはコンポーネント(ページコンポーネントに限ります)が読み込まれる前に毎回呼び出されます。サーバーサイドレンダリングや、ユーザーがページを遷移する前にも呼び出されます。そしてこのメソッドは第一引数として [コンテキスト](/api#コンテキスト) を受け取り、コンテキストを使ってデータを取得してコンポーネントのデータを返すことができます。
+
+
+
+`data` メソッド内の `this` を通してコンポーネントのインスタンスにアクセスすることは **できません**。それはコンポーネントがインスタンス化される前に data メソッドが呼び出されるためです。
+
+
+
+Nuxt.js では data メソッドを非同期にするために、いくつかの異なるやり方があるので、お好きなものを選んでください:
+
+
+
+
+
+1. `Promise` を返す。Nuxt.js はコンポーネントがレンダリングされる前に Promise が解決されるまで待ちます
+2. [async/await](https://github.com/lukehoban/ecmascript-asyncawait) を使う([より深く理解する](https://zeit.co/blog/async-and-await))
+3. 第二引数としてコールバックを定義する。右のように呼び出される必要があります: `callback(err, data)`
+
+
+
+### Promise を返す
+
+```js
+export default {
+ data ({ params }) {
+ return axios.get(`https://my-api/posts/${params.id}`)
+ .then((res) => {
+ return { title: res.data.title }
+ })
+ }
+}
+```
+
+
+
+### async/await を使う
+
+```js
+export default {
+ async data ({ params }) {
+ let { data } = await axios.get(`https://my-api/posts/${params.id}`)
+ return { title: data.title }
+ }
+}
+```
+
+
+
+### コールバックを使う
+
+```js
+export default {
+ data ({ params }, callback) {
+ axios.get(`https://my-api/posts/${params.id}`)
+ .then((res) => {
+ callback(null, { title: res.data.title })
+ })
+ }
+}
+```
+
+
+
+### オブジェクトを返す
+
+
+
+もし非同期に実行する必要がなければ、シンプルにオブジェクトを返すことができます:
+
+```js
+export default {
+ data (context) {
+ return { foo: 'bar' }
+ }
+}
+```
+
+
+
+### データを表示する
+
+
+
+data メソッドがセットされると、下記のように template の内側でデータを表示することができます:
+
+```html
+
+ {{ title }}
+
+```
+
+
+
+## コンテキスト
+
+
+
+`context` 内で利用できるキーの一覧を確認するには [ページ data API](/api) を参照してください。
+
+
+
+## エラー処理
+
+
+
+Nuxt.js は `context` の中に `error(params)` メソッドを追加しています。これを呼び出すことでエラーページを表示できます。
+
+
+
+`Promise` を使った例:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```js
+export default {
+ data ({ params, error }) {
+ return axios.get(`https://my-api/posts/${params.id}`)
+ .then((res) => {
+ return { title: res.data.title }
+ })
+ .catch((e) => {
+ error({ statusCode: 404, message: 'ページが見つかりません' })
+ })
+ }
+}
+```
+
+
+
+`callback` 引数を使っているときは、直接、エラー内容と共に callback を呼び出すことができ、そうすると Nuxt.js は `error` メソッドを実行します。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```js
+export default {
+ data ({ params }, callback) {
+ axios.get(`https://my-api/posts/${params.id}`)
+ .then((res) => {
+ callback(null, { title: res.data.title })
+ })
+ .catch((e) => {
+ callback({ statusCode: 404, message: 'ページが見つかりません' })
+ })
+ }
+}
+```
+
+
+
+エラーページをカスタマイズするには [ビューのレイアウトセクション](/guide/views#レイアウト) を参照してください。
diff --git a/ja/guide/commands.md b/ja/guide/commands.md
new file mode 100644
index 000000000..87529ae6e
--- /dev/null
+++ b/ja/guide/commands.md
@@ -0,0 +1,137 @@
+---
+title: コマンド
+description: Nuxt.js は便利コマンドのセットを備えています。開発時に役立つものも、プロダクション用途のものもあります。
+---
+
+
+
+
+
+
+> Nuxt.js は便利コマンドのセットを備えています。開発時に役立つものも、プロダクション用途のものもあります。
+
+
+
+## コマンド一覧
+
+
+
+
+
+
+
+
+| コマンド | 説明 |
+|---------|-------------|
+| nuxt | 開発サーバーを [localhost:3000](http://localhost:3000) で起動します。このサーバーはホットリローディングします |
+| nuxt build | アプリケーションを Webpack でビルドし、JS と CSS をプロダクション向けにミニファイします |
+| nuxt start | プロダクションモードでサーバーを起動します(`nuxt build` 後に実行してください) |
+| nuxt generate | アプリケーションをビルドして、ルートごとに HTML ファイルを生成します(静的ファイルのホスティングに用います) |
+
+
+
+これらのコマンドを `package.json` に書いておくと良いでしょう:
+
+```json
+"scripts": {
+ "dev": "nuxt",
+ "build": "nuxt build",
+ "start": "nuxt start",
+ "generate": "nuxt generate"
+}
+```
+
+
+
+そうすれば、`npm run ` 経由で Nuxt.js のコマンドを実行することができます(例: `npm run dev`)
+
+
+
+## 開発環境
+
+
+
+Nuxt.js をホットリローディングする開発モードで起動するには:
+
+
+
+
+
+
+
+```bash
+nuxt
+// または
+npm run dev
+```
+
+
+
+## プロダクションのデプロイ
+
+
+
+Nuxt.js ではアプリケーションをデプロイするための 2つのモードから選べます。サーバーサイドレンダリングするモードと、静的ファイルを生成するモードです。
+
+
+
+### サーバーサイドレンダリングモードのデプロイ
+
+
+
+デプロイするために、nuxt コマンドを実行するのではなく、前もってビルドしておきたいと思われるでしょう。そのような理由から、ビルドコマンドとサーバー起動のコマンドは分かれています:
+
+```bash
+nuxt build
+nuxt start
+```
+
+
+
+`package.json` では下記のように記述することが推奨されています:
+
+```json
+{
+ "name": "my-app",
+ "dependencies": {
+ "nuxt": "latest"
+ },
+ "scripts": {
+ "dev": "nuxt",
+ "build": "nuxt build",
+ "start": "nuxt start"
+ }
+}
+```
+
+
+
+メモ: `.npmignore` または `.gitignore` 内に `.nuxt` を書いておくと良いでしょう。
+
+
+
+### 静的に生成されたファイルのデプロイ
+
+
+
+Nuxt.js を使うと、静的ファイルのホスティングサービスでも、ウェブアプリケーションをホストすることができます。
+
+
+
+アプリケーションから静的ファイルを生成するには:
+
+```bash
+npm run generate
+```
+
+
+
+`dist` フォルダが作成され、その中に静的ファイルのホスティングサービスにデプロイされるべきものがすべて入ります。
+
+
+
+プロジェクトで [動的なルーティング](/guide/routing#動的なルーティング) を使っている場合は、Nuxt.js に動的なルーティングを生成させるために [generate 設定](/api/configuration-generate) に目を通してください。
+
+
+
+`nuxt generate` でウェブアプリケーションを生成するときは、[data()](/guide/async-data#the-data-method) や [fetch()](/guide/vuex-store#the-fetch-method) に渡される [context](/api#context) は `req` 及び `res` を持たなくなります。
diff --git a/ja/guide/configuration.md b/ja/guide/configuration.md
new file mode 100644
index 000000000..d42b852af
--- /dev/null
+++ b/ja/guide/configuration.md
@@ -0,0 +1,141 @@
+---
+title: 設定
+description: Nuxt.js ではデフォルトの設定でほとんどのユースケースをカバーしていますが nuxt.config.js で設定を上書きすることができます。
+---
+
+
+
+
+
+
+> Nuxt.js ではデフォルトの設定でほとんどのユースケースをカバーしていますが nuxt.config.js で設定を上書きすることができます。
+
+### build
+
+
+
+このオプションで vendor.bundle.js ファイルにモジュールを追加できます。vendor.bundle.js は app バンドルファイルのサイズを削減するために生成されるものです。外部のモジュールを使うときに役立ちます。
+
+
+
+[build オプションに関するドキュメント](/api/configuration-build)
+
+### cache
+
+
+
+このオプションで、レンダリングのパフォーマンスを向上させるためにコンポーネントをキャッシュできます。
+
+
+
+[cache オプションに関するドキュメント](/api/configuration-cache)
+
+### css
+
+
+
+このオプションで、グローバルに利用したい(どのファイルにもインクルードしたい)CSS ファイル/モジュール/ライブラリを指定できます。
+
+
+
+[css オプションに関するドキュメント](/api/configuration-css)
+
+### dev
+
+
+
+このオプションで、Nuxt.js の開発モードまたはプロダクションモードを定義できます。
+
+
+
+[dev オプションに関するドキュメント](/api/configuration-css)
+
+### env
+
+
+
+このオプションで、クライアントサイドでもサーバーサイドでも使える環境変数を指定できます。
+
+
+
+[env オプションに関するドキュメント](/api/configuration-env)
+
+### generate
+
+
+
+このオプションは、動的なルーティングをしているアプリケーションを HTML ファイルに変換するときに使います。動的なルーティングに用いるパラメータを指定できます。
+
+
+
+[generate オプションに関するドキュメント](/api/configuration-generate)
+
+### head
+
+
+
+このオプションで、アプリケーションのデフォルトのメタ情報(訳注: head タグ内のメタタグの情報)を指定できます。
+
+
+
+[head オプションに関するドキュメント](/api/configuration-head)
+
+### loading
+
+
+
+このオプションで、Nuxt.js のデフォルトのローディングコンポーネントをカスタマイズできます。
+
+
+
+[loading オプションに関するドキュメント](/api/configuration-loading)
+
+### plugins
+
+
+
+このオプションで、ルートの vue.js アプリケーションをインスタンス化する前に実行したい JavaScript plugin を指定できます。
+
+
+
+[plugings オプションに関するドキュメント](/api/configuration-plugins)
+
+### rootDir
+
+
+
+このオプションで、Nuxt.js アプリケーションのワークスペースを指定できます。
+
+
+
+[rootDir オプションに関するドキュメント](/api/configuration-rootdir)
+
+### router
+
+
+
+このオプションで、Nuxt.js のデフォルトの vue-router 設定を上書きできます。
+
+
+
+[router オプションに関するドキュメント](/api/configuration-router)
+
+### srcDir
+
+
+
+このオプションで、アプリケーションのソースディレクトリを指定できます。
+
+
+
+[srcDir オプションに関するドキュメント](/api/configuration-srcdir)
+
+### transition
+
+
+
+このオプションで、ページ間のトランジションのデフォルト設定を指定できます。
+
+
+
+[transition オプションに関するドキュメント](/api/configuration-transition)
diff --git a/ja/guide/contribution-guide.md b/ja/guide/contribution-guide.md
new file mode 100644
index 000000000..8c9c8faf3
--- /dev/null
+++ b/ja/guide/contribution-guide.md
@@ -0,0 +1,37 @@
+---
+title: 貢献ガイド
+description: Nuxt.js への貢献はどんなものでも大歓迎です!
+---
+
+
+
+
+
+
+Nuxt.js への貢献はどんなものでも大歓迎です!
+
+
+
+## 問題の報告
+
+
+
+このプロジェクトに貢献する方法のひとつは、問題に遭遇したときに詳細なレポートを送ることです。私たちは上手くまとめられたバグレポートとそれを送ってくださった方にいつも感謝しています!問題を報告する前に、ドキュメントを注意深く読み、また、遭遇した問題が既に https://github.com/nuxt/nuxt.js/issues に報告されていないかどうか検索してください。
+
+
+
+## プルリクエスト
+
+
+
+たとえそれが単にタイプミスの修正であっても、ぜひプルリクエストを送ってください。一方で、どんな重要な改善であっても、誰かが手を動かし始める前に [GitHub issue](https://github.com/nuxt/nuxt.js/issues) に記載してください。
+
+
+
+### 慣例
+
+
+
+
+- 不具合の修正であればブランチ名は `fix-XXX` にして、XXX には issue 番号または修正するものの名前を入れてください
+- 機能のプルリクエストであればブランチ名は `feature-XXX` にして、XXX にはその機能に関連する issue 番号を入れてください
diff --git a/ja/guide/development-tools.md b/ja/guide/development-tools.md
new file mode 100644
index 000000000..7c07352b4
--- /dev/null
+++ b/ja/guide/development-tools.md
@@ -0,0 +1,265 @@
+---
+title: 開発ツール
+description: Nuxt.js は開発がより楽しいものになるよう手助けします。
+---
+
+
+
+
+
+
+> アプリケーションをテストすることはウェブ開発の一部です。Nuxt.js は可能な限り簡単にテストできるようにしています。
+
+
+
+## エンドツーエンドテスト
+
+
+
+[Ava](https://github.com/avajs/ava) は [jsdom](https://github.com/tmpvar/jsdom) と合わせて使うことができる、JavaScript のパワフルなテスティングフレームワークです。エンドツーエンドテストを簡単に行うためにこれらを使うことができます。
+
+
+
+まず ava と jsdom を開発依存パッケージに追加する必要があります:
+
+```bash
+npm install --save-dev ava jsdom
+```
+
+
+
+それから `package.json` に test というスクリプトを追加します:
+
+```javascript
+"scripts": {
+ "test": "ava",
+}
+```
+
+
+
+`test` フォルダ内にテストを書いていくことにします:
+
+```bash
+mkdir test
+```
+
+
+
+`pages/index.vue` にページががあります:
+
+```html
+
+ Hello {{ name }}!
+
+
+
+
+
+```
+
+
+
+`npm run dev` でアプリケーションを起動し [http://localhost:3000](http://localhost:3000) を開いているとき、`Hello world!` というタイトルが表示されています。
+
+
+
+`test/index.test.js` というテストファイルを追加します:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```js
+import test from 'ava'
+import Nuxt from 'nuxt'
+import { resolve } from 'path'
+
+// nuxt と server インスタンスを保持します
+// そうすればテスト終了時にそれらをクローズできます
+let nuxt = null
+let server = null
+
+// Nuxt.js を初期化し localhost:4000 でリスニングするサーバーを作成します
+test.before('Init Nuxt.js', async t => {
+ const rootDir = resolve(__dirname, '..')
+ let config = {}
+ try { config = require(resolve(rootDir, 'nuxt.config.js')) } catch (e) {}
+ config.rootDir = rootDir // project folder
+ config.dev = false // production build
+ nuxt = new Nuxt(config)
+ await nuxt.build()
+ server = new nuxt.Server(nuxt)
+ server.listen(4000, 'localhost')
+})
+
+// 生成された HTML のみをテストする例
+test('Route / exits and render HTML', async t => {
+ let context = {}
+ const { html } = await nuxt.renderRoute('/', context)
+ t.true(html.includes('Hello world!
'))
+})
+
+// DOM を経由してチェックするテストの例
+test('Route / exits and render HTML with CSS applied', async t => {
+ const window = await nuxt.renderAndGetWindow('http://localhost:4000/')
+ const element = window.document.querySelector('.red')
+ t.not(element, null)
+ t.is(element.textContent, 'Hello world!')
+ t.is(element.className, 'red')
+ t.is(window.getComputedStyle(element).color, 'red')
+})
+
+// サーバーを閉じて nuxt にファイル更新のリスニングを中止させる
+test.after('Closing server and nuxt.js', t => {
+ server.close()
+ nuxt.close()
+})
+```
+
+
+
+テストを実行できるようになっています:
+
+```bash
+npm test
+```
+
+
+
+jsdom はブラウザを使っていないため制約がいくつかありますが、ほとんどのテストはカバーできます。もしアプリケーションをテストするためにブラウザを使いたいときは [Nightwatch.js](http://nightwatchjs.org) を調べるとよいかもしれません。
+
+## ESLint
+
+
+
+> ESLint はコードを綺麗に保てる優れたツールです。
+
+
+
+とても簡単に [ESLint](http://eslint.org) を Nuxt.js と一緒に使うことができます。まず npm の依存パッケージを追加する必要があります:
+
+```bash
+npm install --save-dev babel-eslint eslint eslint-config-standard eslint-plugin-html eslint-plugin-promise eslint-plugin-standard
+```
+
+
+
+それから `.eslintrc.js` ファイルをプロジェクトのルートディレクトに置いて ESLint を設定できます:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```js
+module.exports = {
+ root: true,
+ parser: 'babel-eslint',
+ env: {
+ browser: true,
+ node: true
+ },
+ extends: 'standard',
+ // *.vue ファイルを lint するために必要
+ plugins: [
+ 'html'
+ ],
+ // ここにカスタムルールを追加します
+ rules: {},
+ globals: {}
+}
+```
+
+
+
+それから `lint` スクリプトを `package.json` 内に追加できます:
+
+```js
+"scripts": {
+ "lint": "eslint --ext .js,.vue --ignore-path .gitignore ."
+}
+```
+
+
+
+lint を実行できます:
+
+```bash
+npm run lint
+```
+
+
+
+ESLint は `.gitignore` に定義されたファイルを無視しつつ、それ以外のすべての JavaScript と Vue ファイルを lint します。
+
+
+
+`"precommit": "npm run lint"` を package.json に追加してコードをコミットする前に自動的に lint するのはベストプラクティスのひとつです。
diff --git a/ja/guide/directory-structure.md b/ja/guide/directory-structure.md
new file mode 100644
index 000000000..c6a3501c4
--- /dev/null
+++ b/ja/guide/directory-structure.md
@@ -0,0 +1,185 @@
+---
+title: ディレクトリ構造
+description: デフォルトの Nuxt.js アプリケーションの構造は、小規模のアプリケーションと大規模のアプリケーションのどちらにも適しています。
+---
+
+
+
+
+
+
+> デフォルトの Nuxt.js アプリケーションの構造は、小規模のアプリケーションと大規模のアプリケーションのどちらにも適しています。もちろん、好きなように構成することもできます。
+
+
+
+## ディレクトリ
+
+
+
+### assets ディレクトリ
+
+
+
+`assets` ディレクトリには LESS や SASS、JavaScript のようなコンパイルされていないファイルを入れます。
+
+
+
+アセットの取り扱いについてより深く理解するには [アセットに関するドキュメント](/guide/assets) を参照してください。
+
+
+
+### components ディレクトリ
+
+
+
+`components` ディレクトリには Vue.js のコンポーネントファイルを入れます。Nuxt.js は `components` ディレクトリ内のコンポーネントの data メソッドについては手を加えません(訳注: 一方、Nuxt.js は `pages` ディレクトリ内のコンポーネントの data メソッドには非同期データを扱えるよう手を加えます)
+
+
+
+### layouts ディレクトリ
+
+
+
+`layouts` ディレクトリにはアプリケーションのレイアウトファイルを入れます。
+
+
+
+_このディレクトリ名は変更できません。_
+
+
+
+レイアウトの取り扱いついてより深く理解するには [レイアウトに関するドキュメント](/guide/views#レイアウト) を参照してください。
+
+
+
+### middleware ディレクトリ
+
+_Coming soon_
+
+
+
+### pages ディレクトリ
+
+
+
+`pages` ディレクトリにはアプリケーションのビュー及びルーティングファイルを入れます。Nuxt.js フレームワークはこのディレクトリ内のすべての `*.vue` ファイルを読み込み、アプリケーションのルーターを作成します。
+
+
+
+_このディレクトリ名は変更できません。_
+
+
+
+ページの取り扱いについてより深く理解するには [ページに関するドキュメント](/guide/views) を参照してください。
+
+
+
+### plugins ディレクトリ
+
+
+
+`plugins` ディレクトリには、ルートの Vue.js アプリケーションをインスタンス化する前に実行したい JavaScript プラグインを入れます。
+
+
+
+プラグインについてより深く理解するには [プラグインに関するドキュメント](/guide/plugins) を参照してください。
+
+
+
+### static ディレクトリ
+
+
+
+`static` ディレクトリには静的ファイルを入れます。このディレクトリ内のファイルはいずれも `/` に配置されます。
+
+
+
+**例:** /static/robots.txt は /robots.txt に配置されます。
+
+
+
+_このディレクトリ名は変更できません。_
+
+
+
+静的ファイルの取り扱いについてより深く理解するには [静的ファイルに関するドキュメント](/guide/assets#webpack-で扱わない静的ファイル) を参照してください。
+
+
+
+### store ディレクトリ
+
+
+
+`store` ディレクトリには [Vuex ストア](http://vuex.vuejs.org) のファイルを入れます。Vuex ストアは Nuxt.js フレームワークではオプションとして実装されています。このディレクトリ内に `index.js` ファイルを作成すると、Nuxt.js フレームワーク内でこのオプションが自動的に有効になります。
+
+
+
+_このディレクトリ名は変更できません。_
+
+
+
+ストアの取り扱いについてより深く理解するには [ストアに関するドキュメント](/guide/vuex-store) を参照してください。
+
+
+
+### nuxt.config.js ファイル
+
+
+
+`nuxt.config.js` ファイルには Nuxt.js のカスタム設定を記述します。
+
+
+
+_このファイル名は変更できません。_
+
+
+
+nuxt.config.js についてより深く理解するには [nuxt.config.js に関するドキュメント](/guide/configuration) を参照してください。
+
+
+
+### package.json ファイル
+
+
+
+`package.json` ファイルにはアプリケーションが依存するパッケージやスクリプトを記述します。
+
+
+
+_このファイル名は変更できません。_
+
+
+
+## エイリアス(別名)
+
+
+
+
+
+
+
+
+
+
+| エイリアス | ディレクトリ |
+|-----|------|
+| ~ | / |
+| ~assets | /assets |
+| ~components | /components |
+| ~pages | /pages |
+| ~plugins | /plugins |
+| ~static | /static |
+
+
+
+ファイルへリンクするエイリアス:
+
+
+
+
+
+
+| エイリアス | 使い方 | 説明 |
+|-------|------|--------------|
+| ~store | `const store = require('~store')` | `vuex` ストアのインスタンスをインポートします |
+| ~router | `const router = require('~router')`| `vue-router` のインスタンスをインポートします |
diff --git a/ja/guide/index.md b/ja/guide/index.md
new file mode 100644
index 000000000..b4dd94165
--- /dev/null
+++ b/ja/guide/index.md
@@ -0,0 +1,188 @@
+---
+title: はじめに
+description: "2016年10月25日 zeit.co のチームが React アプリケーションをサーバーサイドレンダリングするためのフレームワーク Next.js を発表しました。そしてその発表から数時間後、Next.js と同じやり方で、しかし今度は Vue.js をサーバーサイドレンダリングするアプリケーションを構築するアイディアが生まれました。すなわち Nuxt.js の誕生です。"
+---
+
+
+
+
+
+
+> 2016年10月25日 [zeit.co](https://zeit.co/) のチームが React アプリケーションをサーバーサイドレンダリングするためのフレームワーク [Next.js](https://zeit.co/blog/next) を発表しました。そしてその発表からわずか数時間後、Next.js と同じやり方で、しかし今度は [Vue.js](https://vuejs.org) をサーバーサイドレンダリングするアプリケーションを構築するアイディアが生まれました。すなわち **Nuxt.js** の誕生です。
+
+
+
+## Nuxt.js とは何か?
+
+
+
+Nuxt.js とはユニバーサルな Vue.js アプリケーションを構築するためのフレームワークです。
+
+
+
+クライアントサイド用のディストリビューションと、サーバーサイド用のディストリビューションとを分離して生成している間に行う **UI レンダリング** に焦点を当てています。
+
+
+
+私たちのゴールは、あるプロジェクトの基礎として利用したり、あるいは既に進行中の Node.js ベースのプロジェクトに追加できる、柔軟なフレームワークを作成することです。
+
+
+
+Nuxt.js は **サーバーサイドレンダリング** する Vue.js アプリケーションの開発をもっと楽しくするために必要な設定を、あらかじめセットしています。
+
+
+
+
+それに加えて *nuxt genrate* と呼ばれる別の開発オプションも提供します。これは **静的に生成された** Vue.js アプリケーションを構築するためのものです。私たちはこのオプションが、マイクロサービスでウェブアプリケーションを開発するための次の大きな一歩になり得ると信じています。
+
+
+
+Nuxt.js はフレームワークとして、クライアントサイドとサーバーサイド間にまたがる開発を手助けする、たくさんの機能を備えています。例えば、非同期でのデータのやり取りや、Nuxt.js をミドルウェアとして利用することや、レイアウト機能などです。
+
+
+
+## どのように動作するか?
+
+
+
+
+
+Nuxt.js はリッチなウェブアプリケーションを構築するために下記のものを含んでいます:
+
+- [Vue 2](https://github.com/vuejs/vue)
+- [Vue-Router](https://github.com/vuejs/vue-router)
+- [Vuex](https://github.com/vuejs/vuex)([Vuex ストアのオプション](/guide/vuex-store) を利用しているときに限ります)
+- [Vue-Meta](https://github.com/declandewet/vue-meta)
+
+
+
+すべて合わせてもわずか **28kb min+gzip** です(Vuex 利用時は 31kb)
+
+
+
+また、ソースコードのバンドルや分割及びミニファイするために [Webpack](https://github.com/webpack/webpack) を使います。[vue-Loader](https://github.com/vuejs/vue-loader) と [babel-loader](https://github.com/babel/babel-loader) も合わせて使います。
+
+
+
+## 主な機能
+
+
+
+
+
+
+
+
+
+
+
+
+- Vue ファイルで記述できること
+- コードを自動的に分割すること
+- サーバーサイドレンダリング
+- 非同期データをハンドリングするパワフルなルーティング
+- 静的ファイルの配信
+- ES6/ES7 のトランスパイレーション
+- JS と CSS のバンドル及びミニファイ
+- Head 要素の管理
+- 開発モードにおけるホットリローディング
+- SASS, LESS, Stylus などのプリプロセッサのサポート
+
+
+
+## 図解
+
+
+
+下の図は、サーバーサイドで処理が実行されたときや、ユーザーが `` を通して遷移したときに、Nuxt.js によって何が呼び出されるかを表しています:
+
+
+
+
+
+## サーバーサイドレンダリング
+
+
+
+Nuxt.js をプロジェクトの UI レンダリング全体を担うフレームワークとして使うことができます。
+
+
+
+`nuxt` コマンドを実行すると開発サーバーが起動されます。このサーバーはホットリローディング及び vue-server-render を備えており、vue-server-render は自動的にアプリケーションをサーバーサイドレンダリングするよう設定されています。
+
+
+
+コマンドについてより深く理解するには [コマンド](/guide/commands) を参照してください。
+
+
+
+既にサーバーがあるならば Nuxt.js をミドルウェアとして追加ことができます。ユニバーサルなウェブアプリケーションを開発するために Nuxt.js を利用するにあたって何も制限はありません。[Nuxt.js](/api/nuxt) ガイドを見てみてください。
+
+
+
+## 静的ファイルの生成
+
+
+
+Nuxt.js による大きなイノベーションがやってきました。それが `nuxt generate` です。
+
+
+
+`nuxt generate` はアプリケーションをビルドする際に、各ルートごとの HTML を生成します。
+
+
+
+例えば、下記のファイル群がある場合:
+
+```bash
+-| pages/
+----| about.vue
+----| index.vue
+```
+
+
+
+次のファイルが生成されます:
+
+```
+-| dist/
+----| about/
+------| index.html
+----| index.html
+```
+
+
+
+このやり方により、静的ファイルをホスティングするサービスであっても、生成されたウェブアプリケーションをホストできます。
+
+
+
+最も良い例はこのウェブサイト自体です。このサイトは生成され GitHub Pages でホストされています:
+
+
+
+
+- [ソースコード](https://github.com/nuxt/nuxtjs.org)
+- [生成されたコード](https://github.com/nuxt/nuxtjs.org/tree/gh-pages)
+
+
+
+私たちは [docs リポジトリ](https://github.com/nuxt/docs) を更新するたびに毎回手動でアプリケーションを生成するのは面倒だったので、AWS Lambda funtion から生成機能を実行しています:
+
+
+
+
+
+
+1. [nuxtjs.org リポジトリ](https://github.com/nuxt/nuxtjs.org) をクローンする
+2. `npm install` で依存しているパッケージをインストールする
+3. `nuxt generate` を実行する
+4. `dist` フォルダーを `gh-pages` ブランチにプッシュする
+
+
+
+こうして私たちは **サーバーレスで静的に生成されたウェブアプリケーション** を手に入れたのでした。:)
+
+
+
+さらに進めて `nuxt generate` で生成された E コマースのウェブアプリケーションを考えてみましょう。そのアプリケーションは CDN でホストされ、商品が在庫切れになったり入荷されたりするたびにアプリケーションが再生成されます。ユーザーがアプリケーション遷移している間に、在庫の状態が(再生成のおかげで)最新の状態になるのです。つまり、サーバーでいろいろなインスタンスを起動したり、キャッシュを持ったりする必要はもうないのです!
diff --git a/ja/guide/installation.md b/ja/guide/installation.md
new file mode 100644
index 000000000..b13037097
--- /dev/null
+++ b/ja/guide/installation.md
@@ -0,0 +1,156 @@
+---
+title: インストール
+description: Nuxt.js はとても簡単に始められます。シンプルなプロジェクトでは必要な依存パッケージは `nuxt` だけです。
+---
+
+
+
+
+
+
+Nuxt.js はとても簡単に始められます。シンプルなプロジェクトでは必要な依存パッケージは `nuxt` だけです。
+
+
+
+## Nuxt.js を使ったスターターテンプレート
+
+
+
+素早くスタートできるようにするため、Nuxt.js チームは [スターターテンプレート](https://github.com/nuxt/starter) を用意しました。
+
+
+
+[ZIP をダウンロード](https://github.com/nuxt/starter/archive/source.zip) するか、vue-cli を使ってインストールしてください:
+
+```bash
+$ vue init nuxt/starter
+```
+
+
+
+> もし [vue-cli](https://github.com/vuejs/vue-cli) をインストールしていなければ、`npm install -g vue-cli` でインストールしてください。
+
+
+
+それから依存するパッケージをインストールしてください:
+
+```bash
+$ cd
+$ npm install
+```
+
+
+
+そしてプロジェクトを起動してください:
+
+```bash
+$ npm run dev
+```
+
+
+
+するとアプリケーションは http://localhost:3000 で動いています。
+
+
+
+Nuxt.js は `pages` ディレクトリ内のファイルの更新を監視します。そのため、新しいページを追加したときにアプリケーションを再起動する必要はありません。
+
+
+
+プロジェクトのディレクトリ構造についてより深く理解するには [ディレクトリ構造のドキュメント](/guide/directory-structure) を参照してください。
+
+
+
+## スクラッチから始める
+
+
+
+Nuxt.js アプリケーションをスクラッチから作ることもとても簡単で、必要なものは *1つのファイルと 1つのディレクトリ* だけです。まずはアプリケーションで動かす空のディレクトリを作りましょう:
+
+```bash
+$ mkdir
+$ cd
+```
+
+
+
+*メモ: `` の箇所は置き換えてください。*
+
+
+
+### package.json
+
+
+
+`nuxt` コマンドを使うように指定する `package.json` ファイルが必要です(訳注: Nuxt.js は開発サーバーを起動する `nuxt` コマンドを用意しています):
+
+```json
+{
+ "name": "my-app",
+ "scripts": {
+ "dev": "nuxt"
+ }
+}
+```
+
+
+
+上のように書いておけば `npm run dev` で Nuxt.js を起動できます。
+
+
+
+### `nuxt` のインストール
+
+
+
+`package.json` を作成したら `nuxt` を npm でプロジェクトに追加しましょう:
+
+```bash
+npm install --save nuxt
+```
+
+
+
+### `pages` ディレクトリ
+
+
+
+Nuxt.js は `pages` ディレクトリ内の `*.vue` ファイルについて、各ファイルがアプリケーションのひとつのルートに対応するものとして変換します。
+
+
+
+`pages` ディレクトリを作ります:
+
+```bash
+$ mkdir pages
+```
+
+
+
+それから最初のページを `pages/index.vue` に作ります:
+
+```html
+
+ Hello world!
+
+```
+
+
+
+そして、プロジェクトを起動します:
+
+```bash
+$ npm run dev
+```
+
+
+
+すると、アプリケーションは http://localhost:3000 で動いています。
+
+
+
+Nuxt.js は `pages` ディレクトリ内のファイルの更新を監視します。そのため新しいページを追加した場合にアプリケーションを再起動する必要はありません。
+
+
+
+プロジェクトのディレクトリ構造についてより深く理解するには [ディレクトリ構造のドキュメント](/guide/directory-structure) を参照してください。
diff --git a/ja/guide/menu.json b/ja/guide/menu.json
new file mode 100644
index 000000000..e981ab957
--- /dev/null
+++ b/ja/guide/menu.json
@@ -0,0 +1,107 @@
+[
+ {
+ "title": "プロローグ",
+ "links": [
+ {
+ "to": "", "name": "はじめに",
+ "contents": [
+ { "to": "#nuxt-js-とは何か-", "name": "Nuxt.js とは何か?" },
+ { "to": "#どのように動作するか-", "name": "どのように動作するか?" },
+ { "to": "#主な機能", "name": "主な機能" },
+ { "to": "#図解", "name": "図解" },
+ { "to": "#サーバーサイドレンダリング", "name": "サーバーサイドレンダリング" },
+ { "to": "#静的ファイルの生成", "name": "静的ファイルの生成" }
+ ]
+ },
+ { "to": "/contribution-guide", "name": "貢献ガイド" },
+ { "to": "/release-notes", "name": "リリースノート" }
+ ]
+ },
+ {
+ "title": "はじめる",
+ "links": [
+ {
+ "to": "/installation", "name": "インストール",
+ "contents": [
+ { "to": "#nuxt-js-を使ったスターターテンプレート", "name": "Nuxt.js を使ったスターターテンプレート" },
+ { "to": "#スクラッチから始める", "name": "スクラッチから始める" }
+ ]
+ },
+ {
+ "to": "/directory-structure", "name": "ディレクトリ構造",
+ "contents": [
+ { "to": "#ディレクトリ", "name": "ディレクトリ" },
+ { "to": "#エイリアス-別名-", "name": "エイリアス(別名)" }
+ ]
+ },
+ { "to": "/configuration", "name": "設定" },
+ {
+ "to": "/routing", "name": "ルーティング",
+ "contents": [
+ { "to": "#ルーティングの基礎", "name": "ルーティングの基礎" },
+ { "to": "#動的なルーティング", "name": "動的なルーティング" },
+ { "to": "#ネストされたルート", "name": "ネストされたルート" },
+ { "to": "#動的でネストされたルート", "name": "動的でネストされたルート" },
+ { "to": "#トランジション", "name": "トランジション" },
+ { "to": "#ミドルウェア", "name": "ミドルウェア" }
+ ]
+ },
+ {
+ "to": "/views", "name": "ビュー",
+ "contents": [
+ { "to": "#ページ", "name": "ページ" },
+ { "to": "#レイアウト", "name": "レイアウト" },
+ { "to": "#html-の-head-情報", "name": "HTML の head 情報" }
+ ]
+ },
+ {
+ "to": "/async-data", "name": "非同期なデータ",
+ "contents": [
+ { "to": "#data-メソッド", "name": "data メソッド" },
+ { "to": "#コンテキスト", "name": "コンテキスト" },
+ { "to": "#エラー処理", "name": "エラー処理" }
+ ]
+ },
+ {
+ "to": "/assets", "name": "アセット",
+ "contents": [
+ { "to": "#webpack-で取り扱う", "name": "Webpack で取り扱う" },
+ { "to": "#webpack-で扱わない静的ファイル", "name": "Webpack で扱わない静的ファイル" }
+ ]
+ },
+ {
+ "to": "/plugins", "name": "プラグイン",
+ "contents": [
+ { "to": "#外部パッケージの利用", "name": "外部パッケージの利用" },
+ { "to": "#vue-プラグイン", "name": "Vue プラグイン" },
+ { "to": "#クライアントサイド限定のプラグイン利用", "name": "クライアントサイド限定のプラグイン利用" }
+ ]
+ },
+ {
+ "to": "/vuex-store", "name": "Vuex ストア",
+ "contents": [
+ { "to": "#ストアを有効にする", "name": "ストアを有効にする" },
+ { "to": "#クラシックモード", "name": "クラシックモード" },
+ { "to": "#モジュールモード", "name": "モジュールモード" },
+ { "to": "#fetch-メソッド", "name": "fetch メソッド" },
+ { "to": "#nuxtserverinit-アクション", "name": "nuxtServerInit アクション" }
+ ]
+ },
+ {
+ "to": "/commands", "name": "コマンド",
+ "contents": [
+ { "to": "#コマンド一覧", "name": "コマンド一覧" },
+ { "to": "#開発環境", "name": "開発環境" },
+ { "to": "#プロダクションのデプロイ", "name": "プロダクションのデプロイ" }
+ ]
+ },
+ {
+ "to": "/development-tools", "name": "開発ツール",
+ "contents": [
+ { "to": "#エンドツーエンドテスト", "name": "エンドツーエンドテスト" },
+ { "to": "#eslint", "name": "ESLint" }
+ ]
+ }
+ ]
+ }
+]
diff --git a/ja/guide/plugins.md b/ja/guide/plugins.md
new file mode 100644
index 000000000..d0202a1fa
--- /dev/null
+++ b/ja/guide/plugins.md
@@ -0,0 +1,143 @@
+---
+title: プラグイン
+description: Nuxt.js では js プラグインを定義することができ、それはルートの Vue.js アプリケーションがインスタンス化される前に実行されます。プラグインとして自前のライブラリを指定することも、外部のモジュールを指定することもできます。
+---
+
+
+
+
+
+
+> Nuxt.js では js プラグインを定義することができ、それはルートの Vue.js アプリケーションがインスタンス化される前に実行されます。プラグインとして自前のライブラリを指定することも、外部のモジュールを指定することもできます。
+
+
+
+Vue インスタンスの [ライフサイクル](https://vuejs.org/v2/guide/instance.html#Lifecycle-Diagram) において、`beforeCreate` と `created` フックのみが **クライアントサイドとサーバーサイドの両方** で呼び出されることに注意してください。それ以外のすべてのフックはクライアントサイドでのみ呼び出されます。
+
+
+
+## 外部パッケージの利用
+
+
+
+アプリケーションに外部パッケージ/モジュールを使いたいときがあるでしょう。例えばサーバーでもクライアントでも HTTP リクエストを送れる [axios](https://github.com/mzabriskie/axios) などが良い例です。
+
+
+
+外部パッケージは npm でインストールします:
+
+```bash
+npm install --save axios
+```
+
+
+
+そうすると次のようにページ内で直接それを使うことができます:
+
+```html
+
+ {{ title }}
+
+
+
+```
+
+
+
+ただしここで **ひとつ問題があり**、もし別のページでも import axios と書くと、axios は重複してバンドルファイルに含まれてしまいます。そこで `axios` をアプリケーション内で一度だけインクルードするには `nuxt.config.js` 内で `build.vendor` キーを使います:
+
+```js
+module.exports = {
+ build: {
+ vendor: ['axios']
+ }
+}
+```
+
+
+
+こうすれば、バンドルファイルが膨れ上がることなく、どの場所にも `import axios` と書くことができます。
+
+
+
+## Vue プラグイン
+
+
+
+アプリケーション内で通知を表示するために [vue-notifications](https://github.com/se-panfilov/vue-notifications) を使いたいときには、アプリケーションを起動する前にプラグインをセットアップする必要があります。
+
+
+
+そのためには `plugins/vue-notifications.js` ファイルを次のように記述します:
+
+```js
+import Vue from 'vue'
+import VueNotifications from 'vue-notifications'
+
+Vue.use(VueNotifications)
+```
+
+
+
+それから `nuxt.config.js` の `plugins` キーにファイルを記述します:
+
+```js
+module.exports = {
+ plugins: ['~plugins/vue-notifications']
+}
+```
+
+
+
+`plugins` 設定キーについてより深く理解するには [plugins API](/api/configuration-plugins) を参照してください。
+
+
+
+さて、上の書き方では、実は `vue-notifications` は app というバンドルファイルに含まれます。しかし `vue-notifications` はライブラリなので、vendor というバンドルファイルに含めて、うまくキャッシュさせたいと考えます。
+
+
+
+そうするには `nuxt.config.js` を更新して vendor というバンドルファイルの設定の中に `vue-notifications` を入れます:
+
+```js
+module.exports = {
+ build: {
+ vendor: ['vue-notifications']
+ },
+ plugins: ['~plugins/vue-notifications']
+}
+```
+
+
+
+## クライアントサイド限定のプラグイン利用
+
+
+
+プラグインのいくつかは **ブラウザでのみ** 動かしたいとします。その場合は `process.BROWSER_BUILD` 変数を使って、あるプラグインをクライアントサイドで動作させることが可能です。
+
+
+
+例:
+
+```js
+import Vue from 'vue'
+import VueNotifications from 'vue-notifications'
+
+if (process.BROWSER_BUILD) {
+ Vue.use(VueNotifications)
+}
+```
+
+
+
+逆に、サーバーサイドでのみライブラリを読み込む必要がある場合は、`process.SERVER_BUILD` 変数を使うことができます。これは Webpack が `server.bundle.js` ファイルを作成するタイミングで `true` がセットされる変数です。
diff --git a/ja/guide/routing.md b/ja/guide/routing.md
new file mode 100644
index 000000000..a4b94c548
--- /dev/null
+++ b/ja/guide/routing.md
@@ -0,0 +1,425 @@
+---
+title: ルーティング
+description: Nuxt.js はウェブアプリケーションのルーティングを生成するためにファイルシステムを利用します。それは PHP がルーティングを生成するようにシンプルです。
+---
+
+
+
+
+
+
+> Nuxt.js は `pages` ディレクトリ内の Vue ファイルの木構造に沿って、自動的に [vue-router](https://github.com/vuejs/vue-router) の設定を生成します。
+
+
+
+## ルーティングの基礎
+
+
+
+下記のようなファイルの木構造のとき:
+
+```bash
+pages/
+--| user/
+-----| index.vue
+-----| one.vue
+--| index.vue
+```
+
+
+
+自動的に以下が生成されます:
+
+```js
+router: {
+ routes: [
+ {
+ name: 'index',
+ path: '/',
+ component: 'pages/index.vue'
+ },
+ {
+ name: 'user',
+ path: '/user',
+ component: 'pages/user/index.vue'
+ },
+ {
+ name: 'user-one',
+ path: '/user/one',
+ component: 'pages/user/one.vue'
+ }
+ ]
+}
+```
+
+
+
+## 動的なルーティング
+
+
+
+パラメータを使って動的なルーティングを定義するには .vue ファイル名またはディレクトリ名に **アンダースコアのプレフィックス** を付ける必要があります。
+
+
+
+下記のような木構造のとき:
+
+```bash
+pages/
+--| _slug/
+-----| comments.vue
+-----| index.vue
+--| users/
+-----| _id.vue
+--| index.vue
+```
+
+
+
+自動的に以下が生成されます:
+
+```js
+router: {
+ routes: [
+ {
+ name: 'index',
+ path: '/',
+ component: 'pages/index.vue'
+ },
+ {
+ name: 'users-id',
+ path: '/users/:id?',
+ component: 'pages/users/_id.vue'
+ },
+ {
+ name: 'slug',
+ path: '/:slug',
+ component: 'pages/_slug/index.vue'
+ },
+ {
+ name: 'slug-comments',
+ path: '/:slug/comments',
+ component: 'pages/_slug/comments.vue'
+ }
+ ]
+}
+```
+
+
+
+`user-id` と名付けられたルートに `:id?` というパスがありますが、これはこの `:id` が必須ではないことを表します。もし必須にしたい場合は `users/_id` ディレクトリ内に `index.vue` ファイルを作成してください。
+
+
+
+### ルーティングのパラメータのバリデーション
+
+
+
+Nuxt.js では、動的なルーティングをするコンポーネント内に、パラメータをバリデーションするメソッドを定義することができます。
+
+
+
+例えば `pages/users/_id.vue` 内にこのように書きます:
+
+
+
+
+
+
+
+
+
+
+```js
+export default {
+ validate ({ params }) {
+ // 数値でなければならない
+ return /^\d+$/.test(params.id)
+ }
+}
+```
+
+
+
+もしバリデーションのメソッドが `true` を返さなかった場合は、Nuxt.js は自動的に 404 エラーページをロードします。
+
+
+
+バリデーションのメソッドについてより深く理解したい場合は [ページバリデーションの API](/api/pages-validate) を参照してください。
+
+
+
+## ネストされたルート
+
+
+
+Nuxt.js では vue-router の子ルートを使ってルートをネストさせることができます。
+
+
+
+ネストされたルートを定義するには、子ビューを含む **ディレクトリと同じ名前** の Vue ファイルを作成する必要があります。
+
+
+
+親コンポーネント(.vue ファイル)内に `` を書くことを覚えておいてください。
+
+
+
+下記のようなファイルの木構造のとき:
+
+```bash
+pages/
+--| users/
+-----| _id.vue
+-----| index.vue
+--| users.vue
+```
+
+
+
+自動的に以下が生成されます:
+
+```js
+router: {
+ routes: [
+ {
+ path: '/users',
+ component: 'pages/users.vue',
+ children: [
+ {
+ path: '',
+ component: 'pages/users/index.vue',
+ name: 'users'
+ },
+ {
+ path: ':id',
+ component: 'pages/users/_id.vue',
+ name: 'users-id'
+ }
+ ]
+ }
+ ]
+}
+```
+
+
+
+## 動的でネストされたルート
+
+
+
+あまり頻繁に使うべきではありませんが、Nuxt.js では動的な親ルーティングの中に動的な子ルーティングを持つことが可能です。
+
+
+
+下記のようなファイルの木構造のとき:
+
+```bash
+pages/
+--| _category/
+-----| _subCategory/
+--------| _id.vue
+--------| index.vue
+-----| _subCategory.vue
+-----| index.vue
+--| _category.vue
+--| index.vue
+```
+
+
+
+自動的に以下が生成されます:
+
+```js
+router: {
+ routes: [
+ {
+ path: '/',
+ component: 'pages/index.vue',
+ name: 'index'
+ },
+ {
+ path: '/:category',
+ component: 'pages/_category.vue',
+ children: [
+ {
+ path: '',
+ component: 'pages/_category/index.vue',
+ name: 'category'
+ },
+ {
+ path: ':subCategory',
+ component: 'pages/_category/_subCategory.vue',
+ children: [
+ {
+ path: '',
+ component: 'pages/_category/_subCategory/index.vue',
+ name: 'category-subCategory'
+ },
+ {
+ path: ':id',
+ component: 'pages/_category/_subCategory/_id.vue',
+ name: 'category-subCategory-id'
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
+```
+
+
+
+## トランジション
+
+
+
+Nuxt.js では [<transition>](http://vuejs.org/v2/guide/transitions.html#Transitioning-Single-Elements-Components) コンポーネントを使って、ページ間を遷移する際のトランジション/アニメーションを行うことができます。
+
+
+
+### グローバルな設定
+
+
+
+Nuxt.js のデフォルトのトランジション名は `"page"` です。
+
+
+
+アプリケーションのすべてのページでフェードさせるトランジションを定義には、ルーティング全体に適用されている CSS ファイルが必要です。まずは `assets` ディレクトリ内にファイルを作成するところから始めます:
+
+
+
+`assets/main.css` 内にグローバルな CSS を書きます:
+
+```css
+.page-enter-active, .page-leave-active {
+ transition: opacity .5s;
+}
+.page-enter, .page-leave-active {
+ opacity: 0;
+}
+```
+
+
+
+`nuxt.config.js` ファイルに CSS ファイルのパスを指定します:
+
+```js
+module.exports = {
+ css: [
+ 'assets/main.css'
+ ]
+}
+```
+
+
+
+トランジションについてより深く理解したい場合は [トランジション設定 API](/api/pages-transition) を参照してください。
+
+
+
+### 特定のページに対する設定
+
+
+
+`transition` プロパティを使うことで、特定のページのみに対してカスタムトランジションを定義することもできます。
+
+
+
+`assets/main.css` 内に新しい CSS 定義を追加します:
+
+```css
+.test-enter-active, .test-leave-active {
+ transition: opacity .5s;
+}
+.test-enter, .test-leave-active {
+ opacity: 0;
+}
+```
+
+
+
+それから、このページトランジションを利用するためのクラス名を transition プロパティで指定します:
+
+```js
+export default {
+ transition: 'test'
+}
+```
+
+
+
+トランジションプロパティについてより深く理解したい場合は [ページトランジション API](/api/pages-transition) を参照してください。
+
+
+
+## ミドルウェア
+
+
+
+> ミドルウェアを使って、あるページまたはあるページのグループがレンダリングされる前に実行される関数を定義することができます。
+
+
+
+**ミドルウェアは `middleware/` ディレクトリに入れます。** ファイル名はミドルウェアの名前となります(`middleware/auth.js` は `auth` ミドルウェアになります)
+
+
+
+ミドルウェアは第一引数として [コンテキスト](/api#コンテキスト) を受け取ります:
+
+```js
+export default function (context) {
+ context.userAgent = context.isServer ? context.req.headers['user-agent'] : navigator.userAgent
+}
+```
+
+
+
+
+
+
+ミドルウェアは下記の順に実行されます:
+
+1. `nuxt.config.js`
+2. マッチしたレイアウト
+3. マッチしたページ
+
+
+
+ミドルウェアは、`Promise` を返すようにするか、もしくは第二引数の `callback` を使って、非同期に実行することができます:
+
+`middleware/stats.js`
+
+```js
+import axios from 'axios'
+
+export default function ({ route }) {
+ return axios.post('http://my-stats-api.com', {
+ url: route.fullPath
+ })
+}
+```
+
+
+
+そして `nuxt.config.js` やレイアウトもしくはページ内で `middleware` キーを使います:
+
+`nuxt.config.js`
+
+```js
+module.exports = {
+ router: {
+ middleware: 'stats'
+ }
+}
+```
+
+
+
+`stats` ミドルウェアはすべてのルート変更時に呼び出されるようになります。
+
+
+
+ミドルウェアを使った実際の例を見たい場合は GitHub 上にある [example-auth0](https://github.com/nuxt/example-auth0) を見てみてください。
diff --git a/ja/guide/views.md b/ja/guide/views.md
new file mode 100644
index 000000000..eff46d818
--- /dev/null
+++ b/ja/guide/views.md
@@ -0,0 +1,311 @@
+---
+title: ビュー
+description: このセクションでは Nuxt.js アプリケーションの特定のルートにデータとビューを設定するために必要なことすべてを説明します(ページ、レイアウト、HTML の head タグのメタ情報などを含みます)
+---
+
+
+
+
+
+
+> このセクションでは Nuxt.js アプリケーションの特定のルートにデータとビューを設定するために必要なことすべてを説明します(ページ、レイアウト、HTML の head タグのメタ情報などを含みます)
+
+
+
+## ページ
+
+
+
+すべてのページコンポーネントは Vue コンポーネントですが、Nuxt.js はユニバーサルなアプリケーションを最も簡単なやり方で開発することを可能にために、特別なキーを追加します。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```html
+
+ Hello {{ name }}!
+
+
+
+
+
+```
+
+
+
+
+
+
+
+
+
+
+
+
+| 属性 | 説明 |
+|-----------|-------------|
+| data | 最も重要なキーであり [Vue.js の data オプション](https://vuejs.org/v2/api/#Options-Data) と同じ意義を持っています。しかし(訳注: Nuxt.js が data に手を加えているため)非同期に動作し、また引数として context を受け取ります。どのように動作するかを知るには [非同期データに関するドキュメント](/guide/async-data) を参照してください |
+| fetch | ページがレンダリングされる前に、データをストアに入れるために使います。コンポーネントのデータをセットすること以外は data メソッドと似ています。[ページのフェッチ API に関するドキュメント](/api/pages-fetch) を参照してください |
+| head | 現在のページの特定のメタタグを設定します。[ページの head API](/api/pages-head) を参照してください |
+| layout | `layouts` ディレクトリ内のレイアウトを指定します。[ページのレイアウト API に関するドキュメント](/api/pages-layout) を参照してください |
+| transition | ページに特定のトランジションを設定します。[ページのトランジション API に関するドキュメント](/api/pages-transition) を参照してください |
+| scrollToTop | ブーリアンで指定し、デフォルトは `false` です。ページをレンダリングする前にトップまでスクロールさせるか否かを指定します。これは [ネストされたルート](/guide/routing#ネストされたルート) で使われます |
+| validate | [動的なルーティング](/guide/routing#動的なルーティング) のためのバリデーション関数です |
+| middleware | このページのためにミドルウェアを設定し、ミドルウェアはページがレンダリングされる前に呼び出されます。[ルーティングのミドルウェア](/guide/routing#ミドルウェア) を参照してください |
+
+
+
+ページのプロパティの使い方についてより深く理解するには [ページ API](/api) を参照してください。
+
+
+
+## レイアウト
+
+
+
+Nuxt.js ではメインレイアウトを拡張したり、カスタムレイアウトを `layouts` ディレクトリに入れてレイアウトを追加したりすることができます。
+
+
+
+### デフォルトレイアウト
+
+
+
+`layouts/default.vue` ファイルを追加することでメインレイアウトを拡張できます。
+
+
+
+*ページコンポーネントを表示するレイアウトを作成するときは、必ず `` コンポーネントを入れておくことを覚えておいてください。*
+
+
+
+デフォルトのレイアウトのソースコードは下記のようになっています:
+
+```html
+
+
+
+```
+
+
+
+### エラーページ
+
+
+
+`layouts/error.vue` ファイルを追加することでエラーページをカスタマイズできます。
+
+
+
+このレイアウトはテンプレート内に `` を含まないという意味で特殊です。このレイアウトは 404 や 500 エラーなどが発生したときに表示されるコンポーネントとして見ることになります。
+
+
+
+デフォルトのエラーページのソースコードは [Github](https://github.com/nuxt/nuxt.js/blob/master/lib/app/components/nuxt-error.vue) で確認できます。
+
+
+
+`layouts/error.vue` にカスタムエラーページを書くときの例:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```html
+
+
+
ページが見つかりません
+ エラーが発生しました
+ ホーム
+
+
+
+
+```
+
+
+
+### カスタムレイアウト
+
+
+
+`layouts` ディレクトリの *第一階層* のファイルで、ページコンポーネント内の `layout` プロパティで指定できるカスタムレイアウトを作成できます。
+
+
+
+*ページコンポーネントを表示するレイアウトを作成するときは、必ず `` コンポーネントを入れておくことを覚えておいてください。*
+
+
+
+`layouts/blog.vue` の例:
+
+
+
+
+
+
+
+
+
+
+```html
+
+
+
ブログのナビゲーションバーをここに設置します
+
+
+
+```
+
+
+
+それから `pages/posts.vue` ファイル内で、カスタムレイアウトを使うことを Nuxt.js に伝えます:
+
+```html
+
+```
+
+
+
+layout プロパティについてより深く理解するには [ページレイアウト API](/api/pages-layout) を参照してください。
+
+また、動作する様子を [デモ動画](https://www.youtube.com/watch?v=YOKnSTp7d38) で確認してみてください。
+
+
+
+## HTML の head 情報
+
+
+
+Nuxt.js はアプリケーションの `headers` 及び `html attributes` を更新するために [vue-meta](https://github.com/declandewet/vue-meta) を使います。
+
+
+
+Nuxt.js では下記のオプションで `vue-meta` を設定します:
+
+
+
+
+
+
+
+
+
+
+```js
+{
+ keyName: 'head', // vue-meta がメタ情報を探すためのコンポーネントオプションの名前
+ attribute: 'n-head', // vue-meta がタグを監視するためにタグに追加する属性名
+ ssrAttribute: 'n-head-ssr', // メタ情報が既にサーバーサイドでレンダリングされていることを vue-meta に知らせるための属性名
+ tagIDKeyName: 'hid' // vue-meta がタグを上書きすべきかタグを追加すべきか判断するために用いるプロパティ名
+}
+```
+
+
+
+### デフォルトのメタタグ
+
+
+
+Nuxt.js ではアプリケーションのデフォルトのメタ情報を `nuxt.config.js` で設定できます。`head` プロパティを使用します:
+
+
+
+カスタム viewport 及び Google フォントを定義する例:
+
+```js
+head: {
+ meta: [
+ { charset: 'utf-8' },
+ { name: 'viewport', content: 'width=device-width, initial-scale=1' }
+ ],
+ link: [
+ { rel: 'stylesheet', href: 'https://fonts.googleapis.com/css?family=Roboto' }
+ ]
+}
+```
+
+
+
+`head` に渡せるオプションのリストを確認するには [vue-meta のドキュメント](https://github.com/declandewet/vue-meta#recognized-metainfo-properties) を見てみてください。
+
+
+
+head メソッドについてより深く理解するには [head 設定 API](/api/configuration-head) を参照してください。
+
+
+
+### 特定のページにメタタグを設定する
+
+
+
+特定のページにメタタグを設定する方法について [ページ head API](/api/pages-head) を参照してください。
+
+
+
+子コンポーネントで利用されたときにメタ情報が重複してしまうことを避けるために `hid` キーでユニーク識別子を与えてください。また、これについてより深く理解するには [こちら](https://github.com/declandewet/vue-meta#lists-of-tags) を参照してください。
diff --git a/ja/guide/vuex-store.md b/ja/guide/vuex-store.md
new file mode 100644
index 000000000..35b5ffa13
--- /dev/null
+++ b/ja/guide/vuex-store.md
@@ -0,0 +1,248 @@
+---
+title: Vuex ストア
+description: 状態を管理してくれる Vuex ストアは、あらゆる大規模アプリケーションにとても役に立ちます。Nuxt.js が Vuex をコアに組み入れたのはそのような理由からです。
+---
+
+
+
+
+
+
+> 状態を管理してくれる Vuex ストアは、あらゆる大規模アプリケーションにとても役に立ちます。Nuxt.js が [Vuex](https://github.com/vuejs/vuex) をコアに組み入れたのはそのような理由からです。
+
+
+
+## ストアを有効にする
+
+
+
+Nuxt.js は `store` ディレクトが存在するときにはそちらを探索します:
+
+
+
+
+
+1. Vuex をインポートします
+2. `vuex` モジュールを vendor のバンドルファイルに追加します
+3. `store` オプションをルートの `Vue` インスタンスに追加します
+
+
+
+Nuxt.js では **2つのモードのストア** があります。どちらか好みのほうを選んで使ってください:
+
+
+
+
+- **クラシックモード:** `store/index.js` がストアインスタンスを返します
+- **モジュールモード:** `store` ディレクトリ内のすべての `*.js` ファイルが [モジュール](http://vuex.vuejs.org/en/modules.html) に変換されます(`index` はルートモジュールとして存在します)
+
+
+
+## クラシックモード
+
+
+
+ストアをクラシックモードで有効にするには `store/index.js` ファイルを作成し、ストアインスタンスをエクスポートします:
+
+```js
+import Vuex from 'vuex'
+
+const store = new Vuex.Store({
+ state: {
+ counter: 0
+ },
+ mutations: {
+ increment (state) {
+ state.counter++
+ }
+ }
+})
+
+export default store
+```
+
+
+
+> `vuex` は Nuxt.js によって取り込まれているため、別途インストールする必要はありません。
+
+
+
+クラシックモードを有効にすると、コンポーネント内で `this.$store` を使うことができます:
+
+```html
+
+
+
+```
+
+
+
+## モジュールモード
+
+
+
+> Nuxt.js では `store` ディレクトリ内にモジュールと対応するファイルを持つことができます。
+
+
+
+このオプションを使いたいときは、ストアインスタンスの代わりに、`store/index.js` 内でストア、ミューテーション、アクションをエクスポートします:
+
+```js
+export const state = {
+ counter: 0
+}
+
+export const mutations = {
+ increment (state) {
+ state.counter++
+ }
+}
+```
+
+
+
+また、次のような `store/todos.js` ファイルを作成できます:
+
+```js
+export const state = {
+ list: []
+}
+
+export const mutations = {
+ add (state, text) {
+ state.list.push({
+ text: text,
+ done: false
+ })
+ },
+ delete (state, { todo }) {
+ state.list.splice(state.list.indexOf(todo), 1)
+ },
+ toggle (state, todo) {
+ todo.done = !todo.done
+ }
+}
+```
+
+
+
+ストアは下記のようになります:
+
+```js
+new Vuex.Store({
+ state: { counter: 0 },
+ mutations: {
+ increment (state) {
+ state.counter++
+ }
+ },
+ modules: {
+ todos: {
+ state: {
+ list: []
+ },
+ mutations: {
+ add (state, { text }) {
+ state.list.push({
+ text,
+ done: false
+ })
+ },
+ delete (state, { todo }) {
+ state.list.splice(state.list.indexOf(todo), 1)
+ },
+ toggle (state, { todo }) {
+ todo.done = !todo.done
+ }
+ }
+ }
+ }
+})
+```
+
+
+
+そして `pages/todos.vue` 内で `todos` モジュールを下記のように使うことができます:
+
+```html
+
+
+
+
+
+
+
+```
+
+
+
+ストアインスタンスをエクスポートすることでモジュールを持つこともできます。その際にはモジュールをストアに手動で追加する必要があります。
+
+
+
+## fetch メソッド
+
+
+
+fetch メソッドは、ページがレンダリングされる前に、データをストアに入れるために使われます。コンポーネントのデータをセットしないという点を除いては data メソッドとよく似ています。
+
+
+
+fetch メソッドについてより深く理解するためには [ページの fetch メソッド API](/api/pages-fetch) を参照してください。
+
+
+
+## nuxtServerInit アクション
+
+
+
+`nuxtServerInit` というアクションがストア内に定義されているときは、Nuxt.js はそれをコンテキストとともに呼び出します(ただしサーバーサイドに限ります)。サーバーサイドからクライアントサイドに直接渡したいデータがあるときに便利です。
+
+
+
+例えば、サーバーサイドでセッションを持っていて、接続しているユーザーに `req.session.user` を通じてアクセスできるとします。認証されたユーザーにストアを渡すために `store/index.js` 下記のように書き換えます:
+
+```js
+actions: {
+ nuxtServerInit ({ commit }, { req }) {
+ if (req.session.user) {
+ commit('user', req.session.user)
+ }
+ }
+}
+```
+
+
+
+> Vuex ストアの _モジュール_ モードを使っている場合はなら、プライマリモジュール(`store/index.js`)のみ、このアクションを受け取ることができます。その他のモジュールのアクションでも使いたい場合は、プライマリモジュールからチェインする必要があります。
+
+
+
+コンテキストは `nuxtServerInit` へ第二引数として渡されます。`context.redirect()` や `context.error()` が除外される点を除いては `data` メソッドや `fetch` メソッドと共通しています。
diff --git a/ja/lang.json b/ja/lang.json
new file mode 100644
index 000000000..f722a3d46
--- /dev/null
+++ b/ja/lang.json
@@ -0,0 +1,50 @@
+{
+ "iso": "ja",
+ "links": {
+ "api": "API",
+ "blog": "ブログ",
+ "chat": "チャット",
+ "documentation": "ドキュメント",
+ "download": "ダウンロード",
+ "examples": "例",
+ "ecosystem": "エコシステム",
+ "faq": "FAQ",
+ "get_started": "はじめる",
+ "github": "Github",
+ "guide": "ガイド",
+ "homepage": "ホーム",
+ "live_demo": "ライブデモ",
+ "live_edit": "ライブ編集",
+ "twitter": "Twitter",
+ "vuejs": "Vue.js",
+ "vue_jobs": "Vue Jobs"
+ },
+ "text": {
+ "an_error_occured": "エラーが発生しました",
+ "api_page_not_found": "API ページが見つかりません",
+ "example_file": "サンプルファイル",
+ "please_wait": "お待ちください...",
+ "please_define_title": "Frontmatter 内の title を定義してください",
+ "please_define_description": "Frontmatter 内の description を定義してください",
+ "search": "検索",
+ "version": "バージョン"
+ },
+ "homepage": {
+ "title": "ユニバーサル Vue.js アプリケーション",
+ "meta": {
+ "title": "Nuxt.js - ユニバーサル Vue.js アプリケーション",
+ "description": "Nuxt.js はサーバーサイドレンダリングやコード分割、ホットリローディング、静的ファイル生成などを備えた Vue.js アプリケーションを構築するためのミニマルなフレームワークです!"
+ }
+ },
+ "footer": {
+ "authors": "Made by Chopin Brothers"
+ },
+ "guide": {
+ "release_notes": "リリースノート",
+ "contribute": "間違いを見つけた、またはドキュメントに貢献したいですか?",
+ "edit_on_github": "GitHub でこのページを編集する"
+ },
+ "examples": {
+ "source_code": "ソースコード"
+ }
+}