Source for file _set_regional.form.php
Documentation is available at _set_regional.form.php
* This file implements the general settings form
* b2evolution - {@link http://b2evolution.net/}
* Released under GNU GPL License - {@link http://b2evolution.net/about/license.html}
* @copyright (c)2003-2005 by Francois PLANQUE - {@link http://fplanque.net/}
if( !defined('DB_USER') ) die( 'Please, do not access this page directly.' );
param( 'locale', 'string', '' );
if( !empty($locale) &&
$action !=
'extract' )
param( 'template', 'string', '' );
<form class="fform" method="post" action="b2options.php?tab=regional" name="createnew">
<input type="hidden" name="notransext" value="
<?php echo
$notransext;?>" />
<input type="hidden" name="action" value="
<?php echo
( ($locale ==
'_new_') ?
'createlocale' :
'updatelocale' ) ?>" />
<fieldset id="createnew">
<legend>
<?php echo
( ($locale ==
'_new_') ?
T_('Create new locale') :
T_('Edit locale') ) ?></legend>
if( isset
($locales[$template]) )
$ltemplate =
$locales[ $template ];
elseif( $locale !=
'_new_' && isset
($locales[ $locale ]) )
$ltemplate =
$locales[ $locale ];
{ // we need to remember this for updating locale
echo
'<input type="hidden" name="oldloc_locale" value="'.
$newlocale.
'" />';
form_text( 'newloc_locale', $newlocale, 20, T_('Locale'), sprintf(T_('The first two letters should be a <a %s>ISO 639 language code</a>. The last two letters should be a <a %s>ISO 3166 country code</a>.'), 'href="http://www.gnu.org/software/gettext/manual/html_chapter/gettext_15.html#SEC221"', 'href="http://www.gnu.org/software/gettext/manual/html_chapter/gettext_16.html#SEC222"'), 20 );
form_checkbox( 'newloc_enabled', (isset
($ltemplate['enabled']) &&
$ltemplate['enabled']), T_('Enabled'), T_('Should this locale be available to users?') );
form_text( 'newloc_name', (isset
($ltemplate['name']) ?
$ltemplate['name'] :
''), 40, T_('Name'),
T_('name of the locale'), 40 );
form_text( 'newloc_charset', (isset
($ltemplate['charset']) ?
$ltemplate['charset'] :
''), 20, T_('Charset'), T_('Must match the lang file charset.'), 15 );
form_text( 'newloc_datefmt', (isset
($ltemplate['datefmt']) ?
$ltemplate['datefmt'] :
''), 20, T_('Date format'), T_('See below.'), 10 );
form_text( 'newloc_timefmt', (isset
($ltemplate['timefmt']) ?
$ltemplate['timefmt'] :
''), 20, T_('Time format'), T_('See below.'), 10 );
form_text( 'newloc_messages', (isset
($ltemplate['messages']) ?
$ltemplate['messages'] :
''), 20, T_('Lang file'),
T_('the lang file to use, from the <code>locales</code> subdirectory'), 20 );
form_text( 'newloc_priority', (isset
($ltemplate['priority']) ?
$ltemplate['priority'] :
''), 3, T_('Priority'),
T_('1 is highest. Priority is important when selecting a locale from a language code and several locales match the same language; this can happen when detecting browser language. Priority also affects the order in which locales are displayed in dropdown boxes, etc.'), 5 );
// generate Javascript array of locales to warn in case of overwriting
{ // remove the locale we want to edit from the generated array
$l_warnfor =
str_replace("'$newlocale'", "'thiswillneverevermatch'", $l_warnfor);
<input type="submit" name="submit" value="'.
( ($locale ==
'_new_') ?
T_('Create') :
T_('Update') ).
'" class="search" onclick="var Locales = new Array('.
$l_warnfor.
'); while( Locales.length > 0 ){ check = Locales.shift(); if( document.createnew.newloc_locale.value == check ){ c = \''.
/* TRANS: Warning this is a javascript string */ T_("This will replace locale \'%s\'. Ok?").
'\'.replace(/%s/, check); return confirm( c )}};" />
<input type="reset" value="'.
format_to_output(T_('Reset'), 'formvalue').
'" class="search" />
<h3>
<?php echo
T_('Flags') ?></h3>
<p>
<?php printf(T_('The flags are stored in subdirectories from <code>%s</code>. Their filename is equal to the country part of the locale (characters 4-5); file extension is .gif .'), '/'.
$img_subdir.
'/flags/'); ?></p>
<h3>
<?php echo
T_('Date/Time Formats') ?></h3>
<p>
<?php echo
T_('The following characters are recognized in the format strings:') ?></p>
<?php echo
T_('a - "am" or "pm"') ?><br />
<?php echo
T_('A - "AM" or "PM"') ?><br />
<?php echo
T_('B - Swatch Internet time') ?><br />
<?php echo
T_('c - ISO 8601 date (Requires PHP 5); i.e. "2004-02-12T15:19:21+00:00"') ?><br />
<?php echo
T_('d - day of the month, 2 digits with leading zeros; i.e. "01" to "31"') ?><br />
<?php echo
T_('D - day of the week, textual, 3 letters; i.e. "Fri"') ?><br />
<?php echo
T_('e - day of the week, 1 letter; i.e. "F"') ?><br />
<?php echo
T_('F - month, textual, long; i.e. "January"') ?><br />
<?php echo
T_('g - hour, 12-hour format without leading zeros; i.e. "1" to "12"') ?><br />
<?php echo
T_('G - hour, 24-hour format without leading zeros; i.e. "0" to "23"') ?><br />
<?php echo
T_('h - hour, 12-hour format; i.e. "01" to "12"') ?><br />
<?php echo
T_('H - hour, 24-hour format; i.e. "00" to "23"') ?><br />
<?php echo
T_('i - minutes; i.e. "00" to "59"') ?><br />
<?php echo
T_('I (capital i) - "1" if Daylight Savings Time, "0" otherwise.') ?><br />
<?php echo
T_('j - day of the month without leading zeros; i.e. "1" to "31"') ?><br />
<?php echo
T_('l (lowercase "L") - day of the week, textual, long; i.e. "Friday"') ?><br />
<?php echo
T_('L - boolean for whether it is a leap year; i.e. "0" or "1"') ?><br />
<?php echo
T_('m - month; i.e. "01" to "12"') ?><br />
<?php echo
T_('M - month, textual, 3 letters; i.e. "Jan"') ?><br />
<?php echo
T_('n - month without leading zeros; i.e. "1" to "12"') ?><br />
<?php echo
T_('O - Difference to Greenwich time (GMT) in hours; i.e. "+0200"') ?><br />
<?php echo
T_('r - RFC 822 formatted date; i.e. "Thu, 21 Dec 2000 16:01:07 +0200"') ?><br />
<?php echo
T_('s - seconds; i.e. "00" to "59"') ?><br />
<?php echo
T_('S - English ordinal suffix, textual, 2 characters; i.e. "th", "nd"') ?><br />
<?php echo
T_('t - number of days in the given month; i.e. "28" to "31"') ?><br />
<?php echo
T_('T - Timezone setting of this machine; i.e. "MDT"') ?><br />
<?php echo
T_('U - seconds since the epoch') ?><br />
<?php echo
T_('w - day of the week, numeric, i.e. "0" (Sunday) to "6" (Saturday)') ?><br />
<?php echo
T_('W - ISO-8601 week number of year, weeks starting on Monday; i.e. "42"') ?><br />
<?php echo
T_('Y - year, 4 digits; i.e. "1999"') ?><br />
<?php echo
T_('y - year, 2 digits; i.e. "99"') ?><br />
<?php echo
T_('z - day of the year; i.e. "0" to "365"') ?><br />
<?php echo
T_('Z - timezone offset in seconds (i.e. "-43200" to "43200"). The offset for timezones west of UTC is always negative, and for those east of UTC is always positive.') ?>
<?php echo
T_('isoZ - full ISO 8601 format, equivalent to Y-m-d\TH:i:s\Z') ?><br />
<p>
<?php echo
T_('Unrecognized characters in the format string will be printed as-is.<br />
You can escape characters by preceding them with a \ to print them as-is.') ?></p>
if( !$locales[$Settings->get('default_locale')]['enabled'] )
{ // default locale is not enabled
echo
'<div class="error">' .
T_('Note: default locale is not enabled.') .
'</div>';
<form class="fform" name="form" action="b2options.php?tab=regional" method="post">
<input type="hidden" name="action" value="update" />
<input type="hidden" name="notransext" value="
<?php echo
$notransext;?>" />
<legend>
<?php echo
T_('Regional settings') ?></legend>
form_text( 'newtime_difference', $Settings->get('time_difference'), 3, T_('Time difference'), sprintf( '['.
T_('in hours').
'] '.
T_('If you\'re not on the timezone of your server. Current server time is: %s.'), date_i18n( locale_timefmt(), $servertimenow ) ), 3 );
form_select( 'newdefault_locale', $Settings->get('default_locale'), 'locale_options', T_('Default locale'), T_('Overriden by browser config, user locale or blog locale (in this order).'));
<legend>
<?php echo
T_('Available locales'); ?></legend>
echo
'<a href="b2options.php?tab=regional&notransext=1">' .
T_('Hide translation info'), '</a>';
$showtranslationpercentage =
1;
echo
'<a href="b2options.php?tab=regional">' .
T_('Show translation info'), '</a>';
$showtranslationpercentage =
0;
<table class="grouped" cellspacing="0">
<th>
<?php echo
T_('Locale') ?></th>
<th>
<?php echo
T_('Enabled') ?></th>
<th>
<?php echo
T_('Name') ?></th>
<th>
<?php echo
T_('Date fmt') ?></th>
<th>
<?php echo
T_('Time fmt') ?></th>
<?php if( $current_User->check_perm( 'options', 'edit' ) )
<th>
<?php echo
T_('Edit') ?></th>
if( $showtranslationpercentage )
<th>
<?php echo
T_('Strings') ?></th>
<th>
<?php echo
T_('Translated') ?></th>
if( $current_User->check_perm( 'options', 'edit' ) &&
$allow_po_extraction )
<th>
<?php echo
T_('Extract') ?></th>
$i =
0; // counter to distinguish POSTed locales later
foreach( $locales as $lkey =>
$lval )
<tr
<?php if($i%
2 ==
1) echo
'class="odd"' ?>>
<td class="left" title="
<?php echo
T_('Priority').
': '.
$locales[$lkey]['priority'].
', '.
T_('Charset').
': '.
$locales[$lkey]['charset'].
', '.
T_('Lang file').
': '.
$locales[$lkey]['messages'] ?>">
echo
'<input type="hidden" name="loc_'.
$i.
'_locale" value="'.
$lkey.
'" />';
if( $current_User->check_perm( 'options', 'edit' ) )
echo
'<a href="b2options.php?tab=regional'.
($notransext ?
'&notransext=1' :
'').
'&locale='.
$lkey.
'" title="'.
T_('Edit locale').
'">';
if( $current_User->check_perm( 'options', 'edit' ) )
<input type="checkbox" name="loc_'.
$i.
'_enabled" value="1"'.
( $locales[$lkey]['enabled'] ?
'checked="checked"' :
'' ).
' />
<input type="text" name="loc_'.
$i.
'_name" value="'.
format_to_output( $locales[$lkey]['name'], 'formvalue' ).
'" maxlength="40" size="17" />
<input type="text" name="loc_'.
$i.
'_datefmt" value="'.
format_to_output( $locales[$lkey]['datefmt'], 'formvalue' ).
'" maxlength="10" size="6" />
<input type="text" name="loc_'.
$i.
'_timefmt" value="'.
format_to_output( $locales[$lkey]['timefmt'], 'formvalue' ).
'" maxlength="10" size="6" />
if( $current_User->check_perm( 'options', 'edit' ) )
echo
'<td class="left">';
echo
'<a href="b2options.php?tab=regional'.
($notransext ?
'&notransext=1' :
'').
'&prioup='.
$lkey.
'"><img src="img/arrowup.png" alt="'.
T_('up').
'" title="'.
T_('Move priority up').
'" width="14" height="14" class="middle" /></a>';
echo
'<img src="img/blank.gif" width="14" alt="" />';
if( $i <
count($locales) )
{ // show "move prio down"
echo
'<a href="b2options.php?tab=regional'.
($notransext ?
'&notransext=1' :
'').
'&priodown='.
$lkey.
'"><img src="img/arrowdown.png" alt="'.
T_('down').
'" title="'.
T_('Move priority down').
'" width="14" height="14" class="middle" /></a>';
echo
'<img src="img/blank.gif" width="14" alt="" />';
<a href="b2options.php?tab=regional'.
($notransext ?
'&notransext=1' :
'').
'&locale=_new_&template='.
$lkey.
'" title="'.
T_('Copy locale').
'"><img src="img/copy.gif" width="13" height="13" class="middle" alt="'.
T_('Copy').
'" title="'.
T_('Copy locale').
'" /></a>
<a href="b2options.php?tab=regional'.
($notransext ?
'&notransext=1' :
'').
'&locale='.
$lkey.
'" title="'.
T_('Edit locale').
'"><img src="img/properties.png" width="18" height="13" alt="'.
T_('Edit').
'" title="'.
T_('Edit locale').
'" class="middle" /></a>
if( isset
($lval[ 'fromdb' ]) )
{ // allow to delete locales loaded from db
echo
'<a href="b2options.php?tab=regional'.
($notransext ?
'&notransext=1' :
'').
'&delete='.
$lkey.
'"><img src="img/xross.gif" height="13" width="13" class="middle" alt="'.
T_('Reset').
'" title="'.
T_('Reset custom settings').
'" /></a>';
if( $showtranslationpercentage )
// Get PO file for that locale:
$po_file =
dirname(__FILE__
).
'/'.
$core_dirout.
'/'.
$locales_subdir.
'/'.
$locales[$lkey]['messages'].
'/LC_MESSAGES/messages.po';
echo
'<td class="center" colspan="'.
(2 + (int)
$allow_po_extraction).
'">'.
T_('No language file...').
'</td>';
$lines =
file( $po_file );
$lines[] =
''; // Adds a blank line at the end in order to ensure complete handling of the file
foreach ($lines as $line)
// echo 'LINE:', $line, '<br />';
{ // Blank line, go back to base status:
{ // ** End of a translation ** :
// echo 'untranslated: ', $msgid, '<br />';
if( $msgid ==
'' &&
$this_fuzzy )
{ // It's OK if first line is fuzzy
elseif( ($status==
'-') &&
preg_match( '#^msgid "(.*)"#', $line, $matches))
{ // Encountered an original text
// echo 'original: "', $msgid, '"<br />';
elseif( ($status==
'o') &&
preg_match( '#^msgstr "(.*)"#', $line, $matches))
{ // Encountered a translated text
// echo 'translated: "', $msgstr, '"<br />';
elseif( preg_match( '#^"(.*)"#', $line, $matches))
{ // Encountered a followup line
elseif(strpos($line,'#, fuzzy') ===
0)
// $all=$translated+$fuzzy+$untranslated;
echo
"\n\t<td class=\"center\">".
$all .
"</td>";
$percent_done =
$all ?
round(($translated-
$fuzzy/
2)/
$all*
100) :
0;
$color =
sprintf( '%02x%02x00', 255 -
round($percent_done *
2.55), round($percent_done *
2.55) );
echo
"\n\t<td class=\"center\" style=\"background-color:#".
$color .
"\">".
$percent_done .
" %</td>";
if( $current_User->check_perm( 'options', 'edit' ) &&
$allow_po_extraction )
echo
"\n\t<td>".
'[<a href="b2options.php?tab=regional&action=extract&locale='.
$lkey.
'" title="'.
T_('Extract .po file into b2evo-format').
'">'.
T_('Extract').
'</a>]</td>';
} // show message file percentage/extraction
<?php if( $current_User->check_perm( 'options', 'edit' ) )
<p class="center"><a href="b2options.php?tab=regional
<?php if( $notransext ) echo
'&notransext=1'?>&locale=_new_"><img src="img/new.gif" width="13" height="13" class="middle" alt="" />
<?php echo
T_('Create new locale');?></a></p>
<?php if( isset
($l_atleastonefromdb) )
<p class="center"><a href="b2options.php?tab=regional
<?php if( $notransext ) echo
'&notransext=1'?>&action=reset" onclick="return confirm('
<?php echo
/* TRANS: Warning this is a javascript string */ T_('Are you sure you want to reset?');?>')"><img src="img/xross.gif" height="13" width="13" class="middle" alt="" />
<?php echo
T_('Reset to defaults (delete database table)');?></a></p>
<?php if( $current_User->check_perm( 'options', 'edit' ) )