Skip to content

bearfriend/messageformat-validator

Repository files navigation

messageformat-validator

Validates messageformat messages against various errors and warnings.

Install

npm i messageformat-validator

Usage

mfv [options] [subcommand]

Examples

Check for issues in all files within lang/

mfv -s en -p lang/

Add messages that exist in en to all files within lang/, if they are missing

mfv -s en -p lang/ add-missing

Output the myMessage message from the es-es file with all messageformat structure highlighted

mfv -l es-es -p lang/ highlight myMessage

Re-write messages to a standard format, using newlines and tabs for complex arguments, and removing any plural categories that are invalid for each locale (e.g. zero for English, one for Korean)

mfv -s en -p lang/ format -nr

Options:

-V, --version - output the version number

--no-issues - Don't output issues

-i, --ignore <items> - Ignore these comma-separated issue types

-l, --locales <items> - Process only these comma-separated locales

-p, --path <path> - Path to a directory containing locale files

-t, --translator-output - Output JSON of all source messages that are missing or untranslated in the target

-s, --source-locale <locale> - The locale to use as the source

--json-obj - Indicate that the files to be parsed are JSON files with keys that have objects for values with their own keys: translation and context

-h, --help - Display help for command

Subommands:

remove-extraneous - Remove messages that do not exist in the source locale

add-missing - Add messages that do not exist in the target locale

sort - Sort messages alphabetically by key, maintaining any blocks

rename <old-key> <new-key> - Rename a message

highlight <key> - Output a message with all non-translatable ICU MessageFormat structure highlighted

format - Rewrite messages to a standard format

Config File

Some options can be configured with default values in mfv.config.json

{
  "source": "en"
  "path": "lang/",
  "locales": ["ar", "de", "en", "es", "es-es", "hi", "tr"],
  "jsonObj": true
}

Errors

argument - Unrecognized argument

brace - Mismatched braces

category - Unsupported category

duplicate - Multiple messages with the same name

extraneous - Message does not exist in the source locale

missing - Message missing from the target locale

nbsp - Message structure contains non-breaking space

nest - The nesting order of the target message does not match the source message

option - Unrecognized option

option-missing - Missing option used in the source

other - Missing "other" option

parse - Failed to parse message

source - Failed to parse source message

Warnings

category-missing - Missing categories used by the target locale

nest-ideal - A select is nested inside a plural or selectordinal

nest-order - Nesting order does not match source

split - Split by a complex argument

untranslated - Message has not been translated

About

Validate MessageFormat strings, including compatibility between source and translated strings.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors