【问题标题】:How to localize content on a java tomcat webserver?如何本地化 java tomcat 网络服务器上的内容?
【发布时间】:2015-07-30 14:53:16
【问题描述】:

我继承了远程内容,我想本地化它。我正在寻找最好的架构,或者如果有一个简单的逻辑可以在 java 中完成它会很棒。这是问题:

在我的移动应用程序中从远程服务器检索内容我会调用: https://mywebsite.com/contentFarm/static/images/storeFrontSign@2x.png

它会返回给我一张英文店面招牌的图像。但是,如果用户在设备中切换到西班牙语,我需要能够获得西班牙语商店门面标志。我当然已经加载了该图像,但是将其放置在哪里?

我想我可以使用 url 路径进行网络调用,如下所示: https://mywebsite.com/contentFarm/static/images-西班牙语/storeFrontSign@2x.png

https://mywebsite.com/contentFarm/static/images-english/storeFrontSign@2x.png

但是有没有更简洁的方法来本地化我的服务器资产?例如,服务器上的一个小型 java 应用程序读取标头信息以决定返回什么等。它的 java 服务器虽然只需要一个架构。

【问题讨论】:

    标签: java web-services tomcat localization webserver


    【解决方案1】:

    您可以为此尝试 serverfault - 您实际上可以评估 apache 或 nginx 中的请求标头并在那里进行转发。只是语言,还是语言和国家?

    无论如何 - 在 apache 中,您可以这样做:

    ## Rewriting url for IT browser 
    RewriteCond %{HTTP:Accept-Language} ^it [NC]
    RewriteRule ^/$ http://my-site.com/it/foo-page [L,R=301]
    
    ## Rewriting url for EN browser
    RewriteCond %{HTTP:Accept-Language} ^en [NC]
    RewriteRule ^/$ http://my-site.com/en/foo-page [L,R=301]
    

    ...只要你没有太多的语言。

    【讨论】:

    • 我更新了这个问题,因为我现在发现它是一个 java tomcat 服务器。所有这些内容都放在一个war文件中,然后在java服务器中使用。加一个虽然用于 apache,但我需要 java。
    • 我永远不会在互联网上运行裸tomcat - 总是通过像nginx或apache这样的东西作为反向代理 - 我会你有类似的东西:客户端---> apache ---> tomcat.
    【解决方案2】:

    如果您必须使用 servlet 容器,您可能需要使用 servlet 过滤器:

    import java.io.IOException;
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;
    
    
    public class Blah implements Filter {
    
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
            if(request instanceof HttpServletRequest) {
                HttpServletRequest hr = (HttpServletRequest)request;
                String lang = hr.getHeader("Accept-Language");
    
                String url = "the new url"; // decide where to send the person
                boolean needsForward = true; // decide wether or not to forward at all
                if(needsForward) {
                    request.getRequestDispatcher(url).forward(request, response);
                    return;
                }
            }
            chain.doFilter(request, response);
        }
    
        @Override
        public void destroy() {
        }
    
        @Override
        public void init(FilterConfig arg0) throws ServletException {
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-20
      • 1970-01-01
      相关资源
      最近更新 更多