i18n; improve UI

This commit is contained in:
DIYgod 2016-07-14 15:26:15 +08:00
parent 0a47c33143
commit 4cf303ce26
No known key found for this signature in database
GPG Key ID: F8797DD1088C6506
4 changed files with 98 additions and 52 deletions

View File

@ -49,6 +49,7 @@ var option = {
autoplay: false, // Optional, autoplay video, not supported by mobile browsers
theme: '#FADFA3', // Optional, theme color, default: #b7daff
loop: true, // Optional, loop play music, default: true
lang: zh, // Optional, language, `zh` for Chinese, `en` for English, default: en
video: { // Required, video info
url: '若能绽放光芒.mp4', // Required, video url
pic: '若能绽放光芒.png' // Optional, music picture

View File

@ -61,6 +61,7 @@
autoplay: false,
theme: '#FADFA3',
loop: true,
lang: 'zh',
video: {
url: 'http://devtest.qiniudn.com/若能绽放光芒.mp4',
pic: 'http://devtest.qiniudn.com/若能绽放光芒.png'

View File

@ -20,7 +20,8 @@ class DPlayer {
'right': ['0 0 32 32', 'M22 16l-10.105-10.6-1.895 1.987 8.211 8.613-8.211 8.612 1.895 1.988 8.211-8.613z'],
'comment': ['0 0 32 32', 'M27.128 0.38h-22.553c-2.336 0-4.229 1.825-4.229 4.076v16.273c0 2.251 1.893 4.076 4.229 4.076h4.229v-2.685h8.403l-8.784 8.072 1.566 1.44 7.429-6.827h9.71c2.335 0 4.229-1.825 4.229-4.076v-16.273c0-2.252-1.894-4.076-4.229-4.076zM28.538 19.403c0 1.5-1.262 2.717-2.819 2.717h-8.36l-0.076-0.070-0.076 0.070h-11.223c-1.557 0-2.819-1.217-2.819-2.717v-13.589c0-1.501 1.262-2.718 2.819-2.718h19.734c1.557 0 2.819-0.141 2.819 1.359v14.947zM9.206 10.557c-1.222 0-2.215 0.911-2.215 2.036s0.992 2.035 2.215 2.035c1.224 0 2.216-0.911 2.216-2.035s-0.992-2.036-2.216-2.036zM22.496 10.557c-1.224 0-2.215 0.911-2.215 2.036s0.991 2.035 2.215 2.035c1.224 0 2.215-0.911 2.215-2.035s-0.991-2.036-2.215-2.036zM15.852 10.557c-1.224 0-2.215 0.911-2.215 2.036s0.991 2.035 2.215 2.035c1.222 0 2.215-0.911 2.215-2.035s-0.992-2.036-2.215-2.036z'],
'comment-off': ['0 0 32 32', 'M27.090 0.131h-22.731c-2.354 0-4.262 1.839-4.262 4.109v16.401c0 2.269 1.908 4.109 4.262 4.109h4.262v-2.706h8.469l-8.853 8.135 1.579 1.451 7.487-6.88h9.787c2.353 0 4.262-1.84 4.262-4.109v-16.401c0-2.27-1.909-4.109-4.262-4.109v0zM28.511 19.304c0 1.512-1.272 2.738-2.841 2.738h-8.425l-0.076-0.070-0.076 0.070h-11.311c-1.569 0-2.841-1.226-2.841-2.738v-13.696c0-1.513 1.272-2.739 2.841-2.739h19.889c1.569 0 2.841-0.142 2.841 1.37v15.064z'],
'send': ['0 0 32 32', 'M13.725 30l3.9-5.325-3.9-1.125v6.45zM0 17.5l11.050 3.35 13.6-11.55-10.55 12.425 11.8 3.65 6.1-23.375-32 15.5z']
'send': ['0 0 32 32', 'M13.725 30l3.9-5.325-3.9-1.125v6.45zM0 17.5l11.050 3.35 13.6-11.55-10.55 12.425 11.8 3.65 6.1-23.375-32 15.5z'],
'menu': ['0 0 22 32', 'M20.8 14.4q0.704 0 1.152 0.48t0.448 1.12-0.48 1.12-1.12 0.48h-19.2q-0.64 0-1.12-0.48t-0.48-1.12 0.448-1.12 1.152-0.48h19.2zM1.6 11.2q-0.64 0-1.12-0.48t-0.48-1.12 0.448-1.12 1.152-0.48h19.2q0.704 0 1.152 0.48t0.448 1.12-0.48 1.12-1.12 0.48h-19.2zM20.8 20.8q0.704 0 1.152 0.48t0.448 1.12-0.48 1.12-1.12 0.48h-19.2q-0.64 0-1.12-0.48t-0.48-1.12 0.448-1.12 1.152-0.48h19.2z']
};
this.getSVG = (type) => {
return `
@ -42,7 +43,8 @@ class DPlayer {
element: document.getElementsByClassName('dplayer')[0],
autoplay: false,
theme: '#b7daff',
loop: false
loop: false,
lang: 'en'
};
for (let defaultKey in defaultOption) {
if (defaultOption.hasOwnProperty(defaultKey) && !option.hasOwnProperty(defaultKey)) {
@ -53,6 +55,30 @@ class DPlayer {
this.option = option;
this.loop = option.loop;
this.tranZH = {
'Danmaku is loading': '弹幕加载中',
'Top': '顶部',
'Bottom': '底部',
'Rolling': '滚动',
'Input danmaku, hit Enter': '输入弹幕,回车发送',
'About author': '关于作者',
'DPlayer feedback': '播放器意见反馈',
'About DPlayer': '关于 DPlay 播放器',
'Loop': '洗脑循环',
'Speed': '速度',
'Opacity for danmaku': '弹幕透明度',
'Normal': '正常',
'Please input danmaku!': '要输入弹幕内容啊喂!'
};
this.getTran = (text) => {
if (this.option.lang === 'en') {
return text;
}
else if (this.option.lang === 'zh') {
return this.tranZH[text];
}
};
/**
* Parse second to 00:00 format
*
@ -112,7 +138,7 @@ class DPlayer {
<div class="dplayer-danmaku"></div>
<div class="dplayer-bezel">
<span class="dplayer-bezel-icon"></span>
${this.option.danmaku ? `<span class="dplayer-danloading">弹幕加载中</span>` : ``}
${this.option.danmaku ? `<span class="dplayer-danloading">${this.getTran('Danmaku is loading')}</span>` : ``}
<span class="diplayer-loading-icon">
<svg height="100%" version="1.1" viewBox="0 0 22 22" width="100%">
<svg x="7" y="1">
@ -170,24 +196,11 @@ class DPlayer {
+ ` </button>
<div class="dplayer-comment-box">
<button class="dplayer-icon dplayer-comment-setting-icon">`
+ this.getSVG('setting')
+ this.getSVG('menu')
+ ` </button>
<div class="dplayer-comment-setting-box">
<div class="dplayer-comment-setting-type">
<label>
<input type="radio" name="dplayer-danmaku-type" value="top">
<span>顶部</span>
</label>
<label>
<input type="radio" name="dplayer-danmaku-type" value="right" checked>
<span>滚动</span>
</label>
<label>
<input type="radio" name="dplayer-danmaku-type" value="bottom">
<span>底部</span>
</label>
</div>
<div class="dplayer-comment-setting-color">
<div class="dplayer-comment-setting-title">设置弹幕颜色</div>
<label>
<input type="radio" name="dplayer-danmaku-color" value="#fff" checked>
<span style="background: #fff; border: 1px solid rgba(0,0,0,.1);"></span>
@ -196,10 +209,6 @@ class DPlayer {
<input type="radio" name="dplayer-danmaku-color" value="#e54256">
<span style="background: #e54256"></span>
</label>
<label>
<input type="radio" name="dplayer-danmaku-color" value="#FFAB00">
<span style="background: #FFAB00"></span>
</label>
<label>
<input type="radio" name="dplayer-danmaku-color" value="#ffe133">
<span style="background: #ffe133"></span>
@ -216,13 +225,24 @@ class DPlayer {
<input type="radio" name="dplayer-danmaku-color" value="#D500F9">
<span style="background: #D500F9"></span>
</label>
</div>
<div class="dplayer-comment-setting-type">
<div class="dplayer-comment-setting-title">设置弹幕类型</div>
<label>
<input type="radio" name="dplayer-danmaku-color" value="#444">
<span style="background: #444;"></span>
<input type="radio" name="dplayer-danmaku-type" value="top">
<span>${this.getTran('Top')}</span>
</label>
<label>
<input type="radio" name="dplayer-danmaku-type" value="right" checked>
<span>${this.getTran('Rolling')}</span>
</label>
<label>
<input type="radio" name="dplayer-danmaku-type" value="bottom">
<span>${this.getTran('Bottom')}</span>
</label>
</div>
</div>
<input class="dplayer-comment-input" type="text" placeholder="输入弹幕,回车发送" maxlength="30">
<input class="dplayer-comment-input" type="text" placeholder="${this.getTran('Input danmaku, hit Enter')}" maxlength="30">
<button class="dplayer-icon dplayer-send-icon">`
+ this.getSVG('send')
+ ` </button>
@ -248,9 +268,9 @@ class DPlayer {
</div>
</div>
<div class="dplayer-menu">
<div class="dplayer-menu-item"><span class="dplayer-menu-label"><a target="_blank" href="http://diygod.me/">关于作者</a></span></div>
<div class="dplayer-menu-item"><span class="dplayer-menu-label"><a target="_blank" href="https://github.com/DIYgod/DPlayer/issues">播放器意见反馈</a></span></div>
<div class="dplayer-menu-item"><span class="dplayer-menu-label"><a target="_blank" href="https://github.com/DIYgod/DPlayer">关于 DPlayer 播放器</a></span></div>
<div class="dplayer-menu-item"><span class="dplayer-menu-label"><a target="_blank" href="http://diygod.me/">${this.getTran('About author')}</a></span></div>
<div class="dplayer-menu-item"><span class="dplayer-menu-label"><a target="_blank" href="https://github.com/DIYgod/DPlayer/issues">${this.getTran('DPlayer feedback')}</a></span></div>
<div class="dplayer-menu-item"><span class="dplayer-menu-label"><a target="_blank" href="https://github.com/DIYgod/DPlayer">${this.getTran('About DPlayer')}</a></span></div>
</div>
`;
@ -513,20 +533,20 @@ class DPlayer {
const settingHTML = {
'original': `
<div class="dplayer-setting-item dplayer-setting-loop">
<span class="dplayer-label">洗脑循环</span>
<span class="dplayer-label">${this.getTran('Loop')}</span>
<div class="dplayer-toggle">
<input class="dplayer-toggle-setting-input" type="checkbox" name="dplayer-toggle" id="dplayer-toggle">
<label for="dplayer-toggle"></label>
</div>
</div>
<div class="dplayer-setting-item dplayer-setting-speed">
<span class="dplayer-label">速度</span>
<span class="dplayer-label">${this.getTran('Speed')}</span>
<div class="dplayer-toggle">`
+ this.getSVG('right')
+ ` </div>
</div>
<div class="dplayer-setting-item dplayer-setting-danmaku">
<span class="dplayer-label">弹幕透明度</span>
<span class="dplayer-label">${this.getTran('Opacity for danmaku')}</span>
<div class="dplayer-danmaku-bar-wrap">
<div class="dplayer-danmaku-bar">
<div class="dplayer-danmaku-bar-inner" style="width: ${this.danOpacity * 100}%">
@ -543,7 +563,7 @@ class DPlayer {
<span class="dplayer-label">0.75</span>
</div>
<div class="dplayer-setting-speed-item" data-speed="1">
<span class="dplayer-label">正常</span>
<span class="dplayer-label">${this.getTran('Normal')}</span>
</div>
<div class="dplayer-setting-speed-item" data-speed="1.25">
<span class="dplayer-label">1.25</span>
@ -900,7 +920,7 @@ class DPlayer {
// text can't be empty
if (!commentInput.value.replace(/^\s+|\s+$/g, '')) {
alert('要输入弹幕内容啊喂!');
alert(this.getTran('Please input danmaku!'));
return;
}

View File

@ -373,6 +373,11 @@
}
}
#dplayer-menu {
stroke: #ddd;
stroke-width: 1px;
}
.dplayer-time {
line-height: 38px;
color: #eee;
@ -629,12 +634,12 @@
position: absolute;
background: #fff;
bottom: 40px;
left: -82.5px;
left: -93px;
box-shadow: 0 0 25px rgba(0,0,0,.3);
border-radius: 4px;
padding: 5px;
padding: 10px 10px 16px;
font-size: 14px;
width: 193px;
width: 204px;
transition: all .3s ease-in-out;
transform: scale(0);
@ -661,25 +666,44 @@
cursor: pointer;
}
.dplayer-comment-setting-title {
font-size: 14px;
color: #555;
padding: 6px;
}
.dplayer-comment-setting-type {
width: 44px;
float: left;
margin-right: 5px;
font-size: 0;
span {
padding: 4px 6px;
line-height: 16px;
display: inline-block;
border-radius: 4px;
&:hover {
animation: my-face 5s infinite ease-in-out;
label {
&:nth-child(2) {
span {
border-radius: 4px 0 0 4px;
}
}
&:nth-child(4) {
span {
border-radius: 0 4px 4px 0;
}
}
}
span {
width: 33%;
padding: 4px 6px;
line-height: 16px;
display: inline-block;
font-size: 12px;
color: #555;
border: 1px solid #E4E4E6;
margin-right: -1px;
box-sizing: border-box;
text-align: center;
cursor: pointer;
}
input:checked+span {
background: #aaa;
color: #FFF;
background: #E4E4E6;
}
}
@ -693,10 +717,10 @@
}
span {
width: 24px;
height: 24px;
width: 22px;
height: 22px;
display: inline-block;
border-radius: 7px;
border-radius: 50%;
box-sizing: border-box;
cursor: pointer;