fix: lỗi hiển thị ở frontend
This commit is contained in:
@@ -1,24 +1,47 @@
|
||||
const loadScript = (src: string): Promise<void> => {
|
||||
const loadScript = (src: string, fallbackSrc?: string): Promise<void> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (document.querySelector(`script[src="${src}"]`)) {
|
||||
if (
|
||||
document.querySelector(`script[src="${src}"]`) ||
|
||||
(fallbackSrc && document.querySelector(`script[src="${fallbackSrc}"]`))
|
||||
) {
|
||||
resolve();
|
||||
return;
|
||||
}
|
||||
const script = document.createElement('script');
|
||||
script.src = src;
|
||||
script.onload = () => resolve();
|
||||
script.onerror = () => reject(new Error(`Failed to load script ${src}`));
|
||||
script.onerror = () => {
|
||||
if (fallbackSrc) {
|
||||
console.warn(`Failed to load script ${src}. Trying fallback: ${fallbackSrc}`);
|
||||
const fallbackScript = document.createElement('script');
|
||||
fallbackScript.src = fallbackSrc;
|
||||
fallbackScript.onload = () => resolve();
|
||||
fallbackScript.onerror = () => reject(new Error(`Failed to load script ${fallbackSrc}`));
|
||||
document.head.appendChild(fallbackScript);
|
||||
} else {
|
||||
reject(new Error(`Failed to load script ${src}`));
|
||||
}
|
||||
};
|
||||
document.head.appendChild(script);
|
||||
});
|
||||
};
|
||||
|
||||
const loadModerationLibraries = async () => {
|
||||
// Load TensorFlow first
|
||||
await loadScript('https://cdn.jsdelivr.net/npm/@tensorflow/tfjs');
|
||||
// Load models after tfjs is available
|
||||
// Load TensorFlow first with fallback
|
||||
await loadScript(
|
||||
'https://cdn.jsdelivr.net/npm/@tensorflow/tfjs',
|
||||
'https://unpkg.com/@tensorflow/tfjs'
|
||||
);
|
||||
// Load models after tfjs is available, with fallbacks
|
||||
await Promise.all([
|
||||
loadScript('https://cdn.jsdelivr.net/npm/@tensorflow-models/blazeface'),
|
||||
loadScript('https://cdn.jsdelivr.net/npm/nsfwjs@2.4.0/dist/bundle.js')
|
||||
loadScript(
|
||||
'https://cdn.jsdelivr.net/npm/@tensorflow-models/blazeface',
|
||||
'https://unpkg.com/@tensorflow-models/blazeface'
|
||||
),
|
||||
loadScript(
|
||||
'https://cdn.jsdelivr.net/npm/nsfwjs@2.4.0/dist/bundle.js',
|
||||
'https://unpkg.com/nsfwjs@2.4.0/dist/bundle.js'
|
||||
)
|
||||
]);
|
||||
};
|
||||
|
||||
|
||||
@@ -113,7 +113,28 @@ const translations: Record<string, Record<Language, string>> = {
|
||||
viewMap: { vi: 'Bản đồ', en: 'Map', zh: '地图' },
|
||||
viewTimeline: { vi: 'Lịch trình', en: 'Itinerary', zh: '行程表' },
|
||||
sharedJourneyTitle: { vi: 'Hành trình chia sẻ khẩn cấp', en: 'Emergency Shared Journey', zh: '紧急分享行程' },
|
||||
linkExpired: { vi: 'Liên kết không tồn tại hoặc đã bị vô hiệu hóa.', en: 'Link does not exist or has been disabled.', zh: '链接不存在或已被禁用。' }
|
||||
linkExpired: { vi: 'Liên kết không tồn tại hoặc đã bị vô hiệu hóa.', en: 'Link does not exist or has been disabled.', zh: '链接不存在或已被禁用。' },
|
||||
|
||||
// Landing Page Buttons Short
|
||||
shortExplore: { vi: 'Khám phá', en: 'Explore', zh: '探索' },
|
||||
shortCamera: { vi: 'Chụp ảnh', en: 'Camera', zh: '拍照' },
|
||||
reportBusinessBtn: { vi: 'Báo cáo sai phạm', en: 'Report Violation', zh: '举报' },
|
||||
blacklistTitle: { vi: 'Widget Blacklist', en: 'Blacklist Widget', zh: '黑名单' },
|
||||
reportModalTitle: { vi: 'Báo cáo cơ sở không đàng hoàng', en: 'Report Dishonest Business', zh: '举报不良商家' },
|
||||
businessName: { vi: 'Tên cơ sở/người dùng', en: 'Name', zh: '名称' },
|
||||
businessPhone: { vi: 'Số điện thoại', en: 'Phone Number', zh: '电话号码' },
|
||||
businessEmail: { vi: 'Email liên hệ', en: 'Email Address', zh: '电子邮箱' },
|
||||
businessAddress: { vi: 'Địa chỉ', en: 'Address', zh: '地址' },
|
||||
businessType: { vi: 'Loại hình', en: 'Type', zh: '类型' },
|
||||
typeUser: { vi: 'Người dùng', en: 'User', zh: '用户' },
|
||||
typeRestaurant: { vi: 'Nhà hàng', en: 'Restaurant', zh: '餐厅' },
|
||||
typeHotel: { vi: 'Khách sạn', en: 'Hotel', zh: '酒店' },
|
||||
typeHomestay: { vi: 'Homestay', en: 'Homestay', zh: '民俗' },
|
||||
reportReason: { vi: 'Lý do báo cáo', en: 'Reason for report', zh: '举报原因' },
|
||||
submitReport: { vi: 'Gửi báo cáo', en: 'Submit Report', zh: '提交举报' },
|
||||
reportSuccess: { vi: 'Gửi báo cáo thành công. Ban quản trị sẽ kiểm duyệt thông tin.', en: 'Report submitted successfully. The admin will review it.', zh: '提交成功。管理员将审核' },
|
||||
emptyBlacklist: { vi: 'Chưa có cơ sở nào trong danh sách đen.', en: 'No businesses in blacklist yet.', zh: '黑名单中暂无商家。' },
|
||||
tabReports: { vi: 'Blacklist', en: 'Blacklist', zh: '黑名单' }
|
||||
};
|
||||
|
||||
export const useTranslation = () => {
|
||||
|
||||
Reference in New Issue
Block a user