mirror of
https://github.com/wahyd4/links.git
synced 2026-08-08 21:04:53 +10:00
Update UI
This commit is contained in:
+1
-1
@@ -145,7 +145,7 @@ MUSIC_ROOT = os.path.join(BASE_DIR, 'data', 'music')
|
||||
# File uploads folder — override via FILE_UPLOADS_FOLDER env var.
|
||||
# Defaults to ~/Downloads locally; set to /uploads on k8s.
|
||||
FILE_UPLOADS_FOLDER = os.environ.get('FILE_UPLOADS_FOLDER', os.path.expanduser('~/Downloads'))
|
||||
IMAGES_FOLDER = os.environ.get('IMAGES_FOLDER', os.path.expanduser('~/Pictures'))
|
||||
IMAGES_FOLDER = os.environ.get('IMAGES_FOLDER', os.path.expanduser('~/Downloads'))
|
||||
|
||||
|
||||
LOGGING = {
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
opacity: 1 !important;
|
||||
transform: none !important;
|
||||
}
|
||||
.app-tile, .post-card, .fan-card, .fan-card img, .fan-card-frame { transition: none !important; animation: none !important; }
|
||||
.app-tile, .post-card, .fan-card, .fan-card img, .fan-card-frame, .fan-lightbox { transition: none !important; animation: none !important; }
|
||||
}
|
||||
|
||||
/* ---------- Hero ---------- */
|
||||
@@ -395,6 +395,35 @@
|
||||
.fan-actions { gap: 0.8rem; }
|
||||
}
|
||||
|
||||
/* ---------- Fan lightbox (full-size preview on card click) ---------- */
|
||||
.fan-lightbox {
|
||||
position: fixed; inset: 0; z-index: 1000;
|
||||
display: flex; align-items: center; justify-content: center;
|
||||
padding: 2rem;
|
||||
background: rgba(0, 0, 0, 0.82);
|
||||
-webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
|
||||
animation: fan-lightbox-fade 0.25s ease;
|
||||
cursor: zoom-out;
|
||||
}
|
||||
.fan-lightbox[hidden] { display: none; }
|
||||
@keyframes fan-lightbox-fade { from { opacity: 0; } to { opacity: 1; } }
|
||||
.fan-lightbox-img {
|
||||
max-width: min(92vw, 900px); max-height: 88vh;
|
||||
display: block; object-fit: contain; cursor: default;
|
||||
border-radius: 14px;
|
||||
background: #e8e8ed;
|
||||
box-shadow: 0 30px 80px rgba(0, 0, 0, 0.45);
|
||||
}
|
||||
.fan-lightbox-close {
|
||||
position: absolute; top: 1.1rem; right: 1.1rem;
|
||||
width: 2.5rem; height: 2.5rem; border-radius: 50%; border: none;
|
||||
display: flex; align-items: center; justify-content: center;
|
||||
background: rgba(255, 255, 255, 0.14); color: #fff; cursor: pointer;
|
||||
transition: background 0.2s ease;
|
||||
}
|
||||
.fan-lightbox-close:hover, .fan-lightbox-close:focus-visible { background: rgba(255, 255, 255, 0.28); }
|
||||
.fan-lightbox-close svg { width: 1.2rem; height: 1.2rem; }
|
||||
|
||||
/* ---------- Accessibility: visible keyboard focus ---------- */
|
||||
a:focus-visible, button:focus-visible {
|
||||
outline: 2px solid var(--apple-blue);
|
||||
@@ -520,52 +549,52 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="photo-fan">
|
||||
<button type="button" class="fan-card" style="--r: -13deg; --fy: 18px; --z: 1; --d: 0; --tape: rgba(0, 113, 227, 0.22); --tape-r: -4deg;" onclick="refreshRandomImage(this.querySelector('img'))" aria-label="{% trans 'Shuffle image' %}">
|
||||
<button type="button" class="fan-card" style="--r: -13deg; --fy: 18px; --z: 1; --d: 0; --tape: rgba(0, 113, 227, 0.22); --tape-r: -4deg;" onclick="openFanLightbox(this.querySelector('img'))" aria-label="{% trans 'View Full Size' %}">
|
||||
<span class="fan-card-frame">
|
||||
<img src="/api/images/random/600/800/?fit=crop&v={{ timestamp }}&box=fan1" data-box="fan1" alt="{% trans 'Random Image' %}" loading="lazy" onerror="handleRandomImageError(this)">
|
||||
<span class="fan-card-hint" aria-hidden="true">
|
||||
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-4.35-4.35M11 19a8 8 0 100-16 8 8 0 000 16zM11 8v6M8 11h6"/>
|
||||
</svg>
|
||||
</span>
|
||||
</span>
|
||||
</button>
|
||||
<button type="button" class="fan-card" style="--r: -6.5deg; --fy: 7px; --z: 2; --d: 1; --tape: rgba(255, 55, 95, 0.20); --tape-r: 3deg;" onclick="refreshRandomImage(this.querySelector('img'))" aria-label="{% trans 'Shuffle image' %}">
|
||||
<button type="button" class="fan-card" style="--r: -6.5deg; --fy: 7px; --z: 2; --d: 1; --tape: rgba(255, 55, 95, 0.20); --tape-r: 3deg;" onclick="openFanLightbox(this.querySelector('img'))" aria-label="{% trans 'View Full Size' %}">
|
||||
<span class="fan-card-frame">
|
||||
<img src="/api/images/random/600/800/?fit=crop&v={{ timestamp }}&box=fan2" data-box="fan2" alt="{% trans 'Random Image' %}" loading="lazy" onerror="handleRandomImageError(this)">
|
||||
<span class="fan-card-hint" aria-hidden="true">
|
||||
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-4.35-4.35M11 19a8 8 0 100-16 8 8 0 000 16zM11 8v6M8 11h6"/>
|
||||
</svg>
|
||||
</span>
|
||||
</span>
|
||||
</button>
|
||||
<button type="button" class="fan-card" style="--r: 0deg; --fy: 0px; --z: 3; --d: 2; --tape: rgba(48, 209, 88, 0.22); --tape-r: -2deg;" onclick="refreshRandomImage(this.querySelector('img'))" aria-label="{% trans 'Shuffle image' %}">
|
||||
<button type="button" class="fan-card" style="--r: 0deg; --fy: 0px; --z: 3; --d: 2; --tape: rgba(48, 209, 88, 0.22); --tape-r: -2deg;" onclick="openFanLightbox(this.querySelector('img'))" aria-label="{% trans 'View Full Size' %}">
|
||||
<span class="fan-card-frame">
|
||||
<img src="/api/images/random/600/800/?fit=crop&v={{ timestamp }}&box=fan3" data-box="fan3" alt="{% trans 'Random Image' %}" loading="lazy" onerror="handleRandomImageError(this)">
|
||||
<span class="fan-card-hint" aria-hidden="true">
|
||||
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-4.35-4.35M11 19a8 8 0 100-16 8 8 0 000 16zM11 8v6M8 11h6"/>
|
||||
</svg>
|
||||
</span>
|
||||
</span>
|
||||
</button>
|
||||
<button type="button" class="fan-card" style="--r: 6.5deg; --fy: 7px; --z: 2; --d: 3; --tape: rgba(255, 159, 10, 0.22); --tape-r: 4deg;" onclick="refreshRandomImage(this.querySelector('img'))" aria-label="{% trans 'Shuffle image' %}">
|
||||
<button type="button" class="fan-card" style="--r: 6.5deg; --fy: 7px; --z: 2; --d: 3; --tape: rgba(255, 159, 10, 0.22); --tape-r: 4deg;" onclick="openFanLightbox(this.querySelector('img'))" aria-label="{% trans 'View Full Size' %}">
|
||||
<span class="fan-card-frame">
|
||||
<img src="/api/images/random/600/800/?fit=crop&v={{ timestamp }}&box=fan4" data-box="fan4" alt="{% trans 'Random Image' %}" loading="lazy" onerror="handleRandomImageError(this)">
|
||||
<span class="fan-card-hint" aria-hidden="true">
|
||||
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-4.35-4.35M11 19a8 8 0 100-16 8 8 0 000 16zM11 8v6M8 11h6"/>
|
||||
</svg>
|
||||
</span>
|
||||
</span>
|
||||
</button>
|
||||
<button type="button" class="fan-card" style="--r: 13deg; --fy: 18px; --z: 1; --d: 4; --tape: rgba(191, 90, 242, 0.22); --tape-r: -3deg;" onclick="refreshRandomImage(this.querySelector('img'))" aria-label="{% trans 'Shuffle image' %}">
|
||||
<button type="button" class="fan-card" style="--r: 13deg; --fy: 18px; --z: 1; --d: 4; --tape: rgba(191, 90, 242, 0.22); --tape-r: -3deg;" onclick="openFanLightbox(this.querySelector('img'))" aria-label="{% trans 'View Full Size' %}">
|
||||
<span class="fan-card-frame">
|
||||
<img src="/api/images/random/600/800/?fit=crop&v={{ timestamp }}&box=fan5" data-box="fan5" alt="{% trans 'Random Image' %}" loading="lazy" onerror="handleRandomImageError(this)">
|
||||
<span class="fan-card-hint" aria-hidden="true">
|
||||
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-4.35-4.35M11 19a8 8 0 100-16 8 8 0 000 16zM11 8v6M8 11h6"/>
|
||||
</svg>
|
||||
</span>
|
||||
</span>
|
||||
@@ -573,6 +602,16 @@
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ============ Fan Lightbox (full-size preview) ============ -->
|
||||
<div id="fan-lightbox" class="fan-lightbox" hidden role="dialog" aria-modal="true" aria-label="{% trans 'Random Image' %}">
|
||||
<button type="button" class="fan-lightbox-close" id="fan-lightbox-close" aria-label="{% trans 'Close' %}">
|
||||
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2.5" aria-hidden="true">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/>
|
||||
</svg>
|
||||
</button>
|
||||
<img id="fan-lightbox-img" class="fan-lightbox-img" src="" alt="{% trans 'Random Image' %}">
|
||||
</div>
|
||||
|
||||
<!-- ============ Link Library ============ -->
|
||||
<section class="apple-card home-section" aria-labelledby="links-heading">
|
||||
<div class="library-header">
|
||||
@@ -776,6 +815,38 @@
|
||||
card.addEventListener('animationend', () => { card.style.animation = 'none'; }, { once: true });
|
||||
});
|
||||
|
||||
/* ---------- Photo fan: lightbox (click a card to view it full-size) ---------- */
|
||||
const fanLightbox = document.getElementById('fan-lightbox');
|
||||
const fanLightboxImg = document.getElementById('fan-lightbox-img');
|
||||
const fanLightboxClose = document.getElementById('fan-lightbox-close');
|
||||
|
||||
window.openFanLightbox = function (img) {
|
||||
if (!img || !fanLightbox || !fanLightboxImg) return;
|
||||
fanLightboxImg.src = img.currentSrc || img.src;
|
||||
fanLightboxImg.alt = img.alt;
|
||||
fanLightbox.hidden = false;
|
||||
document.body.style.overflow = 'hidden';
|
||||
fanLightboxClose.focus();
|
||||
};
|
||||
|
||||
function closeFanLightbox() {
|
||||
if (!fanLightbox) return;
|
||||
fanLightbox.hidden = true;
|
||||
fanLightboxImg.src = '';
|
||||
document.body.style.overflow = '';
|
||||
}
|
||||
|
||||
if (fanLightbox) {
|
||||
fanLightboxClose.addEventListener('click', closeFanLightbox);
|
||||
// Click the dimmed backdrop (not the image itself) to dismiss.
|
||||
fanLightbox.addEventListener('click', function (event) {
|
||||
if (event.target === fanLightbox) closeFanLightbox();
|
||||
});
|
||||
document.addEventListener('keydown', function (event) {
|
||||
if (event.key === 'Escape' && !fanLightbox.hidden) closeFanLightbox();
|
||||
});
|
||||
}
|
||||
|
||||
/* ---------- Scroll-reveal animations (respects reduced motion) ---------- */
|
||||
const revealEls = document.querySelectorAll('.reveal');
|
||||
const reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
|
||||
|
||||
Binary file not shown.
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-07-19 21:30+1000\n"
|
||||
"POT-Creation-Date: 2026-07-19 22:00+1000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -481,6 +481,11 @@ msgid "Slideshow"
|
||||
msgstr ""
|
||||
|
||||
#: links/templates/links/collection_detail.html:254
|
||||
#: links/templates/links/link_list.html:552
|
||||
#: links/templates/links/link_list.html:562
|
||||
#: links/templates/links/link_list.html:572
|
||||
#: links/templates/links/link_list.html:582
|
||||
#: links/templates/links/link_list.html:592
|
||||
msgid "View Full Size"
|
||||
msgstr ""
|
||||
|
||||
@@ -659,7 +664,7 @@ msgid "All Files"
|
||||
msgstr ""
|
||||
|
||||
#: links/templates/links/files/list.html:109
|
||||
#: links/templates/links/link_list.html:623
|
||||
#: links/templates/links/link_list.html:662
|
||||
msgid "Type"
|
||||
msgstr "链接类型"
|
||||
|
||||
@@ -731,7 +736,7 @@ msgstr "导出数据库"
|
||||
|
||||
#: links/templates/links/files/list.html:233
|
||||
#: links/templates/links/files/list.html:343
|
||||
#: links/templates/links/jobs.html:507
|
||||
#: links/templates/links/jobs.html:507 links/templates/links/link_list.html:607
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
@@ -868,7 +873,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: links/templates/links/jobs.html:152
|
||||
#: links/templates/links/link_list.html:1007
|
||||
#: links/templates/links/link_list.html:1078
|
||||
msgid "selected"
|
||||
msgstr "已选择"
|
||||
|
||||
@@ -1025,13 +1030,13 @@ msgstr "链接详情"
|
||||
|
||||
#: links/templates/links/link_confirm_delete.html:17
|
||||
#: links/templates/links/link_detail.html:43
|
||||
#: links/templates/links/link_list.html:613
|
||||
#: links/templates/links/link_list.html:652
|
||||
msgid "Alias"
|
||||
msgstr "别名"
|
||||
|
||||
#: links/templates/links/link_confirm_delete.html:18
|
||||
#: links/templates/links/link_detail.html:60
|
||||
#: links/templates/links/link_list.html:633
|
||||
#: links/templates/links/link_list.html:672
|
||||
msgid "Original URL"
|
||||
msgstr "原始URL"
|
||||
|
||||
@@ -1097,7 +1102,7 @@ msgid "No changes recorded."
|
||||
msgstr ""
|
||||
|
||||
#: links/templates/links/link_detail.html:256
|
||||
#: links/templates/links/link_list.html:643
|
||||
#: links/templates/links/link_list.html:682
|
||||
msgid "Clicks"
|
||||
msgstr "点击次数"
|
||||
|
||||
@@ -1106,7 +1111,7 @@ msgid "Edit Link"
|
||||
msgstr "编辑链接"
|
||||
|
||||
#: links/templates/links/link_form.html:33
|
||||
#: links/templates/links/link_list.html:597
|
||||
#: links/templates/links/link_list.html:636
|
||||
msgid "New Link"
|
||||
msgstr "创建新链接"
|
||||
|
||||
@@ -1139,136 +1144,130 @@ msgstr ""
|
||||
msgid "Alias cannot be changed after creation."
|
||||
msgstr "链接别名中不能带有 - 或者 _ 以及其他任意特殊字符"
|
||||
|
||||
#: links/templates/links/link_list.html:469
|
||||
#: links/templates/links/link_list.html:498
|
||||
#: links/templates/links/mini_apps/image_gallery.html:4 templates/base.html:8
|
||||
#: templates/base.html:61
|
||||
msgid "GoLinks"
|
||||
msgstr "GoLinks"
|
||||
|
||||
#: links/templates/links/link_list.html:475
|
||||
#: links/templates/links/link_list.html:504
|
||||
msgid "Search aliases"
|
||||
msgstr "搜索别名"
|
||||
|
||||
#: links/templates/links/link_list.html:479
|
||||
#: links/templates/links/link_list.html:508
|
||||
msgid "Search aliases..."
|
||||
msgstr "搜索别名..."
|
||||
|
||||
#: links/templates/links/link_list.html:487
|
||||
#: links/templates/links/link_list.html:516
|
||||
msgid "Matching aliases"
|
||||
msgstr "匹配的别名"
|
||||
|
||||
#: links/templates/links/link_list.html:493
|
||||
#: links/templates/links/link_list.html:522
|
||||
#: links/templates/links/tag_detail.html:34
|
||||
msgid "Links"
|
||||
msgstr "链接"
|
||||
|
||||
#: links/templates/links/link_list.html:498
|
||||
#: links/templates/links/link_list.html:527
|
||||
msgid "Total Clicks"
|
||||
msgstr "总点击次数"
|
||||
|
||||
#: links/templates/links/link_list.html:506
|
||||
#: links/templates/links/link_list.html:535
|
||||
msgid "Random Images"
|
||||
msgstr "随机图片"
|
||||
|
||||
#: links/templates/links/link_list.html:512
|
||||
#: links/templates/links/link_list.html:541
|
||||
msgid "Shuffle all"
|
||||
msgstr "换一批"
|
||||
|
||||
#: links/templates/links/link_list.html:515
|
||||
#: links/templates/links/link_list.html:544
|
||||
msgid "Open gallery"
|
||||
msgstr "打开画廊"
|
||||
|
||||
#: links/templates/links/link_list.html:523
|
||||
#: links/templates/links/link_list.html:533
|
||||
#: links/templates/links/link_list.html:543
|
||||
#: links/templates/links/link_list.html:553
|
||||
#: links/templates/links/link_list.html:563
|
||||
msgid "Shuffle image"
|
||||
msgstr "换一张图片"
|
||||
|
||||
#: links/templates/links/link_list.html:525
|
||||
#: links/templates/links/link_list.html:535
|
||||
#: links/templates/links/link_list.html:545
|
||||
#: links/templates/links/link_list.html:555
|
||||
#: links/templates/links/link_list.html:565
|
||||
#: links/templates/links/link_list.html:554
|
||||
#: links/templates/links/link_list.html:564
|
||||
#: links/templates/links/link_list.html:574
|
||||
#: links/templates/links/link_list.html:584
|
||||
#: links/templates/links/link_list.html:594
|
||||
#: links/templates/links/link_list.html:606
|
||||
#: links/templates/links/link_list.html:612
|
||||
msgid "Random Image"
|
||||
msgstr "随机图片"
|
||||
|
||||
#: links/templates/links/link_list.html:580
|
||||
#: links/templates/links/link_list.html:619
|
||||
msgid "Link List"
|
||||
msgstr "链接列表"
|
||||
|
||||
#: links/templates/links/link_list.html:582
|
||||
#: links/templates/links/link_list.html:621
|
||||
#, python-format
|
||||
msgid "%(counter)s link"
|
||||
msgid_plural "%(counter)s links"
|
||||
msgstr[0] ""
|
||||
|
||||
#: links/templates/links/link_list.html:590
|
||||
#: links/templates/links/link_list.html:629
|
||||
msgid "Search links"
|
||||
msgstr "搜索链接"
|
||||
|
||||
#: links/templates/links/link_list.html:591
|
||||
#: links/templates/links/link_list.html:630
|
||||
msgid "Search links..."
|
||||
msgstr "搜索链接..."
|
||||
|
||||
#: links/templates/links/link_list.html:609
|
||||
#: links/templates/links/link_list.html:648
|
||||
msgid "Select all links"
|
||||
msgstr "全选所有链接"
|
||||
|
||||
#: links/templates/links/link_list.html:651
|
||||
#: links/templates/links/link_list.html:690
|
||||
#: links/templates/links/mini_apps/image_gallery.html:432
|
||||
#: templates/pricemon/dashboard.html:187
|
||||
msgid "Actions"
|
||||
msgstr "操作"
|
||||
|
||||
#: links/templates/links/link_list.html:659
|
||||
#: links/templates/links/link_list.html:698
|
||||
msgid "No links available"
|
||||
msgstr "暂无可用链接"
|
||||
|
||||
#: links/templates/links/link_list.html:675
|
||||
#: links/templates/links/link_list.html:987
|
||||
#: links/templates/links/link_list.html:995
|
||||
#: links/templates/links/link_list.html:714
|
||||
#: links/templates/links/link_list.html:1058
|
||||
#: links/templates/links/link_list.html:1066
|
||||
msgid "Load more"
|
||||
msgstr ""
|
||||
|
||||
#: links/templates/links/link_list.html:681
|
||||
#: links/templates/links/link_list.html:720
|
||||
msgid "Delete Selected"
|
||||
msgstr "删除选中项"
|
||||
|
||||
#: links/templates/links/link_list.html:689
|
||||
#: links/templates/links/link_list.html:728
|
||||
msgid "Latest Posts"
|
||||
msgstr "最新文章"
|
||||
|
||||
#: links/templates/links/link_list.html:691
|
||||
#: links/templates/links/link_list.html:730
|
||||
msgid "View all posts"
|
||||
msgstr "查看全部文章"
|
||||
|
||||
#: links/templates/links/link_list.html:720
|
||||
#: links/templates/links/link_list.html:759
|
||||
msgid "No posts available yet"
|
||||
msgstr "暂无文章"
|
||||
|
||||
#: links/templates/links/link_list.html:721
|
||||
#: links/templates/links/link_list.html:760
|
||||
msgid "Create your first post"
|
||||
msgstr "创建你的第一篇文章"
|
||||
|
||||
#: links/templates/links/link_list.html:729
|
||||
#: links/templates/links/link_list.html:768
|
||||
msgid "Pinned Mini Apps"
|
||||
msgstr "置顶小应用"
|
||||
|
||||
#: links/templates/links/link_list.html:750
|
||||
#: links/templates/links/link_list.html:789
|
||||
msgid "No mini apps available"
|
||||
msgstr "暂无可用小应用"
|
||||
|
||||
#: links/templates/links/link_list.html:881
|
||||
#: links/templates/links/link_list.html:952
|
||||
msgid "No results found"
|
||||
msgstr "未找到结果"
|
||||
|
||||
#: links/templates/links/link_list.html:959
|
||||
#: links/templates/links/link_list.html:1030
|
||||
msgid "No matching links found"
|
||||
msgstr "未找到匹配的链接"
|
||||
|
||||
#: links/templates/links/link_list.html:977
|
||||
#: links/templates/links/link_list.html:1048
|
||||
#: links/templates/links/settings.html:199
|
||||
msgid "Loading…"
|
||||
msgstr ""
|
||||
@@ -2288,3 +2287,6 @@ msgstr ""
|
||||
#: templates/pricemon/watcher_form.html:145
|
||||
msgid "Testing…"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Shuffle image"
|
||||
#~ msgstr "换一张图片"
|
||||
|
||||
Reference in New Issue
Block a user