Olá, Anthony!
O melhor a fazer é deixar o Asp.NET detectar a cultura do browser e decidir quais dos resources (arquivos .resx) ele deve usar para exibir as mensagens.
Para isso, você deve definir o UICulture
e o Culture
da diretiva Page
como auto, por exemplo:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1.Default" UICulture="auto" Culture="auto" %>
Assim, se o cliente do site for brasileiro com um browser em português, ao rodar a aplicação, o valor da propriedade System.Threading.Thread.CurrentThread.CurrentUICulture.Name
será pt-BR. Isso porque a requisição do browser informa ao servidor qual é a cultura da interface do usuário. Assim, vários arquivos .resx podem atender as necessidades de vários idiomas diferentes.
Sobre a tradução automática dos conteúdos adicionados pelos clientes e vendedores da sua aplicação: pelo jeito, o seu sistema é alimentado frequentemente com comentários dos usuários. Eu acho complicado utilizar uma API de tradução nesse caso, porque pode gerar custos imprevistos. Serviços como Cloud Translation API do Google e o Bing Translator da Microsoft tem planos de pagamentos para tradução de um certo número de palavras, e você não sabe quantas palavras vão ser postadas pelos clientes e vendedores. Se atingir o limite de palavras traduzidas, você pode ter que pagar para traduzir um volume maior.
Sobre a sua dúvida com ValidationMessageFor, o próprio instrutor Victor Harada publicou uma postagem sobre como customizar mensagens de validação, espero que ajude:
http://blog.caelum.com.br/validacoes-customizadas-no-asp-net-mvc/
Um abraço
marcelo