nresx.Core 1.0.0

dotnet add package nresx.Core --version 1.0.0
                    
NuGet\Install-Package nresx.Core -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="nresx.Core" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="nresx.Core" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="nresx.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add nresx.Core --version 1.0.0
                    
#r "nuget: nresx.Core, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package nresx.Core@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=nresx.Core&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=nresx.Core&version=1.0.0
                    
Install as a Cake Tool

nresx

CI NuGet: nresx CLI NuGet: nresx.Core License: MIT

One command-line tool for every localization file format. Read, write, convert, and validate translation resources across 13 formats, on Windows / Linux / macOS, from any shell.

# a translator sent back a .po - fold it into your app's locale files
nresx convert strings.uk.po -f json

# gate CI on localization health: drift, duplicates, untranslated entries
nresx validate "locales/strings.*.json" -r --warnings-as-errors

Why nresx

  • Format-agnostic. po, json, yaml, Android, iOS, resx, xliff and more - one model, one command set, any-to-any conversion.
  • CI-friendly by design. Deterministic output, documented exit codes, errors on stderr, validate as a drop-in pipeline gate.
  • Batch-first. Every command accepts wildcards and -r to sweep whole directory trees in one call.
  • Scriptable and embeddable. The same operations from any shell (Windows / Linux / macOS, no .NET visible once installed) or from C# via nresx.Core - a single netstandard2.0 build that runs everywhere from .NET Framework 4.6.1 to the latest .NET, Unity included.

Install

Standalone CLI binary

The nresx command-line tool as a single self-contained executable - nothing to install first, no .NET required. Download, unzip, run. Grab it from the latest release:

Platform Download
Windows (x64) nresx-win-x64.zip
Linux (x64) nresx-linux-x64.zip
macOS (Apple Silicon) nresx-osx-arm64.zip

After extracting, add the directory to your PATH so nresx is callable from any shell:

<details><summary>Windows</summary>

# Extract to C:\Tools\nresx, then:
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Tools\nresx", "User")
# Restart your shell. Confirm:
nresx --version

</details>

<details><summary>Linux / macOS</summary>

# Extract to ~/.local/bin (already on PATH on most distros) or /usr/local/bin
unzip nresx-linux-x64.zip -d ~/.local/bin/
chmod +x ~/.local/bin/nresx
nresx --version

Linux runtime dependency: requires libicu (standard .NET globalization library). Most desktop distros (Ubuntu, Debian, Fedora) include it by default. On minimal containers / slim server images, install it:

# Debian / Ubuntu
sudo apt-get install -y libicu-dev

# Fedora / RHEL / Rocky
sudo dnf install -y libicu

# Alpine is not supported - the binary needs glibc, not musl

On macOS, Gatekeeper may quarantine the binary on first run. Remove the quarantine flag:

xattr -d com.apple.quarantine ~/.local/bin/nresx

</details>

CLI via dotnet tool

If you already have the .NET SDK:

dotnet tool install -g nresx
nresx --help

.NET library

The same engine as a package, for use from C# code:

dotnet add package nresx.Core

Planned channels

Coming with the 1.0 release: Chocolatey (choco install nresx) and Scoop (scoop install nresx). Homebrew is planned for a later release.

Supported formats

Ordered roughly by ecosystem reach. Click the heading above for per-format details: what's preserved, what's lossy, and format-specific quirks. More formats are on the roadmap.

Format Extensions Typical use
JSON .json Web apps (i18next, vue-i18n)
.NET resx / resw .resx .resw .NET / Windows apps
YAML .yaml .yml Rails, config-style locales
Gettext PO .po The classic translator format
Android strings .xml Android apps
iOS strings .strings iOS / macOS apps
Java properties .properties Java apps
XLIFF 1.2 .xlf .xliff Translation interchange standard
CSV / TSV .csv .tsv Spreadsheets, translator exchange
Excel .xlsx Translator-friendly handoff
Flutter ARB .arb Flutter apps
INI .ini Desktop / legacy config
Plain text .txt Simple key=value lists

Quick start

CLI

# Convert a single file into another format (placed next to the source)
nresx convert strings.po -f json

# Convert every .resx in the current directory tree into a .yaml sibling
nresx convert *.resx -f yaml -r

# Show format, culture, and element count for a file
nresx info strings.json

# Print every key=value pair (use -t to customize the row template)
nresx list strings.json

# Surface drift, duplicates, and empty entries across language siblings
# (non-zero exit on errors; --warnings-as-errors makes it strict)
nresx validate strings.*.json -r

Full command reference.

.NET library

using nresx.Core;

// Load
var file = new ResourceFile("strings.resx");

foreach (var element in file.Elements)
    Console.WriteLine($"{element.Key} = {element.Value}");

// Mutate
file.Elements.Add("hello", "Hello, world!");

// Save as a different format
file.Save("strings.po", ResourceFormatType.Po);

Async overloads are available: ResourceFile.LoadAsync and file.SaveAsync both accept a CancellationToken.

Docs

Feedback and contributing

License

MIT

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 97 7/7/2026