1
0
mirror of https://github.com/XFox111/GUTSchedule.git synced 2026-04-22 06:58:01 +03:00

Added UWP localization

This commit is contained in:
Michael Gordeev
2020-02-18 19:11:40 +03:00
parent 77a11f9bd5
commit e886577365
10 changed files with 701 additions and 215 deletions
@@ -50,7 +50,7 @@
<string name="addScheduleButton">Add schedule</string>
<string name="copyrights">©2020 Michael Gordeev, INS, IS-907</string>
<string name="copyrights">©2020 Michael Gordeev, INS, ICT-907</string>
<string name="clearCalendarOption">Clear schedule</string>
<string name="reportErrorOption">Report error</string>
+17 -17
View File
@@ -19,7 +19,7 @@
<Button Width="48" Height="48" Margin="0" Background="Transparent" Click="BackRequested">
<SymbolIcon Symbol="Back"/>
</Button>
<TextBlock Text="About application" Style="{StaticResource TitleTextBlockStyle}" Margin="10,6" Grid.Column="1"/>
<TextBlock x:Uid="aboutTitle" Text="About application" Style="{StaticResource TitleTextBlockStyle}" Margin="10,6" Grid.Column="1"/>
</Grid>
</CommandBar.Content>
</CommandBar>
@@ -27,39 +27,39 @@
<ScrollViewer>
<StackPanel Margin="10">
<TextBlock Style="{StaticResource TitleTextBlockStyle}" Text="GUT.Schedule"/>
<TextBlock x:Uid="appName" Style="{StaticResource TitleTextBlockStyle}" Text="GUT.Schedule"/>
<TextBlock Style="{StaticResource CaptionTextBlockStyle}" Text="v$(Build.BuildNumber) (ci-id #$(Build.BuildId))" Foreground="DarkGray" Margin="0,0,0,10" x:Name="version"/>
<TextBlock Text="appDescription"/>
<TextBlock x:Uid="appDescription" Text="appDescription"/>
<TextBlock Text="developedBy"/>
<TextBlock x:Uid="developedBy" Text="developedBy"/>
<TextBlock x:Name="contributorsTitle" Style="{StaticResource SubtitleTextBlockStyle}" Text="Contributors" Margin="0,10,0,0" Visibility="Collapsed"/>
<TextBlock x:Uid="contributorsTitle" x:Name="contributorsTitle" Style="{StaticResource SubtitleTextBlockStyle}" Text="Contributors" Margin="0,10,0,0" Visibility="Collapsed"/>
<TextBlock x:Name="contributors" Visibility="Collapsed"/>
<TextBlock Style="{StaticResource SubtitleTextBlockStyle}" Text="Special thanks" Margin="0,10,0,0"/>
<TextBlock Text="specialThanksPeople"/>
<TextBlock x:Uid="specialThanksTitle" Style="{StaticResource SubtitleTextBlockStyle}" Text="Special thanks" Margin="0,10,0,0"/>
<TextBlock x:Uid="specialThanksPeople"/>
<TextBlock Style="{StaticResource SubtitleTextBlockStyle}" Text="Contacts" Margin="0,10,0,0"/>
<TextBlock x:Uid="contactsTitle" Style="{StaticResource SubtitleTextBlockStyle}" Text="Contacts" Margin="0,10,0,0"/>
<TextBlock>
<Run>Website</Run>: <Hyperlink NavigateUri="https://xfox111.net">https://xfox111.net</Hyperlink><LineBreak/>
<Run>Twitter</Run>: <Hyperlink NavigateUri="https://twitter.com/xfox111">@xfox111</Hyperlink><LineBreak/>
<Run>VKontakte</Run>: <Hyperlink NavigateUri="https://vk.com/xfox.mike">@xfox.mike</Hyperlink><LineBreak/>
<Run x:Uid="websiteContact">Website</Run>: <Hyperlink NavigateUri="https://xfox111.net">https://xfox111.net</Hyperlink><LineBreak/>
<Run x:Uid="twitterContact">Twitter</Run>: <Hyperlink NavigateUri="https://twitter.com/xfox111">@xfox111</Hyperlink><LineBreak/>
<Run x:Uid="vkontakteContact">VKontakte</Run>: <Hyperlink NavigateUri="https://vk.com/xfox.mike">@xfox.mike</Hyperlink><LineBreak/>
<Run>LinkedIn</Run>: <Hyperlink NavigateUri="https://linkedin.com/in/xfox">@xfox</Hyperlink><LineBreak/>
<Run>GitHub</Run>: <Hyperlink NavigateUri="https://github.com/xfox111">@xfox111</Hyperlink>
</TextBlock>
<TextBlock Style="{StaticResource SubtitleTextBlockStyle}" Text="Useful links" Margin="0,10,0,0"/>
<TextBlock x:Uid="linksTitle" Style="{StaticResource SubtitleTextBlockStyle}" Text="Useful links" Margin="0,10,0,0"/>
<TextBlock>
<Hyperlink NavigateUri="https://xfox111.net/Projects/GUTSchedule/PrivacyPolicy.txt">Privacy policy</Hyperlink><LineBreak/>
<Hyperlink NavigateUri="https://xfox111.net/Projects/GUTSchedule/PrivacyPolicy.txt"><Run x:Uid="privacyPolicyLink">Privacy policy</Run></Hyperlink><LineBreak/>
<Hyperlink NavigateUri="https://www.gnu.org/licenses/gpl-3.0">General Public License v3</Hyperlink><LineBreak/>
<Hyperlink NavigateUri="https://github.com/xfox111/gutschedule">GitHub repository</Hyperlink><LineBreak/>
<Hyperlink NavigateUri="http://tios.spbgut.ru/index.php">"TIES" RF</Hyperlink><LineBreak/>
<Hyperlink NavigateUri="https://sut.ru">SPbSUT</Hyperlink><LineBreak/>
<Hyperlink NavigateUri="https://github.com/xfox111/gutschedule"><Run x:Uid="repositoryLink">GitHub repository</Run></Hyperlink><LineBreak/>
<Hyperlink NavigateUri="http://tios.spbgut.ru/index.php"><Run x:Uid="notsLink">"TIES" RF</Run></Hyperlink><LineBreak/>
<Hyperlink NavigateUri="https://sut.ru"><Run x:Uid="sutLink">SPbSUT</Run></Hyperlink>
</TextBlock>
<TextBlock Style="{StaticResource CaptionTextBlockStyle}" Text="©2020 Michael &#x22;XFox&#x22; Gordeev" Margin="0,10,0,0"/>
<Button Content="Leave feedback" HorizontalAlignment="Left" Margin="5" Click="Feedback_Click"/>
<Button x:Uid="leaveFeedback" Content="Leave feedback" HorizontalAlignment="Left" Margin="5" Click="Feedback_Click"/>
</StackPanel>
</ScrollViewer>
</Page>
+1
View File
@@ -19,6 +19,7 @@ namespace GUTSchedule.UWP
/// </summary>
public App()
{
Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = "ru";
InitializeComponent();
Suspending += OnSuspending;
UnhandledException += OnError;
@@ -9,7 +9,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>GUTSchedule.UWP</RootNamespace>
<AssemblyName>GUTSchedule.UWP</AssemblyName>
<DefaultLanguage>en-US</DefaultLanguage>
<DefaultLanguage>en</DefaultLanguage>
<TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
<TargetPlatformVersion Condition=" '$(TargetPlatformVersion)' == '' ">10.0.16299.0</TargetPlatformVersion>
<TargetPlatformMinVersion>10.0.10240.0</TargetPlatformMinVersion>
@@ -214,7 +214,7 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<PRIResource Include="Strings\en-US\Resources.resw" />
<PRIResource Include="Strings\en\Resources.resw" />
</ItemGroup>
<ItemGroup>
<SDKReference Include="Microsoft.Services.Store.Engagement, Version=10.0">
@@ -224,6 +224,9 @@
<Name>Visual C++ 2015 Runtime for Universal Windows Platform Apps</Name>
</SDKReference>
</ItemGroup>
<ItemGroup>
<PRIResource Include="Strings\ru\Resources.resw" />
</ItemGroup>
<PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' ">
<VisualStudioVersion>14.0</VisualStudioVersion>
</PropertyGroup>
+30 -30
View File
@@ -2,7 +2,6 @@
x:Class="GUTSchedule.UWP.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:GUTSchedule.UWP"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
@@ -28,16 +27,16 @@
<Page.TopAppBar>
<CommandBar ClosedDisplayMode="Compact" Background="{StaticResource SystemAccentColor}" RequestedTheme="Dark">
<CommandBar.Content>
<TextBlock Text="GUT.Schedule" Style="{StaticResource TitleTextBlockStyle}" Margin="10,6"/>
<TextBlock x:Uid="appName" Text="GUT.Schedule" Style="{StaticResource TitleTextBlockStyle}" Margin="10,6"/>
</CommandBar.Content>
<CommandBar.SecondaryCommands>
<AppBarButton Icon="Delete" Label="Clear schedule" Tag="clear" Click="AppBarButton_Click"/>
<AppBarButton Label="Report error" Tag="report" Click="AppBarButton_Click">
<AppBarButton x:Uid="clearCalendarOption" Icon="Delete" Label="Clear schedule" Tag="clear" Click="AppBarButton_Click"/>
<AppBarButton x:Uid="reportErrorOption" Label="Report error" Tag="report" Click="AppBarButton_Click">
<AppBarButton.Icon>
<FontIcon Glyph="&#xEBE8;"/>
</AppBarButton.Icon>
</AppBarButton>
<AppBarButton Label="About application" Tag="about" Click="AppBarButton_Click">
<AppBarButton x:Uid="aboutOption" Label="About application" Tag="about" Click="AppBarButton_Click">
<AppBarButton.Icon>
<FontIcon Glyph="&#xE946;"/>
</AppBarButton.Icon>
@@ -54,26 +53,26 @@
<ColumnDefinition x:Name="emptyColumn" Width="0"/>
</Grid.ColumnDefinitions>
<StackPanel Padding="10" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<TextBlock Style="{StaticResource SubtitleTextBlockStyle}" Text="Schedule parameters"/>
<TextBlock x:Uid="scheduleParametersTitle" Style="{StaticResource SubtitleTextBlockStyle}" Text="Schedule parameters"/>
<CheckBox Content="Authorize via personal cabinet" Checked="ChangeAuthorizationMethod" Unchecked="ChangeAuthorizationMethod" IsChecked="True" x:Name="authorize"/>
<CheckBox x:Uid="authorizeCheckbox" Content="Authorize via personal cabinet" Checked="ChangeAuthorizationMethod" Unchecked="ChangeAuthorizationMethod" IsChecked="True" x:Name="authorize"/>
<StackPanel x:Name="credentialMethod">
<TextBox PlaceholderText="E-mail" x:Name="email"/>
<PasswordBox PlaceholderText="Password" x:Name="password"/>
<CheckBox Content="Remember" x:Name="rememberCredential" Checked="RememberCredential_Checked" Unchecked="RememberCredential_Checked"/>
<TextBox x:Uid="email" PlaceholderText="E-mail" x:Name="email"/>
<PasswordBox x:Uid="password" PlaceholderText="Password" x:Name="password"/>
<CheckBox x:Uid="remember" Content="Remember" x:Name="rememberCredential" Checked="RememberCredential_Checked" Unchecked="RememberCredential_Checked"/>
</StackPanel>
<StackPanel x:Name="defaultMethod" Visibility="Collapsed">
<ComboBox x:Name="faculty" PlaceholderText="No schedule is available" Header="Course" SelectionChanged="Faculty_SelectionChanged"/>
<ComboBox x:Name="course" Header="Course" SelectionChanged="Course_SelectionChanged">
<ComboBox x:Uid="facultySpinner" x:Name="faculty" PlaceholderText="No schedule is available" Header="Course" SelectionChanged="Faculty_SelectionChanged"/>
<ComboBox x:Uid="courseSpinner" x:Name="course" Header="Course" SelectionChanged="Course_SelectionChanged">
<ComboBoxItem Content="1"/>
<ComboBoxItem Content="2"/>
<ComboBoxItem Content="3"/>
<ComboBoxItem Content="4"/>
</ComboBox>
<ComboBox x:Name="group" PlaceholderText="No schedule is available" Header="Group" SelectionChanged="Group_SelectionChanged"/>
<ComboBox x:Uid="groupSpinner" x:Name="group" PlaceholderText="No schedule is available" Header="Group" SelectionChanged="Group_SelectionChanged"/>
</StackPanel>
<TextBlock Style="{StaticResource SubtitleTextBlockStyle}" Text="Export parameters"/>
<TextBlock x:Uid="exportParametersTitle" Style="{StaticResource SubtitleTextBlockStyle}" Text="Export parameters"/>
<Grid>
<Grid.ColumnDefinitions>
@@ -85,33 +84,34 @@
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<CalendarDatePicker Header="Export from" x:Name="startDate"/>
<CalendarDatePicker Grid.Row="1" Header="Export to" VerticalAlignment="Top" x:Name="endDate"/>
<CalendarDatePicker x:Uid="dateRangeFrom" Header="Export from" x:Name="startDate"/>
<CalendarDatePicker x:Uid="dateRangeTo" Grid.Row="1" Header="Export to" VerticalAlignment="Top" x:Name="endDate"/>
<Button Content="Today" Grid.Column="1" VerticalAlignment="Bottom" Click="SetTodayDate" />
<Button x:Uid="today" Content="Today" Grid.Column="1" VerticalAlignment="Bottom" Click="SetTodayDate" />
<StackPanel Grid.Column="1" Grid.Row="1" Margin="0,28,0,0">
<Button Content="For day" Click="SetEndDate" Tag="0"/>
<Button Content="For week" Click="SetEndDate" Tag="6"/>
<Button Content="For month" Click="SetEndDate" Tag="30"/>
<Button Content="For semester" Click="SetForSemester"/>
<Button x:Uid="forDay" Content="For day" Click="SetEndDate" Tag="0"/>
<Button x:Uid="forWeek" Content="For week" Click="SetEndDate" Tag="6"/>
<Button x:Uid="forMonth" Content="For month" Click="SetEndDate" Tag="30"/>
<Button x:Uid="forSemester" Content="For semester" Click="SetForSemester"/>
</StackPanel>
</Grid>
<ComboBox Header="Set reminder for:" x:Name="reminder" SelectionChanged="Reminder_SelectionChanged">
<ComboBoxItem Content="None"/>
<ComboBoxItem Content="At the begining of event"/>
<ComboBoxItem Content="5 minutes"/>
<ComboBoxItem Content="10 minutes"/>
<ComboBox x:Uid="reminderSpinner" Header="Set reminder for:" x:Name="reminder" SelectionChanged="Reminder_SelectionChanged">
<ComboBoxItem x:Uid="noReminder" Content="None"/>
<ComboBoxItem x:Uid="inTimeReminder" Content="At the begining of event"/>
<ComboBoxItem x:Uid="fiveMinuteReminder" Content="5 minutes"/>
<ComboBoxItem x:Uid="tenMinuteReminder" Content="10 minutes"/>
</ComboBox>
<CheckBox Content="Add group number to event title" x:Name="addGroupToTitle" Checked="AddGroupToTitle_Checked" Unchecked="AddGroupToTitle_Checked"/>
<CheckBox x:Uid="addGroupToTitle" Content="Add group number to event title" x:Name="addGroupToTitle" Checked="AddGroupToTitle_Checked" Unchecked="AddGroupToTitle_Checked"/>
<TextBlock x:Uid="titleNote" Style="{StaticResource CaptionTextBlockStyle}" Text="note"/>
<ComboBox Header="Destination calendar" x:Name="calendar" SelectionChanged="Calendar_SelectionChanged"/>
<ComboBox x:Uid="destinationCalendar" Header="Destination calendar" x:Name="calendar" SelectionChanged="Calendar_SelectionChanged"/>
<TextBlock Foreground="Red" Visibility="Collapsed" Text="Error" x:Name="errorPlaceholder"/>
<Button Content="Add schedule" Background="{StaticResource SystemAccentColor}" Foreground="White" FontWeight="Bold" Margin="0,10" Click="Export"/>
<Button x:Uid="addScheduleButton" Content="Add schedule" Background="{StaticResource SystemAccentColor}" Foreground="White" FontWeight="Bold" Margin="0,10" Click="Export"/>
<TextBlock Style="{StaticResource CaptionTextBlockStyle}" Text="©2020 Michael Gordeev, INS, ICT-907"/>
<TextBlock x:Uid="copyrights" Style="{StaticResource CaptionTextBlockStyle}" Text="©2020 Michael Gordeev, INS, ICT-907"/>
<TextBlock Style="{StaticResource CaptionTextBlockStyle}" Text="v$(Build.BuildNumber) (ci-id #$(Build.BuildId))" x:Name="version"/>
</StackPanel>
</Grid>
@@ -13,6 +13,7 @@ using Windows.ApplicationModel.Resources;
using Windows.Storage;
using Microsoft.Services.Store.Engagement;
using Windows.ApplicationModel;
using Windows.ApplicationModel.Core;
namespace GUTSchedule.UWP
{
@@ -65,6 +66,13 @@ namespace GUTSchedule.UWP
IsSelected = (string)settings.Values["Calendar"] == i.LocalId
}).ToList();
calendar.SelectedIndex = (calendar.ItemsSource as List<ComboBoxItem>).FindIndex(i => i.IsSelected);
if((calendar.ItemsSource as List<ComboBoxItem>).Count < 1)
{
MessageDialog dialog = new MessageDialog(resources.GetString("createCalendarMessage"), resources.GetString("createCalendarTitle"));
dialog.Commands.Add(new UICommand("OK", (command) => CoreApplication.Exit()));
await dialog.ShowAsync();
}
if (calendar.SelectedIndex < 0)
calendar.SelectedIndex = 0;
}
@@ -76,7 +84,7 @@ namespace GUTSchedule.UWP
catch (Exception e)
{
MessageDialog dialog = new MessageDialog(e.Message, e.GetType().ToString());
dialog.Commands.Add(new UICommand("OK", (command) => loading.Visibility = Visibility.Collapsed));
dialog.Commands.Add(new UICommand("OK", (command) => CoreApplication.Exit()));
await dialog.ShowAsync();
}
@@ -33,10 +33,10 @@
Executable="$targetnametoken$.exe"
EntryPoint="GUT.Schedule.UWP.App">
<uap:VisualElements
DisplayName="GUT.Schedule"
DisplayName="ms-resource:appDisplayName"
Square150x150Logo="Assets\Square150x150Logo.png"
Square44x44Logo="Assets\Square44x44Logo.png"
Description="Application which exports SPbSUT timetable to calendar"
Description="ms-resource:appDisplayDescription"
BackgroundColor="#FF8000">
<uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png" Square71x71Logo="Assets\SmallTile.png" Square310x310Logo="Assets\LargeTile.png"/>
<uap:SplashScreen Image="Assets\SplashScreen.png" BackgroundColor="#FF8000"/>
@@ -1,162 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="calendarExportStatus" xml:space="preserve">
<value>calendarExportStatus</value>
</data>
<data name="cancelOption" xml:space="preserve">
<value>cancelOption</value>
</data>
<data name="clearAllOption" xml:space="preserve">
<value>clearAllOption</value>
</data>
<data name="clearScheduleDone" xml:space="preserve">
<value>clearScheduleDone</value>
</data>
<data name="clearScheduleMessage" xml:space="preserve">
<value>clearScheduleMessage</value>
</data>
<data name="clearScheduleTitle" xml:space="preserve">
<value>clearScheduleTitle</value>
</data>
<data name="clearUpcomingOption" xml:space="preserve">
<value>clearUpcomingOption</value>
</data>
<data name="connectionFailMessage" xml:space="preserve">
<value>connectionFailMessage</value>
</data>
<data name="doneStatus" xml:space="preserve">
<value>doneStatus</value>
</data>
<data name="groupSelectionError" xml:space="preserve">
<value>groupSelectionError</value>
</data>
<data name="invalidAuthorizationError" xml:space="preserve">
<value>invalidAuthorizationError</value>
</data>
<data name="invalidDateRangeError" xml:space="preserve">
<value>invalidDateRangeError</value>
</data>
<data name="loadingStatus" xml:space="preserve">
<value>loadingStatus</value>
</data>
<data name="repeat" xml:space="preserve">
<value>repeat</value>
</data>
</root>
@@ -0,0 +1,318 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="aboutOption.Label" xml:space="preserve">
<value>About application</value>
</data>
<data name="aboutTitle.Text" xml:space="preserve">
<value>About application</value>
</data>
<data name="addGroupToTitle.Content" xml:space="preserve">
<value>Add group number to event title</value>
</data>
<data name="addScheduleButton.Content" xml:space="preserve">
<value>Add schedule</value>
</data>
<data name="appDescription.Text" xml:space="preserve">
<value>Application for SPbSUT professors' and students' schedule export</value>
</data>
<data name="appDisplayDescription" xml:space="preserve">
<value>Application which exports SPbSUT timetable to calendar</value>
</data>
<data name="appDisplayName" xml:space="preserve">
<value>GUT.Schedule</value>
</data>
<data name="appName.Text" xml:space="preserve">
<value>GUT.Schedule</value>
</data>
<data name="authorizeCheckbox.Content" xml:space="preserve">
<value>Authorize via Personal cabinet</value>
</data>
<data name="calendarExportStatus" xml:space="preserve">
<value>Exporting to calendar</value>
</data>
<data name="cancelOption" xml:space="preserve">
<value>Cancel</value>
</data>
<data name="clearAllOption" xml:space="preserve">
<value>All</value>
</data>
<data name="clearCalendarOption.Label" xml:space="preserve">
<value>Clear schedule</value>
</data>
<data name="clearScheduleDone" xml:space="preserve">
<value>Schedule is cleared</value>
</data>
<data name="clearScheduleMessage" xml:space="preserve">
<value>This action will purge exported schedule from all available calendars.
It will affect only events created by the app.
'All' - will purge all timetable events including the past ones
'Upcoming' - will affect only upcoming timetable events</value>
</data>
<data name="clearScheduleTitle" xml:space="preserve">
<value>Clear schedule</value>
</data>
<data name="clearUpcomingOption" xml:space="preserve">
<value>Upcoming</value>
</data>
<data name="connectionFailMessage" xml:space="preserve">
<value>Unable to load schedule. Check your internet connection or try again later</value>
</data>
<data name="contactsTitle.Text" xml:space="preserve">
<value>Contacts</value>
</data>
<data name="contributorsTitle.Text" xml:space="preserve">
<value>Contributors</value>
</data>
<data name="copyrights.Text" xml:space="preserve">
<value>©2020 Michael Gordeev, INS, ICT-907</value>
</data>
<data name="courseSpinner.Header" xml:space="preserve">
<value>Course</value>
</data>
<data name="createCalendarMessage" xml:space="preserve">
<value>There's no calendars on your device we can write schedule to</value>
</data>
<data name="createCalendarTitle" xml:space="preserve">
<value>Create new calendar</value>
</data>
<data name="dateRangeFrom.Header" xml:space="preserve">
<value>Export from</value>
</data>
<data name="dateRangeTo.Header" xml:space="preserve">
<value>Export to</value>
</data>
<data name="destinationCalendar.Header" xml:space="preserve">
<value>Destination calendar</value>
</data>
<data name="developedBy.Text" xml:space="preserve">
<value>Developed by Michael Gordeev (ICT-907, INS) in the "Technologies of Informational and Educational Systems" Research Facility</value>
</data>
<data name="doneStatus" xml:space="preserve">
<value>Done</value>
</data>
<data name="email.PlaceholderText" xml:space="preserve">
<value>E-mail</value>
</data>
<data name="exportParametersTitle.Text" xml:space="preserve">
<value>Export parameters</value>
</data>
<data name="facultySpinner.Header" xml:space="preserve">
<value>Faculty</value>
</data>
<data name="facultySpinner.PlaceholderText" xml:space="preserve">
<value>No schedule is available</value>
</data>
<data name="fiveMinuteReminder.Content" xml:space="preserve">
<value>5 minutes</value>
</data>
<data name="forDay.Content" xml:space="preserve">
<value>For day</value>
</data>
<data name="forMonth.Content" xml:space="preserve">
<value>For month</value>
</data>
<data name="forSemester.Content" xml:space="preserve">
<value>For semester</value>
</data>
<data name="forWeek.Content" xml:space="preserve">
<value>For week</value>
</data>
<data name="groupSelectionError" xml:space="preserve">
<value>Error: no group was selected</value>
</data>
<data name="groupSpinner.Header" xml:space="preserve">
<value>Group</value>
</data>
<data name="groupSpinner.PlaceholderText" xml:space="preserve">
<value>No schedule is available</value>
</data>
<data name="inTimeReminder.Content" xml:space="preserve">
<value>At the start of event</value>
</data>
<data name="invalidAuthorizationError" xml:space="preserve">
<value>Error: Invalid credential</value>
</data>
<data name="invalidDateRangeError" xml:space="preserve">
<value>Error: Invalid date range</value>
</data>
<data name="leaveFeedback.Content" xml:space="preserve">
<value>Leave feedback</value>
</data>
<data name="linksTitle.Text" xml:space="preserve">
<value>Useful links</value>
</data>
<data name="loadingStatus" xml:space="preserve">
<value>Loading</value>
</data>
<data name="noReminder.Content" xml:space="preserve">
<value>None</value>
</data>
<data name="notsLink.Text" xml:space="preserve">
<value>"TIES" RF</value>
</data>
<data name="password.PlaceholderText" xml:space="preserve">
<value>Password</value>
</data>
<data name="privacyPolicyLink.Text" xml:space="preserve">
<value>Privacy policy</value>
</data>
<data name="remember.Content" xml:space="preserve">
<value>Remember</value>
</data>
<data name="reminderSpinner.Header" xml:space="preserve">
<value>Set reminder for:</value>
</data>
<data name="repeat" xml:space="preserve">
<value>Try again</value>
</data>
<data name="reportErrorOption.Label" xml:space="preserve">
<value>Report error</value>
</data>
<data name="repositoryLink.Text" xml:space="preserve">
<value>GitHub Repository</value>
</data>
<data name="scheduleParametersTitle.Text" xml:space="preserve">
<value>Schedule parameters</value>
</data>
<data name="specialThanksPeople.Text" xml:space="preserve">
<value>Vitaliy Moshkov, Anastasiya Godunova</value>
</data>
<data name="specialThanksTitle.Text" xml:space="preserve">
<value>Special thanks</value>
</data>
<data name="sutLink.Text" xml:space="preserve">
<value>SPbSUT</value>
</data>
<data name="tenMinuteReminder.Content" xml:space="preserve">
<value>10 minutes</value>
</data>
<data name="titleNote.Text" xml:space="preserve">
<value>(i) This doesn't affect professors' schedule</value>
</data>
<data name="today.Content" xml:space="preserve">
<value>Today</value>
</data>
<data name="twitterContact.Text" xml:space="preserve">
<value>Twitter</value>
</data>
<data name="vkontakteContact.Text" xml:space="preserve">
<value>VKontakte</value>
</data>
<data name="websiteContact.Text" xml:space="preserve">
@@ -0,0 +1,318 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="aboutOption.Label" xml:space="preserve">
<value>О приложении</value>
</data>
<data name="aboutTitle.Text" xml:space="preserve">
<value>О приложении</value>
</data>
<data name="addGroupToTitle.Content" xml:space="preserve">
<value>Добавить номер группы в заголовок</value>
</data>
<data name="addScheduleButton.Content" xml:space="preserve">
<value>Добавить расписание</value>
</data>
<data name="appDescription.Text" xml:space="preserve">
<value>Приложение для экспорта перподавательского и учебного расписаний Санкт-Петербургского Государственного Университета Телекоммуникаций им. проф. М.А. Бонч-Бруевича</value>
</data>
<data name="appDisplayDescription" xml:space="preserve">
<value>Приложение для экспорта расписания СПбГУТ в календарь</value>
</data>
<data name="appDisplayName" xml:space="preserve">
<value>ГУТ.Расписание</value>
</data>
<data name="appName.Text" xml:space="preserve">
<value>ГУТ.Расписание</value>
</data>
<data name="authorizeCheckbox.Content" xml:space="preserve">
<value>Авторизоваться через Личный кабинет</value>
</data>
<data name="calendarExportStatus" xml:space="preserve">
<value>Экспортирование в календарь</value>
</data>
<data name="cancelOption" xml:space="preserve">
<value>Отмена</value>
</data>
<data name="clearAllOption" xml:space="preserve">
<value>Все</value>
</data>
<data name="clearCalendarOption.Label" xml:space="preserve">
<value>Очистить расписание</value>
</data>
<data name="clearScheduleDone" xml:space="preserve">
<value>Расписание очищено</value>
</data>
<data name="clearScheduleMessage" xml:space="preserve">
<value>Это действие удалит экспортированное расписание из всех доступных календарей.
Данное действие затронет только расписание, экспортированное этим приложением
'Все' - удалит все события расписания, включая прошедшие
'Только новые' - удалит будущие события расписания</value>
</data>
<data name="clearScheduleTitle" xml:space="preserve">
<value>Очистка расписания</value>
</data>
<data name="clearUpcomingOption" xml:space="preserve">
<value>Только новые</value>
</data>
<data name="connectionFailMessage" xml:space="preserve">
<value>Невозможно загрузить расписание. Проверьте интернет-соединение или попробуйте позже</value>
</data>
<data name="contactsTitle.Text" xml:space="preserve">
<value>Контакты</value>
</data>
<data name="contributorsTitle.Text" xml:space="preserve">
<value>Свой вклад в разработку внесли</value>
</data>
<data name="copyrights.Text" xml:space="preserve">
<value>©2020 Михаил Гордеев, ИКСС, ИКТ-907</value>
</data>
<data name="courseSpinner.Header" xml:space="preserve">
<value>Курс</value>
</data>
<data name="createCalendarMessage" xml:space="preserve">
<value>На вашем устройстве нет календарей пригодных для записи расписания</value>
</data>
<data name="createCalendarTitle" xml:space="preserve">
<value>Создайте новый календарь</value>
</data>
<data name="dateRangeFrom.Header" xml:space="preserve">
<value>Брать расписание с</value>
</data>
<data name="dateRangeTo.Header" xml:space="preserve">
<value>По</value>
</data>
<data name="destinationCalendar.Header" xml:space="preserve">
<value>Конечный календарь</value>
</data>
<data name="developedBy.Text" xml:space="preserve">
<value>Разработано Михаилом Гордеевым, ИКТ-907, ИКСС в Научно-образовательном центре "Технологии информационных образовательных систем"</value>
</data>
<data name="doneStatus" xml:space="preserve">
<value>Готово</value>
</data>
<data name="email.PlaceholderText" xml:space="preserve">
<value>E-mail</value>
</data>
<data name="exportParametersTitle.Text" xml:space="preserve">
<value>Параметры экспорта</value>
</data>
<data name="facultySpinner.Header" xml:space="preserve">
<value>Факультет</value>
</data>
<data name="facultySpinner.PlaceholderText" xml:space="preserve">
<value>Нет доступного расписания</value>
</data>
<data name="fiveMinuteReminder.Content" xml:space="preserve">
<value>5 минут</value>
</data>
<data name="forDay.Content" xml:space="preserve">
<value>На день</value>
</data>
<data name="forMonth.Content" xml:space="preserve">
<value>На месяц</value>
</data>
<data name="forSemester.Content" xml:space="preserve">
<value>На семестр</value>
</data>
<data name="forWeek.Content" xml:space="preserve">
<value>На неделю</value>
</data>
<data name="groupSelectionError" xml:space="preserve">
<value>Ошибка: Не выбрана группа</value>
</data>
<data name="groupSpinner.Header" xml:space="preserve">
<value>Группа</value>
</data>
<data name="groupSpinner.PlaceholderText" xml:space="preserve">
<value>Нет доступного расписания</value>
</data>
<data name="inTimeReminder.Content" xml:space="preserve">
<value>Во время начала</value>
</data>
<data name="invalidAuthorizationError" xml:space="preserve">
<value>Ошибка авторизации</value>
</data>
<data name="invalidDateRangeError" xml:space="preserve">
<value>Ошибка: Неправильный диапазон дат</value>
</data>
<data name="leaveFeedback.Content" xml:space="preserve">
<value>Оставить отзыв</value>
</data>
<data name="linksTitle.Text" xml:space="preserve">
<value>Полезные ссылки</value>
</data>
<data name="loadingStatus" xml:space="preserve">
<value>Загрузка</value>
</data>
<data name="noReminder.Content" xml:space="preserve">
<value>Нет</value>
</data>
<data name="notsLink.Text" xml:space="preserve">
<value>НОЦ "ТИОС"</value>
</data>
<data name="password.PlaceholderText" xml:space="preserve">
<value>Пароль</value>
</data>
<data name="privacyPolicyLink.Text" xml:space="preserve">
<value>Политика конфиденциальности</value>
</data>
<data name="remember.Content" xml:space="preserve">
<value>Запомнить</value>
</data>
<data name="reminderSpinner.Header" xml:space="preserve">
<value>Напоминать за</value>
</data>
<data name="repeat" xml:space="preserve">
<value>Повторить</value>
</data>
<data name="reportErrorOption.Label" xml:space="preserve">
<value>Сообщить об ошибке</value>
</data>
<data name="repositoryLink.Text" xml:space="preserve">
<value>Репозиторий GitHub</value>
</data>
<data name="scheduleParametersTitle.Text" xml:space="preserve">
<value>Параметры расписания</value>
</data>
<data name="specialThanksPeople.Text" xml:space="preserve">
<value>Виталий Мошков, Анастасия Годунова</value>
</data>
<data name="specialThanksTitle.Text" xml:space="preserve">
<value>Особые благодарности</value>
</data>
<data name="sutLink.Text" xml:space="preserve">
<value>СПбГУТ</value>
</data>
<data name="tenMinuteReminder.Content" xml:space="preserve">
<value>10 минут</value>
</data>
<data name="titleNote.Text" xml:space="preserve">
<value>(i) Не касается преподавательского расписания</value>
</data>
<data name="today.Content" xml:space="preserve">
<value>Сегодня</value>
</data>
<data name="twitterContact.Text" xml:space="preserve">
<value>Твиттер</value>
</data>
<data name="vkontakteContact.Text" xml:space="preserve">
<value>ВКонтакте</value>
</data>
<data name="websiteContact.Text" xml:space="preserve">