diff --git a/resources/lang/en/errors.yml b/resources/lang/en/errors.yml new file mode 100644 index 00000000..69cf29ac --- /dev/null +++ b/resources/lang/en/errors.yml @@ -0,0 +1,9 @@ +details: 'Details:' +error403: You cannot view this page without authority. +error404: Nothing here. +error503: Application is now in maintenance mode. +be-right-back: Be right back. +error-occurred: Error occurred. +some-errors: 'Some errors occurred:' +error-code: 'Error code:' +file-location: 'File location:' \ No newline at end of file diff --git a/resources/lang/en/locale.js b/resources/lang/en/locale.js index 7e8ae450..e16644f1 100644 --- a/resources/lang/en/locale.js +++ b/resources/lang/en/locale.js @@ -31,6 +31,25 @@ reset: 'Reset', resetting: 'Resetting' }, + skinlib: { + setSkinName: 'Please name your skin~', + removeFromCloset: 'Remove from closet.', + addToCloset: 'Add to closet.', + encodingError: 'Error: Encoding of this picture is incorrect.', + formatError: 'Error: Format of skin file must be PNG.', + chooseTextureType: 'Please choose type of texture.', + noUploadFile: 'You have not uploaded any file.', + setTextureName: 'Please name your texture.', + choosePNG: 'Please choose PNG picture file.', + uploading: 'Uploading', + redirecting: 'Redirecting...', + confirmUpload: 'Confirm uploading', + inputTextureName: 'Please input new name of texture.', + warningPublic: 'Are you sure to make this texture public?', + setPrivate: 'Make it private', + setPublic: 'Make it public', + warningDelete: 'Are you sure to delete this texture? Scores will be returned.' + }, user: { switch2dPreview: 'Switch to 2D Preview', switch3dPreview: 'Switch to 3D Preview', @@ -52,8 +71,11 @@ emptyNewEmail: 'Empty new email address.', changeEmail: 'Sure to change your email address to :new_email?', emptyDeletePassword: 'Please enter the current password:', - signRemainTime: 'Can sign after :time hours', + signRemainTime: 'Can sign after :time hours' }, + utils: { + fatalError: 'Fatal Error (Please contact author.)' + } config: { csl13_1Upper: 'v13.1 and upper (recommended)', csl13_1Lower: 'lower than v13.1', diff --git a/resources/lang/en/skinlib.yml b/resources/lang/en/skinlib.yml new file mode 100644 index 00000000..f5dcb349 --- /dev/null +++ b/resources/lang/en/skinlib.yml @@ -0,0 +1,61 @@ +index: + now-showing: Now showing + any-model: (Any model) + steve-model: Steve Model + alex-model: Alex Model + uploader: User ( :name ) uploaded + newest-uploaded: Newestly uploaded + most-likes: Most likes + no-result: 'No result.' + +item: + remove-from-closet: Remove from closet. + add-to-closet: Add to closet. + not-logged-in: Please login. + private: Private + +master: + filter: Filter + my-upload: My upload + sort: Sorting + search-textures: Search textures + upload-new-skin: Upload new skin + +search: + title: Result + no-given-keywords: 'No keywords' + no-result: No result. + +show: + title: Details of texture + login-before-using-closet: Please login before using closet. + number-of-likes: Number of likes + detail: Details + name: Name + modify-name: Modify name + suitable-model: Suitable model + download-raw: Right-click and choose SAVE AS then you can download raw skin file. + size-of-file: Size of file + uploader: Uploader + upload-at: Date of upload + delete-texture: Delete texture + change-privacy: Change privacy + message: 'Textures setted to be private or deleted will be removed from all collectors'' closets.' + set-private: Be private + set-public: Be public + set-message: 'You can make this texture private or delete it, which will remove it from all collectors'' closets.' + comment: Comments + no-comment: We have not enabled comment service. + +upload: + title: Upload texture + button: Confirm uploading + upload: Upload + texture-name: Texture name + name-message: Length of texture name should be less than 32 bytes and it cannot contain invaild character. + texture-type: Texture type + choose-file: Choose file + storage-message: Private texture will cost more scores. Every KB costs :score scores + privacy-message: Others cannot find it in skin library. + set-private: Make it private. + \ No newline at end of file diff --git a/resources/lang/zh-CN/errors.yml b/resources/lang/zh-CN/errors.yml new file mode 100644 index 00000000..2e2131af --- /dev/null +++ b/resources/lang/zh-CN/errors.yml @@ -0,0 +1,9 @@ +details: 详细信息: +error403: 你并没有权限查看此页面 +error404: 这里啥都没有哦 +error503: 网站维护中 +be-right-back: 马上回来 +error-occurred: 出现错误 +some-errors: 出现了一些错误: +error-code: 错误码: +file-location: 文件位置: \ No newline at end of file diff --git a/resources/lang/zh-CN/locale.js b/resources/lang/zh-CN/locale.js index 5eece609..b1282af0 100644 --- a/resources/lang/zh-CN/locale.js +++ b/resources/lang/zh-CN/locale.js @@ -31,6 +31,25 @@ reset: '重置', resetting: '重置中' }, + skinlib: { + setSkinName: '给你的皮肤起个名字吧~', + removeFromCloset: '从衣柜中移除', + addToCloset: '添加至衣柜', + encodingError: '错误:这张图片编码不对哦', + formatError: '错误:皮肤文件必须为 PNG 格式', + chooseTextureType: '请选择材质的类型', + noUploadFile: '你还没有上传任何文件哦', + setTextureName: '给你的材质起个名字吧', + choosePNG: '请选择 PNG 格式的图片', + uploading: '上传中', + redirecting: '正在跳转...', + confirmUpload: '确认上传', + inputTextureName: '请输入新的材质名称:', + warningPublic: '要将此材质设置为公开吗?', + setPrivate: '设为隐私', + setPublic: '设为公开', + warningDelete: '真的要删除此材质吗?积分将会被返还' + }, user: { switch2dPreview: '切换 2D 预览', switch3dPreview: '切换 3D 预览', @@ -52,8 +71,11 @@ emptyNewEmail: '你还没有填写新邮箱啊', changeEmail: '确定要将用户邮箱更改为 :new_email 吗?', emptyDeletePassword: '请先输入当前用户密码', - signRemainTime: ':time 小时后可签到', + signRemainTime: ':time 小时后可签到' }, + utils: { + fatalError: '严重错误(请联系作者)' + } config: { csl13_1Upper: '13.1 版及以上(推荐)', csl13_1Lower: '13.1 版以下', diff --git a/resources/lang/zh-CN/skinlib.yml b/resources/lang/zh-CN/skinlib.yml new file mode 100644 index 00000000..df990184 --- /dev/null +++ b/resources/lang/zh-CN/skinlib.yml @@ -0,0 +1,61 @@ +index: + now-showing: 当前正显示 + any-model: (任意模型) + steve-model: Steve 模型 + alex-model: Alex 模型 + uploader: 用户( :name )上传 + newest-uploaded: 最新上传 + most-likes: 最多收藏 + no-result: 无结果 + +item: + remove-from-closet: 从衣柜中移除 + add-to-closet: 添加至衣柜 + not-logged-in: 请先登录 + private: 私密 + +master: + filter: 过滤器 + my-upload: 我的上传 + sort: 排序 + search-textures: 搜索材质 + upload-new-skin: 上传新皮肤 + +search: + title: 搜索结果 + no-given-keywords: 未指定关键字 + no-result: 无结果 + +show: + title: 材质详情 + login-before-using-closet: 登录后才能使用衣柜哦 + number-of-likes: 收藏人数 + detail: 详细信息 + name: 名称 + modify-name: 修改名称 + suitable-model: 适用模型 + download-raw: 右键另存为即可下载原始皮肤文件 + size-of-file: 文件大小 + uploader: 上传者 + upload-at: 上传日期 + delete-texture: 删除材质 + change-privacy: 设置隐私 + message: 材质设为隐私或被删除后将会从每一个收藏者的衣柜中移除。 + set-private: 设为隐私 + set-public: 设为公开 + set-message: 你可以将此材质设为隐私或删除。这将会使此材质从每一个收藏者的衣柜中移除。 + comment: 评论区 + no-comment: 本站未开启评论服务 + +upload: + title: 上传材质 + button: 确认上传 + upload: 上传 + texture-name: 材质名称 + name-message: 材质名称应该小于 32 个字节且不能包含奇怪的符号 + texture-type: 材质类型 + choose-file: 选择文件 + storage-message: 私密材质将会消耗更多的积分:每 KB 存储空间 :score 积分 + privacy-message: 其他人将不会在皮肤库中看到此材质 + set-private: 设置为私密材质 + \ No newline at end of file diff --git a/resources/src/js/skinlib.js b/resources/src/js/skinlib.js index 46e0a390..c283a7cb 100644 --- a/resources/src/js/skinlib.js +++ b/resources/src/js/skinlib.js @@ -11,8 +11,8 @@ var base_url = location.pathname.endsWith('skinlib') ? "." : ".."; $(document).ready(function() { swal.setDefaults({ - confirmButtonText: '确定', - cancelButtonText: '取消' + confirmButtonText: trans('general.confirm'), + cancelButtonText: trans('general.cancel') }); }); @@ -40,7 +40,7 @@ $('#type-skin').on('ifToggled', function() { function addToCloset(tid) { $.getJSON(base_url + '/skinlib/info/'+tid, function(json) { swal({ - title: '给你的皮肤起个名字吧~', + title: trans('skinlib.setSkinName'), inputValue: json.name, input: 'text', showCancelButton: true, @@ -49,7 +49,7 @@ function addToCloset(tid) { if (value) { resolve(); } else { - reject('你还没有填写名称哦'); + reject(trans('user.emptyPlayerName')); } }); } @@ -79,8 +79,8 @@ function ajaxAddToCloset(tid, name) { }); $('.modal').modal('hide'); - $('a[tid='+tid+']').attr('href', 'javascript:removeFromCloset('+tid+');').attr('title', '从衣柜中移除').addClass('liked'); - $('#'+tid).attr('href', 'javascript:removeFromCloset('+tid+');').html('从衣柜中移除'); + $('a[tid='+tid+']').attr('href', 'javascript:removeFromCloset('+tid+');').attr('title', trans('skinlib.removeFromCloset')).addClass('liked'); + $('#'+tid).attr('href', 'javascript:removeFromCloset('+tid+');').html(trans('skinlib.removeFromCloset')); $('#likes').html(parseInt($('#likes').html()) + 1); } else { toastr.warning(json.msg); @@ -92,7 +92,7 @@ function ajaxAddToCloset(tid, name) { function removeFromCloset(tid) { swal({ - text: '确定要从衣柜中移除此材质吗?', + text: trans('user.removeFromCloset'), type: 'warning', showCancelButton: true, cancelButtonColor: '#3085d6', @@ -110,8 +110,8 @@ function removeFromCloset(tid) { html: json.msg }); - $('a[tid='+tid+']').attr('href', 'javascript:addToCloset('+tid+');').attr('title', '添加至衣柜').removeClass('liked'); - $('#'+tid).attr('href', 'javascript:addToCloset('+tid+');').html('添加至衣柜'); + $('a[tid='+tid+']').attr('href', 'javascript:addToCloset('+tid+');').attr('title', trans('skinlib.addToCloset')).removeClass('liked'); + $('#'+tid).attr('href', 'javascript:addToCloset('+tid+');').html(trans('skinlib.addToCloset')); $('#likes').html(parseInt($('#likes').html()) - 1); } else { toastr.warning(json.msg); @@ -176,13 +176,13 @@ function handleFiles(files, type) { $('#name').val(file.name.split('.png')[0]) }; img.onerror = function() { - toastr.warning('错误:这张图片编码不对哦'); + toastr.warning(trans('skinlib.encodingError')); }; img.src = this.result; }; reader.readAsDataURL(file); } else { - toastr.warning('错误:皮肤文件必须为 PNG 格式'); + toastr.warning(trans('skinlib.formatError')); } } }; @@ -198,18 +198,18 @@ function upload() { } else if ($('#type-cape').prop('checked')) { form_data.append('type', 'cape'); } else { - toastr.info('请选择材质的类型'); return; + toastr.info(trans('skinlib.chooseTextureType')); return; } // quick fix for browsers which don't support FormData.get() if ($('#file').prop('files')[0] == 'undefined') { - toastr.info('你还没有上传任何文件哦'); + toastr.info(trans('skinlib.noUploadFile')); $('#file').focus(); } else if ($('#name').val() == "") { - toastr.info('给你的材质起个名字吧'); + toastr.info(trans('skinlib.setTextureName')); $('#name').focus(); } else if ($('#file').prop('files')[0].type !== "image/png") { - toastr.warning('请选择 PNG 格式的图片'); + toastr.warning(trans('skinlib.choosePNG')); $('#file').focus(); } else { $.ajax({ @@ -220,7 +220,7 @@ function upload() { data: form_data, processData: false, beforeSend: function() { - $('#upload-button').html(' 上传中').prop('disabled', 'disabled'); + $('#upload-button').html(' ' + trans('skinlib.uploading')).prop('disabled', 'disabled'); }, success: function(json) { if (json.errno == 0) { @@ -228,7 +228,7 @@ function upload() { type: 'success', html: json.msg }).then(function() { - toastr.info('正在跳转...'); + toastr.info(trans('skinlib.redirecting')); window.setTimeout('window.location = "./show?tid='+json.tid+'"', 1000); }); } else { @@ -236,12 +236,12 @@ function upload() { type: 'warning', html: json.msg }).then(function() { - $('#upload-button').html('确认上传').prop('disabled', ''); + $('#upload-button').html(trans('skinlib.confirmUpload')).prop('disabled', ''); }); } }, error: function(json) { - $('#upload-button').html('确认上传').prop('disabled', ''); + $('#upload-button').html(trans('skinlib.confirmUpload')).prop('disabled', ''); showAjaxError(json); } }); @@ -251,7 +251,7 @@ function upload() { function changeTextureName(tid) { swal({ - text: '请输入新的材质名称:', + text: trans('skinlib.inputTextureName'), input: 'text', showCancelButton: true, inputValidator: function(value) { @@ -259,7 +259,7 @@ function changeTextureName(tid) { if (value) { resolve(); } else { - reject('你还没有填写名称哦'); + reject(trans('user.emptyPlayerName')); } }); } @@ -285,7 +285,7 @@ function changeTextureName(tid) { $('.private-label').click(function() { var object = $(this); swal({ - text: '要将此材质设置为公开吗?', + text: trans('skinlib.warningPublic'), type: 'warning', showCancelButton: true }).then(function() { @@ -303,9 +303,9 @@ function changePrivacy(tid) { if (json.errno == 0) { toastr.success(json.msg); if (json.public == "0") - $('a:contains("设为隐私")').html('设为公开'); + $('a:contains("' + trans('skinlib.setPrivate') + '")').html(trans('skinlib.setPublic')); else - $('a:contains("设为公开")').html('设为隐私'); + $('a:contains("' + trans('skinlib.setPublic') + '")').html(trans('skinlib.setPrivate')); } else { toastr.warning(json.msg); } @@ -316,7 +316,7 @@ function changePrivacy(tid) { function deleteTexture(tid) { swal({ - text: '真的要删除此材质吗?积分将会被返还', + text: trans('skinlib.warningDelete'), type: 'warning', showCancelButton: true }).then(function() { diff --git a/resources/src/js/utils.js b/resources/src/js/utils.js index af2e18fb..263590f0 100644 --- a/resources/src/js/utils.js +++ b/resources/src/js/utils.js @@ -84,7 +84,7 @@ function showMsg(msg, type) { } function showAjaxError(json) { - showModal(json.responseText.replace(/\n/g, '
'), 'Fatal Error(请联系作者)', 'danger'); + showModal(json.responseText.replace(/\n/g, '
'), trans('utils.fatalError'), 'danger'); } function isMobile() { diff --git a/resources/views/errors/403.tpl b/resources/views/errors/403.tpl index c45a9a31..a2e6d064 100644 --- a/resources/views/errors/403.tpl +++ b/resources/views/errors/403.tpl @@ -5,5 +5,5 @@ @section('content')

403 Forbidden

-

详细信息:{{ $exception->getMessage() ?: "你并没有权限查看此页面" }}

+

{{ trans('errors.details').$exception->getMessage() ?: trans('error.error403') }}

@endsection diff --git a/resources/views/errors/404.tpl b/resources/views/errors/404.tpl index 31db1998..6542ec15 100644 --- a/resources/views/errors/404.tpl +++ b/resources/views/errors/404.tpl @@ -5,5 +5,5 @@ @section('content')

404 Not Found

-

详细信息:{{ $exception->getMessage() ?: "这里啥都没有哦" }}

+

{{ trans('errors.details').$exception->getMessage() ?: trans('errors.error404') }}

@endsection diff --git a/resources/views/errors/503.tpl b/resources/views/errors/503.tpl index bc6b1f8f..94a3d8b1 100644 --- a/resources/views/errors/503.tpl +++ b/resources/views/errors/503.tpl @@ -3,7 +3,7 @@ @section('title', '503 Service Unavailable') @section('content') -

Be right back.

+

{{ trans('errors.be-right-back') }}

-

详细信息:{{ $exception->getMessage() ?: "Application is now in maintenance mode." }}

+

{{ trans('errors.details').$exception->getMessage() ?: trans('errors.error503') }}

@endsection diff --git a/resources/views/errors/e.tpl b/resources/views/errors/e.tpl index 1f1340ce..81d07ef9 100644 --- a/resources/views/errors/e.tpl +++ b/resources/views/errors/e.tpl @@ -1,10 +1,10 @@ @extends('errors.general') -@section('title', '出现错误') +@section('title', trans('errors.error-occurred')) @section('content') -

出现了一些错误:

+

{{ trans('errors.some-errors') }}

-

错误码: {{ $code }}

-

详细信息:{!! $message !!}

+

{{ trans('error.error-code').$code }}

+

{!! trans('error.details').$message !!}

@endsection diff --git a/resources/views/errors/exception.tpl b/resources/views/errors/exception.tpl index d86f27b3..7a9c2338 100644 --- a/resources/views/errors/exception.tpl +++ b/resources/views/errors/exception.tpl @@ -1,12 +1,12 @@ @extends('errors.general') -@section('title', '出现错误') +@section('title', trans('errors.error-occurred')) @section('content') -

{{ $level }}: 出现了一些错误

+

{{ $level.': '.trans('errors.some-errors') }}

-

详细信息:{{ $message }}

+

{{ trans('errors.details').$message }}

-

文件位置:{{ $file }}: {{ $line }}

+

{{ trans('errors.file-location') }}{{ $file }}: {{ $line }}

@endsection diff --git a/resources/views/skinlib/index.tpl b/resources/views/skinlib/index.tpl index 8eb5f2dc..31fd73e1 100644 --- a/resources/views/skinlib/index.tpl +++ b/resources/views/skinlib/index.tpl @@ -1,6 +1,6 @@ @extends('skinlib.master') -@section('title', '皮肤库') +@section('title', trans('general.skinlib')) @section('content') @@ -9,29 +9,29 @@

- 皮肤库 + {{ trans('general.skinlib') }} Skin Library

@@ -46,7 +46,7 @@ @include('skinlib.item') @empty -

无结果

+

{{ trans('skinlib.index.no-result') }}

@endforelse
diff --git a/resources/views/skinlib/item.tpl b/resources/views/skinlib/item.tpl index 88b56ef6..ce72b63f 100644 --- a/resources/views/skinlib/item.tpl +++ b/resources/views/skinlib/item.tpl @@ -12,17 +12,17 @@ @if (Session::has('uid')) @if ($user->closet->has($texture['tid'])) - + @else - + @endif @else - + @endif @if ($texture['public'] == "0") - 私密 + {{ trans('skinlib.item.private') }} @endif diff --git a/resources/views/skinlib/master.tpl b/resources/views/skinlib/master.tpl index e69d4bd0..2de54947 100644 --- a/resources/views/skinlib/master.tpl +++ b/resources/views/skinlib/master.tpl @@ -29,40 +29,40 @@ @@ -81,7 +81,7 @@ -
  • 上传新皮肤
  • +
  • {{ trans('skinlib.master.upload-new-skin') }}
  • @if (!is_null($user))