## settings.illegalcharmap.properties
##
## As many wikis allow characters in their pagenames that Confluence does not,
## a way to convert pagenames with illegal characters in them is necessary.
##
## Related Issue: uwc-106  http://developer.atlassian.com/jira/browse/UWC-106
##
## This file allows customization of how those characters will be converted.
## In the event that an existing illegal character is not validly mapped in this file
## (definition was deleted, another illegal char is the new setting, etc), the default
## conversion will be used:
## The default conversion for an illegal character is _ (underscore).
##
## As of Confluence 2.4.5, the illegal characters are listed as follows:
## : ; < > @ / \\ | # [ ] { } ^
## and the characters that a pagename may not start with are:
## $ .. ~

# : (colon)
illegalchar.colon.replacement=.

# ; (semi-colon)
illegalchar.semicolon.replacement=.

# < (less than)
illegalchar.lessthan.replacement=_

# > (greater than)
illegalchar.greaterthan.replacement=_

# @ (at)
illegalchar.at.replacement=at

# / (forward slash)
illegalchar.forwardslash.replacement=-

# \\ (backward slash)
illegalchar.backslash.replacement=-

# | (pipe)
illegalchar.pipe.replacement=-

# # (hash)
illegalchar.hash.replacement=No.

# [ (left bracket)
illegalchar.leftbracket.replacement=(

# ] (right bracket)
illegalchar.rightbracket.replacement=)

# { (left curly brace)
illegalchar.leftcurlybrace.replacement=(

# } (right curly brace)
illegalchar.rightcurlybrace.replacement=)

# ^ (carat)
illegalchar.carat.replacement=-

# $ (dollar) - only illegal at start of pagename
illegalstart.dollar.replacement=_

# .. (two dots) - only illegal at start of pagename
illegalstart.twodots.replacement=_

# ~ (tilda) - only illegal at start of pagename
illegalstart.tilda.replacement=_
