{ "id": "63192", "key": "TIMOB-2560", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "11235", "name": "Release 1.6.0 M02", "archived": true, "released": true, "releaseDate": "2010-12-27" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2011-04-17T01:59:27.000+0000", "created": "2011-04-15T03:22:47.000+0000", "priority": { "name": "Low", "id": "4" }, "labels": [ "android", "defect", "locale", "release-1.6.0", "strings" ], "versions": [], "issuelinks": [], "assignee": { "name": "billdawson", "key": "billdawson", "displayName": "Bill Dawson", "active": true, "timeZone": "Europe/Berlin" }, "updated": "2011-04-17T01:59:27.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10202", "name": "Android", "description": "Android Platform" } ], "description": "{html}

Android strings inside a <string> tag must be\nescaped if they use quotes or apostrophes. From the ADT strings.xml\neditor:
\n\"If you use an apostrophe or a quote in your string, you must\neither escape it or enclose the whole string in the other kind of\nenclosing quotes.\"

\n

The escape character is simply \"\\\"

{html}", "attachment": [ { "id": "18165", "filename": "quotestring.zip", "author": { "name": "billdawson", "key": "billdawson", "displayName": "Bill Dawson", "active": true, "timeZone": "Europe/Berlin" }, "created": "2011-04-15T03:22:48.000+0000", "size": 770498, "mimeType": "application/zip" } ], "flagged": false, "summary": "Android: Locale strings with quotes/apostrophes cause syntax errors in generated strings.xml", "creator": { "name": "mculpepper", "key": "mculpepper", "displayName": "Marshall Culpepper", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "mculpepper", "key": "mculpepper", "displayName": "Marshall Culpepper", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "comment": { "comments": [ { "id": "128776", "author": { "name": "billdawson", "key": "billdawson", "displayName": "Bill Dawson", "active": true, "timeZone": "Europe/Berlin" }, "body": "{html}

To QA:

\n

You can test this by importing the attached project in\nQuoteString.zip. In the failcase, it won't even compile when you\nclick 'Launch', because it has some values in i18n/en/strings.xml\nwhich contain single and double quotes that are not preceded by\nbackslashes (required by the Android resource compiler.)

\n

After you install the fixed version of the mobile sdk, the\nproject should launch fine, and you'll see two labels (about Jimmy\nStewart) which should match each other. One is typed directly into\nthe .JS file, the other is getting the string from the i18n/en\nusing our localization framework.

{html}", "updateAuthor": { "name": "billdawson", "key": "billdawson", "displayName": "Bill Dawson", "active": true, "timeZone": "Europe/Berlin" }, "created": "2011-04-15T03:22:48.000+0000", "updated": "2011-04-15T03:22:48.000+0000" }, { "id": "128777", "author": { "name": "billdawson", "key": "billdawson", "displayName": "Bill Dawson", "active": true, "timeZone": "Europe/Berlin" }, "body": "{html}

(from [9bdcc77bd04c006be3b9c1bd739d45f37fdd4b4f])\n[#2560 state:fixed-in-qa] In string resources\n(i18n), check for quotes and double-quotes not preceded by\nbackslashes and fix them \nhttps://github.com/appcelerator/titanium_mobile/commit/9bdcc77bd04c...

{html}", "updateAuthor": { "name": "billdawson", "key": "billdawson", "displayName": "Bill Dawson", "active": true, "timeZone": "Europe/Berlin" }, "created": "2011-04-15T03:22:48.000+0000", "updated": "2011-04-15T03:22:48.000+0000" }, { "id": "128778", "author": { "name": "thomashuelbert", "key": "thomashuelbert", "displayName": "Thomas Huelbert", "active": true, "timeZone": "America/Los_Angeles" }, "body": "{html}

[INFO] Titanium SDK version: 1.6.0 (01/04/11\n08:01 e49700d) emulator 2.2, device 2.2.1 droid 1 and 1.6 g1.

{html}", "updateAuthor": { "name": "thomashuelbert", "key": "thomashuelbert", "displayName": "Thomas Huelbert", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2011-04-15T03:22:48.000+0000", "updated": "2011-04-15T03:22:48.000+0000" } ], "maxResults": 3, "total": 3, "startAt": 0 } } }