From ae40a4d5916ae7ceb2bb03d7e9e3785c8789dc4e Mon Sep 17 00:00:00 2001 From: bsky Date: Sat, 2 Jun 2018 04:00:45 +0900 Subject: [PATCH 1/9] Copy lang files to ja from en --- resources/lang/ja/auth.php | 19 +++++ resources/lang/ja/notification.php | 8 ++ resources/lang/ja/pagination.php | 19 +++++ resources/lang/ja/passwords.php | 22 ++++++ resources/lang/ja/profile.php | 8 ++ resources/lang/ja/timeline.php | 7 ++ resources/lang/ja/validation.php | 122 +++++++++++++++++++++++++++++ 7 files changed, 205 insertions(+) create mode 100644 resources/lang/ja/auth.php create mode 100644 resources/lang/ja/notification.php create mode 100644 resources/lang/ja/pagination.php create mode 100644 resources/lang/ja/passwords.php create mode 100644 resources/lang/ja/profile.php create mode 100644 resources/lang/ja/timeline.php create mode 100644 resources/lang/ja/validation.php diff --git a/resources/lang/ja/auth.php b/resources/lang/ja/auth.php new file mode 100644 index 000000000..e5506df29 --- /dev/null +++ b/resources/lang/ja/auth.php @@ -0,0 +1,19 @@ + 'These credentials do not match our records.', + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + +]; diff --git a/resources/lang/ja/notification.php b/resources/lang/ja/notification.php new file mode 100644 index 000000000..99b6ed099 --- /dev/null +++ b/resources/lang/ja/notification.php @@ -0,0 +1,8 @@ + 'liked your photo.', + 'startedFollowingYou' => 'started following you.', + +]; \ No newline at end of file diff --git a/resources/lang/ja/pagination.php b/resources/lang/ja/pagination.php new file mode 100644 index 000000000..d48141187 --- /dev/null +++ b/resources/lang/ja/pagination.php @@ -0,0 +1,19 @@ + '« Previous', + 'next' => 'Next »', + +]; diff --git a/resources/lang/ja/passwords.php b/resources/lang/ja/passwords.php new file mode 100644 index 000000000..e5544d201 --- /dev/null +++ b/resources/lang/ja/passwords.php @@ -0,0 +1,22 @@ + 'Passwords must be at least six characters and match the confirmation.', + 'reset' => 'Your password has been reset!', + 'sent' => 'We have e-mailed your password reset link!', + 'token' => 'This password reset token is invalid.', + 'user' => "We can't find a user with that e-mail address.", + +]; diff --git a/resources/lang/ja/profile.php b/resources/lang/ja/profile.php new file mode 100644 index 000000000..50b6f2429 --- /dev/null +++ b/resources/lang/ja/profile.php @@ -0,0 +1,8 @@ + 'This user has no posts yet!', + 'emptyFollowers' => 'This user has no followers yet!', + 'emptyFollowing' => 'This user is not following anyone yet!', + 'savedWarning' => 'Only you can see what you\'ve saved', +]; \ No newline at end of file diff --git a/resources/lang/ja/timeline.php b/resources/lang/ja/timeline.php new file mode 100644 index 000000000..26e329678 --- /dev/null +++ b/resources/lang/ja/timeline.php @@ -0,0 +1,7 @@ + 'Your timeline is empty.' + +]; \ No newline at end of file diff --git a/resources/lang/ja/validation.php b/resources/lang/ja/validation.php new file mode 100644 index 000000000..77d230221 --- /dev/null +++ b/resources/lang/ja/validation.php @@ -0,0 +1,122 @@ + 'The :attribute must be accepted.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute may only contain letters.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', + 'alpha_num' => 'The :attribute may only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'date' => 'The :attribute is not a valid date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'The :attribute must be a valid email address.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field must have a value.', + 'image' => 'The :attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'ipv4' => 'The :attribute must be a valid IPv4 address.', + 'ipv6' => 'The :attribute must be a valid IPv6 address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'max' => [ + 'numeric' => 'The :attribute may not be greater than :max.', + 'file' => 'The :attribute may not be greater than :max kilobytes.', + 'string' => 'The :attribute may not be greater than :max characters.', + 'array' => 'The :attribute may not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute format is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'present' => 'The :attribute field must be present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute format is invalid.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'custom-message', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + +]; From ebb1c85c40b952ea95835b33be7e0de76d41096c Mon Sep 17 00:00:00 2001 From: bsky Date: Sat, 2 Jun 2018 04:05:42 +0900 Subject: [PATCH 2/9] Add newline at end of files --- resources/lang/ja/notification.php | 2 +- resources/lang/ja/profile.php | 2 +- resources/lang/ja/timeline.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/lang/ja/notification.php b/resources/lang/ja/notification.php index 99b6ed099..ce8abfd1a 100644 --- a/resources/lang/ja/notification.php +++ b/resources/lang/ja/notification.php @@ -5,4 +5,4 @@ return [ 'likedPhoto' => 'liked your photo.', 'startedFollowingYou' => 'started following you.', -]; \ No newline at end of file +]; diff --git a/resources/lang/ja/profile.php b/resources/lang/ja/profile.php index 50b6f2429..4e4564235 100644 --- a/resources/lang/ja/profile.php +++ b/resources/lang/ja/profile.php @@ -5,4 +5,4 @@ return [ 'emptyFollowers' => 'This user has no followers yet!', 'emptyFollowing' => 'This user is not following anyone yet!', 'savedWarning' => 'Only you can see what you\'ve saved', -]; \ No newline at end of file +]; diff --git a/resources/lang/ja/timeline.php b/resources/lang/ja/timeline.php index 26e329678..a28b7b06f 100644 --- a/resources/lang/ja/timeline.php +++ b/resources/lang/ja/timeline.php @@ -4,4 +4,4 @@ return [ 'emptyPersonalTimeline' => 'Your timeline is empty.' -]; \ No newline at end of file +]; From 2a08d0a2e7a6b7c2ed62eaa393274e720cdfdf4a Mon Sep 17 00:00:00 2001 From: bsky Date: Sat, 2 Jun 2018 04:06:29 +0900 Subject: [PATCH 3/9] Add ja translation of auth.php --- resources/lang/ja/auth.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/lang/ja/auth.php b/resources/lang/ja/auth.php index e5506df29..c3ad779e5 100644 --- a/resources/lang/ja/auth.php +++ b/resources/lang/ja/auth.php @@ -13,7 +13,7 @@ return [ | */ - 'failed' => 'These credentials do not match our records.', - 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + 'failed' => 'これらの認証情報は正しくありません。', + 'throttle' => 'ログイン試行回数が多すぎます。 :seconds 秒後にもう一度お試しください。', ]; From 3c5b662650ed51fd3b577e7abd05d0ef26bca453 Mon Sep 17 00:00:00 2001 From: bsky Date: Sat, 2 Jun 2018 04:09:13 +0900 Subject: [PATCH 4/9] Add ja translation of notification.php --- resources/lang/ja/notification.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/lang/ja/notification.php b/resources/lang/ja/notification.php index ce8abfd1a..2195ca8c7 100644 --- a/resources/lang/ja/notification.php +++ b/resources/lang/ja/notification.php @@ -2,7 +2,7 @@ return [ - 'likedPhoto' => 'liked your photo.', - 'startedFollowingYou' => 'started following you.', + 'likedPhoto' => '写真がお気に入りされました。', + 'startedFollowingYou' => 'フォローされました。', ]; From 43f4024caa55d9f7ac8ad7973d52d551bd4d16f0 Mon Sep 17 00:00:00 2001 From: bsky Date: Sat, 2 Jun 2018 04:14:55 +0900 Subject: [PATCH 5/9] Add ja translation of pagination.php --- resources/lang/ja/pagination.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/lang/ja/pagination.php b/resources/lang/ja/pagination.php index d48141187..c6265c94f 100644 --- a/resources/lang/ja/pagination.php +++ b/resources/lang/ja/pagination.php @@ -13,7 +13,7 @@ return [ | */ - 'previous' => '« Previous', - 'next' => 'Next »', + 'previous' => '« 戻る', + 'next' => '次へ »', ]; From b961ed1adab28d156e37514a71b3f47d545328b6 Mon Sep 17 00:00:00 2001 From: bsky Date: Sat, 2 Jun 2018 04:28:37 +0900 Subject: [PATCH 6/9] Add ja translation of passwords.php --- resources/lang/ja/passwords.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/resources/lang/ja/passwords.php b/resources/lang/ja/passwords.php index e5544d201..70cddcd37 100644 --- a/resources/lang/ja/passwords.php +++ b/resources/lang/ja/passwords.php @@ -13,10 +13,10 @@ return [ | */ - 'password' => 'Passwords must be at least six characters and match the confirmation.', - 'reset' => 'Your password has been reset!', - 'sent' => 'We have e-mailed your password reset link!', - 'token' => 'This password reset token is invalid.', - 'user' => "We can't find a user with that e-mail address.", + 'password' => 'パスワードは6文字以上で、確認と一致している必要があります。', + 'reset' => 'パスワードをリセットしました!', + 'sent' => 'パスワードリセットのためのリンクをメールで送信しました!', + 'token' => 'このパスワードリセットトークンは無効です。', + 'user' => "このメールアドレスと一致するユーザーを見つけることが出来ません。", ]; From 26a1ffaeedb0fe3685c12c5b0ab000a0fd0043e1 Mon Sep 17 00:00:00 2001 From: bsky Date: Sat, 2 Jun 2018 04:35:01 +0900 Subject: [PATCH 7/9] Add ja translation of profile.php --- resources/lang/ja/profile.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/resources/lang/ja/profile.php b/resources/lang/ja/profile.php index 4e4564235..4d9192259 100644 --- a/resources/lang/ja/profile.php +++ b/resources/lang/ja/profile.php @@ -1,8 +1,8 @@ 'This user has no posts yet!', - 'emptyFollowers' => 'This user has no followers yet!', - 'emptyFollowing' => 'This user is not following anyone yet!', - 'savedWarning' => 'Only you can see what you\'ve saved', + 'emptyTimeline' => 'このユーザーはまだ何も投稿していません!', + 'emptyFollowers' => 'このユーザーにはまだフォロワーがいません!', + 'emptyFollowing' => 'このユーザーはまだ誰もフォローしていません!', + 'savedWarning' => 'あなたが保存したものはあなただけが見ることが出来ます。', ]; From ae4a9753ec4f2ce3ae41f9792791524345b6fdcd Mon Sep 17 00:00:00 2001 From: bsky Date: Sat, 2 Jun 2018 04:35:56 +0900 Subject: [PATCH 8/9] Add ja translation of timeline.php --- resources/lang/ja/timeline.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/lang/ja/timeline.php b/resources/lang/ja/timeline.php index a28b7b06f..c3fee3c9f 100644 --- a/resources/lang/ja/timeline.php +++ b/resources/lang/ja/timeline.php @@ -2,6 +2,6 @@ return [ - 'emptyPersonalTimeline' => 'Your timeline is empty.' + 'emptyPersonalTimeline' => 'あなたのタイムラインには何もありません。' ]; From 69ce309191d8b3973b4a55ce02c2811201cbc525 Mon Sep 17 00:00:00 2001 From: bsky Date: Sat, 2 Jun 2018 05:42:05 +0900 Subject: [PATCH 9/9] Add ja translation of validation.php --- resources/lang/ja/validation.php | 134 +++++++++++++++---------------- 1 file changed, 67 insertions(+), 67 deletions(-) diff --git a/resources/lang/ja/validation.php b/resources/lang/ja/validation.php index 77d230221..f0a5a3668 100644 --- a/resources/lang/ja/validation.php +++ b/resources/lang/ja/validation.php @@ -13,81 +13,81 @@ return [ | */ - 'accepted' => 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'accepted' => ':attribute を受け入れる必要があります。', + 'active_url' => ':attribute は有効なURLではありません。', + 'after' => ':attribute は :date 以降の日付である必要があります。', + 'after_or_equal' => ':attribute は :date と同じかそれ以降の日付である必要があります。', + 'alpha' => ':attribute には文字を含めることが出来ます。', + 'alpha_dash' => ':attribute には文字、数字、ダッシュを含めることが出来ます。', + 'alpha_num' => ':attribute には文字、または数字を含めることが出来ます。', + 'array' => ':attribute は配列である必要があります。', + 'before' => ':attribute は :date 以前の日付である必要があります。', + 'before_or_equal' => ':attribute は :date と同じかそれ以前の日付である必要があります。', 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', + 'numeric' => ':attribute は :min から :max の間である必要があります。', + 'file' => ':attribute は :min から :max キロバイトの間である必要があります。', + 'string' => ':attribute は :min から :max 文字の間である必要があります。', + 'array' => ':attribute は :min アイテムから :max アイテムの間である必要があります。', ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'dimensions' => 'The :attribute has invalid image dimensions.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'file' => 'The :attribute must be a file.', - 'filled' => 'The :attribute field must have a value.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'ipv4' => 'The :attribute must be a valid IPv4 address.', - 'ipv6' => 'The :attribute must be a valid IPv6 address.', - 'json' => 'The :attribute must be a valid JSON string.', + 'boolean' => ':attribute フィールドは true か false である必要があります。', + 'confirmed' => ':attribute の確認が一致しません。', + 'date' => ':attribute は有効な日付ではありません。', + 'date_format' => ':attribute は :format と一致しません。', + 'different' => ':attribute と :other は異なる必要があります。', + 'digits' => ':attribute は :digits である必要があります。', + 'digits_between' => ':attribute は :min から :max 間の数字である必要があります。', + 'dimensions' => ':attribute は無効な画像サイズです。', + 'distinct' => ':attribute フィールドに重複した値があります。', + 'email' => ':attribute は有効なメールアドレスである必要があります。', + 'exists' => '選択された :attribute は無効です。', + 'file' => ':attribute はファイルである必要があります。', + 'filled' => ':attribute フィールドには値が必要です。', + 'image' => ':attribute は画像である必要があります。', + 'in' => '選択された :attribute は無効です。', + 'in_array' => ':attribute フィールドは :other には存在しません。', + 'integer' => ':attribute は整数である必要があります。', + 'ip' => ':attribute は有効なIPアドレスである必要があります。', + 'ipv4' => ':attribute は有効なIPv4アドレスである必要があります。', + 'ipv6' => ':attribute は有効なIPv6アドレスである必要があります。', + 'json' => ':attribute は有効なJSON文字列である必要があります。', 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', + 'numeric' => ':attribute は :max 以下である必要があります。', + 'file' => ':attribute は :max キロバイト以下である必要があります。', + 'string' => ':attribute の文字数は :max 以下である必要があります。', + 'array' => ':attribute は :max 以上のアイテム数を持つことは出来ません。', ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'mimes' => ':attribute は :values タイプのファイルである必要があります。', + 'mimetypes' => ':attribute は :values タイプのファイルである必要があります。', 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', + 'numeric' => ':attribute は最低でも :min 以上である必要があります。', + 'file' => ':attribute は最低でも :min キロバイト以上である必要があります。', + 'string' => ':attribute の文字数は最低でも :min 以上である必要があります。', + 'array' => ':attribute は最低でも :min アイテム以上である必要があります。', ], - 'not_in' => 'The selected :attribute is invalid.', - 'not_regex' => 'The :attribute format is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', + 'not_in' => '選択された :attribute は無効です。', + 'not_regex' => ':attribute は無効なフォーマットです。', + 'numeric' => ':attribute は数字である必要があります。', + 'present' => ':attribute フィールドは存在する必要があります。', + 'regex' => ':attribute は無効なフォーマットです。', + 'required' => ':attribute フィールドは必要です。', + 'required_if' => ':other が :value の場合、 :attribute は必要です。', + 'required_unless' => ':other が :values にない場合、 :attribute フィールドは必要です。', + 'required_with' => ':values が存在する場合、 :attribute は必要です。', + 'required_with_all' => ':values が存在する場合、 :attribute は必要です。', + 'required_without' => ':values が存在しない場合、 :attribute は必要です。', + 'required_without_all' => ':values が一つも存在しない場合、 :attribute は必要です。', + 'same' => ':attribute と :other は一致する必要があります。', 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', + 'numeric' => ':attribute は :size である必要があります。', + 'file' => ':attribute は :size キロバイトである必要があります。', + 'string' => ':attribute の文字数は :size である必要があります。', + 'array' => ':attribute には :size のアイテムが含まれている必要があります。', ], - 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'uploaded' => 'The :attribute failed to upload.', - 'url' => 'The :attribute format is invalid.', + 'string' => ':attribute は文字列である必要があります。', + 'timezone' => ':attribute は有効なゾーンである必要があります。', + 'unique' => ':attribute は既に使用されています。', + 'uploaded' => ':attribute のアップロードに失敗しました。', + 'url' => ':attribute は無効なフォーマットです。', /* |--------------------------------------------------------------------------