Updated localization
Titles are now localized Updated ads (including default AdUintId)
This commit is contained in:
@@ -16,6 +16,8 @@
|
|||||||
- Added "Share" button to video cards
|
- Added "Share" button to video cards
|
||||||
- Added "Delete video from playlist" button to video cards on playlist page\
|
- Added "Delete video from playlist" button to video cards on playlist page\
|
||||||
- Improved channel cover quality
|
- Improved channel cover quality
|
||||||
|
- If available, shows localized titles and descriptions (based on "Search relevance language" parameter set in settings)
|
||||||
|
- Updated russian localization
|
||||||
</en-US>
|
</en-US>
|
||||||
<ru-RU>### Что нового:
|
<ru-RU>### Что нового:
|
||||||
- Оптимизация приложения
|
- Оптимизация приложения
|
||||||
@@ -31,6 +33,8 @@
|
|||||||
- Добавлена кнопка "Поделиться" к видео карточкам
|
- Добавлена кнопка "Поделиться" к видео карточкам
|
||||||
- Добавлена кнопка "Удалить видео из плейлиста" к видео карточкам на страницах плейлистов
|
- Добавлена кнопка "Удалить видео из плейлиста" к видео карточкам на страницах плейлистов
|
||||||
- Улучшено качество обложки канала
|
- Улучшено качество обложки канала
|
||||||
|
- Показывает локализированные заголовки и описания если доступны (основан на параметре "Предпочитаемый язык поиска" установленного в настройках)
|
||||||
|
- Обновлена русская локализация
|
||||||
</ru-RU>
|
</ru-RU>
|
||||||
</content>
|
</content>
|
||||||
</item>
|
</item>
|
||||||
|
|||||||
@@ -42,9 +42,9 @@ namespace FoxTube
|
|||||||
};
|
};
|
||||||
public static YouTubeService Service => IsAuthorized ? new YouTubeService(Initializer) : NoAuthService;
|
public static YouTubeService Service => IsAuthorized ? new YouTubeService(Initializer) : NoAuthService;
|
||||||
public static HttpClient HttpClient { get; } = new HttpClient();
|
public static HttpClient HttpClient { get; } = new HttpClient();
|
||||||
private static bool TestAds => true; //Change this bool
|
private static bool TestAds => false; //Change this bool
|
||||||
public static string AppId => TestAds ? "d25517cb-12d4-4699-8bdc-52040c712cab" : "9ncqqxjtdlfh";
|
public static string AppId => TestAds ? "d25517cb-12d4-4699-8bdc-52040c712cab" : "9ncqqxjtdlfh";
|
||||||
public static string AdUnitId => TestAds ? "test" : "1100037769";
|
public static string AdUnitId => TestAds ? "test" : "1100044398";
|
||||||
public static bool AdsDisabled { get; private set; } = true;
|
public static bool AdsDisabled { get; private set; } = true;
|
||||||
|
|
||||||
//User info
|
//User info
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
VerticalAlignment="Top"
|
VerticalAlignment="Top"
|
||||||
d:DesignHeight="290"
|
d:DesignHeight="290"
|
||||||
d:DesignWidth="384"
|
d:DesignWidth="384"
|
||||||
|
Visibility="Collapsed"
|
||||||
Opacity="0"
|
Opacity="0"
|
||||||
Name="card">
|
Name="card">
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ namespace FoxTube.Controls.Adverts
|
|||||||
|
|
||||||
private void Methods_VideoPageSizeChanged(object sender = null, params object[] args)
|
private void Methods_VideoPageSizeChanged(object sender = null, params object[] args)
|
||||||
{
|
{
|
||||||
Visibility = (bool)args[0] ? Visibility.Collapsed : Visibility.Visible;
|
Visibility = !(bool)args[0] && advert != null ? Visibility.Visible : Visibility.Collapsed;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ErrorOccurred(object sender, NativeAdErrorEventArgs e)
|
private void ErrorOccurred(object sender, NativeAdErrorEventArgs e)
|
||||||
@@ -42,6 +42,7 @@ namespace FoxTube.Controls.Adverts
|
|||||||
|
|
||||||
public void Initialize()
|
public void Initialize()
|
||||||
{
|
{
|
||||||
|
Visibility = Visibility.Visible;
|
||||||
title.Text = advert.Title;
|
title.Text = advert.Title;
|
||||||
image.Source = new BitmapImage(advert.MainImages.First().Url.ToUri());
|
image.Source = new BitmapImage(advert.MainImages.First().Url.ToUri());
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ namespace FoxTube
|
|||||||
avatar = channelAvatar;
|
avatar = channelAvatar;
|
||||||
|
|
||||||
videoSource.PosterSource = new BitmapImage((meta.Snippet.Thumbnails.Maxres ?? meta.Snippet.Thumbnails.Medium).Url.ToUri());
|
videoSource.PosterSource = new BitmapImage((meta.Snippet.Thumbnails.Maxres ?? meta.Snippet.Thumbnails.Medium).Url.ToUri());
|
||||||
Controls.SetMeta(meta.Snippet.Title, meta.Snippet.ChannelTitle);
|
Controls.SetMeta(meta.Snippet.Localized.Title, meta.Snippet.ChannelTitle);
|
||||||
|
|
||||||
if (item.Snippet.LiveBroadcastContent == "none")
|
if (item.Snippet.LiveBroadcastContent == "none")
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -34,9 +34,10 @@ namespace FoxTube.Controls
|
|||||||
playlistId = id;
|
playlistId = id;
|
||||||
PlaylistsResource.ListRequest request = SecretsVault.Service.Playlists.List("snippet,contentDetails");
|
PlaylistsResource.ListRequest request = SecretsVault.Service.Playlists.List("snippet,contentDetails");
|
||||||
request.Id = playlistId;
|
request.Id = playlistId;
|
||||||
|
request.Hl = SettingsStorage.RelevanceLanguage;
|
||||||
item = (await request.ExecuteAsync()).Items[0];
|
item = (await request.ExecuteAsync()).Items[0];
|
||||||
|
|
||||||
title.Text = item.Snippet.Title;
|
title.Text = item.Snippet.Localized.Title;
|
||||||
channelName.Text = item.Snippet.ChannelTitle;
|
channelName.Text = item.Snippet.ChannelTitle;
|
||||||
counter.Text = item.ContentDetails.ItemCount.ToString();
|
counter.Text = item.ContentDetails.ItemCount.ToString();
|
||||||
date.Text = Methods.GetAgo(item.Snippet.PublishedAt.Value);
|
date.Text = Methods.GetAgo(item.Snippet.PublishedAt.Value);
|
||||||
|
|||||||
@@ -83,13 +83,13 @@
|
|||||||
<MenuFlyoutItem x:Uid="/Cards/openWeb" Icon="Globe" Text="Open in browser" Name="inBrowser" Click="InBrowser_Click"/>
|
<MenuFlyoutItem x:Uid="/Cards/openWeb" Icon="Globe" Text="Open in browser" Name="inBrowser" Click="InBrowser_Click"/>
|
||||||
<MenuFlyoutItem x:Uid="/Cards/share" Icon="Share" Text="Share" Name="share" Click="share_Click"/>
|
<MenuFlyoutItem x:Uid="/Cards/share" Icon="Share" Text="Share" Name="share" Click="share_Click"/>
|
||||||
<MenuFlyoutSeparator/>
|
<MenuFlyoutSeparator/>
|
||||||
<MenuFlyoutSubItem Icon="Download" Text="Download" Name="download"/>
|
<MenuFlyoutSubItem x:Uid="/Cards/downloads" Icon="Download" Text="Download" Name="download"/>
|
||||||
<MenuFlyoutSubItem Icon="Add" Text="Add to" Name="addTo">
|
<MenuFlyoutSubItem x:Uid="/Cards/addTo" Icon="Add" Text="Add to" Name="addTo">
|
||||||
<MenuFlyoutItem Text="New playlist" Name="newPlaylist" Click="NewPlaylist_Click" Icon="Add"/>
|
<MenuFlyoutItem x:Uid="/VideoPage/newPlaylist" Text="New playlist" Name="newPlaylist" Click="NewPlaylist_Click" Icon="Add"/>
|
||||||
<ToggleMenuFlyoutItem Text="Watch later" Name="wl" Click="Wl_Click" Icon="Clock"/>
|
<ToggleMenuFlyoutItem x:Uid="/VideoPage/wl" Text="Watch later" Name="wl" Click="Wl_Click" Icon="Clock"/>
|
||||||
<MenuFlyoutSeparator/>
|
<MenuFlyoutSeparator/>
|
||||||
</MenuFlyoutSubItem>
|
</MenuFlyoutSubItem>
|
||||||
<MenuFlyoutItem Text="Remove from playlist" Icon="Delete" Visibility="Collapsed" Name="delete" Click="Delete_Click"/>
|
<MenuFlyoutItem x:Uid="/Cards/delete" Text="Remove from playlist" Icon="Delete" Visibility="Collapsed" Name="delete" Click="Delete_Click"/>
|
||||||
</MenuFlyout>
|
</MenuFlyout>
|
||||||
</UserControl.ContextFlyout>
|
</UserControl.ContextFlyout>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
|
|||||||
@@ -53,9 +53,10 @@ namespace FoxTube.Controls
|
|||||||
|
|
||||||
VideosResource.ListRequest request = SecretsVault.Service.Videos.List("snippet,contentDetails,statistics,liveStreamingDetails");
|
VideosResource.ListRequest request = SecretsVault.Service.Videos.List("snippet,contentDetails,statistics,liveStreamingDetails");
|
||||||
request.Id = id;
|
request.Id = id;
|
||||||
|
request.Hl = SettingsStorage.RelevanceLanguage;
|
||||||
item = (await request.ExecuteAsync()).Items[0];
|
item = (await request.ExecuteAsync()).Items[0];
|
||||||
|
|
||||||
title.Text = item.Snippet.Title;
|
title.Text = item.Snippet.Localized.Title;
|
||||||
channelName.Text = item.Snippet.ChannelTitle;
|
channelName.Text = item.Snippet.ChannelTitle;
|
||||||
|
|
||||||
if (item.Snippet.Title == "Deleted video")
|
if (item.Snippet.Title == "Deleted video")
|
||||||
@@ -123,7 +124,6 @@ namespace FoxTube.Controls
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// TODO: Localize context menu
|
|
||||||
MediaStreamInfoSet infoSet = await new YoutubeClient().GetVideoMediaStreamInfosAsync(videoId);
|
MediaStreamInfoSet infoSet = await new YoutubeClient().GetVideoMediaStreamInfosAsync(videoId);
|
||||||
foreach (MuxedStreamInfo i in infoSet.Muxed)
|
foreach (MuxedStreamInfo i in infoSet.Muxed)
|
||||||
{
|
{
|
||||||
@@ -276,31 +276,30 @@ namespace FoxTube.Controls
|
|||||||
|
|
||||||
private async void NewPlaylist_Click(object sender, RoutedEventArgs e)
|
private async void NewPlaylist_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
// TODO: Localize strings
|
|
||||||
StackPanel stack = new StackPanel();
|
StackPanel stack = new StackPanel();
|
||||||
stack.Children.Add(new TextBox
|
stack.Children.Add(new TextBox
|
||||||
{
|
{
|
||||||
PlaceholderText = "Enter playlist name"
|
PlaceholderText = resources.GetString("/VideoPage/newPlaylistName/PlaceholderText")
|
||||||
});
|
});
|
||||||
|
|
||||||
ComboBox comboBox = new ComboBox
|
ComboBox comboBox = new ComboBox
|
||||||
{
|
{
|
||||||
Header = "Availablity",
|
Header = resources.GetString("/VideoPage/privacy/Header"),
|
||||||
SelectedIndex = 0,
|
SelectedIndex = 0,
|
||||||
HorizontalAlignment = HorizontalAlignment.Stretch
|
HorizontalAlignment = HorizontalAlignment.Stretch
|
||||||
};
|
};
|
||||||
comboBox.Items.Add(new ComboBoxItem { Content = "Public" });
|
comboBox.Items.Add(new ComboBoxItem { Content = resources.GetString("/VideoPage/public/Content") });
|
||||||
comboBox.Items.Add(new ComboBoxItem { Content = "Private" });
|
comboBox.Items.Add(new ComboBoxItem { Content = resources.GetString("/VideoPage/private/Content") });
|
||||||
comboBox.Items.Add(new ComboBoxItem { Content = "Direct link" });
|
comboBox.Items.Add(new ComboBoxItem { Content = resources.GetString("/VideoPage/direct/Content") });
|
||||||
|
|
||||||
stack.Children.Add(comboBox);
|
stack.Children.Add(comboBox);
|
||||||
|
|
||||||
ContentDialog playlistDialog = new ContentDialog
|
ContentDialog playlistDialog = new ContentDialog
|
||||||
{
|
{
|
||||||
PrimaryButtonText = "Create and add",
|
PrimaryButtonText = resources.GetString("/VideoPage/dialog/PrimaryButtonText"),
|
||||||
CloseButtonText = "Cancel",
|
CloseButtonText = resources.GetString("/VideoPage/dialog/CloseButtonText"),
|
||||||
DefaultButton = ContentDialogButton.Primary,
|
DefaultButton = ContentDialogButton.Primary,
|
||||||
Title = "New playlist",
|
Title = resources.GetString("/VideoPage/dialog/Title"),
|
||||||
Content = stack
|
Content = stack
|
||||||
};
|
};
|
||||||
playlistDialog.PrimaryButtonClick += PlaylistDialog_PrimaryButtonClick;
|
playlistDialog.PrimaryButtonClick += PlaylistDialog_PrimaryButtonClick;
|
||||||
@@ -450,18 +449,18 @@ namespace FoxTube.Controls
|
|||||||
|
|
||||||
private async void Delete_Click(object sender, RoutedEventArgs e)
|
private async void Delete_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
PlaylistItemsResource.ListRequest request = SecretsVault.Service.PlaylistItems.List("snippet");
|
|
||||||
request.PlaylistId = playlistId;
|
|
||||||
request.VideoId = item.Id;
|
|
||||||
PlaylistItemListResponse response = await request.ExecuteAsync();
|
|
||||||
|
|
||||||
PlaylistItem playlistItem = response.Items.Find(i => i.Snippet.PlaylistId == playlistId);
|
|
||||||
|
|
||||||
await SecretsVault.Service.PlaylistItems.Delete(playlistItem.Id).ExecuteAsync();
|
|
||||||
|
|
||||||
(Methods.MainPage.PageContent as PlaylistPage).DeleteItem(this);
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
PlaylistItemsResource.ListRequest request = SecretsVault.Service.PlaylistItems.List("snippet");
|
||||||
|
request.PlaylistId = playlistId;
|
||||||
|
request.VideoId = item.Id;
|
||||||
|
PlaylistItemListResponse response = await request.ExecuteAsync();
|
||||||
|
|
||||||
|
PlaylistItem playlistItem = response.Items.Find(i => i.Snippet.PlaylistId == playlistId);
|
||||||
|
|
||||||
|
await SecretsVault.Service.PlaylistItems.Delete(playlistItem.Id).ExecuteAsync();
|
||||||
|
|
||||||
|
(Methods.MainPage.PageContent as PlaylistPage).DeleteItem(this);
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
|
|
||||||
<ui:NavigationView.Header>
|
<ui:NavigationView.Header>
|
||||||
<Grid>
|
<Grid>
|
||||||
<TextBlock Text="Home" Name="Title" Style="{StaticResource TitleTextBlockStyle}"/>
|
<TextBlock Name="Title" Style="{StaticResource TitleTextBlockStyle}"/>
|
||||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
|
||||||
<Button x:Uid="/Main/feedback" Name="feedback" Click="Feedback_Click" Visibility="Collapsed" FontFamily="Segoe MDL2 Assets" Content="" Background="Transparent" Height="41" Width="60" FontSize="15"/>
|
<Button x:Uid="/Main/feedback" Name="feedback" Click="Feedback_Click" Visibility="Collapsed" FontFamily="Segoe MDL2 Assets" Content="" Background="Transparent" Height="41" Width="60" FontSize="15"/>
|
||||||
<Button x:Uid="/Main/signIn" Name="account" Click="SignIn_Click" Visibility="Collapsed" FontFamily="Segoe MDL2 Assets" Content="" Background="Transparent" Height="41" Width="60" FontSize="15"/>
|
<Button x:Uid="/Main/signIn" Name="account" Click="SignIn_Click" Visibility="Collapsed" FontFamily="Segoe MDL2 Assets" Content="" Background="Transparent" Height="41" Width="60" FontSize="15"/>
|
||||||
|
|||||||
@@ -47,10 +47,10 @@ namespace FoxTube
|
|||||||
removeAds.Visibility = (e[0] as bool?).Value ? Visibility.Collapsed : Visibility.Visible;
|
removeAds.Visibility = (e[0] as bool?).Value ? Visibility.Collapsed : Visibility.Visible;
|
||||||
if (!(bool)e[0])
|
if (!(bool)e[0])
|
||||||
return;
|
return;
|
||||||
//TODO: Localize strings
|
|
||||||
MessageDialog dialog = new MessageDialog("Thanks for purchasing full version of the app (^∇^) In order to complete changes we need to reopen it. But you can do it later");
|
MessageDialog dialog = new MessageDialog(resources.GetString("/Main/purchaseSuccess"));
|
||||||
dialog.Commands.Add(new UICommand("Close the app", (command) => Methods.CloseApp()));
|
dialog.Commands.Add(new UICommand(resources.GetString("/Main/close"), (command) => Methods.CloseApp()));
|
||||||
dialog.Commands.Add(new UICommand("Later"));
|
dialog.Commands.Add(new UICommand(resources.GetString("/Main/delay")));
|
||||||
dialog.CancelCommandIndex = 1;
|
dialog.CancelCommandIndex = 1;
|
||||||
dialog.DefaultCommandIndex = 0;
|
dialog.DefaultCommandIndex = 0;
|
||||||
await dialog.ShowAsync();
|
await dialog.ShowAsync();
|
||||||
@@ -83,22 +83,21 @@ namespace FoxTube
|
|||||||
|
|
||||||
async void PromptFeedback()
|
async void PromptFeedback()
|
||||||
{
|
{
|
||||||
//TODO: Localize strings
|
|
||||||
if (SettingsStorage.Uptime.TotalHours >= 12 && SettingsStorage.PromptFeedback)
|
if (SettingsStorage.Uptime.TotalHours >= 12 && SettingsStorage.PromptFeedback)
|
||||||
{
|
{
|
||||||
MessageDialog dialog = new MessageDialog("Have some thoughts to share about the app or any suggestions? Leave feedback!");
|
MessageDialog dialog = new MessageDialog(resources.GetString("/Main/feedbackMessage"));
|
||||||
dialog.Commands.Add(new UICommand("Don't ask me anymore", (command) => SettingsStorage.PromptFeedback = false));
|
dialog.Commands.Add(new UICommand(resources.GetString("/Main/dontAsk"), (command) => SettingsStorage.PromptFeedback = false));
|
||||||
dialog.Commands.Add(new UICommand("Maybe later"));
|
dialog.Commands.Add(new UICommand(resources.GetString("/Main/promptLater")));
|
||||||
dialog.Commands.Add(new UICommand("Sure!", async (command) =>
|
dialog.Commands.Add(new UICommand(resources.GetString("/Main/sure"), async (command) =>
|
||||||
{
|
{
|
||||||
SettingsStorage.PromptFeedback = false;
|
SettingsStorage.PromptFeedback = false;
|
||||||
if (StoreServicesFeedbackLauncher.IsSupported())
|
if (StoreServicesFeedbackLauncher.IsSupported())
|
||||||
await StoreServicesFeedbackLauncher.GetDefault().LaunchAsync();
|
await StoreServicesFeedbackLauncher.GetDefault().LaunchAsync();
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MessageDialog message = new MessageDialog("Oops. Seems like you don't have a Feedback Hub app. But you can stil send your feedback to michael.xfox@outlook.com");
|
MessageDialog message = new MessageDialog(resources.GetString("/Main/feedbackFail"));
|
||||||
message.Commands.Add(new UICommand("Send an E-mail", async (c) => await Launcher.LaunchUriAsync("mailto:michael.xfox@outlook.com".ToUri())));
|
message.Commands.Add(new UICommand(resources.GetString("/Main/sendEmail"), async (c) => await Launcher.LaunchUriAsync("mailto:michael.xfox@outlook.com".ToUri())));
|
||||||
message.Commands.Add(new UICommand("Nevermind. Get me back"));
|
message.Commands.Add(new UICommand(resources.GetString("/Main/goBack")));
|
||||||
message.CancelCommandIndex = 1;
|
message.CancelCommandIndex = 1;
|
||||||
message.DefaultCommandIndex = 0;
|
message.DefaultCommandIndex = 0;
|
||||||
await message.ShowAsync();
|
await message.ShowAsync();
|
||||||
@@ -111,10 +110,10 @@ namespace FoxTube
|
|||||||
|
|
||||||
if (SettingsStorage.Uptime.TotalHours >= 24 && SettingsStorage.PromptReview)
|
if (SettingsStorage.Uptime.TotalHours >= 24 && SettingsStorage.PromptReview)
|
||||||
{
|
{
|
||||||
MessageDialog dialog = new MessageDialog("Like our app? Review it on Microsoft Store!");
|
MessageDialog dialog = new MessageDialog(resources.GetString("/Main/rate"));
|
||||||
dialog.Commands.Add(new UICommand("Don't ask me anymore", (command) => SettingsStorage.PromptReview = false));
|
dialog.Commands.Add(new UICommand(resources.GetString("/Main/dontAsk"), (command) => SettingsStorage.PromptReview = false));
|
||||||
dialog.Commands.Add(new UICommand("Maybe later"));
|
dialog.Commands.Add(new UICommand(resources.GetString("/Main/promptLater")));
|
||||||
dialog.Commands.Add(new UICommand("Sure!", async (command) =>
|
dialog.Commands.Add(new UICommand(resources.GetString("/Main/sure"), async (command) =>
|
||||||
{
|
{
|
||||||
SettingsStorage.PromptReview = false;
|
SettingsStorage.PromptReview = false;
|
||||||
await Launcher.LaunchUriAsync("ms-windows-store://review/?ProductId=9NCQQXJTDLFH".ToUri());
|
await Launcher.LaunchUriAsync("ms-windows-store://review/?ProductId=9NCQQXJTDLFH".ToUri());
|
||||||
|
|||||||
@@ -54,12 +54,13 @@ namespace FoxTube.Pages
|
|||||||
|
|
||||||
PlaylistsResource.ListRequest infoRequest = SecretsVault.Service.Playlists.List("snippet,contentDetails");
|
PlaylistsResource.ListRequest infoRequest = SecretsVault.Service.Playlists.List("snippet,contentDetails");
|
||||||
infoRequest.Id = id;
|
infoRequest.Id = id;
|
||||||
|
infoRequest.Hl = SettingsStorage.RelevanceLanguage;
|
||||||
|
|
||||||
item = (await infoRequest.ExecuteAsync()).Items[0];
|
item = (await infoRequest.ExecuteAsync()).Items[0];
|
||||||
|
|
||||||
title.Text = item.Snippet.Title;
|
title.Text = item.Snippet.Localized.Title;
|
||||||
info.Text = $"{item.ContentDetails.ItemCount} {ResourceLoader.GetForCurrentView("Playlist").GetString("/Playlist/videos")}";
|
info.Text = $"{item.ContentDetails.ItemCount} {ResourceLoader.GetForCurrentView("Playlist").GetString("/Playlist/videos")}";
|
||||||
description.Text = item.Snippet.Description;
|
description.Text = item.Snippet.Localized.Description;
|
||||||
|
|
||||||
channelName.Text = item.Snippet.ChannelTitle;
|
channelName.Text = item.Snippet.ChannelTitle;
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
<TextBlock x:Uid="/General/restart" Foreground="Red" Text="Reopen the app to apply settings"/>
|
<TextBlock x:Uid="/General/restart" Foreground="Red" Text="Reopen the app to apply settings"/>
|
||||||
<Button x:Uid="/General/closeApp" Content="Close app" Background="Red" Margin="5" Click="Button_Click"/>
|
<Button x:Uid="/General/closeApp" Content="Close app" Background="Red" Margin="5" Click="Button_Click"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<ComboBox Header="Search relevance language" MinWidth="250" Name="relLanguage" SelectionChanged="RelLanguage_SelectionChanged"/>
|
<ComboBox x:Uid="/General/relevanceLanguage" Header="Search relevance language" MinWidth="250" Name="relLanguage" SelectionChanged="RelLanguage_SelectionChanged"/>
|
||||||
<ComboBox x:Uid="/General/region" Header="Region" MinWidth="250" Name="region" SelectionChanged="region_SelectionChanged"/>
|
<ComboBox x:Uid="/General/region" Header="Region" MinWidth="250" Name="region" SelectionChanged="region_SelectionChanged"/>
|
||||||
<ComboBox x:Uid="/General/safeSearch" Header="SafeSearch" MinWidth="250" Name="safeSearch" SelectionChanged="safeSearch_SelectionChanged">
|
<ComboBox x:Uid="/General/safeSearch" Header="SafeSearch" MinWidth="250" Name="safeSearch" SelectionChanged="safeSearch_SelectionChanged">
|
||||||
<ComboBoxItem x:Uid="/General/moderate" Content="Moderate"/>
|
<ComboBoxItem x:Uid="/General/moderate" Content="Moderate"/>
|
||||||
|
|||||||
@@ -112,8 +112,8 @@
|
|||||||
<AppBarButton x:Uid="/VideoPage/addTo" Name="addTo" Label="Add to" Icon="Add" Visibility="Visible">
|
<AppBarButton x:Uid="/VideoPage/addTo" Name="addTo" Label="Add to" Icon="Add" Visibility="Visible">
|
||||||
<AppBarButton.Flyout>
|
<AppBarButton.Flyout>
|
||||||
<MenuFlyout x:Name="addList">
|
<MenuFlyout x:Name="addList">
|
||||||
<MenuFlyoutItem Text="New playlist" Name="newPlaylist" Click="NewPlaylist_Click" Icon="Add"/>
|
<MenuFlyoutItem x:Uid="/VideoPage/newPlaylist" Text="New playlist" Name="newPlaylist" Click="NewPlaylist_Click" Icon="Add"/>
|
||||||
<ToggleMenuFlyoutItem Text="Watch later" Name="wl" Click="Wl_Click" Icon="Clock"/>
|
<ToggleMenuFlyoutItem x:Uid="/VideoPage/wl" Text="Watch later" Name="wl" Click="Wl_Click" Icon="Clock"/>
|
||||||
<MenuFlyoutSeparator/>
|
<MenuFlyoutSeparator/>
|
||||||
</MenuFlyout>
|
</MenuFlyout>
|
||||||
</AppBarButton.Flyout>
|
</AppBarButton.Flyout>
|
||||||
@@ -163,13 +163,13 @@
|
|||||||
</Pivot>
|
</Pivot>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<ContentDialog PrimaryButtonText="Create and add" Title="New playlist" CloseButtonText="Cancel" DefaultButton="Primary" PrimaryButtonClick="ContentDialog_PrimaryButtonClick" Name="playlistDialog">
|
<ContentDialog x:Uid="/VideoPage/dialog" PrimaryButtonText="Create and add" Title="New playlist" CloseButtonText="Cancel" DefaultButton="Primary" PrimaryButtonClick="ContentDialog_PrimaryButtonClick" Name="playlistDialog">
|
||||||
<StackPanel>
|
<StackPanel>
|
||||||
<TextBox PlaceholderText="Enter playlist name" Name="newListName"/>
|
<TextBox x:Uid="/VideoPage/newPlaylistName" PlaceholderText="Enter playlist name" Name="newListName"/>
|
||||||
<ComboBox Header="Availablity" SelectedIndex="0" HorizontalAlignment="Stretch" Name="newListDisc">
|
<ComboBox x:Uid="/VideoPage/privacy" Header="Availablity" SelectedIndex="0" HorizontalAlignment="Stretch" Name="newListDisc">
|
||||||
<ComboBoxItem Content="Public"/>
|
<ComboBoxItem x:Uid="/VideoPage/public" Content="Public"/>
|
||||||
<ComboBoxItem Content="Private"/>
|
<ComboBoxItem x:Uid="/VideoPage/private" Content="Private"/>
|
||||||
<ComboBoxItem Content="Direct link"/>
|
<ComboBoxItem x:Uid="/VideoPage/direct" Content="Direct link"/>
|
||||||
</ComboBox>
|
</ComboBox>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</ContentDialog>
|
</ContentDialog>
|
||||||
|
|||||||
@@ -113,6 +113,7 @@ namespace FoxTube.Pages
|
|||||||
|
|
||||||
VideosResource.ListRequest request = SecretsVault.Service.Videos.List("snippet,statistics,status,contentDetails,liveStreamingDetails");
|
VideosResource.ListRequest request = SecretsVault.Service.Videos.List("snippet,statistics,status,contentDetails,liveStreamingDetails");
|
||||||
request.Id = ids[0];
|
request.Id = ids[0];
|
||||||
|
request.Hl = SettingsStorage.RelevanceLanguage;
|
||||||
item = (await request.ExecuteAsync()).Items[0];
|
item = (await request.ExecuteAsync()).Items[0];
|
||||||
|
|
||||||
if (item.Snippet.LiveBroadcastContent == "none")
|
if (item.Snippet.LiveBroadcastContent == "none")
|
||||||
@@ -183,6 +184,7 @@ namespace FoxTube.Pages
|
|||||||
//Retrieving data
|
//Retrieving data
|
||||||
PlaylistsResource.ListRequest playlistRequest = SecretsVault.Service.Playlists.List("snippet,contentDetails");
|
PlaylistsResource.ListRequest playlistRequest = SecretsVault.Service.Playlists.List("snippet,contentDetails");
|
||||||
playlistRequest.Id = id;
|
playlistRequest.Id = id;
|
||||||
|
playlistRequest.Hl = SettingsStorage.RelevanceLanguage;
|
||||||
Playlist playlistItem = (await playlistRequest.ExecuteAsync()).Items[0];
|
Playlist playlistItem = (await playlistRequest.ExecuteAsync()).Items[0];
|
||||||
|
|
||||||
PlaylistItemsResource.ListRequest listRequest = SecretsVault.Service.PlaylistItems.List("snippet");
|
PlaylistItemsResource.ListRequest listRequest = SecretsVault.Service.PlaylistItems.List("snippet");
|
||||||
@@ -206,7 +208,7 @@ namespace FoxTube.Pages
|
|||||||
items[k].Number = k + 1;
|
items[k].Number = k + 1;
|
||||||
|
|
||||||
//Setting data
|
//Setting data
|
||||||
playlistName.Text = playlistItem.Snippet.Title;
|
playlistName.Text = playlistItem.Snippet.Localized.Title;
|
||||||
playlistChannel.Text = playlistItem.Snippet.ChannelTitle;
|
playlistChannel.Text = playlistItem.Snippet.ChannelTitle;
|
||||||
|
|
||||||
playlistCounter.Text = $"{items.IndexOf(selection) + 1}/{playlistItem.ContentDetails.ItemCount}";
|
playlistCounter.Text = $"{items.IndexOf(selection) + 1}/{playlistItem.ContentDetails.ItemCount}";
|
||||||
@@ -226,9 +228,9 @@ namespace FoxTube.Pages
|
|||||||
async void LoadInfo()
|
async void LoadInfo()
|
||||||
{
|
{
|
||||||
//Setting meta
|
//Setting meta
|
||||||
title.Text = item.Snippet.Title;
|
title.Text = item.Snippet.Localized.Title;
|
||||||
date.Text = $"{resources.GetString("/VideoPage/publishedAt")}: {item.Snippet.PublishedAt} ({Methods.GetAgo(item.Snippet.PublishedAt.Value)})";
|
date.Text = $"{resources.GetString("/VideoPage/publishedAt")}: {item.Snippet.PublishedAt} ({Methods.GetAgo(item.Snippet.PublishedAt.Value)})";
|
||||||
Methods.FormatText(ref description, item.Snippet.Description);
|
Methods.FormatText(ref description, item.Snippet.Localized.Description);
|
||||||
|
|
||||||
//Setting channel button
|
//Setting channel button
|
||||||
ChannelsResource.ListRequest channelRequest = SecretsVault.Service.Channels.List("snippet, statistics");
|
ChannelsResource.ListRequest channelRequest = SecretsVault.Service.Channels.List("snippet, statistics");
|
||||||
@@ -652,7 +654,6 @@ namespace FoxTube.Pages
|
|||||||
|
|
||||||
private async void NewPlaylist_Click(object sender, RoutedEventArgs e)
|
private async void NewPlaylist_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
//TODO: Localize strings
|
|
||||||
await playlistDialog.ShowAsync();
|
await playlistDialog.ShowAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -186,4 +186,13 @@
|
|||||||
<data name="watched.Text" xml:space="preserve">
|
<data name="watched.Text" xml:space="preserve">
|
||||||
<value>Watched</value>
|
<value>Watched</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="addTo.Text" xml:space="preserve">
|
||||||
|
<value>Add to</value>
|
||||||
|
</data>
|
||||||
|
<data name="delete.Text" xml:space="preserve">
|
||||||
|
<value>Delete from playlist</value>
|
||||||
|
</data>
|
||||||
|
<data name="downloads.Text" xml:space="preserve">
|
||||||
|
<value>Downloads</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -184,7 +184,7 @@
|
|||||||
<value>Remember my choice</value>
|
<value>Remember my choice</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="restart.Text" xml:space="preserve">
|
<data name="restart.Text" xml:space="preserve">
|
||||||
<value>Reopen the app to apply changes</value>
|
<value>Reopen the app to apply changes (otherwise some elements may not be displayed correctly)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ru.Content" xml:space="preserve">
|
<data name="ru.Content" xml:space="preserve">
|
||||||
<value>Russian (Russian Federation)</value>
|
<value>Russian (Russian Federation)</value>
|
||||||
@@ -204,4 +204,7 @@
|
|||||||
<data name="devNotifications.OnContent" xml:space="preserve">
|
<data name="devNotifications.OnContent" xml:space="preserve">
|
||||||
<value>Recieve messages from developers</value>
|
<value>Recieve messages from developers</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="relevanceLanguage.Header" xml:space="preserve">
|
||||||
|
<value>Search relevance language</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -126,18 +126,36 @@
|
|||||||
<data name="channel" xml:space="preserve">
|
<data name="channel" xml:space="preserve">
|
||||||
<value>Channel</value>
|
<value>Channel</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="close" xml:space="preserve">
|
||||||
|
<value>Close the app</value>
|
||||||
|
</data>
|
||||||
<data name="connectErrContent" xml:space="preserve">
|
<data name="connectErrContent" xml:space="preserve">
|
||||||
<value>We were unabled to retrieve your account information due to weak internet connection or Google servers' problems. PLease, try again later</value>
|
<value>We were unabled to retrieve your account information due to weak internet connection or Google servers' problems. PLease, try again later</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="connectErrHeader" xml:space="preserve">
|
<data name="connectErrHeader" xml:space="preserve">
|
||||||
<value>Failed to connect</value>
|
<value>Failed to connect</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="delay" xml:space="preserve">
|
||||||
|
<value>Later</value>
|
||||||
|
</data>
|
||||||
|
<data name="dontAsk" xml:space="preserve">
|
||||||
|
<value>Don't ask me anymore</value>
|
||||||
|
</data>
|
||||||
<data name="downloads.Content" xml:space="preserve">
|
<data name="downloads.Content" xml:space="preserve">
|
||||||
<value>Downloads</value>
|
<value>Downloads</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="feedback.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
<data name="feedback.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||||
<value>Give a feedback</value>
|
<value>Give a feedback</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="feedbackFail" xml:space="preserve">
|
||||||
|
<value>Oops. Seems like you don't have a Feedback Hub app. But you can stil send your feedback to michael.xfox@outlook.com</value>
|
||||||
|
</data>
|
||||||
|
<data name="feedbackMessage" xml:space="preserve">
|
||||||
|
<value>Have some thoughts to share about the app or any suggestions? Leave feedback!</value>
|
||||||
|
</data>
|
||||||
|
<data name="goBack" xml:space="preserve">
|
||||||
|
<value>Nevermind. Get me back</value>
|
||||||
|
</data>
|
||||||
<data name="history.Content" xml:space="preserve">
|
<data name="history.Content" xml:space="preserve">
|
||||||
<value>History</value>
|
<value>History</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -168,12 +186,24 @@
|
|||||||
<data name="playlist" xml:space="preserve">
|
<data name="playlist" xml:space="preserve">
|
||||||
<value>Playlist</value>
|
<value>Playlist</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="promptLater" xml:space="preserve">
|
||||||
|
<value>Maybe later</value>
|
||||||
|
</data>
|
||||||
|
<data name="purchaseSuccess" xml:space="preserve">
|
||||||
|
<value>Thanks for purchasing full version of the app (^∇^) In order to complete changes we need to reopen it. But you can do it later (some elements may be broken)</value>
|
||||||
|
</data>
|
||||||
<data name="quit" xml:space="preserve">
|
<data name="quit" xml:space="preserve">
|
||||||
<value>Quit</value>
|
<value>Quit</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="rate" xml:space="preserve">
|
||||||
|
<value>Like our app? Review it on Microsoft Store!</value>
|
||||||
|
</data>
|
||||||
<data name="searchPlaceholder.PlaceholderText" xml:space="preserve">
|
<data name="searchPlaceholder.PlaceholderText" xml:space="preserve">
|
||||||
<value>Search</value>
|
<value>Search</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="sendEmail" xml:space="preserve">
|
||||||
|
<value>Send an E-mail</value>
|
||||||
|
</data>
|
||||||
<data name="settings.Content" xml:space="preserve">
|
<data name="settings.Content" xml:space="preserve">
|
||||||
<value>Settings</value>
|
<value>Settings</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -192,6 +222,9 @@
|
|||||||
<data name="subscriptions.Content" xml:space="preserve">
|
<data name="subscriptions.Content" xml:space="preserve">
|
||||||
<value>Subscriptions</value>
|
<value>Subscriptions</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="sure" xml:space="preserve">
|
||||||
|
<value>Sure!</value>
|
||||||
|
</data>
|
||||||
<data name="tryAgain" xml:space="preserve">
|
<data name="tryAgain" xml:space="preserve">
|
||||||
<value>Try again</value>
|
<value>Try again</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -264,4 +264,34 @@
|
|||||||
<data name="publishedAt" xml:space="preserve">
|
<data name="publishedAt" xml:space="preserve">
|
||||||
<value>Published at</value>
|
<value>Published at</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="dialog.CloseButtonText" xml:space="preserve">
|
||||||
|
<value>Cancel</value>
|
||||||
|
</data>
|
||||||
|
<data name="dialog.PrimaryButtonText" xml:space="preserve">
|
||||||
|
<value>Create and add</value>
|
||||||
|
</data>
|
||||||
|
<data name="dialog.Title" xml:space="preserve">
|
||||||
|
<value>New playlist</value>
|
||||||
|
</data>
|
||||||
|
<data name="direct.Content" xml:space="preserve">
|
||||||
|
<value>Direct link</value>
|
||||||
|
</data>
|
||||||
|
<data name="newPlaylist.Text" xml:space="preserve">
|
||||||
|
<value>New playlist</value>
|
||||||
|
</data>
|
||||||
|
<data name="newPlaylistName.PlaceholderText" xml:space="preserve">
|
||||||
|
<value>Enter playlist name</value>
|
||||||
|
</data>
|
||||||
|
<data name="privacy.Header" xml:space="preserve">
|
||||||
|
<value>Availability</value>
|
||||||
|
</data>
|
||||||
|
<data name="private.Content" xml:space="preserve">
|
||||||
|
<value>Private</value>
|
||||||
|
</data>
|
||||||
|
<data name="public.Content" xml:space="preserve">
|
||||||
|
<value>Public</value>
|
||||||
|
</data>
|
||||||
|
<data name="wl.Text" xml:space="preserve">
|
||||||
|
<value>Watch later</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -186,4 +186,13 @@
|
|||||||
<data name="watched.Text" xml:space="preserve">
|
<data name="watched.Text" xml:space="preserve">
|
||||||
<value>Просмотрено</value>
|
<value>Просмотрено</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="addTo.Text" xml:space="preserve">
|
||||||
|
<value>Добавить в</value>
|
||||||
|
</data>
|
||||||
|
<data name="delete.Text" xml:space="preserve">
|
||||||
|
<value>Удалить из плейлиста</value>
|
||||||
|
</data>
|
||||||
|
<data name="downloads.Text" xml:space="preserve">
|
||||||
|
<value>Загрузки</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -184,7 +184,7 @@
|
|||||||
<value>Запомнить мой выбор</value>
|
<value>Запомнить мой выбор</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="restart.Text" xml:space="preserve">
|
<data name="restart.Text" xml:space="preserve">
|
||||||
<value>Перезапустите приложение, чтобы применить настройки</value>
|
<value>Перезапустите приложение, чтобы применить настройки (в противном случае некоторые элементы могут неправильно отображаться)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ru.Content" xml:space="preserve">
|
<data name="ru.Content" xml:space="preserve">
|
||||||
<value>Русский (Российская Федерация)</value>
|
<value>Русский (Российская Федерация)</value>
|
||||||
@@ -204,4 +204,7 @@
|
|||||||
<data name="devNotifications.OnContent" xml:space="preserve">
|
<data name="devNotifications.OnContent" xml:space="preserve">
|
||||||
<value>Получать уведомления от разработчиков</value>
|
<value>Получать уведомления от разработчиков</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="relevanceLanguage.Header" xml:space="preserve">
|
||||||
|
<value>Предпочитаемый язык поиска</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -126,18 +126,36 @@
|
|||||||
<data name="channel" xml:space="preserve">
|
<data name="channel" xml:space="preserve">
|
||||||
<value>Канал</value>
|
<value>Канал</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="close" xml:space="preserve">
|
||||||
|
<value>Закрыть приложение</value>
|
||||||
|
</data>
|
||||||
<data name="connectErrContent" xml:space="preserve">
|
<data name="connectErrContent" xml:space="preserve">
|
||||||
<value>Нам не удалось подключиться к серверу из-за плохого соединения или проблем на стороне YouTube. Пожалуйста, попробуйте позже</value>
|
<value>Нам не удалось подключиться к серверу из-за плохого соединения или проблем на стороне YouTube. Пожалуйста, попробуйте позже</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="connectErrHeader" xml:space="preserve">
|
<data name="connectErrHeader" xml:space="preserve">
|
||||||
<value>Не удалось подключиться</value>
|
<value>Не удалось подключиться</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="delay" xml:space="preserve">
|
||||||
|
<value>Позже</value>
|
||||||
|
</data>
|
||||||
|
<data name="dontAsk" xml:space="preserve">
|
||||||
|
<value>Больше не спрашивайте меня</value>
|
||||||
|
</data>
|
||||||
<data name="downloads.Content" xml:space="preserve">
|
<data name="downloads.Content" xml:space="preserve">
|
||||||
<value>Загрузки</value>
|
<value>Загрузки</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="feedback.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
<data name="feedback.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||||
<value>Оставить отзыв</value>
|
<value>Оставить отзыв</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="feedbackFail" xml:space="preserve">
|
||||||
|
<value>Ой. Похоже, у вас нет приложения "Центр отзывов". Но вы все еще можете отправить свой отзыв по почте</value>
|
||||||
|
</data>
|
||||||
|
<data name="feedbackMessage" xml:space="preserve">
|
||||||
|
<value>Есть мысли или идеи по поводу нашего приложения? Оставьте отзыв!</value>
|
||||||
|
</data>
|
||||||
|
<data name="goBack" xml:space="preserve">
|
||||||
|
<value>Не важно. Я передумал</value>
|
||||||
|
</data>
|
||||||
<data name="history.Content" xml:space="preserve">
|
<data name="history.Content" xml:space="preserve">
|
||||||
<value>История</value>
|
<value>История</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -168,12 +186,24 @@
|
|||||||
<data name="playlist" xml:space="preserve">
|
<data name="playlist" xml:space="preserve">
|
||||||
<value>Плейлист</value>
|
<value>Плейлист</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="promptLater" xml:space="preserve">
|
||||||
|
<value>Может, позже</value>
|
||||||
|
</data>
|
||||||
|
<data name="purchaseSuccess" xml:space="preserve">
|
||||||
|
<value>Спасибо за покупку полной версии приложения (^∇^) Для завершения настройки нам необходимо перезапустить приложение. Но вы можете сделать это позже (некоторые элементы могут неправильно отображаться)</value>
|
||||||
|
</data>
|
||||||
<data name="quit" xml:space="preserve">
|
<data name="quit" xml:space="preserve">
|
||||||
<value>Выйти</value>
|
<value>Выйти</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="rate" xml:space="preserve">
|
||||||
|
<value>Нравится наше приложение? Напишите отзыв в магазине Майкрософт!</value>
|
||||||
|
</data>
|
||||||
<data name="searchPlaceholder.PlaceholderText" xml:space="preserve">
|
<data name="searchPlaceholder.PlaceholderText" xml:space="preserve">
|
||||||
<value>Поиск</value>
|
<value>Поиск</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="sendEmail" xml:space="preserve">
|
||||||
|
<value>Отправить письмо</value>
|
||||||
|
</data>
|
||||||
<data name="settings.Content" xml:space="preserve">
|
<data name="settings.Content" xml:space="preserve">
|
||||||
<value>Настройки</value>
|
<value>Настройки</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -192,6 +222,9 @@
|
|||||||
<data name="subscriptions.Content" xml:space="preserve">
|
<data name="subscriptions.Content" xml:space="preserve">
|
||||||
<value>Подписки</value>
|
<value>Подписки</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="sure" xml:space="preserve">
|
||||||
|
<value>Конечно!</value>
|
||||||
|
</data>
|
||||||
<data name="tryAgain" xml:space="preserve">
|
<data name="tryAgain" xml:space="preserve">
|
||||||
<value>Попробовать снова</value>
|
<value>Попробовать снова</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -264,4 +264,34 @@
|
|||||||
<data name="publishedAt" xml:space="preserve">
|
<data name="publishedAt" xml:space="preserve">
|
||||||
<value>Опубликовано</value>
|
<value>Опубликовано</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="dialog.CloseButtonText" xml:space="preserve">
|
||||||
|
<value>Отмена</value>
|
||||||
|
</data>
|
||||||
|
<data name="dialog.PrimaryButtonText" xml:space="preserve">
|
||||||
|
<value>Создать и добавить</value>
|
||||||
|
</data>
|
||||||
|
<data name="dialog.Title" xml:space="preserve">
|
||||||
|
<value>Новый плейлист</value>
|
||||||
|
</data>
|
||||||
|
<data name="direct.Content" xml:space="preserve">
|
||||||
|
<value>Прямая ссылка</value>
|
||||||
|
</data>
|
||||||
|
<data name="newPlaylist.Text" xml:space="preserve">
|
||||||
|
<value>Новый плейлист</value>
|
||||||
|
</data>
|
||||||
|
<data name="newPlaylistName.PlaceholderText" xml:space="preserve">
|
||||||
|
<value>Введите название плейлиста</value>
|
||||||
|
</data>
|
||||||
|
<data name="privacy.Header" xml:space="preserve">
|
||||||
|
<value>Доступность</value>
|
||||||
|
</data>
|
||||||
|
<data name="private.Content" xml:space="preserve">
|
||||||
|
<value>Закрытый</value>
|
||||||
|
</data>
|
||||||
|
<data name="public.Content" xml:space="preserve">
|
||||||
|
<value>Публичный</value>
|
||||||
|
</data>
|
||||||
|
<data name="wl.Text" xml:space="preserve">
|
||||||
|
<value>Посмотреть позже</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
Reference in New Issue
Block a user