├── .gitattributes
├── .github
├── FUNDING.yml
└── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
├── .gitignore
├── Assets
├── ChooseColumns.png
├── CopyPasteExport.png
├── DetectCodeReferences.png
├── DetectCodeReferencesConfig.png
├── Invariant.png
├── Resources.ps1
├── ShowOnlyErrors.png
├── Snapshots.png
├── StandaloneMainScreen.png
├── Translations.png
├── VS2017 Launch Partner Logo Small.png
├── VS2017 Launch Partner Logo.png
└── VisualStudioMainScreen.png
├── CODE-OF-CONDUCT.md
├── Documentation
├── Readme.md
└── Topics
│ ├── Automatic Translations_Translations.png
│ ├── Automatic-Translations.md
│ ├── CellSelection.png
│ ├── Configure Visible Columns_ChooseColumns.png
│ ├── Configure-Visible-Columns.md
│ ├── Copy, Paste, Export and Import_CopyPasteExport.png
│ ├── Copy,-Paste,-Export-and-Import.md
│ ├── CopyPasteContextMenu.png
│ ├── Custom-Code-Generator.md
│ ├── Detect Code References_DetectCodeReferences.png
│ ├── Detect Code References_DetectCodeReferencesConfig.png
│ ├── Detect-Code-References.md
│ ├── Documentation_extension.png
│ ├── Documentation_standalone.png
│ ├── Donate.md
│ ├── Home_ChooseColumns.png
│ ├── Home_extension.png
│ ├── Home_standalone.png
│ ├── Installation.md
│ ├── Invariant Strings_Invariant.png
│ ├── Invariant-Strings.md
│ ├── MoveToResource.gif
│ ├── MoveToResource.md
│ ├── Scripting.md
│ ├── SelectCodeGenerator.png
│ ├── Snapshots.md
│ ├── Snapshots_ShowOnlyErrors.png
│ ├── Snapshots_Snapshots.png
│ ├── Spell-Checker.md
│ ├── SpellChecker_LanguageSettings.png
│ ├── TextTemplateCodeGenerator.png
│ ├── Troubleshooting.md
│ ├── Usage.md
│ ├── Xliff.md
│ └── Xliff_configuration.png
├── License
├── README.md
├── Release notes.md
├── UpdateNotice.cmd
├── azure-pipelines.yml
├── signing
├── SignClient.json
└── filelist.txt
└── src
├── .editorconfig
├── 16x16.png
├── Directory.Build.props
├── Directory.Build.targets
├── Directory.Packages.props
├── Key.snk
├── Notice.txt
├── Nuget.config
├── Nullable.cs
├── ResXManager.Infrastructure
├── CultureHelper.cs
├── CultureKey.cs
├── ExtensionMethods.cs
├── FodyWeavers.xml
├── FodyWeavers.xsd
├── ICredentialItem.cs
├── IService.cs
├── ITracer.cs
├── ITranslationItem.cs
├── ITranslationMatch.cs
├── ITranslationSession.cs
├── ITranslator.cs
├── JsonConvert.cs
├── Properties
│ └── AssemblyInfo.cs
├── RegionId.cs
├── ResXManager.Infrastructure.csproj
├── ResXManager.Infrastructure.csproj.DotSettings
└── StringExtensions.cs
├── ResXManager.Model
├── AsyncThrottle.cs
├── CodeReference.cs
├── CodeReferenceConfiguration.cs
├── ColumnKind.cs
├── Configuration.cs
├── ConfigurationBase.cs
├── ConfigurationScope.cs
├── DelegateIndexer.cs
├── DuplicateKeyHandling.cs
├── EntryChange.cs
├── ExcelExtensions.cs
├── ExcelRange.cs
├── FileFilter.cs
├── FileWatcher.cs
├── FodyWeavers.xml
├── FodyWeavers.xsd
├── GlobalExtensions.cs
├── IConfiguration.cs
├── IErrorListProvider.cs
├── IExportParameters.cs
├── IFileFilter.cs
├── IResourceScope.cs
├── IResourceTableEntryRule.cs
├── IResourceTableEntryRuleConfig.cs
├── ImportException.cs
├── ItemTrackingCollectionHost.cs
├── JsonSerializerTypeConverter.cs
├── LanguageEventArgs.cs
├── MultilingualResources
│ ├── ResXManager.Model.de.xlf
│ └── ResXManager.Model.zh-Hans.xlf
├── PrefixFieldType.cs
├── ProjectFile.cs
├── ProjectFileEventArgs.cs
├── ProjectFileExtensions.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── EmptyResxTemplate.txt
│ ├── Resources.Designer.cs
│ ├── Resources.Designer.tt
│ ├── Resources.de.resx
│ ├── Resources.resx
│ └── Resources.zh-Hans.resx
├── ResXManager.Model.csproj
├── ResXManager.Model.csproj.DotSettings
├── ResourceBeginEditingEventArgs.cs
├── ResourceData.cs
├── ResourceEntity.cs
├── ResourceEntityExtensions.cs
├── ResourceLanguage.cs
├── ResourceManager.cs
├── ResourceManagerExtensions.cs
├── ResourceNode.cs
├── ResourceTableEntry.cs
├── ResourceTableEntryEventArgs.cs
├── ResourceTableEntryExtensions.cs
├── ResourceTableEntryRulePunctuation.cs
├── ResourceTableEntryRulePunctuationLead.cs
├── ResourceTableEntryRulePunctuationTail.cs
├── ResourceTableEntryRuleStringFormat.cs
├── ResourceTableEntryRuleWhiteSpace.cs
├── ResourceTableEntryRuleWhiteSpaceLead.cs
├── ResourceTableEntryRuleWhiteSpaceTail.cs
├── ResourceTableEntryRules.cs
├── ResourceTableValues.cs
├── Snapshot.cs
├── TextExtensions.cs
├── TranslationState.cs
├── WebFileExporterConfiguration.cs
├── WebFilesExporter.cs
├── XlfDocument.cs
├── XlfExtensions.cs
├── XlfFile.cs
├── XlfNames.cs
├── XmlConfiguration.cs
└── XmlFile.cs
├── ResXManager.Package
├── Images
│ ├── LockScreenLogo.scale-200.png
│ ├── SplashScreen.scale-200.png
│ ├── Square150x150Logo.scale-200.png
│ ├── Square44x44Logo.scale-200.png
│ ├── Square44x44Logo.targetsize-24_altform-unplated.png
│ ├── StoreLogo.scale-100.png
│ ├── StoreLogo.scale-200.png
│ └── Wide310x150Logo.scale-200.png
├── Package.appxmanifest
└── ResXManager.Package.wapproj
├── ResXManager.Scripting
├── ConsoleTracer.cs
├── Host.cs
├── Properties
│ └── AssemblyInfo.cs
├── ResXManager.Scripting.csproj
├── ResourceScope.cs
├── Sample.ps1
└── SourceFilesProvider.cs
├── ResXManager.Tests
├── Helpers
│ └── FileHelper.cs
├── Model
│ ├── EntryChangeExtensionTests.cs
│ ├── RecentFolderConfigurationTests.cs
│ ├── TranslatorTests.cs
│ ├── XlfExtensionsTests.The_SetNoteValue_Method.Correctly_Handles_Setting_Notes_To_Null_Value.verified.txt
│ ├── XlfExtensionsTests.The_SetNoteValue_Method.Correctly_Handles_Setting_Notes_To_Valid_Value.verified.txt
│ └── XlfExtensionsTests.cs
├── ResXManager.Tests.csproj
├── Resources
│ └── Files
│ │ ├── GH0504
│ │ ├── MyProject.de.resx
│ │ ├── MyProject.de.xlf
│ │ ├── MyProject.resx
│ │ ├── MyProject.zh-Hans.resx
│ │ └── MyProject.zh-Hans.xlf
│ │ └── GH0666
│ │ ├── MyProject.de.resx
│ │ ├── MyProject.de.xlf
│ │ ├── MyProject.fr.resx
│ │ ├── MyProject.fr.xlf
│ │ ├── MyProject.nl.resx
│ │ ├── MyProject.nl.xlf
│ │ ├── MyProject.resx
│ │ ├── MyProject.zh-Hans.resx
│ │ └── MyProject.zh-Hans.xlf
├── UnitTest1.cs
└── View
│ ├── Converters
│ ├── CultureToImageSourceConverterTests.The_Convert_Method.Should_Produce_Correct_Default_Image_For_Every_Culture.verified.txt
│ └── CultureToImageSourceConverterTests.cs
│ └── Tools
│ ├── XlfSynchronizerTests.The_UpdateEntityFromXlf_Method.Does_Not_Add_Empty_Lines_languageToVerify=de.verified.resx
│ ├── XlfSynchronizerTests.The_UpdateEntityFromXlf_Method.Does_Not_Add_Empty_Lines_languageToVerify=zh-Hans.verified.resx
│ ├── XlfSynchronizerTests.The_UpdateEntityFromXlf_Method.Throws_Exception_When_Duplicate_Resources_Are_Detected.verified.txt
│ └── XlfSynchronizerTests.cs
├── ResXManager.Translators
├── AzureOpenAITranslator.cs
├── AzureOpenAITranslatorConfiguration.xaml
├── AzureOpenAITranslatorConfiguration.xaml.cs
├── AzureTranslationResponse.cs
├── AzureTranslator.cs
├── AzureTranslatorConfiguration.xaml
├── AzureTranslatorConfiguration.xaml.cs
├── BaiduTranslator.cs
├── CredentialItem.cs
├── DeepLTranslator.cs
├── FodyWeavers.xml
├── FodyWeavers.xsd
├── GoogleTranslator.cs
├── GoogleTranslatorLite.cs
├── MSTerminologyTranslator.cs
├── MyMemoryTranslator.cs
├── OpenAITranslator.cs
├── OpenAITranslatorConfiguration.xaml
├── OpenAITranslatorConfiguration.xaml.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.Designer.tt
│ ├── Resources.de.resx
│ ├── Resources.resx
│ └── Resources.zh-Hans.resx
├── ResXManager.Translators.csproj
├── ResXManager.Translators.csproj.DotSettings
├── Service References
│ └── Microsoft.TerminologyService
│ │ └── Reference.cs
├── TranslationMatch.cs
├── TranslationSession.cs
├── TranslatorBase.cs
└── TranslatorHost.cs
├── ResXManager.VSIX.Compatibility.Shared
├── CustomToolRunner.cs
├── DteConfiguration.cs
├── DteExtensions.cs
├── DteProjectFile.cs
├── DteSolution.cs
├── DteSourceFilesProvider.cs
├── ErrorListProviderService.cs
├── ICustomToolRunner.cs
├── PreBuildService.cs
├── Refactorings.cs
├── ResXManager.VSIX.Compatibility.Shared.projitems
├── ResXManager.VSIX.Compatibility.Shared.shproj
└── VsixCompatibility.cs
├── ResXManager.VSIX.Compatibility.x64
├── FodyWeavers.xml
├── FodyWeavers.xsd
└── ResXManager.VSIX.Compatibility.x64.csproj
├── ResXManager.VSIX.Compatibility.x86
├── FodyWeavers.xml
├── FodyWeavers.xsd
└── ResXManager.VSIX.Compatibility.x86.csproj
├── ResXManager.VSIX.Compatibility
├── CodeGenerator.cs
├── FodyWeavers.xml
├── FodyWeavers.xsd
├── IDteConfiguration.cs
├── IDteProjectFile.cs
├── IMoveToResourceViewModel.cs
├── IRefactorings.cs
├── IVsixCompatibility.cs
├── IVsixShellViewModel.cs
├── ItemKind.cs
├── MoveToResourceConfiguration.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.Designer.tt
│ ├── Resources.de.resx
│ ├── Resources.resx
│ └── Resources.zh-Hans.resx
├── ResXManager.VSIX.Compatibility.csproj
└── Resources
│ ├── Resources.Designer.t4
│ └── Resources.Designer.tt
├── ResXManager.VSIX
├── 200x200.png
├── 32x32.png
├── 48x48.png
├── 64x64.png
├── 96x96.png
├── Assets
│ ├── PrivateTool.png
│ ├── PublicTool.png
│ ├── TextTemplate.png
│ ├── Unknown.png
│ └── WinForms.png
├── Commands.cs
├── FodyWeavers.xml
├── FodyWeavers.xsd
├── Guids.cs
├── MyToolWindow.cs
├── OutputWindowTracer.cs
├── PkgCmdID.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.Designer.tt
│ ├── Resources.de.resx
│ ├── Resources.resx
│ ├── Resources.zh-Hans.resx
│ ├── Settings.Designer.cs
│ ├── Settings.cs
│ ├── Settings.settings
│ └── launchSettings.json
├── ResXManager.VSIX.csproj
├── Resources
│ ├── Images_24bit.bmp
│ └── VSColorScheme.xaml
├── ThemeResourceProvider.cs
├── VSPackage.cs
├── VSPackage.resx
├── VSPackage.vsct
├── Visuals
│ ├── CodeGeneratorView.xaml
│ ├── CodeGeneratorView.xaml.cs
│ ├── MoveToResourceConfigurationView.xaml
│ ├── MoveToResourceConfigurationView.xaml.cs
│ ├── MoveToResourceConfigurationViewModel.cs
│ ├── MoveToResourceView.xaml
│ ├── MoveToResourceView.xaml.cs
│ ├── MoveToResourceViewModel.cs
│ ├── ShowErrorsConfigurationView.xaml
│ ├── ShowErrorsConfigurationView.xaml.cs
│ ├── ShowErrorsConfigurationViewModel.cs
│ ├── VsixShellView.xaml
│ ├── VsixShellView.xaml.cs
│ └── VsixShellViewModel.cs
├── app.config
└── source.extension.vsixmanifest
├── ResXManager.View
├── Appearance.cs
├── Assets
│ ├── add.png
│ ├── addColumns.png
│ ├── btn_donate_SM.gif
│ ├── cellSelection.png
│ ├── columns.png
│ ├── copy.png
│ ├── cut.png
│ ├── delete.png
│ ├── errorFilter.png
│ ├── excel.png
│ ├── flat.png
│ ├── grouped.png
│ ├── like.png
│ ├── paste.png
│ ├── references.png
│ ├── refresh.png
│ ├── save.png
│ ├── snapshot.png
│ ├── trim.png
│ └── wrap.png
├── Behaviors
│ ├── DataGridTryBeginEditBehavior.cs
│ ├── EntityFilter.cs
│ ├── SelectAllBehavior.cs
│ ├── SelectAllColumnsBehavior.cs
│ ├── ShowErrorsOnlyBehavior.cs
│ └── SynchronizeTextBoxWithDataGridCellBehavior.cs
├── ColumnHeaders
│ ├── ColumnHeader.cs
│ ├── CommentHeader.cs
│ ├── IColumnHeader.cs
│ ├── LanguageColumnHeaderBase.cs
│ └── LanguageHeader.cs
├── Commands.cs
├── Converters
│ ├── CultureToDisplayNameConverter.cs
│ ├── CultureToImageSourceConverter.cs
│ ├── CultureToXmlLanguageConverter.cs
│ ├── DataGridToSelectionScopeConverter.cs
│ ├── IsCellSelectionInvariantConverter.cs
│ └── LanguageColumnFilterConverter.cs
├── ExtensionMethods.cs
├── Flags
│ ├── Notice.txt
│ ├── ad.gif
│ ├── ae.gif
│ ├── af.gif
│ ├── ag.gif
│ ├── ai.gif
│ ├── al.gif
│ ├── am.gif
│ ├── an.gif
│ ├── ao.gif
│ ├── ar.gif
│ ├── as.gif
│ ├── at.gif
│ ├── au.gif
│ ├── aw.gif
│ ├── ax.gif
│ ├── az.gif
│ ├── ba.gif
│ ├── bb.gif
│ ├── bd.gif
│ ├── be.gif
│ ├── bf.gif
│ ├── bg.gif
│ ├── bh.gif
│ ├── bi.gif
│ ├── bj.gif
│ ├── bm.gif
│ ├── bn.gif
│ ├── bo.gif
│ ├── br.gif
│ ├── bs.gif
│ ├── bt.gif
│ ├── bv.gif
│ ├── bw.gif
│ ├── by.gif
│ ├── bz.gif
│ ├── ca.gif
│ ├── cc.gif
│ ├── cd.gif
│ ├── cf.gif
│ ├── cg.gif
│ ├── ch.gif
│ ├── ci.gif
│ ├── ck.gif
│ ├── cl.gif
│ ├── cm.gif
│ ├── cn.gif
│ ├── co.gif
│ ├── cr.gif
│ ├── cs.gif
│ ├── cu.gif
│ ├── cv.gif
│ ├── cx.gif
│ ├── cy.gif
│ ├── cz.gif
│ ├── de.gif
│ ├── dj.gif
│ ├── dk.gif
│ ├── dm.gif
│ ├── do.gif
│ ├── dz.gif
│ ├── ec.gif
│ ├── ee.gif
│ ├── eg.gif
│ ├── eh.gif
│ ├── er.gif
│ ├── es.gif
│ ├── et.gif
│ ├── fi.gif
│ ├── fj.gif
│ ├── fk.gif
│ ├── fm.gif
│ ├── fo.gif
│ ├── fr.gif
│ ├── fy.gif
│ ├── ga.gif
│ ├── gb.gif
│ ├── gd.gif
│ ├── ge.gif
│ ├── gf.gif
│ ├── gh.gif
│ ├── gi.gif
│ ├── gl.gif
│ ├── gm.gif
│ ├── gn.gif
│ ├── gp.gif
│ ├── gq.gif
│ ├── gr.gif
│ ├── gs.gif
│ ├── gt.gif
│ ├── gu.gif
│ ├── gw.gif
│ ├── gy.gif
│ ├── hk.gif
│ ├── hm.gif
│ ├── hn.gif
│ ├── hr.gif
│ ├── ht.gif
│ ├── hu.gif
│ ├── id.gif
│ ├── ie.gif
│ ├── il.gif
│ ├── in.gif
│ ├── io.gif
│ ├── iq.gif
│ ├── ir.gif
│ ├── is.gif
│ ├── it.gif
│ ├── jm.gif
│ ├── jo.gif
│ ├── jp.gif
│ ├── ke.gif
│ ├── kg.gif
│ ├── kh.gif
│ ├── ki.gif
│ ├── km.gif
│ ├── kn.gif
│ ├── kp.gif
│ ├── kr.gif
│ ├── kw.gif
│ ├── ky.gif
│ ├── kz.gif
│ ├── la.gif
│ ├── lb.gif
│ ├── lc.gif
│ ├── li.gif
│ ├── lk.gif
│ ├── lr.gif
│ ├── ls.gif
│ ├── lt.gif
│ ├── lu.gif
│ ├── lv.gif
│ ├── ly.gif
│ ├── ma.gif
│ ├── mc.gif
│ ├── md.gif
│ ├── me.gif
│ ├── mg.gif
│ ├── mh.gif
│ ├── mk.gif
│ ├── ml.gif
│ ├── mm.gif
│ ├── mn.gif
│ ├── mo.gif
│ ├── mp.gif
│ ├── mq.gif
│ ├── mr.gif
│ ├── ms.gif
│ ├── mt.gif
│ ├── mu.gif
│ ├── mv.gif
│ ├── mw.gif
│ ├── mx.gif
│ ├── my.gif
│ ├── mz.gif
│ ├── na.gif
│ ├── nc.gif
│ ├── ne.gif
│ ├── nf.gif
│ ├── ng.gif
│ ├── ni.gif
│ ├── nl.gif
│ ├── no.gif
│ ├── np.gif
│ ├── nr.gif
│ ├── nu.gif
│ ├── nz.gif
│ ├── om.gif
│ ├── pa.gif
│ ├── pe.gif
│ ├── pf.gif
│ ├── pg.gif
│ ├── ph.gif
│ ├── pk.gif
│ ├── pl.gif
│ ├── pm.gif
│ ├── pn.gif
│ ├── pr.gif
│ ├── ps.gif
│ ├── pt.gif
│ ├── pw.gif
│ ├── py.gif
│ ├── qa.gif
│ ├── re.gif
│ ├── ro.gif
│ ├── rs.gif
│ ├── ru.gif
│ ├── rw.gif
│ ├── sa.gif
│ ├── sb.gif
│ ├── sc.gif
│ ├── sd.gif
│ ├── se.gif
│ ├── sg.gif
│ ├── sh.gif
│ ├── si.gif
│ ├── sj.gif
│ ├── sk.gif
│ ├── sl.gif
│ ├── sm.gif
│ ├── sn.gif
│ ├── so.gif
│ ├── sr.gif
│ ├── st.gif
│ ├── sv.gif
│ ├── sy.gif
│ ├── sz.gif
│ ├── tc.gif
│ ├── td.gif
│ ├── tf.gif
│ ├── tg.gif
│ ├── th.gif
│ ├── tj.gif
│ ├── tk.gif
│ ├── tl.gif
│ ├── tm.gif
│ ├── tn.gif
│ ├── to.gif
│ ├── tr.gif
│ ├── tt.gif
│ ├── tv.gif
│ ├── tw.gif
│ ├── tz.gif
│ ├── ua.gif
│ ├── ug.gif
│ ├── um.gif
│ ├── us.gif
│ ├── uy.gif
│ ├── uz.gif
│ ├── va.gif
│ ├── vc.gif
│ ├── ve.gif
│ ├── vg.gif
│ ├── vi.gif
│ ├── vn.gif
│ ├── vu.gif
│ ├── wf.gif
│ ├── ws.gif
│ ├── ye.gif
│ ├── yt.gif
│ ├── za.gif
│ ├── zm.gif
│ └── zw.gif
├── FodyWeavers.xml
├── FodyWeavers.xsd
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.Designer.tt
│ ├── Resources.de.resx
│ ├── Resources.resx
│ ├── Resources.zh-Hans.resx
│ ├── Settings.Designer.cs
│ ├── Settings.cs
│ └── Settings.settings
├── ResXManager.View.csproj
├── ResXManager.View.csproj.DotSettings
├── Themes
│ ├── ResourceKeys.cs
│ ├── ThemeManager.cs
│ └── generic.xaml
├── Tools
│ ├── AddNewKeyCommand.cs
│ ├── CodeReferenceTracker.cs
│ ├── ColumnManager.cs
│ ├── CultureCountryOverrides.cs
│ ├── CultureOverrideEventArgs.cs
│ ├── ExtensionMethods.cs
│ ├── ISourceFilesProvider.cs
│ ├── PerformanceTracer.cs
│ ├── ResXFileWatcher.cs
│ ├── SpellCheck.cs
│ └── XlfSynchronizer.cs
└── Visuals
│ ├── CodeReferencesToolTip.xaml
│ ├── CodeReferencesToolTip.xaml.cs
│ ├── ConfigurationEditorView.xaml
│ ├── ConfigurationEditorView.xaml.cs
│ ├── ConfigurationEditorViewModel.cs
│ ├── ConfirmationDialog.xaml
│ ├── ConfirmationDialog.xaml.cs
│ ├── InputBox.xaml
│ ├── InputBox.xaml.cs
│ ├── LanguageConfigurationView.xaml
│ ├── LanguageConfigurationView.xaml.cs
│ ├── LanguageConfigurationViewModel.cs
│ ├── LanguageSelectionBoxView.xaml
│ ├── LanguageSelectionBoxView.xaml.cs
│ ├── LanguageSelectionBoxViewModel.cs
│ ├── ResourceView.xaml
│ ├── ResourceView.xaml.cs
│ ├── ResourceViewModel.cs
│ ├── ShellView.xaml
│ ├── ShellView.xaml.cs
│ ├── ShellViewModel.cs
│ ├── TranslationItem.cs
│ ├── TranslationsView.xaml
│ ├── TranslationsView.xaml.cs
│ ├── TranslationsViewModel.cs
│ ├── TranslatorConfiguration.xaml
│ ├── TranslatorConfiguration.xaml.cs
│ ├── WebExportConfigurationView.xaml
│ ├── WebExportConfigurationView.xaml.cs
│ └── WebExportConfigurationViewModel.cs
├── ResXManager
├── App.xaml
├── App.xaml.cs
├── FodyWeavers.xml
├── FodyWeavers.xsd
├── IStandaloneConfiguration.cs
├── MainView.xaml
├── MainView.xaml.cs
├── MainViewModel.cs
├── MainWindow.xaml
├── MainWindow.xaml.cs
├── OutputView.xaml
├── OutputView.xaml.cs
├── OutputViewModel.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── PublishProfiles
│ │ └── ClickOnce.pubxml
│ ├── Resources.Designer.cs
│ ├── Resources.Designer.tt
│ ├── Resources.de.resx
│ ├── Resources.resx
│ ├── Resources.zh-Hans.resx
│ ├── Settings.Designer.cs
│ ├── Settings.cs
│ └── Settings.settings
├── ResXManager.csproj
├── ResXManager.csproj.DotSettings
├── ResourceManager.ico
├── StandaloneConfiguration.cs
├── ThemeConfigurationView.xaml
├── ThemeConfigurationView.xaml.cs
├── ThemeConfigurationViewModel.cs
├── Themes
│ ├── DarkTheme.xaml
│ └── LightTheme.xaml
└── app.config
├── ResXResourceManager.sln
├── ResXResourceManager.sln.DotSettings
├── ResourceManager.ico
├── Resources.Designer.t4
└── clean.cmd
/.gitattributes:
--------------------------------------------------------------------------------
1 | # VerifyTests
2 | *.verified.txt text eol=lf working-tree-encoding=UTF-8
3 | *.verified.resx text eol=lf working-tree-encoding=UTF-8
4 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | github: tom-englert
2 | custom: https://www.paypal.com/donate/?hosted_button_id=MNKFW7GJGS2LY
3 | open_collective: resxresourcemanager
4 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Important**
11 | Read https://github.com/dotnet/ResXResourceManager/blob/master/Documentation/Topics/Troubleshooting.md first.
12 | Problems listed there are bugs in Visual Studio and should be reported to Microsoft, not here.
13 |
14 | **Describe the bug**
15 | A clear and concise description of what the bug is.
16 |
17 | **To Reproduce**
18 | Steps to reproduce the behavior:
19 |
20 | **Expected behavior**
21 | A clear and concise description of what you expected to happen.
22 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots about the feature request here.
21 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 |
4 | # User-specific files
5 | *.suo
6 | *.user
7 | .vs/
8 |
9 | # Build results
10 | [Dd]ebug/
11 | [Rr]elease/
12 | [Bb]in/
13 | [Oo]bj/
14 | [Dd]eploy/
15 | [Dd]ocumentation/[Hh]elp
16 | [Pp]ublish/
17 |
18 | # MSTest test Results
19 | [Tt]est[Rr]esult*/
20 | [Bb]uild[Ll]og.*
21 |
22 | # Nuget
23 | [Pp]ackages/
24 | /_ReSharper.Caches/
25 | src/.migration/
26 | msbuild.binlog
27 | *.cache
28 | *.received.*
29 |
--------------------------------------------------------------------------------
/Assets/ChooseColumns.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Assets/ChooseColumns.png
--------------------------------------------------------------------------------
/Assets/CopyPasteExport.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Assets/CopyPasteExport.png
--------------------------------------------------------------------------------
/Assets/DetectCodeReferences.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Assets/DetectCodeReferences.png
--------------------------------------------------------------------------------
/Assets/DetectCodeReferencesConfig.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Assets/DetectCodeReferencesConfig.png
--------------------------------------------------------------------------------
/Assets/Invariant.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Assets/Invariant.png
--------------------------------------------------------------------------------
/Assets/Resources.ps1:
--------------------------------------------------------------------------------
1 | param([string]$solutionDir)
2 |
3 | # Create the scripting host of ResXManager:
4 | Add-Type -Path 'ResXManager.Scripting.dll'
5 | $myhost = New-Object -TypeName 'ResXManager.Scripting.Host'
6 |
7 | # Load a project by specifying the solution folder (like in the standalone version)
8 | $myhost.Load($solutionDir)
9 |
10 | $allCultures = $myhost.ResourceManager.Cultures
11 | $entities = $myhost.ResourceManager.ResourceEntities
12 |
13 | foreach($culture in $allCultures) {
14 | $nodes = @{}
15 |
16 | foreach ($entity in $entities) {
17 | $entityNode = @{}
18 | $nodeName = $entity.UniqueName
19 | $nodes[$nodeName] = $entityNode
20 | foreach($entry in $entity.Entries) {
21 | $entityNode[$entry.Key] = $entry.Values[$culture]
22 | }
23 | }
24 |
25 | $cultureName = $culture.ToString('')
26 | $json = ConvertTo-Json $nodes
27 |
28 | if (!$cultureName) {
29 | Set-Content -Path "d:\temp\test.ts" -Value "class Resources $json"
30 | }
31 |
32 | Set-Content -Path "d:\temp\test$cultureName.json" -Value "$json"
33 | }
34 |
--------------------------------------------------------------------------------
/Assets/ShowOnlyErrors.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Assets/ShowOnlyErrors.png
--------------------------------------------------------------------------------
/Assets/Snapshots.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Assets/Snapshots.png
--------------------------------------------------------------------------------
/Assets/StandaloneMainScreen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Assets/StandaloneMainScreen.png
--------------------------------------------------------------------------------
/Assets/Translations.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Assets/Translations.png
--------------------------------------------------------------------------------
/Assets/VS2017 Launch Partner Logo Small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Assets/VS2017 Launch Partner Logo Small.png
--------------------------------------------------------------------------------
/Assets/VS2017 Launch Partner Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Assets/VS2017 Launch Partner Logo.png
--------------------------------------------------------------------------------
/Assets/VisualStudioMainScreen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Assets/VisualStudioMainScreen.png
--------------------------------------------------------------------------------
/CODE-OF-CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Code of Conduct
2 |
3 | This project has adopted the code of conduct defined by the Contributor Covenant
4 | to clarify expected behavior in our community.
5 |
6 | For more information, see the [.NET Foundation Code of Conduct](https://dotnetfoundation.org/code-of-conduct).
7 |
--------------------------------------------------------------------------------
/Documentation/Readme.md:
--------------------------------------------------------------------------------
1 | Select a topic to start with:
2 |
3 | ### [Installation](Topics/Installation.md)
4 |
5 | ### [Usage](Topics/Usage.md)
6 |
7 | ### Features
8 | - [Automated Translations](Topics/Automatic-Translations.md)
9 | - [Configure Visible Columns](Topics/Configure-Visible-Columns.md)
10 | - [Copy, Paste, Export and Import](Topics/Copy,-Paste,-Export-and-Import.md)
11 | - [Custom Code Generator](Topics/Custom-Code-Generator.md)
12 | - [Detect Code References](Topics/Detect-Code-References.md)
13 | - [Invariant Strings](Topics/Invariant-Strings.md)
14 | - [Scripting](Topics/Scripting.md)
15 | - [Snapshots](Topics/Snapshots.md)
16 | - [Spell Checker](Topics/Spell-Checker.md)
17 | - [XLIFF Support](Topics/Xliff.md)
18 |
19 | ### [Troubleshooting](Topics/Troubleshooting.md)
20 |
21 | ### [Supporting the project](Topics/Donate.md)
22 |
--------------------------------------------------------------------------------
/Documentation/Topics/Automatic Translations_Translations.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Documentation/Topics/Automatic Translations_Translations.png
--------------------------------------------------------------------------------
/Documentation/Topics/CellSelection.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Documentation/Topics/CellSelection.png
--------------------------------------------------------------------------------
/Documentation/Topics/Configure Visible Columns_ChooseColumns.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Documentation/Topics/Configure Visible Columns_ChooseColumns.png
--------------------------------------------------------------------------------
/Documentation/Topics/Configure-Visible-Columns.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | You can select what columns are visible, to hide languages or comments you're currently not working on.
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Documentation/Topics/Copy, Paste, Export and Import_CopyPasteExport.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Documentation/Topics/Copy, Paste, Export and Import_CopyPasteExport.png
--------------------------------------------------------------------------------
/Documentation/Topics/CopyPasteContextMenu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Documentation/Topics/CopyPasteContextMenu.png
--------------------------------------------------------------------------------
/Documentation/Topics/Detect Code References_DetectCodeReferences.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Documentation/Topics/Detect Code References_DetectCodeReferences.png
--------------------------------------------------------------------------------
/Documentation/Topics/Detect Code References_DetectCodeReferencesConfig.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Documentation/Topics/Detect Code References_DetectCodeReferencesConfig.png
--------------------------------------------------------------------------------
/Documentation/Topics/Detect-Code-References.md:
--------------------------------------------------------------------------------
1 | ### Detect code references
2 | 
3 |
4 | This feature helps finding orphan strings that are no longer used. If enabled it shows a new column beside the key, displaying the count of possible references to this key found in code. If you hover the mouse over the column, a tool tip shows the location and context of the detected reference.
5 | The engine does not fully parse the source code, but is using a simple text look up algorithm searching for several patterns like ResourceFile.ResourceKey or ResourceFile->ResourceKey; it may also count references in commented code, or maybe other occurrences of any of the patterns, so even if a resources count is greater than zero it may not be used.
6 | On the other hand it will not find indirect references like `ResourceFile["ResourceKey"]` or even `ResourceFile["Resource" + "Key"]`. So be aware that a count of zero is no guarantee that this resource is not used; e.g. resources of localized WinForms controls always have a count of zero!
7 |
8 | The patterns the algorithm is looking for are configurable on the configuration tab:
9 | 
10 |
11 | Only patterns that appear on a single line are detected. Patterns that span more than one line are not detected.
12 |
13 |
14 |
--------------------------------------------------------------------------------
/Documentation/Topics/Documentation_extension.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Documentation/Topics/Documentation_extension.png
--------------------------------------------------------------------------------
/Documentation/Topics/Documentation_standalone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Documentation/Topics/Documentation_standalone.png
--------------------------------------------------------------------------------
/Documentation/Topics/Donate.md:
--------------------------------------------------------------------------------
1 | ### Supporting the project
2 |
3 | If you think this is a great project, and want to help keeping it alive, you can show your appreciation by donating a small amount:
4 |
5 | ---
6 | #### GitHub:
7 | [GitHub Sponsors](https://github.com/sponsors/tom-englert)
8 |
9 | ---
10 | #### Paypal:
11 |
12 |
13 |
14 | ---
15 | #### Open Colective:
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/Documentation/Topics/Home_ChooseColumns.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Documentation/Topics/Home_ChooseColumns.png
--------------------------------------------------------------------------------
/Documentation/Topics/Home_extension.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Documentation/Topics/Home_extension.png
--------------------------------------------------------------------------------
/Documentation/Topics/Home_standalone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Documentation/Topics/Home_standalone.png
--------------------------------------------------------------------------------
/Documentation/Topics/Installation.md:
--------------------------------------------------------------------------------
1 | ### Visual Studio Extension
2 | Use the Visual Studio Extension Manager (search for RESX),
3 | install from the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=TomEnglert.ResXManager),
4 | or download the binaries from the [GitHub releases](https://github.com/tom-englert/ResXResourceManager/releases) and double click the ResXManager.VSIX.vsix
5 | ### Standalone
6 | Run the [ClickOnce installer](https://clickonce-tom-englert.azurewebsites.net/ResXResourceManager/ResXManager.application).
7 | ### Scripting Module for PowerShell
8 | Download the Scripting Module from the [GitHub releases](https://github.com/tom-englert/ResXResourceManager/releases) page. Expand the zip file to a folder of your choice.
9 | See the contained Sample.ps1 on how to use it.
10 |
--------------------------------------------------------------------------------
/Documentation/Topics/Invariant Strings_Invariant.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Documentation/Topics/Invariant Strings_Invariant.png
--------------------------------------------------------------------------------
/Documentation/Topics/Invariant-Strings.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | Entries that do not need a translation even though they are stored in a resource file can be marked as invariant. They are not highlighted red when empty but will show up in gray, and they do not appear when the "show only lines with missing strings" filter is activated.
4 |
5 |
--------------------------------------------------------------------------------
/Documentation/Topics/MoveToResource.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Documentation/Topics/MoveToResource.gif
--------------------------------------------------------------------------------
/Documentation/Topics/MoveToResource.md:
--------------------------------------------------------------------------------
1 | ### Move to Resource
2 | You can easily add new strings just by selecting the required string in your source file and clicking "Move to Resources" in the context menu:
3 |
4 | 
5 |
6 | - Only availabe in Visual Studio
--------------------------------------------------------------------------------
/Documentation/Topics/Scripting.md:
--------------------------------------------------------------------------------
1 | To automate localization tasks a Scripting Module is available.
2 |
3 | With this you can write Power Shell scripts that e.g.
4 |
5 | * export and import resources to and from Excel files
6 | * generate or load snapshots to export only changes compared to the last snapshot
7 | * check your resources for untranslated strings during build
8 |
9 | Download the Scripting Module from the [GitHub releases](https://github.com/tom-englert/ResXResourceManager/releases) page and expand the zip file to a folder of your choice.
10 |
11 | The file Sample.ps1 that comes with the module shows how to use it for the most common tasks.
--------------------------------------------------------------------------------
/Documentation/Topics/SelectCodeGenerator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Documentation/Topics/SelectCodeGenerator.png
--------------------------------------------------------------------------------
/Documentation/Topics/Snapshots.md:
--------------------------------------------------------------------------------
1 | ## Snapshots
2 |
3 | 
4 |
5 | Snapshots can help you tracking changes.
6 |
7 | **Quickly find or export all items that have been changed since the last translation cycle**
8 |
9 | * After a translation cycle is complete generate a snapshot.
10 | * When the next translation cycle starts, load this snapshot to see all entries that have changed highlighted.
11 | * Use the "Warnings and Changes" filter to show only the items that need translation:
12 | 
13 | * Select all and export the selection to send the changes to an external translator.
14 | * Generate another snapshot for the exported state.
15 |
16 | **Import only changes compared to the last snapshot**
17 | * Load the snapshot that was generated right after the export
18 | * Import now will only import items that have been changed compared to the loaded snapshot. Items that have been changed between export and import but were not touched by the external translator will be preserved this way.
19 |
20 |
--------------------------------------------------------------------------------
/Documentation/Topics/Snapshots_ShowOnlyErrors.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Documentation/Topics/Snapshots_ShowOnlyErrors.png
--------------------------------------------------------------------------------
/Documentation/Topics/Snapshots_Snapshots.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Documentation/Topics/Snapshots_Snapshots.png
--------------------------------------------------------------------------------
/Documentation/Topics/Spell-Checker.md:
--------------------------------------------------------------------------------
1 | ResXManager supports spell checking by using the default .Net spell checker.
2 | In order to enable spell checking for any language, you must have the corresponding .Net language pack installed.
3 |
4 | You can find the latest language packs here:
5 | https://support.microsoft.com/en-us/help/4054529/microsoft-net-framework-4-7-2-language-pack-offline-installer-for-wind
6 |
7 | In Win10 you have to install the language packs in Settings/Region & language:
8 | 
9 |
10 | - It will only work if all options are installed for the language.
11 | - You need at least Windows 10 Creators Update (version 1703), in earlier Win10 versions it does not work at all.
12 |
--------------------------------------------------------------------------------
/Documentation/Topics/SpellChecker_LanguageSettings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Documentation/Topics/SpellChecker_LanguageSettings.png
--------------------------------------------------------------------------------
/Documentation/Topics/TextTemplateCodeGenerator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Documentation/Topics/TextTemplateCodeGenerator.png
--------------------------------------------------------------------------------
/Documentation/Topics/Xliff.md:
--------------------------------------------------------------------------------
1 | ## Xliff
2 |
3 | ResX Resource Manager supports synchronisation between `ResX` and `Xliff` resource files.
4 |
5 | This can be useful if your translation service accepts `Xliff` files as a translation source.
6 |
7 | You can also complement or replace the [Multilingual App Toolkit (MAT)](https://marketplace.visualstudio.com/items?itemName=MultilingualAppToolkit.MultilingualAppToolkit-18308)
8 |
9 | ### Configuration
10 |
11 | You have to enable this feature in the configuration tab of RXRM:
12 |
13 | 
14 |
15 | ### How it works
16 |
17 | - When this feature is enabled, synchronisation runs only after you have opened the ResX Resource Manager window at least once.
18 |
19 | - When you open a solution, translated strings of all `ResX` files are updated from their corresponding `Xliff` value.
20 |
21 | - When you edit a localized string, both `ResX` and `Xliff` values are updated. The translation state of the `Xliff` entry is updated according to the change.
22 |
23 | - When you update a string in an `Xliff` file, using an external editor, the corresponding `ResX` entry is updated.
24 |
--------------------------------------------------------------------------------
/Documentation/Topics/Xliff_configuration.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/Documentation/Topics/Xliff_configuration.png
--------------------------------------------------------------------------------
/License:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 | Copyright (c) .NET Foundation and Contributors
3 | All Rights Reserved
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8 |
--------------------------------------------------------------------------------
/UpdateNotice.cmd:
--------------------------------------------------------------------------------
1 | dotnet tool update TomsToolbox.LicenseGenerator --global
2 | build-license -i "%~dp0src\ResXResourceManager.sln"
3 |
--------------------------------------------------------------------------------
/signing/SignClient.json:
--------------------------------------------------------------------------------
1 | {
2 | "SignClient": {
3 | "AzureAd": {
4 | "AADInstance": "https://login.microsoftonline.com/",
5 | "ClientId": "c248d68a-ba6f-4aa9-8a68-71fe872063f8",
6 | "TenantId": "16076fdc-fcc1-4a15-b1ca-32c9a255900e"
7 | },
8 | "Service": {
9 | "Url": "https://codesign.dotnetfoundation.org/",
10 | "ResourceId": "https://SignService/3c30251f-36f3-490b-a955-520addb85001"
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/signing/filelist.txt:
--------------------------------------------------------------------------------
1 | **/ResXManager.*
2 | **/setup.exe
3 |
--------------------------------------------------------------------------------
/src/16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/16x16.png
--------------------------------------------------------------------------------
/src/Key.snk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/Key.snk
--------------------------------------------------------------------------------
/src/Nuget.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/ResXManager.Infrastructure/FodyWeavers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/ResXManager.Infrastructure/ICredentialItem.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Infrastructure;
2 |
3 | using System.ComponentModel;
4 |
5 | public interface ICredentialItem : INotifyPropertyChanged
6 | {
7 | string Key { get; }
8 |
9 | string Description { get; }
10 |
11 | string? Value { get; set; }
12 |
13 | bool IsPassword { get; }
14 | }
--------------------------------------------------------------------------------
/src/ResXManager.Infrastructure/IService.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Infrastructure;
2 |
3 | public interface IService
4 | {
5 | void Start();
6 | }
--------------------------------------------------------------------------------
/src/ResXManager.Infrastructure/ITranslationItem.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Infrastructure;
2 |
3 | using System.Collections.Generic;
4 | using System.Globalization;
5 |
6 | public interface ITranslationItem
7 | {
8 | string Source { get; }
9 |
10 | public IList<(CultureInfo Culture, string Text, string? Comment)> GetAllItems(CultureInfo neutralCulture);
11 |
12 | IList Results { get; }
13 |
14 | CultureKey TargetCulture { get; }
15 |
16 | string? Translation { get; }
17 |
18 | bool Apply();
19 | }
--------------------------------------------------------------------------------
/src/ResXManager.Infrastructure/ITranslationMatch.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Infrastructure;
2 |
3 | public interface ITranslationMatch
4 | {
5 | string? TranslatedText { get; }
6 |
7 | ITranslator? Translator { get; }
8 |
9 | double Rating { get; }
10 | }
--------------------------------------------------------------------------------
/src/ResXManager.Infrastructure/ITranslationSession.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Infrastructure;
2 |
3 | using System;
4 | using System.Collections.Generic;
5 | using System.Globalization;
6 | using System.Threading;
7 | using System.Threading.Tasks;
8 |
9 | public interface ITranslationSession : IDisposable
10 | {
11 | bool IsActive { get; }
12 |
13 | bool IsCanceled { get; }
14 |
15 | bool IsComplete { get; }
16 |
17 | CancellationToken CancellationToken { get; }
18 |
19 | void Cancel();
20 |
21 | ICollection Items { get; }
22 |
23 | IList Messages { get; }
24 |
25 | CultureInfo NeutralResourcesLanguage { get; }
26 |
27 | int Progress { get; set; }
28 |
29 | CultureInfo SourceLanguage { get; }
30 |
31 | TaskFactory MainThread { get; }
32 |
33 | void AddMessage(string text);
34 | }
--------------------------------------------------------------------------------
/src/ResXManager.Infrastructure/ITranslator.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Infrastructure;
2 |
3 | using System;
4 | using System.Collections.Generic;
5 | using System.ComponentModel;
6 | using System.Threading.Tasks;
7 |
8 | public interface ITranslator : INotifyPropertyChanged
9 | {
10 | string Id { get; }
11 |
12 | string DisplayName { get; }
13 |
14 | Uri? Uri { get; }
15 |
16 | bool IsEnabled { get; set; }
17 |
18 | bool IsActive { get; }
19 |
20 | bool SaveCredentials { get; set; }
21 |
22 | double Ranking { get; set; }
23 |
24 | Task Translate(ITranslationSession translationSession);
25 |
26 | IList Credentials { get; }
27 | }
--------------------------------------------------------------------------------
/src/ResXManager.Infrastructure/JsonConvert.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Infrastructure;
2 |
3 | public static class JsonConvert
4 | {
5 | public static string? SerializeObject(object value)
6 | {
7 | return Newtonsoft.Json.JsonConvert.SerializeObject(value);
8 | }
9 |
10 | public static T? DeserializeObject(string value)
11 | where T : class
12 | {
13 | return Newtonsoft.Json.JsonConvert.DeserializeObject(value);
14 | }
15 |
16 | public static void PopulateObject(string value, object target)
17 | {
18 | Newtonsoft.Json.JsonConvert.PopulateObject(value, target);
19 | }
20 | }
--------------------------------------------------------------------------------
/src/ResXManager.Infrastructure/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Resources;
2 |
3 | [assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.MainAssembly)]
4 |
5 | namespace ResXManager.Infrastructure.Properties;
6 |
7 | public static class AssemblyKey
8 | {
9 | }
--------------------------------------------------------------------------------
/src/ResXManager.Infrastructure/RegionId.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Infrastructure;
2 |
3 | public static class RegionId
4 | {
5 | public const string Main = "Main";
6 | public const string Shell = "Shell";
7 | public const string Content = "Content";
8 | public const string Configuration = "Configuration";
9 |
10 | public const string ProjectListContextMenu = "ProjectListContextMenu";
11 | public const string ResourceTableContextMenu = "ResourceTableContextMenu";
12 | public const string ResourceTableItemContextMenu = "ResourceTableItemContextMenu";
13 |
14 | public const string ProjectListItemDecorator = "ProjectListItemDecorator";
15 | }
--------------------------------------------------------------------------------
/src/ResXManager.Infrastructure/ResXManager.Infrastructure.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net472;netstandard2.0
5 |
6 |
7 |
8 |
9 | Key.snk
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/ResXManager.Infrastructure/ResXManager.Infrastructure.csproj.DotSettings:
--------------------------------------------------------------------------------
1 |
2 | Yes
--------------------------------------------------------------------------------
/src/ResXManager.Infrastructure/StringExtensions.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Infrastructure;
2 |
3 | #if NETFRAMEWORK || NETSTANDARD
4 | using System;
5 | using System.Linq;
6 |
7 | public static class StringExtensions
8 | {
9 |
10 | public static string Replace(this string target, string oldValue, string? newValue, StringComparison _)
11 | {
12 | return target.Replace(oldValue, newValue);
13 | }
14 |
15 | public static bool Contains(this string target, char value, StringComparison _)
16 | {
17 | return target.Contains(value);
18 | }
19 |
20 | }
21 | #endif
--------------------------------------------------------------------------------
/src/ResXManager.Model/AsyncThrottle.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Model;
2 |
3 | using System;
4 | using System.Threading;
5 | using System.Threading.Tasks;
6 |
7 | public class AsyncThrottle
8 | {
9 | private readonly Action _target;
10 | private int _counter;
11 |
12 | ///
13 | /// Initializes a new instance of the class.
14 | ///
15 | /// The target action to invoke when the throttle condition is hit.
16 | public AsyncThrottle(Action target)
17 | {
18 | _target = target;
19 | }
20 |
21 | ///
22 | /// Ticks this instance to trigger the throttle.
23 | ///
24 | public async void Tick()
25 | {
26 | try
27 | {
28 | Interlocked.Increment(ref _counter);
29 |
30 | await Task.Delay(250).ConfigureAwait(true);
31 |
32 | if (Interlocked.Decrement(ref _counter) != 0)
33 | return;
34 |
35 | _target();
36 | }
37 | catch
38 | {
39 | // nothing we can do here...
40 | }
41 | }
42 | }
--------------------------------------------------------------------------------
/src/ResXManager.Model/CodeReference.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Model;
2 |
3 | using System.Collections.Generic;
4 |
5 | public class CodeReference
6 | {
7 | public CodeReference(ProjectFile projectFile, int lineNumber, IList lineSegments)
8 | {
9 | ProjectFile = projectFile;
10 | LineNumber = lineNumber;
11 | LineSegments = lineSegments;
12 | }
13 |
14 | public int LineNumber { get; }
15 |
16 | public ProjectFile? ProjectFile { get; }
17 |
18 | public IList? LineSegments { get; }
19 | }
--------------------------------------------------------------------------------
/src/ResXManager.Model/ColumnKind.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Model;
2 |
3 | public enum ColumnKind
4 | {
5 | Text,
6 | Comment
7 | }
--------------------------------------------------------------------------------
/src/ResXManager.Model/ConfigurationScope.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Model;
2 |
3 | public enum ConfigurationScope
4 | {
5 | Global,
6 | Solution
7 | }
--------------------------------------------------------------------------------
/src/ResXManager.Model/DelegateIndexer.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Model;
2 |
3 | using System;
4 |
5 | public class DelegateIndexer
6 | {
7 | private readonly Func _getter;
8 |
9 | private readonly Action _setter;
10 |
11 | public DelegateIndexer(Func getter, Action setter)
12 | {
13 | _getter = getter;
14 | _setter = setter;
15 | }
16 |
17 | public TValue this[TKey key]
18 | {
19 | get => _getter(key);
20 | set => _setter(key, value);
21 | }
22 | }
--------------------------------------------------------------------------------
/src/ResXManager.Model/DuplicateKeyHandling.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Model;
2 |
3 | using ResXManager.Model.Properties;
4 |
5 | public enum DuplicateKeyHandling
6 | {
7 | [LocalizedDisplayName(StringResourceKey.DuplicateKeyHandling_Rename)]
8 | Rename,
9 | [LocalizedDisplayName(StringResourceKey.DuplicateKeyHandling_Fail)]
10 | Fail
11 | }
--------------------------------------------------------------------------------
/src/ResXManager.Model/EntryChange.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Model;
2 |
3 | using System;
4 | using System.Globalization;
5 |
6 | public class EntryChange
7 | {
8 | public EntryChange(ResourceTableEntry entry, string? text, CultureInfo? culture, ColumnKind columnKind, string? originalText)
9 | {
10 | Entry = entry;
11 | Text = text;
12 | Culture = culture;
13 | ColumnKind = columnKind;
14 | OriginalText = originalText;
15 | }
16 |
17 | public ResourceTableEntry Entry { get; }
18 |
19 | public string? Text { get; }
20 |
21 | public CultureInfo? Culture { get; }
22 |
23 | public ColumnKind ColumnKind { get; }
24 |
25 | public string? OriginalText { get; }
26 | }
27 |
28 | public static class EntryChangeExtensions
29 | {
30 | public static bool IsModified(this EntryChange entryChange)
31 | {
32 | return IsModified(entryChange.OriginalText, entryChange.Text);
33 | }
34 |
35 | public static bool IsModified(string? left, string? right)
36 | {
37 | return !string.Equals(left, right, StringComparison.Ordinal) && (!string.IsNullOrEmpty(left) || !string.IsNullOrEmpty(right));
38 | }
39 | }
--------------------------------------------------------------------------------
/src/ResXManager.Model/FileFilter.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Model;
2 |
3 | using System;
4 | using System.Linq;
5 | using System.Text.RegularExpressions;
6 |
7 | using ResXManager.Infrastructure;
8 |
9 | public class FileFilter : IFileFilter
10 | {
11 | private readonly string[] _extensions;
12 | private readonly Regex? _fileExclusionFilter;
13 |
14 | public FileFilter(IConfiguration configuration)
15 | {
16 | _extensions = configuration.CodeReferences
17 | .Items.SelectMany(item => item.ParseExtensions())
18 | .Concat(new[] { ".t4" })
19 | .Distinct()
20 | .ToArray();
21 |
22 | _fileExclusionFilter = configuration.FileExclusionFilter.TryCreateRegex();
23 | }
24 |
25 | public bool IsSourceFile(ProjectFile file)
26 | {
27 | return _extensions.Contains(file.Extension, StringComparer.OrdinalIgnoreCase);
28 | }
29 |
30 | public bool IncludeFile(ProjectFile file)
31 | {
32 | return _fileExclusionFilter?.IsMatch(file.RelativeFilePath) != true;
33 | }
34 | }
--------------------------------------------------------------------------------
/src/ResXManager.Model/FodyWeavers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/ResXManager.Model/GlobalExtensions.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Model;
2 |
3 | using System.IO;
4 |
5 | using TomsToolbox.Essentials;
6 |
7 | ///
8 | /// Various extension methods to help generating better code.
9 | ///
10 | public static class GlobalExtensions
11 | {
12 | public static string ReplaceInvalidFileNameChars(this string value, char replacement)
13 | {
14 | Path.GetInvalidFileNameChars().ForEach(c => value = value.Replace(c, replacement));
15 |
16 | return value;
17 | }
18 |
19 | public static bool Matches(this IFileFilter filter, ProjectFile file)
20 | {
21 | return filter.IncludeFile(file) && (file.IsResourceFile() || filter.IsSourceFile(file));
22 | }
23 | }
--------------------------------------------------------------------------------
/src/ResXManager.Model/IErrorListProvider.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Model;
2 |
3 | using System;
4 | using System.Collections.Generic;
5 |
6 | using ResXManager.Infrastructure;
7 |
8 | public interface IErrorListProvider : IDisposable
9 | {
10 | event Action Navigate;
11 |
12 | void SetEntries(ICollection entries, ICollection cultures, int errorCategory);
13 | void Remove(ResourceTableEntry entry);
14 | void Clear();
15 | }
--------------------------------------------------------------------------------
/src/ResXManager.Model/IExportParameters.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Model;
2 |
3 | public interface IExportParameters
4 | {
5 | IResourceScope? Scope
6 | {
7 | get;
8 | }
9 |
10 | string? FileName
11 | {
12 | get;
13 | }
14 | }
--------------------------------------------------------------------------------
/src/ResXManager.Model/IFileFilter.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Model;
2 |
3 | public interface IFileFilter
4 | {
5 | bool IsSourceFile(ProjectFile file);
6 |
7 | bool IncludeFile(ProjectFile file);
8 | }
--------------------------------------------------------------------------------
/src/ResXManager.Model/IResourceScope.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Model;
2 |
3 | using System.Collections.Generic;
4 |
5 | using ResXManager.Infrastructure;
6 |
7 | public interface IResourceScope
8 | {
9 | IEnumerable Entries
10 | {
11 | get;
12 | }
13 |
14 | IEnumerable Languages
15 | {
16 | get;
17 | }
18 |
19 | IEnumerable Comments
20 | {
21 | get;
22 | }
23 | }
--------------------------------------------------------------------------------
/src/ResXManager.Model/IResourceTableEntryRuleConfig.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Model;
2 |
3 | using System.ComponentModel;
4 |
5 | /// A rule that is validated against a entry of the resource table.
6 | ///
7 | /// This is used to implement the different rules that are used to check the proper translation.
8 | ///
9 | public interface IResourceTableEntryRuleConfig : INotifyPropertyChanged
10 | {
11 | ///
12 | /// This property is used to control if the rule is globally enabled.
13 | ///
14 | bool IsEnabled { get; set; }
15 |
16 | ///
17 | /// The identification of the rule. This value is used to disable the rule check.
18 | ///
19 | string RuleId { get; }
20 | }
--------------------------------------------------------------------------------
/src/ResXManager.Model/ImportException.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Model;
2 |
3 | using System;
4 | using System.Runtime.Serialization;
5 |
6 | [Serializable]
7 | public class ImportException : Exception
8 | {
9 | public ImportException()
10 | {
11 | }
12 |
13 | public ImportException(string? message) : base(message)
14 | {
15 | }
16 |
17 | public ImportException(string? message, Exception? inner) : base(message, inner)
18 | {
19 | }
20 |
21 | protected ImportException(SerializationInfo info, StreamingContext context)
22 | : base(info, context)
23 | {
24 | }
25 | }
--------------------------------------------------------------------------------
/src/ResXManager.Model/LanguageEventArgs.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Model;
2 |
3 | using System;
4 |
5 | public class LanguageEventArgs : EventArgs
6 | {
7 | public LanguageEventArgs(ResourceLanguage language)
8 | {
9 | Language = language;
10 | }
11 |
12 | public ResourceLanguage Language { get; }
13 | }
--------------------------------------------------------------------------------
/src/ResXManager.Model/PrefixFieldType.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Model;
2 |
3 | using System;
4 |
5 | using ResXManager.Model.Properties;
6 |
7 | [Flags]
8 | public enum PrefixFieldType
9 | {
10 | ///
11 | /// Apply translation prefix to the value
12 | ///
13 | [LocalizedDisplayName(StringResourceKey.PrefixFieldTypeValue)]
14 | Value = 1,
15 | ///
16 | /// Apply translation prefix to comment of neutral language
17 | ///
18 | [LocalizedDisplayName(StringResourceKey.PrefixFieldTypeComment)]
19 | Comment = 2,
20 | ///
21 | /// Apply translation prefix to comment of target language
22 | ///
23 | [LocalizedDisplayName(StringResourceKey.PrefixFieldTypeTargetComment)]
24 | TargetComment = 4,
25 | }
26 |
27 | public static class ExtensionMethods
28 | {
29 | public static bool IsFlagSet(this PrefixFieldType target, PrefixFieldType flag)
30 | {
31 | return (target & flag) != 0;
32 | }
33 |
34 | public static PrefixFieldType WithFlag(this PrefixFieldType target, PrefixFieldType flag, bool value)
35 | {
36 | return value ? target | flag : target & ~flag;
37 | }
38 | }
--------------------------------------------------------------------------------
/src/ResXManager.Model/ProjectFileEventArgs.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Model;
2 |
3 | using System;
4 |
5 | public class ProjectFileEventArgs : EventArgs
6 | {
7 | public ProjectFileEventArgs(ResourceLanguage language, ProjectFile projectFile)
8 | {
9 | Language = language;
10 | ProjectFile = projectFile;
11 | }
12 |
13 | public ResourceLanguage Language { get; }
14 |
15 | public ProjectFile ProjectFile { get; }
16 | }
--------------------------------------------------------------------------------
/src/ResXManager.Model/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Resources;
2 | using System.Runtime.CompilerServices;
3 |
4 | [assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.MainAssembly)]
5 | [assembly: InternalsVisibleTo("ResXManager.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100fbfea61559d9676195b8373508daa5755fc71550caf26ae58032ea57c651e9a97b09ab548aeb7bbb311a1df8fb57283323f9ea09aaa6751b5ac0ae5232684296ebc433ebb08e6c935ef9dd5463ce2e741748aaa8175c54fb2d7454926b35bd739f40797fae6a8c2a520a5cd77993b163b5c6ff37f70dc3ec2ae2905f2e4776dc")]
6 |
7 | namespace ResXManager.Model.Properties;
8 |
9 | public static class AssemblyKey
10 | {
11 | }
--------------------------------------------------------------------------------
/src/ResXManager.Model/Properties/Resources.Designer.tt:
--------------------------------------------------------------------------------
1 | <#@ template debug="false" hostspecific="true" language="C#" #>
2 | <#@ include file="$(SolutionDir)Resources.Designer.t4" #>
--------------------------------------------------------------------------------
/src/ResXManager.Model/ResXManager.Model.csproj.DotSettings:
--------------------------------------------------------------------------------
1 |
2 | Yes
--------------------------------------------------------------------------------
/src/ResXManager.Model/ResourceBeginEditingEventArgs.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Model;
2 |
3 | using System.ComponentModel;
4 |
5 | using ResXManager.Infrastructure;
6 |
7 | ///
8 | /// Provides data for the event.
9 | ///
10 | public class ResourceBeginEditingEventArgs : CancelEventArgs
11 | {
12 | public ResourceBeginEditingEventArgs(ResourceEntity entity, CultureKey? cultureKey)
13 | {
14 | Entity = entity;
15 | CultureKey = cultureKey;
16 | }
17 |
18 | public CultureKey? CultureKey { get; }
19 |
20 | public ResourceEntity Entity { get; }
21 | }
--------------------------------------------------------------------------------
/src/ResXManager.Model/ResourceData.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Model;
2 |
3 | public class ResourceData
4 | {
5 | public string? Text
6 | {
7 | get;
8 | set;
9 | }
10 |
11 | public string? Comment
12 | {
13 | get;
14 | set;
15 | }
16 | }
--------------------------------------------------------------------------------
/src/ResXManager.Model/ResourceNode.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Model;
2 |
3 | public class ResourceNode
4 | {
5 | public ResourceNode(string key, string? text, string? comment)
6 | {
7 | Text = text;
8 | Comment = comment;
9 | Key = key;
10 | }
11 |
12 | public string Key { get; }
13 | public string? Text { get; }
14 | public string? Comment { get; }
15 | }
--------------------------------------------------------------------------------
/src/ResXManager.Model/ResourceTableEntryEventArgs.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Model;
2 |
3 | using System;
4 |
5 | public sealed class ResourceTableEntryEventArgs : EventArgs
6 | {
7 | public ResourceTableEntryEventArgs(ResourceTableEntry entry)
8 | {
9 | Entry = entry;
10 | }
11 |
12 | public ResourceTableEntry Entry { get; }
13 | }
--------------------------------------------------------------------------------
/src/ResXManager.Model/ResourceTableEntryRulePunctuationLead.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Model;
2 |
3 | using System.Collections.Generic;
4 |
5 | using ResXManager.Model.Properties;
6 | using TomsToolbox.Essentials;
7 |
8 | [LocalizedDisplayName(StringResourceKey.ResourceTableEntryRulePunctuationLead_Name)]
9 | [LocalizedDescription(StringResourceKey.ResourceTableEntryRulePunctuationLead_Description)]
10 | public sealed class ResourceTableEntryRulePunctuationLead : ResourceTableEntryRulePunctuation
11 | {
12 | public const string Id = "PunctuationLead";
13 |
14 | public override string RuleId => Id;
15 |
16 | protected override IEnumerable GetCharIterator(string value) => value;
17 |
18 | protected override string GetErrorMessage(string reference)
19 | {
20 | var intro = Resources.ResourceTableEntryRulePunctuationLead_Error_Intro;
21 | if (reference.IsNullOrEmpty())
22 | return intro + " " + Resources.ResourceTableEntryRulePunctuationLead_Error_NoPunctuationExpected;
23 |
24 | return intro + " " + string.Format(Resources.Culture,
25 | Resources.ResourceTableEntryRulePunctuationLead_Error_PunctuationSeqExpected,
26 | reference);
27 | }
28 | }
--------------------------------------------------------------------------------
/src/ResXManager.Model/ResourceTableEntryRuleWhiteSpaceLead.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Model;
2 |
3 | using System.Collections.Generic;
4 | using System.Linq;
5 |
6 | using ResXManager.Model.Properties;
7 | using TomsToolbox.Essentials;
8 |
9 | [LocalizedDisplayName(StringResourceKey.ResourceTableEntryRuleWhiteSpaceLead_Name)]
10 | [LocalizedDescription(StringResourceKey.ResourceTableEntryRuleWhiteSpaceLead_Description)]
11 | public sealed class ResourceTableEntryRuleWhiteSpaceLead : ResourceTableEntryRuleWhiteSpace
12 | {
13 | public const string Id = "WhiteSpaceLead";
14 |
15 | public override string RuleId => Id;
16 |
17 | protected override IEnumerable GetCharIterator(string? value) => value ?? Enumerable.Empty();
18 |
19 | protected override string GetErrorMessage(IEnumerable reference)
20 | {
21 | var whiteSpaceSeq = string.Join("][", reference);
22 |
23 | var intro = Resources.ResourceTableEntryRuleWhiteSpaceLead_Error_Intro;
24 | if (whiteSpaceSeq.IsNullOrEmpty())
25 | return intro + " " + Resources.ResourceTableEntryRuleWhiteSpaceLead_Error_NoWhiteSpaceExpected;
26 |
27 | whiteSpaceSeq = "[" + whiteSpaceSeq + "]";
28 | return intro + " " + string.Format(Resources.Culture,
29 | Resources.ResourceTableEntryRuleWhiteSpaceLead_Error_WhiteSpaceSeqExpected,
30 | whiteSpaceSeq);
31 | }
32 | }
--------------------------------------------------------------------------------
/src/ResXManager.Model/ResourceTableEntryRuleWhiteSpaceTail.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Model;
2 |
3 | using System.Collections.Generic;
4 | using System.Linq;
5 |
6 | using ResXManager.Model.Properties;
7 | using TomsToolbox.Essentials;
8 |
9 | [LocalizedDisplayName(StringResourceKey.ResourceTableEntryRuleWhiteSpaceTail_Name)]
10 | [LocalizedDescription(StringResourceKey.ResourceTableEntryRuleWhiteSpaceTail_Description)]
11 | public sealed class ResourceTableEntryRuleWhiteSpaceTail : ResourceTableEntryRuleWhiteSpace
12 | {
13 | public const string Id = "WhiteSpaceTail";
14 |
15 | public override string RuleId => Id;
16 |
17 | protected override IEnumerable GetCharIterator(string? value) => value?.Reverse() ?? Enumerable.Empty();
18 |
19 | protected override string GetErrorMessage(IEnumerable reference)
20 | {
21 | var whiteSpaceSeq = string.Join("][", reference.Reverse());
22 |
23 | var intro = Resources.ResourceTableEntryRuleWhiteSpaceTail_Error_Intro;
24 | if (whiteSpaceSeq.IsNullOrEmpty())
25 | return intro + " " + Resources.ResourceTableEntryRuleWhiteSpaceTail_Error_NoWhiteSpaceExpected;
26 |
27 | whiteSpaceSeq = "[" + whiteSpaceSeq + "]";
28 | return intro + " " + string.Format(Resources.Culture,
29 | Resources.ResourceTableEntryRuleWhiteSpaceTail_Error_WhiteSpaceSeqExpected,
30 | whiteSpaceSeq);
31 | }
32 | }
--------------------------------------------------------------------------------
/src/ResXManager.Model/TranslationState.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Model;
2 |
3 | public enum TranslationState
4 | {
5 | New,
6 | NeedsReview,
7 | Approved
8 | }
--------------------------------------------------------------------------------
/src/ResXManager.Package/Images/LockScreenLogo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.Package/Images/LockScreenLogo.scale-200.png
--------------------------------------------------------------------------------
/src/ResXManager.Package/Images/SplashScreen.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.Package/Images/SplashScreen.scale-200.png
--------------------------------------------------------------------------------
/src/ResXManager.Package/Images/Square150x150Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.Package/Images/Square150x150Logo.scale-200.png
--------------------------------------------------------------------------------
/src/ResXManager.Package/Images/Square44x44Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.Package/Images/Square44x44Logo.scale-200.png
--------------------------------------------------------------------------------
/src/ResXManager.Package/Images/Square44x44Logo.targetsize-24_altform-unplated.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.Package/Images/Square44x44Logo.targetsize-24_altform-unplated.png
--------------------------------------------------------------------------------
/src/ResXManager.Package/Images/StoreLogo.scale-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.Package/Images/StoreLogo.scale-100.png
--------------------------------------------------------------------------------
/src/ResXManager.Package/Images/StoreLogo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.Package/Images/StoreLogo.scale-200.png
--------------------------------------------------------------------------------
/src/ResXManager.Package/Images/Wide310x150Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.Package/Images/Wide310x150Logo.scale-200.png
--------------------------------------------------------------------------------
/src/ResXManager.Scripting/ConsoleTracer.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Scripting;
2 |
3 | using System;
4 | using System.Composition;
5 |
6 | using ResXManager.Infrastructure;
7 |
8 | [Export(typeof(ITracer)), Shared]
9 | internal sealed class ConsoleTracer : ITracer
10 | {
11 | public void TraceError(string value)
12 | {
13 | WriteLine("Error: " + value);
14 | }
15 |
16 | public void TraceWarning(string value)
17 | {
18 | WriteLine("Warning: " + value);
19 | }
20 |
21 | public void WriteLine(string value)
22 | {
23 | Console.WriteLine(value);
24 | }
25 | }
--------------------------------------------------------------------------------
/src/ResXManager.Scripting/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/ResXManager.Scripting/SourceFilesProvider.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Scripting;
2 |
3 | using System;
4 | using System.Collections.Generic;
5 | using System.IO;
6 | using System.Text.RegularExpressions;
7 |
8 | using ResXManager.Infrastructure;
9 | using ResXManager.Model;
10 |
11 | using TomsToolbox.Essentials;
12 |
13 | internal sealed class SourceFilesProvider : IFileFilter
14 | {
15 | private readonly Regex? _fileExclusionFilter;
16 | private readonly string? _folder;
17 |
18 | public SourceFilesProvider(string? folder, string? exclusionFilter)
19 | {
20 | _folder = folder;
21 | _fileExclusionFilter = exclusionFilter.TryCreateRegex();
22 | }
23 |
24 | public IList EnumerateSourceFiles()
25 | {
26 | if (_folder.IsNullOrEmpty())
27 | return Array.Empty();
28 |
29 |
30 | return new DirectoryInfo(_folder).GetAllSourceFiles(this, null);
31 | }
32 |
33 | public bool IsSourceFile(ProjectFile file)
34 | {
35 | return false;
36 | }
37 |
38 | public bool IncludeFile(ProjectFile file)
39 | {
40 | return _fileExclusionFilter?.IsMatch(file.RelativeFilePath) != true;
41 | }
42 | }
--------------------------------------------------------------------------------
/src/ResXManager.Tests/Model/EntryChangeExtensionTests.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Tests.Model;
2 |
3 | using ResXManager.Model;
4 |
5 | using Xunit;
6 |
7 | public class EntryChangeExtensionTests
8 | {
9 | [Theory]
10 | [InlineData("a", "b", true)]
11 | [InlineData("abc", "abc", false)]
12 | [InlineData(null, "b", true)]
13 | [InlineData(null, "", false)]
14 | [InlineData("", "", false)]
15 | [InlineData("", null, false)]
16 | public void IsModifiedWorks(string? left, string? right, bool expected)
17 | {
18 | var result = EntryChangeExtensions.IsModified(left, right);
19 |
20 | Assert.Equal(expected, result);
21 | }
22 | }
--------------------------------------------------------------------------------
/src/ResXManager.Tests/Model/TranslatorTests.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Tests.Model;
2 |
3 | using System;
4 |
5 | using Xunit;
6 |
7 | public class TranslatorTests
8 | {
9 | [Fact]
10 | public void GoogleLiteParsesFragmentedResponseCorrectly()
11 | {
12 | const string input = """
13 | [[["Ei! ","Hey there! ",null,null,10],["Como tá indo? ","How's it going? ",null,null,10],["Isso é ótimo! ","That's great! ",null,null,10],["K, tchau","K, bye",null,null,3,null,null,[[]],[[["66379e56ded86dd057796dbeaebad517","en_pt_2023q1.md"]]]]],null,"en",null,null,null,null,[]]
14 | """;
15 |
16 | var result = Translators.GoogleTranslatorLite.ParseResponse(input);
17 |
18 | Assert.Equal("Ei! Como tá indo? Isso é ótimo! K, tchau", result);
19 | }
20 |
21 | [Fact]
22 | public void GoogleLiteParsesInvalidResponseCorrectly()
23 | {
24 | const string input = $$"""
25 | {"x":[["Ei! "]]}
26 | """;
27 |
28 | var result = Translators.GoogleTranslatorLite.ParseResponse(input);
29 |
30 | Assert.Equal("", result);
31 | }
32 |
33 | [Fact]
34 | public void GoogleLiteThrowsOnBadJson()
35 | {
36 | const string input = $$"""
37 | {"x":Ei!"]]}
38 | """;
39 |
40 | Assert.ThrowsAny(() => Translators.GoogleTranslatorLite.ParseResponse(input));
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/ResXManager.Tests/Model/XlfExtensionsTests.The_SetNoteValue_Method.Correctly_Handles_Setting_Notes_To_Null_Value.verified.txt:
--------------------------------------------------------------------------------
1 |
2 | Last time I did something fun
3 | De laatste keer dat ik iets leuks deed
4 |
--------------------------------------------------------------------------------
/src/ResXManager.Tests/Model/XlfExtensionsTests.The_SetNoteValue_Method.Correctly_Handles_Setting_Notes_To_Valid_Value.verified.txt:
--------------------------------------------------------------------------------
1 |
2 | Last time I did something fun
3 | De laatste keer dat ik iets leuks deed
4 | test2
5 | test1
6 |
--------------------------------------------------------------------------------
/src/ResXManager.Tests/Resources/Files/GH0666/MyProject.de.xlf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
9 |
10 | Last time I did something fun
11 | De laatste keer dat ik iets leuks deed
12 | Choice will be shown after this, don't use \n in this one
13 |
14 |
15 | Continue to\nnext item
16 | Continue to\nnext item
17 | \n = new line
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/ResXManager.Tests/Resources/Files/GH0666/MyProject.fr.xlf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
9 |
10 | Last time I did something fun
11 | De laatste keer dat ik iets leuks deed
12 | Choice will be shown after this, don't use \n in this one
13 |
14 |
15 | Continue to\nnext item
16 | Continue to\nnext item
17 | \n = new line
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/ResXManager.Tests/Resources/Files/GH0666/MyProject.nl.xlf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
9 |
10 | Last time I did something fun
11 | De laatste keer dat ik iets leuks deed
12 | Choice will be shown after this, don't use \n in this one
13 |
14 |
15 | Continue to\nnext item
16 | Continue to\nnext item
17 | \n = new line
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/ResXManager.Translators/AzureOpenAITranslatorConfiguration.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Translators;
2 |
3 | using TomsToolbox.Wpf.Composition.AttributedModel;
4 |
5 | ///
6 | /// Interaction logic for AzureOpenAITranslatorConfiguration.xaml
7 | ///
8 | [DataTemplate(typeof(AzureOpenAITranslator))]
9 | public partial class AzureOpenAITranslatorConfiguration
10 | {
11 | public AzureOpenAITranslatorConfiguration()
12 | {
13 | InitializeComponent();
14 | }
15 | }
--------------------------------------------------------------------------------
/src/ResXManager.Translators/AzureTranslationResponse.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Translators;
2 |
3 | using System.Collections.Generic;
4 |
5 | #pragma warning disable CA2227 // Collection properties should be read only => serialized DTOs!
6 | #pragma warning disable CA1002 // Do not expose generic lists => serialized DTOs!
7 |
8 | public class AzureTranslationResponse
9 | {
10 | public List? Translations { get; set; }
11 | }
12 |
13 | public class AzureDetectedLanguage
14 | {
15 | public string? Language { get; set; }
16 |
17 | public int Score { get; set; }
18 | }
19 |
20 | public class Translation
21 | {
22 | public string? Text { get; set; }
23 |
24 | public string? To { get; set; }
25 | }
--------------------------------------------------------------------------------
/src/ResXManager.Translators/AzureTranslatorConfiguration.xaml:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/ResXManager.Translators/AzureTranslatorConfiguration.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Translators;
2 |
3 | using TomsToolbox.Wpf.Composition.AttributedModel;
4 |
5 | ///
6 | /// Interaction logic for AzureTranslatorConfiguration.xaml
7 | ///
8 | [DataTemplate(typeof(AzureTranslator))]
9 | public partial class AzureTranslatorConfiguration
10 | {
11 | public AzureTranslatorConfiguration()
12 | {
13 | InitializeComponent();
14 | }
15 | }
--------------------------------------------------------------------------------
/src/ResXManager.Translators/CredentialItem.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Translators;
2 |
3 | using System.ComponentModel;
4 |
5 | using ResXManager.Infrastructure;
6 |
7 | public class CredentialItem : ICredentialItem
8 | {
9 | public CredentialItem(string key, string description, bool isPassword = true)
10 | {
11 | Key = key;
12 | Description = description;
13 | IsPassword = isPassword;
14 | }
15 |
16 | public string Key { get; }
17 |
18 | public string Description { get; }
19 |
20 | public string? Value { get; set; }
21 |
22 | public bool IsPassword { get; }
23 |
24 | #pragma warning disable CS0067
25 | public event PropertyChangedEventHandler? PropertyChanged;
26 | #pragma warning restore CS0067
27 | }
--------------------------------------------------------------------------------
/src/ResXManager.Translators/FodyWeavers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/ResXManager.Translators/OpenAITranslatorConfiguration.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Translators;
2 |
3 | using TomsToolbox.Wpf.Composition.AttributedModel;
4 |
5 | ///
6 | /// Interaction logic for OpenAITranslatorConfiguration.xaml
7 | ///
8 | [DataTemplate(typeof(OpenAITranslator))]
9 | public partial class OpenAITranslatorConfiguration
10 | {
11 | public OpenAITranslatorConfiguration()
12 | {
13 | InitializeComponent();
14 | }
15 | }
--------------------------------------------------------------------------------
/src/ResXManager.Translators/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Translators.Properties;
2 |
3 | public static class AssemblyKey
4 | {
5 | }
--------------------------------------------------------------------------------
/src/ResXManager.Translators/Properties/Resources.Designer.tt:
--------------------------------------------------------------------------------
1 | <#@ template debug="false" hostspecific="true" language="C#" #>
2 | <#@ include file="$(SolutionDir)Resources.Designer.t4" #>
--------------------------------------------------------------------------------
/src/ResXManager.Translators/ResXManager.Translators.csproj.DotSettings:
--------------------------------------------------------------------------------
1 |
2 | Yes
3 | True
--------------------------------------------------------------------------------
/src/ResXManager.Translators/TranslationMatch.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Translators;
2 |
3 | using System.Collections.Generic;
4 |
5 | using ResXManager.Infrastructure;
6 |
7 | using TomsToolbox.Essentials;
8 |
9 | public class TranslationMatch : ITranslationMatch
10 | {
11 | public TranslationMatch(ITranslator? translator, string? translatedText, double rating)
12 | {
13 | Translator = translator;
14 | TranslatedText = translatedText?.Trim().Trim('\0');
15 | Rating = rating;
16 | }
17 |
18 | public string? TranslatedText { get; }
19 |
20 | public ITranslator? Translator { get; }
21 |
22 | public double Rating { get; }
23 |
24 | public static readonly IEqualityComparer TextComparer = new DelegateEqualityComparer(m => m?.TranslatedText);
25 | }
--------------------------------------------------------------------------------
/src/ResXManager.VSIX.Compatibility.Shared/CustomToolRunner.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.VSIX;
2 |
3 | using System;
4 | using System.Collections.Generic;
5 | using System.Composition;
6 |
7 | using Throttle;
8 |
9 | using TomsToolbox.Essentials;
10 | using TomsToolbox.Wpf;
11 |
12 | using static Microsoft.VisualStudio.Shell.ThreadHelper;
13 |
14 | #pragma warning disable VSTHRD010 // Accessing ... should only be done on the main thread.
15 |
16 | ///
17 | /// Runs a project items custom tool only once, even if it gets triggered multiple times during change.
18 | ///
19 | [Shared, Export(typeof(ICustomToolRunner))]
20 | internal sealed class CustomToolRunner : IDisposable, ICustomToolRunner
21 | {
22 | private HashSet _projectItems = new();
23 |
24 | public void Enqueue(IEnumerable? projectItems)
25 | {
26 | if (projectItems == null)
27 | return;
28 |
29 | _projectItems.AddRange(projectItems);
30 |
31 | RunCustomTool();
32 | }
33 |
34 | [Throttled(typeof(DispatcherThrottle))]
35 | private void RunCustomTool()
36 | {
37 | ThrowIfNotOnUIThread();
38 |
39 | _projectItems.ForEach(projectItem => projectItem.RunCustomTool());
40 | _projectItems = new HashSet();
41 | }
42 |
43 | public void Dispose()
44 | {
45 | RunCustomTool();
46 | }
47 | }
--------------------------------------------------------------------------------
/src/ResXManager.VSIX.Compatibility.Shared/ICustomToolRunner.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.VSIX;
2 |
3 | using System;
4 | using System.Collections.Generic;
5 |
6 | public interface ICustomToolRunner : IDisposable
7 | {
8 | void Enqueue(IEnumerable? projectItems);
9 | }
--------------------------------------------------------------------------------
/src/ResXManager.VSIX.Compatibility.Shared/ResXManager.VSIX.Compatibility.Shared.shproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | cc3f887f-9602-43f4-aa73-7557b7c6ab1d
5 | 14.0
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/ResXManager.VSIX.Compatibility.x64/FodyWeavers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/src/ResXManager.VSIX.Compatibility.x64/ResXManager.VSIX.Compatibility.x64.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | net472
4 | true
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/ResXManager.VSIX.Compatibility.x86/FodyWeavers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/src/ResXManager.VSIX.Compatibility.x86/ResXManager.VSIX.Compatibility.x86.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | net472
4 | true
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/ResXManager.VSIX.Compatibility/CodeGenerator.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.VSIX.Compatibility;
2 |
3 | using ResXManager.VSIX.Compatibility.Properties;
4 |
5 | using TomsToolbox.Essentials;
6 |
7 | public enum CodeGenerator
8 | {
9 | [Text(@"Icon", "")]
10 | None,
11 |
12 | [LocalizedDescription(StringResourceKey.CodeGenerator_Unkown)]
13 | [Text(@"Icon", @"pack://application:,,,/ResXManager.VSIX;component/Assets/Unknown.png")]
14 | Unknown,
15 |
16 | [LocalizedDescription(StringResourceKey.CodeGenerator_Internal)]
17 | [Text(@"Icon", @"pack://application:,,,/ResXManager.VSIX;component/Assets/PrivateTool.png")]
18 | ResXFileCodeGenerator,
19 |
20 | [LocalizedDescription(StringResourceKey.CodeGenerator_Public)]
21 | [Text(@"Icon", @"pack://application:,,,/ResXManager.VSIX;component/Assets/PublicTool.png")]
22 | PublicResXFileCodeGenerator,
23 |
24 | [LocalizedDescription(StringResourceKey.CodeGenerator_TextTemplate)]
25 | [Text(@"Icon", @"pack://application:,,,/ResXManager.VSIX;component/Assets/TextTemplate.png")]
26 | TextTemplate,
27 |
28 | [LocalizedDescription(StringResourceKey.CodeGenerator_WinForms)]
29 | [Text(@"Icon", @"pack://application:,,,/ResXManager.VSIX;component/Assets/WinForms.png")]
30 | WinForms,
31 | }
--------------------------------------------------------------------------------
/src/ResXManager.VSIX.Compatibility/FodyWeavers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/src/ResXManager.VSIX.Compatibility/IDteConfiguration.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.VSIX.Compatibility;
2 |
3 | using Microsoft.VisualStudio.Shell;
4 |
5 | using ResXManager.Model;
6 |
7 | public interface IDteConfiguration : IConfiguration
8 | {
9 | TaskErrorCategory TaskErrorCategory { get; set; }
10 |
11 | bool ShowErrorsInErrorList { get; set; }
12 |
13 | MoveToResourceConfiguration MoveToResources { get; }
14 | }
--------------------------------------------------------------------------------
/src/ResXManager.VSIX.Compatibility/IDteProjectFile.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.VSIX.Compatibility;
2 |
3 | public interface IDteProjectFile
4 | {
5 | CodeGenerator CodeGenerator { get; set; }
6 | }
--------------------------------------------------------------------------------
/src/ResXManager.VSIX.Compatibility/IMoveToResourceViewModel.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.VSIX.Compatibility;
2 |
3 | using ResXManager.Model;
4 |
5 | public interface IMoveToResourceViewModel
6 | {
7 | string? Key { get; }
8 |
9 | bool ReuseExisting { get; }
10 |
11 | ResourceEntity? SelectedResourceEntity { get; }
12 |
13 | ResourceTableEntry? SelectedResourceEntry { get; set; }
14 |
15 | string? Value { get; }
16 |
17 | string? Comment { get; }
18 |
19 | string? ReplacementValue { get; }
20 | }
--------------------------------------------------------------------------------
/src/ResXManager.VSIX.Compatibility/IRefactorings.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.VSIX.Compatibility;
2 |
3 | using System.Threading.Tasks;
4 |
5 | using ResXManager.Model;
6 |
7 | public interface IRefactorings
8 | {
9 | bool CanMoveToResource();
10 |
11 | Task MoveToResourceAsync();
12 | }
--------------------------------------------------------------------------------
/src/ResXManager.VSIX.Compatibility/IVsixCompatibility.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.VSIX.Compatibility;
2 |
3 | using System.Collections.Generic;
4 | using System.Threading.Tasks;
5 | using System.Windows;
6 |
7 | using ResXManager.Model;
8 |
9 | public interface IVsixCompatibility
10 | {
11 | Task> GetSelectedFilesAsync();
12 |
13 | bool ContainsChildOfWinFormsDesignerItem(ResourceEntity entity, string? fileName);
14 |
15 | void RunCustomTool(IEnumerable entities, string fileName);
16 |
17 | void RunCustomTool(ResourceEntity entity);
18 |
19 | Task AffectsResourceFileAsync(string? fileName);
20 |
21 | void SetFontSize(DependencyObject view);
22 |
23 | string EvaluateMoveToResourcePattern(
24 | string pattern,
25 | string text,
26 | string? key,
27 | bool reuseExisting,
28 | ResourceEntity? selectedResourceEntity,
29 | ResourceTableEntry? selectedResourceEntry);
30 |
31 | bool ActivateAlreadyOpenEditor(IEnumerable languages);
32 |
33 | void AddProjectItems(ResourceEntity entity, ResourceLanguage neutralLanguage, string languageFileName);
34 | }
35 |
--------------------------------------------------------------------------------
/src/ResXManager.VSIX.Compatibility/IVsixShellViewModel.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.VSIX.Compatibility;
2 |
3 | using System.Collections.Generic;
4 |
5 | using ResXManager.Model;
6 |
7 | public interface IVsixShellViewModel
8 | {
9 | void SelectEntry(ResourceTableEntry entry);
10 |
11 | IMoveToResourceViewModel CreateMoveToResourceViewModel(ICollection patterns,
12 | ICollection resourceEntities, string text, string extension, string? className,
13 | string? functionName, string fileName);
14 | }
--------------------------------------------------------------------------------
/src/ResXManager.VSIX.Compatibility/ItemKind.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.VSIX.Compatibility;
2 |
3 | using System.Globalization;
4 |
5 | using Microsoft.VisualStudio;
6 |
7 | public static class ItemKind
8 | {
9 | public const string CSharpProject = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}";
10 | public const string SolutionFolder = "{66A26720-8FB5-11D2-AA7E-00C04F688DDE}";
11 | public const string SolutionFile = "{66A26722-8FB5-11D2-AA7E-00C04F688DDE}";
12 | public static readonly string PhysicalFile = VSConstants.GUID_ItemType_PhysicalFile.ToString("B", CultureInfo.InvariantCulture);
13 | }
--------------------------------------------------------------------------------
/src/ResXManager.VSIX.Compatibility/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.VSIX.Compatibility.Properties;
2 |
3 | public static class AssemblyKey
4 | {
5 | }
--------------------------------------------------------------------------------
/src/ResXManager.VSIX.Compatibility/Properties/Resources.Designer.tt:
--------------------------------------------------------------------------------
1 | <#@ template debug="false" hostspecific="true" language="C#" #>
2 | <#@ include file="$(SolutionDir)Resources.Designer.t4" #>
--------------------------------------------------------------------------------
/src/ResXManager.VSIX.Compatibility/ResXManager.VSIX.Compatibility.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | net472
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/ResXManager.VSIX.Compatibility/Resources/Resources.Designer.tt:
--------------------------------------------------------------------------------
1 | <#@ template debug="false" hostspecific="true" language="C#" #>
2 | <#@ include file="$(SolutionDir)Resources.Designer.t4" #>
--------------------------------------------------------------------------------
/src/ResXManager.VSIX/200x200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.VSIX/200x200.png
--------------------------------------------------------------------------------
/src/ResXManager.VSIX/32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.VSIX/32x32.png
--------------------------------------------------------------------------------
/src/ResXManager.VSIX/48x48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.VSIX/48x48.png
--------------------------------------------------------------------------------
/src/ResXManager.VSIX/64x64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.VSIX/64x64.png
--------------------------------------------------------------------------------
/src/ResXManager.VSIX/96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.VSIX/96x96.png
--------------------------------------------------------------------------------
/src/ResXManager.VSIX/Assets/PrivateTool.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.VSIX/Assets/PrivateTool.png
--------------------------------------------------------------------------------
/src/ResXManager.VSIX/Assets/PublicTool.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.VSIX/Assets/PublicTool.png
--------------------------------------------------------------------------------
/src/ResXManager.VSIX/Assets/TextTemplate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.VSIX/Assets/TextTemplate.png
--------------------------------------------------------------------------------
/src/ResXManager.VSIX/Assets/Unknown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.VSIX/Assets/Unknown.png
--------------------------------------------------------------------------------
/src/ResXManager.VSIX/Assets/WinForms.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.VSIX/Assets/WinForms.png
--------------------------------------------------------------------------------
/src/ResXManager.VSIX/Commands.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.VSIX;
2 |
3 | using System.Composition;
4 |
5 | using ResXManager.Infrastructure;
6 | using ResXManager.VSIX.Properties;
7 |
8 | using TomsToolbox.Essentials;
9 | using TomsToolbox.Wpf.Composition;
10 | using TomsToolbox.Wpf.Composition.AttributedModel;
11 |
12 | [Export, Shared]
13 | [VisualCompositionExport(RegionId.ProjectListContextMenu)]
14 | [LocalizedDisplayName(StringResourceKey.CodeGenerator_CommandGroup)]
15 | [Text(SubRegionIdKey, @"CodeGen")]
16 | public class CodeGeneratorGroupCommand : CommandSourceFactory
17 | {
18 | }
19 |
20 | [Export, Shared]
21 | [VisualCompositionExport(@"CodeGen")]
22 | [LocalizedDisplayName(StringResourceKey.CodeGenerator_CommandInternal)]
23 | [Text(IsCheckableKey, @"True")]
24 | public class ResXFileCodeGeneratorCommand : CommandSourceFactory
25 | {
26 | }
27 |
28 | [Export, Shared]
29 | [VisualCompositionExport(@"CodeGen")]
30 | [LocalizedDisplayName(StringResourceKey.CodeGenerator_CommandPublic)]
31 | [Text(IsCheckableKey, @"True")]
32 | public class PublicResXFileCodeGeneratorCommand : CommandSourceFactory
33 | {
34 | }
35 |
36 | [Export, Shared]
37 | [VisualCompositionExport(@"CodeGen")]
38 | [LocalizedDisplayName(StringResourceKey.CodeGenerator_CommandTextTemplate)]
39 | [Text(IsCheckableKey, @"True")]
40 | public class TextTemplateCodeGeneratorCommand : CommandSourceFactory
41 | {
42 | }
--------------------------------------------------------------------------------
/src/ResXManager.VSIX/FodyWeavers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/ResXManager.VSIX/Guids.cs:
--------------------------------------------------------------------------------
1 | // Guids.cs
2 | // MUST match guids.h
3 |
4 | // ReSharper disable InconsistentNaming
5 | namespace ResXManager.VSIX;
6 |
7 | using System;
8 |
9 | internal static class GuidList
10 | {
11 | public const string guidResXManager_VSIXPkgString = "43b35fe0-1f30-48de-887a-68256474202a";
12 | public const string guidResXManager_VSIXCmdSetString = "4beab5e4-da91-4600-bd36-53a67b206b19";
13 | public const string guidToolWindowPersistanceString = "79664857-03bf-4bca-aa54-ec998b3328f8";
14 |
15 | public static readonly Guid guidResXManager_VSIXCmdSet = new(guidResXManager_VSIXCmdSetString);
16 | }
--------------------------------------------------------------------------------
/src/ResXManager.VSIX/PkgCmdID.cs:
--------------------------------------------------------------------------------
1 | // PkgCmdID.cs
2 | // MUST match PkgCmdID.h
3 |
4 | // ReSharper disable InconsistentNaming
5 | namespace ResXManager.VSIX;
6 |
7 | internal static class PkgCmdIdList
8 | {
9 | public const int cmdidMyCommand = 0x100;
10 | public const int cmdidMyTool = 0x101;
11 | public const int cmdidMySolutionExplorerContextMenu = 0x102;
12 | public const int cmdidMyTextEditorContextMenu = 0x103;
13 | }
--------------------------------------------------------------------------------
/src/ResXManager.VSIX/Properties/Resources.Designer.tt:
--------------------------------------------------------------------------------
1 | <#@ template debug="false" hostspecific="true" language="C#" #>
2 | <#@ include file="$(SolutionDir)Resources.Designer.t4" #>
--------------------------------------------------------------------------------
/src/ResXManager.VSIX/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | False
7 |
8 |
9 | False
10 |
11 |
12 | False
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/ResXManager.VSIX/Properties/launchSettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "profiles": {
3 | "VS 2022 Preview": {
4 | "commandName": "Executable",
5 | "executablePath": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\Common7\\IDE\\devenv.exe",
6 | "commandLineArgs": "/RootSuffix Exp"
7 | },
8 | "VS 2019": {
9 | "commandName": "Executable",
10 | "executablePath": "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\Common7\\IDE\\devenv.exe",
11 | "commandLineArgs": "/RootSuffix Exp"
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/src/ResXManager.VSIX/Resources/Images_24bit.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.VSIX/Resources/Images_24bit.bmp
--------------------------------------------------------------------------------
/src/ResXManager.VSIX/ThemeResourceProvider.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.VSIX;
2 |
3 | using System.Composition;
4 | using System.Windows;
5 |
6 | using TomsToolbox.Essentials;
7 | using TomsToolbox.Wpf.Composition.Styles;
8 |
9 | [Export(typeof(IThemeResourceProvider))]
10 | internal sealed class ThemeResourceProvider : IThemeResourceProvider
11 | {
12 | public void LoadThemeResources(ResourceDictionary resource)
13 | {
14 | resource.MergedDictionaries.Insert(0, new ResourceDictionary { Source = GetType().Assembly.GeneratePackUri("Resources/VSColorScheme.xaml") });
15 | }
16 | }
--------------------------------------------------------------------------------
/src/ResXManager.VSIX/Visuals/CodeGeneratorView.xaml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
21 |
22 |
--------------------------------------------------------------------------------
/src/ResXManager.VSIX/Visuals/CodeGeneratorView.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.VSIX.Visuals;
2 |
3 | using System;
4 | using System.Composition;
5 |
6 | using ResXManager.Infrastructure;
7 |
8 | using TomsToolbox.Composition;
9 | using TomsToolbox.Wpf.Composition;
10 | using TomsToolbox.Wpf.Composition.AttributedModel;
11 |
12 | ///
13 | /// Interaction logic for CodeGeneratorView.xaml
14 | ///
15 | [VisualCompositionExport(RegionId.ProjectListItemDecorator)]
16 | public partial class CodeGeneratorView
17 | {
18 | [ImportingConstructor]
19 | public CodeGeneratorView(IExportProvider exportProvider)
20 | {
21 | try
22 | {
23 | this.SetExportProvider(exportProvider);
24 |
25 | InitializeComponent();
26 | }
27 | catch (Exception ex)
28 | {
29 | exportProvider.TraceXamlLoaderError(ex);
30 | }
31 | }
32 | }
--------------------------------------------------------------------------------
/src/ResXManager.VSIX/Visuals/MoveToResourceConfigurationView.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.VSIX.Visuals;
2 |
3 | using System;
4 | using System.Composition;
5 |
6 | using ResXManager.Infrastructure;
7 |
8 | using TomsToolbox.Composition;
9 | using TomsToolbox.Wpf.Composition;
10 | using TomsToolbox.Wpf.Composition.AttributedModel;
11 |
12 | ///
13 | /// Interaction logic for MoveToResourceConfigurationView.xaml
14 | ///
15 | [DataTemplate(typeof(MoveToResourceConfigurationViewModel))]
16 | public partial class MoveToResourceConfigurationView
17 | {
18 | [ImportingConstructor]
19 | public MoveToResourceConfigurationView(IExportProvider exportProvider)
20 | {
21 | try
22 | {
23 | this.SetExportProvider(exportProvider);
24 |
25 | InitializeComponent();
26 | }
27 | catch (Exception ex)
28 | {
29 | exportProvider.TraceXamlLoaderError(ex);
30 | }
31 | }
32 | }
--------------------------------------------------------------------------------
/src/ResXManager.VSIX/Visuals/MoveToResourceConfigurationViewModel.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.VSIX.Visuals;
2 |
3 | using System.ComponentModel;
4 | using System.Composition;
5 |
6 | using ResXManager.Infrastructure;
7 | using ResXManager.VSIX.Compatibility;
8 | using ResXManager.VSIX.Compatibility.Properties;
9 |
10 | using TomsToolbox.Wpf.Composition.AttributedModel;
11 |
12 | [LocalizedDisplayName(StringResourceKey.MoveToResource)]
13 | [VisualCompositionExport(RegionId.Configuration)]
14 | [Shared]
15 | internal sealed partial class MoveToResourceConfigurationViewModel : INotifyPropertyChanged
16 | {
17 | [ImportingConstructor]
18 | public MoveToResourceConfigurationViewModel(IDteConfiguration configuration)
19 | {
20 | Configuration = configuration;
21 | }
22 |
23 | public IDteConfiguration Configuration { get; }
24 | }
--------------------------------------------------------------------------------
/src/ResXManager.VSIX/Visuals/MoveToResourceView.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.VSIX.Visuals;
2 |
3 | using System;
4 | using System.Composition;
5 |
6 | using ResXManager.Infrastructure;
7 |
8 | using TomsToolbox.Composition;
9 | using TomsToolbox.Wpf.Composition;
10 | using TomsToolbox.Wpf.Composition.AttributedModel;
11 |
12 | ///
13 | /// Interaction logic for MoveToResourceView.xaml
14 | ///
15 | [DataTemplate(typeof(MoveToResourceViewModel))]
16 | public partial class MoveToResourceView
17 | {
18 | [ImportingConstructor]
19 | public MoveToResourceView(IExportProvider exportProvider)
20 | {
21 | try
22 | {
23 | this.SetExportProvider(exportProvider);
24 |
25 | InitializeComponent();
26 | }
27 | catch (Exception ex)
28 | {
29 | exportProvider.TraceXamlLoaderError(ex);
30 | }
31 | }
32 | }
--------------------------------------------------------------------------------
/src/ResXManager.VSIX/Visuals/ShowErrorsConfigurationView.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.VSIX.Visuals;
2 |
3 | using TomsToolbox.Wpf.Composition.AttributedModel;
4 |
5 | ///
6 | /// Interaction logic for ShowErrorsConfigurationView.xaml
7 | ///
8 | [DataTemplate(typeof(ShowErrorsConfigurationViewModel))]
9 | public partial class ShowErrorsConfigurationView
10 | {
11 | public ShowErrorsConfigurationView()
12 | {
13 | InitializeComponent();
14 | }
15 | }
--------------------------------------------------------------------------------
/src/ResXManager.VSIX/Visuals/ShowErrorsConfigurationViewModel.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.VSIX.Visuals;
2 |
3 | using System.Composition;
4 |
5 | using ResXManager.Infrastructure;
6 | using ResXManager.VSIX.Compatibility;
7 | using ResXManager.VSIX.Properties;
8 |
9 | using TomsToolbox.Wpf.Composition.AttributedModel;
10 |
11 | [LocalizedDisplayName(StringResourceKey.ShowErrorsConfiguration_Header)]
12 | [VisualCompositionExport(RegionId.Configuration)]
13 | [Shared]
14 | internal sealed class ShowErrorsConfigurationViewModel
15 | {
16 | [ImportingConstructor]
17 | public ShowErrorsConfigurationViewModel(IDteConfiguration configuration)
18 | {
19 | Configuration = configuration;
20 | }
21 |
22 | public IDteConfiguration Configuration { get; }
23 | }
--------------------------------------------------------------------------------
/src/ResXManager.View/Appearance.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.View;
2 |
3 | using System.Windows;
4 |
5 | public static class Appearance
6 | {
7 | public static readonly DependencyProperty TextFontSizeProperty =
8 | DependencyProperty.RegisterAttached("TextFontSize", typeof(double), typeof(Appearance), new FrameworkPropertyMetadata(12.0, FrameworkPropertyMetadataOptions.Inherits));
9 | }
--------------------------------------------------------------------------------
/src/ResXManager.View/Assets/add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Assets/add.png
--------------------------------------------------------------------------------
/src/ResXManager.View/Assets/addColumns.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Assets/addColumns.png
--------------------------------------------------------------------------------
/src/ResXManager.View/Assets/btn_donate_SM.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Assets/btn_donate_SM.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Assets/cellSelection.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Assets/cellSelection.png
--------------------------------------------------------------------------------
/src/ResXManager.View/Assets/columns.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Assets/columns.png
--------------------------------------------------------------------------------
/src/ResXManager.View/Assets/copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Assets/copy.png
--------------------------------------------------------------------------------
/src/ResXManager.View/Assets/cut.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Assets/cut.png
--------------------------------------------------------------------------------
/src/ResXManager.View/Assets/delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Assets/delete.png
--------------------------------------------------------------------------------
/src/ResXManager.View/Assets/errorFilter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Assets/errorFilter.png
--------------------------------------------------------------------------------
/src/ResXManager.View/Assets/excel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Assets/excel.png
--------------------------------------------------------------------------------
/src/ResXManager.View/Assets/flat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Assets/flat.png
--------------------------------------------------------------------------------
/src/ResXManager.View/Assets/grouped.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Assets/grouped.png
--------------------------------------------------------------------------------
/src/ResXManager.View/Assets/like.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Assets/like.png
--------------------------------------------------------------------------------
/src/ResXManager.View/Assets/paste.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Assets/paste.png
--------------------------------------------------------------------------------
/src/ResXManager.View/Assets/references.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Assets/references.png
--------------------------------------------------------------------------------
/src/ResXManager.View/Assets/refresh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Assets/refresh.png
--------------------------------------------------------------------------------
/src/ResXManager.View/Assets/save.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Assets/save.png
--------------------------------------------------------------------------------
/src/ResXManager.View/Assets/snapshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Assets/snapshot.png
--------------------------------------------------------------------------------
/src/ResXManager.View/Assets/trim.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Assets/trim.png
--------------------------------------------------------------------------------
/src/ResXManager.View/Assets/wrap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Assets/wrap.png
--------------------------------------------------------------------------------
/src/ResXManager.View/ColumnHeaders/ColumnHeader.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.View.ColumnHeaders;
2 |
3 | using System.Windows.Controls;
4 |
5 | public class ColumnHeader : ContentControl, IColumnHeader
6 | {
7 | public ColumnHeader(object? content, ColumnType columnType)
8 | {
9 | Content = content;
10 | ColumnType = columnType;
11 | Focusable = false;
12 | }
13 |
14 | public ColumnType ColumnType
15 | {
16 | get;
17 | }
18 | }
--------------------------------------------------------------------------------
/src/ResXManager.View/ColumnHeaders/CommentHeader.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.View.ColumnHeaders;
2 |
3 | using ResXManager.Infrastructure;
4 | using ResXManager.Model;
5 | using ResXManager.View.Properties;
6 |
7 | public class CommentHeader : LanguageColumnHeaderBase
8 | {
9 | public CommentHeader(IConfiguration configuration, CultureKey cultureKey)
10 | : base(configuration, cultureKey)
11 | {
12 | }
13 |
14 | public override ColumnType ColumnType => ColumnType.Comment;
15 |
16 | public override string ToString()
17 | {
18 | return Resources.Comment;
19 | }
20 | }
--------------------------------------------------------------------------------
/src/ResXManager.View/ColumnHeaders/IColumnHeader.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.View.ColumnHeaders;
2 |
3 | using System.Globalization;
4 |
5 | using ResXManager.Infrastructure;
6 |
7 | public enum ColumnType
8 | {
9 | Other,
10 | Key,
11 | Comment,
12 | Language
13 | }
14 |
15 | public interface IColumnHeader
16 | {
17 | ColumnType ColumnType
18 | {
19 | get;
20 | }
21 | }
22 |
23 | public interface ILanguageColumnHeader : IColumnHeader
24 | {
25 | CultureKey CultureKey
26 | {
27 | get;
28 | }
29 |
30 | CultureInfo EffectiveCulture
31 | {
32 | get;
33 | }
34 | }
--------------------------------------------------------------------------------
/src/ResXManager.View/ColumnHeaders/LanguageColumnHeaderBase.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.View.ColumnHeaders;
2 |
3 | using System.ComponentModel;
4 | using System.Globalization;
5 |
6 | using ResXManager.Infrastructure;
7 | using ResXManager.Model;
8 |
9 | public abstract partial class LanguageColumnHeaderBase : INotifyPropertyChanged, ILanguageColumnHeader
10 | {
11 | private readonly IConfiguration _configuration;
12 |
13 | protected LanguageColumnHeaderBase(IConfiguration configuration, CultureKey cultureKey)
14 | {
15 | _configuration = configuration;
16 | CultureKey = cultureKey;
17 | }
18 |
19 | public CultureKey CultureKey { get; }
20 |
21 | public CultureInfo EffectiveCulture => CultureKey.Culture ?? _configuration.NeutralResourcesLanguage;
22 |
23 | public abstract ColumnType ColumnType { get; }
24 | }
--------------------------------------------------------------------------------
/src/ResXManager.View/ColumnHeaders/LanguageHeader.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.View.ColumnHeaders;
2 |
3 | using System.Globalization;
4 |
5 | using ResXManager.Infrastructure;
6 | using ResXManager.Model;
7 | using ResXManager.View.Properties;
8 |
9 | public class LanguageHeader : LanguageColumnHeaderBase
10 | {
11 | public LanguageHeader(IConfiguration configuration, CultureKey cultureKey)
12 | : base(configuration, cultureKey)
13 | {
14 | }
15 |
16 | public string DisplayName
17 | {
18 | get
19 | {
20 | var cultureInfo = CultureKey.Culture;
21 |
22 | if (cultureInfo == null)
23 | return Resources.Neutral;
24 |
25 | return string.Format(CultureInfo.CurrentCulture, "{0} [{1}]", cultureInfo.DisplayName, cultureInfo);
26 | }
27 | }
28 |
29 | public override ColumnType ColumnType => ColumnType.Language;
30 |
31 | public override string ToString()
32 | {
33 | return DisplayName;
34 | }
35 | }
--------------------------------------------------------------------------------
/src/ResXManager.View/Converters/CultureToXmlLanguageConverter.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.View.Converters;
2 |
3 | using System;
4 | using System.Globalization;
5 | using System.Windows.Data;
6 | using System.Windows.Markup;
7 |
8 | public class CultureToXmlLanguageConverter : IValueConverter
9 | {
10 | public static readonly IValueConverter Default = new CultureToXmlLanguageConverter();
11 |
12 | public object? Convert(object? value, Type? targetType, object? parameter, CultureInfo? culture)
13 | {
14 | return value is CultureInfo source ? XmlLanguage.GetLanguage(source.IetfLanguageTag) : null;
15 | }
16 |
17 | public object? ConvertBack(object? value, Type? targetType, object? parameter, CultureInfo? culture)
18 | {
19 | throw new NotImplementedException();
20 | }
21 | }
--------------------------------------------------------------------------------
/src/ResXManager.View/Converters/IsCellSelectionInvariantConverter.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.View.Converters;
2 |
3 | using System;
4 | using System.Collections.Generic;
5 | using System.Globalization;
6 | using System.Linq;
7 | using System.Windows.Controls;
8 | using System.Windows.Data;
9 |
10 | using ResXManager.View.Tools;
11 |
12 | public sealed class IsCellSelectionInvariantConverter : IValueConverter
13 | {
14 | public static readonly IsCellSelectionInvariantConverter Default = new();
15 |
16 | object? IValueConverter.Convert(object? value, Type? targetType, object? parameter, CultureInfo? culture)
17 | {
18 | return (value as IEnumerable)?.Any(item => item.IsItemInvariant());
19 | }
20 |
21 | object? IValueConverter.ConvertBack(object? value, Type? targetType, object? parameter, CultureInfo? culture)
22 | {
23 | throw new NotImplementedException();
24 | }
25 | }
--------------------------------------------------------------------------------
/src/ResXManager.View/Converters/LanguageColumnFilterConverter.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.View.Converters;
2 |
3 | using System;
4 | using System.Globalization;
5 | using System.Windows.Controls;
6 | using System.Windows.Data;
7 |
8 | using ResXManager.View.ColumnHeaders;
9 |
10 | public class LanguageColumnFilterConverter : IValueConverter
11 | {
12 | public static readonly IValueConverter Default = new LanguageColumnFilterConverter();
13 |
14 | public object? Convert(object? value, Type? targetType, object? parameter, CultureInfo? culture)
15 | {
16 | var collectionViewSource = new CollectionViewSource { Source = value };
17 | var collectionView = collectionViewSource.View;
18 | if (collectionView != null)
19 | collectionView.Filter = Filter;
20 |
21 | return collectionView;
22 | }
23 |
24 | private static bool Filter(object? item)
25 | {
26 | return (item as DataGridColumn)?.Header is ILanguageColumnHeader;
27 | }
28 |
29 | public object? ConvertBack(object? value, Type? targetType, object? parameter, CultureInfo? culture)
30 | {
31 | throw new NotImplementedException();
32 | }
33 | }
--------------------------------------------------------------------------------
/src/ResXManager.View/ExtensionMethods.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.View;
2 |
3 | using System.Windows.Media;
4 |
5 | public static class ExtensionMethods
6 | {
7 | public static double ToGray(this Color? color)
8 | {
9 | return color?.R * 0.3 + color?.G * 0.6 + color?.B * 0.1 ?? 0.0;
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/Notice.txt:
--------------------------------------------------------------------------------
1 | http://www.famfamfam.com/lab/icons/flags/
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ad.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ad.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ae.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ae.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/af.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/af.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ag.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ag.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ai.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ai.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/al.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/al.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/am.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/am.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/an.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/an.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ao.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ao.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ar.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ar.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/as.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/as.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/at.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/at.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/au.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/au.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/aw.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/aw.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ax.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ax.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/az.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/az.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ba.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ba.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/bb.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/bb.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/bd.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/bd.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/be.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/be.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/bf.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/bf.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/bg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/bg.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/bh.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/bh.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/bi.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/bi.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/bj.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/bj.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/bm.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/bm.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/bn.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/bn.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/bo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/bo.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/br.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/br.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/bs.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/bs.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/bt.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/bt.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/bv.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/bv.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/bw.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/bw.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/by.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/by.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/bz.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/bz.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ca.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ca.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/cc.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/cc.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/cd.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/cd.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/cf.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/cf.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/cg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/cg.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ch.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ch.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ci.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ci.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ck.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ck.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/cl.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/cl.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/cm.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/cm.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/cn.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/cn.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/co.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/co.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/cr.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/cr.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/cs.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/cs.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/cu.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/cu.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/cv.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/cv.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/cx.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/cx.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/cy.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/cy.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/cz.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/cz.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/de.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/de.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/dj.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/dj.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/dk.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/dk.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/dm.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/dm.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/do.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/do.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/dz.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/dz.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ec.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ec.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ee.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ee.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/eg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/eg.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/eh.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/eh.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/er.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/er.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/es.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/es.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/et.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/et.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/fi.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/fi.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/fj.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/fj.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/fk.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/fk.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/fm.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/fm.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/fo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/fo.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/fr.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/fr.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/fy.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/fy.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ga.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ga.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/gb.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/gb.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/gd.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/gd.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ge.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ge.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/gf.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/gf.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/gh.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/gh.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/gi.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/gi.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/gl.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/gl.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/gm.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/gm.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/gn.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/gn.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/gp.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/gp.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/gq.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/gq.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/gr.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/gr.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/gs.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/gs.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/gt.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/gt.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/gu.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/gu.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/gw.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/gw.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/gy.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/gy.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/hk.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/hk.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/hm.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/hm.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/hn.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/hn.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/hr.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/hr.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ht.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ht.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/hu.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/hu.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/id.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/id.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ie.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ie.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/il.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/il.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/in.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/in.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/io.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/io.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/iq.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/iq.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ir.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ir.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/is.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/is.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/it.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/it.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/jm.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/jm.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/jo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/jo.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/jp.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/jp.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ke.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ke.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/kg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/kg.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/kh.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/kh.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ki.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ki.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/km.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/km.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/kn.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/kn.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/kp.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/kp.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/kr.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/kr.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/kw.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/kw.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ky.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ky.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/kz.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/kz.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/la.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/la.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/lb.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/lb.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/lc.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/lc.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/li.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/li.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/lk.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/lk.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/lr.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/lr.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ls.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ls.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/lt.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/lt.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/lu.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/lu.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/lv.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/lv.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ly.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ly.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ma.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ma.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/mc.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/mc.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/md.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/md.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/me.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/me.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/mg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/mg.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/mh.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/mh.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/mk.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/mk.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ml.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ml.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/mm.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/mm.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/mn.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/mn.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/mo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/mo.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/mp.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/mp.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/mq.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/mq.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/mr.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/mr.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ms.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ms.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/mt.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/mt.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/mu.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/mu.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/mv.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/mv.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/mw.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/mw.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/mx.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/mx.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/my.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/my.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/mz.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/mz.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/na.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/na.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/nc.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/nc.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ne.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ne.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/nf.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/nf.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ng.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ng.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ni.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ni.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/nl.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/nl.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/no.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/no.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/np.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/np.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/nr.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/nr.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/nu.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/nu.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/nz.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/nz.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/om.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/om.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/pa.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/pa.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/pe.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/pe.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/pf.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/pf.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/pg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/pg.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ph.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ph.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/pk.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/pk.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/pl.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/pl.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/pm.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/pm.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/pn.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/pn.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/pr.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/pr.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ps.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ps.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/pt.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/pt.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/pw.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/pw.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/py.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/py.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/qa.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/qa.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/re.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/re.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ro.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ro.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/rs.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/rs.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ru.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ru.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/rw.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/rw.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/sa.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/sa.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/sb.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/sb.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/sc.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/sc.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/sd.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/sd.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/se.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/se.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/sg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/sg.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/sh.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/sh.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/si.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/si.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/sj.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/sj.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/sk.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/sk.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/sl.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/sl.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/sm.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/sm.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/sn.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/sn.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/so.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/so.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/sr.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/sr.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/st.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/st.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/sv.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/sv.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/sy.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/sy.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/sz.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/sz.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/tc.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/tc.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/td.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/td.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/tf.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/tf.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/tg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/tg.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/th.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/th.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/tj.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/tj.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/tk.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/tk.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/tl.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/tl.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/tm.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/tm.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/tn.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/tn.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/to.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/to.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/tr.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/tr.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/tt.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/tt.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/tv.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/tv.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/tw.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/tw.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/tz.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/tz.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ua.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ua.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ug.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ug.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/um.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/um.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/us.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/us.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/uy.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/uy.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/uz.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/uz.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/va.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/va.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/vc.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/vc.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ve.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ve.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/vg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/vg.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/vi.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/vi.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/vn.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/vn.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/vu.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/vu.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/wf.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/wf.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ws.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ws.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/ye.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/ye.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/yt.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/yt.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/za.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/za.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/zm.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/zm.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/Flags/zw.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager.View/Flags/zw.gif
--------------------------------------------------------------------------------
/src/ResXManager.View/FodyWeavers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/ResXManager.View/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Resources;
2 | using System.Runtime.CompilerServices;
3 | using System.Windows;
4 | using System.Windows.Markup;
5 |
6 | [assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.MainAssembly)]
7 | [assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]
8 |
9 | [assembly: XmlnsPrefix("urn:ResXManager.View", "view")]
10 | [assembly: XmlnsDefinition("urn:ResXManager.View", "ResXManager.View")]
11 | [assembly: XmlnsDefinition("urn:ResXManager.View", "ResXManager.View.Properties")]
12 | [assembly: XmlnsDefinition("urn:ResXManager.View", "ResXManager.View.Behaviors")]
13 | [assembly: XmlnsDefinition("urn:ResXManager.View", "ResXManager.View.ColumnHeaders")]
14 | [assembly: XmlnsDefinition("urn:ResXManager.View", "ResXManager.View.Converters")]
15 | [assembly: XmlnsDefinition("urn:ResXManager.View", "ResXManager.View.Visuals")]
16 |
17 | [assembly: InternalsVisibleTo("ResXManager.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100fbfea61559d9676195b8373508daa5755fc71550caf26ae58032ea57c651e9a97b09ab548aeb7bbb311a1df8fb57283323f9ea09aaa6751b5ac0ae5232684296ebc433ebb08e6c935ef9dd5463ce2e741748aaa8175c54fb2d7454926b35bd739f40797fae6a8c2a520a5cd77993b163b5c6ff37f70dc3ec2ae2905f2e4776dc")]
18 |
19 | namespace ResXManager.View.Properties;
20 |
21 | public static class AssemblyKey
22 | {
23 | }
--------------------------------------------------------------------------------
/src/ResXManager.View/Properties/Resources.Designer.tt:
--------------------------------------------------------------------------------
1 | <#@ template debug="false" hostspecific="true" language="C#" #>
2 | <#@ include file="$(SolutionDir)Resources.Designer.t4" #>
--------------------------------------------------------------------------------
/src/ResXManager.View/Properties/Settings.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.View.Properties;
2 |
3 | public sealed partial class Settings
4 | {
5 | static Settings()
6 | {
7 | Default.PropertyChanged += (sender, _) => (sender as Settings)?.Save();
8 | }
9 | }
--------------------------------------------------------------------------------
/src/ResXManager.View/ResXManager.View.csproj.DotSettings:
--------------------------------------------------------------------------------
1 |
2 | Yes
--------------------------------------------------------------------------------
/src/ResXManager.View/Themes/ResourceKeys.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.View.Themes;
2 |
3 | using System.Windows;
4 |
5 | public static class ResourceKeys
6 | {
7 | ///
8 | /// A data template for top level menus with an image.
9 | ///
10 | public static readonly ResourceKey MenuItemDropDownDataTemplate = new ComponentResourceKey(typeof(ResourceKeys), "MenuItemDropDownDataTemplate");
11 |
12 | ///
13 | /// The filter icon style.
14 | ///
15 | public static readonly ResourceKey IconStyleKey = new ComponentResourceKey(typeof(ResourceKeys), "IconStyle");
16 |
17 | ///
18 | /// Style for the filter text box in a filtered DataGridTextColumn.
19 | ///
20 | public static readonly ResourceKey ColumnHeaderSearchTextBoxStyleKey = new ComponentResourceKey(typeof(ResourceKeys), "ColumnHeaderSearchTextBoxStyle");
21 |
22 | ///
23 | /// Style for the clear button in the filter text box in a filtered DataGridTextColumn.
24 | ///
25 | public static readonly ResourceKey ColumnHeaderSearchTextBoxClearButtonStyleKey = new ComponentResourceKey(typeof(ResourceKeys), "ColumnHeaderSearchTextBoxClearButtonStyle");
26 |
27 |
28 | public static readonly ResourceKey ColumnHeaderGripperToolTipStyleKey = new ComponentResourceKey(typeof(ResourceKeys), "ColumnHeaderGripperToolTipStyle");
29 | }
--------------------------------------------------------------------------------
/src/ResXManager.View/Themes/ThemeManager.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.View.Themes;
2 |
3 | using System.ComponentModel;
4 | using System.Composition;
5 |
6 | [Export, Shared]
7 | public partial class ThemeManager : INotifyPropertyChanged
8 | {
9 | public bool IsDarkTheme { get; set; }
10 | }
--------------------------------------------------------------------------------
/src/ResXManager.View/Tools/CultureOverrideEventArgs.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.View.Tools;
2 |
3 | using System;
4 | using System.Globalization;
5 |
6 | public class CultureOverrideEventArgs : EventArgs
7 | {
8 | public CultureOverrideEventArgs(CultureInfo neutralCulture, CultureInfo? specificCulture)
9 | {
10 | SpecificCulture = specificCulture;
11 | NeutralCulture = neutralCulture;
12 | }
13 |
14 | public CultureInfo NeutralCulture { get; }
15 |
16 | public CultureInfo? SpecificCulture { get; }
17 | }
--------------------------------------------------------------------------------
/src/ResXManager.View/Tools/ISourceFilesProvider.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.View.Tools;
2 |
3 | using System.Collections.Generic;
4 | using System.Threading;
5 | using System.Threading.Tasks;
6 |
7 | using ResXManager.Model;
8 |
9 | public interface ISourceFilesProvider
10 | {
11 | Task> GetSourceFilesAsync(CancellationToken? cancellationToken);
12 |
13 | string? SolutionFolder { get; }
14 | }
--------------------------------------------------------------------------------
/src/ResXManager.View/Visuals/CodeReferencesToolTip.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.View.Visuals;
2 |
3 | using System;
4 |
5 | using ResXManager.Infrastructure;
6 |
7 | using TomsToolbox.Composition;
8 | using TomsToolbox.Wpf.Composition;
9 |
10 | ///
11 | /// Interaction logic for CodeReferencesToolTip.xaml
12 | ///
13 | public partial class CodeReferencesToolTip
14 | {
15 | public CodeReferencesToolTip(IExportProvider exportProvider)
16 | {
17 | try
18 | {
19 | this.SetExportProvider(exportProvider);
20 |
21 | InitializeComponent();
22 | }
23 | catch (Exception ex)
24 | {
25 | exportProvider.TraceXamlLoaderError(ex);
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/src/ResXManager.View/Visuals/LanguageConfigurationViewModel.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.View.Visuals;
2 |
3 | using System.ComponentModel;
4 | using System.Composition;
5 |
6 | using ResXManager.Infrastructure;
7 | using ResXManager.View.Properties;
8 |
9 | using TomsToolbox.Wpf.Composition.AttributedModel;
10 |
11 | [VisualCompositionExport(RegionId.Content, Sequence = 4)]
12 | [Shared]
13 | internal sealed partial class LanguageConfigurationViewModel : INotifyPropertyChanged
14 | {
15 | public override string ToString()
16 | {
17 | return Resources.ShellTabHeader_Languages;
18 | }
19 | }
--------------------------------------------------------------------------------
/src/ResXManager.View/Visuals/TranslatorConfiguration.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.View.Visuals;
2 |
3 | using System.Collections.Generic;
4 | using System.Windows;
5 | using System.Windows.Controls;
6 |
7 | using ResXManager.Infrastructure;
8 |
9 | ///
10 | /// Interaction logic for TranslatorConfiguration.xaml
11 | ///
12 | public partial class TranslatorConfiguration
13 | {
14 | public TranslatorConfiguration()
15 | {
16 | InitializeComponent();
17 | }
18 |
19 | public IEnumerable? Translators
20 | {
21 | get => (IEnumerable)GetValue(TranslatorsProperty);
22 | set => SetValue(TranslatorsProperty, value);
23 | }
24 | ///
25 | /// Identifies the dependency property
26 | ///
27 | public static readonly DependencyProperty TranslatorsProperty =
28 | DependencyProperty.Register(nameof(Translators), typeof(IEnumerable), typeof(TranslatorConfiguration));
29 |
30 | private void TabControl_Loaded(object? sender, RoutedEventArgs e)
31 | {
32 | if (sender is TabControl tabControl)
33 | {
34 | tabControl.SelectedIndex = 0;
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/ResXManager.View/Visuals/WebExportConfigurationView.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.View.Visuals;
2 |
3 | using TomsToolbox.Wpf.Composition.AttributedModel;
4 |
5 | ///
6 | /// Interaction logic for WebExportConfigurationView.xaml
7 | ///
8 | [DataTemplate(typeof(WebExportConfigurationViewModel))]
9 | public partial class WebExportConfigurationView
10 | {
11 | public WebExportConfigurationView()
12 | {
13 | InitializeComponent();
14 | }
15 | }
--------------------------------------------------------------------------------
/src/ResXManager/App.xaml:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/ResXManager/FodyWeavers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/ResXManager/IStandaloneConfiguration.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager;
2 |
3 | using ResXManager.Model;
4 | using ResXManager.Properties;
5 |
6 | public enum ColorTheme
7 | {
8 | [LocalizedDisplayName(StringResourceKey.ColorTheme_System)]
9 | System,
10 |
11 | [LocalizedDisplayName(StringResourceKey.ColorTheme_Light)]
12 | Light,
13 |
14 | [LocalizedDisplayName(StringResourceKey.ColorTheme_Dark)]
15 | Dark
16 | }
17 |
18 | public interface IStandaloneConfiguration : IConfiguration
19 | {
20 | ColorTheme ColorTheme { get; set; }
21 | }
--------------------------------------------------------------------------------
/src/ResXManager/MainView.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager;
2 |
3 | using System;
4 | using System.Composition;
5 |
6 | using ResXManager.Infrastructure;
7 |
8 | using TomsToolbox.Composition;
9 | using TomsToolbox.Wpf.Composition;
10 | using TomsToolbox.Wpf.Composition.AttributedModel;
11 |
12 | ///
13 | /// Interaction logic for MainView.xaml
14 | ///
15 | [DataTemplate(typeof(MainViewModel))]
16 | public partial class MainView
17 | {
18 | [ImportingConstructor]
19 | public MainView(IExportProvider exportProvider)
20 | {
21 | try
22 | {
23 | this.SetExportProvider(exportProvider);
24 |
25 | InitializeComponent();
26 | }
27 | catch (Exception ex)
28 | {
29 | exportProvider.TraceError(ex.ToString());
30 | }
31 | }
32 | }
--------------------------------------------------------------------------------
/src/ResXManager/MainWindow.xaml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/ResXManager/OutputView.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/ResXManager/OutputView.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager;
2 |
3 | using System;
4 | using System.Composition;
5 |
6 | using ResXManager.Infrastructure;
7 |
8 | using TomsToolbox.Composition;
9 | using TomsToolbox.Wpf.Composition;
10 | using TomsToolbox.Wpf.Composition.AttributedModel;
11 |
12 | ///
13 | /// Interaction logic for OutputView.xaml
14 | ///
15 | [DataTemplate(typeof(OutputViewModel))]
16 | public partial class OutputView
17 | {
18 | [ImportingConstructor]
19 | public OutputView(IExportProvider exportProvider)
20 | {
21 | try
22 | {
23 | this.SetExportProvider(exportProvider);
24 |
25 | InitializeComponent();
26 | }
27 | catch (Exception ex)
28 | {
29 | exportProvider.TraceError(ex.ToString());
30 | }
31 | }
32 | }
--------------------------------------------------------------------------------
/src/ResXManager/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Resources;
2 | using System.Runtime.CompilerServices;
3 |
4 | [assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.MainAssembly)]
5 |
6 | [assembly: InternalsVisibleTo("ResXManager.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100fbfea61559d9676195b8373508daa5755fc71550caf26ae58032ea57c651e9a97b09ab548aeb7bbb311a1df8fb57283323f9ea09aaa6751b5ac0ae5232684296ebc433ebb08e6c935ef9dd5463ce2e741748aaa8175c54fb2d7454926b35bd739f40797fae6a8c2a520a5cd77993b163b5c6ff37f70dc3ec2ae2905f2e4776dc")]
--------------------------------------------------------------------------------
/src/ResXManager/Properties/Resources.Designer.tt:
--------------------------------------------------------------------------------
1 | <#@ template debug="false" hostspecific="true" language="C#" #>
2 | <#@ include file="$(SolutionDir)Resources.Designer.t4" #>
--------------------------------------------------------------------------------
/src/ResXManager/Properties/Settings.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager.Properties;
2 |
3 | using System;
4 | using System.Collections.Specialized;
5 | using System.Linq;
6 |
7 | public sealed partial class Settings
8 | {
9 | private const int MaxRecentFolders = 10;
10 |
11 | static Settings()
12 | {
13 | Default.PropertyChanged += (sender, _) => ((Settings)sender).Save();
14 | }
15 |
16 | public Settings()
17 | {
18 | RecentStartupFolders ??= new StringCollection();
19 | }
20 |
21 | public void AddStartupFolder(string? folder)
22 | {
23 | RecentStartupFolders = AddStartupFolder(RecentStartupFolders, folder);
24 | }
25 |
26 | internal static StringCollection AddStartupFolder(StringCollection originalItems, string? folder)
27 | {
28 | if (folder is null || (originalItems.Count > 0 && string.Equals(originalItems[0], folder, StringComparison.OrdinalIgnoreCase)))
29 | return originalItems;
30 |
31 | var items = new StringCollection();
32 |
33 | items.AddRange(originalItems.Cast().Where(item => !string.Equals(item, folder, StringComparison.OrdinalIgnoreCase)).ToArray());
34 |
35 | items.Insert(0, folder);
36 |
37 | while (items.Count > MaxRecentFolders)
38 | {
39 | items.RemoveAt(items.Count - 1);
40 | }
41 |
42 | return items;
43 | }
44 | }
--------------------------------------------------------------------------------
/src/ResXManager/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | 1000,800
10 |
11 |
12 | 50,50
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/ResXManager/ResXManager.csproj.DotSettings:
--------------------------------------------------------------------------------
1 |
2 | Yes
--------------------------------------------------------------------------------
/src/ResXManager/ResourceManager.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResXManager/ResourceManager.ico
--------------------------------------------------------------------------------
/src/ResXManager/ThemeConfigurationView.xaml:
--------------------------------------------------------------------------------
1 |
10 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/ResXManager/ThemeConfigurationView.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager;
2 |
3 | using TomsToolbox.Wpf.Composition.AttributedModel;
4 |
5 | [DataTemplate(typeof(ColorThemeConfigurationViewModel))]
6 | public partial class ColorThemeConfigurationView
7 | {
8 | public ColorThemeConfigurationView()
9 | {
10 | InitializeComponent();
11 | }
12 | }
--------------------------------------------------------------------------------
/src/ResXManager/ThemeConfigurationViewModel.cs:
--------------------------------------------------------------------------------
1 | namespace ResXManager;
2 |
3 | using System.Composition;
4 |
5 | using ResXManager.Infrastructure;
6 | using ResXManager.Properties;
7 |
8 | using TomsToolbox.Wpf;
9 | using TomsToolbox.Wpf.Composition.AttributedModel;
10 |
11 | [LocalizedDisplayName(StringResourceKey.ColorTheme_Title)]
12 | [VisualCompositionExport(RegionId.Configuration)]
13 | [Shared]
14 | internal class ColorThemeConfigurationViewModel : ObservableObject
15 | {
16 | public ColorThemeConfigurationViewModel(IStandaloneConfiguration configuration)
17 | {
18 | Configuration = configuration;
19 | }
20 |
21 | public IStandaloneConfiguration Configuration { get; }
22 | }
--------------------------------------------------------------------------------
/src/ResXManager/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | 1000,800
15 |
16 |
17 | 50,50
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/ResourceManager.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/ResXResourceManager/09ffd3342cd2417451563a5edb8f4803e4846682/src/ResourceManager.ico
--------------------------------------------------------------------------------
/src/clean.cmd:
--------------------------------------------------------------------------------
1 | @ECHO OFF
2 |
3 | FOR /R %%a in (*.*proj) DO CALL :CLEAN "%%~dpa"
4 | GOTO :EOF
5 |
6 | :CLEAN
7 | CALL :REMOVEDIR "%~1obj"
8 | CALL :REMOVEDIR "%~1bin"
9 | CALL :DELETEFILE "%~1*_wpftmp.csproj"
10 | GOTO :EOF
11 |
12 | :REMOVEDIR
13 | IF NOT EXIST %1 GOTO :EOF
14 | @ECHO REMOVE %1
15 | RD /s /q %1
16 | :EOF
17 |
18 | :DELETEFILE
19 | IF NOT EXIST %1 GOTO :EOF
20 | @ECHO DELETE %1
21 | DEL %1
22 | :EOF
--------------------------------------------------------------------------------