// 中文翻译
window.LANG_ZH = {
  // 通用
  common: {
    save: "设 置",
    cancel: "取消",
    confirm: "确定",
    loading: "加载中...",
    success: "成功",
    failed: "失败",
    delete: "删除",
    edit: "编辑",
    add: "添加",
    enable: "启用",
    disable: "禁用",
    enabled: "启用",
    disabled: "禁用",
    yes: "是",
    no: "否",
    on: "开",
    off: "关",
    apply: "应用",
    reset: "重置",
    refresh: "刷新",
    close: "关闭",
    back: "返回",
    next: "下一步",
    previous: "上一步",
    submit: "提交",
    action: "操作",
    chinese: "中文",
    traditionalChinese: "繁體中文",
    english: "English",
    spanish: "西班牙语",
    japanese: "日本語",
    korean: "한국어",
    german: "Deutsch",
    french: "Français",
    portuguese: "Português",
    russian: "Русский",
    italian: "Italiano",
    turkish: "Türkçe",
    continue: "继 续",
    copy: "复制",
    copied: "已复制"
  },

  preview: {
    flvRequired: "请开启FLV流。",
    flvOrHlsRequired: "请至少开启FLV或者HLS一种直播流。",
    hlsUnsupportedEnableFlv: "当前浏览器不支持HLS预览，请开启FLV流。"
  },

  play: {
    mainFlvRequired: "需要启用主码流 FLV 流",
    browserFlvUnsupported: "当前浏览器不支持 FLV 播放，请使用 Chrome / Edge / Firefox 等现代浏览器"
  },

  // 页面标题
  title: {
    encoder: "H265/H264编码器",
    status: "状态显示",
    mainStream: "主码流",
    subStream1: "次码流1",
    subStream2: "次码流2",
    subStream3: "次码流3",
    videoSettings: "视频设置",
    audioSettings: "音频设置",
    advancedSettings: "高级设置",
    osdMain: "OSD设置 - 主码流",
    osdSub1: "OSD设置 - 次码流1",
    osdSub2: "OSD设置 - 次码流2",
    osdSub3: "OSD设置 - 次码流3",
    logoUpload: "LOGO上传",
    network: "网络设置",
    record: "录像设置",
    gb28181: "GB28181",
    wifi: "WIFI设置",
    password: "密码设置",
    serial: "透传设置",
    update: "更新和备份",
    reboot: "重启设备",
    timedReboot: "定时重启",
    factoryReset: "恢复出厂设置",
    recordFiles: "录像文件",
    netTest: "网络测试",
    recordSet: "录像设置",
    alirtcTokenPage: "AliRTC Token"
  },

  // 菜单
  menu: {
    status: "状态显示",
    encoder: "编码设置",
    mainStream: "主码流",
    subStream1: "次码流1",
    subStream2: "次码流2",
    subStream3: "次码流3",
    videoSettings: "视频设置",
    audioSettings: "音频设置",
    advancedSettings: "高级设置",
    osd: "OSD设置",
    logoUpload: "LOGO上传",
    system: "系统设置",
    scheduleRecord: "计划录像",
    network: "网络设置",
    record: "录像设置",
    gb28181: "GB28181",
    wifi: "WIFI设置",
    password: "密码设置",
    serial: "透传设置",
    update: "更新和备份",
    reboot: "重启设备",
    timedReboot: "定时重启",
    factoryReset: "恢复出厂设置"
  },

  // 状态页面
  status: {
    // 设备状态
    deviceStatus: "设备状态",
    runningTime: "运行时间：",
    runtimeDayWithTime: "{0}天 {1}",
    deviceTime: "设备时间：",
    syncTime: "（同步时间到设备）",
    cpuUsage: "CPU占用率：",
    memoryUsage: "内存占用率：",
    codecUsage: "编码资源占用率：",
    encPpsUsage: "编码资源占用率：",
    memoryWarning: "（开机一分钟后，如果内存占用太大，请关闭一些HLS流或调低比特率）",
    cpuWarning: "（如果CPU持续占用85%以上，请关闭一些流或者调低次码流分辨率）",
    networkStatus: "网络状态：",
    inputVideo: "输入视频：",
    inputBeyondCapability: "（超出设备能力，请将信号源设为1080p）",
    inputVideoStatus: "输入视频状态：",
    vgaAutoAdjust: "（VGA自动调节）",
    capturedFrames: "已采集的视频帧数：",
    lostFrames: "丢失的视频帧数：",
    audioSampleRate: "输入音频采样率：",
    inputAudioStatus: "输入音频状态：",
    capturedAudioFrames: "已采集的音频帧数：",
    bFrameMode: "高级压缩模式：",
    bFrameModeEnabled: "启用",
    packetsSent: "已发送的网络包：",
    netTestLink: "（网络测试及系统日志）",
    packetsDropped: "已丢弃的网络包：",
    canAccessInternet: "可访问外网",
    canAccessInternetIP: "可访问外网IP",
    lanOnly: "局域网",
    localNetwork: "本地网络",

    // 录像状态
    recordStatus: "录像状态",
    recordType: "录像类型：",
    diskStatus: "磁盘状态：",
    diskNotExist: "不存在",
    mountStatus: "挂载状态：",
    notMounted: "未挂载",
    mounted: "已挂载",
    totalSpace: "总磁盘空间：",
    freeSpace: "可用磁盘空间：",
    recordingStatus: "录像状态：",
    diskFull: "磁盘满",
    diskSlow: "磁盘速度太慢",
    recordFileList: "录像文件列表",
    notRecording: "未录像",
    recording: "正在录像",
    recordingNoVideo: "（没有视频输入的情况下可能不会保存文件）",
    startRecord: "（开始录像）",
    stopRecord: "（停止录像）",
    usbTfCard: "U盘/TF卡",

    // DHCP状态
    dhcpStatus: "DHCP状态",
    ip: "IP：",
    subnetMask: "子网掩码：",
    gateway: "网关：",

    // WIFI状态
    wifiStatus: "WIFI状态",
    wifiDisabled: "WIFI：禁用",
    wifiState: "WIFI 状态：",
    wifiSSID: "WIFI SSID：",
    wifiIP: "WIFI IP：",
    wifiMAC: "WIFI MAC：",
    wifiRSSI: "WIFI 强度(RSSI)：",
    wifiFreq: "WIFI 频率：",
    wifiConnected: "已连接",
    wifiDisconnected: "已断开",
    wifiConnecting: "正在连接（如果长时间连接不上，请检查WIFI设置）",

    noSigPicOnly: "仅传输无信号图片：",

    timeHour: "小时",
    timeMinute: "分",
    timeSecond: "秒",

    // 码流
    mainStream: "主码流",
    subStream1: "次码流1",
    subStream2: "次码流2",
    subStream3: "次码流3",
    streamDisabled: "已禁用（编码资源已占满：主码流与各次码流的分辨率×帧率之和超出上限 1080p@90，本路次码流已自动关闭。请降低主码流或前序次码流的分辨率/帧率后重试）",
    codecType: "编码类型：",
    encodeResolution: "编码分辨率：",
    videoBitrate: "视频比特率：",
    realTimeBitrate: "实时比特率：",
    realTimeFps: "实时帧率：",
    videoEncoded: "视频已编码：",
    reconnect: "（重连）",
	    previewWebRTC: "预览视频（WebRTC）",
	    previewHTML5: "预览视频（HTML5）",
	    previewLowLatency: "预览视频（低延迟）",

    // URL相关
    disabled: "禁用",
    connected: "已连接",
    disconnected: "未连接",
    statusNormal: "正常",
    statusNoData: "无数据",
    bufferPackets: "缓冲包数",
    bufferPacketsLabel: "缓冲包数：",
    pushSpeed: "推送速度",
    pushSpeedLabel: "推送速度：",
    pushed: "已推送",
    pushedLabel: "已推送：",
    memoryUsed: "内存占用",
    memoryUsedLabel: "内存占用：",
    cacheFiles: "缓存文件数",
    cacheFilesLabel: "缓存文件数：",
    multicastUrl: "组播 URL：",
    mjpgUrl: "MJPG流地址：",
    jpgUrl: "JPG流地址：",
    tsUrl: "TS流地址：",
    flvUrl: "FLV流地址：",
    hlsTsUrl: "HLS TS流地址：",
    hlsMp4Url: "HLS MP4流地址：",
    mp4Url: "MP4流地址：",
    rtspUrl: "RTSP流地址：",
    rtmpUrl: "RTMP流地址：",
    srtListenerUrl: "SRT Listener 地址：",
    webrtcP2pUrl: "WebRTC P2P流地址：",
    rtmpPushUrlAny: "RTMP(S)/RTSP发布地址{0}：",
    rtmpPushUrlAny0: "RTMP(S)/RTSP发布地址0：",
    rtmpPushUrlAny1: "RTMP(S)/RTSP发布地址1：",
    rtmpPushUrlAny2: "RTMP(S)/RTSP发布地址2：",
    rtmpPushUrl: "RTMP(S)发布地址{0}：",
    rtspPushUrl: "RTSP发布地址{0}：",
    srtCallerUrl: "SRT Caller 地址：",
    hlsPushUrl: "HLS PUSH URL：",
    icecastPushUrl: "ICECAST PUSH URL：",
    shoutcastPushUrl: "Shoutcast PUSH URL：",
    whipLabel: "WHIP：",
    viewers: "观看人数",
    viewersLabel: "观看人数：",

    // TRTC状态
    trtcRoomId: "TRTC房间号：",
    inRoom: "在房间中",
    notInRoom: "未进房间",
    initializingServer: "正在初始化服务器连接",
    serverDisconnected: "服务器连接断开",
    connectingServer: "正在连接服务器",
    serverConnected: "已连接上服务器",
    networkUnknown: "网络状态未知",
    networkExcellent: "网络非常好",
    networkGood: "网络比较好",
    networkNormal: "网络一般",
    networkPoor: "网络较差",
    networkBad: "网络很差",
    networkNotMeet: "网络不满足TRTC的最低要求",
    errorCode: "错误代码",
    errorCodeLabel: "错误代码：",
    trtcError1: "通用错误，可根据日志文件排查问题",
    trtcError100: "业务层逻辑错误：非法调用",
    trtcError101: "业务层逻辑错误：非法参数",
    trtcError102: "当前无法读取，请重试",
    trtcError103: "无法连接网络",
    trtcError200: "进房失败",
    trtcError201: "进房参数 user_sig 无效",
    trtcError202: "进房参数 房间号格式错误",
    trtcError203: "进房参数 sdk_app_id 无效",
    trtcError204: "服务不可用 请检查:套餐包剩余分钟数是否大于0,腾讯云账号是否欠费",
    trtcError205: "当前用户被服务器踢出房间",

    // WHIP状态
    whipInitializing: "正在初始化",
    whipConnected: "已连接",
    whipDisconnected: "未连接",
    whipUnknown: "未知状态",
    alirtcLabel: "AliRTC：",
    alirtcConnecting: "正在连接",
    alirtcConnected: "已连接",
    alirtcDisconnected: "未连接",
    alirtcUnknown: "未知状态",
    alirtcRoomId: "AliRTC房间号：",
    alirtcRoomIdLabel: "房间号：",
    alirtcUserIdLabel: "用户ID：",
    alirtcUserNameLabel: "用户名：",
    alirtcVideoBitrateLabel: "视频：",
    alirtcAudioBitrateLabel: "音频：",
    alirtcRttLabel: "RTT：",
    sendBytesLabel: "发送数据：",

    // GB28181
    gb28181: "GB28181：",
    gb28181Online: "在线",
    gb28181Offline: "离线"
  },

  // 重启页面
  reboot: {
    title: "重启设备",
    description: "单击此按钮将使编码器重新启动。",
    button: "重 启",
    success: "重启成功！",
    failed: "重启失败！",
    confirm: "确定要重启设备吗？"
  },

  // 恢复出厂设置页面
  reset: {
    title: "恢复出厂设置",
    description: "单击此按钮将使编码器的所有设置恢复到出厂时的默认状态。",
    button: "重 置",
    success: "恢复出厂设置成功,系统会自动重启,请稍后！",
    failed: "恢复出厂设置失败！",
    confirm: "确定恢复到出厂设置？"
  },

  // 定时重启页面
  scheduleRecord: {
    title: "计划录像",
    allDay: "全天",
    timeRange: "指定时段",
    segment: "时间段",
    to: "至",
    monday: "一",
    tuesday: "二",
    wednesday: "三",
    thursday: "四",
    friday: "五",
    saturday: "六",
    sunday: "日",
    nextDay: "(次日)",
    hint: "每个时间段可设为 全天 或 指定时段，并各自选择生效星期；指定时段中结束时间早于开始时间表示跨夜（录到次日，按开始日的星期判定）。请先在网络设置中校准设备时间(NTP)，否则计划不会触发。",
    saveSuccess: "设置成功！",
    saveFailed: "设置失败！",
    invalidTime: "时间填写错误！",
    needWeekday: "请至少选择一个星期！",
  },
  timedReboot: {
    title: "定时重启",
    enable: "定时重启",
    enableLabel: "定时重启：",
    timeLabel: "定时时间：",
    enabled: "启用",
    disabled: "禁用",
    time: "重启时间",
    weekdays: "重启日期",
    everyday: "每天",
    monday: "周一",
    tuesday: "周二",
    wednesday: "周三",
    thursday: "周四",
    friday: "周五",
    saturday: "周六",
    sunday: "周日",
    save: "设置",
    saveSuccess: "设置成功！",
    saveFailed: "设置失败！",
    invalidTime: "定时时间填写错误！"
  },

  // 网络测试页面
  netTest: {
    title: "网络测试及系统日志",
    command: "命令：",
    run: "运行",
    address: "地址：",
    result: "运行结果：",
    invalidAddr: "请输入有效的地址！"
  },

  // 录像文件页面
  recordFiles: {
    title: "文件列表",
    fileName: "文件名",
    time: "时间",
    fileSize: "文件大小",
    action: "操作",
    delete: "删除",
    confirmDelete: "确定要删除",
    deleteSuccess: "删除指令发送成功！",
    deleteFailed: "删除失败！",
    noFiles: "暂无录像文件",
    loadError: "加载失败"
  },

  // 密码设置页面
  password: {
    title: "密码设置",
    oldPassword: "原密码",
    oldPasswordLabel: "原密码：",
    newPassword: "新密码",
    newPasswordLabel: "新密码：",
    confirmPassword: "确认新密码",
    confirmPasswordLabel: "确认新密码：",
    save: "设 置",
    success: "设置成功！",
    failed: "密码设置失败，请检查原密码是否输入正确！",
    mismatch: "新密码输入不一致！",
    empty: "密码不能为空！"
  },

  // 编码设置通用（仅实际使用的键）
  encoding: {
    sameAsInput: "与输入分辨率相同",
    mp3Required: "请将音频编码设置为MP3！",
    choosePrimaryColor: "选择主色调",
    toggleTheme: "切换主题"
  },

  // OSD设置
  osd: {
    title: "OSD设置",
    mainStream: "主码流 OSD",
    subStream1: "次码流1 OSD",
    subStream2: "次码流2 OSD",
    subStream3: "次码流3 OSD",
    alpha: "透明度",
    alphaLabel: "透明度：",
    alphaRange: "[0-255]",
    alphaError: "透明度应是0-128间的整数！",
    region: "区域",
    regionLabel: "区域：",
    region1: "区域一",
    region2: "区域二",
    region3: "区域三",
    region4: "区域四",
    type: "类型",
    typeLabel: "类型：",
    typeText: "文本",
    typeImage: "图片",
    typeScroll: "滚动文本",
    typeTime: "时间",
    typeAudioStatus: "音频状态",
    typeVolumeMeter: "音量条",
    timeFormatLabel: "时间格式：",
    position: "位置",
    positionLabel: "位置：",
    speed: "速度",
    speedLabel: "速度：",
    xLabel: "X：",
    yLabel: "Y：",
    textLabel: "文本：",
    fontSize: "字体大小",
    fontSizeLabel: "字体大小：",
    fontSizeRange: "[8-72]",
    backgroundColor: "背景颜色",
    backgroundLabel: "背景颜色：",
    sizeLabel: "大小（宽×高）：",
    sizeHint: "[像素]",
    sizeError: "{0}：大小（宽×高）需为有效正整数",
    bgTransparent: "透明色",
    bgWhite: "白色",
    bgBlack: "黑色",
    fontColor: "字体颜色",
    fontColorLabel: "字体颜色：",
    pickColor: "选取颜色",
    closeColor: "关闭",
    logoLabel: "LOGO：",
    success: "设置成功！",
    failed: "设置失败！",
    xRangeError: "{0}X的值应是0-{1}间的整数！",
    yRangeError: "{0}Y的值应是0-{1}间的整数！",
    textEmpty: "{0}文本不能为空！",
    fontSizeError: "{0}字体大小应是8-72间的整数！",
    speedRangeError: "{0}速度的值应是0-30间的整数！",
    positionRangeError: "{0}位置值应是0-{1}间的整数！",
    selectLogo: "请为{0}选择LOGO！",
    webrtcPreview: "视频预览"
  },

  // LOGO上传
  logo: {
    title: "LOGO 上传",
    logoLabel: "LOGO：",
    upload: "上 传",
    hint: "请上传小于 500KB 的图片，支持 PNG / JPG / BMP 三种格式（需要透明请用带 alpha 的 PNG 或 32 位 BMP）。",
    hint2: "文件名须为 logo1 / logo2 / logo3 / logo4，扩展名支持 .png / .jpg / .jpeg / .bmp。",
    hint3: "例如 logo1.png、logo1.jpg、logo1.jpeg、logo1.bmp",
    noFileSelected: "请选择上传文件！",
    invalidFile: "请按要求上传图片！",
    uploadSuccess: "上传成功！",
    uploadFailed: "上传失败！",
    imageSizeExceeded: "图片文件大小超出限制！",
    imageResolutionExceeded: "图片文件分辨率超出限制！",
    storageInsufficient: "升级文件太大，存储空间不足！",
    listTitle: "已上传 LOGO",
    refresh: "刷新",
    preview: "预览",
    logoFile: "LOGO 文件",
    fileType: "类型",
    fileSize: "大小",
    operation: "操作",
    loading: "加载中...",
    emptyList: "暂无已上传的 LOGO",
    loadListFailed: "读取 LOGO 列表失败",
    confirmDelete: "确定删除 {0}？\n会同时删除同名 PNG/BMP/OSD 文件，如果该 LOGO 正在使用，对应图片 OSD 会被清空。",
    deleteSuccess: "删除成功！",
    deleteFailed: "删除失败！"
  },

  // WIFI设置
  wifi: {
    title: "WIFI设置",
    mode: "模式",
    ap: "热点模式",
    sta: "客户端模式",
    ssid: "SSID",
    password: "密码",
    security: "加密方式",
    channel: "信道",
    scan: "扫描",
    connect: "连接",
    disconnect: "断开",
    status: "状态",
    connected: "已连接",
    disconnected: "未连接",
    signalStrength: "信号强度",
    basicSettings: "基本设置",
    wifiModule: "Wifi 模块：",
    wifiMode: "Wifi 模式：",
    staMode: "STA模式",
    apMode: "AP模式",
    mainConfig: "WIFI主配置",
    backupConfig1: "WIFI备用配置1",
    backupConfig2: "WIFI备用配置2",
    apModeSettings: "AP模式",
    wifiList: "Wifi 列表：",
    wifiEssid: "Wifi Essid：",
    wifiPassword: "Wifi 密码：",
    wifiDhcp: "Wifi DHCP：",
    wifiIp: "Wifi IP：",
    wifiNetmask: "Wifi 子网掩码：",
    wifiGateway: "Wifi 默认网关：",
    backupEnable1: "备用配置1：",
    backupEnable2: "备用配置2：",
    wifiBand: "Wifi 频段：",
    wifiChannel: "Wifi 频道：",
    refresh: "刷新",
    success: "设置成功！",
    failed: "设置失败！",
    mainConfigEmpty: "WIFI主配置中的{0}不能为空！",
    mainConfigInvalid: "WIFI主配置中的{0}格式不正确！",
    backupConfigEmpty: "WIFI{0}中的{1}不能为空！",
    backupConfigInvalid: "WIFI{0}中的{1}格式不正确！",
    ipAddr: "IP地址",
    netmask: "子网掩码",
    gateway: "默认网关",
    essidEmpty: "WiFi名称不能为空！",
    passwordTooShort: "WiFi密码至少8位！"
  },


  // 更新和备份
  updateBackup: {
    title: "系统升级",
    uploadTitle: "上传固件和配置",
    backupTitle: "备份固件和配置",
    systemVersion: "系统版本",
    systemVersionLabel: "系统版本：",
    hardware: "硬件",
    hardwareLabel: "硬件：",
    selectFile: "选择文件",
    selectFileLabel: "选择文件：",
    uploadHint: "上传文件名为 up.rar 或 box.ini",
    uploadWarning: "请勿多人同时上传，上传过程请勿断电",
    upload: "上 传",
    backupFirmware: "备份固件",
    backupConfig: "备份配置",
    noFileSelected: "请选择上传文件！",
    uploadSuccess: "上传成功，请重启系统！",
    uploadFailed: "上传失败！",
    kernelUpdating: "后台会花几分钟时间更新内核，期间请勿断电；完成后设备会自动重启，不用手工重启。",
    kernelUpdatingBin: "后台会花几分钟时间更新内核，期间请勿断电；完成后设备会自动重启，不用手工重启！",
    imageSizeExceeded: "图片文件大小超出限制！",
    imageResolutionExceeded: "图片文件分辨率超出限制！",
    storageInsufficient: "升级文件太大，存储空间不足！"
  },

  // 透传设置
  serial: {
    title: "透传设置",
    frpTitle: "FRP客户端设置",
    serialTitle: "串口透传",
    enable: "启用",
    disable: "禁用",
    enableLabel: "启用：",
    serverAddr: "服务器地址",
    serverAddrLabel: "服务器地址：",
    serverPort: "服务器端口",
    serverPortLabel: "服务器端口：",
    serverToken: "服务器Token",
    serverTokenLabel: "服务器Token：",
    channel: "透传",
    channel1: "通道 1",
    channel2: "通道 2",
    channel3: "通道 3",
    channel4: "通道 4",
    protocolLabel: "协议：",
    localPort: "本地端口",
    localPortLabel: "本地端口：",
    remotePort: "映射端口",
    remotePortLabel: "映射端口：",
    serialMode: "串口工作模式",
    serialModeLabel: "工作模式：",
    server: "服务器",
    client: "客户端",
    baudRate: "串口波特率",
    baudRateLabel: "波特率：",
    listenPort: "监听端口",
    listenPortLabel: "监听端口：",
    save: "设 置",
    success: "设置成功,请重启设备！",
    failed: "设置失败！",
    emptyError: "设置内容不能为空！",
    remoteAddrError: "对端服务器地址无效（请填写合法的 IP 或主机名）！",
    portRangeError: "TCP监听端口的值应是1-65535间的整数！",
    frpAddrEmpty: "内网穿透服务器地址的值不能为空！",
    frpPortError: "内网穿透服务器端口的值应是1-65535间的整数！"
  },

  // 高级设置
  advanced: {
    title: "高级设置",
    // 分区标题
    videoInput: "视频输入",
    avTransmission: "音视频传输",
    recordSettings: "录像设置",
    hlsSettings: "HLS设置",
    networkTransmission: "流传输设置",
    serviceSettings: "服务设置",
    logSettings: "日志设置",
    encoderParams: "编码参数",
    imageEnhancement: "图像增强",
    autoRestart: "自动重启",
    // 视频输入
    edidSelect: "EDID选择：",
    colorGamut: "色域：",
    colorRange: "颜色范围：",
    bFrameMode: "高级压缩模式：",

    interlaceMode: "隔行处理方式：",
    noSignal: "无信号：",
    noSigPicOnly: "仅传输无信号图片：",

    vgaAutoAdjust: "VGA启动后自动调节一次：",
    interlaceWeaving: "两场合并为一帧(Weaving)",
    interlaceBottom: "只保留底场",
    interlaceTop: "只保留顶场",
    interlaceBobbing: "场转帧(Bobbing)",
    noSignalHide: "不显示",
    noSignalImage: "显示无信号图片",
    noSignalColor: "显示单色",
    // 音视频传输
    videoOnly: "仅传输视频：",
    audioOnly: "仅传输音频：",
    avSync: "视音频同步：",
    audioDelay: "音频延时(ms)：",
    syncAuto: "自动",
    syncResample: "重采样",
    audioDelayHint: "负值表示音频更早，正值表示音频更晚，一般只用于修正视音频同步。",
    // 录像设置
    recordType: "录像类型：",
    cycleRecord: "循环录像：",
    diskOverwriteOldest: "满盘自动删除最旧：",
    noRecordNoSig: "无信号不录像：",
    recordSplitTime: "录像分片时间(秒)：",
    // HLS设置
    hlsSplitTime: "HLS切片时间(秒)：",
    hlsBufferNum: "HLS切片数：",
    hlsIndexUri: "HLS全局索引地址：",
    // 网络传输
    tsMuxer: "TS打包方式：",
    sliceNumber: "SLICE Number：",

    netDropThreshold: "网络丢包阈值：",
    tsOnce: "TS单次发包数：",
    rtspPackType: "RTSP封装类型：",
    multicastType: "组播类型：",
    enableSap: "启用SAP：",
    mtuSize: "MTU Size：",
    ethSpeed: "网口速度：",

    natAddr: "NAT映射地址：",

    udpTtl: "UDP TTL：",
    udpSockBuf: "UDP SOCKET_BUF_SIZE：",
    rtpH264PacketMode: "RTP H264打包方式：",
    packetizeByAccessUnit: "packetize_by_access_unit",
    packetizeByNalu: "packetize_by_nalu",
    vlcCompat: "VLC兼容",
    ffmpegCompat: "FFMPEG兼容",
    esStream: "ES流",
    tsStream: "TS流",
    // 服务设置
    tsRtspAuth: "TS/RTSP流需要验证密码：",
    httpNoAuth: "网页访问无需密码：",
    netCheck: "网络状态检测：",
    telnetService: "Telnet服务：",
    sshService: "SSH服务：",
    sambaService: "Samba服务：",
    onvifService: "Onvif服务：",
    onvifLocation: "Onvif位置：",
    onvifMode: "Onvif模式：",
    onvifModeLegacy: "Legacy XML（HTTP/ONVIF 共用端口）",
    onvifModeProfileST: "Profile S/T（独立 ONVIF 端口）",
    onvifModeProfileSCompat: "Profile S 海康兼容（独立 ONVIF 端口）",
    onvifPassword: "ONVIF需要验证密码：",

    rtspDefaultStream: "RTSP缺省码流：",
    vmixCompat: "Vmix兼容：",
    readOnlyConfig: "锁定所有配置：",

    telnetLan: "局域网启用",
    // 日志设置
    localLog: "本地日志服务：",
    trtcLogLevel: "TRTC SDK日志级别：",
    alirtcLogLevel: "AliRTC SDK日志级别：",
    sdkLogDebug: "Debug",
    sdkLogInfo: "Info",
    sdkLogWarning: "Warning",
    sdkLogError: "Error",
    sdkLogFatal: "Fatal",
    sdkLogNone: "None",
    lokiAddr: "Loki日志服务器地址：",
    lokiPort: "Loki日志服务器端口：",
    // 编码器参数
    sliceSplit: "SLICE分割：",
    sliceBytes: "SLICE字节：",
    minQp: "MIN_QP：",
    maxQp: "MAX_QP：",
    deblocking: "去块效应滤波：",
    deblockingAlpha: "去块效应滤波alpha：",
    deblockingBeta: "去块效应滤波beta：",



    debreath: "去呼吸效应：",
    sar: "PAR：",
    cbrOnlyHint: "仅在“码率控制模式”选择 CBR 时生效",
    // 图像增强
    contrastEnhance: "对比度增强：",
    sharpnessEnhance: "锐利度增强：",
    lumaSfStrength: "亮度静态去噪强度：",
    lumaTfStrength: "亮度动态去噪强度：",
    chromaSfStrength: "色度静态去噪强度：",
    chromaTfStrength: "色度动态去噪强度：",
    // 自动重启
    kickAllOnChange: "输入改变自动断开用户：",
    noVideoReboot: "无视频自动重启：",
    noAudioReboot: "无音频自动重启：",
    picStillRestart: "画面冻结自动重启：",

    // 按钮
    save: "设 置",
    // 消息
    success: "设置成功,请重启设备！",
    failed: "设置失败！",
    emptyError: "设置内容不能为空！",
    netDropError: "网络丢包阈值应是50-50000间的整数！",
    tsOnceError: "TS单次发包数的值应是3-128间的整数！",
    sliceError: "SLICE Number的值应是1-255间的整数！",
    minQpError: "MIN_QP的值应是1-35间的整数！",
    maxQpError: "MAX_QP的值应是大于MIN_QP且小于等于50的整数！",
    udpTtlError: "UDP TTL的值应是1-254间的整数!",
    contrastError: "对比度增强的值应是0-63间的整数！",
    sharpnessError: "锐利度增强的值应是0-16间的整数！",
    lumaSfError: "亮度静态去噪强度的值应是0-255间的整数！",
    lumaTfError: "亮度动态去噪强度的值应是0-63间的整数！",
    chromaSfError: "色度静态去噪强度的值应是0-255间的整数！",
    chromaTfError: "色度动态去噪强度的值应是0-32间的整数！",
    hlsSplitError: "HLS切片时间的值应该是3-20间的整数!",
    hlsBufferError: "HLS切片数的值应该是3-20间的整数!",
    hlsUriError: "HLS全局索引地址的值格式错误!",
    udpSockBufError: "UDP SOCKET_BUF_SIZE的值应该是0-20971520间的整数!",
    mtuError: "MTU Size的值应该是500-1500间的整数!",
    deblockingAlphaError: "去块效应滤波alpha的值应该是-6~6间的整数!",
    deblockingBetaError: "去块效应滤波beta的值应该是-6~6间的整数!",


    audioCacheError: "音频延时的值应该是-2000-2000间的整数!",
    recordSplitError: "录像分片时间的值应该是60-7200间的整数!",
    lokiPortError: "Loki 日志服务器端口的范围是1-65535"
  },

  // 音频编码设置
  audioEnc: {
    blkInput: "输入",
    blkEncode: "编码",
    blkVolume: "音量",
    blkVolumeNote: "手工固定增益",
    blkAgc: "自动增益",
    blkAgcNote: "自动把忽大忽小声音拉到目标值",
    blkDenoise: "降噪",
    blkDenoiseNote: "抑制背景噪音，占用CPU较大，一般不开",
    mute: "静音",
    gain0: "0 dB（不变）",
    title: "音频设置",
    // 标签页
    tabAudio: "音频设置",
    tabOnvif: "ONVIF音频",
    // 提示
    tipAudio: "不要将数字音量增益设置得过高，否则可能会导致失真或引入噪声。<br>在大多数情况下，增益设为 0 即可。<br>请通过前端音量来调节整体的声音大小。",
    tipVolVsAgc: "<b>音量增益 vs 自动增益（AGC）</b><br>音量增益是手动设定的固定增益：正值放大、负值衰减，不随输入信号变化，适合输入电平稳定可预期的场景。<br>自动增益（AGC）会根据输入信号的实时强弱自动调整增益，使输出稳定在目标电平附近，让忽大忽小的声音变得平稳。<br>开启 AGC 后，建议将音量增益保持为 0 dB。让 AGC 独立控制电平，避免叠加控制。",
    tipAgcLevel: "<b>AGC 目标电平（dBFS）</b><br>用于设定最终电平参考。目标越接近 0dBFS，输出越响，但留给瞬时峰值的余量越小，越容易削顶失真。<br>• -18 dBFS（推荐）：响度与余量的平衡点，适合大多数场景。<br>• -12 dBFS：输出最响，适合直播等需要高音量的场合；但峰值余量仅 12 dB，突发大声容易触顶失真。<br>• -20 ~ -24 dBFS：适合人声、现场演出等峰值起伏较大的输入。<br>• -30 ~ -42 dBFS：适合高增益麦克风输入、或环境噪声较大的场景。",
    tipOnvif: "如果要对接 NVR，RTSP流使用G711编码请设置为 启用且重采样为8K",
    // 音频设置
    audioInput: "音频输入：",
    sampleRate: "编码采样率：",
    codec: "编码方法：",
    channel: "左右声道：",
    bitrate: "编码比特率：",
    digitalGain: "数字音量增益：",
    analogGain: "模拟音量增益：",
    denoise: "降噪：",
    denoiseStrength: "降噪强度(dB)：",
    pteG711: "PTE流使用G711编码：",
    // 音频输入选项
    inputDigital: "数字",
    inputAnalog: "模拟",
    inputMixed: "混合",
    // 采样率选项
    sampleSameAsInput: "与输入采样率相同",
    // ONVIF音频
    rtspG711: "RTSP流使用G711编码：",
    rtspG711Resample: "启用且重采样为8k",
    g711Codec: "G711编码：",
    // 按钮和消息
    save: "设 置",
    success: "设置成功！",
    failed: "设置失败！",
    emptyError: "设置内容不能为空！",
    bitrateError: "编码比特率的值应是{0}-{1}间的整数！",
    gainError: "数字音量增益的值应是-20~10间的整数！",
    denoiseError: "降噪强度的值应是1~100间的整数！",
    agc: "自动增益控制：",
    agcLevel: "AGC目标电平(dBFS)：",
    agcLevelError: "AGC目标电平应在 -42 ~ -12 dBFS 之间！",
    analogVolEmpty: "模拟音量增益不能为空！",
    analogVolError: "模拟音量增益的值应是{0}~{1}间的整数！"
  },

  // 录像设置页面
  recordSet: {
    title: "录像设置",
    // 卡片标题
    statusTitle: "录像状态",
    settingsTitle: "录像设置",
    // 状态
    recordType: "录像类型：",
    diskStatus: "磁盘状态：",
    currentAddr: "当前地址：",
    mountDevice: "挂载设备：",
    mountStatus: "挂载状态：",
    totalSpace: "总磁盘空间：",
    freeSpace: "可用磁盘空间：",
    recordStatus: "录像状态：",
    recordFiles: "录像文件：",
    fileList: "文件列表",
    // 磁盘状态
    diskNotExist: "不存在",
    diskFull: "磁盘满",
    diskSlow: "磁盘速度太慢",
    mounted: "已挂载",
    unmounted: "未挂载",
    notRecording: "未录像",
    recording: "正在录像",
    noVideoWarning: "（无视频输入时可能无法保存文件）",
    // 操作链接
    startRecord: "(开始录像)",
    stopRecord: "(停止录像)",
    mountDisk: "(挂载设备)",
    unmountDisk: "(卸载设备)",
    deleteAll: "(删除所有录像)",
    // 设置
    storageType: "储存方式：",
    partition: "储存分区：",
    partitionInfo: "分区信息：",
    diskInfo: "磁盘信息：",
    formatDisk: "（重新分区格式化磁盘）",
    exampleAddr: "示例地址：",
    storageAddr: "储存地址：",
    username: "用户名：",
    password: "密码：",
    // 存储类型选项
    storageDisabled: "禁用",
    storageUsb: "U盘/TF卡",
    storageNfs: "NFS",
    storageSamba: "SAMBA/CIFS",
    // 格式化弹窗
    formatTitle: "磁盘信息",
    formatDevice: "设备：",
    formatType: "类型：",
    formatModel: "名称：",
    formatRemovable: "可移动磁盘：",
    formatPartTable: "分区表类型：",
    formatCapacity: "磁盘容量：",
    formatPartitions: "分区信息",
    formatPartition: "分区",
    formatAvailable: "(可用)",
    formatTotal: "(总量)",
    formatConfirm: "是否继续格式化磁盘操作？",
    formatDanger: "危险操作：格式化会重新分区，所有分区数据都会丢失，确定继续操作？",
    formatContinue: "继 续",
    formatCancel: "取 消",
    formatConfirmBtn: "确 定",
    formatting: "格式化中...",
    // 按钮和消息
    save: "设 置",
    yes: "是",
    no: "否",
    success: "设置成功！",
    failed: "设置失败！",
    formatSuccess: "格式化成功！",
    formatFailed: "格式化失败！",
    deleteSuccess: "删除指令发送成功！",
    deleteFailed: "删除失败！",
    confirmDeleteAll: "确定要删除所有录像文件吗？",
    recordingWarning: "正在录像中，如需卸载磁盘，请先停止录像",
    diskMountedWarning: "磁盘已挂载，如需格式化请先卸载",
    diskMountedSettingWarning: "磁盘已挂载，不可修改设置，如需修改应先卸载磁盘",
    storageLockedHint: "挂载中不可修改，请先卸载磁盘",
    partitionNotExist: "分区不存在，不可设置",
    partitionRemoved: "(已拔出)",
    unpartitioned: "(未分区)",
    unpartitionedHint: "磁盘尚未分区，请先重新分区格式化磁盘",
    // 地址验证
    addrEmpty: "储存地址不能为空！",
    addrNfsFormat: "储存地址格式错误，必须包含':'分隔符",
    addrIpError: "储存地址的IP格式不正确",
    addrPathSlash: "储存地址的路径必须以'/'开头",
    addrPathInvalid: "储存地址的路径包含非法字符",
    addrSambaStart: "储存地址必须以'\\\\'开头",
    addrSambaFormat: "储存地址无效，必须包含IP地址和路径，且用'\\'分隔",
    addrPathEmpty: "储存地址的路径不能为空",
    addrPathChars: "储存地址的路径包含非法字符，只允许字母、数字、下划线和横杠",
    // 磁盘容量信息 "{可用}/{总量}"
    diskSizeInfo: "{0}(可用)/{1}(总量)"
  },

  // GB28181设置
  gb28181: {
    title: "GB28181设置",
    basicSettings: "基本设置",
    heartbeatSettings: "心跳设置",
    sipServerSettings: "SIP服务器设置",
    authSettings: "认证设置",
    enable: "启用：",
    disabled: "禁用",
    enabled: "启用",
    localSipPort: "本地SIP端口：",
    videoChannelId: "视频通道编码ID：",
    streamSelect: "28181码流选择：",
    mainStream: "主码流",
    subStream1: "次码流1",
    subStream2: "次码流2",
    subStream3: "次码流3",
    regExpiry: "注册有效期：",
    heartbeatCycle: "心跳周期：",
    maxHeartbeatTimeout: "最大心跳超时次数：",
    sipServerId: "SIP服务器ID：",
    sipServerDomain: "SIP服务器域：",
    sipServerAddr: "SIP服务器地址：",
    sipServerPort: "SIP服务端口：",
    sipUserId: "SIP用户认证ID：",
    sipPassword: "SIP认证密码：",
    emptyError: "设置内容不能为空！",
    localPortError: "本地SIP端口的值应是1-65535间的整数！",
    serverPortError: "SIP服务器端口的值应是1-65535间的整数！",
    regExpiryError: "注册有效期的值应是100-100000间的整数！",
    heartbeatError: "心跳周期的值应是5-3600间的整数！",
    maxTimeoutError: "最大心跳超时次数的值应是3-255间的整数！",
    success: "设置成功！",
    failed: "设置失败！"
  },
  // 视频源设置
  videoSource: {
    title: "视频源设置",
    videoInput: "视频输入设置",
    brightAdjust: "输入亮度调节",
    videoOutput: "视频输出设置",
    inputFormat: "视频输入格式：",
    yuv422: "YUV422",
    yuv420: "YUV420(支持旋转)",
    rotation: "画面旋转角度：",
    flipMirror: "画面翻转镜像：",
    flipDisable: "禁用",
    mirror: "镜像",
    flip: "翻转",
    flipAndMirror: "镜像和翻转",
    cropEnable: "视频源裁切：",
    cropLeft: "左上角开始裁切点(Left)：",
    cropTop: "左上角开始裁切点(Top)：",
    cropWidth: "裁切后宽度(Width)：",
    cropHeight: "裁切后高度(Height)：",
    monochrome: "黑白图像：",
    colorMode: "输入颜色模式：",
    unknown: "未知",
    brightEnable: "亮度调节：",
    gain: "增益：",
    gainHint: "[10-1000],缺省100",
    offset: "偏移量：",
    offsetHint: "[0-100],缺省0",
    note: "说明：",
    brightNote1: "1.亮度=(原亮度*增益/100)+偏移量",
    brightNote2: "2.亮度调节仅在输入颜色模式为RGB时有效",
    outputRes: "视频输出分辨率：",
    auto: "自动",
    cscEnable: "CSC调节：",
    luminance: "亮度：",
    contrast: "对比度：",
    hue: "色度：",
    saturation: "饱和度：",
    cscHint: "[0-100],缺省50",
    rotateHint: "180°、270° 旋转可以通过 0°/90° 旋转 + 翻转镜像 组合得到。",
    emptyError: "设置内容不能为空！",
    gainError: "增益的值应是10-1000间的整数！",
    offsetError: "偏移量的值应是0-100间的整数！",
    leftError: "Left的值应是0-{0}间的整数！",
    topError: "Top的值应是0-{0}间的整数！",
    widthError: "Width的值应是400-{0}间的整数！",
    heightError: "Height的值应是400-{0}间的整数！",
    luminanceError: "亮度的值应是0-100间的整数！",
    contrastError: "对比度的值应是0-100间的整数！",
    hueError: "色度的值应是0-100间的整数！",
    saturationError: "饱和度的值应是0-100间的整数！",
    success: "设置成功！",
    failed: "设置失败！"
  },
  // 网络设置
  network: {
    title: "网络设置",
    ipv4Title: "IPv4设置",
    ipv6Status: "IPv6状态",
    ipv6Title: "IPv6设置",
    ipv6TypeGlobal: "全局地址",
    ipv6TypeLinkLocal: "链路本地地址",
    ipv6TypeUniqueLocal: "本地地址",
    ipv6TypeMulticast: "组播地址",
    ipv6TypeGeneric: "IP地址",
    ipv6StatusGateway: "网关",
    dnsTitle: "DNS设置",
    ntpTitle: "NTP设置",
    portTitle: "端口设置",
    httpsTitle: "HTTPS设置",
    hostnameTitle: "HOSTNAME设置",
    dhcp: "DHCP：",
    dhcpHint: "开启DHCP后，可以用ONVIF兼容的搜索工具查找到设备。",
    ipAddr: "IP地址：",
    netmask: "子网掩码：",
    gateway: "有线网关：",
    macAddr: "MAC地址：",
    defaultGateway: "默认网关：",
    lanFirst: "有线优先",
    wifiFirst: "WIFI优先",
    g4First: "4G/5G优先",
    ipv6Mode: "模式设置：",
    ipv6Disable: "禁用",
    ipv6Auto: "自动配置",
    ipv6Manual: "手动配置",
    ipv6Addr: "IPv6 地址：",
    ipv6Prefix: "IPv6 子网前缀长度：",
    ipv6Gateway: "IPv6 默认网关：",
    dns1: "DNS1：",
    dns2: "DNS2：",
    ntpSync: "NTP同步：",
    ntpServer: "服务器：",
    timezone: "时区：",
    httpPort1: "HTTP端口1：",
    httpPort2: "HTTP端口2：",
    rtspPort1: "RTSP端口1：",
    rtspPort2: "RTSP端口2：",
    onvifPort: "ONVIF端口：",
    sadpProtocol: "SADP端口：",
    httpsService: "HTTPS服务：",
    httpsPort1: "HTTPS端口1：",
    httpsPort2: "HTTPS端口2：",
    httpsPrivatePass: "HTTPS私钥密码：",
    socks5Title: "SOCKS5代理",
    socks5Enable: "SOCKS5代理：",
    socks5Host: "代理地址：",
    socks5Port: "代理端口：",
    socks5User: "用户名：",
    socks5Pass: "密码：",
    socks5AuthHint: "（认证可选，用户名和密码需同时填写）",
    privatePassHint: "(如果私钥没有密码则为空)",
    uploadCert: "上传证书文件：",
    uploadCertHint: "(上传文件名为 private.key 或者 public.crt，请勿多人同时上传，上传过程请勿断电)",
    uploadBtn: "上传证书",
    deleteCert: "删除证书",
    hostname: "HOSTNAME：",
    mdnsService: "mDNS服务：",
    mdnsAddr: "mDNS访问地址：",
    portRange: "[1-65535]",
    prefixRange: "[0-128]",
    emptyError: "设置内容不能为空！",
    ipError: "IP地址格式不正确！",
    netmaskError: "子网掩码格式不正确！",
    gatewayError: "默认网关格式不正确！",
    dns1Error: "首选DNS格式不正确！",
    dns2Error: "备用DNS格式不正确！",
    macError: "MAC地址格式不正确！",
    ipv6Error: "IPv6地址格式不正确！",
    ipv6PrefixError: "IPv6子网前缀长度不正确（1-128）！",
    ipv6GatewayError: "IPv6默认网关格式不正确！",
    httpPort1Error: "HTTP端口1的值应是1-65535间的整数！",
    httpPort2Error: "HTTP端口2的值应是1-65535间的整数！",
    rtspPort1Error: "RTSP端口1的值应是1-65535间的整数！",
    rtspPort2Error: "RTSP端口2的值应是1-65535间的整数！",
    httpsPort1Error: "HTTPS端口1的值应是1-65535间的整数！",
    httpsPort2Error: "HTTPS端口2的值应是1-65535间的整数！",
    onvifPortError: "ONVIF端口的值应是1-65535间的整数！",
    sadpPortError: "SADP端口的值应是1-65535间的整数！",
    httpBothDisableError: "HTTP端口1和端口2不能同时禁用！",
    httpsBothDisableError: "HTTPS启用时，端口1和端口2不能同时禁用！",
    socks5HostError: "SOCKS5代理地址格式不正确！",
    socks5PortError: "SOCKS5代理端口的值应是1-65535间的整数！",
    socks5AuthPairError: "SOCKS5用户名和密码必须同时填写或同时留空！",
    socks5AuthLengthError: "SOCKS5用户名和密码长度不能超过255！",
    ntpEmptyError: "NTP服务器不能为空！",
    ntpFormatError: "NTP服务器地址错误！",
    hostnameEmptyError: "HOSTNAME不能为空！",
    hostnameFormatError: "HOSTNAME 设置错误！\n \n1、HOSTNAME长度不能超过63个字符！\n2、只能使用英文字母(a~z,不区分大小写)、数字(0~9)、连接符(-)以及下划线(_)！\n3、'-' 和'_'不能连续出现、不能单独出现，也不能放在开头和结尾！",
    deleteCertConfirm: "确定要删除用户上传的HTTPS证书吗？",
    selectFile: "请选择上传文件！",
    uploadSuccess: "上传成功！",
    uploadFailed: "上传失败！",
    fileSizeError: "图片文件大小超出限制！",
    fileResError: "图片文件分辨率超出限制！",
    spaceError: "升级文件太大，存储空间不足！",
    deleteSuccess: "删除成功！",
    deleteFailed: "删除失败！",
    successReboot: "设置成功,请重启设备！",
    failed: "设置失败！"
  },

  // 输出设置页面（码流设置）
  output: {
    // 标签页名称
    tabs: {
      encode: "编码设置",
      ts: "TS/组播设置",
      mjpeg: "MJPEG设置",
      rtsp: "RTSP设置",
      rtmp: "RTMP设置",
      srt: "SRT设置",
      webrtc: "WebRTC设置",
      trtc: "TRTC设置",
      alirtc: "AliRTC设置",
      hls: "HLS设置",
      other: "MP4/FLV/其他设置"
    },

    // 编码设置
    encode: {
      codecType: "编码类型：",
      frameRate: "编码帧率：",
      sameAsInput: "与输入帧率相同",
      auto: "自动",
      customFrameRate: "自定义帧率",
      customFrameRateLabel: "自定义帧率：",
      gopInterval: "关键帧间隔(帧)：",
      bitrate: "比特率(kbit)：",
      qualityRange: "画质范围：",
      qualityStrict: "严格（高）",
      qualityTight: "较严（较高~高）",
      qualityNormal: "普通（中~高）",
      qualityLoose: "较松（较低~高）",
      qualityWide: "宽松（低~高）",
      mjpegQuality: "MJPEG品质：",
      outputResolution: "编码后分辨率：",
      h264Profile: "H.264级别：",
      bitrateControl: "码流控制：",
      cbrStableRange: "码流波动范围：",
      cbrStableMin: "最小",
      cbrStableMax: "最大",
      bFramesMode: "B帧模式：",
      bFramesDisable: "禁用",
      bFramesIbp: "IBP",
      bFramesIbbp: "IBBP",
      // 提示文字
      tipCodec: "H.265的视频效果好于H.264，如果解码端支持H.265，尽量使用H.265",
      tipVbr: "VBR的情况下，比特率受\"画质范围\"调节；画质范围钳位QP值；<br>如果选择 \"较高~高\" 或者 \"高\"，会导致很高的实际比特率，设置的比特率无意义；<br>只有当画质范围为 \"较低~高\" 的情况下，比特率才有参考意义；",
      tipCbr: "\"Strong CBR\" 用于对接CATV系统，保证TS的码率稳定，如果选择\"Strong CBR\"，1080P情况下，比特率一般不要低于5000kbit/s，建议8000kbit/s",
      tipGop: "假设输入视频帧率为 n，n 的常见值为 60，50，30， 25；<br>关键帧间隔一般可以设置为  n * 2，常见值为 120，100，60，50；<br>编码帧率如果选择自动，那么 n大于30的时候，编码帧率为 n / 2，否则 编码帧率为 n"
    },

    // TS/组播设置
    ts: {
      tsUri: "TS流地址：",
      multicastIp: "组播IP：",
      multicastPort: "组播端口：",
      sapName: "组播SAP名：",
      tsVideoPid: "TS视频PID：",
      tsAudioPid: "TS音频PID：",
      tsTransportStreamId: "TS Transport Stream ID：",
      tsOriginalNetworkId: "TS Original Network ID：",
      tsPmtStartPid: "TS PMT Start PID：",
      tsStartPid: "TS Start PID：",
      tsTablesVersion: "TS Tables Version：",
      tsServiceId: "TS Service ID：",
      tsServiceName: "TS Service Name：",
      tsProviderName: "TS Provider Name：",
      tsPcrPeriod: "TS PCR Period(ms)：",
      conformSystemB: "Conform to System B (DVB)：",
      tsNullPacket: "TS空包：",
      noInsert: "不插入",
      insert12: "插入（1.2x）",
      insert13: "插入（1.3x）",
      insert15: "插入（1.5x）",
      insert20: "插入（2x）",
      insert25: "插入（2.5x）",
      tsTdt: "TS TDT：",
      // 提示文字
      tipMulticast: "组播地址也可以填入 广播 单播地址，系统会自动识别。",
      tipVlc: "如果VLC无法播放组播，请检查电脑是否有多块网卡，切换到其他网卡测试。",
      tipSap: "组播SAP名，可以在支持的设备查看，比如VLC的播放列表->本地网络。",
      tipAdvanced: "TS 的 高级设置，一般不用调节。",
      tipIptv: "当对接IPTV系统的时候，TS空包建议调整到 1.3x，设备会自动插入空包，保证码率稳定；<br>此设置仅对\"Strong CBR\" 模式有效。"
    },

    // MJPEG设置

    mjpeg: {

      jpgUri: "JPG图片地址：",

      mjpgUri: "MJPG流地址：",

      // Tips

      tipJpg: "JPG 是静态图片；MJPG 是动态图片",

      tipMjpg: "都可以直接在浏览器中打开查看"

    },


    // RTSP设置
    rtsp: {
      rtspUri: "RTSP流地址：",
      enableMulticast: "启用(组播)",
      enableTcpOnly: "启用(仅TCP)",
      multicastIp: "RTSP组播IP：",
      multicastPort: "RTSP组播端口：",
      // 提示文字
      tipEnable: "如果选择 启用，那么 实际传输用UDP还是TCP是由客户端决定的，比如VLC中可以勾选 \"RTP over RTSP(TCP)\" 设置走TCP。",
      tipTcpOnly: "选择 启用(仅TCP) ， 那么 设备会强制使用TCP方式。",
      tipUdp: "UDP 方式在某些网络环境下因为网络问题偶尔丢包，如果客户都支持，建议都设为TCP方式。",
      tipMulticast: "选择 启用(组播) 方式，那么 RTSP 组播端口，从设置的 \"RTSP组播端口\" 开始，会连续占用4个。"
    },

    // RTMP设置
    rtmp: {
      rtmpUri: "RTMP流地址：",
      publishUri0: "RTMP(S)/RTSP发布地址0：",
      publishUri1: "RTMP(S)/RTSP发布地址1：",
      publishUri2: "RTMP(S)/RTSP发布地址2：",
      mode: "RTMP 推流模式：",
      modeStandard: "Standard (Enhanced RTMP)",
      modeLegacy: "Legacy (CodecID 12)",
      // 提示文字
      tipPublish: "发布地址0~2，为推流地址，可以推送到 其他局域网或者公网的 RTMP/RTSP 服务器，支持H.265/H.264推流。",
      tipBuiltin: "本设备内置一个RTMP服务器，支持H.264/H.265 拉流；<br>RTMP流地址，如果 设置为\"/live/0\"，Potplayer可以打开 http://设备IP/live/0 来播放视频。",
      tipMode: "RTMP 推流模式，仅对 H.265 有效，同时影响 FLV 流；"
    },

    // SRT设置
    srt: {
      listenerUri: "SRT Listener 地址：",
      callerUri: "SRT Caller 地址：",
      // 提示文字
      tipListener: "SRT Listener 模式，为本地监听一个端口，播放器可以拉取流进行播放。<br>比如填写为 srt:// 0.0.0.0:9000 ；<br>那么VLC可以打开 \"srt://设备IP:9000\" 进行播放。<br>添加streamid的示例：<br>srt://0.0.0.0:9000?streamid=channel100<br>添加密码的示例，注意，密码最小为10位：<br>srt://0.0.0.0:9000?passphrase=0123456789<br>添加streamid和密码的示例：<br>srt://0.0.0.0:9000?streamid=channel100&passphrase=0123456789",
      tipCaller: "SRT Caller 模式，为把流推给其他服务器，比如：<br>srt://live.example.com:9000?streamid=channel100&latency=120&maxbw=8000000\"",
      tipParams: "本设备支持如下SRT参数，具体意义参见SRT协议：<br>streamid - 流标识符，用于多路复用<br>passphrase - 加密密码，SRT要求密码长度为10-79字符<br>pbkeylen - 加密密钥长度：16（AES-128）、24（AES-192）、32（AES-256）<br>latency - 延迟设置，单位毫秒（20-8000ms）<br>maxbw - 最大带宽限制，单位bytes/sec<br>rcvbuf - 接收缓冲区大小<br>sndbuf - 发送缓冲区大小<br>ipttl - IP TTL值<br>conntimeo - 连接超时时间（毫秒）"
    },

    // WebRTC设置
    webrtc: {
      previewTitle: "网页预览",
      previewNote: "（状态页低延迟预览）",
      whipTitle: "WHIP 推流",
      whipNote: "（推到服务器，可多人观看）",
      p2pTitle: "P2P 远程直连",
      p2pNote: "（跨外网穿透，可少量人远程观看）",
      optional: "可留空",
      preview: "网页预览",
      whipServer: "推流地址",
      whipToken: "Bearer 令牌",
      p2pServer: "信令服务器地址",
      p2pUuid: "设备 UUID",
      p2pToken: "P2P 授权令牌：",
      p2pAuthToken: "授权令牌",
      regenerate: "重新生成",
      // 提示文字
      tipPreview: "主流浏览器的 WebRTC 预览，视频支持 H.264编码，音频支持 Opus G.711 编码。<br>音频设置为Opus可以获得更好的效果，如果音频没有设置为Opus，则默认G.711 8K。",
      tipWhip: "WHIP 推流可以对接标准WHIP服务器，具体地址请拷贝服务器给出的地址。<br>Bearer 令牌 可以为空。",
      tipP2p: "P2P 服务器 启用之后，观看地址见状态页面<br>P2P 授权令牌 可以为空。",
      tipP2pNote: "复杂内网环境，P2P 可能连不通。"
    },

    // TRTC设置
    trtc: {
      roomId: "TRTC 房间号：",
      userId: "TRTC 用户名：",
      roomKey: "TRTC 房间Key：",
      userSig: "TRTC UserSig：",
      sdkAppId: "TRTC SDKAppID：",
      roomIdType: "TRTC 房间号类型：",
      roomIdNumber: "数字",
      roomIdString: "字符串",
      // 供模板使用的简短枚举名
      number: "数字",
      string: "字符串",
      // 提示文字
      tipTrtc: "给腾讯TRTC服务器推流，具体地址请拷贝服务器给出的地址。<br>腾讯TRTC服务器暂时只支持 H.264。"
    },

    alirtc: {
      roomId: "AliRTC 房间号：",
      userId: "AliRTC 用户ID：",
      userName: "AliRTC 用户名：",
      region: "AliRTC 区域：",
      token: "AliRTC Token：",
      tipAliRtcToken: "给阿里云 RTC 服务器推流，支持H.265/H.264。<br>可以直接填写服务方给的 Token，或者点击AliRTC Token在独立页面中通过AppID/AppKey 生成 Token。<br>如果 Token 为空，设备启动时会尝试用独立页面里保存的 AppID/AppKey 自动生成。<br>房间号、用户ID、用户名变更后，可能需要重新生成 token。"
    },

    alirtcTokenPage: {
      title: "AliRTC Token",
      roomId: "AliRTC 房间号：",
      userId: "AliRTC 用户ID：",
      userName: "AliRTC 用户名：",
      appId: "AliRTC AppID：",
      appKey: "AliRTC AppKey：",
      token: "AliRTC Token：",
      generate: "生成并保存 Token",
      appFieldsRequired: "AliRTC AppID、AppKey 不能为空！",
      identityRequired: "请先在当前码流输出设置里填写 AliRTC 房间号、用户ID、用户名！",
      generateSuccess: "AliRTC token 已生成并保存！",
      generateFailed: "AliRTC token 生成失败！",
      unavailable: "当前设备不支持 AliRTC。"
    },

    // HLS设置
    hls: {
      hlsTsUri: "HLS TS流地址：",
      hlsMp4Uri: "HLS MP4流地址：",
      hlsPushUri: "HLS PUSH URL：",
      hlsPushUrl: "HLS PUSH URL：",
      // 提示文字
      tipHls: "HLS TS / 和 HLS MP4 开启之后，本设备会根据高级设置中的，切片时间和切片数，在内存中缓冲数据。<br>一般切片时间和切片数都设为3，可以减少内存占用。",
      tipPush: "HLS 发布地址，用于推流给 youtube 等服务器。"
    },

    // MP4/FLV/其他设置
    other: {
      mp4Uri: "MP4流地址：",
      flvUri: "FLV流地址：",
      icecastUri: "ICECAST PUSH URL：",
      icecastPushUrl: "ICECAST PUSH URL：",
      shoutcastUri: "Shoutcast PUSH URL：",
      shoutcastPushUrl: "Shoutcast PUSH URL：",
      // 提示文字
      tipMp4: "MP4 流启用之后，可以直接在浏览器中打开播放。<br>FLV流，本设备支持H.265/H.264，但是VLC等播放器暂时只支持H.264。<br>ICECAST/Shoutcast  仅支持MP3，支持推流给音频服务器。",
      tipShoutcast: "Shoutcast 支持 v1 和 v2 版本；<br>示例如下:<br>http://password@shoutcast_server:8000<br>http://password@shoutcast_server:8000?sid=100<br>http://password@shoutcast_server:8000?icy-name=Stream&icy-genre=Pop<br>具体格式为：<br>http://密码@服务器IP:监听端口[?参数...] 格式；用户名可省略（默认 source）。<br>端口填服务器\"监听端口\"，设备会自动用源端口（监听端口+1）连接。<br>本软件支持如下参数：<br>sid：Shoutcast v2 流 ID（不填默认 1）。<br>icy-name：流名称（可选）。<br>icy-genre：流类型/风格（可选）。<br>icy-url：官网/页面地址（可选）。<br>icy-pub：是否公开，0/1（可选）。"
    },

    // 通用
    common: {
      save: "设 置",
      disabled: "禁用",
      enabled: "启用"
    },

    // 错误和成功消息
    messages: {
      success: "设置成功！",
      failed: "设置失败！",
      emptyError: "设置内容不能为空！",
      alirtcFieldsRequired: "启用 AliRTC 时，AppID、AppKey、房间号、用户ID、用户名不能为空！",
      alirtcIdentityRequired: "启用 AliRTC 时，房间号、用户ID、用户名不能为空！",
      trtcH264Only: "TRTC启用时，仅支持H.264类型编码，已同时修改",
      mp3Required: "请将音频设置的编码方式设置为MP3!",
      subStreamDisabled: "次码流设置已禁用",
      // 编码验证
      frameRateError: "编码帧率的值应是5-60间的整数！",
      gopError: "关键帧间隔(帧)的值应是5-300间的整数！",
      mjpegQualityError: "MJPEG品质的值应是10-99间的整数！",
      hlsBitrateWarning: "当比特率不在32~8000范围内时，HLS TS流/HLS MP4流/HLS PUSH流不可用，已为您同时禁用",
      trtcCodecWarning: "编码类型不是H.264时，TRTC功能不可用，已为您禁用",
      hlsBitrateError: "编码比特率不在32~8000范围内，HLS TS流/HLS MP4流/HLS PUSH流不可启用",
      // SRT验证
      srtListenerPortError: "SRT Listener 地址应是在1-65535内的整数！",
      srtListenerFormatError: "SRT Listener 地址格式不正确！",
      srtCallerFormatError: "SRT Caller 地址格式不正确！",
      srtPasswordLengthError: "SRT加密密码长度在10-32之间！",
      srtLatencyError: "SRT Latency的值应该是1-10000间的整数!",
      srtBandwidthError: "SRT bandwidth的值应该是0-102400间的整数!",
      // RTMP验证
      rtmpFormatError: "发布地址必须以rtmp://、rtmps://、rtsp://或rtmpt://开头",
      // HLS验证
      hlsFormatError: "HLS发布地址格式不正确！",
      // RTSP验证
      rtspMulticastIpError: "RTSP组播IP格式不正确！",
      rtspMulticastPortError: "RTSP组播端口应是在1-65535内的整数！",
      // TS验证
      multicastIpError: "组播IP格式不正确！",
      multicastPortError: "组播端口应是在1-65535内的整数！",
      tsTransportIdError: "TS Transport Stream ID的值应是1-65535间的整数！",
      tsNetworkIdError: "TS Original Network ID的值应是1-65535间的整数！",
      tsPmtPidError: "TS PMT Start PID的值应是32-8186间的整数！",
      tsStartPidError: "TS Start PID的值应是32-3840间的整数！",
      tsPidConflict: "TS Start PID和 TS PMT Start PID的值不能相同！",
      tsVersionError: "TS Tables Version的值应是0-31间的整数！",
      tsServiceIdError: "TS Service ID的值应该是1-65535间的整数!",
      tsVideoPidError: "TS视频PID的值应是16-8190间的整数！",
      tsAudioPidError: "TS音频PID的值应是16-8190间的整数！",
      tsPcrPeriodError: "TS PCR周期应是0-100间的整数（0=自动）！",
      tsVideoPidConflict: "TS视频PID和TS音频PID的值必须不一样！",
      tsAudioPmtConflict: "TS音频PID和TS PMT Start PID的值必须不一样！",
      tsVideoPmtConflict: "TS视频PID和TS PMT Start PID的值必须不一样！",
      // 其他验证
      icecastFormatError: "icecast发布地址格式不正确！",
      shoutcastFormatError: "shoutcast发布地址格式不正确！"
    }
  }
};
