前往
大廳
主題

瑪奇貿易走私翻譯腳本

小毛毛蟲 | 2024-01-21 21:11:04 | 巴幣 1000 | 人氣 187

退坑了七八年最近才回鍋,很多貿易小工具都壞了,韓文每次都要找對照翻譯也很麻煩,所以就整理成以下腳本了,腳本只是將文字做替換而已,很安全,可以自己看 code。

主要針對韓國fantazm做了地區和物品的翻譯以及時間調整,時間調整僅供參考我也不保證一定對XD

注意的是杜卡特是售價而且不會和台灣一樣所以可以忽略

主要功能
- 加上轉換台灣時區並且校時
- 翻譯物品名稱及加上地點
- 翻譯地區名稱



腳本可自行安裝 TamperMonkey 之類的載入使用
// ==UserScript==
// @name         瑪奇走私繁體中文翻譯
// @description  翻譯走私預報
// @version      0.0.3
// @author       小毛毛蟲@愛麗莎
// @grant        GM_addStyle
// @license      MIT
// @match        https://lute.fantazm.net/*
// ==/UserScript==


/* global $ */
GM_addStyle('.tw-time { color: red; }'); // 添加 CSS

(function() {
    'use strict';

    // 設定對應韓文到中文的字典
    const translationMap = {
        '현실시간': '現實時間',
        '위치': '位置',
        '밀수품': '走私品',
        '두카트': '杜卡特(售價)',
        '베이비 포션':'嬰孩藥水(堤爾克那)',
        '다이어트 포션':'減肥藥水(堤爾克那)',
        '코골이 방지 포션':'預防打鼾藥水(堤爾克那)',
        '산삼 포션':'人蔘藥水(堤爾克那)',
        '러블리 포션':'限-討喜藥水(堤爾克那)',
        '거미줄 장갑':'蜘蛛絲手套(杜巴頓)',
        '양털 부츠':'羊毛靴子(杜巴頓)',
        '오거 도살자 가면':'食人魔屠夫面具(杜巴頓)',
        '인큐버스 정장':'惡翅魅魔正裝(杜巴頓)',
        '서큐버스 수영복':'限-魅魔泳衣(杜巴頓)',
        '반호르산 석탄':'班克爾煤炭(班克爾)',
        '대리석':'大理石(班克爾)',
        '황수정':'黃水晶(班克爾)',
        '하이랜더 광석':'高地礦石(班克爾)',
        '납':'限-鉛(班克爾)',
        '베리 그래놀라':'莓燕麥片(艾明馬夏)',
        '버터 맥주':'奶油啤酒(艾明馬夏)',
        '훈제 야생동물 구이':'燻烤野生動物(艾明馬夏)',
        '트뤼플 파스타':'松露義大利麵(艾明馬夏)',
        '통곰 바비큐':'限-烤全熊(艾明馬夏)',
        '열기의 결정':'熱氣的結晶(塔爾汀)',
        '오르골 보존석':'留聲石(塔爾汀)',
        '팔라라 결정':'帕拉魯結晶(塔爾汀)',
        '원형방호벽 결정':'防護壁圓形結晶(塔爾汀)',
        '연금 결정':'限-鍊金結晶(塔爾汀)',
        '미니 화장대':'迷你梳妝台(塔拉)',
        '티 테이블':'茶几(塔拉)',
        '흔들 의자':'搖椅(塔拉)',
        '어린이 2층 침대':'小朋友兩層樓床(塔拉)',
        '대형 와인랙':'限-大型葡萄酒架(塔拉)',
        '카브산 김':'卡普海苔(卡普)',
        '카브산 굴':'卡普牡蠣()',
        '상어 지느러미':'鯊魚魚鰭(卡普)',
        '젤리 해파리':'海蜇皮(卡普)',
        '네이드 비늘':'限-那伊德鱗片(卡普)',
        '쇠채찍':'鐵鞭子(貝爾法斯特)',
        '다크 소드':'闇之劍(貝爾法斯特)',
        '금고':'金庫(貝爾法斯特)',
        '스켈레톤 오거 갑옷':'骷髏食人魔盔甲(貝爾法斯特)',
        '모조 모르간트 헬멧':'限-摩根特頭盔仿製品(貝爾法斯特)',
        '민트초코 파우더':'薄荷巧克力粉(克拉)',
        '싱싱한 석류':'新鮮的石榴(克拉)',
        '마나터널 미니어처':'魔法之門模型(克拉)',
        '탐험용 구조 키트':'探險用救援工具(克拉)',
        '카이피 선인장 에센스':'限-卡比仙人掌精華(克拉)',
        '유리 조약돌':'玻璃鵝卵石(比路里亞)',
        '계피 향수':'桂皮香水(比路里亞)',
        '건조 사프란':'乾燥番紅花(比路里亞)',
        '론가 천연 암염':'侖格天然岩鹽(比路里亞)',
        '필리아 식 육포':'限-比路里亞肉乾(比路里亞)',
        '쿠르클레 유적 기념품':'庫爾勒克遺跡紀念品(科爾)',
        '의식용 대형 가면':'儀式用大型面具(科爾)',
        '라테르 라즈베리':'拉圖勒樹梅(科爾)',
        '유물 복원 도구 세트':'遺物修復工具組(科爾)',
        '쿠르클레 천연 고무':'限-庫爾勒克天然橡膠(科爾)',
        '발레스 패디드 코트':'巴雷斯合成棉外套(巴雷斯)',
        '천연 빙하 생수':'天然冰川泉水(巴雷斯)',
        '스케이트 슈즈':'溜冰鞋(巴雷斯)',
        '스노우 보드':'滑雪板(巴雷斯)',
        '발레스 보드카':'限-巴雷斯伏特加(巴雷斯)',
        '두갈드 아일 벌목캠프 동쪽':' 杜加德走廊伐木場東邊',
        '두갈드 아일 벌목캠프 남동쪽':' 杜加德走廊伐木場東南',
        '두갈드 아일 남동쪽':' 杜加德走廊東南邊',
        '가이레흐 언덕 라인알트 동쪽':'亞斯特東邊',
        '가이레흐 언덕 라인알트 남동쪽':'亞斯特東南',
        '가이레흐 언덕 피오드던전':'菲歐納地下城',
        '센 마이 평원 페카던전':'貝卡地下城',
        '센 마이 평원 북서쪽':'山平爾平原西北',
        '센 마이 평원 북쪽':'山平爾平原北邊',
        '센 마이 평원 남동쪽':'山平爾平原東南',
        '센 마이 평원 남쪽':'山平爾平原南邊',
        '슬리아브 퀼린 서쪽':'索利亞庫林西邊',
        '슬리아브 퀼린 암석지대 동쪽':'索利亞庫林岩石地帶東邊',
        '슬리아브 퀼린 암석지대':'索利亞庫林岩石地帶',
        '슬리아브 퀼린 암석지대 서쪽':'索利亞庫林岩石地帶西邊',
        '탈틴 스톤헨지 서쪽':' 塔爾汀巨石陣西邊',
        '탈틴 묘지':'塔爾汀墓地',
        '탈틴 남쪽':'塔爾汀南邊',
        '탈틴 남서쪽':'塔爾汀西南邊',
        '아브 네아 네아호수 서쪽':' 亞布內亞尼爾湖西邊',
        '아브 네아 네아호수 남서쪽':' 亞布內亞尼爾湖西南',
        '아브 네아 네아호수 북서쪽':' 亞布內亞尼爾湖西北',
        '아브 네아 네아호수 남동쪽':' 亞布內亞尼爾湖東南',
        '코리브 계곡 북쪽':' 克里布山谷北邊',
        '코리브 계곡 남쪽':' 克里布山谷南邊',
        '블라고 평원 북서쪽':' 布拉格平原西北',
        '블라고 평원 레자르 양조장':' 布拉格平原傑哈酒莊',
        '블라고 평원 북쪽':' 布拉格平原北邊',
        '블라고 평원 동쪽':' 布拉格平原東邊',


        // 更多轉換...
    };


    // 函數用於校正時間
    function adjustTime(timeStr) {
        const timeParts = timeStr.split(':');
        if (timeParts.length === 3) {
            let hours = parseInt(timeParts[0], 10);
            let minutes = parseInt(timeParts[1], 10);
            let seconds = parseInt(timeParts[2], 10);

            // 加上時差1小時又5分鐘
            minutes += 5;
            if (minutes >= 60) {
                minutes -= 60;
                hours += 1;
            }
            hours += 1;

            // 處理超過24小時的情況
            if (hours >= 24) {
                hours -= 24;
            }

            // 轉回兩位數格式
            const hoursStr = hours.toString().padStart(2, '0');
            const minutesStr = minutes.toString().padStart(2, '0');
            const secondsStr = seconds.toString().padStart(2, '0');

            return `${hoursStr}:${minutesStr}:${secondsStr}`;
        }
        return '';
    }

    // 遍歷表格中特定的 td 元素並添加校正後的時間
    function addAdjustedTime() {
        $('#smug_content td[data-th="일 시"]').each(function() {
            const originalTime = $(this).text();
            const adjustedTime = adjustTime(originalTime);
            if (adjustedTime) {
                const timeHtml = `${originalTime} <br/><span class="tw-time">【 TW: ${adjustedTime} 】</span>`;
                $(this).html(timeHtml);
            }
        });
    }

   // 函數用於轉換文本
    function translateText(text) {
        return translationMap[text.trim()] || text; // 去除空格後進行翻譯
    }

    // 遍歷表格中的所有 th 和 td 元素並轉換內容
    function translateTable() {
        $('#smug_content th, #smug_content td').each(function() {
            $(this).contents().each(function() {
                if (this.nodeType === Node.TEXT_NODE) {
                    this.nodeValue = translateText(this.nodeValue);
                }
            });
        });
    }

    // 創建一個新的 MutationObserver 監聽器來監聽 DOM 變化
    const observer = new MutationObserver(function(mutations) {
        mutations.forEach(function(mutation) {
            if (mutation.addedNodes && mutation.addedNodes.length > 0) {
                // 每次 DOM 更新時,重新翻譯表格並添加校正時間
                translateTable();
                addAdjustedTime();
            }
        });
    });


    // 配置和啟動 MutationObserver
    const config = { childList: true, subtree: true };
    observer.observe(document.body, config);

})();


創作回應

小毛毛蟲
時間好像比之前多誤差了十幾秒,不過影響不大 ~~ 可能跟伺服器重開之後時間都會有點偏移
2024-02-29 13:40:46
小毛毛蟲
我忘了一個機制就是自己注意看愛爾琳 22:00 就可以忽略誤差的問題了 XD
2024-03-07 13:01:02

更多創作