aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Localization
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Server.Implementations/Localization')
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/de.json31
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json31
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/es.json31
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json31
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json31
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json31
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json31
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json31
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json31
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json31
-rw-r--r--MediaBrowser.Server.Implementations/Localization/LocalizationManager.cs124
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/de.json50
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/en_US.json50
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/es.json50
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/fr.json50
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/nl.json50
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json50
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json50
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/ru.json50
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/server.json50
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json50
21 files changed, 930 insertions, 4 deletions
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json
new file mode 100644
index 000000000..12cdb7035
--- /dev/null
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json
@@ -0,0 +1,31 @@
+{
+ "SettingsSaved": "Einstellungen gespeichert",
+ "AddUser": "Benutzer hinzuf\u00fcgen",
+ "Users": "Benutzer",
+ "Delete": "L\u00f6schen",
+ "Administrator": "Administrator",
+ "Password": "Passwort",
+ "CreatePassword": "Passwort erstellen",
+ "DeleteImage": "Bild l\u00f6schen",
+ "DeleteImageConfirmation": "M\u00f6chten Sie das Bild wirklich l\u00f6schen?",
+ "FileReadCancelled": "Das Einlesen der Datei wurde abgebrochen.",
+ "FileNotFound": "Datei nicht gefunden",
+ "FileReadError": "Beim Lesen der Datei ist ein Fehler aufgetreten.",
+ "DeleteUser": "Benutzer l\u00f6schen",
+ "DeleteUserConfirmation": "M\u00f6chten Sie {0} wirklich l\u00f6schen?",
+ "PasswordResetHeader": "Passwort zur\u00fccksetzen",
+ "PasswordResetComplete": "Das Passwort wurde zur\u00fcckgesetzt.",
+ "PasswordResetConfirmation": "M\u00f6chten Sie das Passwort wirklich zur\u00fccksetzen?",
+ "PasswordSaved": "Passwort gespeichert",
+ "PasswordMatchError": "Passwort und Passwortbest\u00e4tigung stimmen nicht \u00fcberein.",
+ "OptionOff": "Aus",
+ "OptionOn": "Ein",
+ "OptionRelease": "Release",
+ "OptionBeta": "Beta",
+ "OptionDev": "Dev",
+ "UninstallPluginHeader": "Deinstalliere Plugin",
+ "UninstallPluginConfirmation": "M\u00f6chten Sie {0} wirklich deinstallieren?",
+ "NoPluginConfigurationMessage": "Bei diesem Plugin kann nichts eingestellt werden.",
+ "NoPluginsInstalledMessage": "Sie haben keine Plugins installiert.",
+ "BrowsePluginCatalogMessage": "Durchsuchen Sie unsere Bibliothek um alle verf\u00fcgbaren Plugins anzuzeigen."
+} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json
new file mode 100644
index 000000000..7184d4724
--- /dev/null
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json
@@ -0,0 +1,31 @@
+{
+ "SettingsSaved": "Settings saved.",
+ "AddUser": "Add User",
+ "Users": "Users",
+ "Delete": "Delete",
+ "Administrator": "Administrator",
+ "Password": "Password",
+ "CreatePassword": "Create Password",
+ "DeleteImage": "Delete Image",
+ "DeleteImageConfirmation": "Are you sure you wish to delete this image?",
+ "FileReadCancelled": "The file read has been cancelled.",
+ "FileNotFound": "File not found.",
+ "FileReadError": "An error occurred while reading the file.",
+ "DeleteUser": "Delete User",
+ "DeleteUserConfirmation": "Are you sure you wish to delete {0}?",
+ "PasswordResetHeader": "Password Reset",
+ "PasswordResetComplete": "The password has been reset.",
+ "PasswordResetConfirmation": "Are you sure you wish to reset the password?",
+ "PasswordSaved": "Password saved.",
+ "PasswordMatchError": "Password and password confirmation must match.",
+ "OptionOff": "Off",
+ "OptionOn": "On",
+ "OptionRelease": "Release",
+ "OptionBeta": "Beta",
+ "OptionDev": "Dev",
+ "UninstallPluginHeader": "Uninstall Plugin",
+ "UninstallPluginConfirmation": "Are you sure you wish to uninstall {0}?",
+ "NoPluginConfigurationMessage": "This plugin has nothing to configure.",
+ "NoPluginsInstalledMessage": "You have no plugins installed.",
+ "BrowsePluginCatalogMessage": "Browse our plugin catalog to view available plugins."
+} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/es.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/es.json
new file mode 100644
index 000000000..b0b9fd1a9
--- /dev/null
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/es.json
@@ -0,0 +1,31 @@
+{
+ "SettingsSaved": "Configuracion guardada",
+ "AddUser": "Agregar usuario",
+ "Users": "Usuarios",
+ "Delete": "Borrar",
+ "Administrator": "Administrador",
+ "Password": "Contrase\u00f1a",
+ "CreatePassword": "Crear Contrase\u00f1a",
+ "DeleteImage": "Borrar Imagen",
+ "DeleteImageConfirmation": "Esta seguro que desea borrar esta imagen?",
+ "FileReadCancelled": "La lectura del archivo se ha cancelado.",
+ "FileNotFound": "Archivo no encontrado.",
+ "FileReadError": "Se encontr\u00f3 un error al leer el archivo.",
+ "DeleteUser": "Borrar Usuario",
+ "DeleteUserConfirmation": "Esta seguro que desea eliminar a {0}?",
+ "PasswordResetHeader": "Restablecer contrase\u00f1a",
+ "PasswordResetComplete": "La contrase\u00f1a se ha restablecido.",
+ "PasswordResetConfirmation": "Esta seguro que desea restablecer la contrase\u00f1a?",
+ "PasswordSaved": "Contrase\u00f1a guardada.",
+ "PasswordMatchError": "La contrase\u00f1a y la confirmaci\u00f3n de la contrase\u00f1a deben de ser iguales.",
+ "OptionOff": "Apagado",
+ "OptionOn": "Prendido",
+ "OptionRelease": "Liberar",
+ "OptionBeta": "Beta",
+ "OptionDev": "Desarrollo",
+ "UninstallPluginHeader": "Desinstalar Plugin",
+ "UninstallPluginConfirmation": "Esta seguro que desea desinstalar {0}?",
+ "NoPluginConfigurationMessage": "El plugin no requiere configuraci\u00f3n",
+ "NoPluginsInstalledMessage": "No tiene plugins instalados.",
+ "BrowsePluginCatalogMessage": "Navegar el catalogo de plugins para ver los plugins disponibles."
+} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json
new file mode 100644
index 000000000..9e1ebbfee
--- /dev/null
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json
@@ -0,0 +1,31 @@
+{
+ "SettingsSaved": "Param\u00e8tres sauvegard\u00e9s.",
+ "AddUser": "Ajout\u00e9 Usager",
+ "Users": "Usagers",
+ "Delete": "Supprimer",
+ "Administrator": "Administrateur",
+ "Password": "Mot de passe",
+ "CreatePassword": "Cr\u00e9er mot de passe",
+ "DeleteImage": "Supprimer Image",
+ "DeleteImageConfirmation": "\u00cates-vous s\u00fbr de vouloir supprimer l'image?",
+ "FileReadCancelled": "La lecture du fichier a \u00e9t\u00e9 annul\u00e9e.",
+ "FileNotFound": "Fichier non trouv\u00e9",
+ "FileReadError": "Un erreur est survenue pendant la lecture du fichier.",
+ "DeleteUser": "Supprimer Usager",
+ "DeleteUserConfirmation": "\u00cates-vous s\u00fbr de vouloir supprimer {0}?",
+ "PasswordResetHeader": "Red\u00e9marrage du mot de passe",
+ "PasswordResetComplete": "Le mot de passe a \u00e9t\u00e9 red\u00e9marr\u00e9.",
+ "PasswordResetConfirmation": "\u00cates-vous s\u00fbr de vouloir red\u00e9marrer le mot de passe?",
+ "PasswordSaved": "Mot de passe sauvegard\u00e9.",
+ "PasswordMatchError": "Mot de passe et confirmation de mot de passe doivent correspondre.",
+ "OptionOff": "Off",
+ "OptionOn": "On",
+ "OptionRelease": "Lancement",
+ "OptionBeta": "Beta",
+ "OptionDev": "Dev",
+ "UninstallPluginHeader": "D\u00e9sinstaller module d'extention",
+ "UninstallPluginConfirmation": "\u00cates-vous s\u00fbr de vouloir d\u00e9sinstaller {0}?",
+ "NoPluginConfigurationMessage": "Ce module d'extension n'a rien \u00e0 configurer.",
+ "NoPluginsInstalledMessage": "Vous n'avez aucun module d'extension install\u00e9.",
+ "BrowsePluginCatalogMessage": "Explorer notre catalogue de modules d'extension pour voir ce qui est disponible."
+} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json
new file mode 100644
index 000000000..6b014bf34
--- /dev/null
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json
@@ -0,0 +1,31 @@
+{
+ "SettingsSaved": "Settings saved.",
+ "AddUser": "Add User",
+ "Users": "Users",
+ "Delete": "Delete",
+ "Administrator": "Administrator",
+ "Password": "Password",
+ "CreatePassword": "Create Password",
+ "DeleteImage": "Delete Image",
+ "DeleteImageConfirmation": "Are you sure you wish to delete this image?",
+ "FileReadCancelled": "The file read has been cancelled.",
+ "FileNotFound": "File not found.",
+ "FileReadError": "An error occurred while reading the file.",
+ "DeleteUser": "Delete User",
+ "DeleteUserConfirmation": "Are you sure you wish to delete {0}?",
+ "PasswordResetHeader": "Password Reset",
+ "PasswordResetComplete": "The password has been reset.",
+ "PasswordResetConfirmation": "Are you sure you wish to reset the password?",
+ "PasswordSaved": "Password saved.",
+ "PasswordMatchError": "Password and password confirmation must match.",
+ "OptionOff": "Off",
+ "OptionOn": "On",
+ "OptionRelease": "Release",
+ "OptionBeta": "Beta",
+ "OptionDev": "Dev",
+ "UninstallPluginHeader": "Uninstall Plugin",
+ "UninstallPluginConfirmation": "Are you sure you wish to uninstall {0}?",
+ "NoPluginConfigurationMessage": "This plugin has nothing to configure.",
+ "NoPluginsInstalledMessage": "You have no plugins installed.",
+ "BrowsePluginCatalogMessage": "Browse our plugin catalog to view available plugins."
+} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json
new file mode 100644
index 000000000..17a343283
--- /dev/null
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json
@@ -0,0 +1,31 @@
+{
+ "SettingsSaved": "Instellingen opgeslagen.",
+ "AddUser": "Gebruiker toevoegen",
+ "Users": "Gebruikers",
+ "Delete": "Verwijderen",
+ "Administrator": "Beheerder",
+ "Password": "Wachtwoord",
+ "CreatePassword": "Maak wachtwoord",
+ "DeleteImage": "Verwijder afbeelding",
+ "DeleteImageConfirmation": "Weet je zeker dat je deze afbeelding wilt verwijderen?",
+ "FileReadCancelled": "Het lezen van het bestand is geannuleerd",
+ "FileNotFound": "Bestand niet gevonden.",
+ "FileReadError": "Er is een fout opgetreden bij het lezen van het bestand.",
+ "DeleteUser": "Verwijder gebruiker",
+ "DeleteUserConfirmation": "Weet je zeker dat je {0} wilt verwijderen?",
+ "PasswordResetHeader": "Wachtwoord opnieuw instellen",
+ "PasswordResetComplete": "Het wachtwoord is opnieuw ingesteld.",
+ "PasswordResetConfirmation": "Weet je zeker dat je het wachtwoord opnieuw in wilt stellen?",
+ "PasswordSaved": "Wachtwoord opgeslagen.",
+ "PasswordMatchError": "Wachtwoord en wachtwoord bevestiging moeten hetzelfde zijn.",
+ "OptionOff": "Uit",
+ "OptionOn": "Aan",
+ "OptionRelease": "Release",
+ "OptionBeta": "Beta",
+ "OptionDev": "Dev",
+ "UninstallPluginHeader": "Deinstalleer Plugin",
+ "UninstallPluginConfirmation": "Weet u zeker dat u {0} wilt deinstalleren?",
+ "NoPluginConfigurationMessage": "Deze plugin heeft niets in te stellen",
+ "NoPluginsInstalledMessage": "U heeft geen plugins geinstalleerd",
+ "BrowsePluginCatalogMessage": "Blader door de Plugincatalogus voor beschikbare plugins."
+} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json
new file mode 100644
index 000000000..73734c0c6
--- /dev/null
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json
@@ -0,0 +1,31 @@
+{
+ "SettingsSaved": "Prefer\u00eancias salvas.",
+ "AddUser": "Adicionar Usu\u00e1rio",
+ "Users": "Usu\u00e1rios",
+ "Delete": "Apagar",
+ "Administrator": "Administrador",
+ "Password": "Senha",
+ "CreatePassword": "Criar Senha",
+ "DeleteImage": "Apagar Imagem",
+ "DeleteImageConfirmation": "Tem certeza que deseja apagar esta imagem?",
+ "FileReadCancelled": "A leitura do arquivo foi cancelada.",
+ "FileNotFound": "Arquivo n\u00e3o encontrado.",
+ "FileReadError": "Ocorreu um erro ao ler o arquivo.",
+ "DeleteUser": "Apagar Usu\u00e1rio",
+ "DeleteUserConfirmation": "Tem certeza que deseja apagar {0}?",
+ "PasswordResetHeader": "Redefinir Senha",
+ "PasswordResetComplete": "A senha foi redefinida.",
+ "PasswordResetConfirmation": "Deseja realmente redefinir a senha?",
+ "PasswordSaved": "Senha salva.",
+ "PasswordMatchError": "A senha e confirma\u00e7\u00e3o da senha devem conferir.",
+ "OptionOff": "Off",
+ "OptionOn": "On",
+ "OptionRelease": "Release",
+ "OptionBeta": "Beta",
+ "OptionDev": "Dev",
+ "UninstallPluginHeader": "Desintalar Plugin",
+ "UninstallPluginConfirmation": "Deseja realmente desinstalar {0}?",
+ "NoPluginConfigurationMessage": "Este plugin n\u00e3o necessita configurar.",
+ "NoPluginsInstalledMessage": "N\u00e3o existem plugins instalados.",
+ "BrowsePluginCatalogMessage": "Navegue pelo cat\u00e1logo de plugins para ver os dispon\u00edveis."
+} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json
new file mode 100644
index 000000000..124564499
--- /dev/null
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json
@@ -0,0 +1,31 @@
+{
+ "SettingsSaved": "Configura\u00e7\u00f5es guardadas.",
+ "AddUser": "Adicionar Utilizador",
+ "Users": "Utilizadores",
+ "Delete": "Apagar",
+ "Administrator": "Administrador",
+ "Password": "Senha",
+ "CreatePassword": "Criar Senha",
+ "DeleteImage": "Apagar Imagem",
+ "DeleteImageConfirmation": "Tem a certeza que pretende apagar a imagem?",
+ "FileReadCancelled": "A leitura do ficheiro foi cancelada.",
+ "FileNotFound": "Ficheiro n\u00e3o encontrado",
+ "FileReadError": "Ocorreu um erro ao ler o ficheiro.",
+ "DeleteUser": "Apagar Utilizador",
+ "DeleteUserConfirmation": "Tem a certeza que pretende apagar {0}?",
+ "PasswordResetHeader": "Redefinir Senha",
+ "PasswordResetComplete": "A senha foi redefinida.",
+ "PasswordResetConfirmation": "Tem a certeza que pretende redefinir a senha?",
+ "PasswordSaved": "Senha guardada.",
+ "PasswordMatchError": "A senha e a confirma\u00e7\u00e3o da senha devem coincidir.",
+ "OptionOff": "Desligado",
+ "OptionOn": "Ligado",
+ "OptionRelease": "Final",
+ "OptionBeta": "Beta",
+ "OptionDev": "Dev",
+ "UninstallPluginHeader": "Desinstalar extens\u00e3o",
+ "UninstallPluginConfirmation": "Tem a certeza que pretende desinstalar {0}?",
+ "NoPluginConfigurationMessage": "Esta extens\u00e3o n\u00e3o \u00e9 configur\u00e1vel.",
+ "NoPluginsInstalledMessage": "N\u00e3o tem extens\u00f5es instaladas.",
+ "BrowsePluginCatalogMessage": "Navegue o nosso cat\u00e1logo de extens\u00f5es para ver as extens\u00f5es dispon\u00edveis."
+} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json
new file mode 100644
index 000000000..2657b9688
--- /dev/null
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json
@@ -0,0 +1,31 @@
+{
+ "SettingsSaved": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b",
+ "AddUser": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f",
+ "Users": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438",
+ "Delete": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c",
+ "Administrator": "\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440",
+ "Password": "\u041f\u0430\u0440\u043e\u043b\u044c",
+ "CreatePassword": "\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c",
+ "DeleteImage": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
+ "DeleteImageConfirmation": "\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u044d\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435?",
+ "FileReadCancelled": "\u0427\u0442\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0431\u044b\u043b\u043e \u043e\u0442\u043c\u0435\u043d\u0435\u043d\u043e",
+ "FileNotFound": "\u0424\u0430\u0439\u043b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
+ "FileReadError": "\u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430",
+ "DeleteUser": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f",
+ "DeleteUserConfirmation": "\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c {0}?",
+ "PasswordResetHeader": "\u0421\u0431\u0440\u043e\u0441 \u043f\u0430\u0440\u043e\u043b\u044f",
+ "PasswordResetComplete": "\u041f\u0430\u0440\u043e\u043b\u044c \u0431\u044b\u043b \u0441\u0431\u0440\u043e\u0448\u0435\u043d",
+ "PasswordResetConfirmation": "\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0441\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c?",
+ "PasswordSaved": "\u041f\u0430\u0440\u043e\u043b\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d",
+ "PasswordMatchError": "\u041f\u043e\u043b\u044f \u041f\u0430\u0440\u043e\u043b\u044c \u0438 \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u043e\u043b\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c",
+ "OptionOff": "\u0412\u044b\u043a\u043b.",
+ "OptionOn": "\u0412\u043a\u043b.",
+ "OptionRelease": "\u0412\u044b\u043f\u0443\u0441\u043a",
+ "OptionBeta": "\u0411\u0435\u0442\u0430",
+ "OptionDev": "\u0420\u0430\u0437\u0440\u0430\u0431.",
+ "UninstallPluginHeader": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d",
+ "UninstallPluginConfirmation": "\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c {0}?",
+ "NoPluginConfigurationMessage": "\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a",
+ "NoPluginsInstalledMessage": "\u0423 \u0412\u0430\u0441 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430.",
+ "BrowsePluginCatalogMessage": "\u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u043d\u0430\u0448\u0438\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u043c \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432."
+} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json
new file mode 100644
index 000000000..ca7b3a7c7
--- /dev/null
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json
@@ -0,0 +1,31 @@
+{
+ "SettingsSaved": "\u8a2d\u7f6e\u5df2\u4fdd\u5b58",
+ "AddUser": "Add User",
+ "Users": "\u7528\u6236",
+ "Delete": "\u522a\u9664",
+ "Administrator": "\u7ba1\u7406\u54e1",
+ "Password": "\u5bc6\u78bc",
+ "CreatePassword": "\u5275\u5efa\u5bc6\u78bc",
+ "DeleteImage": "\u522a\u9664\u5716\u50cf",
+ "DeleteImageConfirmation": "\u4f60\u78ba\u5b9a\u8981\u522a\u9664\u9019\u5f35\u5716\u7247\uff1f",
+ "FileReadCancelled": "The file read has been cancelled.",
+ "FileNotFound": "File not found.",
+ "FileReadError": "An error occurred while reading the file.",
+ "DeleteUser": "\u522a\u9664\u7528\u6236",
+ "DeleteUserConfirmation": "Are you sure you wish to delete {0}?",
+ "PasswordResetHeader": "\u91cd\u8a2d\u5bc6\u78bc",
+ "PasswordResetComplete": "\u5bc6\u78bc\u5df2\u91cd\u8a2d",
+ "PasswordResetConfirmation": "\u4f60\u78ba\u5b9a\u8981\u91cd\u8a2d\u5bc6\u78bc\uff1f",
+ "PasswordSaved": "\u5bc6\u78bc\u5df2\u4fdd\u5b58\u3002",
+ "PasswordMatchError": "\u5bc6\u78bc\u548c\u78ba\u8a8d\u5bc6\u78bc\u5fc5\u9808\u4e00\u81f4\u3002",
+ "OptionOff": "Off",
+ "OptionOn": "On",
+ "OptionRelease": "Release",
+ "OptionBeta": "Beta",
+ "OptionDev": "Dev",
+ "UninstallPluginHeader": "Uninstall Plugin",
+ "UninstallPluginConfirmation": "Are you sure you wish to uninstall {0}?",
+ "NoPluginConfigurationMessage": "This plugin has nothing to configure.",
+ "NoPluginsInstalledMessage": "You have no plugins installed.",
+ "BrowsePluginCatalogMessage": "Browse our plugin catalog to view available plugins."
+} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/LocalizationManager.cs b/MediaBrowser.Server.Implementations/Localization/LocalizationManager.cs
index 0d428742c..9b907ef74 100644
--- a/MediaBrowser.Server.Implementations/Localization/LocalizationManager.cs
+++ b/MediaBrowser.Server.Implementations/Localization/LocalizationManager.cs
@@ -1,9 +1,10 @@
-using MediaBrowser.Common.IO;
+using MediaBrowser.Common.Extensions;
+using MediaBrowser.Common.IO;
using MediaBrowser.Controller.Configuration;
-using MediaBrowser.Controller.IO;
using MediaBrowser.Controller.Localization;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Globalization;
+using MediaBrowser.Model.Serialization;
using MoreLinq;
using System;
using System.Collections.Concurrent;
@@ -11,6 +12,7 @@ using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
+using System.Reflection;
namespace MediaBrowser.Server.Implementations.Localization
{
@@ -33,15 +35,17 @@ namespace MediaBrowser.Server.Implementations.Localization
new ConcurrentDictionary<string, Dictionary<string, ParentalRating>>(StringComparer.OrdinalIgnoreCase);
private readonly IFileSystem _fileSystem;
-
+ private readonly IJsonSerializer _jsonSerializer;
+
/// <summary>
/// Initializes a new instance of the <see cref="LocalizationManager"/> class.
/// </summary>
/// <param name="configurationManager">The configuration manager.</param>
- public LocalizationManager(IServerConfigurationManager configurationManager, IFileSystem fileSystem)
+ public LocalizationManager(IServerConfigurationManager configurationManager, IFileSystem fileSystem, IJsonSerializer jsonSerializer)
{
_configurationManager = configurationManager;
_fileSystem = fileSystem;
+ _jsonSerializer = jsonSerializer;
ExtractAll();
}
@@ -241,5 +245,117 @@ namespace MediaBrowser.Server.Implementations.Localization
return value == null ? (int?)null : value.Value;
}
+
+ public string GetLocalizedString(string phrase)
+ {
+ return GetLocalizedString(phrase, _configurationManager.Configuration.UICulture);
+ }
+
+ public string GetLocalizedString(string phrase, string culture)
+ {
+ var dictionary = GetLocalizationDictionary(culture);
+
+ string value;
+
+ if (dictionary.TryGetValue(phrase, out value))
+ {
+ return value;
+ }
+
+ return phrase;
+ }
+
+ private readonly ConcurrentDictionary<string, Dictionary<string, string>> _dictionaries =
+ new ConcurrentDictionary<string, Dictionary<string, string>>(StringComparer.OrdinalIgnoreCase);
+
+ public Dictionary<string, string> GetLocalizationDictionary(string culture)
+ {
+ const string prefix = "Server";
+ var key = prefix + culture;
+
+ return _dictionaries.GetOrAdd(key, k => GetDictionary(prefix, culture, "server.json"));
+ }
+
+ public Dictionary<string, string> GetJavaScriptLocalizationDictionary(string culture)
+ {
+ const string prefix = "JavaScript";
+ var key = prefix + culture;
+
+ return _dictionaries.GetOrAdd(key, k => GetDictionary(prefix, culture, "javascript.json"));
+ }
+
+ private Dictionary<string, string> GetDictionary(string prefix, string culture, string baseFilename)
+ {
+ var dictionary = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
+
+ var assembly = GetType().Assembly;
+ var namespaceName = GetType().Namespace + "." + prefix;
+
+ CopyInto(dictionary, namespaceName + "." + baseFilename, assembly);
+ CopyInto(dictionary, namespaceName + "." + GetResourceFilename(culture), assembly);
+
+ return dictionary;
+ }
+
+ private void CopyInto(IDictionary<string, string> dictionary, string resourcePath, Assembly assembly)
+ {
+ using (var stream = assembly.GetManifestResourceStream(resourcePath))
+ {
+ if (stream != null)
+ {
+ var dict = _jsonSerializer.DeserializeFromStream<Dictionary<string, string>>(stream);
+
+ foreach (var key in dict.Keys)
+ {
+ dictionary[key] = dict[key];
+ }
+ }
+ }
+ }
+
+ private string GetResourceFilename(string culture)
+ {
+ var parts = culture.Split('-');
+
+ if (parts.Length == 2)
+ {
+ culture = parts[0].ToLower() + "_" + parts[1].ToUpper();
+ }
+ else
+ {
+ culture = culture.ToLower();
+ }
+
+ return culture + ".json";
+ }
+
+ public IEnumerable<LocalizatonOption> GetLocalizationOptions()
+ {
+ return new List<LocalizatonOption>
+ {
+ new LocalizatonOption{ Name="English (United States)", Value="en-us"},
+ new LocalizatonOption{ Name="Chinese Traditional", Value="zh-TW"},
+ new LocalizatonOption{ Name="Dutch", Value="nl"},
+ new LocalizatonOption{ Name="French", Value="fr"},
+ new LocalizatonOption{ Name="German", Value="de"},
+ new LocalizatonOption{ Name="Portuguese (Brazil)", Value="pt-BR"},
+ new LocalizatonOption{ Name="Portuguese (Portugal)", Value="pt-PT"},
+ new LocalizatonOption{ Name="Russian", Value="ru"},
+ new LocalizatonOption{ Name="Spanish", Value="es"}
+
+ }.OrderBy(i => i.Name);
+ }
+
+ public string LocalizeDocument(string document, string culture, Func<string,string> tokenBuilder)
+ {
+ foreach (var pair in GetLocalizationDictionary(culture).ToList())
+ {
+ var token = tokenBuilder(pair.Key);
+
+ document = document.Replace(token, pair.Value, StringComparison.Ordinal);
+ }
+
+ return document;
+ }
}
}
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/de.json b/MediaBrowser.Server.Implementations/Localization/Server/de.json
new file mode 100644
index 000000000..36d6993d8
--- /dev/null
+++ b/MediaBrowser.Server.Implementations/Localization/Server/de.json
@@ -0,0 +1,50 @@
+{
+ "LabelExit": "Ende",
+ "LabelVisitCommunity": "Besuche die Community",
+ "LabelGithubWiki": "Github Wiki",
+ "LabelSwagger": "Swagger",
+ "LabelStandard": "Standard",
+ "LabelViewApiDocumentation": "Zeige API Dokumentation",
+ "LabelBrowseLibrary": "Durchsuche Bibliothek",
+ "LabelConfigureMediaBrowser": "Konfiguriere Media Browser",
+ "LabelOpenLibraryViewer": "\u00d6ffne Bibliothekenansicht",
+ "LabelRestartServer": "Server neustarten",
+ "LabelShowLogWindow": "Zeige Log Fenster",
+ "LabelPrevious": "Vorheriges",
+ "LabelFinish": "Ende",
+ "LabelNext": "N\u00e4chstes",
+ "LabelYoureDone": "Du bist fertig!",
+ "WelcomeToMediaBrowser": "Willkommen zu Media Browser!",
+ "LabelMediaBrowser": "Media Browser",
+ "ThisWizardWillGuideYou": "Dieser Assistent wird Sie durch den Einrichtungsprozess f\u00fchren.",
+ "TellUsAboutYourself": "Sagen Sie uns etwas \u00fcber sich selbst",
+ "LabelYourFirstName": "Ihr Vorname:",
+ "MoreUsersCanBeAddedLater": "Weitere Benutzer k\u00f6nnen Sie sp\u00e4ter im Dashboard hinzuf\u00fcgen.",
+ "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.",
+ "LabelWindowsService": "Windows Service",
+ "AWindowsServiceHasBeenInstalled": "Ein Windows Service wurde installiert.",
+ "WindowsServiceIntro1": "Media Browser Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.",
+ "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.",
+ "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Dashboard<\/b>.",
+ "LabelConfigureSettings": "Konfiguriere Einstellungen",
+ "LabelEnableVideoImageExtraction": "Aktiviere Videobild-Extrahierung",
+ "VideoImageExtractionHelp": "F\u00fcr Videos die noch keien Bilder haben, und f\u00fcr die wir keine Internetbilder finden k\u00f6nnen. Hierdurch wird der erste Bibliothekenscan etwas mehr Zeit beanspruchen, f\u00fchrt aber zu einer ansprechenderen Pr\u00e4sentation.",
+ "LabelEnableChapterImageExtractionForMovies": "Extrahiere Kapitelbilder f\u00fcr Filme",
+ "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task at 4am, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.",
+ "LabelEnableAutomaticPortMapping": "Aktiviere automatische Portweiterleitung",
+ "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.",
+ "ButtonOk": "Ok",
+ "ButtonCancel": "Abbrechen",
+ "HeaderSetupLibrary": "Medienbibliothek einrichten",
+ "ButtonAddMediaFolder": "Medienordner hinzuf\u00fcgen",
+ "LabelFolderType": "Ordnertyp:",
+ "MediaFolderHelpPluginRequired": "* Ben\u00f6tigt ein Plugin, wie GameBrowser oder MB Bookshelf.",
+ "ReferToMediaLibraryWiki": "Refer to the media library wiki.",
+ "LabelCountry": "Land:",
+ "LabelLanguage": "Sprache:",
+ "HeaderPreferredMetadataLanguage": "Bevorzugte Metadata Sprache:",
+ "LabelSaveLocalMetadata": "Speichere Bildmaterial und Metadaten in den Medienodnern",
+ "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.",
+ "LabelDownloadInternetMetadata": "Lade Bildmaterial und Metadaten aus dem Internet",
+ "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations."
+} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/en_US.json b/MediaBrowser.Server.Implementations/Localization/Server/en_US.json
new file mode 100644
index 000000000..40269bde3
--- /dev/null
+++ b/MediaBrowser.Server.Implementations/Localization/Server/en_US.json
@@ -0,0 +1,50 @@
+{
+ "LabelExit": "Exit",
+ "LabelVisitCommunity": "Visit Community",
+ "LabelGithubWiki": "Github Wiki",
+ "LabelSwagger": "Swagger",
+ "LabelStandard": "Standard",
+ "LabelViewApiDocumentation": "View Api Documentation",
+ "LabelBrowseLibrary": "Browse Library",
+ "LabelConfigureMediaBrowser": "Configure Media Browser",
+ "LabelOpenLibraryViewer": "Open Library Viewer",
+ "LabelRestartServer": "Restart Server",
+ "LabelShowLogWindow": "Show Log Window",
+ "LabelPrevious": "Previous",
+ "LabelFinish": "Finish",
+ "LabelNext": "Next",
+ "LabelYoureDone": "You're Done!",
+ "WelcomeToMediaBrowser": "Welcome to Media Browser!",
+ "LabelMediaBrowser": "Media Browser",
+ "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process.",
+ "TellUsAboutYourself": "Tell us about yourself",
+ "LabelYourFirstName": "Your first name:",
+ "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.",
+ "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.",
+ "LabelWindowsService": "Windows Service",
+ "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.",
+ "WindowsServiceIntro1": "Media Browser Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.",
+ "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.",
+ "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Dashboard<\/b>.",
+ "LabelConfigureSettings": "Configure settings",
+ "LabelEnableVideoImageExtraction": "Enable video image extraction",
+ "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.",
+ "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies",
+ "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task at 4am, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.",
+ "LabelEnableAutomaticPortMapping": "Enable automatic port mapping",
+ "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.",
+ "ButtonOk": "Ok",
+ "ButtonCancel": "Cancel",
+ "HeaderSetupLibrary": "Setup your media library",
+ "ButtonAddMediaFolder": "Add media folder",
+ "LabelFolderType": "Folder type:",
+ "MediaFolderHelpPluginRequired": "* Requires the use of a plugin, e.g. GameBrowser or MB Bookshelf.",
+ "ReferToMediaLibraryWiki": "Refer to the media library wiki.",
+ "LabelCountry": "Country:",
+ "LabelLanguage": "Language:",
+ "HeaderPreferredMetadataLanguage": "Preferred metadata language:",
+ "LabelSaveLocalMetadata": "Save artwork and metadata into media folders",
+ "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.",
+ "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet",
+ "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations."
+} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/es.json b/MediaBrowser.Server.Implementations/Localization/Server/es.json
new file mode 100644
index 000000000..f475e1db4
--- /dev/null
+++ b/MediaBrowser.Server.Implementations/Localization/Server/es.json
@@ -0,0 +1,50 @@
+{
+ "LabelExit": "Salir",
+ "LabelVisitCommunity": "Visitar la comunidad",
+ "LabelGithubWiki": "Wiki de Github",
+ "LabelSwagger": "Swagger",
+ "LabelStandard": "Estandar",
+ "LabelViewApiDocumentation": "Ver documentacion de Api",
+ "LabelBrowseLibrary": "Navegar biblioteca",
+ "LabelConfigureMediaBrowser": "Configurar Media Browser",
+ "LabelOpenLibraryViewer": "Abrir el visor de la biblioteca",
+ "LabelRestartServer": "reiniciar el servidor",
+ "LabelShowLogWindow": "Mostrar la ventana del log",
+ "LabelPrevious": "Anterior",
+ "LabelFinish": "Terminar",
+ "LabelNext": "Siguiente",
+ "LabelYoureDone": "Ha Terminado!",
+ "WelcomeToMediaBrowser": "Welcome to Media Browser!",
+ "LabelMediaBrowser": "Media Browser",
+ "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process.",
+ "TellUsAboutYourself": "Tell us about yourself",
+ "LabelYourFirstName": "Your first name:",
+ "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.",
+ "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.",
+ "LabelWindowsService": "Windows Service",
+ "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.",
+ "WindowsServiceIntro1": "Media Browser Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.",
+ "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.",
+ "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Dashboard<\/b>.",
+ "LabelConfigureSettings": "Configure settings",
+ "LabelEnableVideoImageExtraction": "Enable video image extraction",
+ "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.",
+ "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies",
+ "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task at 4am, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.",
+ "LabelEnableAutomaticPortMapping": "Enable automatic port mapping",
+ "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.",
+ "ButtonOk": "Ok",
+ "ButtonCancel": "Cancel",
+ "HeaderSetupLibrary": "Setup your media library",
+ "ButtonAddMediaFolder": "Add media folder",
+ "LabelFolderType": "Folder type:",
+ "MediaFolderHelpPluginRequired": "* Requires the use of a plugin, e.g. GameBrowser or MB Bookshelf.",
+ "ReferToMediaLibraryWiki": "Refer to the media library wiki.",
+ "LabelCountry": "Country:",
+ "LabelLanguage": "Language:",
+ "HeaderPreferredMetadataLanguage": "Preferred metadata language:",
+ "LabelSaveLocalMetadata": "Save artwork and metadata into media folders",
+ "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.",
+ "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet",
+ "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations."
+} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/fr.json b/MediaBrowser.Server.Implementations/Localization/Server/fr.json
new file mode 100644
index 000000000..c2934807c
--- /dev/null
+++ b/MediaBrowser.Server.Implementations/Localization/Server/fr.json
@@ -0,0 +1,50 @@
+{
+ "LabelExit": "Quitter",
+ "LabelVisitCommunity": "Visiter Communaut\u00e9",
+ "LabelGithubWiki": "GitHub Wiki",
+ "LabelSwagger": "Swagger",
+ "LabelStandard": "Standard",
+ "LabelViewApiDocumentation": "Consulter la documentation API",
+ "LabelBrowseLibrary": "Naviguer la biblioth\u00e8que",
+ "LabelConfigureMediaBrowser": "Configurer Media Browser",
+ "LabelOpenLibraryViewer": "Ouvrir le navigateur de biblioth\u00e8que",
+ "LabelRestartServer": "Red\u00e9marrer Serveur",
+ "LabelShowLogWindow": "Afficher la fen\u00eatre du journal d'\u00e9v\u00e8nements",
+ "LabelPrevious": "Pr\u00e9c\u00e9dant",
+ "LabelFinish": "Termin\u00e9",
+ "LabelNext": "Suivant",
+ "LabelYoureDone": "Vous avez Termin\u00e9!",
+ "WelcomeToMediaBrowser": "Bienvenue \u00e0 Media Browser!",
+ "LabelMediaBrowser": "Media Browser",
+ "ThisWizardWillGuideYou": "Cet assistant vous guidera dans le processus de configuration.",
+ "TellUsAboutYourself": "Parlez-nous de vous",
+ "LabelYourFirstName": "Votre pr\u00e9nom:",
+ "MoreUsersCanBeAddedLater": "Plus d'usagers pourrons \u00eatre ajout\u00e9s ult\u00e9rieurement \u00e0 partir du tableau de bord.",
+ "UserProfilesIntro": "Media Browser supporte nativement les profiles d'usager, donnant la possibilit\u00e9 pour chaque usager d'avoir ses propres param\u00e8tres d'affichage, \u00e9tats de lecture et param\u00e8tres de contr\u00f4le parental.",
+ "LabelWindowsService": "Service Windows",
+ "AWindowsServiceHasBeenInstalled": "Un service Windows a \u00e9t\u00e9 install\u00e9.",
+ "WindowsServiceIntro1": "Media Browser, normalement, fonctionne en tant qu'application de bureau avec un ic\u00f4ne de barre de t\u00e2ches, mais si vous pr\u00e9f\u00e9rez son fonctionnement en tant que service d'arri\u00e8re-plan, il peut \u00eatre d\u00e9marr\u00e9 par le gestionnaire de service Windows.",
+ "WindowsServiceIntro2": "Si le service Windows est utilis\u00e9, veuillez noter qu'il ne peut pas fonctionner en m\u00eame temps que l'application par la barre de t\u00e2che, donc il faut fermer l'application de la barre de t\u00e2ches pour pouvoir ex\u00e9cuter le service. Le service devra aussi \u00eatre configur\u00e9 avec les droits administratifs par le panneau de configuration. Veuillez noter qu'actuellement les mise \u00e0 jour automatique par le service ne sont pas stables, donc les mises \u00e0 jour devront se faire par interaction manuelle.",
+ "WizardCompleted": "C'est tout ce dont nous avons besoins pour l'instant. Media Browser a commenc\u00e9 \u00e0 ramasser l'information sur votre biblioth\u00e8que de m\u00e9dia. Visiter quelques unes de nos applications, ensuite cliquer <b>Termin\u00e9<\/b> pour voir le <b>Tableau de bord<\/b>",
+ "LabelConfigureSettings": "Configurer param\u00e8tres",
+ "LabelEnableVideoImageExtraction": "Activer l'extraction d'image des videos",
+ "VideoImageExtractionHelp": "Pour les vid\u00e9os sans images et que nous n'avons pas trouv\u00e9 par Internet. Ce processus prolongera la mise \u00e0 jour initiale de biblioth\u00e8que mais offrira une meilleure pr\u00e9sentation visuelle.",
+ "LabelEnableChapterImageExtractionForMovies": "Extraire les images de chapitre pour les films",
+ "LabelChapterImageExtractionForMoviesHelp": "L'extraction d'images de chapitre permettra aux clients d'afficher des menus graphiques des sc\u00e8nes. Le processus peut \u00eatre long et exigeant en ressource processeur et de stockage (plusieurs Gigabytes). Il s'ex\u00e9cute par d\u00e9faut dans les t\u00e2ches programm\u00e9es \u00e0 4:00 AM mais peut \u00eatre modifi\u00e9 dans les options de t\u00e2ches programm\u00e9es. Il n'est pas recommand\u00e9 d'ex\u00e9cuter cette t\u00e2che dans les heures d'utilisation standard.",
+ "LabelEnableAutomaticPortMapping": "Activer la configuration automatique de port",
+ "LabelEnableAutomaticPortMappingHelp": "UPnP permet la configuration automatique de routeur pour un acc\u00e8s distance facile. Ceci peut ne pas fonctionner sur certains mod\u00e8les de routeur.",
+ "ButtonOk": "Ok",
+ "ButtonCancel": "Annuler",
+ "HeaderSetupLibrary": "Configurer votre biblioth\u00e8que de m\u00e9dia",
+ "ButtonAddMediaFolder": "Ajouter r\u00e9pertoire de m\u00e9dia",
+ "LabelFolderType": "Type de r\u00e9pertoire:",
+ "MediaFolderHelpPluginRequired": "* Requiert l'utilisation d'un plug-in, Ex: GameBrowser ou MB BookShelf",
+ "ReferToMediaLibraryWiki": "Se r\u00e9f\u00e9rer au wiki des biblioth\u00e8ques de m\u00e9dia",
+ "LabelCountry": "Pays:",
+ "LabelLanguage": "Langue:",
+ "HeaderPreferredMetadataLanguage": "Langue de m\u00e9tadonn\u00e9es pr\u00e9f\u00e9r\u00e9e:",
+ "LabelSaveLocalMetadata": "Enregistrer les images et m\u00e9tadonn\u00e9es dans les r\u00e9pertoires de m\u00e9dia",
+ "LabelSaveLocalMetadataHelp": "Enregistrer les images et m\u00e9tadonn\u00e9es dans les r\u00e9pertoires de m\u00e9dia va les placer \u00e0 un endroit o\u00f9 elles pourront facilement \u00eatre modifi\u00e9es.",
+ "LabelDownloadInternetMetadata": "T\u00e9l\u00e9charger les images et m\u00e9tadonn\u00e9es de Internet",
+ "LabelDownloadInternetMetadataHelp": "Media Browser peut t\u00e9l\u00e9charger l'information \u00e0 propos de votre m\u00e9dia pour offrir une pr\u00e9sentation plus riche."
+} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/nl.json b/MediaBrowser.Server.Implementations/Localization/Server/nl.json
new file mode 100644
index 000000000..0fcf20a53
--- /dev/null
+++ b/MediaBrowser.Server.Implementations/Localization/Server/nl.json
@@ -0,0 +1,50 @@
+{
+ "LabelExit": "Afsluiten",
+ "LabelVisitCommunity": "Bezoek de community",
+ "LabelGithubWiki": "Github Wiki",
+ "LabelSwagger": "Swagger",
+ "LabelStandard": "Standaard",
+ "LabelViewApiDocumentation": "Bekijk Api documentatie",
+ "LabelBrowseLibrary": "Bekijk bibliotheek",
+ "LabelConfigureMediaBrowser": "Configureer Media Browser",
+ "LabelOpenLibraryViewer": "Open bibliotheek verkenner",
+ "LabelRestartServer": "Herstart server",
+ "LabelShowLogWindow": "Toon log venster",
+ "LabelPrevious": "Vorige",
+ "LabelFinish": "Finish",
+ "LabelNext": "Volgende",
+ "LabelYoureDone": "Gereed!",
+ "WelcomeToMediaBrowser": "Welcome to Media Browser!",
+ "LabelMediaBrowser": "Media Browser",
+ "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process.",
+ "TellUsAboutYourself": "Tell us about yourself",
+ "LabelYourFirstName": "Your first name:",
+ "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.",
+ "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.",
+ "LabelWindowsService": "Windows Service",
+ "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.",
+ "WindowsServiceIntro1": "Media Browser Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.",
+ "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.",
+ "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Dashboard<\/b>.",
+ "LabelConfigureSettings": "Configure settings",
+ "LabelEnableVideoImageExtraction": "Enable video image extraction",
+ "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.",
+ "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies",
+ "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task at 4am, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.",
+ "LabelEnableAutomaticPortMapping": "Enable automatic port mapping",
+ "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.",
+ "ButtonOk": "Ok",
+ "ButtonCancel": "Cancel",
+ "HeaderSetupLibrary": "Setup your media library",
+ "ButtonAddMediaFolder": "Add media folder",
+ "LabelFolderType": "Folder type:",
+ "MediaFolderHelpPluginRequired": "* Requires the use of a plugin, e.g. GameBrowser or MB Bookshelf.",
+ "ReferToMediaLibraryWiki": "Refer to the media library wiki.",
+ "LabelCountry": "Country:",
+ "LabelLanguage": "Language:",
+ "HeaderPreferredMetadataLanguage": "Preferred metadata language:",
+ "LabelSaveLocalMetadata": "Save artwork and metadata into media folders",
+ "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.",
+ "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet",
+ "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations."
+} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json b/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json
new file mode 100644
index 000000000..0ea78b956
--- /dev/null
+++ b/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json
@@ -0,0 +1,50 @@
+{
+ "LabelExit": "Sair",
+ "LabelVisitCommunity": "Visite o Community",
+ "LabelGithubWiki": "Wiki do Github",
+ "LabelSwagger": "Swagger",
+ "LabelStandard": "Padr\u00e3o",
+ "LabelViewApiDocumentation": "Ver documenta\u00e7\u00e3o da Api",
+ "LabelBrowseLibrary": "Navegar pela Biblioteca",
+ "LabelConfigureMediaBrowser": "Configurar Media Browser",
+ "LabelOpenLibraryViewer": "Abrir Visualizador da Biblioteca",
+ "LabelRestartServer": "Reiniciar Servidor",
+ "LabelShowLogWindow": "Mostrar Janela de Log",
+ "LabelPrevious": "Anterior",
+ "LabelFinish": "Terminar",
+ "LabelNext": "Pr\u00f3ximo",
+ "LabelYoureDone": "Pronto!",
+ "WelcomeToMediaBrowser": "Bem vindo ao Media Browser!",
+ "LabelMediaBrowser": "Media Browser",
+ "ThisWizardWillGuideYou": "Este assistente ir\u00e1 gui\u00e1-lo pelo processo de instala\u00e7\u00e3o.",
+ "TellUsAboutYourself": "Conte-nos sobre voc\u00ea",
+ "LabelYourFirstName": "Seu primeiro nome:",
+ "MoreUsersCanBeAddedLater": "Mais usu\u00e1rios podem ser adicionados dentro do Painel.",
+ "UserProfilesIntro": "Media Browser inclui suporte a perfis de usu\u00e1rios, permitindo a cada usu\u00e1rio ter suas prefer\u00eancias de visualiza\u00e7\u00e3o, status das reprodu\u00e7\u00f5es e controle dos pais.",
+ "LabelWindowsService": "Servi\u00e7o do Windows",
+ "AWindowsServiceHasBeenInstalled": "Foi instalado um Servi\u00e7o do Windows.",
+ "WindowsServiceIntro1": "O Servidor Media Browser normalmente \u00e9 executado como uma aplica\u00e7\u00e3o de desktop com um \u00edcone na bandeja do sistema, mas se preferir executar como servi\u00e7o pode inici\u00e1-lo no painel de controle de servi\u00e7os do Windows",
+ "WindowsServiceIntro2": "Se usar o servi\u00e7o do Windows, por favor certifique-se que n\u00e3o esteja sendo executado ao mesmo tempo que o \u00edcone na bandeja, se for ter\u00e1 que sair da app antes de executar o servi\u00e7o. O servi\u00e7o necessita ser configurado com privil\u00e9gios de administrador no painel de controle. Neste momento o servi\u00e7o n\u00e3o pode se auto-atualizar, por isso novas vers\u00f5es exigir\u00e3o intera\u00e7\u00e3o manual.",
+ "WizardCompleted": "Isto \u00e9 todo o necess\u00e1rio. Media Browser iniciou a coleta das informa\u00e7\u00f5es de sua biblioteca de m\u00eddia. Conhe\u00e7a algumas de nossas apps e clique <b>Terminar<\/b> para ver o <b>Painel<\/b>.",
+ "LabelConfigureSettings": "Configurar prefer\u00eancias",
+ "LabelEnableVideoImageExtraction": "Ativar extra\u00e7\u00e3o de imagens de v\u00eddeo",
+ "VideoImageExtractionHelp": "Para v\u00eddeos que n\u00e3o tenham imagens e que n\u00e3o possamos encontrar imagens na internet. Isto aumentar\u00e1 o tempo do rastreamento inicial da biblioteca mas resultar\u00e1 em uma apresenta\u00e7\u00e3o mais bonita.",
+ "LabelEnableChapterImageExtractionForMovies": "Extrair imagens de cap\u00edtulos dos Filmes",
+ "LabelChapterImageExtractionForMoviesHelp": "Extrair imagens de cap\u00edtulos permitir\u00e1 aos clientes mostrar menus gr\u00e1ficos de sele\u00e7\u00e3o de cenas. O processo pode ser lento, uso intenso de cpu e muito espa\u00e7o em disco. Ele executa como uma tarefa di\u00e1ria noturna \u00e0s 4:00hs, embora seja configur\u00e1vel na \u00e1rea de tarefas agendadas. N\u00e3o \u00e9 recomendado executar durante as horas de pico de uso.",
+ "LabelEnableAutomaticPortMapping": "Ativar mapeamento de porta autom\u00e1tico",
+ "LabelEnableAutomaticPortMappingHelp": "UPnP permite uma configura\u00e7\u00e3o automatizada do roteador para acesso remoto f\u00e1cil. Isto pode n\u00e3o funcionar em alguns modelos de roteadores.",
+ "ButtonOk": "Ok",
+ "ButtonCancel": "Cancelar",
+ "HeaderSetupLibrary": "Configurar sua biblioteca de m\u00eddias",
+ "ButtonAddMediaFolder": "Adicionar pasta de m\u00eddias",
+ "LabelFolderType": "Tipo de pasta:",
+ "MediaFolderHelpPluginRequired": "* Requer o uso de um plugin, ex. GameBrowser ou MB Bookshelf.",
+ "ReferToMediaLibraryWiki": "Consultar wiki da biblioteca de m\u00eddias",
+ "LabelCountry": "Pa\u00eds:",
+ "LabelLanguage": "Idioma:",
+ "HeaderPreferredMetadataLanguage": "Idioma preferido dos metadados:",
+ "LabelSaveLocalMetadata": "Salvar artwork e metadados dentro das pastas da m\u00eddia",
+ "LabelSaveLocalMetadataHelp": "Salvar artwork e metadados diretamente nas pastas da m\u00eddia, as deixar\u00e1 em um local f\u00e1cil para edit\u00e1-las.",
+ "LabelDownloadInternetMetadata": "Baixar artwork e metadados da internet",
+ "LabelDownloadInternetMetadataHelp": "Media Browser pode baixar informa\u00e7\u00f5es sobre sua m\u00eddia para melhorar a apresenta\u00e7\u00e3o."
+} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json b/MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json
new file mode 100644
index 000000000..9fddc4f98
--- /dev/null
+++ b/MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json
@@ -0,0 +1,50 @@
+{
+ "LabelExit": "Sair",
+ "LabelVisitCommunity": "Visitar a Comunidade",
+ "LabelGithubWiki": "Wiki Github",
+ "LabelSwagger": "Swagger",
+ "LabelStandard": "Padr\u00e3o",
+ "LabelViewApiDocumentation": "Ver Documenta\u00e7\u00e3o da API",
+ "LabelBrowseLibrary": "Navegar na Biblioteca",
+ "LabelConfigureMediaBrowser": "Configurar Media Browser",
+ "LabelOpenLibraryViewer": "Abrir Visualizador da Biblioteca",
+ "LabelRestartServer": "Reiniciar Servidor",
+ "LabelShowLogWindow": "Mostrar Janela de Log",
+ "LabelPrevious": "Anterior",
+ "LabelFinish": "Terminar",
+ "LabelNext": "Seguinte",
+ "LabelYoureDone": "Concluiu!",
+ "WelcomeToMediaBrowser": "Welcome to Media Browser!",
+ "LabelMediaBrowser": "Media Browser",
+ "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process.",
+ "TellUsAboutYourself": "Tell us about yourself",
+ "LabelYourFirstName": "Your first name:",
+ "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.",
+ "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.",
+ "LabelWindowsService": "Windows Service",
+ "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.",
+ "WindowsServiceIntro1": "Media Browser Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.",
+ "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.",
+ "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Dashboard<\/b>.",
+ "LabelConfigureSettings": "Configure settings",
+ "LabelEnableVideoImageExtraction": "Enable video image extraction",
+ "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.",
+ "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies",
+ "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task at 4am, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.",
+ "LabelEnableAutomaticPortMapping": "Enable automatic port mapping",
+ "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.",
+ "ButtonOk": "Ok",
+ "ButtonCancel": "Cancel",
+ "HeaderSetupLibrary": "Setup your media library",
+ "ButtonAddMediaFolder": "Add media folder",
+ "LabelFolderType": "Folder type:",
+ "MediaFolderHelpPluginRequired": "* Requires the use of a plugin, e.g. GameBrowser or MB Bookshelf.",
+ "ReferToMediaLibraryWiki": "Refer to the media library wiki.",
+ "LabelCountry": "Country:",
+ "LabelLanguage": "Language:",
+ "HeaderPreferredMetadataLanguage": "Preferred metadata language:",
+ "LabelSaveLocalMetadata": "Save artwork and metadata into media folders",
+ "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.",
+ "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet",
+ "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations."
+} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ru.json b/MediaBrowser.Server.Implementations/Localization/Server/ru.json
new file mode 100644
index 000000000..076740f3c
--- /dev/null
+++ b/MediaBrowser.Server.Implementations/Localization/Server/ru.json
@@ -0,0 +1,50 @@
+{
+ "LabelExit": "\u0412\u044b\u0445\u043e\u0434",
+ "LabelVisitCommunity": "\u041f\u043e\u0441\u0435\u0442\u0438\u0442\u044c \u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e",
+ "LabelGithubWiki": "\u0412\u0438\u043a\u0438 \u043d\u0430 Github",
+ "LabelSwagger": "\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Swagger",
+ "LabelStandard": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f",
+ "LabelViewApiDocumentation": "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e API",
+ "LabelBrowseLibrary": "\u041e\u0431\u043e\u0437\u0440\u0435\u0432\u0430\u0442\u0435\u043b\u044c \u041c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438",
+ "LabelConfigureMediaBrowser": "\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c Media Browser",
+ "LabelOpenLibraryViewer": "\u0418\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u041c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0443",
+ "LabelRestartServer": "\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440",
+ "LabelShowLogWindow": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0416\u0443\u0440\u043d\u0430\u043b \u0432 \u043e\u043a\u043d\u0435",
+ "LabelPrevious": "\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435",
+ "LabelFinish": "\u0413\u043e\u0442\u043e\u0432\u043e",
+ "LabelNext": "\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435",
+ "LabelYoureDone": "\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043e!",
+ "WelcomeToMediaBrowser": "\u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 Media Browser!",
+ "LabelMediaBrowser": "Media Browser",
+ "ThisWizardWillGuideYou": "\u042d\u0442\u043e\u0442 \u043c\u0430\u0441\u0442\u0435\u0440 \u043f\u0440\u043e\u0432\u0435\u0434\u0451\u0442 \u0432\u0430\u0441 \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438.",
+ "TellUsAboutYourself": "\u0420\u0430\u0441\u0441\u043a\u0430\u0436\u0438\u0442\u0435 \u043d\u0430\u043c \u043e \u0441\u0435\u0431\u0435",
+ "LabelYourFirstName": "\u0412\u0430\u0448\u0435 \u0438\u043c\u044f",
+ "MoreUsersCanBeAddedLater": "\u041f\u043e\u0437\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0451 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 \u041f\u0430\u043d\u0435\u043b\u044c.",
+ "UserProfilesIntro": "Media Browser \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0438\u043c\u0435\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f.",
+ "LabelWindowsService": "\u0421\u043b\u0443\u0436\u0431\u0430 Windows",
+ "AWindowsServiceHasBeenInstalled": "\u0421\u043b\u0443\u0436\u0431\u0430 Windows \u0431\u044b\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430.",
+ "WindowsServiceIntro1": "Media Browser Server \u043e\u0431\u044b\u0447\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043e \u0437\u043d\u0430\u0447\u043a\u043e\u043c \u0432 \u043b\u043e\u0442\u043a\u0435, \u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0432 \u0444\u043e\u043d\u043e\u0432\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0438\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043b\u0443\u0436\u0431\u0430\u043c\u0438 Windows.",
+ "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.",
+ "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Dashboard<\/b>.",
+ "LabelConfigureSettings": "\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b",
+ "LabelEnableVideoImageExtraction": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0438\u0437 \u0432\u0438\u0434\u0435\u043e",
+ "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.",
+ "LabelEnableChapterImageExtractionForMovies": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0441\u0446\u0435\u043d \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u043c\u043e\u0432",
+ "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task at 4am, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.",
+ "LabelEnableAutomaticPortMapping": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e-\u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0440\u0442\u043e\u0432",
+ "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.",
+ "ButtonOk": "\u041e\u041a",
+ "ButtonCancel": "\u041e\u0442\u043c\u0435\u043d\u0430",
+ "HeaderSetupLibrary": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0432\u0430\u0448\u0435\u0439 \u041c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438",
+ "ButtonAddMediaFolder": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043a\u0443",
+ "LabelFolderType": "\u0422\u0438\u043f \u043f\u0430\u043f\u043a\u0438:",
+ "MediaFolderHelpPluginRequired": "* \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u043d\u043f\u0440. GameBrowser \u0438\u043b\u0438 MB Bookshelf.",
+ "ReferToMediaLibraryWiki": "\u0421\u043c. \u0432 \u0432\u0438\u043a\u0438 \u043f\u043e \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435 (media library)",
+ "LabelCountry": "\u0421\u0442\u0440\u0430\u043d\u0430",
+ "LabelLanguage": "\u042f\u0437\u044b\u043a:",
+ "HeaderPreferredMetadataLanguage": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445",
+ "LabelSaveLocalMetadata": "\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043a\u0430\u0445",
+ "LabelSaveLocalMetadataHelp": "\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0439 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043a\u0430\u0445, \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442 \u0438\u0445 \u0432 \u0442\u0430\u043a\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u0433\u0434\u0435 \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043b\u0435\u0433\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b.",
+ "LabelDownloadInternetMetadata": "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0447\u0435\u0440\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442",
+ "LabelDownloadInternetMetadataHelp": "Media Browser \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u0432\u0430\u0448\u0435\u043c \u043c\u0435\u0434\u0438\u0430, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f."
+} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json
new file mode 100644
index 000000000..9630509d3
--- /dev/null
+++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json
@@ -0,0 +1,50 @@
+{
+ "LabelExit": "Exit",
+ "LabelVisitCommunity": "Visit Community",
+ "LabelGithubWiki": "Github Wiki",
+ "LabelSwagger": "Swagger",
+ "LabelStandard": "Standard",
+ "LabelViewApiDocumentation": "View Api Documentation",
+ "LabelBrowseLibrary": "Browse Library",
+ "LabelConfigureMediaBrowser": "Configure Media Browser",
+ "LabelOpenLibraryViewer": "Open Library Viewer",
+ "LabelRestartServer": "Restart Server",
+ "LabelShowLogWindow": "Show Log Window",
+ "LabelPrevious": "Previous",
+ "LabelFinish": "Finish",
+ "LabelNext": "Next",
+ "LabelYoureDone": "You're Done!",
+ "WelcomeToMediaBrowser": "Welcome to Media Browser!",
+ "LabelMediaBrowser": "Media Browser",
+ "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process.",
+ "TellUsAboutYourself": "Tell us about yourself",
+ "LabelYourFirstName": "Your first name:",
+ "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.",
+ "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.",
+ "LabelWindowsService": "Windows Service",
+ "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.",
+ "WindowsServiceIntro1": "Media Browser Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.",
+ "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.",
+ "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish</b> to view the <b>Dashboard</b>.",
+ "LabelConfigureSettings": "Configure settings",
+ "LabelEnableVideoImageExtraction": "Enable video image extraction",
+ "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.",
+ "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies",
+ "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task at 4am, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.",
+ "LabelEnableAutomaticPortMapping": "Enable automatic port mapping",
+ "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.",
+ "ButtonOk": "Ok",
+ "ButtonCancel": "Cancel",
+ "HeaderSetupLibrary": "Setup your media library",
+ "ButtonAddMediaFolder": "Add media folder",
+ "LabelFolderType": "Folder type:",
+ "MediaFolderHelpPluginRequired": "* Requires the use of a plugin, e.g. GameBrowser or MB Bookshelf.",
+ "ReferToMediaLibraryWiki": "Refer to the media library wiki.",
+ "LabelCountry": "Country:",
+ "LabelLanguage": "Language:",
+ "HeaderPreferredMetadataLanguage": "Preferred metadata language:",
+ "LabelSaveLocalMetadata": "Save artwork and metadata into media folders",
+ "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.",
+ "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet",
+ "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations."
+} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json b/MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json
new file mode 100644
index 000000000..6084c1511
--- /dev/null
+++ b/MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json
@@ -0,0 +1,50 @@
+{
+ "LabelExit": "\u96e2\u958b",
+ "LabelVisitCommunity": "\u8a2a\u554f\u793e\u5340",
+ "LabelGithubWiki": "Github Wiki",
+ "LabelSwagger": "Swagger",
+ "LabelStandard": "\u6a19\u6dee",
+ "LabelViewApiDocumentation": "View Api Documentation",
+ "LabelBrowseLibrary": "Browse Library",
+ "LabelConfigureMediaBrowser": "Configure Media Browser",
+ "LabelOpenLibraryViewer": "Open Library Viewer",
+ "LabelRestartServer": "\u91cd\u65b0\u555f\u52d5\u670d\u52d9\u5668",
+ "LabelShowLogWindow": "\u986f\u793a\u65e5\u8a8c\u8996\u7a97",
+ "LabelPrevious": "\u4e0a\u4e00\u500b",
+ "LabelFinish": "\u5b8c\u7d50",
+ "LabelNext": "\u4e0b\u4e00\u500b",
+ "LabelYoureDone": "You're Done!",
+ "WelcomeToMediaBrowser": "Welcome to Media Browser!",
+ "LabelMediaBrowser": "Media Browser",
+ "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process.",
+ "TellUsAboutYourself": "Tell us about yourself",
+ "LabelYourFirstName": "Your first name:",
+ "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.",
+ "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.",
+ "LabelWindowsService": "Windows Service",
+ "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.",
+ "WindowsServiceIntro1": "Media Browser Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.",
+ "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.",
+ "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Dashboard<\/b>.",
+ "LabelConfigureSettings": "Configure settings",
+ "LabelEnableVideoImageExtraction": "Enable video image extraction",
+ "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.",
+ "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies",
+ "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task at 4am, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.",
+ "LabelEnableAutomaticPortMapping": "Enable automatic port mapping",
+ "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.",
+ "ButtonOk": "Ok",
+ "ButtonCancel": "Cancel",
+ "HeaderSetupLibrary": "Setup your media library",
+ "ButtonAddMediaFolder": "Add media folder",
+ "LabelFolderType": "Folder type:",
+ "MediaFolderHelpPluginRequired": "* Requires the use of a plugin, e.g. GameBrowser or MB Bookshelf.",
+ "ReferToMediaLibraryWiki": "Refer to the media library wiki.",
+ "LabelCountry": "Country:",
+ "LabelLanguage": "Language:",
+ "HeaderPreferredMetadataLanguage": "Preferred metadata language:",
+ "LabelSaveLocalMetadata": "Save artwork and metadata into media folders",
+ "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.",
+ "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet",
+ "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations."
+} \ No newline at end of file