[smc-discuss] [Git][smc/smc-website][master] Update with latest js libraries, remove underscore.js and redundant html

Santhosh Thottingal gitlab at mg.gitlab.com
Sun Oct 7 04:24:31 PDT 2018


Santhosh Thottingal pushed to branch master at SMC / SMC Website


Commits:
2ff85921 by Santhosh Thottingal at 2018-10-07T11:22:05Z
Update with latest js libraries, remove underscore.js and redundant html

Removed Identica link, planet link.
Also removed meaningless "all wrongs reversed" text

- - - - -


10 changed files:

- − css/normalize.css
- css/style.css
- i18n/smc-en.json
- i18n/smc-ml.json
- index.html
- + js/jquery.i18n.js
- + js/jquery.i18n.messagestore.js
- − js/jquery.i18n.min.js
- js/script.js
- − js/underscore-min.js


Changes:

=====================================
css/normalize.css deleted
=====================================
@@ -1,527 +0,0 @@
-/*! normalize.css v1.1.0 | MIT License | git.io/normalize */
-
-/* ==========================================================================
-   HTML5 display definitions
-   ========================================================================== */
-
-/**
- * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3.
- */
-
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-main,
-nav,
-section,
-summary {
-    display: block;
-}
-
-/**
- * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
- */
-
-audio,
-canvas,
-video {
-    display: inline-block;
-    *display: inline;
-    *zoom: 1;
-}
-
-/**
- * Prevent modern browsers from displaying `audio` without controls.
- * Remove excess height in iOS 5 devices.
- */
-
-audio:not([controls]) {
-    display: none;
-    height: 0;
-}
-
-/**
- * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4.
- * Known issue: no IE 6 support.
- */
-
-[hidden] {
-    display: none;
-}
-
-/* ==========================================================================
-   Base
-   ========================================================================== */
-
-/**
- * 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using
- *    `em` units.
- * 2. Prevent iOS text size adjust after orientation change, without disabling
- *    user zoom.
- */
-
-html {
-    font-size: 100%; /* 1 */
-    -webkit-text-size-adjust: 100%; /* 2 */
-    -ms-text-size-adjust: 100%; /* 2 */
-}
-
-/**
- * Address `font-family` inconsistency between `textarea` and other form
- * elements.
- */
-
-html,
-button,
-input,
-select,
-textarea {
-    font-family: sans-serif;
-}
-
-/**
- * Address margins handled incorrectly in IE 6/7.
- */
-
-body {
-    margin: 0;
-}
-
-/* ==========================================================================
-   Links
-   ========================================================================== */
-
-/**
- * Address `outline` inconsistency between Chrome and other browsers.
- */
-
-a:focus {
-    outline: thin dotted;
-}
-
-/**
- * Improve readability when focused and also mouse hovered in all browsers.
- */
-
-a:active,
-a:hover {
-    outline: 0;
-}
-
-/* ==========================================================================
-   Typography
-   ========================================================================== */
-
-/**
- * Address font sizes and margins set differently in IE 6/7.
- * Address font sizes within `section` and `article` in Firefox 4+, Safari 5,
- * and Chrome.
- */
-
-h1 {
-    font-size: 2em;
-    margin: 0.67em 0;
-}
-
-h2 {
-    font-size: 1.5em;
-    margin: 0.83em 0;
-}
-
-h3 {
-    font-size: 1.17em;
-    margin: 1em 0;
-}
-
-h4 {
-    font-size: 1em;
-    margin: 1.33em 0;
-}
-
-h5 {
-    font-size: 0.83em;
-    margin: 1.67em 0;
-}
-
-h6 {
-    font-size: 0.67em;
-    margin: 2.33em 0;
-}
-
-/**
- * Address styling not present in IE 7/8/9, Safari 5, and Chrome.
- */
-
-abbr[title] {
-    border-bottom: 1px dotted;
-}
-
-/**
- * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome.
- */
-
-b,
-strong {
-    font-weight: bold;
-}
-
-blockquote {
-    margin: 1em 40px;
-}
-
-/**
- * Address styling not present in Safari 5 and Chrome.
- */
-
-dfn {
-    font-style: italic;
-}
-
-/**
- * Address differences between Firefox and other browsers.
- * Known issue: no IE 6/7 normalization.
- */
-
-hr {
-    -moz-box-sizing: content-box;
-    box-sizing: content-box;
-    height: 0;
-}
-
-/**
- * Address styling not present in IE 6/7/8/9.
- */
-
-mark {
-    background: #ff0;
-    color: #000;
-}
-
-/**
- * Address margins set differently in IE 6/7.
- */
-
-p,
-pre {
-    margin: 1em 0;
-}
-
-/**
- * Correct font family set oddly in IE 6, Safari 4/5, and Chrome.
- */
-
-code,
-kbd,
-pre,
-samp {
-    font-family: monospace, serif;
-    _font-family: 'courier new', monospace;
-    font-size: 1em;
-}
-
-/**
- * Improve readability of pre-formatted text in all browsers.
- */
-
-pre {
-    white-space: pre;
-    white-space: pre-wrap;
-    word-wrap: break-word;
-}
-
-/**
- * Address CSS quotes not supported in IE 6/7.
- */
-
-q {
-    quotes: none;
-}
-
-/**
- * Address `quotes` property not supported in Safari 4.
- */
-
-q:before,
-q:after {
-    content: '';
-    content: none;
-}
-
-/**
- * Address inconsistent and variable font size in all browsers.
- */
-
-small {
-    font-size: 80%;
-}
-
-/**
- * Prevent `sub` and `sup` affecting `line-height` in all browsers.
- */
-
-sub,
-sup {
-    font-size: 75%;
-    line-height: 0;
-    position: relative;
-    vertical-align: baseline;
-}
-
-sup {
-    top: -0.5em;
-}
-
-sub {
-    bottom: -0.25em;
-}
-
-/* ==========================================================================
-   Lists
-   ========================================================================== */
-
-/**
- * Address margins set differently in IE 6/7.
- */
-
-dl,
-menu,
-ol,
-ul {
-    margin: 1em 0;
-}
-
-dd {
-    margin: 0 0 0 40px;
-}
-
-/**
- * Address paddings set differently in IE 6/7.
- */
-
-menu,
-ol,
-ul {
-    padding: 0 0 0 40px;
-}
-
-/**
- * Correct list images handled incorrectly in IE 7.
- */
-
-nav ul,
-nav ol {
-    list-style: none;
-    list-style-image: none;
-}
-
-/* ==========================================================================
-   Embedded content
-   ========================================================================== */
-
-/**
- * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3.
- * 2. Improve image quality when scaled in IE 7.
- */
-
-img {
-    border: 0; /* 1 */
-    -ms-interpolation-mode: bicubic; /* 2 */
-}
-
-/**
- * Correct overflow displayed oddly in IE 9.
- */
-
-svg:not(:root) {
-    overflow: hidden;
-}
-
-/* ==========================================================================
-   Figures
-   ========================================================================== */
-
-/**
- * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11.
- */
-
-figure {
-    margin: 0;
-}
-
-/* ==========================================================================
-   Forms
-   ========================================================================== */
-
-/**
- * Correct margin displayed oddly in IE 6/7.
- */
-
-form {
-    margin: 0;
-}
-
-/**
- * Define consistent border, margin, and padding.
- */
-
-fieldset {
-    border: 1px solid #c0c0c0;
-    margin: 0 2px;
-    padding: 0.35em 0.625em 0.75em;
-}
-
-/**
- * 1. Correct color not being inherited in IE 6/7/8/9.
- * 2. Correct text not wrapping in Firefox 3.
- * 3. Correct alignment displayed oddly in IE 6/7.
- */
-
-legend {
-    border: 0; /* 1 */
-    padding: 0;
-    white-space: normal; /* 2 */
-    *margin-left: -7px; /* 3 */
-}
-
-/**
- * 1. Correct font size not being inherited in all browsers.
- * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5,
- *    and Chrome.
- * 3. Improve appearance and consistency in all browsers.
- */
-
-button,
-input,
-select,
-textarea {
-    font-size: 100%; /* 1 */
-    margin: 0; /* 2 */
-    vertical-align: baseline; /* 3 */
-    *vertical-align: middle; /* 3 */
-}
-
-/**
- * Address Firefox 3+ setting `line-height` on `input` using `!important` in
- * the UA stylesheet.
- */
-
-button,
-input {
-    line-height: normal;
-}
-
-/**
- * Address inconsistent `text-transform` inheritance for `button` and `select`.
- * All other form control elements do not inherit `text-transform` values.
- * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+.
- * Correct `select` style inheritance in Firefox 4+ and Opera.
- */
-
-button,
-select {
-    text-transform: none;
-}
-
-/**
- * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
- *    and `video` controls.
- * 2. Correct inability to style clickable `input` types in iOS.
- * 3. Improve usability and consistency of cursor style between image-type
- *    `input` and others.
- * 4. Remove inner spacing in IE 7 without affecting normal text inputs.
- *    Known issue: inner spacing remains in IE 6.
- */
-
-button,
-html input[type="button"], /* 1 */
-input[type="reset"],
-input[type="submit"] {
-    -webkit-appearance: button; /* 2 */
-    cursor: pointer; /* 3 */
-    *overflow: visible;  /* 4 */
-}
-
-/**
- * Re-set default cursor for disabled elements.
- */
-
-button[disabled],
-html input[disabled] {
-    cursor: default;
-}
-
-/**
- * 1. Address box sizing set to content-box in IE 8/9.
- * 2. Remove excess padding in IE 8/9.
- * 3. Remove excess padding in IE 7.
- *    Known issue: excess padding remains in IE 6.
- */
-
-input[type="checkbox"],
-input[type="radio"] {
-    box-sizing: border-box; /* 1 */
-    padding: 0; /* 2 */
-    *height: 13px; /* 3 */
-    *width: 13px; /* 3 */
-}
-
-/**
- * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
- * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
- *    (include `-moz` to future-proof).
- */
-
-input[type="search"] {
-    -webkit-appearance: textfield; /* 1 */
-    -moz-box-sizing: content-box;
-    -webkit-box-sizing: content-box; /* 2 */
-    box-sizing: content-box;
-}
-
-/**
- * Remove inner padding and search cancel button in Safari 5 and Chrome
- * on OS X.
- */
-
-input[type="search"]::-webkit-search-cancel-button,
-input[type="search"]::-webkit-search-decoration {
-    -webkit-appearance: none;
-}
-
-/**
- * Remove inner padding and border in Firefox 3+.
- */
-
-button::-moz-focus-inner,
-input::-moz-focus-inner {
-    border: 0;
-    padding: 0;
-}
-
-/**
- * 1. Remove default vertical scrollbar in IE 6/7/8/9.
- * 2. Improve readability and alignment in all browsers.
- */
-
-textarea {
-    overflow: auto; /* 1 */
-    vertical-align: top; /* 2 */
-}
-
-/* ==========================================================================
-   Tables
-   ========================================================================== */
-
-/**
- * Remove most spacing between table cells.
- */
-
-table {
-    border-collapse: collapse;
-    border-spacing: 0;
-}


=====================================
css/style.css
=====================================
@@ -33,7 +33,7 @@ img {
    Author's custom styles
    ========================================================================== */
 body{
-    font: 400 14px/140% 'Open Sans',Arial,Helvetica,Geneva,sans-serif;
+    font: 400 14px/140% 'Open Sans','Manjari', 'Meera', Arial,Helvetica,Geneva,sans-serif;
     color: #333;
 }
 #title h1{
@@ -158,13 +158,11 @@ ul#social li{
 #social-icon-2{
     background: url(../img/social/twitter.png) bottom;
 }
+
 #social-icon-3{
-    background: url(../img/social/identica.png) bottom;
-}
-#social-icon-4{
     background: url(../img/social/googleplus.png) bottom;
 }
-#social-icon-5{
+#social-icon-4{
     background: url(../img/social/diaspora.png) bottom;
 }
 #social-icon-1:hover, #social-icon-2:hover, #social-icon-3:hover, #social-icon-4:hover, #social-icon-5:hover{
@@ -227,7 +225,7 @@ footer{
     #main-content{
         height: auto;
     }
-    footer{    
+    footer{
         margin-top: 30px;
     }
 


=====================================
i18n/smc-en.json
=====================================
@@ -14,6 +14,6 @@
     "menu-matrix": "Matrix: #smc-project:matrix.org",
     "menu-planet": "Blog Planet",
     "code-of-conduct": "Code of Conduct",
-    "copyleft-msg": "$1 Swathanthra Malayalam Computing 2013 - All Wrongs Reversed",
+    "copyleft-msg": "© Swathanthra Malayalam Computing 2018",
     "about": "<p>Swathanthra Malayalam Computing (SMC) is a free software collective engaged in development, localization, standardization and popularization of various Free and Open Source Softwares in <a href=\"https://en.wikipedia.org/wiki/Malayalam\" target=\"_blank\">Malayalam language</a>. \"എന്റെ കമ്പ്യൂട്ടറിനു് എന്റെ ഭാഷ\" is the slogan of the organization, which translates to \"My language for/on My Computer\".</p> <p>SMC has been active since October 2002 and has been working to provide Malayalam language tools that work on all layers of computing including and not limited to rendering fixes, fonts, input mechanisms, translations (localization), text-to-speech engines, dictionaries, spell checkers and other indic script based language computing specific tools across operating systems. We are the upstream for Malayalam fonts and tools for popular GNU/Linux based operating systems such as Fedora and Debian. We also maintain localizations for popular Free Software Desktops (GNOME/KDE), popular applications such as Firefox and Libre Office.</p> <p>SMC is perhaps the largest language technology developer community in India and collaborates very closely with government and industry, and serves as an advisory to govermental/semi-govermental organizations that determine the future of Malayalam language on computing devices. We are not just developers though, we also have linguists, journalists, Wikipedians, writers and all sorts of language users among us.</p> <p>SMC also works on developing accessibility support for indic languages and  maintains Dhvani TTS which supports 11 languages  . Over the years, SMC has evolved to accommodate developers focused on Indic script based  languages and now provides a generic web based Indic language computation framework called <a href=\"http://silpa.org.in\" target=\"_blank\">SILPA</a>.</p>"
-}
+}
\ No newline at end of file


=====================================
i18n/smc-ml.json
=====================================
@@ -12,8 +12,7 @@
     "menu-irc": "IRC: ഫ്രീനോഡിലെ #smc-project",
     "menu-telegram": "ടെലഗ്രാം: @smc_project",
     "menu-matrix": "മാട്രിക്സ്: #smc-project:matrix.org",
-    "menu-planet": "ബ്ലോഗ് പ്ലാനറ്റ്",
     "code-of-conduct": "പെരുമാറ്റച്ചട്ടം",
-    "copyleft-msg": "$1 സ്വതന്ത്ര മലയാളം  കമ്പ്യൂട്ടിങ്ങ് 2015 - All Wrongs Reversed",
+    "copyleft-msg": "© സ്വതന്ത്ര മലയാളം  കമ്പ്യൂട്ടിങ്ങ് 2018",
     "about": "<p>വിവിധ സ്വതന്ത്ര സോഫ്റ്റ്‌വെയറുകളുടെ മലയാള ഭാഷയിലുള്ള പുരോഗതിക്കും, പ്രാദേശികവത്കരണത്തിനും, ഏകീകരണത്തിനും പ്രചരണത്തിനും വേണ്ടി പ്രവര്‍ത്തിയ്ക്കുന്ന സന്നദ്ധ പ്രവര്‍ത്തകരുടെ കൂട്ടായ്മയാണ് സ്വതന്ത്രമലയാളംകമ്പ്യൂട്ടിങ്ങ്.(സ്വ.മ.ക) \"എന്റെ കമ്പ്യൂട്ടറിനു് എന്റെ ഭാഷ\" എന്നതാണ് ഈ കൂട്ടായ്മയുടെ മുദ്രാവാക്യം.</p><p>ഒക്ടോബർ 2002 മുതൽ സ്വ.മ.ക സജീവമാണ്. അന്നു മുതൽ തന്നെ വിവിധ കമ്പ്യൂട്ടർ തലങ്ങളിലും (ഫോണ്ടുകൾ, നിവേശക രീതികൾ, തിരുത്തലുകൾ, തർജ്ജമ, എഴുത്ത്-സംസാരം യന്ത്രങ്ങൾ, നിഘണ്ടുക്കൾ, അക്ഷരപരിശോധനാ ഉപകരണങ്ങൾ മുതലായവ) വിവിധ ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റങ്ങളിലും പ്രവർത്തിക്കുന്ന മലയാള ഭാഷയിലുള്ള ഉപകരണങ്ങളുടെ നിർമ്മാണത്തിലും വികസനത്തിലും സ്വ.മ.ക  ശ്രദ്ധിക്കുന്നു. മലയാളം ഫോണ്ടുകളുടെയും നിരവധി പ്രശസ്ത ഗ്നു/ലിനക്സ് സിസ്റ്റങ്ങൾക്ക് വേണ്ടിയുള്ള ഉപകരണങ്ങളുടേയും പിന്നണിയില്‍  സ്വ.മ.ക യാണ്. പ്രശസ്തമായ പല സ്വതന്ത്ര സോഫ്റ്റ്‌വെയർ പണിയിടങ്ങളുടേയും മറ്റു ഉപകരണങ്ങളുടേയും തർജ്ജമകളും സ്വ.മ.ക പരിപാലിക്കുന്നു.</p><p>ഒരുപക്ഷേ ഭാരതത്തിലെ തന്നെ ഏറ്റവും വലിയ ഭാഷാ-കമ്പ്യൂട്ടിങ്ങ് പ്രവർത്തക സംഘടന സ്വ.മ.ക ആയിരിക്കും. കൂടാതെ ഞങ്ങൾ കമ്പ്യൂട്ടർ ഉപകരണങ്ങളിൽ മലയാള ഭാഷയുടെ ഭാവി നിശ്ചയിക്കുന്ന സർക്കാർ, സർക്കാരേതര സംഘടനകൾക്ക് ഉപദേശികളായും സർക്കാരിനോടും വ്യവസായ മേഖലയോടും ചേർന്നും പ്രവർത്തിക്കുന്നു. സോഫ്റ്റ്‌വെയർ ഡെവലപ്പർമാർക്കു പുറമേ ഭാഷാവിദഗ്ദ്ധന്മാർ, പത്രപ്രവർത്തകർ, വിക്കിപീഡിയന്മാർ, എഴുത്തുകാർ അങ്ങനെ ഭാഷാ ഉപയോക്താക്കൾ പലരും ഞങ്ങളുടെ ഇടയിലുണ്ട്.</p>"
-}
+}
\ No newline at end of file


=====================================
index.html
=====================================
@@ -2,166 +2,84 @@
 <!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
 <!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
 <!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
-<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
-    <head>
-        <meta charset="utf-8">
-        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-        <title>Swathanthra Malayalam Computing</title>
-        <meta name="description" content="Swathanthra Malayalam Computing">
-        <meta name="keywords" content="SMC, Swathanthra Malayalam Computing, Malayalam, Community, Wiki">
-        <meta name="viewport" content="width=device-width">
-        <link rel="stylesheet" href="css/normalize.css">
-        <link rel="stylesheet" href="css/style.css">
-        <link href='//fonts.googleapis.com/css?family=Open+Sans:400' rel='stylesheet' type='text/css'>
-        <link href='//fonts.googleapis.com/css?family=Rufina:400' rel='stylesheet' type='text/css'>
-        <link rel="shortcut icon" type="image/png" href="favicon.png" />
-    </head>
-    <body>
-        <div id="top-bar">
-        </div>
-        <div class="wrapper">
-            <ul class="lang-selector">
-                <li><a class="language active" data-language="en">English</a></li>
-                <li><span>|</span></li>
-                <li><a class="language" data-language="ml">മലയാളം‌‌</a></li>
-            </ul>
-        </div>
-        <div id="homepage">
-            <div class="wrapper" id="main-content">
-                <div class="sidebar">
-                    <div id="logo">
-                        <img src="img/logo.png" />
-                    </div>
-                    <div id="external-links">
-			    <ul id="links">
-			    <li>
-		                <a href="https://blog.smc.org.in/">Blog</a>
-		            </li>
-                            <li>
-                                <a href="https://wiki.smc.org.in/">Wiki</a>
-                            </li>
-                            <li>
-                                <a href="http://libindic.org/" target="_blank">LibIndic</a>
-                            </li>
-                            <li>
-                                <a href="https://indicproject.org/" target="_blank">Indic Project</a>
-                            </li>
-                            <li>
-                                <a href="https://smc.org.in/fonts/">Fonts</a>
-                            </li>
-                            <li>
-                                <a href="https://gitlab.com/smc" target="_blank">Git Repository</a>
-                            </li>
-                            <li>
-                                <a href="http://lists.smc.org.in/listinfo.cgi/discuss-smc.org.in" target="_blank">Mailing List</a>
-                            </li>
-                            <li>
-                                <a href="https://webchat.freenode.net/?randomnick=1&channels=smc-project" target="_blank">IRC: #smc-project on freenode</a>
-                            </li>
-                            <li>
-                                <a href="https://matrix.to/#/#smc-project:matrix.org" target="_blank">Matrix: #smc-project:matrix.org</a>
-                            </li>
-                            <li>
-                                <a href="https://t.me/smc_project" target="_blank">Telegram: @smc_project</a>
-                            </li>
-                             <li>
-                                <a href="http://dhvani.sourceforge.net/" target="_blank">Dhvani</a>
-                            </li>
-                            <li>
-                                <a href="http://www.grandham.org/" target="_blank">Malayala Grandhavivaram</a>
-                            </li>
-                            <li>
-                                <a href="https://planet.smc.org.in/" target="_blank">Blog Planet</a>
-                            </li>
-                            <li>
-                                <a href="https://smc.org.in/code-of-conduct.html">Code of Conduct</a>
-                            </li>
-                        </ul>
-                    </div>
-                    <div id="social-share">
-                        <ul id="social">
-                            <li><a id="social-icon-1" href="https://www.facebook.com/SMC.Project" target="_blank">Facebook</a></li>
-                            <li><a id="social-icon-2" href="https://twitter.com/smcproject" target="_blank">Twitter</a></li>
-                            <li><a id="social-icon-3" href="https://identi.ca/smcproject" target="_blank">Identi.ca</a></li>
-                            <li><a id="social-icon-4" href="https://plus.google.com/114205080648406335851/" target="_blank">Google Plus</a></li>
-                            <li><a id="social-icon-5" href="https://diasp.org/people/71abaf650562c0a9" target="_blank">Diaspora</a></li>
-                        </ul>
-                    </div>
-                </div>
-                <div class="content">
-                    <div id="title">
-                        <h1>Swathanthra Malayalam Computing</h1>
-                    </div>
-                    <div id="about">
-                        <p>Swathanthra Malayalam Computing (SMC) is a free software collective engaged in development, localization, standardization and popularization of various Free and Open Source Softwares in <a href="https://en.wikipedia.org/wiki/Malayalam" target="_blank">Malayalam language</a>. "എന്റെ കമ്പ്യൂട്ടറിനു് എന്റെ ഭാഷ" i the slogan of the organization, which translates to "My language for/on My Computer".</p> <p>SMC has been active since October 2002 and has been working to provide Malayalam language tools that work on all layers of computing including and not limited to rendering fixes, fonts, input mechanisms, translations (localization), text-to-speech engines, dictionaries, spell checkers and other indic script based language computing specific tools across operating systems. We are the upstream for Malayalam fonts and tools for popular GNU/Linux based operating systems such as Fedora and Debian. We also maintain localizations for popular Free Software Desktops (GNOME/KDE), popular applications such as Firefox and Libre Office.</p> <p>SMC is perhaps the largest language technology developer community in India and collaborates very closely with government and industry, and serves as an advisory to govermental/semi-govermental organizations that determine the future of Malayalam language on computing devices. We are not just developers though, we also have linguists, journalists, Wikipedians, writers and all sorts of language users among us.</p> <p>SMC also works on developing accessibility support for indic languages and  maintains Dhvani TTS which supports 11 languages  . Over the years, SMC has evolved to accommodate developers focused on Indic script based  languages and now provides a generic web based Indic language computation framework called <a href=\"http://silpa.org.in" target="_blank">SILPA</a>.
-                    </div>
-                </div>
-            </div>
-            <footer>
-                <div class="wrapper">
-                    <hr/>
-                    <div id="copyleft"><span>©</span> Swathanthra Malayalam Computing 2013 - All Wrongs Reversed</div>
-                </div>
-            </footer>
-        </div>
-        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
-        <script src="js/jquery.i18n.min.js"></script>
-        <script src="js/underscore-min.js"></script>
-        <script src="js/script.js"></script>
-        <link rel="localization" hreflang="en" href="i18n/smc-en.json" type="application/l10n+json"/>
-        <link rel="localization" hreflang="ml" href="i18n/smc-ml.json" type="application/l10n+json"/>
-    </body>
+<!--[if gt IE 8]><!-->
+<html class="no-js">
+<!--<![endif]-->
 
+<head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <title>Swathanthra Malayalam Computing</title>
+    <meta name="description" content="Swathanthra Malayalam Computing">
+    <meta name="keywords" content="SMC, Swathanthra Malayalam Computing, Malayalam, Community, Wiki">
+    <meta name="viewport" content="width=device-width">
+    <link rel="stylesheet" href="css/style.css">
+    <link href='//fonts.googleapis.com/css?family=Open+Sans:400' rel='stylesheet' type='text/css'>
+    <link rel="shortcut icon" type="image/png" href="favicon.png" />
+    <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
+    crossorigin="anonymous"></script>
+    <script src="js/jquery.i18n.js"></script>
+    <script src="js/jquery.i18n.messagestore.js"></script>
+    <script src="js/script.js"></script>
+</head>
 
-    <script id="template-homepage" type="text/template">
+<body>
+    <div id="top-bar">
+    </div>
+    <div class="wrapper">
+        <ul class="lang-selector">
+            <li><a class="language active" data-language="en">English</a></li>
+            <li><span>|</span></li>
+            <li><a class="language" data-language="ml">മലയാളം‌‌</a></li>
+        </ul>
+    </div>
+    <div id="homepage">
         <div class="wrapper" id="main-content">
             <div class="sidebar">
                 <div id="logo">
                     <img src="img/logo.png" />
                 </div>
                 <div id="external-links">
-			<ul id="links">
-			<li>
-                           <a href="https://blog.smc.org.in/"><%= $.i18n('menu-blog') %></a>
-			</li>
+                    <ul id="links">
                         <li>
-                            <a href="https://wiki.smc.org.in/"><%= $.i18n('menu-wiki') %></a>
+                            <a href="https://blog.smc.org.in/" data-i18n='menu-blog'></a>
                         </li>
                         <li>
-                            <a href="http://libindic.org/" target="_blank"><%= $.i18n('menu-libindic') %></a>
+                            <a href="https://wiki.smc.org.in/" data-i18n='menu-wiki'></a>
                         </li>
                         <li>
-                            <a href="https://indicproject.org/" target="_blank"><%= $.i18n('menu-indicproject') %></a>
+                            <a href="http://libindic.org/" target="_blank" data-i18n='menu-libindic'></a>
                         </li>
                         <li>
-                            <a href="https://smc.org.in/fonts/"><%= $.i18n('menu-fonts') %></a>
+                            <a href="https://indicproject.org/" target="_blank" data-i18n='menu-indicproject'></a>
                         </li>
                         <li>
-                            <a href="https://gitlab.com/smc" target="_blank"><%= $.i18n('menu-git') %></a>
+                            <a href="https://smc.org.in/fonts/" data-i18n='menu-fonts'></a>
                         </li>
                         <li>
-                            <a href="http://lists.smc.org.in/listinfo.cgi/discuss-smc.org.in" target="_blank"><%= $.i18n('menu-list') %></a>
+                            <a href="https://gitlab.com/smc" target="_blank" data-i18n='menu-git'></a>
                         </li>
                         <li>
-                            <a href="https://webchat.freenode.net/?randomnick=0&channels=smc-project" target="_blank"><%= $.i18n('menu-irc') %></a>
+                            <a href="http://lists.smc.org.in/listinfo.cgi/discuss-smc.org.in" target="_blank" data-i18n='menu-list'></a>
                         </li>
                         <li>
-                            <a href="https://matrix.to/#/#smc-project:matrix.org" target="_blank"><%= $.i18n('menu-matrix') %></a>
+                            <a href="https://webchat.freenode.net/?randomnick=0&channels=smc-project" target="_blank"
+                                data-i18n="menu-irc"></a>
                         </li>
                         <li>
-                            <a href="https://t.me/smc_project" target="_blank"><%= $.i18n('menu-telegram') %></a>
+                            <a href="https://matrix.to/#/#smc-project:matrix.org" target="_blank" data-i18n="menu-matrix"></a>
                         </li>
                         <li>
-                            <a href="http://dhvani.sourceforge.net/" target="_blank"><%= $.i18n('menu-dhvani') %></a>
+                            <a href="https://t.me/smc_project" target="_blank" data-i18n="menu-telegram"></a>
                         </li>
                         <li>
-                            <a href="http://www.grandham.org/" target="_blank"><%= $.i18n('menu-grandhavivaram') %></a>
+                            <a href="http://dhvani.sourceforge.net/" target="_blank" data-i18n="menu-dhvani"></a>
                         </li>
                         <li>
-                            <a href="https://planet.smc.org.in/" target="_blank"><%= $.i18n('menu-planet') %></a>
+                            <a href="http://www.grandham.org/" target="_blank" data-i18n="menu-grandhavivaram"></a>
                         </li>
                         <li>
-                            <a href="https://smc.org.in/code-of-conduct.html"><%= $.i18n('code-of-conduct') %></a>
+                            <a href="https://smc.org.in/code-of-conduct.html" data-i18n="code-of-conduct"></a>
                         </li>
                     </ul>
                 </div>
@@ -169,24 +87,28 @@
                     <ul id="social">
                         <li><a id="social-icon-1" href="https://www.facebook.com/SMC.Project" target="_blank">Facebook</a></li>
                         <li><a id="social-icon-2" href="https://twitter.com/smcproject" target="_blank">Twitter</a></li>
-                        <li><a id="social-icon-3" href="https://identi.ca/smcproject" target="_blank">Identi.ca</a></li>
-                        <li><a id="social-icon-4" href="https://plus.google.com/114205080648406335851/" target="_blank">Google Plus</a></li>
-                        <li><a id="social-icon-5" href="https://diasp.org/people/71abaf650562c0a9" target="_blank">Diaspora</a></li>
+                        <li><a id="social-icon-3" href="https://plus.google.com/114205080648406335851/" target="_blank">Google
+                                Plus</a></li>
+                        <li><a id="social-icon-4" href="https://diasp.org/people/71abaf650562c0a9" target="_blank">Diaspora</a></li>
                     </ul>
                 </div>
             </div>
             <div class="content">
                 <div id="title">
-                    <h1 id="title"><%= $.i18n('title') %></h1>
+                    <h1 id="title" data-i18n="title">
+                        Swathanthra Malayalam Computing
+                    </h1>
                 </div>
-                <div id="about"><%= $.i18n('about') %></div>
+                <div id="about" data-i18n="[html]about"></div>
             </div>
         </div>
         <footer>
             <div class="wrapper">
-                <hr/>
-                <div id="copyleft"><%= $.i18n('copyleft-msg', '<span>©</span>') %></div>
+                <hr />
+                <div id="copyleft" data-i18n="[html]copyleft-msg"></div>
             </div>
         </footer>
-    </script>
-</html>
+    </div>
+</body>
+
+</html>
\ No newline at end of file


=====================================
js/jquery.i18n.js
=====================================
@@ -0,0 +1,296 @@
+/*!
+ * jQuery Internationalization library
+ *
+ * Copyright (C) 2012 Santhosh Thottingal
+ *
+ * jquery.i18n is dual licensed GPLv2 or later and MIT. You don't have to do
+ * anything special to choose one license or the other and you don't have to
+ * notify anyone which license you are using. You are free to use
+ * UniversalLanguageSelector in commercial projects as long as the copyright
+ * header is left intact. See files GPL-LICENSE and MIT-LICENSE for details.
+ *
+ * @licence GNU General Public Licence 2.0 or later
+ * @licence MIT License
+ */
+
+( function ( $ ) {
+	'use strict';
+
+	var I18N,
+		slice = Array.prototype.slice;
+	/**
+	 * @constructor
+	 * @param {Object} options
+	 */
+	I18N = function ( options ) {
+		// Load defaults
+		this.options = $.extend( {}, I18N.defaults, options );
+
+		this.parser = this.options.parser;
+		this.locale = this.options.locale;
+		this.messageStore = this.options.messageStore;
+		this.languages = {};
+	};
+
+	I18N.prototype = {
+		/**
+		 * Localize a given messageKey to a locale.
+		 * @param {String} messageKey
+		 * @return {String} Localized message
+		 */
+		localize: function ( messageKey ) {
+			var localeParts, localePartIndex, locale, fallbackIndex,
+				tryingLocale, message;
+
+			locale = this.locale;
+			fallbackIndex = 0;
+
+			while ( locale ) {
+				// Iterate through locales starting at most-specific until
+				// localization is found. As in fi-Latn-FI, fi-Latn and fi.
+				localeParts = locale.split( '-' );
+				localePartIndex = localeParts.length;
+
+				do {
+					tryingLocale = localeParts.slice( 0, localePartIndex ).join( '-' );
+					message = this.messageStore.get( tryingLocale, messageKey );
+
+					if ( message ) {
+						return message;
+					}
+
+					localePartIndex--;
+				} while ( localePartIndex );
+
+				if ( locale === 'en' ) {
+					break;
+				}
+
+				locale = ( $.i18n.fallbacks[ this.locale ] &&
+						$.i18n.fallbacks[ this.locale ][ fallbackIndex ] ) ||
+						this.options.fallbackLocale;
+				$.i18n.log( 'Trying fallback locale for ' + this.locale + ': ' + locale + ' (' + messageKey + ')' );
+
+				fallbackIndex++;
+			}
+
+			// key not found
+			return '';
+		},
+
+		/*
+		 * Destroy the i18n instance.
+		 */
+		destroy: function () {
+			$.removeData( document, 'i18n' );
+		},
+
+		/**
+		 * General message loading API This can take a URL string for
+		 * the json formatted messages. Example:
+		 * <code>load('path/to/all_localizations.json');</code>
+		 *
+		 * To load a localization file for a locale:
+		 * <code>
+		 * load('path/to/de-messages.json', 'de' );
+		 * </code>
+		 *
+		 * To load a localization file from a directory:
+		 * <code>
+		 * load('path/to/i18n/directory', 'de' );
+		 * </code>
+		 * The above method has the advantage of fallback resolution.
+		 * ie, it will automatically load the fallback locales for de.
+		 * For most usecases, this is the recommended method.
+		 * It is optional to have trailing slash at end.
+		 *
+		 * A data object containing message key- message translation mappings
+		 * can also be passed. Example:
+		 * <code>
+		 * load( { 'hello' : 'Hello' }, optionalLocale );
+		 * </code>
+		 *
+		 * A source map containing key-value pair of languagename and locations
+		 * can also be passed. Example:
+		 * <code>
+		 * load( {
+		 * bn: 'i18n/bn.json',
+		 * he: 'i18n/he.json',
+		 * en: 'i18n/en.json'
+		 * } )
+		 * </code>
+		 *
+		 * If the data argument is null/undefined/false,
+		 * all cached messages for the i18n instance will get reset.
+		 *
+		 * @param {string|Object} source
+		 * @param {string} locale Language tag
+		 * @return {jQuery.Promise}
+		 */
+		load: function ( source, locale ) {
+			var fallbackLocales, locIndex, fallbackLocale, sourceMap = {};
+			if ( !source && !locale ) {
+				source = 'i18n/' + $.i18n().locale + '.json';
+				locale = $.i18n().locale;
+			}
+			if ( typeof source === 'string' &&
+				// source extension should be json, but can have query params after that.
+				source.split( '?' )[ 0 ].split( '.' ).pop() !== 'json'
+			) {
+				// Load specified locale then check for fallbacks when directory is
+				// specified in load()
+				sourceMap[ locale ] = source + '/' + locale + '.json';
+				fallbackLocales = ( $.i18n.fallbacks[ locale ] || [] )
+					.concat( this.options.fallbackLocale );
+				for ( locIndex = 0; locIndex < fallbackLocales.length; locIndex++ ) {
+					fallbackLocale = fallbackLocales[ locIndex ];
+					sourceMap[ fallbackLocale ] = source + '/' + fallbackLocale + '.json';
+				}
+				return this.load( sourceMap );
+			} else {
+				return this.messageStore.load( source, locale );
+			}
+
+		},
+
+		/**
+		 * Does parameter and magic word substitution.
+		 *
+		 * @param {string} key Message key
+		 * @param {Array} parameters Message parameters
+		 * @return {string}
+		 */
+		parse: function ( key, parameters ) {
+			var message = this.localize( key );
+			// FIXME: This changes the state of the I18N object,
+			// should probably not change the 'this.parser' but just
+			// pass it to the parser.
+			this.parser.language = $.i18n.languages[ $.i18n().locale ] || $.i18n.languages[ 'default' ];
+			if ( message === '' ) {
+				message = key;
+			}
+			return this.parser.parse( message, parameters );
+		}
+	};
+
+	/**
+	 * Process a message from the $.I18N instance
+	 * for the current document, stored in jQuery.data(document).
+	 *
+	 * @param {string} key Key of the message.
+	 * @param {string} param1 [param...] Variadic list of parameters for {key}.
+	 * @return {string|$.I18N} Parsed message, or if no key was given
+	 * the instance of $.I18N is returned.
+	 */
+	$.i18n = function ( key, param1 ) {
+		var parameters,
+			i18n = $.data( document, 'i18n' ),
+			options = typeof key === 'object' && key;
+
+		// If the locale option for this call is different then the setup so far,
+		// update it automatically. This doesn't just change the context for this
+		// call but for all future call as well.
+		// If there is no i18n setup yet, don't do this. It will be taken care of
+		// by the `new I18N` construction below.
+		// NOTE: It should only change language for this one call.
+		// Then cache instances of I18N somewhere.
+		if ( options && options.locale && i18n && i18n.locale !== options.locale ) {
+			i18n.locale = options.locale;
+		}
+
+		if ( !i18n ) {
+			i18n = new I18N( options );
+			$.data( document, 'i18n', i18n );
+		}
+
+		if ( typeof key === 'string' ) {
+			if ( param1 !== undefined ) {
+				parameters = slice.call( arguments, 1 );
+			} else {
+				parameters = [];
+			}
+
+			return i18n.parse( key, parameters );
+		} else {
+			// FIXME: remove this feature/bug.
+			return i18n;
+		}
+	};
+
+	$.fn.i18n = function () {
+		var i18n = $.data( document, 'i18n' );
+
+		if ( !i18n ) {
+			i18n = new I18N();
+			$.data( document, 'i18n', i18n );
+		}
+
+		return this.each( function () {
+			var $this = $( this ),
+				messageKey = $this.data( 'i18n' ),
+				lBracket, rBracket, type, key;
+
+			if ( messageKey ) {
+				lBracket = messageKey.indexOf( '[' );
+				rBracket = messageKey.indexOf( ']' );
+				if ( lBracket !== -1 && rBracket !== -1 && lBracket < rBracket ) {
+					type = messageKey.slice( lBracket + 1, rBracket );
+					key = messageKey.slice( rBracket + 1 );
+					if ( type === 'html' ) {
+						$this.html( i18n.parse( key ) );
+					} else {
+						$this.attr( type, i18n.parse( key ) );
+					}
+				} else {
+					$this.text( i18n.parse( messageKey ) );
+				}
+			} else {
+				$this.find( '[data-i18n]' ).i18n();
+			}
+		} );
+	};
+
+	function getDefaultLocale() {
+		var nav, locale = $( 'html' ).attr( 'lang' );
+
+		if ( !locale ) {
+			if ( typeof window.navigator !== undefined ) {
+				nav = window.navigator;
+				locale = nav.language || nav.userLanguage || '';
+			} else {
+				locale = '';
+			}
+		}
+		return locale;
+	}
+
+	$.i18n.languages = {};
+	$.i18n.messageStore = $.i18n.messageStore || {};
+	$.i18n.parser = {
+		// The default parser only handles variable substitution
+		parse: function ( message, parameters ) {
+			return message.replace( /\$(\d+)/g, function ( str, match ) {
+				var index = parseInt( match, 10 ) - 1;
+				return parameters[ index ] !== undefined ? parameters[ index ] : '$' + match;
+			} );
+		},
+		emitter: {}
+	};
+	$.i18n.fallbacks = {};
+	$.i18n.debug = false;
+	$.i18n.log = function ( /* arguments */ ) {
+		if ( window.console && $.i18n.debug ) {
+			window.console.log.apply( window.console, arguments );
+		}
+	};
+	/* Static members */
+	I18N.defaults = {
+		locale: getDefaultLocale(),
+		fallbackLocale: 'en',
+		parser: $.i18n.parser,
+		messageStore: $.i18n.messageStore
+	};
+
+	// Expose constructor
+	$.i18n.constructor = I18N;
+}( jQuery ) );


=====================================
js/jquery.i18n.messagestore.js
=====================================
@@ -0,0 +1,126 @@
+/*!
+ * jQuery Internationalization library - Message Store
+ *
+ * Copyright (C) 2012 Santhosh Thottingal
+ *
+ * jquery.i18n is dual licensed GPLv2 or later and MIT. You don't have to do anything special to
+ * choose one license or the other and you don't have to notify anyone which license you are using.
+ * You are free to use UniversalLanguageSelector in commercial projects as long as the copyright
+ * header is left intact. See files GPL-LICENSE and MIT-LICENSE for details.
+ *
+ * @licence GNU General Public Licence 2.0 or later
+ * @licence MIT License
+ */
+
+( function ( $ ) {
+	'use strict';
+
+	var MessageStore = function () {
+		this.messages = {};
+		this.sources = {};
+	};
+
+	function jsonMessageLoader( url ) {
+		var deferred = $.Deferred();
+
+		$.getJSON( url )
+			.done( deferred.resolve )
+			.fail( function ( jqxhr, settings, exception ) {
+				$.i18n.log( 'Error in loading messages from ' + url + ' Exception: ' + exception );
+				// Ignore 404 exception, because we are handling fallabacks explicitly
+				deferred.resolve();
+			} );
+
+		return deferred.promise();
+	}
+
+	/**
+	 * See https://github.com/wikimedia/jquery.i18n/wiki/Specification#wiki-Message_File_Loading
+	 */
+	MessageStore.prototype = {
+
+		/**
+		 * General message loading API This can take a URL string for
+		 * the json formatted messages.
+		 * <code>load('path/to/all_localizations.json');</code>
+		 *
+		 * This can also load a localization file for a locale <code>
+		 * load( 'path/to/de-messages.json', 'de' );
+		 * </code>
+		 * A data object containing message key- message translation mappings
+		 * can also be passed Eg:
+		 * <code>
+		 * load( { 'hello' : 'Hello' }, optionalLocale );
+		 * </code> If the data argument is
+		 * null/undefined/false,
+		 * all cached messages for the i18n instance will get reset.
+		 *
+		 * @param {string|Object} source
+		 * @param {string} locale Language tag
+		 * @return {jQuery.Promise}
+		 */
+		load: function ( source, locale ) {
+			var key = null,
+				deferred = null,
+				deferreds = [],
+				messageStore = this;
+
+			if ( typeof source === 'string' ) {
+				// This is a URL to the messages file.
+				$.i18n.log( 'Loading messages from: ' + source );
+				deferred = jsonMessageLoader( source )
+					.done( function ( localization ) {
+						messageStore.set( locale, localization );
+					} );
+
+				return deferred.promise();
+			}
+
+			if ( locale ) {
+				// source is an key-value pair of messages for given locale
+				messageStore.set( locale, source );
+
+				return $.Deferred().resolve();
+			} else {
+				// source is a key-value pair of locales and their source
+				for ( key in source ) {
+					if ( Object.prototype.hasOwnProperty.call( source, key ) ) {
+						locale = key;
+						// No {locale} given, assume data is a group of languages,
+						// call this function again for each language.
+						deferreds.push( messageStore.load( source[ key ], locale ) );
+					}
+				}
+				return $.when.apply( $, deferreds );
+			}
+
+		},
+
+		/**
+		 * Set messages to the given locale.
+		 * If locale exists, add messages to the locale.
+		 *
+		 * @param {string} locale
+		 * @param {Object} messages
+		 */
+		set: function ( locale, messages ) {
+			if ( !this.messages[ locale ] ) {
+				this.messages[ locale ] = messages;
+			} else {
+				this.messages[ locale ] = $.extend( this.messages[ locale ], messages );
+			}
+		},
+
+		/**
+		 *
+		 * @param {string} locale
+		 * @param {string} messageKey
+		 * @return {boolean}
+		 */
+		get: function ( locale, messageKey ) {
+			return this.messages[ locale ] && this.messages[ locale ][ messageKey ];
+		}
+	};
+
+	$.extend( $.i18n.messageStore, new MessageStore() );
+}( jQuery ) );


=====================================
js/jquery.i18n.min.js deleted
=====================================
@@ -1,4 +0,0 @@
-/*! jquery.i18n - v0.1.0 - 2013-03-28
-* https://github.com/wikimedia/jquery.i18n
-* Copyright (c) 2013 Santhosh Thottingal; Licensed GPL, MIT */
-(function(e){"use strict";var t,n=Array.prototype.slice,r=function(t){this.options=e.extend({},r.defaults,t),this.parser=this.options.parser,this.locale=this.options.locale,this.messageStore=this.options.messageStore,this.languages={},this.init()};r.prototype={init:function(){var t;t=this,t.messageStore.init(t.locale),String.locale=t.locale,String.prototype.toLocaleString=function(){var n,r,i,s,o,u;s=this.valueOf(),o=t.locale,u=0;while(o){n=o.toLowerCase().split("-"),i=n.length;do{var a=n.slice(0,i).join("-");t.options.messageLocationResolver&&(r=t.options.messageLocationResolver(a,s),r&&!t.messageStore.isLoaded(a,r)&&t.messageStore.load(r,a));var f=t.messageStore.get(a,s);if(f)return f;i--}while(i);if(o==="en")break;o=e.i18n.fallbacks[t.locale]&&e.i18n.fallbacks[t.locale][u]||t.options.fallbackLocale,t.log("Trying fallback locale for "+t.locale+": "+o),u++}return""}},destroy:function(){e.removeData(document,"i18n")},load:function(e,t){this.messageStore.load(e,t)},log:function(){window.console&&e.i18n.debug&&window.console.log.apply(window.console,arguments)},parse:function(t,n){var r=t.toLocaleString();return this.parser.language=e.i18n.languages[e.i18n().locale]||e.i18n.languages["default"],r===""&&(r=t),this.parser.parse(r,n)}},e.i18n=function(t,i){var s,o=e.data(document,"i18n"),u=typeof t=="object"&&t;return u&&u.locale&&o&&o.locale!==u.locale&&(String.locale=o.locale=u.locale),o||(o=new r(u),e.data(document,"i18n",o)),typeof t=="string"?(i!==undefined?s=n.call(arguments,1):s=[],o.parse(t,s)):o},e.fn.i18n=function(){var t=e.data(document,"i18n");return String.locale=t.locale,t||(t=new r,e.data(document,"i18n",t)),this.each(function(){var t=e(this);if(t.data("i18n")){var n=t.data("i18n"),r=n.toLocaleString();r!==""&&t.text(r)}else t.find("[data-i18n]").i18n()})},String.locale=String.locale||e("html").attr("lang"),String.locale||(typeof window.navigator!==undefined?(t=window.navigator,String.locale=t.language||t.userLanguage||""):String.locale=""),e.i18n.languages={},e.i18n.messageStore=e.i18n.messageStore||{},e.i18n.parser={parse:function(e,t){return e.replace(/\$(\d+)/g,function(e,n){var r=parseInt(n,10)-1;return t[r]!==undefined?t[r]:"$"+n})},emitter:{}},e.i18n.debug=!1,r.defaults={locale:String.locale,fallbackLocale:"en",parser:e.i18n.parser,messageStore:e.i18n.messageStore,messageLocationResolver:null},e.I18N=r})(jQuery),function(e,t,n){"use strict";var r=function(){this.messages={},this.sources={},this.locale=String.locale};r.prototype={init:function(t){var n=this;n.locale=t,n.log("initializing for "+t),e("link").each(function(t,r){var i=e(r),s=(i.attr("rel")||"").toLowerCase().split(/\s+/);e.inArray("localizations",s)!==-1?n.load(i.attr("href")):e.inArray("localization",s)!==-1&&n.queue((i.attr("hreflang")||"").toLowerCase(),i.attr("href"))})},load:function(e,t){var n=null,r=this,i=Object.prototype.hasOwnProperty;if(!e){r.log("Resetting for locale "+t),r.messages={};return}if(typeof e=="string")r.log("Loading messages from: "+e),r.jsonMessageLoader(e).done(function(n,i){r.load(n,t),r.queue(t,e),r.markLoaded(t,e)});else for(n in e)i.call(e,n)&&(t?(r.messages[t]||(r.messages[t]={}),r.messages[t][n]=e[n],r.log("["+t+"]["+n+"] : "+e[n])):r.load(e[n],n))},log:function(){t.console&&e.i18n.debug&&t.console.log.apply(t.console,arguments)},markLoaded:function(e,t){var n,r=this.sources[e];r||(this.queue(e,t),r=this.sources[e]),this.sources[e]=this.sources[e]||[];for(n=0;n<r.length;n++)if(r[n].source.url===t){r[n].source.loaded=!0;return}},queue:function(e,t){var n,r=this.sources[e];this.sources[e]=this.sources[e]||[];if(r)for(n=0;n<r.length;n++)if(r[n].source.url===t)return;this.log("Source for: "+e+" is "+t+" registered"),this.sources[e].push({source:{url:t,loaded:!1}})},loadFromQueue:function(e){var t,n=this.sources[e];if(n)for(t=0;t<n.length;t++)n[t].source.loaded||(this.load(n[t].source.url,e),this.sources[e][t].source.loaded=!0)},isLoaded:function(e,t){var n,r=this.sources[e],i=!1;if(r)for(n=0;n<r.length;n++)r[n].source.url===t&&(i=!0);return i},jsonMessageLoader:function(t){var n=this;return e.ajax({url:t,dataType:"json",async:!1}).fail(function(e,r,i){n.log("Error in loading messages from "+t+" Exception: "+i)})},get:function(e,t){return this.messages[e]||this.loadFromQueue(e),this.messages[e]&&this.messages[e][t]}},e.extend(e.i18n.messageStore,new r)}(jQuery,window),function(e,t){"use strict";e.i18n=e.i18n||{},e.i18n.fallbacks={ab:["ru"],ace:["id"],aln:["sq"],als:["gsw","de"],an:["es"],anp:["hi"],arn:["es"],arz:["ar"],av:["ru"],ay:["es"],ba:["ru"],bar:["de"],"bat-smg":["sgs","lt"],bcc:["fa"],"be-x-old":["be-tarask"],bh:["bho"],bjn:["id"],bm:["fr"],bpy:["bn"],bqi:["fa"],bug:["id"],"cbk-zam":["es"],ce:["ru"],crh:["crh-latn"],"crh-cyrl":["ru"],csb:["pl"],cv:["ru"],"de-at":["de"],"de-ch":["de"],"de-formal":["de"],dsb:["de"],dtp:["ms"],egl:["it"],eml:["it"],ff:["fr"],fit:["fi"],"fiu-vro":["vro","et"],frc:["fr"],frp:["fr"],frr:["de"],fur:["it"],gag:["tr"],gan:["gan-hant","zh-hant","zh-hans"],"gan-hans":["zh-hans"],"gan-hant":["zh-hant","zh-hans"],gl:["pt"],glk:["fa"],gn:["es"],gsw:["de"],hif:["hif-latn"],hsb:["de"],ht:["fr"],ii:["zh-cn","zh-hans"],inh:["ru"],iu:["ike-cans"],jut:["da"],jv:["id"],kaa:["kk-latn","kk-cyrl"],kbd:["kbd-cyrl"],khw:["ur"],kiu:["tr"],kk:["kk-cyrl"],"kk-arab":["kk-cyrl"],"kk-latn":["kk-cyrl"],"kk-cn":["kk-arab","kk-cyrl"],"kk-kz":["kk-cyrl"],"kk-tr":["kk-latn","kk-cyrl"],kl:["da"],"ko-kp":["ko"],koi:["ru"],krc:["ru"],ks:["ks-arab"],ksh:["de"],ku:["ku-latn"],"ku-arab":["ckb"],kv:["ru"],lad:["es"],lb:["de"],lbe:["ru"],lez:["ru"],li:["nl"],lij:["it"],liv:["et"],lmo:["it"],ln:["fr"],ltg:["lv"],lzz:["tr"],mai:["hi"],"map-bms":["jv","id"],mg:["fr"],mhr:["ru"],min:["id"],mo:["ro"],mrj:["ru"],mwl:["pt"],myv:["ru"],mzn:["fa"],nah:["es"],nap:["it"],nds:["de"],"nds-nl":["nl"],"nl-informal":["nl"],no:["nb"],os:["ru"],pcd:["fr"],pdc:["de"],pdt:["de"],pfl:["de"],pms:["it"],pt:["pt-br"],"pt-br":["pt"],qu:["es"],qug:["qu","es"],rgn:["it"],rmy:["ro"],"roa-rup":["rup"],rue:["uk","ru"],ruq:["ruq-latn","ro"],"ruq-cyrl":["mk"],"ruq-latn":["ro"],sa:["hi"],sah:["ru"],scn:["it"],sg:["fr"],sgs:["lt"],sli:["de"],sr:["sr-ec"],srn:["nl"],stq:["de"],su:["id"],szl:["pl"],tcy:["kn"],tg:["tg-cyrl"],tt:["tt-cyrl","ru"],"tt-cyrl":["ru"],ty:["fr"],udm:["ru"],ug:["ug-arab"],uk:["ru"],vec:["it"],vep:["et"],vls:["nl"],vmf:["de"],vot:["fi"],vro:["et"],wa:["fr"],wo:["fr"],wuu:["zh-hans"],xal:["ru"],xmf:["ka"],yi:["he"],za:["zh-hans"],zea:["nl"],zh:["zh-hans"],"zh-classical":["lzh"],"zh-cn":["zh-hans"],"zh-hant":["zh-hans"],"zh-hk":["zh-hant","zh-hans"],"zh-min-nan":["nan"],"zh-mo":["zh-hk","zh-hant","zh-hans"],"zh-my":["zh-sg","zh-hans"],"zh-sg":["zh-hans"],"zh-tw":["zh-hant","zh-hans"],"zh-yue":["yue"]}}(jQuery),function(e){"use strict";var t=function(t){this.options=e.extend({},e.i18n.parser.defaults,t),this.language=e.i18n.languages[String.locale]||e.i18n.languages["default"],this.emitter=e.i18n.parser.emitter};t.prototype={constructor:t,simpleParse:function(e,t){return e.replace(/\$(\d+)/g,function(e,n){var r=parseInt(n,10)-1;return t[r]!==undefined?t[r]:"$"+n})},parse:function(t,n){return t.indexOf("{{")<0?this.simpleParse(t,n):(this.emitter.language=e.i18n.languages[e.i18n().locale]||e.i18n.languages["default"],this.emitter.emit(this.ast(t),n))},ast:function(e){function n(e){return function(){var t,n;for(t=0;t<e.length;t++){n=e[t]();if(n!==null)return n}return null}}function r(e){var n,r,i=t,s=[];for(n=0;n<e.length;n++){r=e[n]();if(r===null)return t=i,null;s.push(r)}return s}function i(e,n){return function(){var r=t,i=[],s=n();while(s!==null)i.push(s),s=n();return i.length<e?(t=r,null):i}}function s(n){var r=n.length;return function(){var i=null;return e.substr(t,r)===n&&(i=n,t+=r),i}}function o(n){return function(){var r=e.substr(t).match(n);return r===null?null:(t+=r[0].length,r[0])}}function m(e,t){return function(){var n=e();return n===null?null:t(n)}}function g(){var e=i(1,w)();return e===null?null:e.join("")}function y(){var e=i(1,E)();return e===null?null:e.join("")}function b(){var e=r([f,l]);return e===null?null:e[1]}function S(){var e=r([c,h]);return e===null?null:["REPLACE",parseInt(e[1],10)-1]}function T(){var e=r([u,i(0,_)]);if(e===null)return null;var t=e[1];return t.length>1?["CONCAT"].concat(t):t[0]}function N(){var e=r([x,a,S]);return e===null?null:[e[0],e[2]]}function C(){var e=r([x,a,_]);return e===null?null:[e[0],e[2]]}function O(){var e=r([L,k,A]);return e===null?null:e[1]}function D(){var e=i(0,M)();return e===null?null:["CONCAT"].concat(e)}var t=0,u=s("|"),a=s(":"),f=s("\\"),l=o(/^./),c=s("$"),h=o(/^\d+/),p=o(/^[^{}\[\]$\\]/),d=o(/^[^{}\[\]$\\|]/),v=o(/^[^{}\[\]$\s]/);n([b,v]);var w=n([b,d]),E=n([b,p]),x=m(o(/^[ !"$&'()*,.\/0-9;=?@A-Z\^_`a-z~\x80-\xFF+\-]+/),function(e){return e.toString()}),k=n([function(){var e=r([n([N,C]),i(0,T)]);return e===null?null:e[0].concat(e[1])},function(){var e=r([x,i(0,T)]);return e===null?null:[e[0]].concat(e[1])}]),L=s("{{"),A=s("}}"),M=n([O,S,y]),_=n([O,S,g]),P=D();if(P===null||t!==e.length)throw new Error("Parse error at position "+t.toString()+" in input: "+e);return P}},e.extend(e.i18n.parser,new t)}(jQuery),function(e){"use strict";var t=function(){this.language=e.i18n.languages[String.locale]||e.i18n.languages["default"]};t.prototype={constructor:t,emit:function(t,n){var r,i,s,o=this;switch(typeof t){case"string":case"number":r=t;break;case"object":i=e.map(t.slice(1),function(e){return o.emit(e,n)}),s=t[0].toLowerCase();if(typeof o[s]!="function")throw new Error('unknown operation "'+s+'"');r=o[s](i,n);break;case"undefined":r="";break;default:throw new Error("unexpected type in AST: "+typeof t)}return r},concat:function(t){var n="";return e.each(t,function(e,t){n+=t}),n},replace:function(e,t){var n=parseInt(e[0],10);return n<t.length?t[n]:"$"+(n+1)},plural:function(e){var t=parseFloat(this.language.convertNumber(e[0],10)),n=e.slice(1);return n.length?this.language.convertPlural(t,n):""},gender:function(e){var t=e[0],n=e.slice(1);return this.language.gender(t,n)},grammar:function(e){var t=e[0],n=e[1];return n&&t&&this.language.convertGrammar(n,t)}},e.extend(e.i18n.parser.emitter,new t)}(jQuery),function(e){"use strict";var t={pluralRules:{gv:{one:"n mod 10 in 1..2 or n mod 20 is 0"},gu:{one:"n is 1"},rof:{one:"n is 1"},ga:{few:"n in 3..6",many:"n in 7..10",two:"n is 2",one:"n is 1"},gl:{one:"n is 1"},lg:{one:"n is 1"},lb:{one:"n is 1"},xog:{one:"n is 1"},ln:{one:"n in 0..1"},lo:"",brx:{one:"n is 1"},tr:"",ts:{one:"n is 1"},tn:{one:"n is 1"},to:"",lt:{few:"n mod 10 in 2..9 and n mod 100 not in 11..19",one:"n mod 10 is 1 and n mod 100 not in 11..19"},tk:{one:"n is 1"},th:"",ksb:{one:"n is 1"},te:{one:"n is 1"},ksh:{zero:"n is 0",one:"n is 1"},fil:{one:"n in 0..1"},haw:{one:"n is 1"},kcg:{one:"n is 1"},ssy:{one:"n is 1"},yo:"",de:{one:"n is 1"},ko:"",da:{one:"n is 1"},dz:"",dv:{one:"n is 1"},guw:{one:"n in 0..1"},shi:{few:"n in 2..10",one:"n within 0..1"},el:{one:"n is 1"},eo:{one:"n is 1"},en:{one:"n is 1"},ses:"",teo:{one:"n is 1"},ee:{one:"n is 1"},kde:"",fr:{one:"n within 0..2 and n is not 2"},eu:{one:"n is 1"},et:{one:"n is 1"},es:{one:"n is 1"},seh:{one:"n is 1"},ru:{few:"n mod 10 in 2..4 and n mod 100 not in 12..14",many:"n mod 10 is 0 or n mod 10 in 5..9 or n mod 100 in 11..14",one:"n mod 10 is 1 and n mod 100 is not 11"},kl:{one:"n is 1"},sms:{two:"n is 2",one:"n is 1"},smn:{two:"n is 2",one:"n is 1"},smj:{two:"n is 2",one:"n is 1"},smi:{two:"n is 2",one:"n is 1"},fy:{one:"n is 1"},rm:{one:"n is 1"},ro:{few:"n is 0 OR n is not 1 AND n mod 100 in 1..19",one:"n is 1"},bn:{one:"n is 1"},sma:{two:"n is 2",one:"n is 1"},be:{few:"n mod 10 in 2..4 and n mod 100 not in 12..14",many:"n mod 10 is 0 or n mod 10 in 5..9 or n mod 100 in 11..14",one:"n mod 10 is 1 and n mod 100 is not 11"},bg:{one:"n is 1"},ms:"",wa:{one:"n in 0..1"},ps:{one:"n is 1"},wo:"",bm:"",jv:"",bo:"",bh:{one:"n in 0..1"},kea:"",asa:{one:"n is 1"},cgg:{one:"n is 1"},br:{few:"n mod 10 in 3..4,9 and n mod 100 not in 10..19,70..79,90..99",many:"n mod 1000000 is 0 and n is not 0",two:"n mod 10 is 2 and n mod 100 not in 12,72,92",one:"n mod 10 is 1 and n mod 100 not in 11,71,91"},bs:{few:"n mod 10 in 2..4 and n mod 100 not in 12..14",many:"n mod 10 is 0 or n mod 10 in 5..9 or n mod 100 in 11..14",one:"n mod 10 is 1 and n mod 100 is not 11"},ja:"",om:{one:"n is 1"},fa:"",vun:{one:"n is 1"},or:{one:"n is 1"},xh:{one:"n is 1"},nso:{one:"n in 0..1"},ca:{one:"n is 1"},cy:{few:"n is 3",zero:"n is 0",many:"n is 6",two:"n is 2",one:"n is 1"},cs:{few:"n in 2..4",one:"n is 1"},zh:"",lv:{zero:"n is 0",one:"n mod 10 is 1 and n mod 100 is not 11"},pt:{one:"n is 1"},wae:{one:"n is 1"},tl:{one:"n in 0..1"},chr:{one:"n is 1"},pa:{one:"n is 1"},ak:{one:"n in 0..1"},pl:{few:"n mod 10 in 2..4 and n mod 100 not in 12..14",many:"n is not 1 and n mod 10 in 0..1 or n mod 10 in 5..9 or n mod 100 in 12..14",one:"n is 1"},hr:{few:"n mod 10 in 2..4 and n mod 100 not in 12..14",many:"n mod 10 is 0 or n mod 10 in 5..9 or n mod 100 in 11..14",one:"n mod 10 is 1 and n mod 100 is not 11"},am:{one:"n in 0..1"},ti:{one:"n in 0..1"},hu:"",hi:{one:"n in 0..1"},jmc:{one:"n is 1"},ha:{one:"n is 1"},he:{one:"n is 1"},mg:{one:"n in 0..1"},fur:{one:"n is 1"},bem:{one:"n is 1"},ml:{one:"n is 1"},mo:{few:"n is 0 OR n is not 1 AND n mod 100 in 1..19",one:"n is 1"},mn:{one:"n is 1"},mk:{one:"n mod 10 is 1 and n is not 11"},ur:{one:"n is 1"},bez:{one:"n is 1"},mt:{few:"n is 0 or n mod 100 in 2..10",many:"n mod 100 in 11..19",one:"n is 1"},uk:{few:"n mod 10 in 2..4 and n mod 100 not in 12..14",many:"n mod 10 is 0 or n mod 10 in 5..9 or n mod 100 in 11..14",one:"n mod 10 is 1 and n mod 100 is not 11"},mr:{one:"n is 1"},ta:{one:"n is 1"},my:"",sah:"",ve:{one:"n is 1"},af:{one:"n is 1"},vi:"",is:{one:"n is 1"},iu:{two:"n is 2",one:"n is 1"},it:{one:"n is 1"},kn:"",ii:"",ar:{few:"n mod 100 in 3..10",zero:"n is 0",many:"n mod 100 in 11..99",two:"n is 2",one:"n is 1"},zu:{one:"n is 1"},saq:{one:"n is 1"},az:"",tzm:{one:"n in 0..1 or n in 11..99"},id:"",ig:"",pap:{one:"n is 1"},nl:{one:"n is 1"},nn:{one:"n is 1"},no:{one:"n is 1"},nah:{one:"n is 1"},nd:{one:"n is 1"},ne:{one:"n is 1"},ny:{one:"n is 1"},naq:{two:"n is 2",one:"n is 1"},nyn:{one:"n is 1"},kw:{two:"n is 2",one:"n is 1"},nr:{one:"n is 1"},tig:{one:"n is 1"},kab:{one:"n within 0..2 and n is not 2"},mas:{one:"n is 1"},rwk:{one:"n is 1"},kaj:{one:"n is 1"},lag:{zero:"n is 0",one:"n within 0..2 and n is not 0 and n is not 2"},syr:{one:"n is 1"},kk:{one:"n is 1"},ff:{one:"n within 0..2 and n is not 2"},fi:{one:"n is 1"},fo:{one:"n is 1"},ka:"",gsw:{one:"n is 1"},ckb:{one:"n is 1"},ss:{one:"n is 1"},sr:{few:"n mod 10 in 2..4 and n mod 100 not in 12..14",many:"n mod 10 is 0 or n mod 10 in 5..9 or n mod 100 in 11..14",one:"n mod 10 is 1 and n mod 100 is not 11"},sq:{one:"n is 1"},sw:{one:"n is 1"},sv:{one:"n is 1"},km:"",st:{one:"n is 1"},sk:{few:"n in 2..4",one:"n is 1"},sh:{few:"n mod 10 in 2..4 and n mod 100 not in 12..14",many:"n mod 10 is 0 or n mod 10 in 5..9 or n mod 100 in 11..14",one:"n mod 10 is 1 and n mod 100 is not 11"},so:{one:"n is 1"},sn:{one:"n is 1"},ku:{one:"n is 1"},sl:{few:"n mod 100 in 3..4",two:"n mod 100 is 2",one:"n mod 100 is 1"},sg:"",nb:{one:"n is 1"},se:{two:"n is 2",one:"n is 1"}},convertPlural:function(t,n){var r,i;return!n||n.length===0?"":(r=this.pluralRules[e.i18n().locale],r?(i=this.getPluralForm(t,r),i=Math.min(i,n.length-1),n[i]):t===1?n[0]:n[1])},getPluralForm:function(e,t){var n,r=["zero","one","two","few","many","other"],i=0;for(n=0;n<r.length;n++)if(t[r[n]]){if(pluralRuleParser(t[r[n]],e))return i;i++}return i},convertNumber:function(t,n){var r,i,s,o,u,a;o=this.digitTransformTable(e.i18n().locale),u=""+t,a="";if(!o)return t;if(n){if(parseFloat(t,10)===t)return t;r=[];for(i in o)r[o[i]]=i;o=r}for(s=0;s<u.length;s++)o[u[s]]?a+=o[u[s]]:a+=u[s];return n?parseFloat(a,10):a},convertGrammar:function(e,t){return e},gender:function(e,t){if(!t||t.length===0)return"";while(t.length<2)t.push(t[t.length-1]);return e==="male"?t[0]:e==="female"?t[1]:t.length===3?t[2]:t[0]},digitTransformTable:function(e){var t={ar:"٠١٢٣٤٥٦٧٨٩",fa:"۰۱۲۳۴۵۶۷۸۹",ml:"൦൧൨൩൪൫൬൭൮൯",kn:"೦೧೨೩೪೫೬೭೮೯",lo:"໐໑໒໓໔໕໖໗໘໙",or:"୦୧୨୩୪୫୬୭୮୯",kh:"០១២៣៤៥៦៧៨៩",pa:"੦੧੨੩੪੫੬੭੮੯",gu:"૦૧૨૩૪૫૬૭૮૯",hi:"०१२३४५६७८९",my:"၀၁၂၃၄၅၆၇၈၉",ta:"௦௧௨௩௪௫௬௭௮௯",te:"౦౧౨౩౪౫౬౭౮౯",th:"๐๑๒๓๔๕๖๗๘๙",bo:"༠༡༢༣༤༥༦༧༨༩"};return t[e]?t[e].split(""):!1}};e.extend(e.i18n.languages,{"default":t})}(jQuery),function(e){"use strict";e.i18n.languages.bs=e.extend({},e.i18n.languages["default"],{convertGrammar:function(e,t){switch(t){case"instrumental":e="s "+e;break;case"lokativ":e="o "+e}return e}})}(jQuery),function(e){"use strict";e.i18n.languages.dsb=e.extend({},e.i18n.languages["default"],{convertGrammar:function(e,t){switch(t){case"instrumental":e="z "+e;break;case"lokatiw":e="wo "+e}return e}})}(jQuery),function(e){"use strict";e.i18n.languages.fi=e.extend({},e.i18n.languages["default"],{convertGrammar:function(e,t){var n=e.match(/[aou][^äöy]*$/i),r=e;e.match(/wiki$/i)&&(n=!1),e.match(/[bcdfghjklmnpqrstvwxz]$/i)&&(e+="i");switch(t){case"genitive":e+="n";break;case"elative":e+=n?"sta":"stä";break;case"partitive":e+=n?"a":"ä";break;case"illative":e+=e.substr(e.length-1)+"n";break;case"inessive":e+=n?"ssa":"ssä";break;default:e=r}return e}})}(jQuery),function(e){"use strict";e.i18n.languages.ga=e.extend({},e.i18n.languages["default"],{convertGrammar:function(e,t){if(t==="ainmlae")switch(e){case"an Domhnach":e="Dé Domhnaigh";break;case"an Luan":e="Dé Luain";break;case"an Mháirt":e="Dé Mháirt";break;case"an Chéadaoin":e="Dé Chéadaoin";break;case"an Déardaoin":e="Déardaoin";break;case"an Aoine":e="Dé hAoine";break;case"an Satharn":e="Dé Sathairn"}return e}})}(jQuery),function(e){"use strict";e.i18n.languages.he=e.extend({},e.i18n.languages["default"],{convertGrammar:function(e,t){switch(t){case"prefixed":case"תחילית":e.substr(0,1)==="ו"&&e.substr(0,2)!=="וו"&&(e="ו"+e),e.substr(0,1)==="ה"&&(e=e.substr(1,e.length));if(e.substr(0,1)<"א"||e.substr(0,1)>"ת")e="־"+e}return e}})}(jQuery),function(e){"use strict";e.i18n.languages.hsb=e.extend({},e.i18n.languages["default"],{convertGrammar:function(e,t){switch(t){case"instrumental":e="z "+e;break;case"lokatiw":e="wo "+e}return e}})}(jQuery),function(e){"use strict";e.i18n.languages.hu=e.extend({},e.i18n.languages["default"],{convertGrammar:function(e,t){switch(t){case"rol":e+="ról";break;case"ba":e+="ba";break;case"k":e+="k"}return e}})}(jQuery),function(e){"use strict";e.i18n.languages.hy=e.extend({},e.i18n.languages["default"],{convertGrammar:function(e,t){return t==="genitive"&&(e.substr(-1)==="ա"?e=e.substr(0,e.length-1)+"այի":e.substr(-1)==="ո"?e=e.substr(0,e.length-1)+"ոյի":e.substr(-4)==="գիրք"?e=e.substr(0,e.length-4)+"գրքի":e+="ի"),e}})}(jQuery),function(e){"use strict";e.i18n.languages.la=e.extend({},e.i18n.languages["default"],{convertGrammar:function(e,t){switch(t){case"genitive":e=e.replace(/u[ms]$/i,"i"),e=e.replace(/ommunia$/i,"ommunium"),e=e.replace(/a$/i,"ae"),e=e.replace(/libri$/i,"librorum"),e=e.replace(/nuntii$/i,"nuntiorum"),e=e.replace(/tio$/i,"tionis"),e=e.replace(/ns$/i,"ntis"),e=e.replace(/as$/i,"atis"),e=e.replace(/es$/i,"ei");break;case"accusative":e=e.replace(/u[ms]$/i,"um"),e=e.replace(/ommunia$/i,"am"),e=e.replace(/a$/i,"ommunia"),e=e.replace(/libri$/i,"libros"),e=e.replace(/nuntii$/i,"nuntios"),e=e.replace(/tio$/i,"tionem"),e=e.replace(/ns$/i,"ntem"),e=e.replace(/as$/i,"atem"),e=e.replace(/es$/i,"em");break;case"ablative":e=e.replace(/u[ms]$/i,"o"),e=e.replace(/ommunia$/i,"ommunibus"),e=e.replace(/a$/i,"a"),e=e.replace(/libri$/i,"libris"),e=e.replace(/nuntii$/i,"nuntiis"),e=e.replace(/tio$/i,"tione"),e=e.replace(/ns$/i,"nte"),e=e.replace(/as$/i,"ate"),e=e.replace(/es$/i,"e")}return e}})}(jQuery),function(e){"use strict";e.i18n.languages.os=e.extend({},e.i18n.languages["default"],{convertGrammar:function(e,t){var n="мæ",r="",i="",s="";e.match(/тæ$/i)?(e=e.substring(0,e.length-1),n="æм"):e.match(/[аæеёиоыэюя]$/i)?r="й":e.match(/у$/i)?e.substring(e.length-2,e.length-1).match(/[аæеёиоыэюя]$/i)||(r="й"):e.match(/[бвгджзйклмнопрстфхцчшщьъ]$/i)||(i="-");switch(t){case"genitive":s=i+r+"ы";break;case"dative":s=i+r+"æн";break;case"allative":s=i+n;break;case"ablative":r==="й"?s=i+r+"æ":s=i+r+"æй";break;case"superessive":s=i+r+"ыл";break;case"equative":s=i+r+"ау";break;case"comitative":s=i+"имæ"}return e+s}})}(jQuery),function(e){"use strict";e.i18n.languages.ru=e.extend({},e.i18n.languages["default"],{convertGrammar:function(e,t){return t==="genitive"&&e.substr(e.length-4)!=="вики"&&e.substr(e.length-4)!=="Вики"&&(e.substr(e.length-1)==="ь"?e=e.substr(0,e.length-1)+"я":e.substr(e.length-2)==="ия"?e=e.substr(0,e.length-2)+"ии":e.substr(e.length-2)==="ка"?e=e.substr(0,e.length-2)+"ки":e.substr(e.length-2)==="ти"?e=e.substr(0,e.length-2)+"тей":e.substr(e.length-2)==="ды"?e=e.substr(0,e.length-2)+"дов":e.substr(e.length-3)==="ник"&&(e=e.substr(0,e.length-3)+"ника")),e}})}(jQuery),function(e){"use strict";e.i18n.languages.sl=e.extend({},e.i18n.languages["default"],{convertGrammar:function(e,t){switch(t){case"mestnik":e="o "+e;break;case"orodnik":e="z "+e}return e}})}(jQuery),function(e){"use strict";e.i18n.languages.uk=e.extend({},e.i18n.languages["default"],{convertGrammar:function(e,t){switch(t){case"genitive":e.substr(e.length-4)!=="вікі"&&e.substr(e.length-4)!=="Вікі"&&(e.substr(e.length-1)==="ь"?e=e.substr(0,e.length-1)+"я":e.substr(e.length-2)==="ія"?e=e.substr(0,e.length-2)+"ії":e.substr(e.length-2)==="ка"?e=e.substr(0,e.length-2)+"ки":e.substr(e.length-2)==="ти"?e=e.substr(0,e.length-2)+"тей":e.substr(e.length-2)==="ды"?e=e.substr(0,e.length-2)+"дов":e.substr(e.length-3)==="ник"&&(e=e.substr(0,e.length-3)+"ника"));break;case"accusative":e.substr(e.length-4)!=="вікі"&&e.substr(e.length-4)!=="Вікі"&&e.substr(e.length-2)==="ія"&&(e=e.substr(0,e.length-2)+"ію")}return e}})}(jQuery);
\ No newline at end of file


=====================================
js/script.js
=====================================
@@ -1,18 +1,13 @@
-$(document).ready(function(){
+$(document).ready(function () {
     var i18n = $.i18n();
 
     function loadpage() {
-        var browserLanguage = navigator.language;
-        if(browserLanguage.indexOf('-') !== -1)
-        {
-            var position = browserLanguage.indexOf('-');
-            browserLanguage = browserLanguage.substring(0, position);
-        }
-        var obj = $(this),
-        language = $(this).data("language") || browserLanguage || "en";
-        i18n.locale = language;
-        $("#homepage").html(_.template($('#template-homepage').html()));
+        var browserLanguage = navigator.language.split('-')[0];
+        i18n.locale = $(this).data('language') || browserLanguage || "en";
+        i18n.load('i18n/smc-' + i18n.locale + '.json', i18n.locale).done(() => {
+            $("#homepage").i18n();
+        });
     }
     loadpage();
     $('.language').on('click', loadpage);
-} );
+});


=====================================
js/underscore-min.js deleted
=====================================
@@ -1 +0,0 @@
-(function(){var n=this,t=n._,r={},e=Array.prototype,u=Object.prototype,i=Function.prototype,a=e.push,o=e.slice,c=e.concat,l=u.toString,f=u.hasOwnProperty,s=e.forEach,p=e.map,h=e.reduce,v=e.reduceRight,d=e.filter,g=e.every,m=e.some,y=e.indexOf,b=e.lastIndexOf,x=Array.isArray,_=Object.keys,j=i.bind,w=function(n){return n instanceof w?n:this instanceof w?(this._wrapped=n,void 0):new w(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=w),exports._=w):n._=w,w.VERSION="1.4.4";var A=w.each=w.forEach=function(n,t,e){if(null!=n)if(s&&n.forEach===s)n.forEach(t,e);else if(n.length===+n.length){for(var u=0,i=n.length;i>u;u++)if(t.call(e,n[u],u,n)===r)return}else for(var a in n)if(w.has(n,a)&&t.call(e,n[a],a,n)===r)return};w.map=w.collect=function(n,t,r){var e=[];return null==n?e:p&&n.map===p?n.map(t,r):(A(n,function(n,u,i){e[e.length]=t.call(r,n,u,i)}),e)};var O="Reduce of empty array with no initial value";w.reduce=w.foldl=w.inject=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),h&&n.reduce===h)return e&&(t=w.bind(t,e)),u?n.reduce(t,r):n.reduce(t);if(A(n,function(n,i,a){u?r=t.call(e,r,n,i,a):(r=n,u=!0)}),!u)throw new TypeError(O);return r},w.reduceRight=w.foldr=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),v&&n.reduceRight===v)return e&&(t=w.bind(t,e)),u?n.reduceRight(t,r):n.reduceRight(t);var i=n.length;if(i!==+i){var a=w.keys(n);i=a.length}if(A(n,function(o,c,l){c=a?a[--i]:--i,u?r=t.call(e,r,n[c],c,l):(r=n[c],u=!0)}),!u)throw new TypeError(O);return r},w.find=w.detect=function(n,t,r){var e;return E(n,function(n,u,i){return t.call(r,n,u,i)?(e=n,!0):void 0}),e},w.filter=w.select=function(n,t,r){var e=[];return null==n?e:d&&n.filter===d?n.filter(t,r):(A(n,function(n,u,i){t.call(r,n,u,i)&&(e[e.length]=n)}),e)},w.reject=function(n,t,r){return w.filter(n,function(n,e,u){return!t.call(r,n,e,u)},r)},w.every=w.all=function(n,t,e){t||(t=w.identity);var u=!0;return null==n?u:g&&n.every===g?n.every(t,e):(A(n,function(n,i,a){return(u=u&&t.call(e,n,i,a))?void 0:r}),!!u)};var E=w.some=w.any=function(n,t,e){t||(t=w.identity);var u=!1;return null==n?u:m&&n.some===m?n.some(t,e):(A(n,function(n,i,a){return u||(u=t.call(e,n,i,a))?r:void 0}),!!u)};w.contains=w.include=function(n,t){return null==n?!1:y&&n.indexOf===y?n.indexOf(t)!=-1:E(n,function(n){return n===t})},w.invoke=function(n,t){var r=o.call(arguments,2),e=w.isFunction(t);return w.map(n,function(n){return(e?t:n[t]).apply(n,r)})},w.pluck=function(n,t){return w.map(n,function(n){return n[t]})},w.where=function(n,t,r){return w.isEmpty(t)?r?null:[]:w[r?"find":"filter"](n,function(n){for(var r in t)if(t[r]!==n[r])return!1;return!0})},w.findWhere=function(n,t){return w.where(n,t,!0)},w.max=function(n,t,r){if(!t&&w.isArray(n)&&n[0]===+n[0]&&65535>n.length)return Math.max.apply(Math,n);if(!t&&w.isEmpty(n))return-1/0;var e={computed:-1/0,value:-1/0};return A(n,function(n,u,i){var a=t?t.call(r,n,u,i):n;a>=e.computed&&(e={value:n,computed:a})}),e.value},w.min=function(n,t,r){if(!t&&w.isArray(n)&&n[0]===+n[0]&&65535>n.length)return Math.min.apply(Math,n);if(!t&&w.isEmpty(n))return 1/0;var e={computed:1/0,value:1/0};return A(n,function(n,u,i){var a=t?t.call(r,n,u,i):n;e.computed>a&&(e={value:n,computed:a})}),e.value},w.shuffle=function(n){var t,r=0,e=[];return A(n,function(n){t=w.random(r++),e[r-1]=e[t],e[t]=n}),e};var k=function(n){return w.isFunction(n)?n:function(t){return t[n]}};w.sortBy=function(n,t,r){var e=k(t);return w.pluck(w.map(n,function(n,t,u){return{value:n,index:t,criteria:e.call(r,n,t,u)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index<t.index?-1:1}),"value")};var F=function(n,t,r,e){var u={},i=k(t||w.identity);return A(n,function(t,a){var o=i.call(r,t,a,n);e(u,o,t)}),u};w.groupBy=function(n,t,r){return F(n,t,r,function(n,t,r){(w.has(n,t)?n[t]:n[t]=[]).push(r)})},w.countBy=function(n,t,r){return F(n,t,r,function(n,t){w.has(n,t)||(n[t]=0),n[t]++})},w.sortedIndex=function(n,t,r,e){r=null==r?w.identity:k(r);for(var u=r.call(e,t),i=0,a=n.length;a>i;){var o=i+a>>>1;u>r.call(e,n[o])?i=o+1:a=o}return i},w.toArray=function(n){return n?w.isArray(n)?o.call(n):n.length===+n.length?w.map(n,w.identity):w.values(n):[]},w.size=function(n){return null==n?0:n.length===+n.length?n.length:w.keys(n).length},w.first=w.head=w.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:o.call(n,0,t)},w.initial=function(n,t,r){return o.call(n,0,n.length-(null==t||r?1:t))},w.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:o.call(n,Math.max(n.length-t,0))},w.rest=w.tail=w.drop=function(n,t,r){return o.call(n,null==t||r?1:t)},w.compact=function(n){return w.filter(n,w.identity)};var R=function(n,t,r){return A(n,function(n){w.isArray(n)?t?a.apply(r,n):R(n,t,r):r.push(n)}),r};w.flatten=function(n,t){return R(n,t,[])},w.without=function(n){return w.difference(n,o.call(arguments,1))},w.uniq=w.unique=function(n,t,r,e){w.isFunction(t)&&(e=r,r=t,t=!1);var u=r?w.map(n,r,e):n,i=[],a=[];return A(u,function(r,e){(t?e&&a[a.length-1]===r:w.contains(a,r))||(a.push(r),i.push(n[e]))}),i},w.union=function(){return w.uniq(c.apply(e,arguments))},w.intersection=function(n){var t=o.call(arguments,1);return w.filter(w.uniq(n),function(n){return w.every(t,function(t){return w.indexOf(t,n)>=0})})},w.difference=function(n){var t=c.apply(e,o.call(arguments,1));return w.filter(n,function(n){return!w.contains(t,n)})},w.zip=function(){for(var n=o.call(arguments),t=w.max(w.pluck(n,"length")),r=Array(t),e=0;t>e;e++)r[e]=w.pluck(n,""+e);return r},w.object=function(n,t){if(null==n)return{};for(var r={},e=0,u=n.length;u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},w.indexOf=function(n,t,r){if(null==n)return-1;var e=0,u=n.length;if(r){if("number"!=typeof r)return e=w.sortedIndex(n,t),n[e]===t?e:-1;e=0>r?Math.max(0,u+r):r}if(y&&n.indexOf===y)return n.indexOf(t,r);for(;u>e;e++)if(n[e]===t)return e;return-1},w.lastIndexOf=function(n,t,r){if(null==n)return-1;var e=null!=r;if(b&&n.lastIndexOf===b)return e?n.lastIndexOf(t,r):n.lastIndexOf(t);for(var u=e?r:n.length;u--;)if(n[u]===t)return u;return-1},w.range=function(n,t,r){1>=arguments.length&&(t=n||0,n=0),r=arguments[2]||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=0,i=Array(e);e>u;)i[u++]=n,n+=r;return i},w.bind=function(n,t){if(n.bind===j&&j)return j.apply(n,o.call(arguments,1));var r=o.call(arguments,2);return function(){return n.apply(t,r.concat(o.call(arguments)))}},w.partial=function(n){var t=o.call(arguments,1);return function(){return n.apply(this,t.concat(o.call(arguments)))}},w.bindAll=function(n){var t=o.call(arguments,1);return 0===t.length&&(t=w.functions(n)),A(t,function(t){n[t]=w.bind(n[t],n)}),n},w.memoize=function(n,t){var r={};return t||(t=w.identity),function(){var e=t.apply(this,arguments);return w.has(r,e)?r[e]:r[e]=n.apply(this,arguments)}},w.delay=function(n,t){var r=o.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},w.defer=function(n){return w.delay.apply(w,[n,1].concat(o.call(arguments,1)))},w.throttle=function(n,t){var r,e,u,i,a=0,o=function(){a=new Date,u=null,i=n.apply(r,e)};return function(){var c=new Date,l=t-(c-a);return r=this,e=arguments,0>=l?(clearTimeout(u),u=null,a=c,i=n.apply(r,e)):u||(u=setTimeout(o,l)),i}},w.debounce=function(n,t,r){var e,u;return function(){var i=this,a=arguments,o=function(){e=null,r||(u=n.apply(i,a))},c=r&&!e;return clearTimeout(e),e=setTimeout(o,t),c&&(u=n.apply(i,a)),u}},w.once=function(n){var t,r=!1;return function(){return r?t:(r=!0,t=n.apply(this,arguments),n=null,t)}},w.wrap=function(n,t){return function(){var r=[n];return a.apply(r,arguments),t.apply(this,r)}},w.compose=function(){var n=arguments;return function(){for(var t=arguments,r=n.length-1;r>=0;r--)t=[n[r].apply(this,t)];return t[0]}},w.after=function(n,t){return 0>=n?t():function(){return 1>--n?t.apply(this,arguments):void 0}},w.keys=_||function(n){if(n!==Object(n))throw new TypeError("Invalid object");var t=[];for(var r in n)w.has(n,r)&&(t[t.length]=r);return t},w.values=function(n){var t=[];for(var r in n)w.has(n,r)&&t.push(n[r]);return t},w.pairs=function(n){var t=[];for(var r in n)w.has(n,r)&&t.push([r,n[r]]);return t},w.invert=function(n){var t={};for(var r in n)w.has(n,r)&&(t[n[r]]=r);return t},w.functions=w.methods=function(n){var t=[];for(var r in n)w.isFunction(n[r])&&t.push(r);return t.sort()},w.extend=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]=t[r]}),n},w.pick=function(n){var t={},r=c.apply(e,o.call(arguments,1));return A(r,function(r){r in n&&(t[r]=n[r])}),t},w.omit=function(n){var t={},r=c.apply(e,o.call(arguments,1));for(var u in n)w.contains(r,u)||(t[u]=n[u]);return t},w.defaults=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)null==n[r]&&(n[r]=t[r])}),n},w.clone=function(n){return w.isObject(n)?w.isArray(n)?n.slice():w.extend({},n):n},w.tap=function(n,t){return t(n),n};var I=function(n,t,r,e){if(n===t)return 0!==n||1/n==1/t;if(null==n||null==t)return n===t;n instanceof w&&(n=n._wrapped),t instanceof w&&(t=t._wrapped);var u=l.call(n);if(u!=l.call(t))return!1;switch(u){case"[object String]":return n==t+"";case"[object Number]":return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case"[object Date]":case"[object Boolean]":return+n==+t;case"[object RegExp]":return n.source==t.source&&n.global==t.global&&n.multiline==t.multiline&&n.ignoreCase==t.ignoreCase}if("object"!=typeof n||"object"!=typeof t)return!1;for(var i=r.length;i--;)if(r[i]==n)return e[i]==t;r.push(n),e.push(t);var a=0,o=!0;if("[object Array]"==u){if(a=n.length,o=a==t.length)for(;a--&&(o=I(n[a],t[a],r,e)););}else{var c=n.constructor,f=t.constructor;if(c!==f&&!(w.isFunction(c)&&c instanceof c&&w.isFunction(f)&&f instanceof f))return!1;for(var s in n)if(w.has(n,s)&&(a++,!(o=w.has(t,s)&&I(n[s],t[s],r,e))))break;if(o){for(s in t)if(w.has(t,s)&&!a--)break;o=!a}}return r.pop(),e.pop(),o};w.isEqual=function(n,t){return I(n,t,[],[])},w.isEmpty=function(n){if(null==n)return!0;if(w.isArray(n)||w.isString(n))return 0===n.length;for(var t in n)if(w.has(n,t))return!1;return!0},w.isElement=function(n){return!(!n||1!==n.nodeType)},w.isArray=x||function(n){return"[object Array]"==l.call(n)},w.isObject=function(n){return n===Object(n)},A(["Arguments","Function","String","Number","Date","RegExp"],function(n){w["is"+n]=function(t){return l.call(t)=="[object "+n+"]"}}),w.isArguments(arguments)||(w.isArguments=function(n){return!(!n||!w.has(n,"callee"))}),"function"!=typeof/./&&(w.isFunction=function(n){return"function"==typeof n}),w.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},w.isNaN=function(n){return w.isNumber(n)&&n!=+n},w.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"==l.call(n)},w.isNull=function(n){return null===n},w.isUndefined=function(n){return n===void 0},w.has=function(n,t){return f.call(n,t)},w.noConflict=function(){return n._=t,this},w.identity=function(n){return n},w.times=function(n,t,r){for(var e=Array(n),u=0;n>u;u++)e[u]=t.call(r,u);return e},w.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))};var M={escape:{"&":"&","<":"<",">":">",'"':""","'":"&#x27;","/":"&#x2F;"}};M.unescape=w.invert(M.escape);var S={escape:RegExp("["+w.keys(M.escape).join("")+"]","g"),unescape:RegExp("("+w.keys(M.unescape).join("|")+")","g")};w.each(["escape","unescape"],function(n){w[n]=function(t){return null==t?"":(""+t).replace(S[n],function(t){return M[n][t]})}}),w.result=function(n,t){if(null==n)return null;var r=n[t];return w.isFunction(r)?r.call(n):r},w.mixin=function(n){A(w.functions(n),function(t){var r=w[t]=n[t];w.prototype[t]=function(){var n=[this._wrapped];return a.apply(n,arguments),D.call(this,r.apply(w,n))}})};var N=0;w.uniqueId=function(n){var t=++N+"";return n?n+t:t},w.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var T=/(.)^/,q={"'":"'","\\":"\\","\r":"r","\n":"n","	":"t","\u2028":"u2028","\u2029":"u2029"},B=/\\|'|\r|\n|\t|\u2028|\u2029/g;w.template=function(n,t,r){var e;r=w.defaults({},r,w.templateSettings);var u=RegExp([(r.escape||T).source,(r.interpolate||T).source,(r.evaluate||T).source].join("|")+"|$","g"),i=0,a="__p+='";n.replace(u,function(t,r,e,u,o){return a+=n.slice(i,o).replace(B,function(n){return"\\"+q[n]}),r&&(a+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'"),e&&(a+="'+\n((__t=("+e+"))==null?'':__t)+\n'"),u&&(a+="';\n"+u+"\n__p+='"),i=o+t.length,t}),a+="';\n",r.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{e=Function(r.variable||"obj","_",a)}catch(o){throw o.source=a,o}if(t)return e(t,w);var c=function(n){return e.call(this,n,w)};return c.source="function("+(r.variable||"obj")+"){\n"+a+"}",c},w.chain=function(n){return w(n).chain()};var D=function(n){return this._chain?w(n).chain():n};w.mixin(w),A(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=e[n];w.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!=n&&"splice"!=n||0!==r.length||delete r[0],D.call(this,r)}}),A(["concat","join","slice"],function(n){var t=e[n];w.prototype[n]=function(){return D.call(this,t.apply(this._wrapped,arguments))}}),w.extend(w.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}})}).call(this);
\ No newline at end of file



View it on GitLab: https://gitlab.com/smc/smc-website/commit/2ff85921895faaf6bd4c154ead8e52778fe0f22d

-- 
View it on GitLab: https://gitlab.com/smc/smc-website/commit/2ff85921895faaf6bd4c154ead8e52778fe0f22d
You're receiving this email because of your account on gitlab.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.smc.org.in/pipermail/discuss-smc.org.in/attachments/20181007/18897a42/attachment-0002.html>


More information about the discuss mailing list