Cách dịch các widget tìm kiếm và lọc động của WooCommerce mà không gây giật lag trang 

Cách dịch các widget tìm kiếm và lọc động của WooCommerce mà không gây giật lag trang
Mục lục

Các widget tìm kiếm và lọc động của WooCommerce rất cần thiết để giúp người mua hàng nhanh chóng tìm thấy sản phẩm, đặc biệt là trên các cửa hàng có danh mục sản phẩm lớn và đa ngôn ngữ. Tuy nhiên, việc dịch các truy vấn tìm kiếm AJAX trực tiếp, thuộc tính sản phẩm và bộ lọc danh mục có thể gây ra độ trễ, trả về kết quả không đầy đủ hoặc thậm chí làm hỏng chức năng lọc khi các yêu cầu dịch kích hoạt thêm các truy vấn cơ sở dữ liệu.

Trải nghiệm tìm kiếm đa ngôn ngữ nhanh chóng đòi hỏi nhiều hơn là chỉ dịch nội dung sản phẩm hiển thị. Trong hướng dẫn này, chúng ta sẽ khám phá những thách thức chính trong việc dịch thuật, giải thích lý do tại sao tìm kiếm đa ngôn ngữ có thể gây ra hiện tượng chậm trang và chỉ ra cách xây dựng kiến ​​trúc nhanh hơn cho chức năng tìm kiếm và bộ lọc của WooCommerce. 

Vì sao tìm kiếm dịch thuật gây ra hiện tượng tải trang chậm?

Cách dịch các widget tìm kiếm và lọc động của WooCommerce mà không gây giật lag trang

Chức năng tìm kiếm đa ngôn ngữ trong WooCommerce có thể trở nên chậm khi mỗi thao tác tìm kiếm hoặc lọc yêu cầu máy chủ thực hiện nhiều thao tác trước khi trả về kết quả. Hệ thống càng cần xử lý nhiều yêu cầu và dữ liệu, người mua càng phải chờ lâu hơn để nhận được kết quả. Một số yếu tố có thể làm tăng thời gian xử lý tìm kiếm và lọc đa ngôn ngữ:

  • Dịch lặp lại: Việc dịch đi dịch lại cùng một cụm từ tìm kiếm sẽ làm tăng thêm quá trình xử lý không cần thiết, đặc biệt khi người mua hàng thực hiện các tìm kiếm tương tự hoặc truy cập lại các truy vấn sản phẩm phổ biến.
  • Các yêu cầu AJAX thường xuyên: Các tiện ích tìm kiếm động có thể gửi yêu cầu mới khi người mua hàng nhập hoặc thay đổi bộ lọc. Số lượng yêu cầu lớn trong thời gian ngắn có thể làm tăng tải trọng máy chủ và ảnh hưởng đến thời gian phản hồi.
  • Danh mục sản phẩm lớn: Các cửa hàng có hàng nghìn sản phẩm cần nhiều dữ liệu hơn để tìm kiếm và lọc. Việc kết hợp tìm kiếm từ khóa với danh mục, thuộc tính và các điều kiện khác có thể khiến mỗi yêu cầu trở nên phức tạp hơn.

Hiểu rõ các yếu tố hiệu suất này giúp xác định lý do tại sao tìm kiếm đa ngôn ngữ có thể trở nên chậm và cần tối ưu hóa những gì trước khi giải quyết các thách thức dịch thuật cụ thể.

Những thách thức trong việc dịch thuật tìm kiếm và bộ lọc của WooCommerce

Cách dịch các widget tìm kiếm và lọc động của WooCommerce mà không gây giật lag trang

Việc dịch các tiện ích tìm kiếm và lọc của WooCommerce có thể phức tạp hơn so với việc dịch nội dung sản phẩm tĩnh. Bởi vì các tính năng này thường dựa vào các yêu cầu AJAX, thuộc tính sản phẩm, danh mục và truy vấn cơ sở dữ liệu, ngay cả những sai sót nhỏ trong bản dịch cũng có thể ảnh hưởng đến kết quả mà người mua hàng nhìn thấy. 

Kết quả tìm kiếm động bị lỗi

Tìm kiếm động cho phép người mua hàng xem kết quả sản phẩm ngay khi họ nhập từ khóa mà không cần tải lại toàn bộ trang. Trong một cửa hàng đa ngôn ngữ, vấn đề có thể xảy ra khi yêu cầu tìm kiếm và dữ liệu sản phẩm trả về không sử dụng cùng một ngữ cảnh ngôn ngữ.

Ví dụ, một người mua sắm tìm kiếm từ khóa “chaussures” trên phiên bản tiếng Pháp của một cửa hàng có thể nhận được kết quả không đầy đủ, không liên quan hoặc trống nếu hệ thống tìm kiếm vẫn xử lý truy vấn dựa trên dữ liệu sản phẩm bằng ngôn ngữ gốc. Tiện ích tìm kiếm cũng có thể ngừng cập nhật chính xác khi yêu cầu đã dịch không được xử lý đúng cách.

Thiếu thuộc tính sản phẩm đã dịch

Các bộ lọc trong WooCommerce thường dựa vào các thuộc tính sản phẩm như kích thước, màu sắc, chất liệu hoặc thương hiệu. Việc chỉ dịch tiêu đề và mô tả sản phẩm là chưa đủ nếu các thuộc tính này vẫn chưa được dịch hoặc không được liên kết chính xác với phiên bản đã dịch của chúng.

Ví dụ, bộ lọc có thể hiển thị “Giày dép” bằng tiếng Anh trong khi phần còn lại của cửa hàng tiếng Pháp sử dụng “Chaussures”. Nếu thuộc tính không được ánh xạ chính xác giữa các ngôn ngữ, người mua hàng có thể thấy nhãn bộ lọc không nhất quán hoặc không tìm thấy sản phẩm khi chọn thuộc tính đã được dịch. Mối quan hệ thuộc tính cơ bản phải được giữ nguyên để các tùy chọn bộ lọc đã dịch tiếp tục trỏ đến đúng sản phẩm.

Bộ lọc đa chiều và sự không khớp danh mục

Bộ lọc đa tiêu chí cho phép người mua hàng thu hẹp phạm vi sản phẩm bằng cách kết hợp các danh mục, thuộc tính, phạm vi giá, thương hiệu và các tiêu chí khác. Trong một cửa hàng WooCommerce đa ngôn ngữ, các bộ lọc này phải được kết nối với hệ thống phân loại và giá trị thuộc tính đã được dịch chính xác.

Lỗi không khớp có thể xảy ra khi nhãn bộ lọc đã dịch hiển thị chính xác nhưng vẫn trỏ đến danh mục hoặc thuật ngữ phân loại sai. Ví dụ, người mua hàng có thể chọn một danh mục đã dịch như “Giày nam”, nhưng bộ lọc có thể trả về kết quả không đầy đủ hoặc số lượng sản phẩm không chính xác nếu thuật ngữ đã dịch không được liên kết với các sản phẩm tương ứng.

Những vấn đề này càng trở nên rõ rệt hơn khi người mua hàng kết hợp nhiều bộ lọc. Mỗi lựa chọn cần tham chiếu đến hệ thống phân loại đã được dịch chính xác trong khi vẫn duy trì mối quan hệ sản phẩm ban đầu. Nếu không, việc kết hợp các bộ lọc danh mục, thuộc tính và giá cả có thể tạo ra kết quả không nhất quán hoặc trống rỗng.

Kiến trúc tìm kiếm và lọc đa ngôn ngữ nhanh

Cách dịch các widget tìm kiếm và lọc động của WooCommerce mà không gây giật lag trang

Một hệ thống tìm kiếm đa ngôn ngữ nhanh chóng cho WooCommerce cần một kiến ​​trúc tách biệt việc xử lý yêu cầu, dịch thuật, bộ nhớ đệm và truy vấn cơ sở dữ liệu. Mục tiêu là chỉ xử lý dữ liệu cần thiết cho mỗi tương tác, đồng thời tránh những công việc không cần thiết có thể làm chậm quá trình tìm kiếm và lọc. 

Quy trình tìm kiếm AJAX thời gian thực

AJAX cho phép các tiện ích tìm kiếm và lọc của WooCommerce cập nhật kết quả sản phẩm mà không cần tải lại toàn bộ trang. Khi người mua nhập từ khóa hoặc chọn bộ lọc, trình duyệt sẽ gửi yêu cầu AJAX đến máy chủ. Máy chủ xử lý yêu cầu, truy xuất các sản phẩm phù hợp và trả về kết quả cho trình duyệt để hiển thị.

Quy trình tìm kiếm thời gian thực điển hình thường tuân theo các bước sau:

  • Người mua hàng nhập từ khóa hoặc chọn bộ lọc.
  • Tiện ích này chỉ gửi các tham số tìm kiếm hoặc lọc có liên quan thông qua yêu cầu AJAX.
  • Máy chủ xử lý yêu cầu và truy vấn danh mục sản phẩm.
  • Máy chủ trả về dữ liệu sản phẩm phù hợp.
  • Tiện ích này cập nhật kết quả mà không cần tải lại trang.

Việc tập trung mỗi yêu cầu vào dữ liệu cần thiết cho tương tác hiện tại giúp giảm thiểu quá trình xử lý không cần thiết và duy trì khả năng phản hồi nhanh chóng của tìm kiếm và lọc động.

Lưu trữ kết quả tìm kiếm đã dịch

Việc sử dụng bộ nhớ đệm có thể giảm số lần cần xử lý cùng một tổ hợp tìm kiếm hoặc bộ lọc. Thay vì tạo kết quả từ đầu cho mỗi yêu cầu giống hệt nhau, hệ thống có thể lưu trữ tạm thời các kết quả được yêu cầu thường xuyên và cung cấp chúng trực tiếp từ bộ nhớ đệm.

Phương pháp này đặc biệt hữu ích cho các cụm từ tìm kiếm phổ biến, danh mục sản phẩm và các tổ hợp bộ lọc thường dùng. Để bộ nhớ đệm phát huy hiệu quả:

  • Lưu trữ các truy vấn tìm kiếm đã được dịch thường xuyên được yêu cầu.
  • Lưu trữ các tổ hợp bộ lọc phổ biến và kết quả của chúng.
  • Đặt thời gian hết hạn phù hợp cho dữ liệu được lưu trong bộ nhớ đệm.
  • Hủy bỏ các kết quả đã lưu trong bộ nhớ cache khi dữ liệu về sản phẩm, danh mục hoặc thuộc tính liên quan thay đổi.

Tối ưu hóa truy vấn cho các sản phẩm đa ngôn ngữ

Việc truy vấn cơ sở dữ liệu hiệu quả là rất cần thiết khi cửa hàng WooCommerce có danh mục sản phẩm đa ngôn ngữ. Các truy vấn tìm kiếm và lọc chỉ nên truy xuất dữ liệu cần thiết cho yêu cầu hiện tại thay vì liên tục quét toàn bộ danh mục sản phẩm hoặc thực hiện các tra cứu dịch thuật không cần thiết.

Các thuộc tính sản phẩm, danh mục, mối quan hệ ngôn ngữ và thuật ngữ tìm kiếm cũng cần được cấu trúc sao cho có thể truy vấn hiệu quả. Điều này giúp giảm tải cho cơ sở dữ liệu và giúp các bộ lọc động trả về kết quả nhanh hơn. Các biện pháp tối ưu hóa chính bao gồm:

  • Lập chỉ mục dữ liệu sản phẩm được tìm kiếm thường xuyên.
  • Hạn chế các truy vấn cơ sở dữ liệu không cần thiết.
  • Lọc sản phẩm trước khi tải thêm dữ liệu.
  • Đảm bảo các mối quan hệ giữa các sản phẩm đã được dịch được thể hiện chính xác.

Thiết lập tìm kiếm động và bộ lọc WooCommerce

Cách dịch các widget tìm kiếm và lọc động của WooCommerce mà không gây giật lag trang

Sau khi kiến ​​trúc tìm kiếm đa ngôn ngữ đã sẵn sàng, bước tiếp theo là cấu hình WooCommerce để chức năng tìm kiếm và lọc động hoạt động chính xác trên nhiều ngôn ngữ. Mục tiêu là đảm bảo mọi yêu cầu AJAX, thuộc tính sản phẩm và bộ lọc danh mục đều sử dụng dữ liệu đã dịch chính xác mà không cần thêm các bước xử lý không cần thiết. 

Dịch các truy vấn tìm kiếm AJAX trực tiếp

Để quy trình AJAX hoạt động hiệu quả trên nhiều ngôn ngữ, mỗi yêu cầu phải giữ nguyên ngôn ngữ mà người mua hàng đã chọn. Hệ thống tìm kiếm cần áp dụng ngữ cảnh ngôn ngữ phù hợp khi xử lý truy vấn và truy xuất dữ liệu sản phẩm.

Tự động hóa dịch thuật cho nội dung AJAX có thể giúp xử lý việc dịch thuật cho nội dung động trong khi vẫn giữ cho các yếu tố tương tác khả dụng bằng ngôn ngữ đã chọn. Khi cấu hình tìm kiếm AJAX trực tiếp cho cửa hàng WooCommerce đa ngôn ngữ:

  • Phát hiện ngôn ngữ đang hoạt động trước khi xử lý yêu cầu AJAX.
  • Hãy sử dụng ngữ cảnh ngôn ngữ phù hợp cho truy vấn tìm kiếm.
  • Đối chiếu kết quả tìm kiếm với dữ liệu sản phẩm đã được dịch tương ứng.
  • Trả về tên sản phẩm, danh mục và các kết quả tìm kiếm khác bằng ngôn ngữ đã chọn.
  • Tránh tạo ra các yêu cầu dịch riêng biệt cho mỗi lần tương tác tìm kiếm.

Cấu hình thuộc tính và bộ lọc sản phẩm

Khi cấu hình bộ lọc đa ngôn ngữ cho WooCommerce, hãy đảm bảo các nhãn thuộc tính và giá trị đã dịch vẫn được liên kết với dữ liệu WooCommerce gốc. Mục tiêu là dịch những gì người mua hàng nhìn thấy mà không cần tạo các mối quan hệ sản phẩm riêng biệt cho mỗi ngôn ngữ.

Khi thiết lập các thuộc tính đa ngôn ngữ:

  • Dịch cả tên thuộc tính và các giá trị khả dụng của chúng.
  • Giữ nguyên các thuộc tính đã dịch được liên kết với hệ thống phân loại WooCommerce gốc.
  • Hãy kiểm tra xem mỗi bộ lọc có trả về các sản phẩm như mong đợi hay không.
  • Kiểm tra các tổ hợp bộ lọc trên các ngôn ngữ khác nhau.
  • Tránh tạo các thuộc tính trùng lặp cho mỗi ngôn ngữ trừ khi thiết lập dịch thuật yêu cầu.

Việc quản lý các bản dịch này theo cách thủ công có thể tốn nhiều thời gian khi danh mục sản phẩm của bạn ngày càng phát triển. Linguise có thể giúp đơn giản hóa việc dịch thuật WooCommerce và giúp quản lý nội dung sản phẩm đa ngôn ngữ , đồng thời duy trì trải nghiệm mua sắm nhất quán trên các ngôn ngữ khác nhau.

Phá vỡ rào cản ngôn ngữ
Hãy tạm biệt rào cản ngôn ngữ và chào đón sự phát triển không giới hạn! Hãy thử dịch vụ dịch thuật tự động của chúng tôi ngay hôm nay.

Xử lý bộ lọc danh mục tùy chỉnh

Các bộ lọc danh mục tùy chỉnh cần được chú ý thêm vì logic lọc của chúng có thể đến từ các phân loại tùy chỉnh hoặc các plugin lọc của bên thứ ba cho WooCommerce chứ không phải từ các danh mục sản phẩm tiêu chuẩn. Trong những trường hợp này, việc dịch nhãn danh mục hiển thị chỉ là một phần của quá trình cấu hình.

Nếu bộ lọc sử dụng phân loại tùy chỉnh, hãy đảm bảo các thuật ngữ phân loại đã dịch vẫn được ánh xạ chính xác đến các thuật ngữ và sản phẩm gốc. Đối với các bộ lọc được tạo bởi các plugin của bên thứ ba, hãy xác minh rằng các yêu cầu AJAX và logic lọc của plugin nhận diện được ngôn ngữ đang hoạt động.

Trước khi xuất bản bộ lọc đa ngôn ngữ tùy chỉnh, hãy xác minh rằng:

  • Mỗi danh mục tùy chỉnh đều có bản dịch chính xác.
  • Các thuật ngữ phân loại tùy chỉnh vẫn được giữ nguyên giữa các ngôn ngữ.
  • Các plugin lọc của bên thứ ba nhận diện ngôn ngữ đã chọn.
  • Sự kết hợp các bộ lọc luôn cho ra kết quả sản phẩm nhất quán.
  • Số lượng sản phẩm tương ứng với số lượng sản phẩm có sẵn trong mỗi ngôn ngữ.

Kiểm tra hiệu suất tìm kiếm đa ngôn ngữ

Việc kiểm thử cần bao gồm cả chức năng và hiệu năng trước khi hệ thống tìm kiếm và lọc đa ngôn ngữ được đưa vào hoạt động. Hãy chạy tìm kiếm bằng từng ngôn ngữ được hỗ trợ và kiểm tra các tổ hợp khác nhau của từ khóa, danh mục, thuộc tính và các bộ lọc khác.

Hãy đặc biệt chú ý đến tốc độ hiển thị kết quả AJAX và liệu số lượng yêu cầu cơ sở dữ liệu có tăng lên khi áp dụng nhiều bộ lọc hay không. Việc kiểm tra danh mục sản phẩm lớn đặc biệt quan trọng vì các vấn đề về hiệu suất có thể không dễ nhận thấy trên các cửa hàng nhỏ hơn. Danh sách kiểm tra hữu ích bao gồm:

  • Tìm kiếm các từ khóa thông dụng trong mọi ngôn ngữ.
  • Kiểm tra nhiều bộ lọc cùng một lúc.
  • Kiểm tra kết quả sau khi chuyển đổi ngôn ngữ.
  • Đo thời gian phản hồi AJAX.
  • Kiểm tra các truy vấn tìm kiếm trống và không hợp lệ.
  • Kiểm tra xem kết quả có còn chính xác sau khi cập nhật sản phẩm hay không.

Khắc phục sự cố tìm kiếm và lọc của WooCommerce

Cách dịch các widget tìm kiếm và lọc động của WooCommerce mà không gây giật lag trang

Ngay cả với kiến ​​trúc tìm kiếm đa ngôn ngữ được cấu hình tốt, chức năng tìm kiếm và bộ lọc của WooCommerce vẫn có thể gặp sự cố sau khi thêm bản dịch, thay đổi sản phẩm hoặc cập nhật plugin. Hầu hết các vấn đề liên quan đến việc ánh xạ ngôn ngữ không chính xác, thiếu dữ liệu đã dịch, yêu cầu AJAX không hiệu quả hoặc cấu hình bộ lọc lỗi thời. 

Kết quả tìm kiếm hiển thị sai ngôn ngữ

Khi kết quả tìm kiếm hiển thị không đúng ngôn ngữ, hãy kiểm tra phản hồi AJAX và xác minh xem phiên bản ngôn ngữ nào của dữ liệu sản phẩm đang được trả về. Nếu truy vấn tìm kiếm chính xác nhưng tên sản phẩm hoặc mô tả hiển thị bằng ngôn ngữ mặc định, yêu cầu có thể đang truy xuất dữ liệu sản phẩm gốc thay vì phiên bản đã được dịch.

Ví dụ, một người mua sắm đang duyệt phiên bản tiếng Đức của một cửa hàng tìm kiếm “Laufschuhe” (giày chạy bộ), nhưng kết quả hiển thị tiêu đề và mô tả sản phẩm bằng tiếng Anh. Điều này cho thấy yêu cầu tìm kiếm có thể đang truy xuất dữ liệu sản phẩm bằng ngôn ngữ mặc định thay vì bản dịch tiếng Đức. Hãy kiểm tra tham số ngôn ngữ trong yêu cầu AJAX và đảm bảo rằng các sản phẩm đã dịch được liên kết chính xác với phiên bản gốc của chúng.

Bộ lọc trả về kết quả trống

Kết quả lọc trống có thể xảy ra khi thuộc tính hoặc danh mục đã dịch không được kết nối chính xác với các sản phẩm được gán cho phiên bản gốc của nó. Bộ lọc có thể hiển thị tùy chọn đã dịch một cách chính xác trong khi truy vấn sai phân loại hoặc thuật ngữ trong cơ sở dữ liệu.

Ví dụ, một khách hàng chọn “Schwarz” từ bộ lọc màu tiếng Đức, nhưng cửa hàng hiển thị “Không tìm thấy sản phẩm” mặc dù có nhiều sản phẩm màu đen. Trong trường hợp này, hãy kiểm tra xem thuộc tính “Black” đã được dịch có được ánh xạ tới cùng sản phẩm và phân loại với thuộc tính gốc hay không, thay vì được coi là một giá trị lọc riêng biệt.

Yêu cầu tìm kiếm AJAX chậm

Các yêu cầu AJAX chậm có thể khiến chức năng tìm kiếm động trở nên không phản hồi, đặc biệt khi tiện ích gửi yêu cầu cho mỗi lần gõ phím. Hãy kiểm tra xem tiện ích tìm kiếm có gửi yêu cầu quá thường xuyên hay không và liệu mỗi yêu cầu có thực hiện các thao tác cơ sở dữ liệu hoặc dịch thuật không cần thiết hay không.

Việc thêm độ trễ ngắn có thể ngăn không cho yêu cầu được gửi đi cho mỗi lần nhấn phím riêng lẻ. Hạn chế các yêu cầu không cần thiết và lưu trữ các truy vấn được tìm kiếm thường xuyên cũng có thể giảm tải cho máy chủ và cải thiện thời gian phản hồi.

Ví dụ, nếu người mua hàng nhập "tai nghe không dây", tiện ích tìm kiếm nên tránh xử lý yêu cầu máy chủ riêng biệt cho mỗi ký tự bất cứ khi nào có thể. Thay vào đó, nó có thể đợi một lát cho đến khi người mua hàng ngừng gõ trước khi gửi yêu cầu tìm kiếm.

Các bộ lọc bị lỗi sau khi cập nhật bản dịch

Các bộ lọc có thể bị lỗi sau khi cập nhật bản dịch nếu các thuộc tính sản phẩm, danh mục hoặc phân loại tùy chỉnh được sửa đổi mà không duy trì mối quan hệ ngôn ngữ của chúng. Việc thay đổi cài đặt dịch thuật hoặc các plugin đa ngôn ngữ cũng có thể khiến các ánh xạ bộ lọc hiện có trở nên lỗi thời.

Ví dụ, một cửa hàng thêm danh mục "Đồ nội thất ngoài trời" đã được dịch, nhưng khi chọn danh mục đó trong phiên bản tiếng Tây Ban Nha thì lại trả về các sản phẩm từ danh mục gốc hoặc không có kết quả nào cả. Giải pháp là xác minh lại việc ánh xạ danh mục đã dịch, xác nhận rằng các sản phẩm chính xác đã được gán và kiểm tra lại bộ lọc sau khi cập nhật bản dịch.

Sẵn sàng khám phá thị trường mới? Hãy thử dịch vụ dịch tự động của chúng tôi miễn phí với thử nghiệm không rủi ro 1 tháng. Không cần thẻ tín dụng!

Kết luận

Các widget tìm kiếm và lọc động của WooCommerce cần được dịch sao cho vừa chính xác vừa hiệu quả. Một thiết lập đa ngôn ngữ nhanh chóng cần duy trì ngữ cảnh ngôn ngữ chính xác trong các yêu cầu AJAX, thuộc tính sản phẩm và bộ lọc danh mục, đồng thời giảm thiểu các truy vấn cơ sở dữ liệu không cần thiết thông qua bộ nhớ đệm và tối ưu hóa truy vấn.

Bạn muốn biến cửa hàng WooCommerce của mình thành đa ngôn ngữ mà không ảnh hưởng đến trải nghiệm mua sắm? Hãy thử Linguise để đơn giản hóa việc dịch thuật trang web và mang đến trải nghiệm mượt mà, được bản địa hóa cho người mua sắm trên mọi ngôn ngữ.

Bạn cũng có thể quan tâm đến việc đọc

Đừng bỏ lỡ!
Đăng ký nhận Bản tin của chúng tôi

Nhận tin tức về bản dịch tự động trang web, SEO quốc tế và hơn thế nữa!

Invalid email address
Hãy thử. Một lần mỗi tháng, và bạn có thể hủy đăng ký bất cứ lúc nào.

Đừng rời đi mà không chia sẻ email của bạn!

Chúng tôi không thể đảm bảo bạn sẽ trúng xổ số, nhưng chúng tôi có thể hứa mang đến một số tin tức thông tin thú vị xung quanh bản dịch và giảm giá thường xuyên.

Đừng bỏ lỡ!
Invalid email address