terry-staging #16

Merged
terry merged 96 commits from terry-staging into main 2026-06-05 16:33:12 +00:00
8 changed files with 52 additions and 41 deletions
Showing only changes of commit 356d8a0207 - Show all commits

View File

@@ -55,7 +55,7 @@ export async function downloadFile(
if (typeof window !== "undefined" && isInAppBrowser()) { if (typeof window !== "undefined" && isInAppBrowser()) {
window.dispatchEvent( window.dispatchEvent(
new CustomEvent<InAppDownloadGuideDetail>(IN_APP_DOWNLOAD_GUIDE_EVENT, { new CustomEvent<InAppDownloadGuideDetail>(IN_APP_DOWNLOAD_GUIDE_EVENT, {
detail: { url, filename: safeFilename }, detail: { url: toAbsoluteUrl(url), filename: safeFilename },
}), }),
); );
return; return;
@@ -90,6 +90,16 @@ export async function downloadFile(
triggerDownload(url, safeFilename); triggerDownload(url, safeFilename);
} }
function toAbsoluteUrl(url: string): string {
if (/^https?:\/\//i.test(url)) return url;
if (typeof window === "undefined") return url;
try {
return new URL(url, window.location.origin).toString();
} catch {
return url;
}
}
function triggerDownload(url: string, filename: string) { function triggerDownload(url: string, filename: string) {
const a = document.createElement("a"); const a = document.createElement("a");
a.href = url; a.href = url;

View File

@@ -266,14 +266,15 @@ export const enDict: Dict = {
backToHome: "Back to Home", backToHome: "Back to Home",
inAppDownloadTitle: "Please open in your system browser to download", inAppDownloadTitle: "Please open in your system browser to download",
inAppDownloadIntro: inAppDownloadIntro:
"Your current in-app browser cannot download files. Open the page in your system browser (Safari, Chrome, etc.) and tap download again.", "Your current in-app browser cannot download files. Copy the link below and open it in your system browser — the file will save directly.",
inAppDownloadIntroNamed: inAppDownloadIntroNamed:
"{browser} cannot download files directly. Open the page in your system browser (Safari, Chrome, etc.) and tap download again.", "{browser} cannot download files directly. Copy the link below and open it in your system browser — the file will save directly.",
inAppDownloadStepCopy: "Tap “Copy link” below.", inAppDownloadStepCopy:
'Tap "Copy link" below — that is the direct file download URL.',
inAppDownloadStepOpen: inAppDownloadStepOpen:
"Open the menu (top-right), choose “Open in browser”, and paste the link if needed.", "Open your system browser (Safari, Chrome, etc.) and paste the link into the address bar.",
inAppDownloadStepDownload: inAppDownloadStepDownload:
"Tap the download button on the page — the file will save to your downloads.", "The file will start downloading to your downloads folder automatically.",
inAppDownloadCopied: "Link copied", inAppDownloadCopied: "Link copied",
inAppDownloadCopyFail: "Could not copy the link, please copy it manually", inAppDownloadCopyFail: "Could not copy the link, please copy it manually",
}; };

View File

@@ -269,14 +269,14 @@ export const idDict: Dict = {
backToHome: "Kembali ke Beranda", backToHome: "Kembali ke Beranda",
inAppDownloadTitle: "Silakan buka di peramban sistem untuk mengunduh", inAppDownloadTitle: "Silakan buka di peramban sistem untuk mengunduh",
inAppDownloadIntro: inAppDownloadIntro:
"Peramban dalam aplikasi saat ini tidak dapat mengunduh berkas. Buka halaman ini di peramban sistem (Safari, Chrome, dll.) lalu ketuk unduh lagi.", "Peramban dalam aplikasi saat ini tidak dapat mengunduh berkas. Salin tautan di bawah dan buka di peramban sistem — berkas akan langsung tersimpan.",
inAppDownloadIntroNamed: inAppDownloadIntroNamed:
"{browser} tidak dapat mengunduh berkas secara langsung. Buka halaman ini di peramban sistem (Safari, Chrome, dll.) lalu ketuk unduh lagi.", "{browser} tidak dapat mengunduh berkas secara langsung. Salin tautan di bawah dan buka di peramban sistem — berkas akan langsung tersimpan.",
inAppDownloadStepCopy: "Ketuk “Salin tautan” di bawah.", inAppDownloadStepCopy:
'Ketuk "Salin tautan" di bawah (ini adalah URL unduhan langsung berkas).',
inAppDownloadStepOpen: inAppDownloadStepOpen:
"Buka menu di kanan atas, pilih “Buka di peramban”, tempelkan tautan jika diperlukan.", "Buka peramban sistem (Safari, Chrome, dll.) dan tempel tautan ke bilah alamat.",
inAppDownloadStepDownload: inAppDownloadStepDownload: "Berkas akan otomatis terunduh ke folder Unduhan.",
"Di peramban sistem, ketuk lagi tombol unduh dan berkas akan tersimpan.",
inAppDownloadCopied: "Tautan disalin", inAppDownloadCopied: "Tautan disalin",
inAppDownloadCopyFail: "Tidak dapat menyalin, silakan salin secara manual", inAppDownloadCopyFail: "Tidak dapat menyalin, silakan salin secara manual",
}; };

View File

@@ -270,14 +270,14 @@ export const jaDict: Dict = {
backToHome: "ホームへ戻る", backToHome: "ホームへ戻る",
inAppDownloadTitle: "システムブラウザで開いてダウンロードしてください", inAppDownloadTitle: "システムブラウザで開いてダウンロードしてください",
inAppDownloadIntro: inAppDownloadIntro:
"現在のアプリ内ブラウザはファイルをダウンロードできません。Safari や Chrome などのシステムブラウザでページを開いてから、もう一度ダウンロードしてください。", "現在のアプリ内ブラウザはファイルをダウンロードできません。下のリンクをコピーし、システムブラウザで開けば自動的にダウンロードされます。",
inAppDownloadIntroNamed: inAppDownloadIntroNamed:
"{browser} のアプリ内ブラウザはファイルを直接ダウンロードできません。Safari や Chrome などのシステムブラウザでページを開いてから、もう一度ダウンロードしてください。", "{browser} のアプリ内ブラウザはファイルをダウンロードできません。下のリンクをコピーし、システムブラウザで開けば自動的にダウンロードされます。",
inAppDownloadStepCopy: "下の「リンクをコピー」をタップします。", inAppDownloadStepCopy:
"下の「リンクをコピー」をタップします(ファイルの直接ダウンロード URL です)。",
inAppDownloadStepOpen: inAppDownloadStepOpen:
"右上のメニューから「ブラウザで開く」を選び、必要に応じてリンクを貼り付けます。", "システムブラウザSafari、Chrome など)を開き、アドレスバーにリンクを貼り付けます。",
inAppDownloadStepDownload: inAppDownloadStepDownload: "ファイルは自動的にダウンロード先に保存されます。",
"システムブラウザで再度ダウンロードボタンをタップすると、ファイルがダウンロード先に保存されます。",
inAppDownloadCopied: "リンクをコピーしました", inAppDownloadCopied: "リンクをコピーしました",
inAppDownloadCopyFail: "コピーに失敗しました。手動でコピーしてください", inAppDownloadCopyFail: "コピーに失敗しました。手動でコピーしてください",
}; };

View File

@@ -265,14 +265,14 @@ export const koDict: Dict = {
backToHome: "홈으로", backToHome: "홈으로",
inAppDownloadTitle: "시스템 브라우저에서 열어 다운로드하세요", inAppDownloadTitle: "시스템 브라우저에서 열어 다운로드하세요",
inAppDownloadIntro: inAppDownloadIntro:
"현재 앱 내 브라우저는 파일을 다운로드할 수 없습니다. Safari나 Chrome 등 시스템 브라우저에서 페이지를 연 다음 다시 다운로드해 주세요.", "현재 앱 내 브라우저는 파일을 다운로드할 수 없습니다. 아래 링크를 복사해서 시스템 브라우저에서 열면 바로 저장됩니다.",
inAppDownloadIntroNamed: inAppDownloadIntroNamed:
"{browser} 앱 내 브라우저는 파일을 직접 다운로드할 수 없습니다. Safari나 Chrome 등 시스템 브라우저에서 페이지를 연 다음 다시 다운로드해 주세요.", "{browser} 앱 내 브라우저는 파일을 다운로드할 수 없습니다. 아래 링크를 복사해서 시스템 브라우저에서 열면 바로 저장됩니다.",
inAppDownloadStepCopy: "아래의 “링크 복사”를 누릅니다.", inAppDownloadStepCopy:
'아래의 "링크 복사"를 누릅니다(파일 직접 다운로드 주소입니다).',
inAppDownloadStepOpen: inAppDownloadStepOpen:
"오른쪽 위 메뉴에서 “브라우저로 열기”를 선택하고 필요하면 링크를 붙여 넣습니다.", "시스템 브라우저(Safari, Chrome 등)를 열고 주소창에 링크를 붙여 넣습니다.",
inAppDownloadStepDownload: inAppDownloadStepDownload: "파일이 자동으로 다운로드 폴더에 저장됩니다.",
"시스템 브라우저에서 다운로드 버튼을 다시 누르면 파일이 저장됩니다.",
inAppDownloadCopied: "링크를 복사했습니다", inAppDownloadCopied: "링크를 복사했습니다",
inAppDownloadCopyFail: "복사하지 못했습니다. 직접 복사해 주세요", inAppDownloadCopyFail: "복사하지 못했습니다. 직접 복사해 주세요",
}; };

View File

@@ -268,14 +268,15 @@ export const msDict: Dict = {
backToHome: "Kembali ke Laman Utama", backToHome: "Kembali ke Laman Utama",
inAppDownloadTitle: "Sila buka dalam pelayar sistem untuk muat turun", inAppDownloadTitle: "Sila buka dalam pelayar sistem untuk muat turun",
inAppDownloadIntro: inAppDownloadIntro:
"Pelayar dalam aplikasi semasa tidak dapat memuat turun fail. Buka halaman ini dalam pelayar sistem (Safari, Chrome, dsb.), kemudian ketik muat turun semula.", "Pelayar dalam aplikasi semasa tidak dapat memuat turun fail. Salin pautan di bawah dan buka dalam pelayar sistem — fail akan disimpan terus.",
inAppDownloadIntroNamed: inAppDownloadIntroNamed:
"{browser} tidak dapat memuat turun fail secara langsung. Buka halaman ini dalam pelayar sistem (Safari, Chrome, dsb.), kemudian ketik muat turun semula.", "{browser} tidak dapat memuat turun fail secara langsung. Salin pautan di bawah dan buka dalam pelayar sistem — fail akan disimpan terus.",
inAppDownloadStepCopy: "Ketik “Salin pautan” di bawah.", inAppDownloadStepCopy:
'Ketik "Salin pautan" di bawah (ini adalah URL muat turun fail terus).',
inAppDownloadStepOpen: inAppDownloadStepOpen:
"Buka menu di atas kanan, pilih “Buka dalam pelayar”, tampal pautan jika perlu.", "Buka pelayar sistem (Safari, Chrome, dsb.) dan tampal pautan ke bar alamat.",
inAppDownloadStepDownload: inAppDownloadStepDownload:
"Dalam pelayar sistem, ketik butang muat turun semula dan fail akan disimpan.", "Fail akan dimuat turun secara automatik ke folder Muat Turun.",
inAppDownloadCopied: "Pautan disalin", inAppDownloadCopied: "Pautan disalin",
inAppDownloadCopyFail: "Tidak dapat menyalin, sila salin secara manual", inAppDownloadCopyFail: "Tidak dapat menyalin, sila salin secara manual",
}; };

View File

@@ -264,14 +264,14 @@ export const viDict: Dict = {
backToHome: "Về trang chủ", backToHome: "Về trang chủ",
inAppDownloadTitle: "Vui lòng mở bằng trình duyệt hệ thống để tải", inAppDownloadTitle: "Vui lòng mở bằng trình duyệt hệ thống để tải",
inAppDownloadIntro: inAppDownloadIntro:
"Trình duyệt trong ứng dụng hiện tại không thể tải tệp. Hãy mở trang trong trình duyệt hệ thống (Safari, Chrome…) rồi nhấn tải lại.", "Trình duyệt trong ứng dụng hiện tại không thể tải tệp. Sao chép liên kết bên dưới và mở trong trình duyệt hệ thống — tệp sẽ tự động tải về.",
inAppDownloadIntroNamed: inAppDownloadIntroNamed:
"{browser} không thể tải tệp trực tiếp. Hãy mở trang trong trình duyệt hệ thống (Safari, Chrome…) rồi nhấn tải lại.", "{browser} không thể tải tệp trực tiếp. Sao chép liên kết bên dưới và mở trong trình duyệt hệ thống — tệp sẽ tự động tải về.",
inAppDownloadStepCopy: "Nhấn “Sao chép liên kết” bên dưới.", inAppDownloadStepCopy:
'Nhấn "Sao chép liên kết" bên dưới (đây là URL tải tệp trực tiếp).',
inAppDownloadStepOpen: inAppDownloadStepOpen:
"Mở menu ở góc trên bên phải, chọn “Mở bằng trình duyệt”, dán liên kết nếu cần.", "Mở trình duyệt hệ thống (Safari, Chrome…) và dán liên kết vào thanh địa chỉ.",
inAppDownloadStepDownload: inAppDownloadStepDownload: "Tệp sẽ tự động tải xuống thư mục Tải về.",
"Trong trình duyệt hệ thống, nhấn lại nút tải để lưu tệp.",
inAppDownloadCopied: "Đã sao chép liên kết", inAppDownloadCopied: "Đã sao chép liên kết",
inAppDownloadCopyFail: "Không sao chép được, vui lòng tự sao chép", inAppDownloadCopyFail: "Không sao chép được, vui lòng tự sao chép",
}; };

View File

@@ -247,14 +247,13 @@ export const zhDict: Dict = {
backToHome: "返回首页", backToHome: "返回首页",
inAppDownloadTitle: "请使用系统浏览器打开后下载", inAppDownloadTitle: "请使用系统浏览器打开后下载",
inAppDownloadIntro: inAppDownloadIntro:
"当前内置浏览器无法直接下载文件请在系统浏览器Safari、Chrome 等)中打开页面后再点击下载。", "当前内置浏览器无法下载文件。复制下方链接,到系统浏览器打开即可直接下载。",
inAppDownloadIntroNamed: inAppDownloadIntroNamed:
"{browser} 内置浏览器无法直接下载文件请在系统浏览器Safari、Chrome 等)中打开页面后再点击下载。", "{browser} 内置浏览器无法下载文件。复制下方链接,到系统浏览器打开即可直接下载。",
inAppDownloadStepCopy: "点击下方「复制链接」。", inAppDownloadStepCopy: "点击下方「复制链接」(这是文件的直接下载地址)。",
inAppDownloadStepOpen: inAppDownloadStepOpen:
"点右上角菜单,选择「在浏览器中打开」,如需要请把刚才复制的链接粘贴地址栏。", "打开系统浏览器Safari、Chrome 等),把链接粘贴地址栏。",
inAppDownloadStepDownload: inAppDownloadStepDownload: "文件会自动开始下载到下载文件夹。",
"在系统浏览器中再次点击下载按钮,文件会保存到下载文件夹。",
inAppDownloadCopied: "链接已复制", inAppDownloadCopied: "链接已复制",
inAppDownloadCopyFail: "复制失败,请手动复制", inAppDownloadCopyFail: "复制失败,请手动复制",
}; };