01: /*-------------------------------------------------------------------------
02: *
03: * Copyright (c) 2004-2005, PostgreSQL Global Development Group
04: *
05: * IDENTIFICATION
06: * $PostgreSQL: pgjdbc/org/postgresql/util/GT.java,v 1.7 2006/05/22 07:15:23 jurka Exp $
07: *
08: *-------------------------------------------------------------------------
09: */
10: package org.postgresql.util;
11:
12: import java.text.MessageFormat;
13: import java.util.ResourceBundle;
14: import java.util.MissingResourceException;
15:
16: /**
17: * This class provides a wrapper around a gettext message catalog that
18: * can provide a localized version of error messages. The caller provides
19: * a message String in the standard java.text.MessageFormat syntax and any
20: * arguments it may need. The returned String is the localized version if
21: * available or the original if not.
22: */
23:
24: public class GT {
25:
26: private final static GT _gt = new GT();
27: private final static Object noargs[] = new Object[0];
28:
29: public final static String tr(String message) {
30: return _gt.translate(message, null);
31: }
32:
33: public final static String tr(String message, Object arg) {
34: return _gt.translate(message, new Object[] { arg });
35: }
36:
37: public final static String tr(String message, Object args[]) {
38: return _gt.translate(message, args);
39: }
40:
41: private ResourceBundle _bundle;
42:
43: private GT() {
44: try {
45: _bundle = ResourceBundle
46: .getBundle("org.postgresql.translation.messages");
47: } catch (MissingResourceException mre) {
48: // translation files have not been installed
49: _bundle = null;
50: }
51: }
52:
53: private final String translate(String message, Object args[]) {
54: if (_bundle != null && message != null) {
55: try {
56: message = _bundle.getString(message);
57: } catch (MissingResourceException mre) {
58: // If we can't find a translation, just
59: // use the untranslated message.
60: }
61: }
62:
63: // If we don't have any parameters we still need to run
64: // this through the MessageFormat(ter) to allow the same
65: // quoting and escaping rules to be used for all messages.
66: //
67: if (args == null) {
68: args = noargs;
69: }
70:
71: // Replace placeholders with arguments
72: //
73: if (message != null) {
74: message = MessageFormat.format(message, args);
75: }
76:
77: return message;
78: }
79:
80: }
|