浏览代码

Merge remote-tracking branch 'jellyfin/master'

Steve Hayles 5 年之前
父节点
当前提交
5eb9d10287

+ 2 - 2
.vscode/launch.json

@@ -10,7 +10,7 @@
             "request": "launch",
             "preLaunchTask": "build",
             // If you have changed target frameworks, make sure to update the program path.
-            "program": "${workspaceFolder}/Jellyfin.Server/bin/Debug/netcoreapp2.1/jellyfin.dll",
+            "program": "${workspaceFolder}/Jellyfin.Server/bin/Debug/netcoreapp3.0/jellyfin.dll",
             "args": [],
             "cwd": "${workspaceFolder}/Jellyfin.Server",
             // For more information about the 'console' field, see https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md#console-terminal-window
@@ -25,4 +25,4 @@
             "processId": "${command:pickProcess}"
         }
     ,]
-}
+}

+ 13 - 7
Dockerfile

@@ -1,8 +1,8 @@
-ARG DOTNET_VERSION=2.2
+ARG DOTNET_VERSION=3.0
 ARG FFMPEG_VERSION=latest
 
 FROM node:alpine as web-builder
-ARG JELLYFIN_WEB_VERSION=v10.5.0
+ARG JELLYFIN_WEB_VERSION=master
 RUN apk add curl \
  && curl -L https://github.com/jellyfin/jellyfin-web/archive/${JELLYFIN_WEB_VERSION}.tar.gz | tar zxf - \
  && cd jellyfin-web-* \
@@ -17,26 +17,32 @@ ENV DOTNET_CLI_TELEMETRY_OPTOUT=1
 RUN dotnet publish Jellyfin.Server --configuration Release --output="/jellyfin" --self-contained --runtime linux-x64 "-p:GenerateDocumentationFile=false;DebugSymbols=false;DebugType=none"
 
 FROM jellyfin/ffmpeg:${FFMPEG_VERSION} as ffmpeg
+FROM debian:stretch-slim
 
-FROM mcr.microsoft.com/dotnet/core/runtime:${DOTNET_VERSION}
-COPY --from=ffmpeg / /
+COPY --from=ffmpeg /opt/ffmpeg /opt/ffmpeg
 COPY --from=builder /jellyfin /jellyfin
 COPY --from=web-builder /dist /jellyfin/jellyfin-web
 # Install dependencies:
 #   libfontconfig1: needed for Skia
+#   libgomp1: needed for ffmpeg
+#   libva-drm2: needed for ffmpeg
 #   mesa-va-drivers: needed for VAAPI
 RUN apt-get update \
  && apt-get install --no-install-recommends --no-install-suggests -y \
-   libfontconfig1 mesa-va-drivers \
+   libfontconfig1 libgomp1 libva-drm2 mesa-va-drivers \
  && apt-get clean autoclean \
  && apt-get autoremove \
  && rm -rf /var/lib/apt/lists/* \
  && mkdir -p /cache /config /media \
- && chmod 777 /cache /config /media
+ && chmod 777 /cache /config /media \
+ && ln -s /opt/ffmpeg/bin/ffmpeg /usr/local/bin \
+ && ln -s /opt/ffmpeg/bin/ffprobe /usr/local/bin
+
+ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
 
 EXPOSE 8096
 VOLUME /cache /config /media
-ENTRYPOINT dotnet /jellyfin/jellyfin.dll \
+ENTRYPOINT ./jellyfin/jellyfin \
     --datadir /config \
     --cachedir /cache \
     --ffmpeg /usr/local/bin/ffmpeg

+ 5 - 5
Dockerfile.arm

@@ -4,7 +4,7 @@ ARG DOTNET_VERSION=3.0
 
 
 FROM node:alpine as web-builder
-ARG JELLYFIN_WEB_VERSION=v10.5.0
+ARG JELLYFIN_WEB_VERSION=master
 RUN apk add curl \
  && curl -L https://github.com/jellyfin/jellyfin-web/archive/${JELLYFIN_WEB_VERSION}.tar.gz | tar zxf - \
  && cd jellyfin-web-* \
@@ -17,8 +17,6 @@ FROM mcr.microsoft.com/dotnet/core/sdk:${DOTNET_VERSION} as builder
 WORKDIR /repo
 COPY . .
 ENV DOTNET_CLI_TELEMETRY_OPTOUT=1
-# TODO Remove or update the sed line when we update dotnet version.
-RUN find . -type f -exec sed -i 's/netcoreapp2.1/netcoreapp3.0/g' {} \;
 # Discard objs - may cause failures if exists
 RUN find . -type d -name obj | xargs -r rm -r
 # Build
@@ -26,7 +24,7 @@ RUN dotnet publish Jellyfin.Server --configuration Release --output="/jellyfin"
 
 
 FROM multiarch/qemu-user-static:x86_64-arm as qemu
-FROM mcr.microsoft.com/dotnet/core/runtime:${DOTNET_VERSION}-stretch-slim-arm32v7
+FROM debian:stretch-slim-arm32v7
 COPY --from=qemu /usr/bin/qemu-arm-static /usr/bin
 RUN apt-get update \
  && apt-get install --no-install-recommends --no-install-suggests -y ffmpeg \
@@ -36,9 +34,11 @@ RUN apt-get update \
 COPY --from=builder /jellyfin /jellyfin
 COPY --from=web-builder /dist /jellyfin/jellyfin-web
 
+ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
+
 EXPOSE 8096
 VOLUME /cache /config /media
-ENTRYPOINT dotnet /jellyfin/jellyfin.dll \
+ENTRYPOINT ./jellyfin/jellyfin \
     --datadir /config \
     --cachedir /cache \
     --ffmpeg /usr/bin/ffmpeg

+ 5 - 5
Dockerfile.arm64

@@ -4,7 +4,7 @@ ARG DOTNET_VERSION=3.0
 
 
 FROM node:alpine as web-builder
-ARG JELLYFIN_WEB_VERSION=v10.5.0
+ARG JELLYFIN_WEB_VERSION=master
 RUN apk add curl \
  && curl -L https://github.com/jellyfin/jellyfin-web/archive/${JELLYFIN_WEB_VERSION}.tar.gz | tar zxf - \
  && cd jellyfin-web-* \
@@ -17,8 +17,6 @@ FROM mcr.microsoft.com/dotnet/core/sdk:${DOTNET_VERSION} as builder
 WORKDIR /repo
 COPY . .
 ENV DOTNET_CLI_TELEMETRY_OPTOUT=1
-# TODO Remove or update the sed line when we update dotnet version.
-RUN find . -type f -exec sed -i 's/netcoreapp2.1/netcoreapp3.0/g' {} \;
 # Discard objs - may cause failures if exists
 RUN find . -type d -name obj | xargs -r rm -r
 # Build
@@ -26,7 +24,7 @@ RUN dotnet publish Jellyfin.Server --configuration Release --output="/jellyfin"
 
 
 FROM multiarch/qemu-user-static:x86_64-aarch64 as qemu
-FROM mcr.microsoft.com/dotnet/core/runtime:${DOTNET_VERSION}-stretch-slim-arm64v8
+FROM debian:stretch-slim-arm64v8
 COPY --from=qemu /usr/bin/qemu-aarch64-static /usr/bin
 RUN apt-get update \
  && apt-get install --no-install-recommends --no-install-suggests -y ffmpeg \
@@ -36,9 +34,11 @@ RUN apt-get update \
 COPY --from=builder /jellyfin /jellyfin
 COPY --from=web-builder /dist /jellyfin/jellyfin-web
 
+ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
+
 EXPOSE 8096
 VOLUME /cache /config /media
-ENTRYPOINT dotnet /jellyfin/jellyfin.dll \
+ENTRYPOINT ./jellyfin/jellyfin \
     --datadir /config \
     --cachedir /cache \
     --ffmpeg /usr/bin/ffmpeg

+ 6 - 6
Emby.Server.Implementations/Localization/Core/fr.json

@@ -5,7 +5,7 @@
     "Artists": "Artistes",
     "AuthenticationSucceededWithUserName": "{0} s'est authentifié avec succès",
     "Books": "Livres",
-    "CameraImageUploadedFrom": "Une image de caméra a été chargée depuis {0}",
+    "CameraImageUploadedFrom": "Une nouvelle image de caméra a été chargée depuis {0}",
     "Channels": "Chaînes",
     "ChapterNameValue": "Chapitre {0}",
     "Collections": "Collections",
@@ -17,7 +17,7 @@
     "Genres": "Genres",
     "HeaderAlbumArtists": "Artistes de l'album",
     "HeaderCameraUploads": "Photos transférées",
-    "HeaderContinueWatching": "Reprendre",
+    "HeaderContinueWatching": "Continuer à regarder",
     "HeaderFavoriteAlbums": "Albums favoris",
     "HeaderFavoriteArtists": "Artistes favoris",
     "HeaderFavoriteEpisodes": "Épisodes favoris",
@@ -34,14 +34,14 @@
     "LabelRunningTimeValue": "Durée : {0}",
     "Latest": "Derniers",
     "MessageApplicationUpdated": "Le serveur Jellyfin a été mis à jour",
-    "MessageApplicationUpdatedTo": "Jellyfin Serveur a été mis à jour en version {0}",
+    "MessageApplicationUpdatedTo": "Le serveur Jellyfin a été mis à jour vers {0}",
     "MessageNamedServerConfigurationUpdatedWithValue": "La configuration de la section {0} du serveur a été mise à jour",
     "MessageServerConfigurationUpdated": "La configuration du serveur a été mise à jour",
     "MixedContent": "Contenu mixte",
     "Movies": "Films",
     "Music": "Musique",
     "MusicVideos": "Vidéos musicales",
-    "NameInstallFailed": "{0} échec d'installation",
+    "NameInstallFailed": "{0} échec de l'installation",
     "NameSeasonNumber": "Saison {0}",
     "NameSeasonUnknown": "Saison Inconnue",
     "NewVersionIsAvailable": "Une nouvelle version de Jellyfin Serveur est disponible au téléchargement.",
@@ -50,7 +50,7 @@
     "NotificationOptionAudioPlayback": "Lecture audio démarrée",
     "NotificationOptionAudioPlaybackStopped": "Lecture audio arrêtée",
     "NotificationOptionCameraImageUploaded": "L'image de l'appareil photo a été transférée",
-    "NotificationOptionInstallationFailed": "Échec d'installation",
+    "NotificationOptionInstallationFailed": "Échec de l'installation",
     "NotificationOptionNewLibraryContent": "Nouveau contenu ajouté",
     "NotificationOptionPluginError": "Erreur d'extension",
     "NotificationOptionPluginInstalled": "Extension installée",
@@ -91,7 +91,7 @@
     "UserPolicyUpdatedWithName": "La politique de l'utilisateur a été mise à jour pour {0}",
     "UserStartedPlayingItemWithValues": "{0} est en train de lire {1} sur {2}",
     "UserStoppedPlayingItemWithValues": "{0} vient d'arrêter la lecture de {1} sur {2}",
-    "ValueHasBeenAddedToLibrary": "{0} a été ajouté à votre librairie",
+    "ValueHasBeenAddedToLibrary": "{0} a été ajouté à votre médiathèque",
     "ValueSpecialEpisodeName": "Spécial - {0}",
     "VersionNumber": "Version {0}"
 }

+ 24 - 24
Emby.Server.Implementations/Localization/Core/tr.json

@@ -5,26 +5,26 @@
     "Artists": "Sanatçılar",
     "AuthenticationSucceededWithUserName": "{0} kimlik başarıyla doğrulandı",
     "Books": "Kitaplar",
-    "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+    "CameraImageUploadedFrom": "{0} 'den yeni bir kamera resmi yüklendi",
     "Channels": "Kanallar",
-    "ChapterNameValue": "Chapter {0}",
-    "Collections": "Collections",
-    "DeviceOfflineWithName": "{0} has disconnected",
-    "DeviceOnlineWithName": "{0} is connected",
-    "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
-    "Favorites": "Favorites",
-    "Folders": "Folders",
-    "Genres": "Genres",
-    "HeaderAlbumArtists": "Album Artists",
-    "HeaderCameraUploads": "Camera Uploads",
+    "ChapterNameValue": "Bölüm {0}",
+    "Collections": "Koleksiyonlar",
+    "DeviceOfflineWithName": "{0} bağlantısı kesildi",
+    "DeviceOnlineWithName": "{0} bağlı",
+    "FailedLoginAttemptWithUserName": "{0} adresinden giriş başarısız oldu",
+    "Favorites": "Favoriler",
+    "Folders": "Klasörler",
+    "Genres": "Türler",
+    "HeaderAlbumArtists": "Albüm Sanatçıları",
+    "HeaderCameraUploads": "Kamera Yüklemeleri",
     "HeaderContinueWatching": "İzlemeye Devam Et",
     "HeaderFavoriteAlbums": "Favori Albümler",
-    "HeaderFavoriteArtists": "Favorite Artists",
-    "HeaderFavoriteEpisodes": "Favorite Episodes",
-    "HeaderFavoriteShows": "Favori Showlar",
-    "HeaderFavoriteSongs": "Favorite Songs",
-    "HeaderLiveTV": "Live TV",
-    "HeaderNextUp": "Next Up",
+    "HeaderFavoriteArtists": "Favori Sanatçılar",
+    "HeaderFavoriteEpisodes": "Favori Bölümler",
+    "HeaderFavoriteShows": "Favori Diziler",
+    "HeaderFavoriteSongs": "Favori Şarkılar",
+    "HeaderLiveTV": "Canlı TV",
+    "HeaderNextUp": "Sonraki hafta",
     "HeaderRecordingGroups": "Recording Groups",
     "HomeVideos": "Home videos",
     "Inherit": "Inherit",
@@ -38,7 +38,7 @@
     "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
     "MessageServerConfigurationUpdated": "Server configuration has been updated",
     "MixedContent": "Mixed content",
-    "Movies": "Movies",
+    "Movies": "Filmler",
     "Music": "Müzik",
     "MusicVideos": "Müzik videoları",
     "NameInstallFailed": "{0} kurulum başarısız",
@@ -61,8 +61,8 @@
     "NotificationOptionUserLockedOut": "User locked out",
     "NotificationOptionVideoPlayback": "Video playback started",
     "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
-    "Photos": "Photos",
-    "Playlists": "Playlists",
+    "Photos": "Fotoğraflar",
+    "Playlists": "Çalma listeleri",
     "Plugin": "Plugin",
     "PluginInstalledWithName": "{0} was installed",
     "PluginUninstalledWithName": "{0} was uninstalled",
@@ -71,13 +71,13 @@
     "ScheduledTaskFailedWithName": "{0} failed",
     "ScheduledTaskStartedWithName": "{0} started",
     "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
-    "Shows": "Shows",
-    "Songs": "Songs",
+    "Shows": "Diziler",
+    "Songs": "Şarkılar",
     "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.",
     "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
     "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
     "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
-    "Sync": "Sync",
+    "Sync": "Eşitle",
     "System": "System",
     "TvShows": "TV Shows",
     "User": "User",
@@ -92,6 +92,6 @@
     "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}",
     "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}",
     "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
-    "ValueSpecialEpisodeName": "Special - {0}",
+    "ValueSpecialEpisodeName": "Özel -{0}",
     "VersionNumber": "Version {0}"
 }

+ 1 - 1
Jellyfin.Server/Program.cs

@@ -376,7 +376,7 @@ namespace Jellyfin.Server
 
             return new ConfigurationBuilder()
                 .SetBasePath(appPaths.ConfigurationDirectoryPath)
-                .AddJsonFile("logging.json")
+                .AddJsonFile("logging.json", false, true)
                 .AddEnvironmentVariables("JELLYFIN_")
                 .AddInMemoryCollection(ConfigurationOptions.Configuration)
                 .Build();