Hiroshi Saito wrote:
> Hi.
>
> Ummm, I present is not understood by the reason of Japanese. ...  
> Therefore, It was made into the Spanish case. I know that Alvaro-san will 
> understand Spanish well. 
>
> ==postgresql.conf==
> lc_messages= 'es' 
>
> server.log of a patch before and after was applied. Please see it. 

Understood.  In fact, after having a look at this patch and giving it a
little refactoring I think it's pretty obvious; right now we're calling
bind_textdomain_codeset only for the main domain, and with this patch we
also set it for all other domains we use.

Does this patch work for you?

-- 
Alvaro Herrera                                http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.
Index: src/backend/utils/init/miscinit.c
===================================================================
RCS file: /home/alvherre/Code/cvs/pgsql/src/backend/utils/init/miscinit.c,v
retrieving revision 1.172
diff -c -p -r1.172 miscinit.c
*** src/backend/utils/init/miscinit.c	5 Jan 2009 13:57:12 -0000	1.172
--- src/backend/utils/init/miscinit.c	7 Mar 2009 22:13:47 -0000
*************** pg_bindtextdomain(const char *domain)
*** 1241,1246 ****
--- 1241,1248 ----
  
  		get_locale_path(my_exec_path, locale_path);
  		bindtextdomain(domain, locale_path);
+ 
+ 		SetDomainCodeSet(domain, GetDatabaseEncoding());
  	}
  #endif
  }
Index: src/backend/utils/mb/mbutils.c
===================================================================
RCS file: /home/alvherre/Code/cvs/pgsql/src/backend/utils/mb/mbutils.c,v
retrieving revision 1.79
diff -c -p -r1.79 mbutils.c
*** src/backend/utils/mb/mbutils.c	2 Mar 2009 15:10:09 -0000	1.79
--- src/backend/utils/mb/mbutils.c	7 Mar 2009 22:13:47 -0000
*************** SetDatabaseEncoding(int encoding)
*** 895,912 ****
  	 * On Windows, we need to explicitly bind gettext to the correct
  	 * encoding, because gettext() tends to get confused.
  	 */
  #if defined(ENABLE_NLS) && defined(WIN32)
! 	{
! 		int	i;
  
! 		for (i = 0; i < sizeof(codeset_map_array) / sizeof(codeset_map_array[0]); i++)
  		{
! 			if (codeset_map_array[i].encoding == encoding)
! 			{
! 				if (bind_textdomain_codeset(textdomain(NULL), codeset_map_array[i].codeset) == NULL)
! 					elog(LOG, "bind_textdomain_codeset failed");
! 				break;
! 			}
  		}
  	}
  #endif
--- 895,916 ----
  	 * On Windows, we need to explicitly bind gettext to the correct
  	 * encoding, because gettext() tends to get confused.
  	 */
+ 	SetDomainCodeSet(textdomain(NULL), encoding);
+ }
+ 
+ void
+ SetDomainCodeSet(const char *domainname, int encoding)
+ {
  #if defined(ENABLE_NLS) && defined(WIN32)
! 	int     i;
  
! 	for (i = 0; i < sizeof(codeset_map_array) / sizeof(codeset_map_array[0]); i++)
! 	{
! 		if (codeset_map_array[i].encoding == encoding)
  		{
! 			if (bind_textdomain_codeset(domainname, codeset_map_array[i].codeset) == NULL)
! 				elog(LOG, "bind_textdomain_codeset failed");
! 			break;
  		}
  	}
  #endif
Index: src/include/mb/pg_wchar.h
===================================================================
RCS file: /home/alvherre/Code/cvs/pgsql/src/include/mb/pg_wchar.h,v
retrieving revision 1.84
diff -c -p -r1.84 pg_wchar.h
*** src/include/mb/pg_wchar.h	10 Feb 2009 19:29:39 -0000	1.84
--- src/include/mb/pg_wchar.h	7 Mar 2009 22:21:51 -0000
*************** extern const char *pg_get_client_encodin
*** 392,397 ****
--- 392,398 ----
  extern void SetDatabaseEncoding(int encoding);
  extern int	GetDatabaseEncoding(void);
  extern const char *GetDatabaseEncodingName(void);
+ extern void SetDomainCodeSet(const char *domainname, int encoding);
  
  extern int	pg_valid_client_encoding(const char *name);
  extern int	pg_valid_server_encoding(const char *name);
-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to