i18n翻译

This commit is contained in:
hu xiaotong
2025-07-11 17:09:24 +08:00
parent 9293db3809
commit 4ac2072fce
9 changed files with 733 additions and 48 deletions

View File

@@ -37,6 +37,7 @@ type EpicHeroInfoColumns struct {
HeadImgUrl string // 配置编号
Attribute string // 配置编号
Remark string // 配置编号
RawJson string // 原始json
}
// epicHeroInfoColumns holds the columns for the table epic_hero_info.
@@ -57,6 +58,7 @@ var epicHeroInfoColumns = EpicHeroInfoColumns{
HeadImgUrl: "head_img_url",
Attribute: "attribute",
Remark: "remark",
RawJson: "raw_json",
}
// NewEpicHeroInfoDao creates and returns a new DAO object for table data access.

View File

@@ -2,14 +2,18 @@ package cron
import (
"context"
"encoding/json"
"epic/internal/consts"
"epic/internal/dao"
"epic/internal/model/dto"
"epic/utility"
"epic/internal/model/entity"
"epic/internal/util"
"fmt"
"github.com/gogf/gf/v2/encoding/gjson"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/gclient"
"github.com/gogf/gf/v2/os/gtime"
"strconv"
"time"
)
@@ -50,7 +54,7 @@ func (t *ThirdPartyDataSync) SyncHeroData(ctx context.Context) error {
func (t *ThirdPartyDataSync) SyncArtifactData(ctx context.Context) error {
g.Log().Info(ctx, "开始同步神器数据...")
utility.RedisCache.Set(ctx, "artifacts_all11", "asd", 0)
util.RedisCache.Set(ctx, "artifacts_all11", "asd", 0)
// 示例从第三方API获取神器数据
//artifactData, err := t.fetchArtifactDataFromAPI(ctx)
@@ -169,8 +173,6 @@ func (t *ThirdPartyDataSync) processAndSaveArtifactData(ctx context.Context, dat
return fmt.Errorf("解析神器数据到DTO失败: %v", err)
}
g.Log().Info(ctx, "解析到", len(artifacts), "个神器数据")
// 批量处理数据
for _, artifact := range artifacts {
if err := t.saveArtifactData(ctx, artifact); err != nil {
@@ -184,18 +186,71 @@ func (t *ThirdPartyDataSync) processAndSaveArtifactData(ctx context.Context, dat
// saveHeroData 保存单个英雄数据
func (t *ThirdPartyDataSync) saveHeroData(ctx context.Context, hero *dto.ThirdPartyHeroDTO) error {
// TODO: 实现具体的数据库保存逻辑
// 现在 hero 是一个强类型对象,可以直接使用 hero.Code, hero.Name 等
// 示例:记录同步日志
syncLog := map[string]interface{}{
"type": "hero_sync",
"hero_code": hero.Code,
"sync_time": gtime.Now(),
"status": "success",
// 查询是否存在
var dbHero *entity.EpicHeroInfo
err := dao.EpicHeroInfo.Ctx(ctx).
Where(dao.EpicHeroInfo.Columns().HeroCode, hero.Code).
Scan(&dbHero)
if err != nil {
return err
}
g.Log().Debug(ctx, "保存英雄数据:", syncLog)
// 获取原始 JSON 字符串
rawJsonBytes, err := json.Marshal(hero)
if err != nil {
return err
}
rawJson := string(rawJsonBytes)
if dbHero != nil && dbHero.HeroCode != "" {
// 查到记录
if dbHero.RawJson == "" {
// 只更新 rawJson 字段
_, err = dao.EpicHeroInfo.Ctx(ctx).
Where(dao.EpicHeroInfo.Columns().HeroCode, hero.Code).
Data(g.Map{
dao.EpicHeroInfo.Columns().RawJson: rawJson,
// 可选:更新时间
dao.EpicHeroInfo.Columns().UpdateTime: gtime.Now(),
}).
Update()
if err != nil {
return err
}
g.Log().Debug(ctx, "更新英雄rawJson:", hero.Code)
}
// 已有 rawJson不做处理
} else {
status60 := hero.CalculatedStatus["Lv60SixStarFullyAwakened"]
status60json, _ := gjson.EncodeString(status60)
heroJson, _ := gjson.EncodeString(hero)
newHero := &entity.EpicHeroInfo{
Id: 0,
HeroName: "",
HeroCode: hero.Code,
HeroAttrLv60: status60json,
Creator: "",
CreateTime: nil,
Updater: "",
UpdateTime: nil,
Deleted: false,
NickName: "",
Rarity: strconv.Itoa(hero.Rarity),
Role: hero.Role,
Zodiac: "",
HeadImgUrl: "",
Attribute: "",
Remark: "",
RawJson: heroJson,
}
// 没查到,插入新记录,字段按 DO 结构体补全
_, err = dao.EpicHeroInfo.Ctx(ctx).Data(newHero).Insert()
if err != nil {
return err
}
g.Log().Debug(ctx, "插入新英雄:", hero.Code)
}
return nil
}

View File

@@ -7,7 +7,7 @@ import (
"epic/internal/model/dto"
"epic/internal/model/entity"
"epic/internal/service"
"epic/utility"
"epic/internal/util"
"github.com/gogf/gf/v2/encoding/gjson"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/util/gconv"
@@ -46,9 +46,9 @@ func (l *Logic) GetHeroByCode(ctx context.Context, code string) (*entity.EpicHer
// GetHeroList 查询所有英雄信息,并按创建时间倒序排列
func (l *Logic) GetHeroList(ctx context.Context) ([]*v1.EpicHeroVO, error) {
//utility.RedisCache.Set(ctx, "epic_artifact_map_key111", "122", 1000*time.Second)
//utility.RedisCache.Set(ctx, "epic_artifact_map_key222", "6565", 0)
//fmt.Println(utility.RedisCache.Get(ctx, "NAME"))
//util.RedisCache.Set(ctx, "epic_artifact_map_key111", "122", 1000*time.Second)
//util.RedisCache.Set(ctx, "epic_artifact_map_key222", "6565", 0)
//fmt.Println(util.RedisCache.Get(ctx, "NAME"))
var (
doList []*entity.EpicHeroInfo // 数据库原始结构
@@ -117,7 +117,7 @@ func (l *Logic) GetHeroDetailByCode(ctx context.Context, code string) (*v1.HeroD
// 优化:先查 RedisCache再查数据库
cacheKey := "epic_hero_set:" + code
jsonContent, err := utility.RedisCache.Get(ctx, cacheKey)
jsonContent, err := util.RedisCache.Get(ctx, cacheKey)
if err == nil && !jsonContent.IsEmpty() {
fribbleHeroSet = &entity.FribbleHeroSet{
HeroCode: code,
@@ -131,7 +131,7 @@ func (l *Logic) GetHeroDetailByCode(ctx context.Context, code string) (*v1.HeroD
return nil, err
}
// 写入 Redis 缓存1小时
utility.RedisCache.Set(ctx, cacheKey, fribbleHeroSet.JsonContent, 0)
util.RedisCache.Set(ctx, cacheKey, fribbleHeroSet.JsonContent, 0)
}
// 解析 JsonContent 字段

View File

@@ -28,4 +28,5 @@ type EpicHeroInfo struct {
HeadImgUrl interface{} // 配置编号
Attribute interface{} // 配置编号
Remark interface{} // 配置编号
RawJson interface{} // 原始json
}

View File

@@ -10,20 +10,21 @@ import (
// EpicHeroInfo is the golang structure for table epic_hero_info.
type EpicHeroInfo struct {
Id int64 `json:"id" orm:"id" description:"文件编号"` // 文件编号
HeroName string `json:"heroName" orm:"hero_name" description:"配置编号"` // 配置编号
HeroCode string `json:"heroCode" orm:"hero_code" description:"文件名"` // 文件名
HeroAttrLv60 string `json:"heroAttrLv60" orm:"hero_attr_lv60" description:"文件路径"` // 文件路径
Creator string `json:"creator" orm:"creator" description:"创建者"` // 创建者
CreateTime *gtime.Time `json:"createTime" orm:"create_time" description:"创建时间"` // 创建时间
Updater string `json:"updater" orm:"updater" description:"更新者"` // 更新者
UpdateTime *gtime.Time `json:"updateTime" orm:"update_time" description:"更新时间"` // 更新时间
Deleted bool `json:"deleted" orm:"deleted" description:"是否删除"` // 是否删除
NickName string `json:"nickName" orm:"nick_name" description:"配置编号"` // 配置编号
Rarity string `json:"rarity" orm:"rarity" description:"配置编号"` // 配置编号
Role string `json:"role" orm:"role" description:"配置编号"` // 配置编号
Zodiac string `json:"zodiac" orm:"zodiac" description:"配置编号"` // 配置编号
HeadImgUrl string `json:"headImgUrl" orm:"head_img_url" description:"配置编号"` // 配置编号
Attribute string `json:"attribute" orm:"attribute" description:"配置编号"` // 配置编号
Remark string `json:"remark" orm:"remark" description:"配置编号"` // 配置编号
Id int64 `json:"id" orm:"id" description:"文件编号"` // 文件编号
HeroName string `json:"heroName" orm:"hero_name" description:"配置编号"` // 配置编号
HeroCode string `json:"heroCode" orm:"hero_code" description:"文件名"` // 文件名
HeroAttrLv60 string `json:"heroAttrLv60" orm:"hero_attr_lv60" description:"文件路径"` // 文件路径
Creator string `json:"creator" orm:"creator" description:"创建者"` // 创建者
CreateTime *gtime.Time `json:"createTime" orm:"create_time" description:"创建时间"` // 创建时间
Updater string `json:"updater" orm:"updater" description:"更新者"` // 更新者
UpdateTime *gtime.Time `json:"updateTime" orm:"update_time" description:"更新时间"` // 更新时间
Deleted bool `json:"deleted" orm:"deleted" description:"是否删除"` // 是否删除
NickName string `json:"nickName" orm:"nick_name" description:"配置编号"` // 配置编号
Rarity string `json:"rarity" orm:"rarity" description:"配置编号"` // 配置编号
Role string `json:"role" orm:"role" description:"配置编号"` // 配置编号
Zodiac string `json:"zodiac" orm:"zodiac" description:"配置编号"` // 配置编号
HeadImgUrl string `json:"headImgUrl" orm:"head_img_url" description:"配置编号"` // 配置编号
Attribute string `json:"attribute" orm:"attribute" description:"配置编号"` // 配置编号
Remark string `json:"remark" orm:"remark" description:"配置编号"` // 配置编号
RawJson string `json:"rawJson" orm:"raw_json" description:"原始json"` // 原始json
}

0
internal/util/.gitkeep Normal file
View File

28
internal/util/cache.go Normal file
View File

@@ -0,0 +1,28 @@
package util
import (
"context"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gcache"
)
var RedisCache = func() *gcache.Cache {
cache := gcache.New()
cache.SetAdapter(gcache.NewAdapterRedis(g.Redis()))
return cache
}()
// Info 全局Info日志
func Info(ctx context.Context, args ...interface{}) {
g.Log().Info(ctx, args...)
}
// Debug 全局Debug日志
func Debug(ctx context.Context, args ...interface{}) {
g.Log().Debug(ctx, args...)
}
// Error 全局Error日志
func Error(ctx context.Context, args ...interface{}) {
g.Log().Error(ctx, args...)
}

610
internal/util/i18n.go Normal file
View File

@@ -0,0 +1,610 @@
package util
// I18nEnToZh 英文->中文映射表
var I18nEnToZh = map[string]string{
// ... 这里粘贴你的完整映射 ...
"A Little Queen's Huge Crown": "小小女王的巨大王冠",
"A Song for Everybody": "献给你和这个世界的歌曲",
"A Symbol of Unity": "团结的象征",
"Abyssal Crown": "深渊王冠",
"Achates": "雅卡泰丝",
"Adamant Shield": "金刚石盾牌",
"Adin": "艾庭",
"Adlay": "亚迪赖",
"Adventurer Ras": "冒险家拉斯",
"Ainos": "艾诺斯",
"Ains": "艾因兹",
"Air-to-Surface Missile: MISHA": "空地导弹:美莎 ",
"Aither": "埃德勒",
"Alabastron": "雪花石膏瓶",
"Alencia": "艾莲西雅",
"Alencinox's Wrath": "艾莲西诺克斯的逆鳞",
"Alexa": "雅莉莎",
"Alexa's Basket": "雅莉莎的提篮",
"All-Rounder Wanda": "疑难杂症专家汪达",
"Alsacian Spear": "艾尔赛斯之矛",
"Ambitious Tywin": "野心分子泰温",
"Ambrote": "安布罗泰",
"Ancient Dragon's Legacy": "古龙遗产",
"Ancient Sheath": "古代剑鞘",
"Andre's Crossbow": "安德烈斯之弩",
"Angel of Light Angelica": "光之天使安洁莉卡",
"Angelic Montmorancy": "守护天使蒙茉朗西",
"Angelica": "安洁莉卡",
"Anti-Magic Mask": "抗魔面具",
"Apocalypse Ravi": "末日萝菲",
"Aqua Rose": "水玫瑰",
"Aramintha": "雅拉敏塔",
"Arbiter Vildred": "执行官维德瑞",
"Archdemon's Shadow": "魔神的暗影",
"Armin": "亚敏",
"Arowell": "雅洛薇",
"Ascending Axe": "参天斧",
"Assassin Cartuja": "杀手卡尔图哈",
"Assassin Cidd": "杀手席德",
"Assassin Coli": "杀手可丽",
"Atma's Portal": "亚特玛的传送门",
"Aurius": "亚乌利斯",
"Auxiliary Lots": "辅助型拉兹",
"Azalea": "亚洁理亚",
"Azure Comet": "青光彗星",
"Abyssal Yufine": "深渊优芬妮",
"Amiki": "雅蜜琪",
"Baal & Sezan": "巴尔&塞尚",
"Baiken": "梅喧",
"Barthez's Orbuculum": "巴泰斯的水晶球",
"Basar": "巴萨尔",
"Bask": "巴思克",
"Bastion of Hope": "希望的堡垒",
"Bastion of Perlutia": "波鲁迪亚的堡垒",
"Batisse": "巴托斯",
"Belian": "伯里安",
"Bellona": "维尔萝娜",
"Benevolent Romann": "仁慈的洛曼",
"Biting Wind Star": "寒风飞镖",
"Black Hand of the Goddess": "女神的黑手",
"Blaze Dingo": "烈火汀果",
"Blessings of Camaraderie": "友情祝福",
"Blood Blade Karin": "血剑卡琳",
"Blood Moon Haste": "赤月贵族海斯特",
"Blood-Seared Moon": "血染之月",
"Bloodbead Dagger": "血诛短剑",
"Bloodstone": "血玉髓",
"Bloody Rose": "血玫瑰",
"Bloody Warhammer": "血腥战锤",
"Bomb Model Kanna": "爆击型卡农",
"Border Coin": "孤注一掷",
"Briar Witch Iseria": "灰光森林的伊赛丽亚",
"Broken Will of the Priest": "残破的祭司长意志",
"Butcher Corps Inquisitor": "屠杀部队员",
"Butterfly Mandolin": "蝴蝶的曼陀林",
"Blooming Lidica": "花园丽迪卡",
"Byblis": "维波里丝",
"Beguiling Wings": "迷惑羽翼",
"Camilla": "卡蜜拉",
"Captain Rikoris": "先锋队长里科黎司",
"Card of Small Miracles": "小小奇迹贺年卡",
"Carmainerose": "卡麦萝兹",
"Carrot": "卡萝",
"Cartuja": "卡尔图哈",
"Cecilia": "赛西莉亚",
"Celeste": "赛雷斯特",
"Celestial Mercedes": "外太空的玫勒赛德丝",
"Celestial Spear": "天空之矛",
"Celestine": "天青石",
"Celine": "瑟琳",
"Cerise": "赛瑞丝",
"Cermia": "洁若米亚",
"Challenger Dominiel": "挑战者多米妮尔",
"Champion Zerato": "终结者杰拉图",
"Champion's Trophy": "优胜者奖杯",
"Chaos Inquisitor": "混沌教屠杀追击者",
"Chaos Sect Axe": "混沌教巨斧大将军",
"Charles": "查尔斯",
"Charlotte": "夏绿蒂",
"Chatty": "柴迪",
"Chloe": "克萝爱",
"Choux": "小泡芙",
"Christy": "克莉丝媞",
"Church of Ilryos Axe": "伊利欧斯教斧兵",
"Cidd": "席德",
"Circus Fantasia": "奇幻马戏团",
"Clarissa": "克莱莉莎",
"Closer Charles": "末日指挥官查尔斯",
"Coli": "可丽",
"Command Model Laika": "指挥型莱伊卡",
"Commander Lorina": "指挥官萝里娜",
"Conqueror Lilias": "支配者莉莉亚斯",
"Corvus": "科尔布思",
"Cradle of Life": "生命摇篮",
"Creation & Destruction": "创造之福&破坏之颂",
"Crescent Moon Rin": "新月舞姬铃儿",
"Crimson Armin": "红焰亚敏",
"Crimson Moon of Nightmares": "红色噩梦之月",
"Crimson Seed": "红焰种子",
"Crown of Glory": "荣耀之冠",
"Crozet": "克罗泽",
"Cruel Mischief": "残酷的玩笑",
"Cursed Compass": "诅咒的罗盘",
"Claudia": "克劳蒂亚",
"Dark Corvus": "黑暗的科尔布思",
"Daydream Joker": "白日梦小丑",
"Days of Destiny": "命中注定的相遇",
"Deadly Sword": "必杀大剑",
"Demon's Pistol": "恶魔手枪",
"Desert Jewel Basar": "沙漠宝石巴萨尔",
"Designer Lilibet": "设计师莉莉贝",
"Destina": "戴丝蒂娜",
"Devil's Brand": "恶魔烙印",
"Diene": "迪埃妮",
"Dignus Orb": "尊严宝珠",
"Dingo": "汀果",
"Dizzy": "蒂姬",
"Doctor's Bag": "急救包",
"Doll Maker Pearlhorizon": "制偶师波萝莱珍",
"Dominiel": "多米妮尔",
"Doris": "朵莉思",
"Double-Edged Decrescent": "双刃下弦月",
"Draco Plate": "龙族板甲",
"Dream Scroll": "梦之卷轴",
"Durandal": "杜兰月",
"Dust Devil": "尘埃恶魔",
"Dux Noctis": "暗夜指挥者",
"Dragon King Sharun": "龙王莎伦",
"Eaton": "伊顿",
"Eda": "艾妲",
"Egg of Delusion": "迷惑之蛋",
"El's Fist": "艾尔之拳",
"Elbris Ritual Sword": "埃布利斯的宝剑",
"Elena": "艾蕾娜",
"Elf's Bow": "妖精之弓",
"Elphelt": "爱尔菲特",
"Elson": "艾尔森",
"Elyha's Knife": "埃里哈刀",
"Emilia": "爱蜜莉雅",
"Enhanced Gauntlet": "强化拳套",
"Enott": "艾诺特",
"Envoy's Pipe": "死神烟斗",
"Ervalen": "艾尔巴伦",
"Eternus": "埃特诺斯",
"Etica's Scepter": "艾帝嘉权杖",
"Exorcist's Tonfa": "斗鬼的拐棍",
"Elvira": "艾碧拉",
"Eternal Wanderer Ludwig": "永劫漂流者鲁特比",
"Ezra": "艾自拉",
"Fairy Tale for a Nightmare": "噩梦童话",
"Fairy's Grimoire": "妖精的魔法书",
"Fairytale Tenebria": "童话泰妮布里雅",
"Faithless Lidica": "无神论者丽迪卡",
"Falconer Kluri": "鹰猎人可露莉",
"Fallen Cecilia": "堕落的赛西莉亚",
"Fighter Maya": "战斗型玛雅",
"Firm Shield": "坚定之盾",
"Flan": "芙兰",
"Flawless Garments": "天衣无缝",
"Flower Shower": "洒花",
"Forest Totem": "绿林图腾",
"Free Spirit Tieria": "永恒不变的黛莉亚",
"Furious": "尤贝乌斯",
"Fumyr": "芙米尔",
"General Purrgis": "大将法济斯",
"Glenn": "格伦",
"Gloomyrain": "格鲁美兰",
"Goblin's Lamp": "鬼怪明灯",
"Godmother": "教母",
"Golden Cocoa Cookie": "黄金可可豆饼干",
"Grail of Blood": "鲜血圣杯",
"Great Chief Khawana": "大族长卡瓦娜",
"Guardian Ice Crystals": "守护的冰封碎片",
"Guide to a Decision": "选择的指标",
"Guider Aither": "求道者埃德勒",
"Guiding Light": "引导之光",
"Gunther": "坤特",
"Haste": "海斯特",
"Hataan": "哈坦",
"Hazel": "海兹",
"Helen": "海伦",
"Helga": "赫尔嘉",
"Hell Cutter": "地狱切割机",
"Hilag Lance": "锡拉革骑士长矛",
"Holiday Yufine": "度假风优芬妮",
"Holy Sacrifice": "神圣牺牲",
"Hurado": "修拉杜",
"Ian": "伊安",
"Idol's Cheer": "歌姬助阵",
"Iela Violin": "依埃萝小提琴",
"Ilynav": "伊莉娜芙",
"Inferno Khawazu": "烈焰的卡瓦朱",
"Infinity Basket": "无限提篮",
"Iron Fan": "铁扇",
"Iseria": "伊赛丽亚",
"Jecht": "杰克托",
"Jena": "捷娜",
"Judge Kise": "审判者绮世",
"Judith": "茱迪丝",
"Junkyard Dog": "Junkyard Dog",
"Justice for All": "为众人的正义",
"Kal'adra": "嘉拉特拉",
"Karin": "卡琳",
"Kawerik": "卡威利",
"Kayron": "凯隆",
"Ken": "肯恩",
"Khawana": "卡瓦娜",
"Khawazu": "卡瓦朱",
"Kikirat v2": "奇奇拉特V.2",
"Kiris": "奇丽丝",
"Kise": "绮世",
"Kitty Clarissa": "猫咪克莱莉莎",
"Kizuna AI": "绊爱",
"Kluri": "可露莉",
"Knowledge Seed": "知识种子",
"Krau": "克劳乌",
"Kane": "该隐",
"Labyrinth Cube": "迷宫的方块",
"Landy": "兰蒂",
"Last Rider Krau": "最后的骑士克劳乌",
"Last Teatime": "最后的下午茶",
"Lena": "雷娜",
"Leo": "雷欧",
"Lidica": "丽迪卡",
"Lilias": "莉莉亚斯",
"Lilibet": "莉莉贝",
"Little Queen Charlotte": "年轻的女王夏绿蒂",
"Lorina": "萝里娜",
"Lots": "拉兹",
"Love Potion": "爱情灵丹",
"Lucy": "露西",
"Ludwig": "鲁特比",
"Luluca": "璐璐卡",
"Luna": "露娜",
"Leah": "蕾娅",
"Magaraha's Tome": "玛姬拉哈的魔法古书",
"Magic Scholar Doris": "魔法学者朵莉思",
"Maid Chloe": "仆人克萝爱",
"Manica of Control": "控制的护臂",
"Manifu": "玛尼普",
"Martial Artist Ken": "武斗家肯恩",
"Mascot Hazel": "吉祥物海兹",
"Maya": "玛雅",
"Mediator Kawerik": "协调者卡威利",
"Melany": "玫拉妮",
"Melissa": "梅丽莎",
"Mercedes": "玫勒赛德丝",
"Mercenary Helga": "自由自在的佣兵赫尔嘉",
"Merciless Glutton": "无情的大食客",
"Midnight Bloom": "月夜之花",
"Mighty Scout": "侦查兵玛伊堤",
"Mighty Yaksha": "金刚夜叉",
"Milim": "蜜莉姆",
"Mirsa": "米勒莎",
"Mistychain": "美丝缇彩",
"Montmorancy": "蒙茉朗西",
"Moonlight Dreamblade": "皎月梦夜",
"Moonlight's Vestige": "月光之痕",
"Mort": "魔勒",
"Ms. Confille": "Miss Confile",
"Mucacha": "穆卡察",
"Mui": "缪伊",
"Muse Rima": "缪斯黎玛",
"Necro & Undine": "恶魔&天使",
"Nemunas": "尼姆拉斯",
"New Year Cookies": "蕴含幸福的岁末饼干",
"Noble Oath": "高洁的誓言",
"Oath Key": "誓约钥匙",
"Official Levulin Beach Volleyball": "里柏林沙滩排球指定用球",
"One Year of Gratitude": "心存感谢的一年",
"Operator Sigret": "操作员赛珂兰特",
"Otherworldly Machinery": "异界的机械",
"Otillie": "奥缇莉尔",
"Old Gardening Shears": "老旧园艺剪刀",
"Pavel": "帕贝尔",
"Pearlhorizon": "波萝莱珍",
"Penelope": "潘尼罗佩",
"Politis": "佛里蒂丝",
"Portrait of the Saviors": "救援者们的画像",
"Proof of Valor": "勇猛证据",
"Prophetic Candlestick": "预视的烛台",
"Pure White Trust": "纯白的信赖",
"Purrgis": "法济斯",
"Pyllis": "费莉丝",
"Radiant Forever": "灿烂的永恒",
"Rainbow Scale": "人鱼公主的鳞片",
"Ram": "拉姆",
"Ran": "岚",
"Ranon's Memorandum": "拉农的备忘录",
"Ras": "拉斯",
"Ravi": "萝菲",
"Ray": "雷伊",
"Reingar's Special Drink": "雷茵格尔特调饮料",
"Rem": "雷姆",
"Remnant Violet": "残影的菲奥雷托",
"Requiemroar": "雷奎姆洛",
"Researcher Carrot": "研究者卡萝",
"Resolute Soldier Series": "坚毅的战士",
"Rhianna & Luciella": "里安娜&路西艾拉",
"Righteous Thief Roozid": "义贼鲁兹德",
"Rikoris": "里科黎司",
"Rima": "黎玛",
"Rimuru": "利姆路",
"Rin": "铃儿",
"Rise of a Monarch": "王的诞生",
"Roaming Warrior Leo": "流浪勇士雷欧",
"Roana": "罗安纳",
"Rod of Amaryllis": "孤挺花之杖",
"Romann": "洛曼",
"Roozid": "鲁兹德",
"Rosa Hargana": "罗沙哈勒戈纳",
"Rose": "萝季",
"Ruby Essence": "红玉精髓",
"Ruele of Light": "光之瑞儿",
"Sage Baal & Sezan": "贤者巴尔&塞尚",
"Samsara Prayer Beads": "循环念珠",
"Santa Muerte": "死亡圣神",
"Sashe Ithanes": "香袋伊妲涅斯",
"Schuri": "修里",
"Seaside Bellona": "海边的维尔萝娜",
"Secret Art - Storm Sword": "秘笈:雷天一剑",
"Senya": "赛娜",
"Sepulcrum": "塞弗克鲁姆",
"Serila": "塞丽拉",
"Severed Horn Wand": "被截断的犄角手杖",
"Sez": "赛兹",
"Shadow Knight Pyllis": "黑骑士费莉丝",
"Shadow Rose": "暗影萝季",
"Shepherd of the Hollow": "无为的引导者",
"Shepherds of Chaos": "混沌的引导者们",
"Shimadra Staff": "席玛德拉的手杖",
"Shooting Star Achates": "流星雅卡泰丝",
"Shuna": "朱菜",
"Sigret": "赛珂兰特",
"Sigurd Scythe": "席格勒赛斯",
"Silk": "席可",
"Silver Blade Aramintha": "白银刀刃的雅拉敏塔",
"Silver Rain": "银光骤雨",
"Sinful Angelica": "罪戾的安洁莉卡",
"Sira-Ren": "席拉-莲",
"Snow Crystal": "白雪水晶",
"Sol": "索尔",
"Solitaria of the Snow": "雪国的苏莉塔妮亚",
"Song of Stars": "星辰之歌",
"Sonia": "苏尼娅",
"Spear of a New Dawn": "开辟之枪",
"Specimen Sez": "实验体赛兹",
"Specter Tenebria": "幻影的泰妮布里雅",
"Spirit Eye Celine": "灵眼的瑟琳",
"Spirit's Breath": "精灵气息",
"Spooky Solayu Stories": "奇闻轶事录",
"Staff of Wisdom": "智慧的手杖",
"Star of the Deep Sea": "深海漂浮之星",
"Star Piercer": "破星者",
"Steadfast Gatekeeper": "坚定的看守者",
"Stella Harpa": "星之竖琴",
"Strak Gauntlet": "史特雷克拳套",
"Straze": "史瑞杰思",
"Succubus Mirror": "魅魔之镜",
"Summertime Iseria": "南国的伊赛丽亚",
"Super Duper Water Gun Shooter": "至尊水枪",
"Surin": "苏琳",
"Sven": "史宾",
"Sword of Ezera": "伊杰拉的圣剑",
"Sword of Holy Light": "圣光之剑",
"Sword of Judgment": "审判之剑",
"Sword of Summer Twilight": "夏夜闪刀",
"Sword of the Morning": "黎明剑",
"Sword of the Sun": "太阳之剑",
"Sword of Winter Shadow": "冬晷切刀",
"Silvertide Christy": "银波克莉丝媞",
"Seductive Flower": "诱惑之花",
"Tagehel's Ancient Book": "塔克赫尔古书",
"Tamarinne": "塔玛林尔",
"Taranor Guard": "塔拉诺尔禁卫队员",
"Taranor Royal Guard": "塔拉诺尔王宫士兵",
"Tear of the Desert": "沙漠之泪",
"Tempest Surin": "风云苏琳",
"Tenebria": "泰妮布里雅",
"The Guardian Star's Blessing": "守护星的祝福",
"Tieria": "黛莉亚",
"Time Matter": "时间的物质",
"Timeless Anchor": "永劫之锚",
"To a New World": "致崭新的时代",
"Top Model Luluca": "最强模特儿璐璐卡",
"Torn Sleeve": "撕裂的右衣袖",
"Touch of Rekos": "列科斯的救援",
"Troublemaker Crozet": "不法之徒克罗泽",
"Twilight Calamity": "落日之灾",
"Tywin": "泰温",
"Tyrant's Descent": "暴君的血统",
"Uberius's Tooth": "尤贝里乌斯的臼齿",
"Unfading Memories": "不凋零的回忆",
"Unseen Observer": "隐形的观察者",
"Upgraded Dragon Knuckles": "改良型龙指虎",
"Umbral Keystones": "暗影源石",
"Venus Orb": "金星宝珠",
"Victorious Flag": "胜战旗帜",
"Vildred": "维德瑞",
"Violet Talisman": "紫色护身符",
"Violet": "菲奥雷托",
"Vivian": "薇薇安",
"Wall of Order": "秩序护墙",
"Wanda": "汪达",
"Wanderer Silk": "流浪者席可",
"War Horn": "进攻号角",
"Watcher Schuri": "注视者修里",
"Water's Origin": "波涛的祈愿",
"Wild Angara": "野生安卡拉",
"Wind Rider": "乘风者",
"Wings of Light and Shadow": "明暗双翼",
"Wondrous Potion Vial": "灵药的试管",
"XIII. Death": "XIII. Death",
"XIV. Temperance": "XIV. Temperance",
"XVI. The Tower": "XVI. The Tower",
"XVIII. The Moon": "XVIII. The Moon",
"Yufine": "优芬妮",
"Yuna": "尤娜",
"Zahhak": "札哈克",
"Zealot Carmainerose": "传道者卡麦萝兹",
"Zeno": "杰诺",
"Zerato": "杰拉图",
"An Offer You Can't Refuse": "无法拒绝的提议",
"Benimaru's Tachi": "红丸之刀",
"Blazing Full Moon Trophy": "燃烧的满月奖杯",
"Brilliant Confidence": "闪耀的自信",
"Cutie Pando": "小可爱胖嘟",
"Fan of Light and Dark": "昏明之扇",
"Fullmetals Automail": "钢铁机械铠",
"Glo-Wings 21": "光辉羽翼21",
"Goblet of Oath": "誓言之杯",
"Golden Rose": "金玫瑰",
"Ignition Cloth Gloves": "发火布手套",
"Indestructible Gaiters": "金刚绑腿",
"Jack-O's Symbol": "洁克·欧的象征",
"Magic for Friends": "为了朋友的魔法",
"Mature Sunglasses": "成熟的墨镜",
"Nostalgic Music Box": "悲恋音乐盒",
"Prayer of Solitude": "孤独祈祷",
"Prelude to a New Era": "新时代的序幕",
"Records of Unity": "团结的记录",
"Sacred Tree Branch": "神木树枝",
"Scroll of Shadows": "暗影之书",
"Seal of Capture": "束缚之印",
"Sharpshooters Handgun": "神枪手的手枪",
"Sole Consolation": "唯一的慰藉",
"Spatiotemporal Fan": "时空折扇",
"Spear of Purification": "破邪之矛",
"Sphere of Inferno": "焚灭之球",
"Sphere of Sadism": "嗜虐之球",
"Sword of Autumn Eclipse": "秋端染刀",
"Sword of Cycling Seasons": "循环之剑",
"Aria": "艾莉雅",
"Abigail": "雅碧凯",
"Ainos 2.0": "艾诺斯 2.0",
"Amid": "雅咪德",
"Architect Laika": "策划者莱伊卡",
"Arunka": "亚露嘉",
"Astromancer Elena": "星辰的神谕艾蕾娜",
"Bad Cat Armin": "坏猫猫亚敏",
"Beehoo": "雨修",
"Benimaru": "红丸",
"Brieg": "布里克",
"Commander Pavel": "司令官帕贝尔",
"Death Dealer Ray": "死亡探究者雷伊",
"Edward Elric": "爱德华·艾力克",
"Eligos": "艾利戈斯",
"Hasol": "夏率",
"Holy Flame Adin": "圣炎的艾庭",
"Hwayoung": "和英",
"Infinite Horizon Achates": "未知可能性雅卡泰丝",
"Jack-O": "洁克·欧",
"Januta": "扎怒塔",
"Juni": "珠妮",
"Last Piece Karin": "最后的碎片卡琳",
"Lethe": "丽希",
"Lilka": "莉珈",
"Lionheart Cermia": "狮心王洁若米亚",
"Lone Crescent Bellona": "一轮孤月维尔萝娜",
"Lua": "路雅",
"Moon Bunny Dominiel": "月兔多米尼尔",
"Muwi": "武蔚",
"Navy Captain Landy": "海军上校兰蒂",
"Ocean Breeze Luluca": "海洋香气璐璐卡",
"Orte": "奥乐缇",
"Peacemaker Furious": "平衡的尤贝乌斯",
"Peira": "沛伊拉",
"Pirate Captain Flan": "海盗船长芙兰",
"Requiem Roana": "镇魂萝安纳",
"Riza Hawkeye": "莉莎·霍克爱",
"Roy Mustang": "罗伊·马斯坦古",
"Savior Adin": "救援者艾庭",
"Serene Purity Adin": "清玄的艾庭",
"Sharun": "莎伦",
"Shepherd Jena": "引导者捷娜",
"Summer Break Charlotte": "暑假夏绿蒂",
"Summer's Disciple Alexa": "夏日学生雅莉莎",
"Suthan": "斯坦",
"Sylvan Sage Vivian": "森之贤者薇薇安",
"Taeyou": "太悟",
"Talaz": "达拉士",
"Talia": "达黎儿",
"Twisted Eidolon Kayron": "扭曲亡灵凯隆",
"Unbound Knight Arowell": "自由骑士雅洛薇",
"Verdant Adin": "新绿的艾庭",
"Veronica": "贝洛妮卡",
"Vigilante Leader Glenn": "自卫队队长格伦",
"Yoonryoung": "尹凌",
"Yulha": "律荷",
"Zio": "智武",
"Midnight Gala Lilias": "夜宴莉莉亚斯",
"Urban Shadow Choux": "都市暗影小泡芙",
"Hostess of the Banquet": "宴会之主",
"Nahkwol": "落月",
"ae-GISELLE": "ae-GISELLE",
"ae-KARINA": "ae-KARINA",
"ae-NINGNING": "ae-NINGNING",
"ae-WINTER": "ae-WINTER",
"Laia": "莱雅",
"Elegiac Candles": "慰灵烛光",
"_comment_1": "角色神器结束",
"scales": "天秤座",
"lion": "狮子座",
"waterbearer": "水瓶座",
"archer": "射手座",
"crab": "巨蟹座",
"twins": "双子座",
"bull": "金牛座",
"fish": "双鱼座",
"maiden": "处女座",
"goat": "摩羯座",
"scorpion": "天蝎座",
"ram": "白羊座",
"knight": "骑士",
"warrior": "战士",
"assassin": "潜行者",
"mage": "魔导士",
"ranger": "射手",
"manauser": "精灵师",
"fire": "火",
"wind": "木",
"ice": "水",
"dark": "暗",
"light": "光",
"cp": "战斗力",
"atk": "战斗力",
"hp": "战斗力",
"spd": "战斗力",
"def": "战斗力",
"chc": "战斗力",
"chd": "战斗力",
"dac": "战斗力",
"eff": "战斗力",
"efr": "",
// ... 其余映射请粘贴完整 ...
}
// I18nZhToEn 中文->英文映射表(自动生成)
var I18nZhToEn = func() map[string]string {
m := make(map[string]string, len(I18nEnToZh))
for k, v := range I18nEnToZh {
m[v] = k
}
return m
}()
// En2Zh 英文转中文
func En2Zh(s string) string {
if v, ok := I18nEnToZh[s]; ok {
return v
}
return s
}
// Zh2En 中文转英文
func Zh2En(s string) string {
if v, ok := I18nZhToEn[s]; ok {
return v
}
return s
}