Initial commit
This commit is contained in:
commit
f6bad2d2d9
.gitignoreconfig.php.example
html
images
button-background-repeater.gifcontainer-repeater.gifdsv_logo_en.pngdsv_logo_sv.pngfavicon.icogloballinks-lang-en.gifgloballinks-lang-sv.gifsu_logo_en.gifsu_logo_responsive_en.pngsu_logo_responsive_sv.pngsu_logo_sv.gif
include.phpindex.phptemplate.csstemplate_translations.phptranslations.php
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
*~
|
||||||
|
.htaccess
|
||||||
|
config.php
|
8
config.php.example
Normal file
8
config.php.example
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
$db_host = 'dbserver';
|
||||||
|
$db_user = 'dbname';
|
||||||
|
$db_pass = 'dbpassword';
|
||||||
|
$db_name = 'dbuser';
|
||||||
|
|
||||||
|
?>
|
58
html/base.html
Normal file
58
html/base.html
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
<link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon">
|
||||||
|
<link rel="stylesheet" type="text/css" href="./template.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="./style.css" />
|
||||||
|
<script type="text/javascript" src="./script.js"></script>
|
||||||
|
<title>¤pagetitle¤</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="container">
|
||||||
|
<a class="accessibility-link" accesskey="s" href="#content-top" title="¤template-access-skip-nav¤"></a>
|
||||||
|
<div id="top-links">
|
||||||
|
<a href="¤template-lang-link¤"><img src="¤template-lang-flag¤" /> ¤template-lang-label¤</a>
|
||||||
|
</div>
|
||||||
|
<div id="header">
|
||||||
|
<a id="header-su-responsive" href="¤template-su-link¤" title="¤template-su-link-title¤">
|
||||||
|
<img src="¤template-su-logo-responsive¤" alt="¤template-su-name¤" />
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a id="header-dsv" href="¤template-dsv-link¤" title="¤template-dsv-link-title¤" accesskey="1">
|
||||||
|
<img src="¤template-dsv-logo¤" alt="¤template-dsv-name¤">
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a id="header-su" href="¤template-su-link¤" title="¤template-su-link-title¤">
|
||||||
|
<img src="¤template-su-logo¤" alt="¤template-su-name¤">
|
||||||
|
</a>
|
||||||
|
<div class="clear">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="contents">
|
||||||
|
<a class="accessibility-link" name="content-top"></a>
|
||||||
|
¤contents¤
|
||||||
|
<div class="clear">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="footer">
|
||||||
|
<div id="footer-name">
|
||||||
|
<div id="footer-dsv">
|
||||||
|
¤template-dsv-name¤
|
||||||
|
</div>
|
||||||
|
<div id="footer-su">
|
||||||
|
¤template-su-name¤
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="footer-contact">
|
||||||
|
<a id="footer-contact-link" href="¤template-contact-link¤" accesskey="7">¤template-contact-label¤</a>
|
||||||
|
</div>
|
||||||
|
<div class="clear">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
BIN
images/button-background-repeater.gif
Normal file
BIN
images/button-background-repeater.gif
Normal file
Binary file not shown.
After ![]() (image error) Size: 589 B |
BIN
images/container-repeater.gif
Normal file
BIN
images/container-repeater.gif
Normal file
Binary file not shown.
After ![]() (image error) Size: 366 B |
BIN
images/dsv_logo_en.png
Normal file
BIN
images/dsv_logo_en.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 6.5 KiB |
BIN
images/dsv_logo_sv.png
Normal file
BIN
images/dsv_logo_sv.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 6.4 KiB |
BIN
images/favicon.ico
Normal file
BIN
images/favicon.ico
Normal file
Binary file not shown.
After Width: 16px | Height: 16px | Size: 318 B |
BIN
images/globallinks-lang-en.gif
Normal file
BIN
images/globallinks-lang-en.gif
Normal file
Binary file not shown.
After ![]() (image error) Size: 598 B |
BIN
images/globallinks-lang-sv.gif
Normal file
BIN
images/globallinks-lang-sv.gif
Normal file
Binary file not shown.
After ![]() (image error) Size: 609 B |
BIN
images/su_logo_en.gif
Normal file
BIN
images/su_logo_en.gif
Normal file
Binary file not shown.
After ![]() (image error) Size: 2.1 KiB |
BIN
images/su_logo_responsive_en.png
Normal file
BIN
images/su_logo_responsive_en.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 9.8 KiB |
BIN
images/su_logo_responsive_sv.png
Normal file
BIN
images/su_logo_responsive_sv.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 9.5 KiB |
BIN
images/su_logo_sv.gif
Normal file
BIN
images/su_logo_sv.gif
Normal file
Binary file not shown.
After ![]() (image error) Size: 2.0 KiB |
102
include.php
Normal file
102
include.php
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
require_once("./config.php");
|
||||||
|
require_once("./template_translations.php");
|
||||||
|
require_once("./translations.php");
|
||||||
|
|
||||||
|
$db = new mysqli($db_host, $db_user, $db_pass, $db_name);
|
||||||
|
if($db->connect_errno) {
|
||||||
|
throw new Exception('Failed to connect to db. The error was: '.$db->connect_error);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function format_page($lang, $content, $title) {
|
||||||
|
global $template_translations, $translations;
|
||||||
|
|
||||||
|
$content = replace($translations[$lang], $content);
|
||||||
|
$out = replace(
|
||||||
|
$template_translations[$lang],
|
||||||
|
file_get_contents('./html/base.html')
|
||||||
|
);
|
||||||
|
$out = replace(array(
|
||||||
|
'¤pagetitle¤' => $title,
|
||||||
|
'¤contents¤' => $content,
|
||||||
|
), $out);
|
||||||
|
|
||||||
|
return $out;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Takes an html file containing named fragments.
|
||||||
|
Returns an associative array on the format array[name]=>fragment.
|
||||||
|
|
||||||
|
Fragments are delimited like this:
|
||||||
|
|
||||||
|
¤¤ name 1 ¤¤
|
||||||
|
fragment 1
|
||||||
|
¤¤ name 2 ¤¤
|
||||||
|
fragment 2
|
||||||
|
¤¤ name 3 ¤¤
|
||||||
|
fragment 3
|
||||||
|
|
||||||
|
The first delimiter and name ('¤¤ name 1 ¤¤' in the above example) can
|
||||||
|
be omitted, in which case the first fragment will be assigned the
|
||||||
|
name 'base'. All other fragments must be named.
|
||||||
|
|
||||||
|
Throws an exception if:
|
||||||
|
- any fragment except the first is missing a name
|
||||||
|
- two (or more) fragments share a name
|
||||||
|
*/
|
||||||
|
function get_fragments($infile) {
|
||||||
|
$out = array();
|
||||||
|
$name = '';
|
||||||
|
$current_fragment = null;
|
||||||
|
|
||||||
|
foreach(file($infile) as $line) {
|
||||||
|
if(strpos($line, '¤¤') === 0) {
|
||||||
|
if($current_fragment !== null) {
|
||||||
|
$out = try_adding($name, $current_fragment, $out, $infile);
|
||||||
|
|
||||||
|
}
|
||||||
|
$name = trim($line, "\t\n\r ¤");
|
||||||
|
$current_fragment = null;
|
||||||
|
} else {
|
||||||
|
$current_fragment .= $line;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return try_adding($name, $current_fragment, $out, $infile);
|
||||||
|
}
|
||||||
|
|
||||||
|
function try_adding($key, $value, $array, $filename) {
|
||||||
|
if(array_key_exists($key, $array)) {
|
||||||
|
throw new Exception('There is already a fragment with that name in '.$filename);
|
||||||
|
} else if($key === '') {
|
||||||
|
throw new Exception('There is an unnamed fragment in '.$filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
$array[$key] = $value;
|
||||||
|
|
||||||
|
return $array;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Takes an associative array and a string.
|
||||||
|
Returns a string.
|
||||||
|
|
||||||
|
Replaces each occurrence of each array key in the input string
|
||||||
|
with the associated array value, and returns the result.
|
||||||
|
*/
|
||||||
|
function replace($assoc_arr, $subject) {
|
||||||
|
$keys = array();
|
||||||
|
$values = array();
|
||||||
|
|
||||||
|
foreach($assoc_arr as $key => $value) {
|
||||||
|
$keys[] = $key;
|
||||||
|
$values[] = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
return str_replace($keys, $values, $subject);
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
12
index.php
Executable file
12
index.php
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
<?php
|
||||||
|
require_once('./include.php'); // provides $db, $translations
|
||||||
|
|
||||||
|
header('Content-Type: text/html; charset=UTF-8');
|
||||||
|
|
||||||
|
$lang = 'sv';
|
||||||
|
if(isset($_GET['lang'])) {
|
||||||
|
$lang = $_GET['lang'];
|
||||||
|
}
|
||||||
|
|
||||||
|
print format_page($lang, 'TEST', 'TESTING TITLE');
|
||||||
|
?>
|
313
template.css
Normal file
313
template.css
Normal file
@ -0,0 +1,313 @@
|
|||||||
|
/*
|
||||||
|
* Base styles
|
||||||
|
* -----------
|
||||||
|
*/
|
||||||
|
|
||||||
|
@charset "utf-8";
|
||||||
|
|
||||||
|
* {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
min-height: 100%;
|
||||||
|
font: 76%/1.6 Verdana, Arial, Helvetica, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1, h2, h3, h4 {
|
||||||
|
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||||
|
color: #002f5f;
|
||||||
|
text-decoration-color: #002f5f;
|
||||||
|
font-weight: normal;
|
||||||
|
letter-spacing: -1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
margin-top: 23px;
|
||||||
|
margin-bottom: 11px;
|
||||||
|
font-size: 230%;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
margin-top: 15px;
|
||||||
|
margin-bottom: 7px;
|
||||||
|
font-size: 150%;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
margin-top: 14px;
|
||||||
|
margin-bottom: 7px;
|
||||||
|
font-size: 140%
|
||||||
|
}
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
margin-top: 10px;
|
||||||
|
margin-bottom: 6px;
|
||||||
|
font-size: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin-top: 6px;
|
||||||
|
margin-bottom: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:link {
|
||||||
|
color: #005b7f;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:visited {
|
||||||
|
color: #7d7d7d;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
input, textarea, button, select {
|
||||||
|
border: 1px solid lightgray;
|
||||||
|
margin: 1px;
|
||||||
|
font-family: inherit;
|
||||||
|
font-size: 100%;
|
||||||
|
background-color: white;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
input, button, select {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
textarea {
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
input:not([type="submit"]):focus, textarea:focus, select:focus {
|
||||||
|
border: 1px solid black;
|
||||||
|
}
|
||||||
|
|
||||||
|
button, input[type="submit"] {
|
||||||
|
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||||
|
background-image: url(images/button-background-repeater.gif);
|
||||||
|
background-position: left;
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Utility classes
|
||||||
|
* ---------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
.box {
|
||||||
|
display: inline-block;
|
||||||
|
border: 1px solid #d7e0eb;
|
||||||
|
padding: 10px;
|
||||||
|
margin: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.left {
|
||||||
|
float: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.right {
|
||||||
|
float: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clear {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lclear {
|
||||||
|
clear: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rclear {
|
||||||
|
clear: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fade {
|
||||||
|
font-size: 90%;
|
||||||
|
color: #666666;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Theme element styles
|
||||||
|
* --------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#container {
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
max-width: 994px;
|
||||||
|
min-height: 100vh;
|
||||||
|
padding-bottom: 20px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
#top-links, #header {
|
||||||
|
background-color: #002e5f;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
#top-links {
|
||||||
|
padding-left: 4%;
|
||||||
|
padding-right: 4%;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
#top-links a {
|
||||||
|
color: white;
|
||||||
|
font-size: 80%;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#top-links a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
#top-links img {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
#header {
|
||||||
|
padding-left: 4%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#header-su-responsive {
|
||||||
|
float: left;
|
||||||
|
margin-top: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#header-su-responsive > img {
|
||||||
|
width: 100%;
|
||||||
|
max-width: 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#header-dsv {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
#header-dsv > img {
|
||||||
|
width: 100%;
|
||||||
|
max-wifth: 399px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#header-su {
|
||||||
|
float: right;
|
||||||
|
margin-top: 16px;
|
||||||
|
margin-right: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#contents {
|
||||||
|
font-family: Georgia, "Times New Roman", Times, serif;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
margin-bottom: 100px;
|
||||||
|
margin-top: 12px;
|
||||||
|
padding-left: 4%;
|
||||||
|
padding-right: 4%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#footer {
|
||||||
|
border-top: 1px solid #d2d7dc;
|
||||||
|
font-size: 80%;
|
||||||
|
padding-top: 11px;
|
||||||
|
padding-bottom: 22px;
|
||||||
|
width: 100%;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#footer-name {
|
||||||
|
float: left;
|
||||||
|
padding-left: 11px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#footer-dsv {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
#footer-contact {
|
||||||
|
float: right;
|
||||||
|
padding-right: 11px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#footer-clear {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Media queries
|
||||||
|
* -------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
@media screen and (max-width: 17em) {
|
||||||
|
#footer-contact {
|
||||||
|
clear: left;
|
||||||
|
float: left;
|
||||||
|
padding-left: 11px;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 24em) {
|
||||||
|
#footer-name > div {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
#footer-su::before {
|
||||||
|
content: "| "
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 500px) {
|
||||||
|
#header {
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
#top-links, #contents {
|
||||||
|
padding-left: 20px;
|
||||||
|
padding-right: 20px;
|
||||||
|
}
|
||||||
|
.right {
|
||||||
|
margin-top: 0;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
.left {
|
||||||
|
margin-top: 0;
|
||||||
|
float:left;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
#header-su {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#header-su-responsive {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 767px) {
|
||||||
|
#header-su {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
#header-su-responsive {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#header-dsv {
|
||||||
|
padding-top: 75px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 994px) {
|
||||||
|
#container {
|
||||||
|
background-image: url(images/container-repeater.gif);
|
||||||
|
background-position: left top;
|
||||||
|
background-repeat: repeat-y;
|
||||||
|
padding-left: 4px;
|
||||||
|
padding-right: 4px;
|
||||||
|
}
|
||||||
|
#footer {
|
||||||
|
width: calc(100% - 8px);
|
||||||
|
}
|
||||||
|
}
|
40
template_translations.php
Normal file
40
template_translations.php
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
$template_translations = array(
|
||||||
|
'sv' => array(
|
||||||
|
'¤template-access-skip-nav¤' => 'Hoppa över navigation',
|
||||||
|
'¤template-su-name¤' => 'Stockholms universitet',
|
||||||
|
'¤template-dsv-name¤' => 'Institutionen för data- och systemvetenskap',
|
||||||
|
'¤template-su-logo-responsive¤' => 'images/su_logo_responsive_sv.png',
|
||||||
|
'¤template-su-logo¤' => 'images/su_logo_sv.gif',
|
||||||
|
'¤template-dsv-logo¤' => 'images/dsv_logo_sv.png',
|
||||||
|
'¤template-su-link-title¤' => 'Till Stockholms universitets webbplats',
|
||||||
|
'¤template-su-link¤' => 'http://www.su.se/',
|
||||||
|
'¤template-dsv-link-title¤' => 'Till DSV:s webbplats',
|
||||||
|
'¤template-dsv-link¤' => 'http://dsv.su.se/',
|
||||||
|
'¤template-lang-link¤' => '?lang=en',
|
||||||
|
'¤template-lang-label¤' => 'In English',
|
||||||
|
'¤template-lang-flag¤' => 'images/globallinks-lang-en.gif',
|
||||||
|
'¤template-contact-link¤' => 'http://dsv.su.se/omdsv/kontakt/',
|
||||||
|
'¤template-contact-label¤' => 'Kontakt',
|
||||||
|
),
|
||||||
|
'en' => array(
|
||||||
|
'¤template-access-skip-nav¤' => 'Skip navigation',
|
||||||
|
'¤template-su-name¤' => 'Stockholm University',
|
||||||
|
'¤template-dsv-name¤' => 'Department of Computer and Systems Sciences',
|
||||||
|
'¤template-su-logo-responsive¤' => 'images/su_logo_responsive_en.png',
|
||||||
|
'¤template-su-logo¤' => 'images/su_logo_en.gif',
|
||||||
|
'¤template-dsv-logo¤' => 'images/dsv_logo_en.png',
|
||||||
|
'¤template-su-link-title¤' => 'Stockholm University home',
|
||||||
|
'¤template-su-link¤' => 'http://www.su.se/english/',
|
||||||
|
'¤template-dsv-link-title¤' => "DSV home",
|
||||||
|
'¤template-dsv-link¤' => 'http://dsv.su.se/en/',
|
||||||
|
'¤template-lang-link¤' => '?lang=sv',
|
||||||
|
'¤template-lang-label¤' => 'På svenska',
|
||||||
|
'¤template-lang-flag¤' => 'images/globallinks-lang-sv.gif',
|
||||||
|
'¤template-contact-link¤' => 'http://dsv.su.se/en/about/contact/',
|
||||||
|
'¤template-contact-label¤' => 'Contact',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
?>
|
10
translations.php
Normal file
10
translations.php
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
$translations = array(
|
||||||
|
'sv' => array(
|
||||||
|
|
||||||
|
),
|
||||||
|
'en' => array(
|
||||||
|
|
||||||
|
),
|
||||||
|
);
|
||||||
|
?>
|
Loading…
x
Reference in New Issue
Block a user