mirror of
https://github.com/LibreTranslate/LibreTranslate.git
synced 2024-11-25 09:21:04 +00:00
commit
8100b78118
6 changed files with 18 additions and 19 deletions
|
@ -114,7 +114,6 @@ docker-compose up -d --build
|
||||||
| --frontend-language-source | Set frontend default language - source | `en` |
|
| --frontend-language-source | Set frontend default language - source | `en` |
|
||||||
| --frontend-language-target | Set frontend default language - target | `es` |
|
| --frontend-language-target | Set frontend default language - target | `es` |
|
||||||
| --frontend-timeout | Set frontend translation timeout | `500` |
|
| --frontend-timeout | Set frontend translation timeout | `500` |
|
||||||
| --offline | Run user-interface entirely offline (don't use internet CDNs) | `false` |
|
|
||||||
| --api-keys | Enable API keys database for per-user rate limits lookup | `Don't use API keys` |
|
| --api-keys | Enable API keys database for per-user rate limits lookup | `Don't use API keys` |
|
||||||
| --load-only | Set available languages | `all from argostranslate` |
|
| --load-only | Set available languages | `all from argostranslate` |
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,6 @@ def get_routes_limits(default_req_limit, api_keys_db):
|
||||||
return [limits]
|
return [limits]
|
||||||
|
|
||||||
def create_app(args):
|
def create_app(args):
|
||||||
if not args.offline:
|
|
||||||
from app.init import boot
|
from app.init import boot
|
||||||
boot(args.load_only)
|
boot(args.load_only)
|
||||||
|
|
||||||
|
@ -100,12 +99,12 @@ def create_app(args):
|
||||||
@app.route("/")
|
@app.route("/")
|
||||||
@limiter.exempt
|
@limiter.exempt
|
||||||
def index():
|
def index():
|
||||||
return render_template('index.html', gaId=args.ga_id, frontendTimeout=args.frontend_timeout, offline=args.offline, api_keys=args.api_keys, web_version=os.environ.get('LT_WEB') is not None)
|
return render_template('index.html', gaId=args.ga_id, frontendTimeout=args.frontend_timeout, api_keys=args.api_keys, web_version=os.environ.get('LT_WEB') is not None)
|
||||||
|
|
||||||
@app.route("/javascript-licenses", methods=['GET'])
|
@app.route("/javascript-licenses", methods=['GET'])
|
||||||
@limiter.exempt
|
@limiter.exempt
|
||||||
def javascript_licenses():
|
def javascript_licenses():
|
||||||
return render_template('javascript-licenses.html', offline=args.offline)
|
return render_template('javascript-licenses.html')
|
||||||
|
|
||||||
@app.route("/languages", methods=['GET', 'POST'])
|
@app.route("/languages", methods=['GET', 'POST'])
|
||||||
@limiter.exempt
|
@limiter.exempt
|
||||||
|
|
|
@ -6,8 +6,11 @@ import app.language
|
||||||
import polyglot
|
import polyglot
|
||||||
|
|
||||||
def boot(load_only=None):
|
def boot(load_only=None):
|
||||||
|
try:
|
||||||
check_and_install_models(load_only_lang_codes=load_only)
|
check_and_install_models(load_only_lang_codes=load_only)
|
||||||
check_and_install_transliteration()
|
check_and_install_transliteration()
|
||||||
|
except Exception as e:
|
||||||
|
print("Cannot update models (normal if you're offline): %s" % str(e))
|
||||||
|
|
||||||
def check_and_install_models(force=False, load_only_lang_codes=None):
|
def check_and_install_models(force=False, load_only_lang_codes=None):
|
||||||
if len(package.get_installed_packages()) < 2 or force:
|
if len(package.get_installed_packages()) < 2 or force:
|
||||||
|
|
|
@ -26,8 +26,6 @@ def main():
|
||||||
help='Set frontend default language - target (%(default)s)')
|
help='Set frontend default language - target (%(default)s)')
|
||||||
parser.add_argument('--frontend-timeout', type=int, default=500, metavar="<milliseconds>",
|
parser.add_argument('--frontend-timeout', type=int, default=500, metavar="<milliseconds>",
|
||||||
help='Set frontend translation timeout (%(default)s)')
|
help='Set frontend translation timeout (%(default)s)')
|
||||||
parser.add_argument('--offline', default=False, action="store_true",
|
|
||||||
help="Use offline")
|
|
||||||
parser.add_argument('--api-keys', default=False, action="store_true",
|
parser.add_argument('--api-keys', default=False, action="store_true",
|
||||||
help="Enable API keys database for per-user rate limits lookup")
|
help="Enable API keys database for per-user rate limits lookup")
|
||||||
parser.add_argument('--load-only', type=operator.methodcaller('split', ','),
|
parser.add_argument('--load-only', type=operator.methodcaller('split', ','),
|
||||||
|
|
|
@ -15,11 +15,11 @@
|
||||||
<meta property="og:description" name="description" class="swiftype" content="Free and Open Source Machine Translation API. 100% self-hosted, no limits, no ties to proprietary services. Run your own API server in just a few minutes."/>
|
<meta property="og:description" name="description" class="swiftype" content="Free and Open Source Machine Translation API. 100% self-hosted, no limits, no ties to proprietary services. Run your own API server in just a few minutes."/>
|
||||||
|
|
||||||
|
|
||||||
<script src="{% if offline %}{{ url_for('static', filename='js/vue@2.js') }}{% else %}https://cdn.jsdelivr.net/npm/vue@2{% endif %}"></script>
|
<script src="{{ url_for('static', filename='js/vue@2.js') }}"></script>
|
||||||
<!-- Compiled and minified CSS -->
|
<!-- Compiled and minified CSS -->
|
||||||
<link rel="stylesheet" href="{% if offline %}{{ url_for('static', filename='css/materialize.min.css') }}{% else %}https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css{% endif %}">
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/materialize.min.css') }}">
|
||||||
<link href="{% if offline %}{{ url_for('static', filename='css/material-icons.css') }}{% else %}https://fonts.googleapis.com/icon?family=Material+Icons{% endif %}" rel="stylesheet">
|
<link href="{{ url_for('static', filename='css/material-icons.css') }}" rel="stylesheet">
|
||||||
<link href="{% if offline %}{{ url_for('static', filename='css/prism.min.css') }}{% else %}https://cdnjs.cloudflare.com/ajax/libs/prism/1.22.0/themes/prism.min.css{% endif %}" rel="stylesheet" />
|
<link href="{{ url_for('static', filename='css/prism.min.css') }}" rel="stylesheet" />
|
||||||
|
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
textarea.materialize-textarea{height: 120px;}
|
textarea.materialize-textarea{height: 120px;}
|
||||||
|
@ -254,7 +254,7 @@
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<script src="{% if offline %}{{ url_for('static', filename='js/materialize.min.js') }}{% else %}https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js{% endif %}"></script>
|
<script src="{{ url_for('static', filename='js/materialize.min.js') }}"></script>
|
||||||
<script>
|
<script>
|
||||||
// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-3.0
|
// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-3.0
|
||||||
window.Prism = window.Prism || {};
|
window.Prism = window.Prism || {};
|
||||||
|
@ -262,7 +262,7 @@ window.Prism.manual = true;
|
||||||
// @license-end
|
// @license-end
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script src="{% if offline %}{{ url_for('static', filename='js/prism.min.js') }}{% else %}https://cdnjs.cloudflare.com/ajax/libs/prism/1.22.0/prism.min.js{% endif %}"></script>
|
<script src="{{ url_for('static', filename='js/prism.min.js') }}"></script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-3.0
|
// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-3.0
|
||||||
|
|
|
@ -6,15 +6,15 @@
|
||||||
<h3>Weblabels</h3>
|
<h3>Weblabels</h3>
|
||||||
<table id="jslicense-labels1" border="1">
|
<table id="jslicense-labels1" border="1">
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="{% if offline %}{{ url_for('static', filename='js/vue@2.js') }}{% else %}https://cdn.jsdelivr.net/npm/vue@2{% endif %}">Vue.js</a></td>
|
<td><a href="{{ url_for('static', filename='js/vue@2.js') }}">Vue.js</a></td>
|
||||||
<td><a href="http://www.jclark.com/xml/copying.txt">Expat</a></td>
|
<td><a href="http://www.jclark.com/xml/copying.txt">Expat</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="{% if offline %}{{ url_for('static', filename='js/prism.min.js') }}{% else %}https://cdnjs.cloudflare.com/ajax/libs/prism/1.22.0/prism.min.js{% endif %}">prism.min.js</a></td>
|
<td><a href="{{ url_for('static', filename='js/prism.min.js') }}">prism.min.js</a></td>
|
||||||
<td><a href="http://www.jclark.com/xml/copying.txt">Expat</a></td>
|
<td><a href="http://www.jclark.com/xml/copying.txt">Expat</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="{% if offline %}{{ url_for('static', filename='js/materialize.min.js') }}{% else %}https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js{% endif %}">materialize.min.js</a></td>
|
<td><a href="{{ url_for('static', filename='js/materialize.min.js') }}">materialize.min.js</a></td>
|
||||||
<td><a href="http://www.jclark.com/xml/copying.txt">Expat</a></td>
|
<td><a href="http://www.jclark.com/xml/copying.txt">Expat</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
Loading…
Reference in a new issue