dotnet add package PseudoLocalizer.Humanizer --version 0.9.0
NuGet\Install-Package PseudoLocalizer.Humanizer -Version 0.9.0
<PackageReference Include="PseudoLocalizer.Humanizer" Version="0.9.0" />
paket add PseudoLocalizer.Humanizer --version 0.9.0
#r "nuget: PseudoLocalizer.Humanizer, 0.9.0"
// Install PseudoLocalizer.Humanizer as a Cake Addin #addin nuget:?package=PseudoLocalizer.Humanizer&version=0.9.0 // Install PseudoLocalizer.Humanizer as a Cake Tool #tool nuget:?package=PseudoLocalizer.Humanizer&version=0.9.0
Pseudolocalizer is a .NET Global Tool for testing internationalization aspects of software. Specifically, it reads string values from resource files in the resx, XLIFF, or GetText Portable Object (PO) format and generates fake translations for the "qps-Ploc" pseudo-locale (MSDN).
The tool is run from the command line and provides the following options for the fake translation:
- Add accents on all letters so that non-localized text can be spotted - but without making the text unreadable.
- Make all words 30% longer, to ensure that there is room for translations.
- Add brackets to show the start and end of each localized string. This makes it possible to spot strings that have been cut off.
- Reverse all words ("mirror"), to simulate right-to-left locales.
- Replace all characters with underscores so that non-localized text can be spotted.
- WPF Localization Guidance Whitepaper by Rick Strahl and Michele Leroux Bustamante
- Stack Overflow: How to use enable pseudo-locale in Windows for testing?
To install the tool from NuGet using the .NET SDK run:
dotnet tool install --global PseudoLocalize
Usage: pseudo-localize [/l] [/a] [/b] [/m] [/u] [/c culture] file [file...] Generates pseudo-localized versions of the specified input file(s). The input files must be resource files in Resx, Xlf, or PO file format. The output will be written to a file next to the original, with .qps-Ploc (or the output culture you specify) appended to its name. For example, if the input file is X:\Foo\Bar.resx, then the output file will be X:\Foo\Bar.qps-Ploc.resx. Options: /h, --help Show command line help. /v, --version Show the version of the tool. /l, --lengthen Make all words 30% longer, to ensure that there is room for translations. /a, --accents Add accents on all letters so that non-localized text can be spotted. /b, --brackets Add brackets to show the start and end of each localized string. This makes it possible to spot cut off strings. /m, --mirror Reverse all words ("mirror"). /u, --underscores Replace all characters with underscores. /c, --culture Use the following string as the culture code in the output file name(s). /o, --overwrite Overwrites the input file(s) with the pseudo-localized version. /f, --force Suppresses the confirmation prompt for the --overwrite option. The default options, if none are given, are: /l /a /b.
These allow you to programmatically pseudo-localize strings for other scenarios not catered for by the PseudoLocalize tool itself.
Took at look at the source code for PseudoLocalize for examples of how to use the library to pseudo-localize strings and process streams.
dotnet add package PseudoLocalizer.Core dotnet add package PseudoLocalizer.Humanizer
Usage with Humanizer
To register pseudo-localization for Humanizer, add the following snippet to your application:
Any feedback or issues can be added to the issues for this project in GitHub.
The repository is hosted in GitHub: https://github.com/martincostello/Pseudolocalizer.git
This project is licensed under the MIT license.
Building and Testing
Compiling the tool yourself requires Git and the .NET SDK to be installed.
To build and test the tool locally from a terminal/command-line, run the following set of commands:
git clone https://github.com/martincostello/Pseudolocalizer.git cd Pseudolocalizer ./build.sh
|Product||Versions 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-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.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.|
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.
See https://github.com/martincostello/Pseudolocalizer/releases for details.