[Cluster-devel] [PATCH 3/3] mkfs i18n:

Steven Whitehouse swhiteho at redhat.com
Thu Sep 22 09:50:46 UTC 2011


Hi,

On Tue, 2011-09-20 at 14:27 -0300, Carlos Maiolino wrote:
> Hi,
> On Tue, Sep 06, 2011 at 08:10:06PM +0100, Steven Whitehouse wrote:
> > Hi,
> > 
> > On Tue, 2011-09-06 at 14:41 -0300, Carlos Maiolino wrote:
> > > Use rpmatch() function to get answer to
> > > yes-or-no questions during mkfs confirmation
> > > 
> > > Signed-off-by: Carlos Maiolino <cmaiolino at redhat.com>
> > > ---
> > >  gfs2/mkfs/main_mkfs.c |   30 ++++++++++++++++++++++--------
> > >  1 files changed, 22 insertions(+), 8 deletions(-)
> > > 
> > > diff --git a/gfs2/mkfs/main_mkfs.c b/gfs2/mkfs/main_mkfs.c
> > > index 4751f19..d68cf98 100644
> > > --- a/gfs2/mkfs/main_mkfs.c
> > > +++ b/gfs2/mkfs/main_mkfs.c
> > > @@ -456,8 +456,11 @@ fail:
> > >  
> > >  static void are_you_sure(struct gfs2_sbd *sdp)
> > >  {
> > > -	char input[32];
> > > +	char *line = NULL;
> > > +	size_t len = 0;
> > >  	int fd;
> > > +	int ret = -1;
> > > +	int res = 0;
> > >  
> > >  	fd = open(sdp->device_name, O_RDONLY|O_CLOEXEC);
> > >  	if (fd < 0)
> > > @@ -465,14 +468,25 @@ static void are_you_sure(struct gfs2_sbd *sdp)
> > >  	printf( _("This will destroy any data on %s.\n"), sdp->device_name);
> > >  	check_dev_content(sdp->device_name);
> > >  	close(fd);
> > > -	printf( _("\nAre you sure you want to proceed? [y/n] "));
> > > -	if(!fgets(input, 32, stdin))
> > > -		die( _("unable to read from stdin\n"));
> > > +	
> > > +	do{
> > > +		printf( _("\nAre you sure you want to proceed? [y/n]"));
> > This means that the translator needs to know that rpmatch is being used
> > and to also know how to translate this accordingly. Why not use
> > nl_langinfo() to put the response strings into this message?
> > 
> I was looking how nl_langinfo() works, and all it does to help with yes/no 
> questions is to return a regex expression (like [^[SsyY].*) to be used to match 
> the user's answer, it does not return a string or char value like yes/no (en_US) or 
> sim/nao(pt_BR) we can use to replace the y/n in the question string.
> 
> The rpmatch() function takes advantage of nl_langinfo() internaly to match the
> customer's answer according to which l10n the system is set.
> 
> This way, even using nl_langinfo(), the translator person will still need to translate
> the y/n to s/n, since is not possible to use nl_langinfo to replace these values.
> 
> What we could do, is to create an auxiliar function to check the return of nl_langinfo(),
> and, according with this value, write an specific string (s/n, y/n, etc). But, imho, this
> could lead to an error prone condition during string creation.
> 
> What u think?
> 
> Cheers,

It is is not possible to use glibc for this, then lets not worry about
it too much. I just wanted to be certain that there was not some
standard way to deal with these kinds of translations before we create
our own solution to the problem,

Steve.





More information about the Cluster-devel mailing list