hi.
there is a way to use the gwt constants/messages on the server side. I
use it so:

Checkout http://code.google.com/p/gwt-i18n-server/ from SVN.

Then you have to patch it for the GAE like I did it (see down).

You have to copy your CONSTANTS.properties + MESSAGES to the folder
war/nls_server.


---------------------- PATCH ----------------------
Index: GenericX.java
===================================================================
--- GenericX.java       (revision 1317)
+++ GenericX.java       (revision 1676)
@@ -21,9 +21,9 @@
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Method;
-import java.security.AccessControlException;
 import java.security.InvalidParameterException;
 import java.util.Properties;

@@ -31,11 +31,17 @@
  *
  */
 public abstract class GenericX implements InvocationHandler {
+       /**
+        * @param c1 c
+        * @param c2 c
+        * @return r
+        */
+       public static boolean isA(Class<?> c1, Class<?> c2) {
+               return c2.isAssignableFrom(c1);
+       }
        protected final Properties properties = new Properties();
-       protected final Class<?> itf;

-       @Override
-       public abstract Object invoke(Object proxy, Method method, Object[]
args) throws Throwable;
+       protected final Class<?> itf;

        /**
         * @param _itf _itf
@@ -48,6 +54,11 @@
                fillProperties(itf, lang);
        }

+       @Override
+       public boolean equals(Object obj) {
+               return obj == this;
+       }
+
        protected void fillProperties(Class<?> itf, String lang) throws
IOException {
                for (Class<?> superItf : itf.getInterfaces()) {
                        fillProperties(superItf, lang);
@@ -59,35 +70,22 @@
                        in = load(baseName + ".properties");
                }
                if (in != null) {
-                       properties.load(in);
+                       properties.load(new InputStreamReader(in, "UTF-8"));
                }
        }
+
+       @Override
+       public int hashCode() {
+               return properties.size();
+       }
+
+       @Override
+       public abstract Object invoke(Object proxy, Method method, Object[]
args) throws Throwable;
+
        protected InputStream load(String s) throws FileNotFoundException {
                InputStream in = null;
                in = loadPropertiesGAE(s);

-               ClassLoader cl;
-               cl = Thread.currentThread().getContextClassLoader();
-               if (cl != null) {
-                       in = cl.getResourceAsStream(s);
-               }
-               if (in == null) {
-                       cl = getClass().getClassLoader();
-                       if (cl != null) {
-                               in = 
getClass().getClassLoader().getResourceAsStream(s);
-                       }
-                       if (in == null) {
-                               try {
-                                       cl = ClassLoader.getSystemClassLoader();
-                               } catch (AccessControlException e) {
-                                       /* GAE compatibility */
-                                       in = loadPropertiesGAE(s);
-                               }
-                               if (cl != null) {
-                                       in = cl.getResourceAsStream(s);
-                               }
-                       }
-               }

                return in;
        }
@@ -99,23 +97,4 @@
                        return null;
                }
        }
-
-       @Override
-       public boolean equals(Object obj) {
-               return obj == this;
-       }
-
-       @Override
-       public int hashCode() {
-               return properties.size();
-       }
-
-       /**
-        * @param c1 c
-        * @param c2 c
-        * @return r
-        */
-       public static boolean isA(Class<?> c1, Class<?> c2) {
-               return c2.isAssignableFrom(c1);
-       }
 }




On 9 Dez., 20:30, Erick Fleming <efleming...@gmail.com> wrote:
> Java has a fair amount of i18n built-in [1], are you using JSPs or
> some other template engine?
>
> [1]http://java.sun.com/javase/technologies/core/basic/intl/
>
>
>
>
>
>
>
>
>
> On Thu, Dec 9, 2010 at 12:48 PM, nacho <vela.igna...@gmail.com> wrote:
> > How can i use internationalization over appengine (java) on the server
> > side?
>
> > Does any one have any idea?
>
> > I've been googling but all the posts that i find are for python
> > appengine.
>
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "Google App Engine" group.
> > To post to this group, send email to google-appeng...@googlegroups.com.
> > To unsubscribe from this group, send email to 
> > google-appengine+unsubscr...@googlegroups.com.
> > For more options, visit this group 
> > athttp://groups.google.com/group/google-appengine?hl=en.
>
> --
> Erick Fleming

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.

Reply via email to