diff --git a/app/models/packages.py b/app/models/packages.py index bbf4c3e5..d61487bc 100644 --- a/app/models/packages.py +++ b/app/models/packages.py @@ -19,8 +19,9 @@ import datetime import enum import os +import typing from flask import url_for -from flask_babel import lazy_gettext +from flask_babel import lazy_gettext, get_locale from flask_sqlalchemy import BaseQuery from sqlalchemy import or_, func from sqlalchemy.dialects.postgresql import insert @@ -493,6 +494,28 @@ class Package(db.Model): def get_id(self): return "{}/{}".format(self.author.username, self.name) + def get_translated(self, lang=None): + if lang is None: + locale = get_locale() + if locale: + lang = locale.language + else: + lang = "en" + + translation: typing.Optional[PackageTranslation] = self.translations.filter_by(language_id=lang).first() + if translation is None: + return { + "title": self.title, + "short_desc": self.short_desc, + "desc": self.desc, + } + + return { + "title": translation.title or self.title, + "short_desc": translation.short_desc or self.short_desc, + "desc": translation.desc or self.desc, + } + def get_sorted_dependencies(self, is_hard=None): query = self.dependencies if is_hard is not None: diff --git a/app/templates/packages/view.html b/app/templates/packages/view.html index dd60e27a..cad5435b 100644 --- a/app/templates/packages/view.html +++ b/app/templates/packages/view.html @@ -1,14 +1,15 @@ -{% set query=package.name %} -{% set release = package.get_download_release() %} - {% extends "base.html" %} +{% set query=package.name %} +{% set release = package.get_download_release() %} +{% set meta = package.get_translated() %} + {% block title %} - {{ package.title }} + {{ meta.title }} {% endblock %} {% block description -%} -{{ package.short_desc }} + {{ meta.short_desc }} {% endblock %} {% block headextra %} @@ -130,11 +131,11 @@
- {{ package.short_desc }} + {{ meta.short_desc }}
@@ -322,9 +323,9 @@
{% endif %}
- {% if package.desc %}
+ {% if meta.desc %}