If you are building child panes in your Settings.bundle, you'll end up with several .plist files. When it comes time to localize your project, you find the creation of the corresponding .strings file a bit tedious (I know I do).
Here's a handy list bash script which will (i) find tags, (ii) extract the contents of the following tag, and then (iii) output that value to a text file in the "string" = "string" format needed for ibtool.
You pass the input and output file names as parameters.
#!/bin/sh
echo "// Generated by plist2strings. Manual edits will be overwritten the next time this script runs.\n/* A single strings file, whose title is specified in your preferences schema. The strings files provide the localized content to display to the user for each of your preferences. */\n" > plist2stringstmp
sed -n '
# look for a "#" at the end of the line
/<key>Title<\/key>$/ {
# Found one - now read in the next line
N
# delete the "#" and the new line character,
s/.*<\(string\)>\(.*\)<\/\1>/"\2" = "\2"/gp
}' $1 > plist2stringstmp2
cat plist2stringstmp plist2stringstmp2 > $2
rm plist2stringstmp plist2stringstmp2
Copy-N-Paste into a text file. I saved mine as plist2strings. Be sure to give it execute permissions. For example, in Terminal execute:
macbook:~ foo$ chmod 755 plist2strings
To execute the script (if saved to your user folder) from root of your Settings.bundle directory, just use the syntax:
macbook:~ foo$ ~/plist2strings mysettings.plist en.lprog/mysettings.strings
If mysettings.strings is not already present in that folder, it will create it. If it is already there, it will automatically overwrite it without warning.
Hope someone finds this useful. And feel free to use (and abuse) as you see fit (caveat emptor ;-). If you make any useful changes, consider posting them back up here for others to enjoy too.
Happy Localizing!
~ Zack