Bit.ResxTranslator 10.6.1

There is a newer prerelease version of this package available.
See the version list below for details.
dotnet tool install --global Bit.ResxTranslator --version 10.6.1
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local Bit.ResxTranslator --version 10.6.1
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=Bit.ResxTranslator&version=10.6.1
                    
nuke :add-package Bit.ResxTranslator --version 10.6.1
                    

Bit.ResxTranslator

Bit.ResxTranslator is a .NET tool that automates the translation of .resx resource files into multiple languages using OpenAI or Azure OpenAI Large Language Models (LLMs).

It efficiently identifies missing translations in your target language files and generates them using the configured LLM, while preserving any existing manual translations.

Key Features

  • LLM-Powered Translation: Uses OpenAI or Azure OpenAI for translating .resx entries.
  • Preserves Existing Translations: Only adds missing translations to target .resx files, leaving existing ones untouched.
  • Automatic File Generation: Creates target language .resx files (e.g., AppStrings.fr.resx) if they don't exist based on your default language file (e.g., AppStrings.fr.resx).
  • Flexible Configuration: Configure languages, .resx file paths (using glob patterns), and LLM provider details via Bit.ResxTranslator.json.
  • .NET Configuration: Supports API keys via JSON or standard environment variable OpenAI__ApiKey.
  • Nothing to Install: dnx runs it straight from NuGet.

Configuration

Bit.ResxTranslator requires a configuration file named Bit.ResxTranslator.json located in the directory where you run it.

This JSON file defines the source and target languages, the location of your resource files, and the connection details for the LLM service (OpenAI or Azure OpenAI).

Example Bit.ResxTranslator.json:

{
  "DefaultLanguage": "en",
  "DefaultLanguage__Comment": "Required: .NET culture's name, en, en-US for example.",

  "SupportedLanguages": [ "nl", "fa", "sv", "hi", "zh", "es", "fr", "ar", "de" ],
  "SupportedLanguages__Comment": "Required: An array of .NET culture names.",

  "ResxPaths": [ "src/**/*.resx" ],
  "ResxPaths__Comment": "Required: An array of glob patterns to find your *base* .resx files",

  "OpenAI": {
    "Model": "gpt-4.1-mini",
    "Endpoint": "https://models.inference.ai.azure.com",
    "Endpoint__Samples": "Google AI Studio: https://generativelanguage.googleapis.com/v1beta/openai | GitHub: https://models.inference.ai.azure.com",
    "Endpoint__Samples2": "xAI(Grok): https://api.x.ai/v1 | Azure AI Foundry: https://YOUR_AZURE_FOUNDRY.services.ai.azure.com/openai/v1",
    "ApiKey": null,
    "ApiKey__Comment": "API key can be set here OR via [OpenAI__ApiKey] environment variable",
  }
}

Security Note: It is highly recommended to provide your ApiKey using environment variable OpenAI__ApiKey instead of hardcoding it directly in the Bit.ResxTranslator.json file, especially if this file is checked into version control. The tool uses standard .NET configuration practices, meaning environment variables will override values present in the JSON file.

Usage

dnx Bit.ResxTranslator
Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
10.6.2-pre-01 0 9/21/2026
10.6.1 101 9/19/2026
10.6.1-pre-02 52 9/19/2026
10.6.1-pre-01 56 9/18/2026
10.6.0 220 9/13/2026
10.6.0-pre-06 93 9/13/2026
10.6.0-pre-05 127 9/11/2026
10.6.0-pre-04 359 8/31/2026
10.6.0-pre-03 176 8/25/2026
10.6.0-pre-02 222 8/14/2026
10.6.0-pre-01 152 8/4/2026
10.5.0 835 7/20/2026
10.5.0-pre-10 124 7/20/2026
10.5.0-pre-09 183 7/19/2026
10.5.0-pre-08 203 7/11/2026
10.5.0-pre-07 145 7/10/2026
10.5.0-pre-06 119 7/7/2026
10.5.0-pre-05 227 6/28/2026
10.5.0-pre-04 183 6/22/2026
10.5.0-pre-02 205 6/18/2026
Loading failed