forked from science-ation/science-ation
167 lines
5.8 KiB
PHP
167 lines
5.8 KiB
PHP
<?
|
|
|
|
/*
|
|
* This file is part of the Science-ation project
|
|
* Science-ation Website: https://science-ation.ca
|
|
*
|
|
* This file was part of the 'Science Fair In A Box' project
|
|
*
|
|
*
|
|
* Copyright (C) 2005 Sci-Tech Ontario Inc <info@scitechontario.org>
|
|
* Copyright (C) 2005 James Grant <james@lightbox.org>
|
|
* Copyright (C) 2024 AlgoLibre Inc. <science-ation@algolibre.io>
|
|
*
|
|
* 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, version 2.
|
|
*
|
|
* 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.
|
|
*/
|
|
?>
|
|
<?
|
|
require ('../common.inc.php');
|
|
require_once ('../user.inc.php');
|
|
user_auth_required('committee', 'admin');
|
|
|
|
send_header('Translations',
|
|
array('Committee Main' => 'committee_main.php',
|
|
'Administration' => 'admin/index.php'),
|
|
'translations_management');
|
|
|
|
// by default, we will edit the french translations
|
|
if (get_value_from_array($_GET, 'translang'))
|
|
$_SESSION['translang'] = $_GET['translang'];
|
|
|
|
if (!get_value_from_array($_SESSION, 'translang'))
|
|
$_SESSION['translang'] = 'fr';
|
|
|
|
$show = false;
|
|
|
|
if (get_value_from_array($_GET, 'show'))
|
|
$show = $_GET['show'];
|
|
else if (get_value_from_array($_POST, 'show'))
|
|
$show = $_POST['show'];
|
|
|
|
if (!$show)
|
|
$show = 'missing';
|
|
|
|
if (get_value_from_array($_POST, 'action') == 'save') {
|
|
// first, delete anything thats supposed to eb deleted
|
|
if (count(get_value_from_array($_POST, 'delete', []))) {
|
|
foreach ($_POST['delete'] AS $del) {
|
|
$stmt = $pdo->prepare("DELETE FROM translations WHERE lang=? AND strmd5=?");
|
|
$stmt->execute([$_SESSION['translang'],$del]);
|
|
}
|
|
echo happy(i18n('Translation(s) deleted'));
|
|
}
|
|
if ($_POST['changedFields']) {
|
|
$changed = split(',', $_POST['changedFields']);
|
|
foreach ($changed AS $ch) {
|
|
$stmt = $pdo->prepare("UPDATE translations SET val=? WHERE strmd5=? AND lang=?");
|
|
$stmt->execute([stripslashes($_POST['val'][$ch]),$ch ,$_SESSION['translang']]);
|
|
}
|
|
echo happy(i18n('Translation(s) saved'));
|
|
}
|
|
}
|
|
|
|
echo '<table>';
|
|
echo '<tr><td>';
|
|
echo i18n('Choose a language to manage translations for');
|
|
echo '</td><td>';
|
|
echo '<form name="langswitch" method="get" action="translations.php">';
|
|
echo '<select name="translang" onchange="document.forms.langswitch.submit()">';
|
|
$q = $pdo->prepare("SELECT * FROM languages WHERE lang!='en'");
|
|
$q->execute();
|
|
while ($r = $q->fetch(PDO::FETCH_OBJ)) {
|
|
if ($_SESSION['translang'] == $r->lang) {
|
|
$sel = 'selected="selected"';
|
|
$translangname = $r->langname;
|
|
} else
|
|
$sel = '';
|
|
echo "<option $sel value=\"$r->lang\">$r->langname</option>";
|
|
}
|
|
echo '</select>';
|
|
echo '</form>';
|
|
echo '</td></tr>';
|
|
echo '</table>';
|
|
|
|
if ($show == 'missing') {
|
|
echo i18n('Show missing translations');
|
|
echo ' | ';
|
|
echo '<a href="translations.php?show=all">' . i18n('Show all translations') . '</a>';
|
|
} else {
|
|
echo '<a href="translations.php?show=missing">' . i18n('Show missing translations') . '</a>';
|
|
echo ' | ';
|
|
echo i18n('Show all translations');
|
|
}
|
|
|
|
echo '<br />';
|
|
echo '<br />';
|
|
echo i18n('Instructions: Enter the translation below the string and click Save. Only one translation can be saved at a time. The terms %1, %2, etc get substituded with various arguments to the string, so they must appear in the translation if they are in the original string.');
|
|
echo '<br />';
|
|
echo '<br />';
|
|
|
|
if ($show == 'missing')
|
|
$showquery = "AND ( val is null OR val='' )";
|
|
else
|
|
$showquery = '';
|
|
|
|
$q = $pdo->prepare("SELECT * FROM translations WHERE lang=? $showquery ORDER BY str");
|
|
$q->execute([get_value_from_array($_SESSION, 'translang')]);
|
|
$num = $q->rowCount();
|
|
echo i18n('Showing %1 translation strings', array($num), array('number of strings'));
|
|
|
|
echo '<form method="post" action="translations.php">';
|
|
echo "<input type=\"hidden\" name=\"show\" value=\"$show\" />";
|
|
echo '<input type="hidden" name="action" value="save" />';
|
|
echo '<input id="changedFields" type="hidden" name="changedFields" value="">';
|
|
?>
|
|
<script type="text/javascript">
|
|
function doFocus(strmd5) {
|
|
var obj=document.getElementById('val_'+strmd5);
|
|
var ch=document.getElementById('changedFields');
|
|
obj.style.backgroundColor="#FFBFF2";
|
|
if(ch.value)
|
|
ch.value=ch.value+","+strmd5;
|
|
else
|
|
ch.value=strmd5;
|
|
return true;
|
|
}
|
|
</script>
|
|
|
|
<?
|
|
echo '<table class="tableedit">';
|
|
echo '<tr><th>';
|
|
echo '<img border="0" src="' . $config['SFIABDIRECTORY'] . '/images/16/button_cancel.' . $config['icon_extension'] . "\">\n";
|
|
echo '</th>';
|
|
global $translangname;
|
|
echo '<th>' . i18n('English') . ' / ' . $translangname . "</th></tr>\n";
|
|
while ($r = $q->fetch(PDO::FETCH_OBJ)) {
|
|
echo '<tr>';
|
|
echo '<td valign="top" rowspan="2">';
|
|
echo "<input type=\"checkbox\" name=\"delete[]\" value=\"$r->strmd5\">\n";
|
|
echo '</td><td>';
|
|
echo htmlspecialchars($r->str);
|
|
if ($r->argsdesc)
|
|
echo '<br /><i>' . i18n('Arguments:') . " $r->argsdesc </i>";
|
|
echo '</td>';
|
|
echo '</tr>';
|
|
echo '<tr>';
|
|
echo "<td valign=\"top\"><input id=\"val_{$r->strmd5}\" onchange=\"return doFocus('{$r->strmd5}');\" style=\"width: 95%\" type=\"text\" name=\"val[{$r->strmd5}]\" value=\"" . htmlspecialchars($r->val) . '" /></td>';
|
|
echo '</tr>';
|
|
}
|
|
echo '</table>';
|
|
echo '<input type="submit" value="' . i18n('Save') . '">';
|
|
echo "</form>\n";
|
|
|
|
send_footer();
|
|
?>
|