added web client localization

pull/702/head
Luke Pulverenti 11 years ago
parent 5a014b093c
commit c0801e4f6d

@ -61,5 +61,12 @@ namespace MediaBrowser.Controller.Localization
/// </summary>
/// <returns>IEnumerable{LocalizatonOption}.</returns>
IEnumerable<LocalizatonOption> GetLocalizationOptions();
/// <summary>
/// Gets the java script localization dictionary.
/// </summary>
/// <param name="culture">The culture.</param>
/// <returns>Dictionary{System.StringSystem.String}.</returns>
Dictionary<string, string> GetJavaScriptLocalizationDictionary(string culture);
}
}

@ -257,8 +257,12 @@ namespace MediaBrowser.Server.Implementations.IO
InternalBufferSize = 32767
};
newWatcher.NotifyFilter = NotifyFilters.CreationTime | NotifyFilters.DirectoryName |
NotifyFilters.FileName | NotifyFilters.LastWrite | NotifyFilters.Size;
newWatcher.NotifyFilter = NotifyFilters.CreationTime |
NotifyFilters.DirectoryName |
NotifyFilters.FileName |
NotifyFilters.LastWrite |
NotifyFilters.Size |
NotifyFilters.Attributes;
newWatcher.Created += watcher_Changed;
newWatcher.Deleted += watcher_Changed;

@ -0,0 +1,21 @@
{
"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."
}

@ -1,3 +1,21 @@
{
"LabelTest": "Text"
"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."
}

@ -0,0 +1,21 @@
{
"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": "The file read has been cancelled.",
"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": "Password Reset",
"PasswordResetComplete": "The password has been reset.",
"PasswordResetConfirmation": "Are you sure you wish to reset the password?",
"PasswordSaved": "Senha guardada.",
"PasswordMatchError": "Password and password confirmation must match."
}

@ -333,8 +333,12 @@ namespace MediaBrowser.Server.Implementations.Localization
{
return new List<LocalizatonOption>
{
new LocalizatonOption{ Name="English (United States)", Value="en-us"}
};
new LocalizatonOption{ Name="English (United States)", Value="en-us"},
new LocalizatonOption{ Name="German", Value="de"},
new LocalizatonOption{ Name="Portuguese (Portugal)", Value="pt-PT"},
new LocalizatonOption{ Name="Russian", Value="ru"}
}.OrderBy(i => i.Name);
}
public string LocalizeDocument(string document, string culture, Func<string,string> tokenBuilder)

@ -0,0 +1,17 @@
{
"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!"
}

@ -0,0 +1,17 @@
{
"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!"
}

@ -0,0 +1,17 @@
{
"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!"
}

@ -0,0 +1,17 @@
{
"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": "\u041e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u0435",
"LabelStandard": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439",
"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\u0439\u043a\u0430 Media Browser",
"LabelOpenLibraryViewer": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u041c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438",
"LabelRestartServer": "\u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440",
"LabelShowLogWindow": "\u041e\u043a\u043d\u043e \u0416\u0443\u0440\u043d\u0430\u043b\u0430",
"LabelPrevious": "\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435",
"LabelFinish": "\u0417\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c",
"LabelNext": "\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435",
"LabelYoureDone": "\u0412\u044b \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0438!"
}

@ -284,6 +284,12 @@
<ItemGroup>
<EmbeddedResource Include="Localization\JavaScript\javascript.json" />
<EmbeddedResource Include="Localization\Server\server.json" />
<EmbeddedResource Include="Localization\Server\de.json" />
<EmbeddedResource Include="Localization\Server\pt_PT.json" />
<EmbeddedResource Include="Localization\Server\ru.json" />
<EmbeddedResource Include="Localization\JavaScript\en_US.json" />
<EmbeddedResource Include="Localization\JavaScript\pt_PT.json" />
<EmbeddedResource Include="Localization\Server\en_US.json" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>

@ -7,6 +7,7 @@ using MediaBrowser.Controller.Localization;
using MediaBrowser.Controller.Net;
using MediaBrowser.Controller.Plugins;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Serialization;
using ServiceStack;
using ServiceStack.Web;
using System;
@ -100,6 +101,7 @@ namespace MediaBrowser.WebDashboard.Api
private readonly IFileSystem _fileSystem;
private readonly ILocalizationManager _localization;
private readonly IJsonSerializer _jsonSerializer;
/// <summary>
/// Initializes a new instance of the <see cref="DashboardService" /> class.
@ -107,12 +109,13 @@ namespace MediaBrowser.WebDashboard.Api
/// <param name="appHost">The app host.</param>
/// <param name="serverConfigurationManager">The server configuration manager.</param>
/// <param name="fileSystem">The file system.</param>
public DashboardService(IServerApplicationHost appHost, IServerConfigurationManager serverConfigurationManager, IFileSystem fileSystem, ILocalizationManager localization)
public DashboardService(IServerApplicationHost appHost, IServerConfigurationManager serverConfigurationManager, IFileSystem fileSystem, ILocalizationManager localization, IJsonSerializer jsonSerializer)
{
_appHost = appHost;
_serverConfigurationManager = serverConfigurationManager;
_fileSystem = fileSystem;
_localization = localization;
_jsonSerializer = jsonSerializer;
}
/// <summary>
@ -524,6 +527,7 @@ namespace MediaBrowser.WebDashboard.Api
"autoorganizelog.js",
"channels.js",
"channelitems.js",
"dashboardgeneral.js",
"dashboardinfo.js",
"dashboardpage.js",
"directorybrowser.js",
@ -619,7 +623,10 @@ namespace MediaBrowser.WebDashboard.Api
private async Task AppendLocalization(Stream stream)
{
var js = "window.localizationGlossary=" + _jsonSerializer.SerializeToString(_localization.GetJavaScriptLocalizationDictionary(GetLocalizationCulture()));
var bytes = Encoding.UTF8.GetBytes(js);
await stream.WriteAsync(bytes, 0, bytes.Length).ConfigureAwait(false);
}
/// <summary>
@ -668,16 +675,16 @@ namespace MediaBrowser.WebDashboard.Api
var css = builder.ToString();
try
{
var result = new KristensenCssMinifier().Minify(builder.ToString(), false, Encoding.UTF8);
//try
//{
// var result = new KristensenCssMinifier().Minify(builder.ToString(), false, Encoding.UTF8);
//css = result.MinifiedContent;
}
catch (Exception ex)
{
Logger.ErrorException("Error minifying css", ex);
}
// css = result.MinifiedContent;
//}
//catch (Exception ex)
//{
// Logger.ErrorException("Error minifying css", ex);
//}
var memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(css));

@ -224,6 +224,9 @@
<Content Include="dashboard-ui\css\mediaplayer.css">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="dashboard-ui\dashboardgeneral.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="dashboard-ui\dashboardinfopage.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@ -518,6 +521,9 @@
<Content Include="dashboard-ui\scripts\contextmenu.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="dashboard-ui\scripts\dashboardgeneral.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="dashboard-ui\scripts\dashboardinfo.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>

Loading…
Cancel
Save