typescript - NestJS/TypeORM bản địa hóa
Tôi đang làm việc trên một ứng dụng sử dụng máy chủ NestJS và TypeORM. Tôi cần bản địa hóa một số trường, và sau khi nghiên cứu, tôi đã tìm thấy gói này typeorm-i18n. Tài liệu nói rằng nếu bạn đang sử dụng NestJS bạn nên sử dụng gói này: vlzh/nest-typeorm-i18n thay vào đó. Nhưng không có ví dụ nào về cách sử dụng nó. Và tôi cũng đã xem vào thư mục test, nhưng không có kết quả.
Có ai biết cách sử dụng gói này không? Hoặc có lẽ nghĩ ra một giải pháp tốt hơn?
Câu trả lời #1
Nhìn vào các bộ phận cố định của typeorm-i18n, giải pháp dựa trên việc có một cột riêng cho mỗi trường có thể dịch được cho mỗi ngôn ngữ được hỗ trợ. Mặc dù điều này có thể mang lại thiết kế cơ sở dữ liệu đơn giản nhất, tôi chỉ sử dụng điều này nếu bạn có rất ít (1-2) trường có thể dịch, và chỉ một vài (2-3) ngôn ngữ để hỗ trợ, và không dự đoán sẽ thay đổi điều này trong tương lai.
Trong hầu hết các trường hợp khác, tôi sẽ xem xét việc có một sơ đồ cơ sở dữ liệu đa ngôn ngữ thực sự. Có một số câu trả lời hay trên StackOverflow giải thích các giải pháp khả thi, như Schema cho một cơ sở dữ liệu đa ngôn ngữ (cũng xem giải pháp #5 trong câu trả lời thứ hai). Tình cờ là câu trả lời này được liên kết từ vấn đề github TypeORM I18n messages (vào thời điểm viết, vẫn còn mở).
Trong vấn đề này, @michael-bromley gợi ý một giải pháp TypeORM hay dựa trên điều này (hãy chắc chắn đọc phần tiếp theo vì anh ấy hiện đang sử dụng một phiên bản đã được chỉnh sửa). Giải pháp đã được phát triển và triển khai trong sản phẩm thương mại điện tử mã nguồn mở của riêng anh ấy là Vendure (xem thực thể Product có thể dịch).
Vào cuối vấn đề, một mối quan hệ N-to-M giữa Ngôn ngữ và Sản phẩm cũng được đề xuất.
Đối với tôi, phương pháp của Michael Bromley có vẻ là một phương pháp tốt. Nhưng bạn có lẽ sẽ phải chiết xuất phiên bản mới nhất từ dự án Vendure của ông ấy.