Skip to content

Commit 29e5029

Browse files
committed
add locale support for 'copy to clipboard'
1 parent 0a802e9 commit 29e5029

5 files changed

Lines changed: 34 additions & 18 deletions

File tree

_data/locales/en.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,10 @@ post:
7979
copy:
8080
title: Copy link
8181
succeed: Link copied successfully!
82+
clipboard:
83+
tooltip: Copy to clipboard
84+
succeed: Copied!
85+
failed: Error occurred!
8286
# pinned prompt of posts list on homepage
8387
pin_prompt: Pinned
8488

_data/locales/zh-CN.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,10 @@ post:
7878
copy:
7979
title: 分享链接
8080
succeed: 链接已复制!
81+
clipboard:
82+
tooltip: 复制到剪贴板
83+
succeed: 已复制!
84+
failed: 出错啦!
8185
# pinned prompt of posts list on homepage
8286
pin_prompt: 顶置
8387

_javascript/utils/copy-to-clipboard.js

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*/
55

66
$(function copyToClipboard() {
7-
if (!enableCopyToClipboard) {
7+
if (!clipboardAttr.enable) {
88
return;
99
}
1010

@@ -19,40 +19,43 @@ $(function copyToClipboard() {
1919
}
2020

2121
function fallbackMessage(action) {
22-
var actionMsg = '';
23-
var actionKey = (action === 'cut' ? 'X' : 'C');
24-
if (/iPhone|iPad/i.test(navigator.userAgent)) {
25-
actionMsg = 'No support :(';
26-
} else if (/Mac/i.test(navigator.userAgent)) {
27-
actionMsg = 'Press ⌘-' + actionKey + ' to ' + action;
28-
} else {
29-
actionMsg = 'Press Ctrl-' + actionKey + ' to ' + action;
22+
let tooltipMsg = "Error occurred!";
23+
if (clipboardAttr.failed && clipboardAttr.failed.length > 0) {
24+
tooltipMsg = clipboardAttr.failed;
3025
}
31-
return actionMsg;
26+
return tooltipMsg;
3227
}
3328

3429
$("div.highlighter-rouge").each(function (index, element) {
3530
element.firstChild.insertAdjacentHTML('beforebegin', '<button class="cpbtn" data-clipboard-snippet><i class="far fa-copy"></i></button>');
3631
});
37-
var clipboardSnippets = new ClipboardJS('[data-clipboard-snippet]', {
32+
let clipboardSnippets = new ClipboardJS('[data-clipboard-snippet]', {
3833
target: function (trigger) {
3934
return trigger.nextElementSibling;
4035
}
4136
});
4237
clipboardSnippets.on('success', function (e) {
4338
e.clearSelection();
44-
showTooltip(e.trigger, 'Copied!');
39+
let tooltipMsg = "Copied!";
40+
if (clipboardAttr.succeed && clipboardAttr.succeed.length > 0) {
41+
tooltipMsg = clipboardAttr.succeed;
42+
}
43+
showTooltip(e.trigger, tooltipMsg);
4544
});
4645
clipboardSnippets.on('error', function (e) {
4746
showTooltip(e.trigger, fallbackMessage(e.action));
4847
});
4948

50-
var btns = document.querySelectorAll('.cpbtn');
51-
for (var i = 0; i < btns.length; i++) {
49+
let btns = document.querySelectorAll('.cpbtn');
50+
for (let i = 0; i < btns.length; i++) {
5251
btns[i].addEventListener('mouseleave', clearTooltip);
5352
btns[i].addEventListener('blur', clearTooltip);
5453
btns[i].addEventListener('mouseenter', function (e) {
55-
showTooltip(e.currentTarget, "copy to clipboard");
54+
let tooltipMsg = "Copy to clipboard";
55+
if (clipboardAttr.tooltip && clipboardAttr.tooltip.length > 0) {
56+
tooltipMsg = clipboardAttr.tooltip;
57+
}
58+
showTooltip(e.currentTarget, tooltipMsg);
5659
}, false);
5760
}
5861
});

_layouts/post.html

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,12 @@ <h1 data-toc-skip>{{ page.title }}</h1>
142142

143143
</div> <!-- .row -->
144144

145-
<!-- enable displaying copy button in code blocks -->
145+
<!-- display copy button in code blocks -->
146146
<script>
147-
var enableCopyToClipboard = {{ site.clipboard }} && {{ page.clipboard }};
147+
var clipboardAttr = {
148+
enable: {{ site.clipboard }} && {{ page.clipboard }},
149+
tooltip: '{{ site.data.locales[lang].post.clipboard.tooltip }}',
150+
succeed: '{{ site.data.locales[lang].post.clipboard.succeed }}',
151+
failed: '{{ site.data.locales[lang].post.clipboard.failed }}',
152+
};
148153
</script>

assets/js/dist/post.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)