var LANG = { en: { nav_overview: 'Overview', nav_port_config: 'Port Configuration', nav_port_stat: 'Port Statistics', nav_l2: 'L2 Configuration', nav_mirror: 'Mirroring', nav_lag: 'Link Aggregation', nav_eee: 'EEE', nav_bandwidth: 'Bandwidth Limits', nav_system: 'System Settings', nav_fw_update: 'Firmware Update', port_name: 'Name', port_status: 'Status', port_not_enabled: 'Not enabled.', port_link_speed: 'Link speed', port_vendor: 'Vendor', port_model: 'Model', port_serial: 'Serial', port_temp: 'Temp', port_vcc: 'Vcc', port_tx_fault: 'TX-Fault', port_tx_disabled: 'TX-Disabled', port_tx_bias: 'TX-Bias', port_tx_power: 'TX-Power', port_rx_power: 'RX-Power', port_rx_los: 'RX-LOS', speed_disabled: 'Disabled', speed_down: 'Down', port_title: 'FreeSwitchOS Port Configuration', port_heading: 'Port Configuration', port_col_port: 'Port', port_col_name: 'Name', port_col_speed: 'Current Link Speed', port_col_set_speed: 'Set Speed', port_col_disabled: 'Disabled', port_col_apply: 'Apply', port_mtu_heading: 'Configure Maximum Frame Size (MTU) forwarded at Port', port_auto: 'Auto', port_2500m: '2500MBit/Full', port_1000m: '1000MBit/Full', port_100m_f: '100MBit/Full', port_100m_h: '100MBit/Half', port_10m_f: '10MBit/Full', port_10m_h: '10MBit/Half', port_apply: 'Apply', stat_title: 'FreeSwitchOS Port Statistics', stat_heading: 'Port Statistics', stat_detailed: 'Detailed Port Statistics', stat_close: 'Close', stat_col_port: 'Port', stat_col_name: 'Name', stat_col_link: 'link', stat_col_tx_good: 'TX Good', stat_col_tx_bad: 'TX Bad', stat_col_rx_good: 'RX Good', stat_col_rx_bad: 'RX Bad', stat_col_all: 'All Counters', stat_counter: 'Counter', stat_value: 'Value', stat_show: 'Show', vlan_title: 'FreeSwitchOS VLAN Configuration', vlan_heading: 'VLAN Configuration', vlan_select: 'VLAN Select:', vlan_choose: '— VLAN Choose —', vlan_id: 'VLAN ID:', vlan_get_config: 'Get Configuration', vlan_name: 'VLAN Name:', vlan_tagged: 'Tagged Ports', vlan_untagged: 'Untagged Ports', vlan_select_all: 'Select all', vlan_pvid: 'Use as default VLAN for incoming traffic (PVID)', vlan_update: 'Update / Create', vlan_configured: 'Configured VLANs', vlan_col_name: 'Name', vlan_col_member: 'Member Ports', vlan_col_tagged: 'Tagged Ports', vlan_col_untagged: 'Untagged Ports', vlan_col_pvid: 'PVID Ports', vlan_col_delete: 'Delete', vlan_set_id_first: 'Set VLAN ID first', vlan_delete_confirm: 'Delete VLAN ', lag_title: 'Link Aggregation Configuration', lag_heading: 'Link Aggregation Groups Configuration', lag_update: 'Update / Create', mirror_title: 'Mirror Configuration', mirror_heading: 'Mirror Configuration', mirror_enabled: 'Enabled:', mirror_port: 'Mirroring Port:', mirror_tx: 'Mirrored Ports (TX)', mirror_rx: 'Mirrored Ports (RX)', mirror_update: 'Update / Create', mirror_disable: 'Disable Mirroring', mirror_set_port_first: 'Set Mirroring Port first', mirror_select_ports: 'Select Mirrored Ports', eee_title: 'EEE Configuration', eee_heading: 'EEE Status', eee_advertising: 'Advertising', eee_partner: 'Link-Partner advertises', eee_port: 'Port', eee_active: 'Active?', eee_enable: 'Enable EEE', eee_disable: 'Disable EEE', eee_on: 'ON', eee_off: 'OFF', l2_title: 'FreeSwitchOS L2 Configuration', l2_heading: 'L2 Configuration', l2_col_port: 'Port', l2_col_type: 'Type', l2_col_remove: 'Remove Entry', l2_shown: 'Shown:', l2_delete: 'Delete', l2_static: 'static', l2_learned: 'learned', bw_title: 'Ingress and Egress Bandwidth', bw_heading: 'Ingress and Egress Bandwidth', bw_ingress: 'Ingress', bw_egress: 'Egress', bw_col_port: 'Port', bw_col_limit: 'Limit', bw_col_bandwidth: 'Bandwidth [kBit/s]', bw_col_flow: 'Flow Control', bw_col_apply: 'Apply', bw_unlimited: 'UNLIMITED', sys_title: 'System Settings', sys_tab_system: 'System', sys_tab_advanced: 'Advanced', sys_tab_console: 'Console', sys_heading: 'System Settings', sys_ip: 'IP address:', sys_netmask: 'Netmask:', sys_gateway: 'Gateway:', sys_language: 'Language:', sys_ip_note: 'When updating the above settings, remember to point your browser to the new IP afterwards:', sys_update: 'Update Settings', sys_save_label: 'Save all current settings to Flash:', sys_save: 'Save Settings to Flash', sys_advanced: 'Advanced Settings', sys_startup_config: 'Startup configuration:', sys_startup_warn: 'Be careful when saving the directly edited startup configuration, you can lock yourself out:', sys_clear_config: 'Clear Startup Config', sys_save_startup: 'Save Startup Settings to Flash', sys_reset: 'Reset Switch', sys_console: 'Console Command', sys_enter_cmd: 'Enter command:', sys_send_cmd: 'Send Command', sys_console_warn: 'Be careful when entering console commands, you can lock yourself out!', sys_invalid_ip: 'Invalid ip:', sys_reset_confirm: 'Are you sure you want to reset the switch?', sys_resetting: 'Switch is resetting. Please wait and refresh the page.', login_title: 'RTL Switch Login', login_heading: 'RTL Switch Login', login_wrong: 'Wrong password!', login_password: 'Password', login_login: 'Login', index_title: 'FreeSwitchOS Main Page', index_heading: 'Switch Configuration', index_settings: 'Settings', update_title: 'Firmware update', update_heading: 'Firmware Update', update_instruction: 'Choose a firmware update file to upload:', update_upload: 'Upload File', common_port: 'Port ', common_pkts: ' pkts', }, ja: { nav_overview: '概要', nav_port_config: 'ポート設定', nav_port_stat: 'ポート統計', nav_l2: 'L2 設定', nav_mirror: 'ミラーリング', nav_lag: 'リンクアグリゲーション', nav_eee: 'EEE', nav_bandwidth: '帯域制限', nav_system: 'システム設定', nav_fw_update: 'ファームウェア更新', port_name: '名前', port_status: '状態', port_not_enabled: '無効', port_link_speed: 'リンク速度', port_vendor: 'ベンダー', port_model: 'モデル', port_serial: 'シリアル', port_temp: '温度', port_vcc: '電圧', port_tx_fault: 'TX 障害', port_tx_disabled: 'TX 無効', port_tx_bias: 'TX バイアス', port_tx_power: 'TX 電力', port_rx_power: 'RX 電力', port_rx_los: 'RX 信号ロス', speed_disabled: '無効', speed_down: 'リンクダウン', port_title: 'FreeSwitchOS ポート設定', port_heading: 'ポート設定', port_col_port: 'ポート', port_col_name: '名前', port_col_speed: '現在のリンク速度', port_col_set_speed: '速度設定', port_col_disabled: '無効', port_col_apply: '適用', port_mtu_heading: 'ポートの最大フレームサイズ (MTU) 設定', port_auto: '自動', port_2500m: '2500Mbps/全二重', port_1000m: '1000Mbps/全二重', port_100m_f: '100Mbps/全二重', port_100m_h: '100Mbps/半二重', port_10m_f: '10Mbps/全二重', port_10m_h: '10Mbps/半二重', port_apply: '適用', stat_title: 'FreeSwitchOS ポート統計', stat_heading: 'ポート統計', stat_detailed: '詳細ポート統計', stat_close: '閉じる', stat_col_port: 'ポート', stat_col_name: '名前', stat_col_link: 'リンク', stat_col_tx_good: 'TX 正常', stat_col_tx_bad: 'TX 異常', stat_col_rx_good: 'RX 正常', stat_col_rx_bad: 'RX 異常', stat_col_all: '全カウンタ', stat_counter: 'カウンタ', stat_value: '値', stat_show: '表示', vlan_title: 'FreeSwitchOS VLAN 設定', vlan_heading: 'VLAN 設定', vlan_select: 'VLAN 選択:', vlan_choose: '— VLAN 選択 —', vlan_id: 'VLAN ID:', vlan_get_config: '設定取得', vlan_name: 'VLAN 名:', vlan_tagged: 'タグ付きポート', vlan_untagged: 'タグ無しポート', vlan_select_all: 'すべて選択', vlan_pvid: '受信トラフィックのデフォルト VLAN (PVID)', vlan_update: '更新 / 作成', vlan_configured: '設定済み VLAN', vlan_col_name: '名前', vlan_col_member: 'メンバーポート', vlan_col_tagged: 'タグ付きポート', vlan_col_untagged: 'タグ無しポート', vlan_col_pvid: 'PVID ポート', vlan_col_delete: '削除', vlan_set_id_first: 'VLAN ID を先に設定してください', vlan_delete_confirm: 'VLAN 削除 ', lag_title: 'リンクアグリゲーション設定', lag_heading: 'リンクアグリゲーショングループ設定', lag_update: '更新 / 作成', mirror_title: 'ミラーリング設定', mirror_heading: 'ミラーリング設定', mirror_enabled: '有効:', mirror_port: 'ミラーポート:', mirror_tx: 'ミラー元ポート (TX)', mirror_rx: 'ミラー元ポート (RX)', mirror_update: '更新 / 作成', mirror_disable: 'ミラーリング無効化', mirror_set_port_first: 'ミラーポートを先に設定してください', mirror_select_ports: 'ミラー元ポートを選択してください', eee_title: 'EEE 設定', eee_heading: 'EEE 状態', eee_advertising: 'EEE アドバタイジング', eee_partner: 'リンクパートナー広告', eee_port: 'ポート', eee_active: '有効?', eee_enable: 'EEE 有効化', eee_disable: 'EEE 無効化', eee_on: 'オン', eee_off: 'オフ', l2_title: 'FreeSwitchOS L2 設定', l2_heading: 'L2 設定', l2_col_port: 'ポート', l2_col_type: 'タイプ', l2_col_remove: 'エントリ削除', l2_shown: 'Shown:', l2_delete: '削除', l2_static: '静的', l2_learned: '学習', bw_title: '入力/出力帯域制限', bw_heading: '入力/出力帯域制限', bw_ingress: '入力', bw_egress: '出力', bw_col_port: 'ポート', bw_col_limit: '制限', bw_col_bandwidth: '帯域 [kbps]', bw_col_flow: 'フロー制御', bw_col_apply: '適用', bw_unlimited: '制限無し', sys_title: 'システム設定', sys_tab_system: 'システム', sys_tab_advanced: '詳細設定', sys_tab_console: 'コンソール', sys_heading: 'システム設定', sys_ip: 'IP アドレス:', sys_netmask: 'ネットマスク:', sys_gateway: 'ゲートウェイ:', sys_language: '言語:', sys_ip_note: '上記設定を変更した場合は、ブラウザで新しい IP にアクセスしてください:', sys_update: '設定更新', sys_save_label: '現在の設定をフラッシュに保存:', sys_save: '設定をフラッシュに保存', sys_advanced: '詳細設定', sys_startup_config: '起動設定:', sys_startup_warn: '起動設定を直接編集する際は注意してください。ロックアウトされる可能性があります:', sys_clear_config: '起動設定クリア', sys_save_startup: '起動設定をフラッシュに保存', sys_reset: 'スイッチ再起動', sys_console: 'コンソールコマンド', sys_enter_cmd: 'コマンド入力:', sys_send_cmd: 'コマンド送信', sys_console_warn: 'コンソールコマンドは注意して入力してください。ロックアウトされる可能性があります!', sys_invalid_ip: '無効な IP: ', sys_reset_confirm: 'スイッチを再起動してもよろしいですか?', sys_resetting: 'スイッチを再起動中です。しばらく待ってからページをリロードしてください。', login_title: 'RTL スイッチ ログイン', login_heading: 'RTL スイッチ ログイン', login_wrong: 'パスワードが違います!', login_password: 'パスワード', login_login: 'ログイン', index_title: 'FreeSwitchOS メインページ', index_heading: 'スイッチ設定', index_settings: '設定', update_title: 'ファームウェア更新', update_heading: 'ファームウェア更新', update_instruction: 'アップロードするファームウェアファイルを選択:', update_upload: 'ファイルをアップロード', common_port: 'ポート ', common_pkts: ' pkts', }, zh: { nav_overview: '概览', nav_port_config: '端口配置', nav_port_stat: '端口统计', nav_l2: 'L2 配置', nav_mirror: '端口镜像', nav_lag: '链路聚合', nav_eee: 'EEE', nav_bandwidth: '带宽限制', nav_system: '系统设置', nav_fw_update: '固件升级', port_name: '名称', port_status: '状态', port_not_enabled: '未启用。', port_link_speed: '链路速率', port_vendor: '厂商', port_model: '型号', port_serial: '序列号', port_temp: '温度', port_vcc: '供电电压', port_tx_fault: 'TX 故障', port_tx_disabled: 'TX 禁用', port_tx_bias: 'TX 偏置电流', port_tx_power: 'TX 光功率', port_rx_power: 'RX 光功率', port_rx_los: 'RX 信号丢失', speed_disabled: '禁用', speed_down: '未连接', port_title: 'FreeSwitchOS 端口配置', port_heading: '端口配置', port_col_port: '端口', port_col_name: '名称', port_col_speed: '当前链路速率', port_col_set_speed: '设置速率', port_col_disabled: '禁用', port_col_apply: '应用', port_mtu_heading: '配置端口转发的最大帧大小 (MTU)', port_auto: '自动', port_2500m: '2500Mbps/全双工', port_1000m: '1000Mbps/全双工', port_100m_f: '100Mbps/全双工', port_100m_h: '100Mbps/半双工', port_10m_f: '10Mbps/全双工', port_10m_h: '10Mbps/半双工', port_apply: '应用', stat_title: 'FreeSwitchOS 端口统计', stat_heading: '端口统计', stat_detailed: '详细端口统计', stat_close: '关闭', stat_col_port: '端口', stat_col_name: '名称', stat_col_link: '链路', stat_col_tx_good: 'TX 正常包', stat_col_tx_bad: 'TX 错误包', stat_col_rx_good: 'RX 正常包', stat_col_rx_bad: 'RX 错误包', stat_col_all: '所有计数器', stat_counter: '计数器', stat_value: '值', stat_show: '查看', vlan_title: 'FreeSwitchOS VLAN 配置', vlan_heading: 'VLAN 配置', vlan_select: 'VLAN 选择:', vlan_choose: '-- 请选择 VLAN --', vlan_id: 'VLAN ID:', vlan_get_config: '获取配置', vlan_name: 'VLAN 名称:', vlan_tagged: 'Tagged 端口', vlan_untagged: 'Untagged 端口', vlan_select_all: '全选', vlan_pvid: '作为入方向流量的默认 VLAN (PVID)', vlan_update: '更新 / 创建', vlan_configured: '已配置 VLAN', vlan_col_name: '名称', vlan_col_member: '成员端口', vlan_col_tagged: 'Tagged 端口', vlan_col_untagged: 'Untagged 端口', vlan_col_pvid: 'PVID 端口', vlan_col_delete: '删除', vlan_set_id_first: '请先设置 VLAN ID', vlan_delete_confirm: '删除 VLAN ', lag_title: '链路聚合配置', lag_heading: '链路聚合组配置', lag_update: '更新 / 创建', mirror_title: '端口镜像配置', mirror_heading: '端口镜像配置', mirror_enabled: '启用:', mirror_port: '镜像目的端口:', mirror_tx: '被镜像端口 (TX)', mirror_rx: '被镜像端口 (RX)', mirror_update: '更新 / 创建', mirror_disable: '禁用端口镜像', mirror_set_port_first: '请先设置镜像目的端口', mirror_select_ports: '请选择被镜像端口', eee_title: 'EEE 配置', eee_heading: 'EEE 状态', eee_advertising: '本端通告', eee_partner: '链路伙伴通告', eee_port: '端口', eee_active: '已生效?', eee_enable: '启用 EEE', eee_disable: '禁用 EEE', eee_on: '开', eee_off: '关', l2_title: 'FreeSwitchOS L2 配置', l2_heading: 'L2 配置', l2_col_port: '端口', l2_col_type: '类型', l2_col_remove: '删除条目', l2_shown: 'Shown:', l2_delete: '删除', l2_static: '静态', l2_learned: '动态学习', bw_title: '入方向/出方向带宽限制', bw_heading: '入方向/出方向带宽限制', bw_ingress: '入方向', bw_egress: '出方向', bw_col_port: '端口', bw_col_limit: '限速', bw_col_bandwidth: '带宽 [kbit/s]', bw_col_flow: '流量控制', bw_col_apply: '应用', bw_unlimited: '不限速', sys_title: '系统设置', sys_tab_system: '系统', sys_tab_advanced: '高级', sys_tab_console: '控制台', sys_heading: '系统设置', sys_ip: 'IP 地址:', sys_netmask: '子网掩码:', sys_gateway: '网关:', sys_language: '语言:', sys_ip_note: '更新上述设置后,请使用新的 IP 地址重新访问管理界面:', sys_update: '更新设置', sys_save_label: '将当前全部设置保存到 Flash:', sys_save: '保存设置到 Flash', sys_advanced: '高级设置', sys_startup_config: '启动配置:', sys_startup_warn: '直接编辑启动配置时请谨慎,错误配置可能导致无法访问设备:', sys_clear_config: '清除启动配置', sys_save_startup: '保存启动配置到 Flash', sys_reset: '重启交换机', sys_console: '控制台命令', sys_enter_cmd: '输入命令:', sys_send_cmd: '发送命令', sys_console_warn: '输入控制台命令时请谨慎,错误命令可能导致无法访问设备!', sys_invalid_ip: '无效 IP: ', sys_reset_confirm: '确定要重启交换机吗?', sys_resetting: '交换机正在重启。请稍候并刷新页面。', login_title: 'RTL 交换机登录', login_heading: 'RTL 交换机登录', login_wrong: '密码错误!', login_password: '密码', login_login: '登录', index_title: 'FreeSwitchOS 主页', index_heading: '交换机配置', index_settings: '设置', update_title: '固件升级', update_heading: '固件升级', update_instruction: '请选择要上传的固件文件:', update_upload: '上传文件', common_port: '端口 ', common_pkts: ' 个包', } }; var rtlLang = (function() { var saved = localStorage.getItem('rtl_lang'); if (saved && LANG[saved]) return saved; var browser = (navigator.language || navigator.userLanguage || 'en').substring(0, 2); return LANG[browser] ? browser : 'en'; })(); function t(key) { return LANG[rtlLang][key] || LANG['en'][key] || key; } function setLang(lang) { if (LANG[lang]) { localStorage.setItem('rtl_lang', lang); rtlLang = lang; document.querySelectorAll('[data-i18n]').forEach(function(el) { applyTranslation(el); }); } } function applyTranslation(el) { var key = el.getAttribute('data-i18n'); if (!key) return; if (el.tagName === 'INPUT' && (el.type === 'submit' || el.type === 'button')) { el.value = t(key); } else if (el.tagName === 'OPTION') { el.textContent = t(key); } else if (el.tagName === 'TITLE') { el.textContent = t(key); } else { el.innerHTML = t(key); } } document.addEventListener('DOMContentLoaded', function() { document.querySelectorAll('[data-i18n]').forEach(function(el) { applyTranslation(el); }); });