fix(ncm/ui): 文案中文化+事实性错误修正 — 音质档位对齐官方口径(Hi-Res/无损/极高/较高/标准)、设置页topbar/sheet/确认框中文、页脚会员提示改写准确; 播放页页脚「左右滑切歌」改「左缘右滑返回 ・ ⟳ 切横屏」、空态/歌词态/顶栏中文; 歌单/搜索空态与登录页状态全中文。二进制随 246 重链后热更
This commit is contained in:
1 parent
33b4ae703c
commit
94874107b6
5 files changed
+33
-33
No files matched your search
@@ -66,12 +66,12 @@ static void login_draw(void *ctx)
|
||||
meow_ui_fill_rect(ox + x*m, oy + y*m, m, m, qr_fg);
|
||||
} else {
|
||||
meow_ui_text_center(W/2, qy + qc/2 - 10,
|
||||
g_err ? "no network - tap to retry" : "fetching QR key...", 20, th->dim);
|
||||
g_err ? "网络异常,点按重试" : "正在获取二维码...", 20, th->dim);
|
||||
}
|
||||
|
||||
/* 状态文字:成功/等待用红(day red / night red_lit),失败红字提示。 */
|
||||
const char *st = login_status_str(g_st.login_state);
|
||||
if (g_st.login_state == NCM_LOGIN_OK && g_done) st = "success";
|
||||
if (g_st.login_state == NCM_LOGIN_OK && g_done) st = "登录成功";
|
||||
uint32_t scol = (g_st.login_state == NCM_LOGIN_OK) ? pa->red : th->dim;
|
||||
meow_ui_text_center(W/2, 476, st, 20, scol);
|
||||
|
||||
@@ -88,11 +88,11 @@ static void login_repaint(void)
|
||||
const char *login_status_str(int state)
|
||||
{
|
||||
switch (state) {
|
||||
case NCM_LOGIN_PENDING: return "waiting for scan...";
|
||||
case NCM_LOGIN_SCANNED: return "scanned - confirm on phone";
|
||||
case NCM_LOGIN_OK: return "signed in!";
|
||||
case NCM_LOGIN_EXPIRED: return "QR expired - refreshing";
|
||||
default: return "error, tap to retry";
|
||||
case NCM_LOGIN_PENDING: return "等待扫码...";
|
||||
case NCM_LOGIN_SCANNED: return "已扫码,请在手机上确认";
|
||||
case NCM_LOGIN_OK: return "登录成功";
|
||||
case NCM_LOGIN_EXPIRED: return "二维码已过期,正在刷新";
|
||||
default: return "出错了,点按重试";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -190,7 +190,7 @@ static void plr_draw_dyn(void *ctx)
|
||||
const ncm_pal_t *pa = ncm_palette(g_dark);
|
||||
int sc = cur_song();
|
||||
const ncm_song_t *s = (sc >= 0) ? &g_st.songs[sc] : NULL;
|
||||
const char *nm = s ? s->name : "nothing playing";
|
||||
const char *nm = s ? s->name : "暂无播放";
|
||||
const char *ar = s ? s->art_name : "";
|
||||
|
||||
if (g_landscape) {
|
||||
@@ -234,7 +234,7 @@ static void plr_draw_dyn(void *ctx)
|
||||
if (n == 0) {
|
||||
/* 二期:歌词后台加载,状态区分「加载中 / 真的无词」 */
|
||||
meow_ui_text_center(lcx, center_y - 10,
|
||||
lyric_state() == 2 ? "no lyric" : "loading lyric...",
|
||||
lyric_state() == 2 ? "暂无歌词" : "歌词加载中…",
|
||||
20, th->onSurfaceVariant);
|
||||
}
|
||||
else {
|
||||
@@ -257,7 +257,7 @@ static void plr_draw_dyn(void *ctx)
|
||||
/* 页脚提示(用「・」U+30FB 而非 U+00B7「·」:common 字库按 GB2312 解码 A1A4 得 U+30FB,
|
||||
* 不含 U+00B7 → 后者在设备上是豆腐块。REPORT §11 二期。) */
|
||||
char foot[64];
|
||||
snprintf(foot, sizeof foot, "左右滑切歌 ・ 点顶部切横屏");
|
||||
snprintf(foot, sizeof foot, "左缘右滑返回 ・ ⟳ 切横屏");
|
||||
meow_ui_text_center(r_cont.x + r_cont.w / 2, r_cont.y + r_cont.h - APP_FOOTER_H,
|
||||
foot, 20, th->onSurfaceVariant);
|
||||
}
|
||||
@@ -369,7 +369,7 @@ static void plr_page_create(meow_view *v, void *ctx)
|
||||
((player_ctrl *)ctx)->view = v;
|
||||
player_compute_geom();
|
||||
meow_ui_activity_push(ACT_PLAYER); /* owner=ACT_PLAYER */
|
||||
g_tb = ncm_topbar_create("Now Playing", 1, "\xe2\x86\xbb"); /* 返回 + ⟳ 布局 */
|
||||
g_tb = ncm_topbar_create("正在播放", 1, "\xe2\x86\xbb"); /* 返回 + ⟳ 布局 */
|
||||
meow_ui_activity_pop();
|
||||
g_custom_disc = meow_draw_custom_register(10, g_disc_r.x, g_disc_r.y, g_disc_r.w, g_disc_r.h,
|
||||
plr_draw_disc, NULL);
|
||||
|
||||
@@ -155,10 +155,10 @@ static void pl_draw_empty(void *ctx)
|
||||
(void)ctx;
|
||||
if (meow_ui_activity_active() != ACT_PLAYLIST) return;
|
||||
if (g_load_err == 0 && g_st.song_count != 0) return;
|
||||
if (g_plloading) { ncm_draw_empty(r_list, "LOADING", "正在加载曲目..."); return; }
|
||||
if (g_load_err == NCM_ERR_AUTH) ncm_draw_empty(r_list, "SESSION EXPIRED", "请重新登录");
|
||||
else if (g_load_err) ncm_draw_empty(r_list, "LOAD FAILED", "点按重试");
|
||||
else ncm_draw_empty(r_list, "NO TRACKS", "这个歌单是空的");
|
||||
if (g_plloading) { ncm_draw_empty(r_list, "加载中", "正在加载曲目..."); return; }
|
||||
if (g_load_err == NCM_ERR_AUTH) ncm_draw_empty(r_list, "登录已过期", "请重新登录");
|
||||
else if (g_load_err) ncm_draw_empty(r_list, "加载失败", "点按重试");
|
||||
else ncm_draw_empty(r_list, "暂无歌曲", "这个歌单是空的");
|
||||
}
|
||||
|
||||
static void pl_draw_footer(void *ctx)
|
||||
|
||||
@@ -56,11 +56,11 @@ static void sr_draw_empty(void *ctx)
|
||||
(void)ctx;
|
||||
if (meow_ui_activity_active() != ACT_SEARCH) return;
|
||||
if (g_st.search_count != 0 && g_st.search_err == 0) return;
|
||||
if (g_loading) { ncm_draw_empty(r_list, "SEARCHING", "正在搜索..."); return; }
|
||||
if (g_st.search_err == NCM_ERR_AUTH) ncm_draw_empty(r_list, "SESSION EXPIRED", "请重新登录");
|
||||
else if (g_st.search_err) ncm_draw_empty(r_list, "SEARCH FAILED", "点「搜索」重试");
|
||||
else if (!g_query[0]) ncm_draw_empty(r_list, "NO KEYWORD", "输入关键词点「搜索」");
|
||||
else ncm_draw_empty(r_list, "NO RESULTS", "未找到相关歌曲");
|
||||
if (g_loading) { ncm_draw_empty(r_list, "搜索中", "正在搜索..."); return; }
|
||||
if (g_st.search_err == NCM_ERR_AUTH) ncm_draw_empty(r_list, "登录已过期", "请重新登录");
|
||||
else if (g_st.search_err) ncm_draw_empty(r_list, "搜索失败", "点「搜索」重试");
|
||||
else if (!g_query[0]) ncm_draw_empty(r_list, "输入关键词", "输入后点「搜索」");
|
||||
else ncm_draw_empty(r_list, "没有结果", "未找到相关歌曲");
|
||||
}
|
||||
|
||||
static void sr_draw_footer(void *ctx)
|
||||
|
||||
@@ -28,10 +28,10 @@ static const char *level_name(int lv)
|
||||
{
|
||||
switch (lv) {
|
||||
case NCM_LEVEL_HIRES: return "Hi-Res";
|
||||
case NCM_LEVEL_LOSSLESS:return "Lossless";
|
||||
case NCM_LEVEL_EXHIGH: return "Exhigh";
|
||||
case NCM_LEVEL_HIGHER: return "Higher";
|
||||
default: return "Standard";
|
||||
case NCM_LEVEL_LOSSLESS:return "无损";
|
||||
case NCM_LEVEL_EXHIGH: return "极高";
|
||||
case NCM_LEVEL_HIGHER: return "较高";
|
||||
default: return "标准";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -98,8 +98,8 @@ static void settings_draw(void *ctx)
|
||||
|
||||
/* 品牌红页脚小字。 */
|
||||
int ny = y + SETTINGS_ROWS * (g_row_h + 8) + 4;
|
||||
meow_ui_text(x, ny, "解锁完整音质请登录网易云黑胶会员", 20, th->onSurfaceVariant);
|
||||
meow_ui_text(x, ny + 24, "品牌红 © MeowOS · NCM", 20, pa->red);
|
||||
meow_ui_text(x, ny, "Hi-Res/无损需黑胶会员,不支持时自动降级", 20, th->onSurfaceVariant);
|
||||
meow_ui_text(x, ny + 24, "网易云音乐 · MeowOS 移植版", 20, pa->red);
|
||||
}
|
||||
|
||||
static int row_at(int x, int y)
|
||||
@@ -150,10 +150,10 @@ int settings_on_tap(int x, int y)
|
||||
if (row < 0) return 0;
|
||||
|
||||
if (row == 0) { /* 音质:Top 档选择,单曲不可用时 core 逐档降级 */
|
||||
static const char *lbls[5] = { "Hi-Res", "Lossless", "Exhigh", "Higher", "Standard" };
|
||||
static const char *lbls[5] = { "Hi-Res", "无损", "极高", "较高", "标准" };
|
||||
static const int lvls[5] = { NCM_LEVEL_HIRES, NCM_LEVEL_LOSSLESS,
|
||||
NCM_LEVEL_EXHIGH, NCM_LEVEL_HIGHER, NCM_LEVEL_STANDARD };
|
||||
meow_sheet *s = meow_sheet_create("Music Quality", 0);
|
||||
meow_sheet *s = meow_sheet_create("选择音质", 0);
|
||||
for (int i = 0; i < 5; i++) meow_sheet_add_item(s, lbls[i]);
|
||||
int op = meow_sheet_open(s);
|
||||
meow_sheet_free(s);
|
||||
@@ -169,7 +169,7 @@ int settings_on_tap(int x, int y)
|
||||
static const int gbs[] = { 1, 2, 5, 10, 20, 30, 50, 100 };
|
||||
static const char *labels[] = { "1 GB", "2 GB", "5 GB", "10 GB",
|
||||
"20 GB", "30 GB", "50 GB", "100 GB" };
|
||||
meow_sheet *s = meow_sheet_create("Cache Limit", 0);
|
||||
meow_sheet *s = meow_sheet_create("缓存上限", 0);
|
||||
for (int i = 0; i < 8; i++) meow_sheet_add_item(s, labels[i]);
|
||||
meow_sheet_add_item(s, "自定义...");
|
||||
int op = meow_sheet_open(s);
|
||||
@@ -184,7 +184,7 @@ int settings_on_tap(int x, int y)
|
||||
return 1;
|
||||
}
|
||||
if (row == 2) { /* 清理缓存 */
|
||||
meow_dialog *d = meow_dialog_create(MEOW_DLG_CONFIRM, "Clear Cache?");
|
||||
meow_dialog *d = meow_dialog_create(MEOW_DLG_CONFIRM, "清理缓存?");
|
||||
char msg[160];
|
||||
char usetxt[24];
|
||||
fmt_bytes(g_cache_used, usetxt, sizeof usetxt);
|
||||
@@ -203,9 +203,9 @@ int settings_on_tap(int x, int y)
|
||||
return 1;
|
||||
}
|
||||
if (row == 3) { /* 退出登录 */
|
||||
meow_dialog *d = meow_dialog_create(MEOW_DLG_CONFIRM, "Sign out?");
|
||||
meow_dialog *d = meow_dialog_create(MEOW_DLG_CONFIRM, "退出登录?");
|
||||
const char *msgs[1];
|
||||
msgs[0] = "Playback will stop.\nYou'll need to scan a QR code again.";
|
||||
msgs[0] = "将停止播放并清除登录态,\n下次使用需重新扫码。";
|
||||
meow_dialog_set_items(d, msgs, 1, -1);
|
||||
int yes = meow_dialog_confirm(d);
|
||||
meow_dialog_free(d);
|
||||
@@ -246,7 +246,7 @@ static void st_page_create(meow_view *v, void *ctx)
|
||||
((settings_ctrl *)ctx)->view = v;
|
||||
r_cont = ncm_content_rect();
|
||||
meow_ui_activity_push(ACT_SETTINGS); /* owner=ACT_SETTINGS */
|
||||
g_tb = ncm_topbar_create("Settings", 1, NULL);
|
||||
g_tb = ncm_topbar_create("设置", 1, NULL);
|
||||
meow_ui_activity_pop();
|
||||
g_row_h = 60;
|
||||
g_custom_id = meow_draw_custom_register(1, r_cont.x, r_cont.y, r_cont.w, r_cont.h,
|
||||
|
||||
Reference in new issue
Block a user