Module properties
source code
Classes that hold units of .properties, and similar, files that are used in
translating Java, Mozilla, MacOS and other software.
The L{propfile} class is a monolingual class with L{propunit} providing unit
level access.
The .properties store has become a general key value pair class with
L{Dialect} providing the ability to change the behaviour of the parsing
and handling of the various dialects.
Currently we support::
* Java .properties
* Mozilla .properties
* Adobe Flex files
* MacOS X .strings files
* Skype .lang files
Dialects
========
The following provides references and descriptions of the various dialects supported::
Java
----
Java .properties are supported completely except for the ability to drop
pairs that are not translated.
The following U{.properties file
description<http://java.sun.com/j2se/1.4.2/docs/api/java/util/Properties.html#load(java.io.InputStream)>}
and U{example <http://www.exampledepot.com/egs/java.util/Props.html>} give
some good references to the .properties specification.
Properties file may also hold Java
U{MessageFormat<http://java.sun.com/j2se/1.4.2/docs/api/java/text/MessageFormat.html>}
messages. No special handling is provided in this storage class for
MessageFormat, but this may be implemented in future.
All delimiter types, comments, line continuations and spaces handling in
delimeters are supported.
Mozilla
-------
Mozilla files use '=' as a delimiter, are UTF-8 encoded and thus don't need \u
escaping. Any \U values will be converted to correct Unicode characters.
`
Strings
-------
Mac OS X strings files are implemented using
U{these<http://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/BPInternational/Articles/StringsFiles.html>}
U{two<http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/LoadingResources/Strings/Strings.html>}
articles as references.
Flex
----
Adobe Flex files seem to be normal .properties files but in UTF-8 just like
Mozilla files. This
U{page<http://livedocs.adobe.com/flex/3/html/help.html?content=l10n_3.html>}
provides the information used to implement the dialect.
Skype
-----
Skype .lang files seem to be UTF-16 encoded .properties files.
Implementation
==============
A simple summary of what is permissible follows.
Comments supported::
# a comment
! a comment
// a comment (only at the beginning of a line)
/* a comment (not across multiple lines) */
Name and Value pairs::
# Delimiters
key = value
key : value
key value
# Space in key and around value
\ key\ = \ value
# Note that the b and c are escaped for epydoc rendering
b = a string with escape sequences \t \n \r \\ \" \' \ (space) \u0123
c = a string with a continuation line \
continuation line
# Special cases
# key with no value
key
# value no key (extractable in prop2po but not mergeable in po2prop)
=value
# .strings specific
"key" = "value";
Tuple (delimiter char, Offset Integer)
|
|
|
|
Boolean
|
|
str
|
|
|
|
|
|
|
eol = "\n"
|
|
dialects = {}
|
|
default_dialect = "java"
|
Imports:
base,
quote,
accepts,
returns,
IsOneOf,
data,
re,
warnings
Find the type and position of the delimiter in a property line.
Property files can be delimeted by "=", ":" or
whitespace (space for now). We find the position of each delimiter, then
find the one that appears first.
- Parameters:
line (str) - A properties line
delimiters (list) - valid delimiters
- Returns: Tuple (delimiter char, Offset Integer)
- delimiter character and offset within
line
- Decorators:
@accepts(unicode, [unicode])
@returns(IsOneOf(type(None), unicode), int)
|
Spelling error that is kept around for in case someone relies on
it.
Deprecated.
|
Determine whether line has a line
continuation marker.
.properties files can be terminated with a backslash (\) indicating
that the 'value' continues on the next line. Continuation is only valid
if there are an odd number of backslashses (an even number would result
in a set of N/2 slashes not an escape)
- Parameters:
line (str) - A properties line
- Returns: Boolean
- Does
line end with a line continuation
- Decorators:
@accepts(unicode)
@returns(bool)
|
Cleanup whitespace found around a key
- Parameters:
key (str) - A properties key
- Returns: str
- Key without any uneeded whitespace
- Decorators:
@accepts(unicode)
@returns(unicode)
|