<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;"># autolatex - IntUtils.pm
# Copyright (C) 2007-14  Stephane Galland &lt;galland@arakhne.org&gt;
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; see the file COPYING.  If not, write to
# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.

=pod

=head1 NAME

Locale.pm - Internationalization Utilities

=head1 DESCRIPTION

Provides a set of utilities for internationalization.

To use this library, type C&lt;use AutoLaTeX::Core::IntUtils;&gt;.

=head1 FUNCTIONS

The provided functions are:

=over 4

=cut
package AutoLaTeX::Core::IntUtils;

our @ISA = qw( Exporter );
our @EXPORT = qw( &amp;_T &amp;initTextDomain &amp;getCurrentLocale &amp;getCurrentLanguage &amp;getCurrentCodeset &amp;getActiveTextDomains );
our @EXPORT_OK = qw();

require 5.014;
use strict;
use utf8;
use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION);
use Exporter;

use Carp;
use Locale::gettext;

our $VERSION = '1.1';

my @ACTIVE_DOMAINS = ();

=pod

=item B&lt;_T($)&gt;

Marker for the internationalization.
The parameter of this function is a string that
may be localized.
Replies the localized string that is corresponding
to the given parameter.

CAUTION: tries to find a translation in all the initialized
text domain (see initTextDomain function).

=cut
sub _T($) {
	my $previous;
	foreach my $domain (@ACTIVE_DOMAINS) {
		#print "SEARCH FOR '".$_[0]."' in $domain\n";
		my $p = textdomain($domain);
		$previous = $p unless $previous;
		my $translation = gettext($_[0]);
		#print "&gt;$translation&lt;\n";
		if ($translation &amp;&amp; $translation ne $_[0]) {
			return $translation;
		}
	}
	if ($previous) {
		textdomain($previous);
	}
	return $_[0];
}

=pod

=item B&lt;initTextDomain($$)&gt;

Initialize the internationalization domain.

=over 4

=item domain: is the name of the text domain to use for internationalization.

=item directory: is the directory where '.mo' (compiled '.po') could be found for the domain.

=item codeset: is the code set used to encode the po files.

=cut
sub initTextDomain($$;$) {
	my $domain = shift || confess("initTextDomain must takes a domain as first parameter");
	my $directory = shift || confess("initTextDomain must takes a directory as second parameter");
	my $codeset = shift;
	bindtextdomain($domain, $directory);
	if ($codeset) {
		bind_textdomain_codeset($domain, $codeset);
	}
	textdomain($domain);
	push @ACTIVE_DOMAINS, $domain;
}

=pod

=item B&lt;getActiveTextDomains()&gt;

Replies the active text domains.

=cut
sub getActiveTextDomains() {
	my @copy = @ACTIVE_DOMAINS;
	return \@copy;
}

=pod

=item B&lt;getCurrentLocale()&gt;

Replies the current locale.

=cut
sub getCurrentLocale() {
	my $lang = $ENV{'LC_ALL'} || $ENV{'LANG'};
	if ($lang =~ /^([a-zA-Z]+_[a-zA-Z]+)/) {
		return "$1";
	}
	elsif ($lang =~ /^([a-zA-Z]+)/) {
		return "$1";
	}
	return undef;
}

=pod

=item B&lt;getCurrentCodeset()&gt;

Replies the current codeset.

=cut
sub getCurrentCodeset() {
	my $lang = $ENV{'LC_ALL'} || $ENV{'LANG'};
	if ($lang =~ /^[a-zA-Z]+_[a-zA-Z]+\.(.*)$/) {
		return "$1";
	}
	elsif ($lang =~ /^[a-zA-Z]+\.(.*)$/) {
		return "$1";
	}
	return undef;
}

=pod

=item B&lt;getCurrentLangage()&gt;

Replies the current language.

=cut
sub getCurrentLanguage() {
	my $lang = $ENV{'LC_ALL'} || $ENV{'LANG'};
	if ($lang =~ /^([a-zA-Z]+)_[a-zA-Z]+/) {
		return "$1";
	}
	elsif ($lang =~ /^([a-zA-Z]+)/) {
		return "$1";
	}
	return undef;
}


1;
__END__
=back

=head1 BUG REPORT AND FEEDBACK

To report bugs, provide feedback, suggest new features, etc. visit the AutoLaTeX Project management page at &lt;http://www.arakhne.org/autolatex/&gt; or send email to the author at L&lt;galland@arakhne.org&gt;.

=head1 LICENSE

S&lt;GNU Public License (GPL)&gt;

=head1 COPYRIGHT

S&lt;Copyright (c) 2007-14 StÃŠphane Galland E&lt;lt&gt;galland@arakhne.orgE&lt;gt&gt;&gt;

=head1 SEE ALSO

L&lt;autolatex-dev&gt;
</pre></body></html>