<p>Ulimately I just wanted to extract strings from the .rc file so I could translate them, but anything that goes with .rc files works for me.</p>

[{'answer_id': 53697, 'author': 'Thomas', 'author_id': 4980, 'author_profile': 'https://Stackoverflow.com/users/4980', 'pm_score': 1, 'selected': False, 'text': '<p>Maybe this helps? (<a href="http://social.msdn.microsoft.com/forums/en-US/regexp/thread/5e87fce9-ec73-42eb-b2eb-c821e95e0d31/" rel="nofollow noreferrer">http://social.msdn.microsoft.com/forums/en-US/regexp/thread/5e87fce9-ec73-42eb-b2eb-c821e95e0d31/</a>)</p>\n\n<p>They are using the following regex to find the stringtable in the rc source:</p>\n\n<p>(?&lt;=\\bSTRINGTABLE\\s+BEGIN\\s+).*?(?=\\s+END\\b)</p>\n\n<p>Edit - And you can read the key values pairs with the following statement with the MultiLine option:</p>\n\n<p>@"\\s+(.*?)\\s+""(.*)""";</p>\n'}, {'answer_id': 98442, 'author': 'jussij', 'author_id': 14738, 'author_profile': 'https://Stackoverflow.com/users/14738', 'pm_score': 0, 'selected': False, 'text': '<p>This sounds like a job for a <a href="http://www.zeusedit.com/forum/viewtopic.php?t=1229" rel="nofollow noreferrer">SED</a> script.</p>\n\n<p>By running this command line: <strong>sed.exe -n -f sed.txt test.rc</strong></p>\n\n<p>The following <a href="http://www.zeusedit.com/forum/viewtopic.php?t=1229" rel="nofollow noreferrer">SED</a> script will extract all the <em>quoted strings</em> from the input <strong>test.rc</strong> file:</p>\n\n<pre><code># Run Script Using This Command Line\n#\n#   sed.exe -n -f sed.txt test.rc\n#\n\n# Check for lines that contain strings\n/\\".*\\"/ {\n    # print the string part of the line only\n    s/\\(.*\\)\\(\\".*\\"\\)\\(.*\\)/\\2/ p\n}\n</code></pre>\n'}, {'answer_id': 109370, 'author': 'Serge Wautier', 'author_id': 12379, 'author_profile': 'https://Stackoverflow.com/users/12379', 'pm_score': 1, 'selected': False, 'text': '<p>Although rc files seems an obvious starting point for translation, it\'s not. \nThe job of developers is to make sure the app is translatable. It\'s not to manage translations. Starting translations from the exe, although somewhat counter-intuitive, is a way better idea.\nRead more about it here: <a href="http://www.apptranslator.com/misconceptions.html" rel="nofollow noreferrer">http://www.apptranslator.com/misconceptions.html</a></p>\n'}, {'answer_id': 666447, 'author': 'Germstorm', 'author_id': 18631, 'author_profile': 'https://Stackoverflow.com/users/18631', 'pm_score': -1, 'selected': False, 'text': '<p><a href="http://resxcrunch.com" rel="nofollow noreferrer">ResxCrunch</a> will be out sometimes soon. \nIt will edit multiple resource files in multiple languages in one single table.</p>\n'}, {'answer_id': 13627025, 'author': 'blackbada_cpp', 'author_id': 1220715, 'author_profile': 'https://Stackoverflow.com/users/1220715', 'pm_score': 2, 'selected': False, 'text': '<p>I\'d consider usage of <a href="http://en.wikipedia.org/wiki/Gettext" rel="nofollow">gettext</a> and <a href="http://gnu.cs.pu.edu.tw/software/gettext/manual/html_node/PO-Files.html" rel="nofollow">.PO files</a>, if your program fits GNU license</p>\n\n<p>1) I\'d suggest extracting from .rc files using state machine algorithm.</p>\n\n<pre><code>void ProcessLine(const char * str)\n{\n   if (strstr(str, " DIALOG"))\n      state = Scan;\n   else if (strstr(str, " MENU"))\n      state = Scan;\n   else if (strstr(str, " STRINGTABLE"))\n      state = Scan;\n   else if (strstr(str, "END"))\n      state = DontScan;\n\n   if (state == Scan)\n   {\n      const char * cur = sLine;\n      string hdr = ...// for example "# file.rc:453"\n      string msgid;\n      string msgid = "";\n      while (ExtractString(sLine, cur, msgid))\n      {\n         if (msgid.empty())\n            continue;\n         if (IsPredefined(msgid))\n            continue;\n         if (msgid.find("IDB_") == 0 || msgid.find("IDC_") == 0)\n            continue;\n         WritePoString(hdr, msgid, msgstr);\n      }\n   }\n}\n</code></pre>\n\n<p>2) When extracting string inside ExtractString() you should consider that char " is represented as "", and there are also chars like \\t \\n \\r. So state machine is also a good option here.</p>\n\n<p>The following string:</p>\n\n<pre><code>LTEXT           "Mother has washed ""Sony"", then \\taquarium\\\\shelves\\r\\nand probably floors",IDC_TEXT1,24,14,224,19\n</code></pre>\n\n<p>represents such label on a dialog:</p>\n\n<pre><code>Mother has washed "Sony", then aquarium\\shelves\nand probably floors\n</code></pre>\n\n<p>3) Then on program startup you should load .po file via gettext and for each dialog translate its string on startup using a function like this:</p>\n\n<pre><code>int TranslateDialog(CWnd&amp; wnd)\n{\n    int i = 0;\n    CWnd *pChild;\n    CString text;\n\n    //Translate Title\nwnd.GetWindowText(text);\nLPCTSTR translation = Translate(text);\n    window.SetWindowText(translation);\n\n    //Translate child windows\n    pChild=wnd.GetWindow(GW_CHILD);\n    while(pChild)\n    {\n        i++;\n    Child-&gt;GetWindowText(Text);//including NULL\n        translation = Translate(Text);\n        pChild-&gt;SetWindowText(translation);\n        pChild = pChild-&gt;GetWindow(GW_HWNDNEXT);\n    }\n    return i;\n}\n</code></pre>\n'}, {'answer_id': 26954495, 'author': 'Maxim Kapitonov', 'author_id': 645806, 'author_profile': 'https://Stackoverflow.com/users/645806', 'pm_score': 0, 'selected': False, 'text': '<p>In case rc, better use advanced parser like <a href="http://www.soft-gems.net/index.php/java/windows-resource-file-parser-and-converter" rel="nofollow">http://www.soft-gems.net/index.php/java/windows-resource-file-parser-and-converter</a></p>\n'}]
['https://Stackoverflow.com/questions/53599', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/4880/']