i18n-node icon indicating copy to clipboard operation
i18n-node copied to clipboard

Allow escaping or configuring ':' sepearator for object notation defaults

Open mcky opened this issue 8 years ago • 2 comments

The documentation suggests using __l for generating express routes, however it's incompatible with objectNotation, as : separators are used for providing defaults

Given the following routes with objectNotation on, they save the translation to JSON:

{
	"/products/": "productID"
}

which in turn returns productID from each

__('/products/:productID')
__('/products/:productID/somePage')
__('/products/:productID/somePage/:another')

It would be helpful to be able to escape the : char, or configure which symbol to use (like object notation allows changing of .)

Currently I'm working around it by wrapping __l to replace : with another char, and then replacing the substitute character after res.__l is called, but this means my translation files don't match express routing conventions

mcky avatar Jan 23 '17 11:01 mcky

Having this issue also – a 3rd party library is using __() with strings containing :, with updateFiles on this leads to really strange entries in the locale files.

Making it configurable is one approach – would it be simpler to escape colons with \, so that \: does not get interpreted as a default? Or perhaps like CSV does, treating "" as an escapes ", we could do :: is interpreted as a single :. I prefer the \ approach; I'd be happy to submit a PR :)

Do any maintainers have an opinion on this?

beaulac avatar Jul 04 '19 01:07 beaulac

Uhhh, really kind of dreadful that colon cannot be escaped. I'm not a maintainer, but I think putting :: to escape a colon is good. Might have to add an option to specify that :: escapes : to avoid possibly breaking someone.

I will say that the whole colon issue only comes into play if you have objectNotation set to true, which I am thinking of not doing, so that may make this not an issue for me.

radcapitalist avatar Oct 02 '19 19:10 radcapitalist