zhoushihao
2024-10-15 110ff41b225e47b736fea112c83955a107ead905
代码合并--新增英文翻译切换按钮
4个文件已修改
1个文件已添加
813 ■■■■ 已修改文件
UI-Project/src/lang/en.js 395 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/lang/index.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/lang/py.js 300 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/layout/MainErpView.vue 111 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/LoginView.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/lang/en.js
@@ -188,26 +188,47 @@
        waiting:'Ждем.',
    },
    workOrder:{
        glassID:'Стеклянный ID',
        height:'Высота',
        width:'Ширина',
        thickness:'Толщина',
        coatingtypes:'Типы покрытий',
        productionsequence:'Последовательность производства',
        cardnumber:'Номер карточки процесса',
        operate:'Операция',
        messagedamaged:'Повреждено ли сообщение?',
        prompt:'Подсказк',
        yes:'Да',
        cancel:'Отмена',
        takemessage:'Следует ли удалять сообщение?',
        breakage:'Повреждение',
        takeout:'Взять',
        glassID: 'Glass ID',
        height: 'Height',
        width: 'Width',
        thickness: 'Thickness',
        coatingtypes: 'Coating types',
        productionsequence: 'Production sequence',
        cardnumber: 'Process card number',
        operate: 'Operate',
        messagedamaged: 'Is this information damaged?',
        prompt: 'Prompt',
        yes: 'Yes',
        cancel: 'Cancel',
        takemessage: 'Do you need to delete the message?',
        breakage: 'Breakage',
        takeout: 'Take away',
        glasstype: 'Glass type',
        line: 'Wire',
        status: 'Status',
    },
    processCard:{
        intofurnace:'В печь',
        beforefurnace:'До печки.',
        outfurnace:'Окончено стекло из печи для закалки',
        intofurnace: 'Entering the furnace',
        beforefurnace: 'Before entering the furnace',
        outfurnace: 'Glass finished from tempering furnace',
        print: 'Take away the print',
        printing: 'print',
        projectnumber: 'Please enter the project number',
        inquire: 'Inquire',
        project: 'Project number',
        awayprocess: 'Take away the process',
        awayequipment: 'Take away the equipment',
        awayteam: 'Take away the crew',
        flowcard: 'Process card',
        layer: 'Layer number',
        temperinglayout: 'Heat number',
        temperingfeed: 'Preface',
        width: 'Width',
        height: 'Height',
        thickness: 'Thickness',
        glasstakeout: 'Glass take away list',
        layoutID: 'Drawing ID of loading for tempering furnace',
        glassID: 'Glass ID',
    },
    reportWork:{
        lowerbit:'Станция разгрузки',
@@ -237,66 +258,292 @@
        width:'Ширина',
        height:'Высота',
    },
    productStock:{
        addusers:'Добавьте пользователей.',
        username:'Имя пользователя.',
        usernamea:'Имя пользователя.:',
        inusername:'Введите имя пользователя',
        role:'Роль',
        rolea:'Роль:',
        inrole:'Выберите роль',
        test:'Тест',
        admin:'Администратор.',
        operate:'Операция',
        resetpassword:'Сбросить пароль',
        exit:'Редактор',
        delete:'Удал',
        prompt:'Подсказк',
        repassword:'Перезагрузка пользовательского пароля или нет?',
        yes:'Да',
        cancel:'Отмена',
        reusername:'Изменение пользователя',
        addusername:'Добавьте пользователей.',
        password:'Код:',
        sure:'подтверд',
        inpassword:'Введите пароль.',
        deusername:'Удаление пользователя или нет?',
        addusers: 'Add user',
        username: 'User name',
        usernamea: 'User name:',
        inusername: 'Enter one user name',
        role: 'Role',
        rolea: 'Role:',
        inrole: 'Please select a role',
        test: 'Test',
        admin: 'Administrator',
        operate: 'Operate',
        resetpassword: 'Reset password',
        exit: 'Edit',
        delete: 'Delete',
        prompt: 'Prompt',
        repassword: 'Do you want to reset the user password?',
        yes: 'Yes',
        cancel: 'Cancel',
        reusername: 'Modify Users',
        addusername: 'Add user',
        password: 'Password:',
        sure: 'Confirm',
        inpassword: 'Please input a password',
        deusername: 'Do you want to delete the user?',
    },
    customer:{
        addmenu:'Добавьте меню.',
        firstmenu:'Таблица меню первой степени',
        link:'Ссылк',
        linka:'Ссылк:',
        inlink:'Введите ссылку',
        sort:'Сортировк',
        sorta:'Сортировк:',
        insort:'Введите сортировку',
        operate:'Операция',
        exit:'Редактор',
        inmenu:'Введите меню',
        delete:'Удал',
        semenu:'Таблица меню второй степени',
        menu:'Меню.:',
        sure:'подтверд',
        cancel:'Отмена',
        exmene:'Изменение меню.',
        yes:'Да',
        demenu:'Удалить меню или нет?',
        prompt:'Подсказк',
        addmenua: 'Add secondary menus',
        addmenu: 'Add a first-level menu',
        firstmenu: 'First level menu bar',
        firstmenuname: 'The name of the first-level menu:',
        link: 'Link',
        inlink: 'Please enter the link',
        linka: 'Link:',
        sort: 'Sort',
        insort: 'Please enter sorting',
        sorta: 'Sort:',
        operate: 'Operate',
        exit: 'Edit',
        delete: 'Delete',
        semenu: 'Secondary menu bar',
        semenuname: 'Secondary menu name:',
        menu: 'Menu bar:',
        inmenu: 'Please enter a menu name',
        sure: 'Confirm',
        cancel: 'Cancel',
        exmene: 'Modify the first-level menu',
        exmenea: 'Modify the secondary menu',
        yes: 'Yes',
        demenu: 'Do you want to delete this menu?',
        prompt: 'Prompt',
    },
    delivery:{
        addrole:'Добавьте роли.',
        editrole:'Изменение роли.',
        role :'Роль',
        rolea :'Роль:',
        inrole :'Введите роли.',
        operate :'Операция',
        edit :'Редактор',
        delete :'Удал',
        sure :'подтверд',
        cancel :'Отмена',
        yes:'Да',
        derole :'Удалить персонаж или нет?',
        prompt:'Подсказк',
        addrole: 'Add Role',
        editrole: 'Modify role',
        role: 'Role',
        rolea: 'Role:',
        inrole: 'Please enter the role',
        operate: 'Operate',
        edit: 'Edit',
        delete: 'Delete',
        yes: 'Yes',
        sure: 'Confirm',
        cancel: 'Cancel',
        derole: 'Do you want to delete this role',
        prompt: 'Prompt',
        choice: 'Menu permissions:',
        inchoice: 'Please select Menu Permissions',
    },
    replenish: {
        patchManagement: 'Mesh management',
    },
    rework: {
        reworkManagement: 'Rework management',
        addRework: "Rework added ",
    },
    role: {
        id: 'ID',
        characterHomepage: 'Character Home',
    },
    user: {
        userId: 'User ID',
        userHomepage: 'User Home',
    },
    orderBasicData: {
        order: 'orders',
        orderType: 'The type of order',
    },
    machine: {
        basicId: 'Device number',
        basicName: 'The name of the device',
        basicCategory: 'The process in which it is located',
        tempering: 'Steel',
    },
    report: {
        productionReport: 'Production reports',
        workInProgressReport: 'WIP report',
    },
    productionBasicData: {
        basicDataQuery: 'Basic data query',
    },
    mainIngredient: {
        materialInformation: 'Material information',
    },
    mainIngredientStock: {
        materialName: 'The name of the item',
        createTime: 'Return date',
    },
    large: {
        time: 'The time of the break',
        number: 'Order number',
        jobnumber: 'Job number',
        productionnumber: 'The production order number',
        cardnumber: 'Process card number',
        projectname: 'The name of the project',
        batch: 'batch',
        detailID: 'Detail ID',
        building: 'Building No',
        serialnumber: 'Order serial number',
        productname: 'Product name',
        serial: 'Process validation number',
        slicemarker: 'Frame marker (position)',
        numberpatches: 'Number of patches',
        width: 'Width',
        height: 'Height',
        shape: 'Shape',
        responsibleprocess: 'Responsible process',
        process: 'This process',
        numberfractions: 'The number of unfilled fractions',
        breakreason: 'The reason for the break',
        breaktype: 'Sub-break type',
        responsiblepersonnel: 'Responsible Personnel',
        responsiblequipment: 'Responsible Equipment',
        responsibleteam: 'Responsible team',
        area: 'Sub-broken area',
        inspector: 'Quality inspector',
        operate: 'Operate',
        mes: 'Detail',
        projectnumber: 'The project order number',
        brokeno: 'The report is broken and not filled',
        close: 'Shut down',
        orderId: 'Order ID',
        customerName: 'The name of the customer',
        project: 'The name of the project',
        are: 'are',
        quantity: 'quantity',
        warehousing: 'State',
        deliveryDate: 'Delivery time',
        notstocked: 'Not yet in stock',
        inboundstatus: 'Partial inventory status',
        allstatus: 'All in stock status',
        completedquantity: 'Completed quantity',
        scrapquantity: 'Scrap Quantity',
        method: 'Processing method',
        innumber: 'Quantity already entered',
        productstatus: 'Production status',
        right: 'normal',
        stop: 'termination',
        inquire: 'query',
        starttime: 'Start Time',
        endtime: 'End Time',
        loading: 'In the process of uploading:',
    },
    reportmanage: {
        productiontime: 'production time',
        starttime: 'Start Time',
        endtime: 'End Time',
        ctype: 'Please select type',
        cstate: 'Please select the status',
        cprocess: 'Please select the process',
        all: 'All',
        completed: 'Completed',
        broke: 'Damaged',
        takeout: 'Takeout',
        dreportwork: 'Unreported work',
        pendingwork: 'Pending job application',
        reportwork: 'Reported work',
        incise: 'slicing',
        edging: 'edging',
        steel: 'toughened',
        inquire: 'query',
        signingwork: 'Reporting for work',
        reporteam: 'Report work team',
        reportingequipment: 'Reporting equipment',
        line: 'line',
        process: 'production processes',
        glassID: 'Glass ID',
        projectnumber: 'Project number',
        layoutID: 'Tempered layout ID',
        type: 'type',
        state: 'state',
        processcards: 'Flow Card',
        number: 'Serial Number',
        layer: 'storey',
        typebreakage: 'Damage type',
        ptypebreakage: ' Please select the type of damage',
        causebreakage: 'Reason for damage',
        pcausebreakage: 'Please select the reason for the damage',
        responsibleprocess: 'Responsibility Process',
        responsiblepersonnel: 'Responsible personnel',
        presponsiblepersonnel: 'Please enter the responsible personnel',
        responsibleteam: 'Responsible team',
        presponsibleteam: 'Please select the responsible team',
        responsibleequipment: 'Responsible equipment',
        presponsibleequipment: 'Please select the responsible device',
        remark: 'notes',
        premark: 'Please enter a note',
    },
    film: {
        mes: 'Original film storage details',
        warehousing: 'store',
        operate: 'Operate',
        exit: 'Edit',
        delete: 'Delete',
        outbound: 'Outbound',
        deviceid: 'device ID',
        slot: 'Grid number',
        enablestatea: 'Enable tagging',
        disable: 'Disable',
        start: 'Enable',
        startslot: 'Start workstation',
        endslot: 'Target workstation',
        slotid: 'Grid ID',
        width: 'Width',
        widtha: 'Width:',
        inwidth: 'Please enter width',
        height: 'Height',
        inheight: 'Please enter height',
        heighta: 'Height:',
        thickness: 'Thickness',
        inthickness: 'Please enter thickness',
        thicknessa: 'Thickness:',
        films: 'Films',
        infilms: 'Please enter films',
        filmsa: 'Films:',
        createtime: 'Creation time',
        remainquantity: 'Remaining Quantity',
        thickremainquantity: 'Remaining quantity of original film (sheets):',
        inquantity: 'Please enter the quantity',
        quantitya: 'Number:',
        enableid: 'Task ID',
        originateslot: 'Starting grid',
        patternquantity: 'Number',
        enabletype: 'Task Type',
        enablestate: 'Workstation status',
        finish: 'Completed',
        unfinish: 'Incomplete',
        dedelete: 'Do you want to delete this content?',
        dedisable: 'Do you want to disable this content?',
        deoutbound: 'Whether to release the content of this item from the warehouse?',
        selectwarehousing: 'Please select the lifting position',
        inwarehousing: 'Lifting position:',
        warehousing1: 'Lifting position 1',
        warehousing2: 'Lifting position 2',
        starttime: 'Start Time',
        endtime: 'End Time',
        taskstatus: 'Status',
        built: 'newly built',
        execution: 'In progress',
        tasktype: 'Task Type',
        stocke: 'store',
        dispatch: 'dispatch',
        inquire: 'query',
        station: 'station',
    },
    Mounting: {
        previewproject: 'Select Preview Project',
        loadinglinea: 'Upper film line',
        loadingline: 'Upper film line:',
        inloadingline: 'Please select the upper film line',
        oneloadingline: 'Line 1 on film',
        twoloadingline: 'Line 2 on film',
        waiting: 'Waiting',
        setparameters: 'Set parameters',
        project: 'Project number',
        projecta: 'Project number:',
        width: 'Width',
        height: 'Height',
        thickness: 'Thickness',
        projectnumber: 'Project original piece number',
        state: 'state',
        createtime: 'Creation time',
        all: 'Select All',
    }
  }
UI-Project/src/lang/index.js
@@ -1,10 +1,11 @@
import { createI18n}  from 'vue-i18n'
import zh from "./zh"
import py from "./py"
import en from "./en"
let messages = {
    zh:zh,
    py: py,
    en: en
}
UI-Project/src/lang/py.js
New file
@@ -0,0 +1,300 @@
export default {
    "northglassMESsystem": 'Система "NorthGlass MES"',
    login: {
        userErr: 'Введите номер счета.',
        pwErr: 'Введите пароль.',
        user: 'Аккаунт',
        password: 'Код',
        login: 'Залогин',
        loginSuccessful: 'Вход в систему выполнен успешно!',
        register: 'Зарегистрирова',
        namea: 'Имя не может быть пустым',
        len: 'Длина не должна превышать 16',
        passnull: 'Пароль не может быть пустым',
        leng: 'Длина пароля не должна быть меньше 6 или больше 16.',
        spwn: 'Пароль подтверждения не может быть пустым',
        depass: 'Два разных пароля.',
    },
    register: {
        registerSuccessful: 'Регистрация успешно',
        newuserregister: 'Новый реестр пользователей',
        name: 'Имя:',
        inputname: 'Введите имя',
        password: 'Код:',
        pwErr: 'Введите пароль.',
        passwordation: 'Подтвердите пароль:',
        pwErration: 'Пожалуйста, подтвертите пароль',
        registration: 'Подтверждение о регистрации',
        false: 'Отмена',
    },
    main: {
        connectErr: 'Необычное подключение к серверу, попробуйте позже',
        titleFirst: "Добро пожаловать ",
        titleLast: ' в систему NorthGlass MES!',
        quit: "Выход",
    },
    basicData: {
        deletemessage: 'Удалить эту информацию или нет?',
        laserprinting: 'Машина лазерной маркировки готова:',
        cuttingmachine: 'Машина для резки готова:',
        machine: 'Состояние станок загрузки в режиме онлайн:',
        machineaa: 'Ручное состояние станок загрузки:',
        selectproject: "Выберите проект",
        startloading: 'Начало загрузки',
        stop: 'Пауза',
        yes: 'подтверд',
        change: 'переключа',
        projectnumber: 'Номер проекта',
        glasswidth: 'Ширина стекла',
        glassheight: 'Высота стекла',
        coatingtypes: 'Типы покрытий',
        coatingtypesa: 'Типы покрытий:',
        quantity: 'Количество',
        quantitya: 'Количество:',
        thickness: 'Толщина',
        thicknessa: 'Толщина:',
        startstatus: 'Статус начала операции',
        pass: 'Через',
        waiting: 'Ждем.',
        up: 'Загрузка',
        finish: 'Завершено',
        project: 'инженерия',
        plselectproject: 'Пожалуйста, выберите проект.',
        confirm: 'подтверд',
        cancel: 'Отмена',
        startfilm: 'Начинать или нет?',
        whetherpause: 'Пауза или нет?',
        station: 'Рабочее место',
        width: 'Ширина',
        widtha: 'Ширина:',
        height: 'Высота',
        heighta: 'Высота:',
        operate: 'Операция',
        add: 'Добавля',
        delete: 'Удал',
        addglass: 'Добавить стекло',
        selectwidth: 'Выбирите ширину',
        selectheight: 'Выбирите высоту',
        selectcoatingtypes: 'Выберите типы покрытий',
        selectthickness: 'Выберите толщину',
        selectquantity: 'Введите кольчество.',
        pause: 'Вторая и четвертая строки должны быть выше 2700 для сохранения!',
        pausea: 'Пожалуйста, убедитесь, что маркировочная и режущая машины готовы!',
        infonull: 'Номер проекта не может быть пустым!',
        updatanull: 'Проект не сохранились на листе загрузки!',
        glassnull: 'Ошибка при обновлении стекла',
    },
    sorter: {
        gridnumber: 'Ячеек сеткла',
        glassnumber: 'Номер стакла',
        width: 'Ширина',
        height: 'Высота',
        startstatus: 'Статус начала операции',
        disable: 'Отключ',
        start: 'Начало',
        deficiencieste: 'Недостатки в отчетности',
        operate: 'Операция',
        prompt: 'Подсказк',
        information: 'Следует ли сообщать недостающую информацию?',
        yes: 'Да',
        cancel: 'Отмена',
    },
    order: {
        dilapidation: 'Повреждение',
        Takeaway: 'Взять вручную',
    },
    searchOrder: {
        cageinformation: 'Информация буфера',
        productionqueue: 'Производственная очередь',
        outputglassID: 'Выходное стекло ID',
        startposition: 'Занять позиции',
        targetlocation: 'Позиция цели',
        trips: '№ поезда',
        number: 'Серийн номер',
        taskstatus: 'Состояние задачи',
        filmenter: 'Ожидание стеклянной вход',
        infilm: 'В настоящее время',
        endtask: 'Задача на конец',
        completetask: 'Выполнение задания',
        intoglassid: 'Входной стеклянный ID',
        line: 'Линия',
        Usage: 'Скорость использования',
        free: 'Бесплатно (ячеек)',
        addcage: 'Добавить информацию о буфере',
        glassIDa: 'Стеклянный ID:',
        glassID: 'Стеклянный ID',
        inglassID: 'Введите стекло ID',
        pieceingrid: 'Порядок расположения маленьких стеклянных пластин в клетке',
        pieceingrida: 'Порядок расположения маленьких стеклянных пластин в клетке:',
        inpieceingrid: 'Введите порядок расположения стеклянных листов в ячееке',
        cardnumber: 'Номер карточки процесса',
        cardnumbera: 'Номер карточки процесса:',
        incardnumber: 'Введите номер процесса .',
        typeglass: 'Тип стекла',
        typeglassa: 'Тип стекла:',
        intypeglass: 'Введите тип стекла',
        coatingtypes: 'Типы покрытий',
        width: 'Ширина',
        widtha: 'Ширина:',
        inwidth: 'Введите ширину',
        height: 'Высота',
        heighta: 'Высота:',
        inheight: 'Введите высоту',
        thickness: 'Толщина',
        thicknessa: 'Толщина:',
        inthickness: 'Введите толщину.',
        layoutID: 'Чертеж ID загрузки печи для закалки',
        layoutIDa: 'Чертеж ID загрузки печи для закалки:',
        inlayoutID: 'Введите чертеж закалки ID',
        picturesequence: 'Чертеж серийн номер загрузки печи для закалки',
        picturesequencea: 'Чертеж серийн номер загрузки печи для закалки:',
        inpicturesequence: 'Введите порядок чертежи закалки стекла.',
        startstatus: 'Статус начала операции',
        startstatusa: 'Статус начала операции:',
        instartstatus: 'Введите состояние активации',
        glassgaps: 'Стеклянный зазор',
        glassgapsa: 'Стеклянный зазор:',
        inglassgaps: 'Введите стекло зазор',
        sure: 'подтверд',
        cancel: 'Отмена',
        operate: 'Операция',
        breakage: 'Повреждение',
        delete: 'Удал',
        outfilm: 'Выпуск стекла',
        cagetableID: 'ID буферной таблицы',
        cagenumber: 'Буфер номера',
        gridnumber: 'Ячеек сеткла',
        enable: 'Начало',
        disable: 'Отключ',
        remainingwidth: 'Остаточная ширина',
        add: 'Добавля',
        sheetID: 'Закалка маленький стеклянный ID таблицы информации',
        processcards: 'Карточка процесса',
        processcardtype: 'Тип стекла карточки процесса',
        acceptshorizontal: 'Умеренное принятие горизонтали',
        xcoordinates: 'X-координаты',
        ycoordinates: 'Y-координаты',
        rotationangle: 'Угол вращения (против часовой стрелки)',
        state: 'Состояние',
        takeout: 'Взять',
        deletemessage: 'Удалить эту информацию или нет?',
        prompt: 'Подсказк',
        yes: 'Да',
        accept: 'Принять',
        noaccept: 'Не принимать',
        filmcomplete: 'Стекло готово',
        waiting: 'Ждем.',
    },
    workOrder: {
        glassID: 'Стеклянный ID',
        height: 'Высота',
        width: 'Ширина',
        thickness: 'Толщина',
        coatingtypes: 'Типы покрытий',
        productionsequence: 'Последовательность производства',
        cardnumber: 'Номер карточки процесса',
        operate: 'Операция',
        messagedamaged: 'Повреждено ли сообщение?',
        prompt: 'Подсказк',
        yes: 'Да',
        cancel: 'Отмена',
        takemessage: 'Следует ли удалять сообщение?',
        breakage: 'Повреждение',
        takeout: 'Взять',
    },
    processCard: {
        intofurnace: 'В печь',
        beforefurnace: 'До печки.',
        outfurnace: 'Окончено стекло из печи для закалки',
    },
    reportWork: {
        lowerbit: 'Станция разгрузки',
        shelfnumber: 'Номер стойки регистрации',
        cardnumber: 'Номер карточки процесса',
        totalquantity: 'Общее количество',
        beendropped: 'Количество стекла разгрузки',
        state: 'Состояние',
        devicenumber: 'Номер оборудования.',
        startstatus: 'Статус начала операции',
        enable: 'Начало',
        unenable: 'Не начат',
        operate: 'Операция',
        bindingshelves: 'Назначенная стеллажка',
        clear: 'Чисто.',
        workstation: 'Станция номер',
        cardnumbera: 'Номер карточки процесса:',
        incardnumber: 'Пожалуйста, выберите номер программы',
        clearglass: 'Очистить стекло с полки',
        sure: 'подтверд',
        cancel: 'Отмена',
        glassinformation: 'Информация стекла',
        glassID: 'Стеклянный ID',
        coatingtypes: 'Типы покрытий',
        thickness: 'Толщина',
        width: 'Ширина',
        height: 'Высота',
    },
    productStock: {
        addusers: 'Добавьте пользователей.',
        username: 'Имя пользователя.',
        usernamea: 'Имя пользователя.:',
        inusername: 'Введите имя пользователя',
        role: 'Роль',
        rolea: 'Роль:',
        inrole: 'Выберите роль',
        test: 'Тест',
        admin: 'Администратор.',
        operate: 'Операция',
        resetpassword: 'Сбросить пароль',
        exit: 'Редактор',
        delete: 'Удал',
        prompt: 'Подсказк',
        repassword: 'Перезагрузка пользовательского пароля или нет?',
        yes: 'Да',
        cancel: 'Отмена',
        reusername: 'Изменение пользователя',
        addusername: 'Добавьте пользователей.',
        password: 'Код:',
        sure: 'подтверд',
        inpassword: 'Введите пароль.',
        deusername: 'Удаление пользователя или нет?',
    },
    customer: {
        addmenu: 'Добавьте меню.',
        firstmenu: 'Таблица меню первой степени',
        link: 'Ссылк',
        linka: 'Ссылк:',
        inlink: 'Введите ссылку',
        sort: 'Сортировк',
        sorta: 'Сортировк:',
        insort: 'Введите сортировку',
        operate: 'Операция',
        exit: 'Редактор',
        inmenu: 'Введите меню',
        delete: 'Удал',
        semenu: 'Таблица меню второй степени',
        menu: 'Меню.:',
        sure: 'подтверд',
        cancel: 'Отмена',
        exmene: 'Изменение меню.',
        yes: 'Да',
        demenu: 'Удалить меню или нет?',
        prompt: 'Подсказк',
    },
    delivery: {
        addrole: 'Добавьте роли.',
        editrole: 'Изменение роли.',
        role: 'Роль',
        rolea: 'Роль:',
        inrole: 'Введите роли.',
        operate: 'Операция',
        edit: 'Редактор',
        delete: 'Удал',
        sure: 'подтверд',
        cancel: 'Отмена',
        yes: 'Да',
        derole: 'Удалить персонаж или нет?',
        prompt: 'Подсказк',
    },
}
UI-Project/src/layout/MainErpView.vue
@@ -3,10 +3,10 @@
import userInfo from '@/stores/userInfo'
import request from '@/utils/request'
import {ElMessage} from 'element-plus'
import {ref, watch, onMounted } from 'vue'
import deepClone from '@/utils/deepClone'
import {ref, watch} from 'vue'
import { useRouter } from 'vue-router';  
import { useI18n } from 'vue-i18n'
  const { t } = useI18n()
  let language = ref(localStorage.getItem('lang') || 'zh')
const store = userInfo()
@@ -29,44 +29,12 @@
              })
  router.push('/login')  
}
// const quit = async () => {
//   try  {
//       store.$patch({user: null})
//     const response = await request.post('/loadGlass/sys/user/logout')
//     if (response.code === 200) {
//         console.log('登出成功');
//       } else {
//         // 处理错误情况
//         console.error('登出失败', response);
//       }
// }
// catch (error) {
//     // 处理错误
//     console.error(error);
//   }
// }
// store.createWebSocket();
// function quit() {
//   userStore.$patch({
//     user: null,
//   })
//   // router.push('/login')
//   request.get("/loadGlass/sys/user/login").then((res) => {
//     if (res.code === 200) {
//     ElMessage.success(res.msg);
//      console.log(res.data);
//     } else {
//     ElMessage.warning(res.msg);
//     // router.push("/login");
//     }
//    });
// }
  function replaceChineseWithEnglish(menuData) {  
      // 定义中英文对照关系对象
  // 定义中俄文对照关系对象
       const translation  = {  
          '上片机': 'Стол загрузки',  
    '上片': 'Верхняя часть',
          '掰片/识别': 'Разлом/идентификация',  
          '卧式缓存': ' Горизонтальный буфер',  
          '磨边前卧式缓存': 'Горизонтальный буфер перед шлифовкой',  
@@ -83,6 +51,46 @@
          '用户管理': 'Управление пользователем',  
          '权限管理': 'Управление полномочиями',  
          '角色管理': 'Управление ролью',  
    '可视化系统': 'Визуальная система',
    '报工管理': 'Управление отчетностью',
    '仓储中心': 'Складской центр',
    '原片仓储': 'Склад сырья',
  };
  menuData.forEach(menu => {
    menu.menuName = translation[menu.menuName] || menu.menuName;
    // if (menu.children) {
    menu.children && menu.children.forEach(submenu => {
      submenu.menuName = translation[submenu.menuName] || submenu.menuName;
    });
    // }
  });
}
function replaceChineseWithRussian(menuData) {
  // 定义中英文对照关系对象
  const translation = {
    '上片机': 'Loading Machine',
    '上片': 'Start showing a movie',
    '掰片/识别': 'Breaking /Identification',
    '卧式缓存': 'Horizontal cache',
    '磨边前卧式缓存': 'Horizontal buffer before edge grinding',
    '下片卧式缓存': 'Offline horizontal cache',
    '磨边(冷加工)': 'Grinding edge (cold processing)',
    '1线磨边(冷加工)': '1-line edge grinding (cold processing)',
    '2线磨边(冷加工)': '2-line edge grinding (cold processing)',
    '大理片笼': 'Dali slice cage',
    '钢化': 'Toughened',
    '钢化前': 'Before Tempering',
    '钢化后': 'After Tempering',
    '下片台': 'Next Stage',
    '系统管理': 'System Management',
    '用户管理': 'User Management',
    '权限管理': 'Rights Management',
    '角色管理': 'Roles',
    '可视化系统': 'visualization system',
    '报工管理': 'Job reporting management',
    '仓储中心': 'Storage Center',
    '原片仓储': 'Original film storage',
     };  
  menuData.forEach(menu => {  
    menu.menuName = translation[menu.menuName] || menu.menuName;  
@@ -96,32 +104,15 @@
//提取菜单模块列表
let menuList = $ref([])
// onMounted(async () => {
//   try {
//     const res = await request.get('/loadGlass/sys/menu/getMenuTree'); // 假设 request.get 返回 Promise
//     if (res.code == 200) {
//       // 使用 value 属性来修改 ref 引用的值
//       menuList.value = deepClone(res.data);
//       const language = $i18n.locale;
//       if (language === 'en') {
//         replaceChineseWithEnglish(menuList.value); // 传入 ref 的 value
//       }
//       console.log(res.data.token); // 如果 res.data 中有 token 的话
//     } else {
//       ElMessage.warning(res.msg);
//       router.push('/login');
//     }
//   } catch (error) {
//     // 处理请求错误
//     console.error('获取菜单列表时出错:', error);
//   }
// });
request.get('/loadGlass/sys/menu/getMenuTree').then((res) => {
  if (res.code == 200) {
    menuList = res.data
    console.log(language.value)
    // translateMenu(menuList.value, language.value);
      if (language.value === 'en') {
      replaceChineseWithRussian(menuList);
    }
    if (language.value === 'py') {
        replaceChineseWithEnglish(menuList);
      }
  } else {
@@ -169,7 +160,7 @@
      <el-header>
        <div style="height: 100%;width: 100%;display: flex;background-color: #fff;">
          <img src="../assets/northGlass.ico"
               alt=""
               alt="" @click="toggleCollapse"
               style="max-width: 100%;max-height: 100%">
          <h3 style="margin: 1rem  ;font-weight: bold;width: 33vw;"> {{ $t('main.titleFirst') }}{{ userName }}{{ $t('main.titleLast') }}</h3>
          <span style="height: 70%;width: 78vw;margin-top: 1rem;">
@@ -187,11 +178,11 @@
                <SwitchButton size=""/>{{ $t('main.quit') }}
              </el-icon>
            </el-button>
            <div class="header-left">
            <!-- <div class="header-left">
              <el-button @click="toggleCollapse" style="height: 30px;">  
               <el-icon><Expand /></el-icon>
              </el-button>  
          </div>
          </div> -->
          </span>
        </div>
      </el-header>
UI-Project/src/views/LoginView.vue
@@ -6,6 +6,7 @@
import request from '@/utils/request'
import userInfo from '@/stores/userInfo'
import { useI18n } from 'vue-i18n'
const store = userInfo()
let ruleFormRef = ref<FormInstance>()
const router = useRouter()
@@ -130,7 +131,8 @@
            placeholder=" "
            style="float: right;width: 9rem">
          <el-option value="zh"  label="中文" />
          <el-option value="en"  label="Русский язык" />
          <el-option value="py" label="Русский язык"/>
          <el-option value="en" label="English"/>
        </el-select>
        <el-form @submit.native.prevent
                 ref="ruleFormRef"