├── .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 | ![ChooseColumns](Configure%20Visible%20Columns_ChooseColumns.png) 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 | ![](Detect%20Code%20References_DetectCodeReferences.png) 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 | ![](Detect%20Code%20References_DetectCodeReferencesConfig.png) 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 | Donate 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 | ![](Invariant%20Strings_Invariant.png) 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 | ![MoveToResource](MoveToResource.gif) 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 | ![](Snapshots_Snapshots.png) 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 | ![](Snapshots_ShowOnlyErrors.png) 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 | ![S](SpellChecker_LanguageSettings.png) 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 | ![configuration](Xliff_configuration.png) 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 |
5 | 6 |
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 |
5 | 6 |
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 |
5 | 6 |
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 --------------------------------------------------------------------------------