use ratatui::style::{Modifier, Style};
use ratatui::text::{Line, Span};
use crate::palette;
use crate::tui::app::App;
pub const LANGUAGE_OPTIONS: &[(char, &str, &str, &str)] = &[
('1', "auto", "Auto-detect", "(LC_ALL / LANG)"),
('2', "en", "English", ""),
('3', "ja", "日本語", "(Japanese)"),
('4', "zh-Hans", "简体中文", "(Simplified Chinese)"),
('5', "pt-BR", "Português (Brasil)", "(Brazilian Portuguese)"),
];
pub fn lines(app: &App) -> Vec<Line<'static>> {
let current_owned = app.current_locale_tag();
let current = current_owned.as_str();
let mut out: Vec<Line<'static>> = vec![
Line::from(Span::styled(
"Choose your language",
Style::default()
.fg(palette::DEEPSEEK_SKY)
.add_modifier(Modifier::BOLD),
)),
Line::from(""),
Line::from(Span::styled(
"Pick the UI language. You can change it any time with `/settings set locale <tag>`.",
Style::default().fg(palette::TEXT_MUTED),
)),
Line::from(""),
];
for (hotkey, tag, native, english) in LANGUAGE_OPTIONS {
let is_current = current == *tag;
let bullet = if is_current { "●" } else { "○" };
let bullet_color = if is_current {
palette::DEEPSEEK_BLUE
} else {
palette::TEXT_MUTED
};
let mut spans: Vec<Span<'static>> = vec![
Span::styled(format!(" {bullet} "), Style::default().fg(bullet_color)),
Span::styled(
format!("[{hotkey}] "),
Style::default()
.fg(palette::TEXT_PRIMARY)
.add_modifier(Modifier::BOLD),
),
Span::styled(
native.to_string(),
Style::default().fg(palette::TEXT_PRIMARY),
),
];
if !english.is_empty() {
spans.push(Span::styled(
format!(" {english}"),
Style::default().fg(palette::TEXT_MUTED),
));
}
out.push(Line::from(spans));
}
out.push(Line::from(""));
out.push(Line::from(vec![
Span::styled("Press ", Style::default().fg(palette::TEXT_MUTED)),
Span::styled(
"1-5",
Style::default()
.fg(palette::TEXT_PRIMARY)
.add_modifier(Modifier::BOLD),
),
Span::styled(" to choose, or ", Style::default().fg(palette::TEXT_MUTED)),
Span::styled(
"Enter",
Style::default()
.fg(palette::TEXT_PRIMARY)
.add_modifier(Modifier::BOLD),
),
Span::styled(
" to keep the current setting",
Style::default().fg(palette::TEXT_MUTED),
),
]));
out
}