Rev 223 |
Rev 230 |
Go to most recent revision |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
1
<!DOCTYPE html>
<html lang="en"">
<head>
<meta charset="UTF-8">
<title>Modern Golic Vulcan – Federation Standard English Dictionary</title>
<style type="text/css">
ol {
padding-left: 0;
list-style-type: none;
}
ol li {
margin-left: 0;
}
ol ol {
padding-left: 1em;
}
</style>
</head>
<body>
<h1>Modern Golic Vulcan – Federation Standard English Dictionary</h1>
<?php
define('REGEXP_PREFIX_EXAMPLE', '/^ex\s*=\s*/');
$source_lang = 'vuh-Latn-Gol-modern';
$target_lang = 'en-Latn-Federation';
$lines = file('vul-gol-en.dict');
if ($lines)
{
$last_indent = -1;
$last_phrases = array();
foreach ($lines as $line)
{
preg_match('/^(?<lws>\s*)(?<phrase>[^:]+)\s*:\s*(?<transl>.+)/u', $line, $matches);
// var_dump($matches);
if ($matches)
{
$phrase = $matches['phrase'];
if (mb_strpos($phrase, '#') === false)
{
$indent = mb_strlen($matches['lws']) / 2;
if ($indent > $last_indent)
{
echo '<ol>';
}
else
{
echo str_repeat('</ol>', $last_indent - $indent);
}
echo '<li>';
$is_example = preg_match(REGEXP_PREFIX_EXAMPLE
, $phrase);
if ($is_example)
{
$phrase = preg_replace(REGEXP_PREFIX_EXAMPLE
, '', $phrase);
}
if ($indent > $last_indent)
{
$last_phrases[] = $phrase;
}
else if ($indent < $last_indent)
{
$last_phrases = array_slice($last_phrases, 0, $indent + 1);
}
if ($indent <= $last_indent)
{
$last_phrases[count($last_phrases) - 1] = $phrase;
}
$phrase = preg_replace(
array(
'/~/',
'/[()]/',
),
array(
'=',
'|',
),
$phrase);
if ($last_phrases)
{
end($last_phrases);
while (($last_phrase = prev($last_phrases)) !== false)
{
while (mb_strlen($last_phrase) > 1)
{
if (preg_match('/' . preg_quote($last_phrase) . '/i',
$phrase, $last_sub_matches))
{
$phrase = preg_replace('/' . $last_sub_matches[0] . '/i',
'<u>\\0</u>', $phrase);
break 2;
}
$last_phrase = mb_strcut($last_phrase, 0, mb_strlen($last_phrase) - 1);
}
}
}
$transl = preg_replace(
array(
'/"([^"]+)"/',
'/\\/([\\s\\w\'()-]+)\\//u',
'/\|(.*)(?<!\|)/',
'/\\s+~/',
),
array(
'“\\1”',
'<i lang="' . $source_lang . '">\\1</i>',
'/\\1',
' ~',
),
$matches['transl']);
echo ($is_example ?
"<i lang='$source_lang'>" : "<b lang='$source_lang'>")
. $phrase
. ($is_example ?
'</i>' : '</b>')
. " <span lang='$target_lang'>" . $transl . '</span>';
$last_indent = $indent;
}
}
}
?>
</ol>
<?php } ?>
</body>
</html>