summaryrefslogtreecommitdiff
path: root/tools/aapt/ResourceTable.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/aapt/ResourceTable.cpp')
-rw-r--r--tools/aapt/ResourceTable.cpp18
1 files changed, 16 insertions, 2 deletions
diff --git a/tools/aapt/ResourceTable.cpp b/tools/aapt/ResourceTable.cpp
index 26b5bd6401e8..cf271a9e1ac8 100644
--- a/tools/aapt/ResourceTable.cpp
+++ b/tools/aapt/ResourceTable.cpp
@@ -865,6 +865,21 @@ status_t compileResourceFile(Bundle* bundle,
pseudoBidiParams.country[0] = 'X';
pseudoBidiParams.country[1] = 'B';
+ // We should skip resources for pseudolocales if they were
+ // already added automatically. This is a fix for a transition period when
+ // manually pseudolocalized resources may be expected.
+ // TODO: remove this check after next SDK version release.
+ if ((bundle->getPseudolocalize() & PSEUDO_ACCENTED &&
+ curParams.locale == pseudoParams.locale) ||
+ (bundle->getPseudolocalize() & PSEUDO_BIDI &&
+ curParams.locale == pseudoBidiParams.locale)) {
+ SourcePos(in->getPrintableSource(), 0).warning(
+ "Resource file %s is skipped as pseudolocalization"
+ " was done automatically.",
+ in->getPrintableSource().string());
+ return NO_ERROR;
+ }
+
while ((code=block.next()) != ResXMLTree::END_DOCUMENT && code != ResXMLTree::BAD_DOCUMENT) {
if (code == ResXMLTree::START_TAG) {
const String16* curTag = NULL;
@@ -1340,7 +1355,6 @@ status_t compileResourceFile(Bundle* bundle,
name,
locale,
SourcePos(in->getPrintableSource(), block.getLineNumber()));
- curIsPseudolocalizable = fileIsTranslatable;
}
if (formatted == false16) {
@@ -1352,7 +1366,7 @@ status_t compileResourceFile(Bundle* bundle,
curType = string16;
curFormat = ResTable_map::TYPE_REFERENCE|ResTable_map::TYPE_STRING;
curIsStyled = true;
- curIsPseudolocalizable = (translatable != false16);
+ curIsPseudolocalizable = fileIsTranslatable && (translatable != false16);
} else if (strcmp16(block.getElementName(&len), drawable16.string()) == 0) {
curTag = &drawable16;
curType = drawable16;