wangfei
2024-10-15 68c6dda6a880f00e42c5cf427241f1a3ba89760c
新增英文翻译切换按钮
4个文件已修改
1个文件已添加
1302 ■■■■ 已修改文件
UI-Project/src/lang/en.js 858 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/lang/index.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/lang/py.js 300 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/layout/MainErpView.vue 139 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/LoginView.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/lang/en.js
@@ -1,300 +1,586 @@
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:'Ждем.',
  "northglassMESsystem": "NorthGlass MES System",
    login:{
        userErr:'Please enter account number',
        pwErr:'Please input a password',
        user:'Account number',
        password:'Password',
        login:'Log on',
        loginSuccessful:'Log on was successful!',
        register:'Register',
        namea:'Name cannot be empty',
        len:'The length cannot exceed 16',
        passnull:'Password cannot be empty',
        leng:'The password length cannot be less than 6 or more than 16',
        spwn:'Confirm password cannot be empty',
        depass:'The two passwords are not the same',
    },
    register:{
        registerSuccessful:'login was successful',
        newuserregister:'New user register',
        name:'Full name:',
        inputname:'Please enter your name',
        password:'Password:',
        pwErr:'Please input a password',
        passwordation:'Confirm password:',
        pwErration:'Please confirm password',
        registration:'Registration Confirm',
        false:'Cancel',
    },
    main:{
        connectErr:'The server connection is abnormal. Please try again later',
        titleFirst:"Welcome ",
        titleLast:' to use NorthGlass MES system!',
        quit:"Exit",
    },
    basicData:{
        laserprinting:'Laser printing machine ready status:',
        cuttingmachine:'Cutting machine ready status:',
        machine:'Online status of the loading table:',
        machineaa:'Manual state of the loading table:',
        selectproject:"Select project",
        startloading:'Start loading',
        stop:'Pause',
        yes:'Confirm',
        change:'Switch',
        projectnumber:'Project number',
        glasswidth:'Glass width',
        glassheight:'Glass height',
        coatingtypes:'Coating types',
        coatingtypesa:'Coating types:',
        quantity:'Quantity',
        quantitya:'Quantity:',
        thickness:'Thickness',
        thicknessa:'Thickness:',
        startstatus:'Start status',
        pass:'Pass',
        waiting:'Waiting',
        up:'Loading',
        finish:'Completed',
        project:'Project ',
        plselectproject:'Please select project',
        confirm:'Confirm',
        cancel:'Cancel',
        startfilm:'Whether start loading?',
        whetherpause:'Whether pause?',
        station:'Station',
        width:'Width',
        widtha:'Width:',
        height:'Height',
        heighta:'Height:',
        operate:'Operate',
        add:'Increase',
        delete:'Delete',
        addglass:'Add glass',
        selectwidth:'Please select width',
        selectheight:'Please select high',
        selectcoatingtypes:'Please select the coating types',
        selectthickness:'Please select thickness',
        selectquantity:'Please enter the quantity',
        pause:'The height of the second and fourth rows must be greater than 2700 in order to save!',
        pausea:'Please confirm the ready status of marking machine and cutting machine!',
        infonull:'Project number cannot be empty!',
        updatanull:'This project has not been saved to the loading list!',
        glassnull:'An error occurred while updating the glass status',
        deletemessage:'Do you want to delete this message?',
        layoutSequence:'Serial Number',
    },
    sorter:{
        gridnumber:'Grid number',
        glassnumber:'Glass number',
        width:'Width',
        height:'Height',
        startstatus:'Start status',
        disable:'Disabled',
        start:'Enabled',
        deficiencieste:'Report deficiencies',
        updown:'Artificial filming',
        operate:'Operate',
        prompt:'Prompt',
        information:'Is the missing information reported?',
        infor:'Whether to manually download this information?',
        yes:'Yes',
        cancel:'Cancel',
    },
    order:{
        dilapidation:'Breakage',
        takeaway:'Manual removal',
        takeon:'The arrangement is complete',
    },
    searchOrder:{
        cageinformation:'Sorter information',
        productionqueue:'Production queue',
        outputglassID:'Output glass ID',
        startposition:'Start position',
        targetlocation:'Target Position',
        trips:'Train number',
        number:'Serial Number',
        taskstatus:'Task state',
        filmenter:'Waiting for input glass',
        infilm:'In progress',
        endtask:'End task',
        completetask:'Complete the task',
        intoglassid:'Input glass ID',
        line:'Wire',
        Usage:'Usage rate',
        free:'Free(pieces)',
        addcage:'Add information on sorter',
        glassIDa:'Glass ID:',
        glassID:'Glass ID',
        inglassID:'Please enter the glass ID',
        pieceingrid:'The order of small pieces within the grid',
        pieceingrida:'The order of small pieces within the grid:',
        inpieceingrid:'Please enter the order of small pieces within the grid',
        cardnumber:'Process card number',
        cardnumbera:'Process card number:',
        incardnumber:'Please enter the process card number',
        typeglass:'Glass type',
        typeglassa:'Glass type:',
        intypeglass:'Please enter the glass type',
        width:'Width',
        widtha:'Width:',
        inwidth:'Please enter width',
        height:'Height',
        heighta:'Height:',
        inheight:'Please enter height',
        coatingtypes:'Coating types',
        thickness:'Thickness',
        thicknessa:'Thickness:',
        inthickness:'Please enter the thickness',
        layoutID:'Drawing ID of loading for tempering furnace',
        layoutIDa:'Drawing ID of loading for tempering furnace:',
        inlayoutID:'Please enter the drawing ID of loading for tempering furnace',
        picturesequence:'Drawing sequence of loading for tempering furnace',
        picturesequencea:'Drawing sequence of loading for tempering furnace:',
        inpicturesequence:'Please enter the drawing sequence of loading for tempering furnace',
        startstatus:'Start status',
        startstatusa:'Start status:',
        instartstatus:'Please enter the enabled status',
        glassgaps:'Glass gap',
        glassgapsa:'Glass gap:',
        inglassgaps:'Please enter the glass gap',
        sure:'Confirm',
        cancel:'Cancel',
        operate:'Operate',
        breakage:'Breakage',
        delete:'Delete',
        outfilm:'Output glass',
        cagetableID:'Sorter table ID',
        cagenumber:'Sorter number',
        gridnumber:'Grid number',
        gridnumbera:'Grid number:',
        grid:'Please enter a grid number',
        enable:'Enabled',
        disable:'Disabled',
        remainingwidth:'Remaining width',
        add:'Add',
        sheetID:'Tempered small piece information table ID',
        processcards:'Process card',
        processcardtype:'Process card glass type',
        acceptshorizontal:'Does tempering accept horizontal placement',
        xcoordinates:'x coordinate',
        ycoordinates:'Y coordinate',
        rotationangle:'Rotation angle (counterclockwise)',
        state:'Status',
        takeout:'Take away',
        deletemessage:'Do you want to delete this message?',
        prompt:'Prompt',
        yes:'Yes',
        accept:'Accept',
        noaccept:'Not accept',
        filmcomplete:'Glass output completed',
        waiting:'Waiting',
        broke:'Is this information damaged?',
        brokeb:'Do you need to delete the message?',
        outfil:'Whether the film is released or not?',
        inputid:'Please enter the glass ID',
        search:'Search',
        tabid:'Dali film cage details table ID',
        tid:'Device ID',
        tida:'Device ID:',
        fin:'Whether or not the task was completed?',
        sureadd:'Confirm the addition',
        sureadda:'Whether to confirm the addition?',
        zailong:'In a cage',
        rengongxp:'Artificial filming',
        up:'Previous',
        down:'Next',
        now:'The current page is displayed',
        tit:'data',
        temperingqueries:'Tempering queries',
        specifytempering:'Specify a furnace',
        specifyengineerid:'Specify the project',
        projectnumber:'Project number',
        layoutnumber:'Drawing number of loading for tempering furnace',
        numberglasses:'Number of glasses',
        specifytemperinga:'Whether to specify the tempering of this information?',
        temperedswitch:'Tempered switch',
        dutyinformation:'Duty information',
        process:'Process',
        team:'Team',
        basic:'equipment',
        makesure:'Confirm the save',
        // cancel:'取消',
        temperingtotal:'Number of tempering furnaces:',
        glasstotal:'Total number of glasses:',
    },
    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:'Станция разгрузки',
        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:'Высота',
        lowerbit:'Unloading station',
        shelfnumber:'Rack number',
        cardnumber:'Process card number',
        totalquantity:'Total quantity',
        beendropped:'Quantity of unloaded glass',
        state:'Status',
        devicenumber:'Equipment No.',
        startstatus:'Start status',
        enable:'Start',
        unenable:'Unstart',
        operate:'Operate',
        bindingshelves:'Assigned rack',
        clear:'Clear',
        workstation:'Station No.',
        shelfnumbera:'Rack number:',
        cardnumbera:'Process card number:',
        incardnumber:'Please select the process card number',
        clearglass:'Clear the glass on the shelf',
        sure:'Operate',
        cancel:'Cancel',
        glassinformation:'Glass information',
        glassID:'Glass ID',
        coatingtypes:'Coating types',
        thickness:'Thickness',
        width:'Width',
        height:'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,12 @@
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
@@ -29,60 +29,66 @@
              })
  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  = {
    '上片机': 'Стол загрузки',
    '上片': 'Верхняя часть',
    '掰片/识别': 'Разлом/идентификация',
    '卧式缓存': ' Горизонтальный буфер',
    '磨边前卧式缓存': 'Горизонтальный буфер перед шлифовкой',
    '下片卧式缓存': 'Горизонтальный буфер стекла разгрузки',
    '磨边(冷加工)': 'Шлифовать края (холодная обработка)',
    '1线磨边(冷加工)': 'Шлифовать края 1 линии (холодная обработка)',
    '2线磨边(冷加工)': 'Шлифовать края 2 линии (холодная обработка)',
    '大理片笼': 'Буферная система',
    '钢化': 'Закалка',
    '钢化前': 'Перед закалки',
    '钢化后': 'После закалки',
    '下片台': 'Стол разгрузки',
    '系统管理': 'Управление системой',
    '用户管理': 'Управление пользователем',
    '权限管理': 'Управление полномочиями',
    '角色管理': 'Управление ролью',
    '可视化系统': 'Визуальная система',
    '报工管理': 'Управление отчетностью',
    '仓储中心': 'Складской центр',
    '原片仓储': 'Склад сырья',
     };
  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  = {  
          '上片机': 'Стол загрузки',
          '掰片/识别': 'Разлом/идентификация',
          '卧式缓存': ' Горизонтальный буфер',
          '磨边前卧式缓存': 'Горизонтальный буфер перед шлифовкой',
          '下片卧式缓存': 'Горизонтальный буфер стекла разгрузки',
          '磨边(冷加工)': 'Шлифовать края (холодная обработка)',
          '1线磨边(冷加工)': 'Шлифовать края 1 линии (холодная обработка)',
          '2线磨边(冷加工)': 'Шлифовать края 2 линии (холодная обработка)',
          '大理片笼': 'Буферная система',
          '钢化': 'Закалка',
          '钢化前': 'Перед закалки',
          '钢化后': 'После закалки',
          '下片台': 'Стол разгрузки',
          '系统管理': 'Управление системой',
          '用户管理': 'Управление пользователем',
          '权限管理': 'Управление полномочиями',
          '角色管理': 'Управление ролью',
    '上片机': '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 +102,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 +158,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 +176,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
@@ -130,7 +130,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"