405 lines
18 KiB
HTML
405 lines
18 KiB
HTML
<!doctype html>
|
||
<html lang="en">
|
||
<head>
|
||
<!-- Required meta tags -->
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||
|
||
<!-- Bootstrap CSS -->
|
||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
|
||
|
||
<!-- Custom fonts for this template -->
|
||
<link href="vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
|
||
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
|
||
<link href='https://fonts.googleapis.com/css?family=Merriweather:400,300,300italic,400italic,700,700italic,900,900italic' rel='stylesheet' type='text/css'>
|
||
|
||
<!-- Plugin CSS -->
|
||
<link href="vendor/magnific-popup/magnific-popup.css" rel="stylesheet">
|
||
|
||
<!-- Custom styles for this template -->
|
||
<link href="css/creative.min.css" rel="stylesheet">
|
||
|
||
<style>
|
||
header.masthead {
|
||
padding-top: 10rem;
|
||
padding-bottom: calc(10rem - 56px);
|
||
background-image: url("img/header.jpg");
|
||
background-position: center center;
|
||
background-size: cover;
|
||
}
|
||
.bg-dark{
|
||
padding:2rem 0
|
||
}
|
||
</style>
|
||
|
||
<title>LibreTime Radio Automation - </title>
|
||
</head>
|
||
<body id="page-top">
|
||
|
||
<!-- Navigation -->
|
||
<nav class="navbar navbar-expand-lg navbar-light fixed-top navbar-shrink" id="mainNav">
|
||
<div class="container">
|
||
<a class="navbar-brand js-scroll-trigger" href="index"> LibreTime Radio Automation </a>
|
||
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
|
||
<span class="navbar-toggler-icon"></span>
|
||
</button>
|
||
<div class="collapse navbar-collapse" id="navbarResponsive">
|
||
<ul class="navbar-nav ml-auto">
|
||
|
||
<li class="nav-item">
|
||
<a class="nav-link js-scroll-trigger" href="quickstart">Install</a>
|
||
</li>
|
||
|
||
<li class="nav-item">
|
||
<a class="nav-link js-scroll-trigger" href="features">Features</a>
|
||
</li>
|
||
|
||
<li class="nav-item">
|
||
<a class="nav-link js-scroll-trigger" href="tour">Tour</a>
|
||
</li>
|
||
|
||
<li class="nav-item">
|
||
<a class="nav-link js-scroll-trigger" href="faq">FAQ</a>
|
||
</li>
|
||
|
||
<li class="nav-item">
|
||
<a class="nav-link js-scroll-trigger" href="advanced-configuration">Docs</a>
|
||
</li>
|
||
|
||
<li class="nav-item">
|
||
<a class="nav-link js-scroll-trigger" href="contribute">Help Us!</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<div class="container-lg">
|
||
<nav class="content">
|
||
<!doctype html>
|
||
<html lang="en">
|
||
<head>
|
||
<!-- Required meta tags -->
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||
|
||
<!-- Bootstrap CSS -->
|
||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
|
||
|
||
<!-- Custom fonts for this template -->
|
||
<link href="vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
|
||
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
|
||
<link href='https://fonts.googleapis.com/css?family=Merriweather:400,300,300italic,400italic,700,700italic,900,900italic' rel='stylesheet' type='text/css'>
|
||
|
||
<!-- Plugin CSS -->
|
||
<link href="vendor/magnific-popup/magnific-popup.css" rel="stylesheet">
|
||
|
||
<!-- Custom styles for this template -->
|
||
<link href="css/creative.min.css" rel="stylesheet">
|
||
|
||
<style>
|
||
/* "CONTENT" From Above */
|
||
.content {
|
||
|
||
/* size of my container minus sidebar width */
|
||
width: calc(80%);
|
||
|
||
/* Estimated height of largest sidebar in case of short content */
|
||
min-height: 800px;
|
||
}
|
||
|
||
/* SIDEBAR */
|
||
.sidebar {
|
||
position: absolute;
|
||
right: 0;
|
||
top: 57px;
|
||
width: 20%;
|
||
height: 100%; /* Super important! */
|
||
background-color: #212529;
|
||
color: #fff;
|
||
}
|
||
.link-style {
|
||
color: rgba(255,255,255,.9);
|
||
}
|
||
/* SIDEBAR CONTAINER */
|
||
.sidebar-item {
|
||
position: absolute;
|
||
top: 5px;
|
||
left: 10%;
|
||
width: 100%;
|
||
height: 25%;
|
||
|
||
/* Position the items */
|
||
&:nth-child(2) { top: 25%; }
|
||
&:nth-child(3) { top: 50%; }
|
||
&:nth-child(4) { top: 75%; }
|
||
}
|
||
</style>
|
||
|
||
<title>LibreTime Radio Automation - </title>
|
||
</head>
|
||
<body id="page-top">
|
||
|
||
<!-- Navigation -->
|
||
<nav class="navbar navbar-expand-lg navbar-light fixed-top navbar-shrink" id="mainNav">
|
||
<div class="container">
|
||
<a class="navbar-brand js-scroll-trigger" href="index"> LibreTime Radio Automation </a>
|
||
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
|
||
<span class="navbar-toggler-icon"></span>
|
||
</button>
|
||
<div class="collapse navbar-collapse" id="navbarResponsive">
|
||
<ul class="navbar-nav ml-auto">
|
||
|
||
<li class="nav-item">
|
||
<a class="nav-link js-scroll-trigger" href="quickstart">Install</a>
|
||
</li>
|
||
|
||
<li class="nav-item">
|
||
<a class="nav-link js-scroll-trigger" href="features">Features</a>
|
||
</li>
|
||
|
||
<li class="nav-item">
|
||
<a class="nav-link js-scroll-trigger" href="tour">Tour</a>
|
||
</li>
|
||
|
||
<li class="nav-item">
|
||
<a class="nav-link js-scroll-trigger" href="faq">FAQ</a>
|
||
</li>
|
||
|
||
<li class="nav-item">
|
||
<a class="nav-link js-scroll-trigger" href="advanced-configuration">Docs</a>
|
||
</li>
|
||
|
||
<li class="nav-item">
|
||
<a class="nav-link js-scroll-trigger" href="contribute">Help Us!</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<!-- Sidebar -->
|
||
<div id="sidebar">
|
||
<ul>
|
||
|
||
<li class="nav-item">
|
||
<a class="nav-link" href=""></a>
|
||
</li>
|
||
|
||
<li class="nav-item">
|
||
<a class="nav-link" href=""></a>
|
||
</li>
|
||
|
||
<li class="nav-item">
|
||
<a class="nav-link" href=""></a>
|
||
</li>
|
||
|
||
<li class="nav-item">
|
||
<a class="nav-link" href=""></a>
|
||
</li>
|
||
|
||
</ul>
|
||
</div>
|
||
|
||
<nav id="sidebar">
|
||
<div class="sidebar-header">
|
||
<h3>Table of Contents</h3>
|
||
</div>
|
||
|
||
|
||
<ul class="list-unstyled components">
|
||
<i>Install</i>
|
||
|
||
<li>
|
||
<a href="quickstart">Quick Install</a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="host-configuration">Host Configuration</a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="setting-the-server-time">Setting the Server Time</a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="track-types">Configuring Track Types</a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="ssl-config">Setting up SSL</a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href=""></a>
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
<ul class="list-unstyled components">
|
||
<i>Using LibreTime</i>
|
||
|
||
<li>
|
||
<a href="preparing-media">Preparing Media</a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="scheduling-shows">Scheduling Shows</a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="live-broadcast">Broadcasting Live</a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="users">Adding Users</a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="troubleshooting">Help!</a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="advanced-configuration">Advanced Configuration</a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href=""></a>
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
<ul class="list-unstyled components">
|
||
<i>Radio Broadcasting 101</i>
|
||
|
||
<li>
|
||
<a href="learnradio-unescoguide">UNESCO Public Radio Guide</a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href=""></a>
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
<ul class="list-unstyled components">
|
||
<i>Appendix</i>
|
||
|
||
<li>
|
||
<a href="hd-audio-modules">HD Audio Modules</a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="rights-royalties">Rights and Royalties</a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="folders">Media Folders used by LibreTime</a>
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</nav>
|
||
|
||
<div class="container-fluid">
|
||
<!-- This is the main content of the page getting pulled from the MDs -->
|
||
<div class="content">
|
||
<h1 id="interface-localization">Interface Localization</h1>
|
||
|
||
<p>The LibreTime administration interface can be localized using the standard GNU <strong>gettext</strong> method. Using GitHub for this task means you don’t have to tackle the whole of a localization yourself; just as much as you can manage.</p>
|
||
|
||
<p><img src="img/Screenshot464-Korean_stream_setting.png" alt="" /></p>
|
||
|
||
<p>First, you should check if a localization is already under way for your locale of choice. The best way to do this is to take a look at the ‘master’ branch in the GitHub repository for LibreTime at <a href="https://github.com/LibreTime/libretime">https://github.com/LibreTime/libretime</a>. You can also ask in the LibreTime development forum at <a href="https://discourse.libretime.org/">https://discourse.libretime.org/</a>, where you might find community members who can help you with the translation.</p>
|
||
|
||
<p>GNU <strong>gettext</strong> means using a .po file for each language or dialect, a specially formatted plain text file with groups of three or more lines, like this example from LibreTime’s Korean localization:</p>
|
||
|
||
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>#: airtime_mvc/application/configs/navigation.php:57
|
||
msgid "Media Folders"
|
||
msgstr "미디어 폴더"
|
||
</code></pre></div></div>
|
||
|
||
<p>The first of these three lines starts with the hash symbol, and references where this string of text is found in the source code by its file name and line number. If this string is found more than once in the source code, you will see other reference lines here. The second line contains the <strong>msgid</strong>, which is the original version of the string. The third line contains the <strong>msgstr</strong>, which is the translation of that string for the localization that this particular .po file relates to.</p>
|
||
|
||
<p>If you use the cross-platform program <strong>Poedit</strong> (<a href="http://www.poedit.net/">http://www.poedit.net/</a>) to edit the .po file, this formatting of the text is hidden by an easy-to-use GUI. The <em>poedit</em> package can be installed on most GNU/Linux distributions using the standard software installer. Versions of Poedit for Mac and Windows are available for free download from the project’s homepage.</p>
|
||
|
||
<p>Before manually translating strings in Poedit from scratch, you should take a look at the online translation services available, such as Lingohub (<a href="https://lingohub.com">https://lingohub.com</a>) or Google’s Translator Toolkit (<a href="http://translate.google.com/toolkit/">http://translate.google.com/toolkit/</a>), which both support gettext .po files. If using automatic translation, you can then use Poedit to fine-tune the localization and fix any formatting errors.</p>
|
||
|
||
<p>If you don’t already have a GitHub account, you can sign up at <a href="https://github.com/signup/free">https://github.com/signup/free</a>. Once you have a GitHub account, you can fork a copy (<a href="https://help.github.com/articles/fork-a-repo">https://help.github.com/articles/fork-a-repo</a>) of the LibreTime project. Work for the next major version of the software is done in the <strong>master</strong> branch of each project, so that’s the branch to <strong>checkout</strong> after you have made the initial <strong>git clone</strong>.</p>
|
||
|
||
<p>In the locale code <em>de_CH</em>, for example, <em>de</em> represents the German language and the suffix <em>_CH</em> indicates the dialect spoken in Switzerland. Some languages have a wide variety of dialect localizations, which can be differentiated with a suffix in this way. You should update the header information in the .po file, which includes the language code and a country code, using one of the existing .po files as a guide.</p>
|
||
|
||
<p>After forking the LibreTime git repository, make sure you’re in the <strong>master</strong> branch:</p>
|
||
|
||
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git branch
|
||
devel
|
||
* master
|
||
</code></pre></div></div>
|
||
|
||
<p>Create a new locale directory (e.g. <em>airtime_mvc/locale/de_CH/LC_MESSAGES/</em> for German as spoken in Switzerland):</p>
|
||
|
||
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mkdir -p airtime_mvc/locale/de_CH/LC_MESSAGES/
|
||
</code></pre></div></div>
|
||
|
||
<p>Copy the template <em>airtime.po</em> file into the directory you just created:</p>
|
||
|
||
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cp airtime_mvc_locale/template/airtime.po airtime_mvc/locale/de_CH/LC_MESSAGES
|
||
</code></pre></div></div>
|
||
|
||
<p>and update the header information in the new copy of the <em>airtime.po</em> file using the <strong>nano</strong> editor:</p>
|
||
|
||
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>nano airtime_mvc/locale/de_CH/LC_MESSAGES/airtime.po
|
||
</code></pre></div></div>
|
||
|
||
<p>For the example of Swiss German, the header of the file should now look like this:</p>
|
||
|
||
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code># SWISS GERMAN (de_CH) translation for LibreTime.
|
||
# Copyright (C) 2013 Sourcefabric
|
||
# This file is distributed under the same license as the LibreTime package.
|
||
# Sourcefabric <contact@sourcefabric.org>, 2013.
|
||
#
|
||
msgid ""
|
||
msgstr ""
|
||
"Project-Id-Version: LibreTime 3.0-Alpha\n"
|
||
"Report-Msgid-Bugs-To: https://discourse.libretime.org/\n"
|
||
</code></pre></div></div>
|
||
|
||
<p>After using an online translation tool to begin a new localization, you can load the exported .po file into Poedit and complete your translation there. Enter the localization team’s contact information and language into Poedit’s <strong>Edit -> Preferences</strong> and <strong>Catalog -> Settings</strong> dialogs, which will be added to the .po file. When you save a .po file in Poedit, the corresponding binary .mo file will be compiled automatically.</p>
|
||
|
||
<p>Finally, <strong>git add</strong>, <strong>git commit</strong> and <strong>git push</strong> these new .mo and .po files to your GitHub fork of the project, and send a git pull request (<a href="https://help.github.com/articles/using-pull-requests">https://help.github.com/articles/using-pull-requests</a>) to the LibreTime developers. The localization can then be added to a forthcoming LibreTime release.</p>
|
||
|
||
<p>If you don’t want to work with git, that’s no problem - download a copy of the .po template file, edit the header, run it through an automatic translator and check it with Poedit. Then email your contribution to the LibreTime team as an attachment - it will be very welcome! However, learning to use git is a good idea, because it means you can work directly on the current source code, share the localization work with the LibreTime community, and avoid duplicated effort.</p>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Optional JavaScript -->
|
||
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
|
||
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
|
||
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
|
||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
|
||
</body>
|
||
</html>
|
||
|
||
</nav>
|
||
</div>
|
||
|
||
<footer>
|
||
<section class="bg-dark text-white">
|
||
<div class="text-footer">
|
||
<small>Hosted on GitHub Pages — Theme by <a href="https://github.com/ned-kelly">ned-kelly</a> and <a href="https://github.com/zklosko">Zachary Klosko</a> | </small>
|
||
<small>Code and docs licensed under GPLv2. More details <a href="http://sourcefabric.booktype.pro/airtime-25-for-broadcasters/about-this-manual/">here</a>. </small>
|
||
</div>
|
||
</section>
|
||
</footer>
|
||
|
||
<!-- Optional JavaScript -->
|
||
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
|
||
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
|
||
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
|
||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
|
||
</body>
|
||
</html>
|