Browse Source

Menu items localization wip

Krzysztof Krysiński 2 năm trước cách đây
mục cha
commit
532ba1b0dc

+ 24 - 1
src/PixiEditor/Data/Localization/Languages/en.json

@@ -1,8 +1,14 @@
 {
   "FILE": "File",
+  "RECENT": "Recent",
   "RECENT_FILES": "Recent Files",
   "OPEN": "Open",
   "NEW_FILE": "New",
+  "SAVE_PIXI": "Save (.pixi)",
+  "SAVE_AS_PIXI": "Save as... (.pixi)",
+  "EXPORT_IMG": "Export (.png, .jpg, etc.)",
+  "EDIT": "Edit",
+  "EXIT": "Exit",
   "RECENT_EMPTY_TEXT": "So much empty space",
   
   "LANGUAGE": "Language",
@@ -121,6 +127,8 @@
   "LAYER_DELETE_ALL_SELECTED": "Delete all selected layers/folders",
   "LAYER_DELETE_ALL_SELECTED_DESCRIPTIVE": "Delete all selected layers and/or folders",
 
+  "DELETE_SELECTED_PIXELS": "Delete selected pixels",
+
   "NEW_FOLDER": "New folder",
   "CREATE_NEW_FOLDER": "Create new folder",
   "NEW_LAYER": "New layer",
@@ -130,9 +138,11 @@
 
   "SAVE": "Save",
   "SAVE_AS": "Save as...",
+  "IMAGE": "Image",
   "SAVE_IMAGE": "Save image",
   "SAVE_IMAGE_AS": "Save image as new",
 
+  "DUPLICATE": "Duplicate",
   "DUPLICATE_SELECTED_LAYER": "Duplicate selected layer",
   
   "CREATE_MASK": "Create mask",
@@ -250,6 +260,9 @@
   "COMMAND_SEARCH": "Command search",
   "OPEN_COMMAND_SEARCH": "Open command search window",
 
+  "SELECT": "Select",
+  "DESELECT": "Deselect",
+  "INVERT": "Invert",
   "SELECTION": "Selection",
   "SELECT_ALL": "Select all",
   "SELECT_ALL_DESCRIPTIVE": "Select everything",
@@ -267,6 +280,10 @@
   "SUBTRACT_SELECTION_FROM_MASK": "Subtract selection from mask",
   "INTEREST_SELECTION_MASK": "Intersect selection with mask",
   "SELECTION_TO_MASK": "Selection to mask",
+  "TO_NEW_MASK": "to new mask",
+  "ADD_TO_MASK": "add to mask",
+  "SUBTRACT_FROM_MASK": "subtract from mask",
+  "INTERSECT_WITH_MASK": "intersect with mask",
 
   "STYLUS": "Stylus",
   "TOGGLE_PEN_MODE": "Toggle pen mode",
@@ -284,6 +301,7 @@
   "CENTER_ACTIVE_VIEWPORT": "Center active viewport",
   "FLIP_VIEWPORT_HORIZONTALLY": "Flip viewport horizontally",
   "FLIP_VIEWPORT_VERTICALLY": "Flip viewport vertically",
+  "SETTINGS": "Settings",
   "OPEN_SETTINGS": "Open settings",
   "OPEN_SETTINGS_DESCRIPTIVE": "Open settings window",
 
@@ -297,5 +315,10 @@
   "ERROR_SAVE_LOCATION": "Couldn't save the file to the specified location",
   "ERROR_WHILE_SAVING": "An internal error occured while saving. Please try again.",
   "UNKNOWN_ERROR_SAVING": "An error occured while saving.",
-  "FAILED_ASSOCIATE_LOSPEC": "Failed to associate Lospec Palette protocol."
+  "FAILED_ASSOCIATE_LOSPEC": "Failed to associate Lospec Palette protocol.",
+
+  "REDDIT": "Reddit",
+  "GITHUB": "GitHub",
+  "YOUTUBE": "YouTube",
+  "DONATE": "Donate",
 }

+ 7 - 6
src/PixiEditor/Views/Dialogs/HelloTherePopup.xaml

@@ -227,25 +227,26 @@
 
                 <uc:AlignableWrapPanel Grid.Row="3" HorizontalContentAlignment="Center" HorizontalAlignment="Center" Margin="0,5,0,15">
                     <Button Command="{cmds:Command PixiEditor.Links.OpenHyperlink, UseProvided=True}" CommandParameter="https://pixieditor.net"
-                            Style="{StaticResource SocialMediaButton}" Tag="#e3002d" ToolTip="Website"
+                            views:Translator.TooltipKey="WEBSITE"
+                            Style="{StaticResource SocialMediaButton}" Tag="#e3002d"
                             Content="/Images/SocialMedia/WebsiteIcon.png"/>
                     <Button Command="{cmds:Command PixiEditor.Links.OpenHyperlink, UseProvided=True}" CommandParameter="https://discord.gg/tzkQFDkqQS"
-                            Style="{StaticResource SocialMediaButton}" Tag="#7289DA" ToolTip="Discord"
+                            Style="{StaticResource SocialMediaButton}" Tag="#7289DA" views:Translator.TooltipKey="DISCORD"
                             Content="/Images/SocialMedia/DiscordIcon.png"/>
                     <Button Command="{cmds:Command PixiEditor.Links.OpenHyperlink, UseProvided=True}" CommandParameter="https://reddit.com/r/PixiEditor"
-                            Style="{StaticResource SocialMediaButton}" Tag="#FF4500" ToolTip="Reddit"
+                            Style="{StaticResource SocialMediaButton}" Tag="#FF4500" views:Translator.TooltipKey="REDDIT"
                             Content="/Images/SocialMedia/RedditIcon.png"/>
                     <Button Command="{cmds:Command PixiEditor.Links.OpenHyperlink, UseProvided=True}" CommandParameter="https://github.com/PixiEditor/PixiEditor"
-                            Style="{StaticResource SocialMediaButton}" Tag="Black" ToolTip="GitHub"
+                            Style="{StaticResource SocialMediaButton}" Tag="Black" views:Translator.TooltipKey="GITHUB"
                             Content="/Images/SocialMedia/GithubIcon.png"/>
                     <Button Command="{cmds:Command PixiEditor.Links.OpenHyperlink, UseProvided=True}" CommandParameter="https://www.youtube.com/channel/UCT5XvyvX1q5PAIaXfWmpsMQ"
-                            Style="{StaticResource SocialMediaButton}" Tag="#FF0000" ToolTip="YouTube"
+                            Style="{StaticResource SocialMediaButton}" Tag="#FF0000" views:Translator.TooltipKey="YOUTUBE"
                             Content="/Images/SocialMedia/YouTubeIcon.png"/>
                     <Button Command="{cmds:Command PixiEditor.Links.OpenHyperlink, UseProvided=True}"
                             Visibility="{Binding ShowDonateButton,
                             Converter={BoolToVisibilityConverter}}"
                             CommandParameter="https://opencollective.com/pixieditor"
-                            Style="{StaticResource SocialMediaButton}" Tag="#d4af37" ToolTip="Donate"
+                            Style="{StaticResource SocialMediaButton}" Tag="#d4af37" views:Translator.TooltipKey="DONATE"
                             Content="/Images/SocialMedia/DonateIcon.png"/>
                 </uc:AlignableWrapPanel>
             </Grid>

+ 28 - 27
src/PixiEditor/Views/MainWindow.xaml

@@ -25,6 +25,7 @@
     xmlns:cmds="clr-namespace:PixiEditor.Models.Commands.XAML"
     xmlns:commandSearch="clr-namespace:PixiEditor.Views.UserControls.CommandSearch"
     xmlns:palettes="clr-namespace:PixiEditor.Views.UserControls.Palettes"
+    xmlns:views="clr-namespace:PixiEditor.Views"
     d:DataContext="{d:DesignInstance Type=vm:ViewModelMain}"
     mc:Ignorable="d"
     WindowStyle="None"
@@ -147,15 +148,15 @@
                             BasedOn="{StaticResource menuItemStyle}" />
                     </Menu.Resources>
                     <MenuItem
-                        Header="_File">
+                        views:Translator.Key="FILE">
                         <MenuItem
-                            Header="_New"
+                            views:Translator.Key="NEW_FILE"
                             cmds:Menu.Command="PixiEditor.File.New" />
                         <MenuItem
-                            Header="_Open"
+                            views:Translator.Key="OPEN"
                             cmds:Menu.Command="PixiEditor.File.Open" />
                         <MenuItem
-                            Header="_Recent"
+                            views:Translator.Key="RECENT"
                             ItemsSource="{Binding FileSubViewModel.RecentlyOpened}"
                             x:Name="recentItemMenu"
                             IsEnabled="{Binding FileSubViewModel.HasRecent}">
@@ -180,78 +181,78 @@
                             </MenuItem.ItemTemplate>
                         </MenuItem>
                         <MenuItem
-                            Header="_Save (.pixi)"
+                            views:Translator.Key="SAVE_PIXI"
                             cmds:Menu.Command="PixiEditor.File.Save" />
                         <MenuItem
-                            Header="_Save As... (.pixi)"
+                            views:Translator.Key="SAVE_AS_PIXI"
                             cmds:Menu.Command="PixiEditor.File.SaveAsNew" />
                         <MenuItem
-                            Header="_Export (.png, .jpeg, etc.)"
+                            views:Translator.Key="EXPORT_IMG"
                             cmds:Menu.Command="PixiEditor.File.Export" />
                         <Separator />
                         <MenuItem
-                            Header="_Exit"
+                            views:Translator.Key="EXIT"
                             Command="{x:Static SystemCommands.CloseWindowCommand}" />
                     </MenuItem>
                     <MenuItem
-                        Header="_Edit">
+                        views:Translator.Key="EDIT">
                         <MenuItem
-                            Header="_Undo"
+                            views:Translator.Key="UNDO"
                             cmds:Menu.Command="PixiEditor.Undo.Undo" />
                         <MenuItem
-                            Header="_Redo"
+                            views:Translator.Key="REDO"
                             cmds:Menu.Command="PixiEditor.Undo.Redo" />
                         <Separator />
                         <MenuItem
-                            Header="_Cut"
+                            views:Translator.Key="CUT"
                             cmds:Menu.Command="PixiEditor.Clipboard.Cut" />
                         <MenuItem
-                            Header="_Copy"
+                            views:Translator.Key="COPY"
                             cmds:Menu.Command="PixiEditor.Clipboard.Copy" />
                         <MenuItem
-                            Header="_Paste"
+                            views:Translator.Key="PASTE"
                             cmds:Menu.Command="PixiEditor.Clipboard.Paste" />
                         <MenuItem
-                            Header="_Duplicate"
+                            views:Translator.Key="DUPLICATE"
                             cmds:Menu.Command="PixiEditor.Layer.DuplicateSelectedLayer" />
                         <Separator />
                         <MenuItem
-                            Header="_Delete Selected"
+                            views:Translator.Key="DELETE_SELECTED_PIXELS"
                             cmds:Menu.Command="PixiEditor.Document.DeletePixels" />
                         <Separator />
                         <MenuItem
-                            Header="_Settings"
+                            views:Translator.Key="SETTINGS"
                             cmds:Menu.Command="PixiEditor.Window.OpenSettingsWindow" />
                     </MenuItem>
                     <MenuItem
-                        Header="_Select">
+                        views:Translator.Key="SELECT">
                         <MenuItem
-                            Header="_Select All"
+                            views:Translator.Key="SELECT_ALL"
                             cmds:Menu.Command="PixiEditor.Selection.SelectAll" />
                         <MenuItem
-                            Header="_Deselect"
+                            views:Translator.Key="DESELECT"
                             cmds:Menu.Command="PixiEditor.Selection.Clear" />
                         <MenuItem
-                            Header="_Invert"
+                            views:Translator.Key="INVERT"
                             cmds:Menu.Command="PixiEditor.Selection.InvertSelection" />
                         <Separator/>
-                        <MenuItem Header="Selection _to Mask">
+                        <MenuItem views:Translator.Key="SELECTION_TO_MASK">
                             <MenuItem
-                                Header="to _new mask"
+                                views:Translator.Key="TO_NEW_MASK"
                                 cmds:Menu.Command="PixiEditor.Selection.NewToMask" />
                             <MenuItem
-                                Header="_add to mask"
+                                views:Translator.Key="ADD_TO_MASK"
                                 cmds:Menu.Command="PixiEditor.Selection.AddToMask" />
                             <MenuItem
-                                Header="_subtract from mask"
+                                views:Translator.Key="SUBTRACT_FROM_MASK"
                                 cmds:Menu.Command="PixiEditor.Selection.SubtractFromMask" />
                             <MenuItem
-                                Header="_intersect with mask"
+                                views:Translator.Key="INTERSECT_WITH_MASK"
                                 cmds:Menu.Command="PixiEditor.Selection.IntersectSelectionMask" />
                         </MenuItem>
                     </MenuItem>
                     <MenuItem
-                        Header="_Image">
+                        views:Translator.Key="IMAGE">
                         <MenuItem
                             Header="Resize _Image..."
                             cmds:Menu.Command="PixiEditor.Document.ResizeDocument" />

+ 8 - 0
src/PixiEditor/Views/Translator.cs

@@ -85,6 +85,14 @@ public class Translator : UIElement
                     RelativeSource = new RelativeSource(RelativeSourceMode.Self) 
                 });
             }
+            else if (d is HeaderedItemsControl menuItem)
+            {
+                menuItem.SetBinding(HeaderedItemsControl.HeaderProperty, new Binding()
+                {
+                    Path = new PropertyPath("(views:Translator.Value)"),
+                    RelativeSource = new RelativeSource(RelativeSourceMode.Self)
+                });
+            }
 
             d.SetValue(ValueProperty, localizedString.Value);
             ILocalizationProvider.Current.OnLanguageChanged += (lang) => OnLanguageChanged(d, lang);