diff --git a/adminfront/src/components/layout/AppLayout.tsx b/adminfront/src/components/layout/AppLayout.tsx index 2c18e121..893eb19f 100644 --- a/adminfront/src/components/layout/AppLayout.tsx +++ b/adminfront/src/components/layout/AppLayout.tsx @@ -492,8 +492,8 @@ function AppLayout() { auth.user?.profile.name?.toString() || auth.user?.profile.preferred_username?.toString(), profileEmail: profile?.email || auth.user?.profile.email?.toString(), - fallbackName: t("ui.dev.profile.unknown_name", "Unknown User"), - fallbackEmail: t("ui.dev.profile.unknown_email", "unknown@example.com"), + fallbackName: t("ui.shell.profile.unknown_name", "Unknown User"), + fallbackEmail: t("ui.shell.profile.unknown_email", "unknown@example.com"), }); const profileRoleKey = mockRoleOverride || profile?.role || "user"; const handleSessionExpiryToggle = () => { @@ -559,7 +559,7 @@ function AppLayout() { className={shellLayoutClasses.logoutButton} > - {t("ui.admin.nav.logout", "Logout")} + {t("ui.shell.nav.logout", "Logout")} ); @@ -620,7 +620,7 @@ function AppLayout() { className="inline-flex items-center gap-3 rounded-full border border-border bg-card px-3 py-2 transition hover:bg-muted/20" aria-haspopup="menu" aria-expanded={isProfileOpen} - aria-label={t("ui.dev.profile.menu_aria", "계정 메뉴 열기")} + aria-label={t("ui.shell.profile.menu_aria", "계정 메뉴 열기")} >
{profileSummary.initial} @@ -642,7 +642,7 @@ function AppLayout() { {isProfileOpen ? (

- {t("ui.dev.profile.menu_title", "Account")} + {t("ui.shell.profile.menu_title", "Account")}

@@ -656,7 +656,7 @@ function AppLayout() {
{t( - `ui.admin.role.${profileRoleKey}`, + `ui.shell.role.${profileRoleKey}`, profileRoleKey.toUpperCase(), )} @@ -667,7 +667,7 @@ function AppLayout() {

- {t("ui.dev.session.auto_extend", "세션 만료 관리")} + {t("ui.shell.session.auto_extend", "세션 만료 관리")}

{isSessionExpiryEnabled ? ( @@ -676,7 +676,7 @@ function AppLayout() { t={t} /> ) : ( - t("ui.dev.session.disabled", "세션 만료 비활성화") + t("ui.shell.session.disabled", "세션 만료 비활성화") )}

@@ -754,7 +754,7 @@ function AppLayout() { className="mt-2 flex w-full items-center gap-2 rounded-lg border border-border px-3 py-2 text-left text-sm text-foreground transition hover:bg-muted/20" > - {t("ui.userfront.nav.profile", "내 정보")} + {t("ui.shell.nav.profile", "내 정보")}
) : null} diff --git a/adminfront/src/locales/en.toml b/adminfront/src/locales/en.toml index 1c12bd43..b3228ecd 100644 --- a/adminfront/src/locales/en.toml +++ b/adminfront/src/locales/en.toml @@ -1521,6 +1521,22 @@ menu_title = "Account" unknown_email = "unknown@example.com" unknown_name = "Unknown User" +[ui.shell.profile] +menu_aria = "Open account menu" +menu_title = "Account" +unknown_email = "unknown@example.com" +unknown_name = "Unknown User" + +[ui.shell.nav] +logout = "Logout" +profile = "My Profile" + +[ui.shell.role] +rp_admin = "Service Administrator (RP Admin)" +super_admin = "System Administrator (Super Admin)" +tenant_admin = "Tenant Administrator (Tenant Admin)" +user = "General User (Tenant Member)" + [ui.dev.clients] new = "Add Connected Application" search_placeholder = "Search by app name or ID..." @@ -1727,6 +1743,15 @@ expired = "Session expired" expiring = "Expiring soon: {{minutes}}m {{seconds}}s left" remaining = "Expires in {{minutes}}m {{seconds}}s" +[ui.shell.session] +auto_extend = "Session expiry" +active = "Session active" +disabled = "Session expiry disabled" +unknown = "Unknown" +expired = "Session expired" +expiring = "Expiring soon: {{minutes}}m {{seconds}}s left" +remaining = "Expires in {{minutes}}m {{seconds}}s" + [ui.userfront] app_title = "Baron SW Portal" diff --git a/adminfront/src/locales/ko.toml b/adminfront/src/locales/ko.toml index 0b2d4aa0..e34691a0 100644 --- a/adminfront/src/locales/ko.toml +++ b/adminfront/src/locales/ko.toml @@ -1524,6 +1524,22 @@ menu_title = "계정" unknown_email = "unknown@example.com" unknown_name = "Unknown User" +[ui.shell.profile] +menu_aria = "계정 메뉴 열기" +menu_title = "계정" +unknown_email = "unknown@example.com" +unknown_name = "Unknown User" + +[ui.shell.nav] +logout = "Logout" +profile = "내 정보" + +[ui.shell.role] +rp_admin = "서비스 관리자 (RP Admin)" +super_admin = "시스템 관리자 (Super Admin)" +tenant_admin = "테넌트 관리자 (Tenant Admin)" +user = "일반 사용자 (Tenant Member)" + [ui.dev.clients] new = "연동 앱 추가" search_placeholder = "연동 앱 이름/ID로 검색..." @@ -1729,6 +1745,15 @@ expired = "세션 만료" expiring = "만료 임박: {{minutes}}분 {{seconds}}초 남음" remaining = "만료 예정: {{minutes}}분 {{seconds}}초 남음" +[ui.shell.session] +auto_extend = "세션 만료 관리" +active = "세션 활성" +disabled = "세션 만료 비활성화" +unknown = "알 수 없음" +expired = "세션 만료" +expiring = "만료 임박: {{minutes}}분 {{seconds}}초 남음" +remaining = "만료 예정: {{minutes}}분 {{seconds}}초 남음" + [ui.userfront] app_title = "Baron SW 포탈" diff --git a/adminfront/src/locales/template.toml b/adminfront/src/locales/template.toml index cf7ae1c5..85b2adbd 100644 --- a/adminfront/src/locales/template.toml +++ b/adminfront/src/locales/template.toml @@ -1495,6 +1495,22 @@ menu_title = "" unknown_email = "" unknown_name = "" +[ui.shell.profile] +menu_aria = "" +menu_title = "" +unknown_email = "" +unknown_name = "" + +[ui.shell.nav] +logout = "" +profile = "" + +[ui.shell.role] +rp_admin = "" +super_admin = "" +tenant_admin = "" +user = "" + [ui.dev.clients] new = "" search_placeholder = "" @@ -1701,6 +1717,15 @@ expired = "" expiring = "" remaining = "" +[ui.shell.session] +auto_extend = "" +active = "" +disabled = "" +unknown = "" +expired = "" +expiring = "" +remaining = "" + [ui.userfront] app_title = "" diff --git a/common/shell/index.ts b/common/shell/index.ts index e394cefc..f7cea93b 100644 --- a/common/shell/index.ts +++ b/common/shell/index.ts @@ -84,15 +84,15 @@ export function buildShellSessionStatus({ let toneClass = "border-emerald-500/30 bg-emerald-500/10 text-emerald-700 dark:text-emerald-300"; - let text = t("ui.dev.session.active", "세션 활성"); + let text = t("ui.shell.session.active", "세션 활성"); if (remainingMs === null) { toneClass = "border-border bg-card text-muted-foreground"; - text = t("ui.dev.session.unknown", "알 수 없음"); + text = t("ui.shell.session.unknown", "알 수 없음"); } else if (remainingMs <= 0) { toneClass = "border-rose-500/30 bg-rose-500/10 text-rose-700 dark:text-rose-300"; - text = t("ui.dev.session.expired", "세션 만료"); + text = t("ui.shell.session.expired", "세션 만료"); } else if ( remainingMinutes !== null && remainingSeconds !== null && @@ -101,7 +101,7 @@ export function buildShellSessionStatus({ toneClass = "border-amber-500/30 bg-amber-500/10 text-amber-700 dark:text-amber-300"; text = t( - "ui.dev.session.expiring", + "ui.shell.session.expiring", "만료 임박: {{minutes}}분 {{seconds}}초 남음", { minutes: remainingMinutes, @@ -110,7 +110,7 @@ export function buildShellSessionStatus({ ); } else { text = t( - "ui.dev.session.remaining", + "ui.shell.session.remaining", "만료 예정: {{minutes}}분 {{seconds}}초 남음", { minutes: remainingMinutes ?? 0, diff --git a/devfront/src/components/layout/AppLayout.tsx b/devfront/src/components/layout/AppLayout.tsx index 34e453b9..aac3fcce 100644 --- a/devfront/src/components/layout/AppLayout.tsx +++ b/devfront/src/components/layout/AppLayout.tsx @@ -336,8 +336,8 @@ function AppLayout() { auth.user?.profile?.preferred_username?.toString() || auth.user?.profile?.nickname?.toString(), profileEmail: profile?.email || auth.user?.profile?.email?.toString(), - fallbackName: t("ui.dev.profile.unknown_name", "Unknown User"), - fallbackEmail: t("ui.dev.profile.unknown_email", "unknown@example.com"), + fallbackName: t("ui.shell.profile.unknown_name", "Unknown User"), + fallbackEmail: t("ui.shell.profile.unknown_email", "unknown@example.com"), }); const currentRole = resolveProfileRole( auth.user?.profile as Record | undefined, @@ -380,7 +380,7 @@ function AppLayout() { className={shellLayoutClasses.logoutButton} > - {t("ui.dev.nav.logout", "Logout")} + {t("ui.shell.nav.logout", "Logout")}
); @@ -433,7 +433,7 @@ function AppLayout() { aria-haspopup="menu" aria-expanded={isProfileMenuOpen} aria-label={t( - "ui.dev.profile.menu_aria", + "ui.shell.profile.menu_aria", "Open account menu", )} > @@ -456,7 +456,7 @@ function AppLayout() { {isProfileMenuOpen ? (

- {t("ui.dev.profile.menu_title", "Account")} + {t("ui.shell.profile.menu_title", "Account")}

@@ -470,7 +470,7 @@ function AppLayout() {
{t( - `ui.admin.role.${displayRoleKey}`, + `ui.shell.role.${displayRoleKey}`, displayRoleKey.toUpperCase(), )} @@ -481,7 +481,7 @@ function AppLayout() {

- {t("ui.dev.session.auto_extend", "Session expiry")} + {t("ui.shell.session.auto_extend", "Session expiry")}

{isSessionExpiryEnabled ? ( @@ -491,7 +491,7 @@ function AppLayout() { /> ) : ( t( - "ui.dev.session.disabled", + "ui.shell.session.disabled", "Session expiry disabled", ) )} @@ -529,7 +529,7 @@ function AppLayout() { }} > - {t("ui.dev.profile.title", "My Profile")} + {t("ui.shell.nav.profile", "My Profile")}

) : null} diff --git a/devfront/src/locales/en.toml b/devfront/src/locales/en.toml index 3deacc90..f7317f0e 100644 --- a/devfront/src/locales/en.toml +++ b/devfront/src/locales/en.toml @@ -1340,6 +1340,22 @@ menu_title = "Account" unknown_email = "unknown@example.com" unknown_name = "Unknown User" +[ui.shell.profile] +menu_aria = "Open account menu" +menu_title = "Account" +unknown_email = "unknown@example.com" +unknown_name = "Unknown User" + +[ui.shell.nav] +logout = "Logout" +profile = "My Profile" + +[ui.shell.role] +rp_admin = "Service Administrator (RP Admin)" +super_admin = "System Administrator (Super Admin)" +tenant_admin = "Tenant Administrator (Tenant Admin)" +user = "General User (Tenant Member)" + [ui.dev.clients] new = "Add Connected Application" search_placeholder = "Search by app name or ID..." @@ -1730,6 +1746,15 @@ expired = "Session expired" expiring = "Expiring soon: {{minutes}}m {{seconds}}s left" remaining = "Expires in {{minutes}}m {{seconds}}s" +[ui.shell.session] +auto_extend = "Session expiry" +active = "Session active" +disabled = "Session expiry disabled" +unknown = "Unknown" +expired = "Session expired" +expiring = "Expiring soon: {{minutes}}m {{seconds}}s left" +remaining = "Expires in {{minutes}}m {{seconds}}s" + [ui.userfront] app_title = "Baron SW Portal" diff --git a/devfront/src/locales/ko.toml b/devfront/src/locales/ko.toml index 18a8b646..3ce007e4 100644 --- a/devfront/src/locales/ko.toml +++ b/devfront/src/locales/ko.toml @@ -1340,6 +1340,22 @@ menu_title = "계정" unknown_email = "unknown@example.com" unknown_name = "Unknown User" +[ui.shell.profile] +menu_aria = "계정 메뉴 열기" +menu_title = "계정" +unknown_email = "unknown@example.com" +unknown_name = "Unknown User" + +[ui.shell.nav] +logout = "Logout" +profile = "내 정보" + +[ui.shell.role] +rp_admin = "서비스 관리자 (RP Admin)" +super_admin = "시스템 관리자 (Super Admin)" +tenant_admin = "테넌트 관리자 (Tenant Admin)" +user = "일반 사용자 (Tenant Member)" + [ui.dev.clients] new = "연동 앱 추가" search_placeholder = "연동 앱 이름/ID로 검색..." @@ -1729,6 +1745,15 @@ expired = "세션 만료" expiring = "만료 임박: {{minutes}}분 {{seconds}}초 남음" remaining = "만료 예정: {{minutes}}분 {{seconds}}초 남음" +[ui.shell.session] +auto_extend = "세션 만료 관리" +active = "세션 활성" +disabled = "세션 만료 비활성화" +unknown = "알 수 없음" +expired = "세션 만료" +expiring = "만료 임박: {{minutes}}분 {{seconds}}초 남음" +remaining = "만료 예정: {{minutes}}분 {{seconds}}초 남음" + [ui.userfront] app_title = "Baron SW 포탈" diff --git a/devfront/src/locales/template.toml b/devfront/src/locales/template.toml index 9a0145d1..d144c050 100644 --- a/devfront/src/locales/template.toml +++ b/devfront/src/locales/template.toml @@ -1396,6 +1396,22 @@ menu_title = "" unknown_email = "" unknown_name = "" +[ui.shell.profile] +menu_aria = "" +menu_title = "" +unknown_email = "" +unknown_name = "" + +[ui.shell.nav] +logout = "" +profile = "" + +[ui.shell.role] +rp_admin = "" +super_admin = "" +tenant_admin = "" +user = "" + [ui.dev.clients] new = "" search_placeholder = "" @@ -1786,6 +1802,15 @@ expired = "" expiring = "" remaining = "" +[ui.shell.session] +auto_extend = "" +active = "" +disabled = "" +unknown = "" +expired = "" +expiring = "" +remaining = "" + [ui.userfront] app_title = ""