mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-08-14 02:26:55 -07:00
Merge branch 'DotNetCore' of https://github.com/tidusjar/ombi into DotNetCore
This commit is contained in:
commit
0fc2037ae3
26 changed files with 229 additions and 147 deletions
|
@ -1,15 +1,13 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using Ombi.Core.Models.Requests;
|
||||
using Ombi.Core.Models.Search;
|
||||
using Ombi.Store.Entities;
|
||||
using Ombi.Store.Entities.Requests;
|
||||
|
||||
namespace Ombi.Core.Engine.Interfaces
|
||||
{
|
||||
public interface IMovieRequestEngine : IRequestEngine<MovieRequests>
|
||||
{
|
||||
Task<RequestEngineResult> RequestMovie(SearchMovieViewModel model);
|
||||
Task<RequestEngineResult> RequestMovie(MovieRequestViewModel model);
|
||||
|
||||
Task<IEnumerable<MovieRequests>> SearchMovieRequest(string search);
|
||||
|
||||
|
|
|
@ -43,16 +43,16 @@ namespace Ombi.Core.Engine
|
|||
/// </summary>
|
||||
/// <param name="model">The model.</param>
|
||||
/// <returns></returns>
|
||||
public async Task<RequestEngineResult> RequestMovie(SearchMovieViewModel model)
|
||||
public async Task<RequestEngineResult> RequestMovie(MovieRequestViewModel model)
|
||||
{
|
||||
var movieInfo = await MovieApi.GetMovieInformation(model.Id);
|
||||
var movieInfo = await MovieApi.GetMovieInformation(model.TheMovieDbId);
|
||||
if (movieInfo == null || movieInfo.Id == 0)
|
||||
{
|
||||
return new RequestEngineResult
|
||||
{
|
||||
Result = false,
|
||||
Message = "There was an issue adding this movie!",
|
||||
ErrorMessage = $"TheMovieDb didn't have any information for ID {model.Id}"
|
||||
ErrorMessage = $"TheMovieDb didn't have any information for ID {model.TheMovieDbId}"
|
||||
};
|
||||
}
|
||||
var fullMovieName =
|
||||
|
|
33
src/Ombi.Core/Models/Requests/MovieRequestViewModel.cs
Normal file
33
src/Ombi.Core/Models/Requests/MovieRequestViewModel.cs
Normal file
|
@ -0,0 +1,33 @@
|
|||
#region Copyright
|
||||
// /************************************************************************
|
||||
// Copyright (c) 2018 Jamie Rees
|
||||
// File: MovieRequestViewModel.cs
|
||||
// Created By: Jamie Rees
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining
|
||||
// a copy of this software and associated documentation files (the
|
||||
// "Software"), to deal in the Software without restriction, including
|
||||
// without limitation the rights to use, copy, modify, merge, publish,
|
||||
// distribute, sublicense, and/or sell copies of the Software, and to
|
||||
// permit persons to whom the Software is furnished to do so, subject to
|
||||
// the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be
|
||||
// included in all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
// ************************************************************************/
|
||||
#endregion
|
||||
namespace Ombi.Core.Models.Requests
|
||||
{
|
||||
public class MovieRequestViewModel
|
||||
{
|
||||
public int TheMovieDbId { get; set; }
|
||||
}
|
||||
}
|
|
@ -20,17 +20,17 @@ namespace Ombi.Notifications.Templates
|
|||
|
||||
private const string SubjectKey = "{@SUBJECT}";
|
||||
private const string BodyKey = "{@BODY}";
|
||||
private const string ImgSrc = "{@IMGSRC}";
|
||||
private const string Poster = "{@POSTER}";
|
||||
private const string DateKey = "{@DATENOW}";
|
||||
private const string Logo = "{@LOGO}";
|
||||
|
||||
public string LoadTemplate(string subject, string body, string img = default(string), string logo = default(string))
|
||||
public string LoadTemplate(string subject, string body, string imgsrc = default(string), string logo = default(string))
|
||||
{
|
||||
var sb = new StringBuilder(File.ReadAllText(TemplateLocation));
|
||||
sb.Replace(SubjectKey, subject);
|
||||
sb.Replace(BodyKey, body);
|
||||
sb.Replace(DateKey, DateTime.Now.ToString("f"));
|
||||
sb.Replace(ImgSrc, string.IsNullOrEmpty(img) ? string.Empty : img);
|
||||
sb.Replace(Poster, string.IsNullOrEmpty(imgsrc) ? string.Empty : $"<tr><td align=\"center\"><img src=\"{imgsrc}\" alt=\"Poster\" width=\"400px\" text-align=\"center\"/></td></tr>");
|
||||
sb.Replace(Logo, string.IsNullOrEmpty(logo) ? "http://i.imgur.com/qQsN78U.png" : logo);
|
||||
|
||||
return sb.ToString();
|
||||
|
|
|
@ -144,7 +144,7 @@
|
|||
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%;" width="100%">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<img src="{@LOGO}" alt="Ombi logo" width="400px" text-align="center" />
|
||||
<img src="{@LOGO}" alt="Ombi logo" width="400px" text-align="center" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -153,11 +153,7 @@
|
|||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">
|
||||
<img src="{@IMGSRC}" alt="Poster" width="400px" text-align="center" />
|
||||
</td>
|
||||
</tr>
|
||||
{@POSTER}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -10,6 +10,9 @@ namespace Ombi.Settings.Settings.Models
|
|||
public string ApplicationName { get; set; }
|
||||
public string ApplicationUrl { get; set; }
|
||||
public string CustomCssLink { get; set; }
|
||||
public bool EnableCustomDonations { get; set; }
|
||||
public string CustomDonationUrl { get; set; }
|
||||
public string CustomDonationMessage { get; set; }
|
||||
public string Logo { get; set; }
|
||||
|
||||
public string PresetThemeName { get; set; }
|
||||
|
|
|
@ -52,6 +52,14 @@
|
|||
<i class="fa fa-heart" style="color:red"></i> {{ 'NavigationBar.Donate' | translate }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div *ngIf="customizationSettings">
|
||||
<ul *ngIf="customizationSettings.enableCustomDonations" class="nav navbar-nav">
|
||||
<li>
|
||||
<a href="{{customizationSettings.customDonationUrl}}" target="_blank">
|
||||
<i class="fa fa-heart" style="color:yellow"></i> {{ customizationSettings.customDonationMessage ? customizationSettings.customDonationMessage : ('NavigationBar.DonateLibraryMaintainer' | translate) }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
|
|
|
@ -111,3 +111,7 @@ export interface IEpisodesRequests {
|
|||
approved: boolean;
|
||||
selected: boolean; // This is for the UI only
|
||||
}
|
||||
|
||||
export interface IMovieRequestModel {
|
||||
theMovieDbId: number;
|
||||
}
|
||||
|
|
|
@ -97,6 +97,9 @@ export interface ICustomizationSettings extends ISettings {
|
|||
applicationUrl: string;
|
||||
logo: string;
|
||||
customCssLink: string;
|
||||
enableCustomDonations: boolean;
|
||||
customDonationUrl: string;
|
||||
customDonationMessage: string;
|
||||
hasPresetTheme: boolean;
|
||||
presetThemeName: string;
|
||||
presetThemeContent: string;
|
||||
|
|
|
@ -87,9 +87,6 @@ div.bg {
|
|||
width: 100%;
|
||||
margin: 0 auto 10px;
|
||||
display: block;
|
||||
-moz-border-radius: 50%;
|
||||
-webkit-border-radius: 50%;
|
||||
border-radius: 50%;
|
||||
}
|
||||
/*
|
||||
* Form styles
|
||||
|
|
|
@ -76,7 +76,7 @@ export class MovieSearchComponent implements OnInit {
|
|||
}
|
||||
|
||||
try {
|
||||
this.requestService.requestMovie(searchResult)
|
||||
this.requestService.requestMovie({ theMovieDbId: searchResult.id })
|
||||
.subscribe(x => {
|
||||
this.result = x;
|
||||
|
||||
|
|
|
@ -67,7 +67,7 @@ export class MovieSearchGridComponent implements OnInit {
|
|||
}
|
||||
|
||||
try {
|
||||
this.requestService.requestMovie(searchResult)
|
||||
this.requestService.requestMovie({ theMovieDbId : searchResult.id})
|
||||
.subscribe(x => {
|
||||
this.result = x;
|
||||
|
||||
|
|
|
@ -123,10 +123,11 @@
|
|||
<i class="fa fa-check"></i> Available</button>
|
||||
</div>
|
||||
<br />
|
||||
<a *ngIf="node.data.plexUrl && node.data.available" style="text-align: right" class="btn btn-sm btn-success-outline" href="{{node.data.plexUrl}}"
|
||||
<div *ngIf="node.data.plexUrl && node.data.available">
|
||||
<a style="text-align: right" class="btn btn-sm btn-success-outline" href="{{node.data.plexUrl}}"
|
||||
target="_blank">
|
||||
<i class="fa fa-eye"></i> View On Plex</a>
|
||||
|
||||
</div>
|
||||
<div class="dropdown" *ngIf="issueCategories && issuesEnabled">
|
||||
<button class="btn btn-sm btn-primary-outline dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true"
|
||||
aria-expanded="true">
|
||||
|
|
|
@ -6,8 +6,7 @@ import { Observable } from "rxjs/Rx";
|
|||
|
||||
import { TreeNode } from "primeng/primeng";
|
||||
import { IRequestEngineResult } from "../interfaces";
|
||||
import { IChildRequests, IMovieRequests, IMovieUpdateModel, ITvRequests, ITvUpdateModel } from "../interfaces";
|
||||
import { ISearchMovieResult } from "../interfaces";
|
||||
import { IChildRequests, IMovieRequestModel, IMovieRequests, IMovieUpdateModel, ITvRequests, ITvUpdateModel } from "../interfaces";
|
||||
import { ISearchTvResult } from "../interfaces";
|
||||
import { ServiceHelpers } from "./service.helpers";
|
||||
|
||||
|
@ -17,7 +16,7 @@ export class RequestService extends ServiceHelpers {
|
|||
super(http, "/api/v1/Request/", platformLocation);
|
||||
}
|
||||
|
||||
public requestMovie(movie: ISearchMovieResult): Observable<IRequestEngineResult> {
|
||||
public requestMovie(movie: IMovieRequestModel): Observable<IRequestEngineResult> {
|
||||
return this.http.post<IRequestEngineResult>(`${this.url}Movie/`, JSON.stringify(movie), {headers: this.headers});
|
||||
}
|
||||
|
||||
|
|
|
@ -43,6 +43,29 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="checkbox">
|
||||
<input type="checkbox" id="enableCustomDonations" name="enableCustomDonations" [(ngModel)]="settings.enableCustomDonations">
|
||||
<label for="enableCustomDonations" tooltipPosition="top" pTooltip="Enable to show a custom donation link in the navigation bar">Enable custom donation link</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="customDonation" class="control-label">Custom Donation URL</label>
|
||||
<div>
|
||||
<input [disabled]="!settings.enableCustomDonations" type="text" [(ngModel)]="settings.customDonationUrl" class="form-control form-control-custom " name="customDonation" value="{{settings.customDonationUrl}}"
|
||||
tooltipPosition="top" pTooltip="A link to a Paypal address, or your custom donation url.">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="customDonationMessage" class="control-label">Donation Button Message</label>
|
||||
<div>
|
||||
<input [disabled]="!settings.enableCustomDonations" type="text" [(ngModel)]="settings.customDonationMessage" class="form-control form-control-custom " name="customDonationMessage" value="{{settings.customDonationMessage}}"
|
||||
tooltipPosition="top" pTooltip="Set a custom message to be displayed in the navigation bar.">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
|
|
|
@ -11,10 +11,6 @@ $success-colour: #5cb85c;
|
|||
$i: !important;
|
||||
|
||||
@media (min-width: 768px ) {
|
||||
.row {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.bottom-align-text {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
|
@ -38,6 +34,10 @@ $i: !important;
|
|||
}
|
||||
}
|
||||
|
||||
.row {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.navbar-default .navbar-nav > .active > a,
|
||||
.navbar-default .navbar-nav > .active > a:hover,
|
||||
.navbar-default .navbar-nav > .active > a:focus {
|
||||
|
|
|
@ -52,7 +52,7 @@ namespace Ombi.Controllers
|
|||
/// <param name="movie">The movie.</param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("movie")]
|
||||
public async Task<RequestEngineResult> RequestMovie([FromBody] SearchMovieViewModel movie)
|
||||
public async Task<RequestEngineResult> RequestMovie([FromBody] MovieRequestViewModel movie)
|
||||
{
|
||||
return await MovieRequestEngine.RequestMovie(movie);
|
||||
}
|
||||
|
|
|
@ -58,8 +58,10 @@
|
|||
"German": "Tysk",
|
||||
"Italian": "Italiensk",
|
||||
"Danish": "Dansk",
|
||||
"Dutch": "Hollandsk"
|
||||
}
|
||||
"Dutch": "Hollandsk",
|
||||
"Norwegian": "Norwegian"
|
||||
},
|
||||
"OpenMobileApp": "Open Mobile App"
|
||||
},
|
||||
"Search": {
|
||||
"Title": "Søg",
|
||||
|
|
|
@ -58,8 +58,10 @@
|
|||
"German": "Deutsch",
|
||||
"Italian": "Italienisch",
|
||||
"Danish": "Dänisch",
|
||||
"Dutch": "Niederländisch"
|
||||
}
|
||||
"Dutch": "Niederländisch",
|
||||
"Norwegian": "Norwegian"
|
||||
},
|
||||
"OpenMobileApp": "Open Mobile App"
|
||||
},
|
||||
"Search": {
|
||||
"Title": "Suche",
|
||||
|
|
|
@ -47,6 +47,7 @@
|
|||
"UserManagement": "User Management",
|
||||
"Issues":"Issues",
|
||||
"Donate": "Donate!",
|
||||
"DonateLibraryMaintainer": "Donate to Library Maintainer",
|
||||
"DonateTooltip":
|
||||
"This is how I convince my wife to let me spend my spare time developing Ombi ;)",
|
||||
"UpdateAvailableTooltip": "Update Available!",
|
||||
|
|
|
@ -58,8 +58,10 @@
|
|||
"German": "Alemán",
|
||||
"Italian": "Italiano",
|
||||
"Danish": "Danés",
|
||||
"Dutch": "Holandés"
|
||||
}
|
||||
"Dutch": "Holandés",
|
||||
"Norwegian": "Norwegian"
|
||||
},
|
||||
"OpenMobileApp": "Open Mobile App"
|
||||
},
|
||||
"Search": {
|
||||
"Title": "Buscar",
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
"ContinueButton": "Continuer",
|
||||
"Available": "Disponible",
|
||||
"ProcessingRequest": "En cours de traitement",
|
||||
"PendingApproval": "En attente de validation",
|
||||
"PendingApproval": "En attente d'approbation",
|
||||
"RequestDenied": "Demande refusée",
|
||||
"NotRequested": "Non demandé",
|
||||
"Requested": "Demandé",
|
||||
|
@ -58,22 +58,24 @@
|
|||
"German": "Allemand",
|
||||
"Italian": "Italien",
|
||||
"Danish": "Danois",
|
||||
"Dutch": "Néerlandais"
|
||||
}
|
||||
"Dutch": "Néerlandais",
|
||||
"Norwegian": "Norvégien"
|
||||
},
|
||||
"OpenMobileApp": "Ouvrir l'application mobile"
|
||||
},
|
||||
"Search": {
|
||||
"Title": "Rechercher",
|
||||
"Paragraph": "Vous voulez regarder quelque chose qui n'est pas disponible actuellement ? Pas de problème, recherchez-le ci-dessous et demandez-le !",
|
||||
"MoviesTab": "Films",
|
||||
"TvTab": "Séries",
|
||||
"TvTab": "TV",
|
||||
"Suggestions": "Suggestions",
|
||||
"NoResults": "Désolé, nous n'avons trouvé aucun résultat !",
|
||||
"ReleaseDate": "Date de sortie",
|
||||
"ViewOnPlex": "Regarder sur Plex",
|
||||
"RequestAdded": "La demande pour {{title}} a été ajouté avec succès",
|
||||
"RequestAdded": "La demande pour {{title}} a été ajoutée avec succès",
|
||||
"Movies": {
|
||||
"PopularMovies": "Films populaires",
|
||||
"UpcomingMovies": "Films populaires",
|
||||
"UpcomingMovies": "Films à venir",
|
||||
"TopRatedMovies": "Films les mieux notés",
|
||||
"NowPlayingMovies": "Films à l'affiche",
|
||||
"HomePage": "Site du film",
|
||||
|
@ -84,7 +86,7 @@
|
|||
"Title": "Demandes",
|
||||
"Paragraph": "Vous pouvez voir ci-dessous vos demandes et celles des autres, ainsi que leur statut de téléchargement et d'approbation.",
|
||||
"MoviesTab": "Films",
|
||||
"TvTab": "Séries TV",
|
||||
"TvTab": "Émissions",
|
||||
"RequestedBy": "Demandé par :",
|
||||
"Status": "Statut :",
|
||||
"RequestStatus": "Statut de la demande :",
|
||||
|
@ -107,7 +109,7 @@
|
|||
"Issues": {
|
||||
"Title": "Problèmes",
|
||||
"PendingTitle": "Problèmes en attente",
|
||||
"InProgressTitle": "Problèmes en cours de traitement",
|
||||
"InProgressTitle": "Problèmes en cours",
|
||||
"ResolvedTitle": "Problèmes résolus",
|
||||
"ColumnTitle": "Titre",
|
||||
"Category": "Catégorie",
|
||||
|
@ -116,7 +118,7 @@
|
|||
"Description": "Description",
|
||||
"NoComments": "Aucun commentaire !",
|
||||
"MarkInProgress": "Marquer en cours de traitement",
|
||||
"MarkResolved": "Marquer résolu",
|
||||
"MarkResolved": "Marquer comme résolu",
|
||||
"SendMessageButton": "Envoyer",
|
||||
"Subject": "Sujet",
|
||||
"Comments": "Commentaires",
|
||||
|
|
|
@ -58,8 +58,10 @@
|
|||
"German": "Tedesco",
|
||||
"Italian": "Italiano",
|
||||
"Danish": "Danese",
|
||||
"Dutch": "Olandese"
|
||||
}
|
||||
"Dutch": "Olandese",
|
||||
"Norwegian": "Norwegian"
|
||||
},
|
||||
"OpenMobileApp": "Open Mobile App"
|
||||
},
|
||||
"Search": {
|
||||
"Title": "Search",
|
||||
|
|
|
@ -58,8 +58,10 @@
|
|||
"German": "Duits",
|
||||
"Italian": "Italiaans",
|
||||
"Danish": "Deens",
|
||||
"Dutch": "Nederlands"
|
||||
}
|
||||
"Dutch": "Nederlands",
|
||||
"Norwegian": "Norwegian"
|
||||
},
|
||||
"OpenMobileApp": "Open Mobile App"
|
||||
},
|
||||
"Search": {
|
||||
"Title": "Zoeken",
|
||||
|
|
|
@ -1,126 +1,128 @@
|
|||
{
|
||||
"Login": {
|
||||
"SignInButton": "Sign in",
|
||||
"UsernamePlaceholder": "Username",
|
||||
"PasswordPlaceholder": "Password",
|
||||
"RememberMe": "Remember Me",
|
||||
"ForgottenPassword": "Forgot your password?",
|
||||
"SignInButton": "Logg på",
|
||||
"UsernamePlaceholder": "Brukernavn",
|
||||
"PasswordPlaceholder": "Passord",
|
||||
"RememberMe": "Husk meg",
|
||||
"ForgottenPassword": "Glemt passord?",
|
||||
"Errors": {
|
||||
"IncorrectCredentials": "Incorrect username or password"
|
||||
"IncorrectCredentials": "Ugyldig brukernavn eller passord"
|
||||
}
|
||||
},
|
||||
"Common": {
|
||||
"ContinueButton": "Continue",
|
||||
"Available": "Available",
|
||||
"ProcessingRequest": "Processing Request",
|
||||
"PendingApproval": "Pending Approval",
|
||||
"RequestDenied": "Request Denied",
|
||||
"NotRequested": "Not Requested",
|
||||
"Requested": "Requested",
|
||||
"Request": "Request",
|
||||
"Denied": "Denied",
|
||||
"Approve": "Approve",
|
||||
"ContinueButton": "Gå videre",
|
||||
"Available": "Tilgjengelig",
|
||||
"ProcessingRequest": "Behandler forespørsel",
|
||||
"PendingApproval": "Venter på godkjenning",
|
||||
"RequestDenied": "Forespørsel avslått",
|
||||
"NotRequested": "Ikke forespurt",
|
||||
"Requested": "Forespurt",
|
||||
"Request": "Forespørsel",
|
||||
"Denied": "Avslått",
|
||||
"Approve": "Godkjenn",
|
||||
"Errors": {
|
||||
"Validation": "Please check your entered values"
|
||||
"Validation": "Kontroller de angitte verdiene"
|
||||
}
|
||||
},
|
||||
"PasswordReset": {
|
||||
"EmailAddressPlaceholder": "Email Address",
|
||||
"ResetPasswordButton": "Reset Password"
|
||||
"EmailAddressPlaceholder": "E-postadresse",
|
||||
"ResetPasswordButton": "Tilbakestill passord"
|
||||
},
|
||||
"LandingPage": {
|
||||
"OnlineHeading": "Currently Online",
|
||||
"OnlineParagraph": "The media server is currently online",
|
||||
"PartiallyOnlineHeading": "Partially Online",
|
||||
"PartiallyOnlineParagraph": "The media server is partially online.",
|
||||
"MultipleServersUnavailable": "There are {{serversUnavailable}} servers offline out of {{totalServers}}.",
|
||||
"SingleServerUnavailable": "There is {{serversUnavailable}} server offline out of {{totalServers}}.",
|
||||
"OfflineHeading": "Currently Offline",
|
||||
"OfflineParagraph": "The media server is currently offline.",
|
||||
"CheckPageForUpdates": "Check this page for continuous site updates."
|
||||
"OnlineHeading": "For øyeblikket online",
|
||||
"OnlineParagraph": "Medieserveren er online",
|
||||
"PartiallyOnlineHeading": "Delvis online",
|
||||
"PartiallyOnlineParagraph": "Medieserveren er delvis utilgjengelig.",
|
||||
"MultipleServersUnavailable": "Det er {{serversUnavailable}} servere offline av totalt {{totalServers}}.",
|
||||
"SingleServerUnavailable": "Det er {{serversUnavailable}} server offline av totalt {{totalServers}}.",
|
||||
"OfflineHeading": "For øyeblikket offline",
|
||||
"OfflineParagraph": "Medieserveren er for øyeblikket utilgjengelig.",
|
||||
"CheckPageForUpdates": "Sjekk denne siden for kontinuerlige oppdateringer."
|
||||
},
|
||||
"NavigationBar": {
|
||||
"Search": "Search",
|
||||
"Requests": "Requests",
|
||||
"UserManagement": "User Management",
|
||||
"Issues": "Issues",
|
||||
"Donate": "Donate!",
|
||||
"DonateTooltip": "This is how I convince my wife to let me spend my spare time developing Ombi ;)",
|
||||
"UpdateAvailableTooltip": "Update Available!",
|
||||
"Settings": "Settings",
|
||||
"Welcome": "Welcome {{username}}",
|
||||
"UpdateDetails": "Update Details",
|
||||
"Logout": "Logout",
|
||||
"Search": "Søk",
|
||||
"Requests": "Forespørsler",
|
||||
"UserManagement": "Brukeradministrasjon",
|
||||
"Issues": "Mangler",
|
||||
"Donate": "Doner!",
|
||||
"DonateTooltip": "Dette er hvordan jeg overbevise min kone til å la meg bruke min fritid til å utvikle Ombi ;)",
|
||||
"UpdateAvailableTooltip": "Ny opdatering venter!",
|
||||
"Settings": "Innstillinger",
|
||||
"Welcome": "Velkommen {{username}}",
|
||||
"UpdateDetails": "Oppdater detaljer",
|
||||
"Logout": "Logg av",
|
||||
"Language": {
|
||||
"English": "English",
|
||||
"French": "French",
|
||||
"Spanish": "Spanish",
|
||||
"German": "German",
|
||||
"Italian": "Italian",
|
||||
"Danish": "Danish",
|
||||
"Dutch": "Dutch"
|
||||
}
|
||||
"English": "Engelsk",
|
||||
"French": "Fransk",
|
||||
"Spanish": "Spansk",
|
||||
"German": "Tysk",
|
||||
"Italian": "Italiensk",
|
||||
"Danish": "Dansk",
|
||||
"Dutch": "Nederlandsk",
|
||||
"Norwegian": "Norsk"
|
||||
},
|
||||
"OpenMobileApp": "Åpne mobilapp"
|
||||
},
|
||||
"Search": {
|
||||
"Title": "Search",
|
||||
"Paragraph": "Want to watch something that is not currently available? No problem, just search for it below and request it!",
|
||||
"MoviesTab": "Movies",
|
||||
"TvTab": "TV Shows",
|
||||
"Suggestions": "Suggestions",
|
||||
"NoResults": "Sorry, we didn't find any results!",
|
||||
"ReleaseDate": "Release Date",
|
||||
"ViewOnPlex": "View On Plex",
|
||||
"RequestAdded": "Request for {{title}} has been added successfully",
|
||||
"Title": "Søk",
|
||||
"Paragraph": "Vil du se noe som foreløpig ikke er tilgjengelig? Ikke noe problem, bare søk etter det nedenfor og be om det!",
|
||||
"MoviesTab": "Filmer",
|
||||
"TvTab": "TV serier",
|
||||
"Suggestions": "Forslag",
|
||||
"NoResults": "Beklager, vi fant ingen resultater!",
|
||||
"ReleaseDate": "Utgivelsesdato",
|
||||
"ViewOnPlex": "Spill av på Plex",
|
||||
"RequestAdded": "Forespørsel om {{title}} er lagt til",
|
||||
"Movies": {
|
||||
"PopularMovies": "Popular Movies",
|
||||
"UpcomingMovies": "Upcoming Movies",
|
||||
"TopRatedMovies": "Top Rated Movies",
|
||||
"NowPlayingMovies": "Now Playing Movies",
|
||||
"HomePage": "Home Page",
|
||||
"PopularMovies": "Populære filmer",
|
||||
"UpcomingMovies": "Kommende filmer",
|
||||
"TopRatedMovies": "Kritikerroste filmer",
|
||||
"NowPlayingMovies": "Aktuelle Filmer",
|
||||
"HomePage": "Startside",
|
||||
"Trailer": "Trailer"
|
||||
}
|
||||
},
|
||||
"Requests": {
|
||||
"Title": "Requests",
|
||||
"Paragraph": "Below you can see yours and all other requests, as well as their download and approval status.",
|
||||
"MoviesTab": "Movies",
|
||||
"TvTab": "TV Shows",
|
||||
"RequestedBy": "Requested By:",
|
||||
"Title": "Forespørsler",
|
||||
"Paragraph": "Nedenfor kan du se dine og alle andres forespørsler, du ser også status for nedlasting og godkjenning.",
|
||||
"MoviesTab": "Filmer",
|
||||
"TvTab": "TV serier",
|
||||
"RequestedBy": "Etterspurt av:",
|
||||
"Status": "Status:",
|
||||
"RequestStatus": "Request status:",
|
||||
"Denied": " Denied:",
|
||||
"ReleaseDate": "Release Date:",
|
||||
"RequestDate": "Request Date:",
|
||||
"QualityOverride": "Quality Override:",
|
||||
"RootFolderOverride": "Root Folder Override:",
|
||||
"ChangeRootFolder": "Change Root Folder",
|
||||
"ChangeQualityProfile": "Change Quality Profile",
|
||||
"MarkUnavailable": "Mark Unavailable",
|
||||
"MarkAvailable": "Mark Available",
|
||||
"Remove": "Remove",
|
||||
"Deny": "Deny",
|
||||
"Season": "Season:",
|
||||
"GridTitle": "Title",
|
||||
"AirDate": "AirDate",
|
||||
"RequestStatus": "Status for forespørsel:",
|
||||
"Denied": " Avslått:",
|
||||
"ReleaseDate": "Utgivelsesdato:",
|
||||
"RequestDate": "Dato for forespørsel:",
|
||||
"QualityOverride": "Overstyr kvalitet:",
|
||||
"RootFolderOverride": "Overstyring av rotmappe:",
|
||||
"ChangeRootFolder": "Endre rotmappe",
|
||||
"ChangeQualityProfile": "Endre kvalitetsprofil",
|
||||
"MarkUnavailable": "Merk utilgjengelig",
|
||||
"MarkAvailable": "Merk tilgjengelig",
|
||||
"Remove": "Fjern",
|
||||
"Deny": "Avslå",
|
||||
"Season": "Sesong:",
|
||||
"GridTitle": "Tittel",
|
||||
"AirDate": "Sendedato",
|
||||
"GridStatus": "Status"
|
||||
},
|
||||
"Issues": {
|
||||
"Title": "Issues",
|
||||
"PendingTitle": "Pending Issues",
|
||||
"InProgressTitle": "In Progress Issues",
|
||||
"ResolvedTitle": "Resolved Issues",
|
||||
"ColumnTitle": "Title",
|
||||
"Category": "Category",
|
||||
"Title": "Mangler",
|
||||
"PendingTitle": "Ventende løsninger",
|
||||
"InProgressTitle": "Mangler under behandling",
|
||||
"ResolvedTitle": "Løste mangler",
|
||||
"ColumnTitle": "Tittel",
|
||||
"Category": "Kategori",
|
||||
"Status": "Status",
|
||||
"Details": "Details",
|
||||
"Description": "Description",
|
||||
"NoComments": "No Comments!",
|
||||
"MarkInProgress": "Mark In Progress",
|
||||
"MarkResolved": "Mark Resolved",
|
||||
"Details": "Detaljer",
|
||||
"Description": "Beskrivelse",
|
||||
"NoComments": "Ingen kommentarer!",
|
||||
"MarkInProgress": "Marker som pågår",
|
||||
"MarkResolved": "Marker som løst",
|
||||
"SendMessageButton": "Send",
|
||||
"Subject": "Subject",
|
||||
"Comments": "Comments",
|
||||
"WriteMessagePlaceholder": "Write your message here...",
|
||||
"ReportedBy": "Reported By"
|
||||
"Subject": "Emne",
|
||||
"Comments": "Kommentarer",
|
||||
"WriteMessagePlaceholder": "Skriv meldingen din her...",
|
||||
"ReportedBy": "Rapportert av"
|
||||
}
|
||||
}
|
|
@ -58,8 +58,10 @@
|
|||
"German": "Tyska",
|
||||
"Italian": "Italienska",
|
||||
"Danish": "Danska",
|
||||
"Dutch": "Holländska"
|
||||
}
|
||||
"Dutch": "Holländska",
|
||||
"Norwegian": "Norwegian"
|
||||
},
|
||||
"OpenMobileApp": "Open Mobile App"
|
||||
},
|
||||
"Search": {
|
||||
"Title": "Sök",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue