I am a software developer that has primarily worked in Windows development in the Delphi language. At present, I am looking for a new job, and want to work in a different programming language (C# or Java primarily, but am interested in others as well), but I can't seem to get past the first level, and I think it's because I haven't been allowed professionally to work much in other languages, even though I do write small utilities from time to time for personal use and for a small non-profit I work with. Essentially, I have very few entries on my resume for my secondary languages, so most companies assume I'm just a Delphi developer, and don't know how to work with their systems, even though I do, or can learn how to very quickly. How can I overcome this, and should it be overcome in the cover letter or possibly in the resume itself?
Build an awesome application in that language and show them. The key for an interview is this : show, don't tell.
Have your resume reference an online code repository(like your github profile). Many serious development companies may ask to see a github profile anyway. Being able to show them something in person on a laptop might be good too. Good interviewers will want to know as much as possible about your skills before hiring you.
Once while interviewing for a job, they asked me about my Objective C skills(iOS development) I mentioned on a resume. I actually had an app on the app store at the time, so the interviewer whipped out his phone and downloaded the app right in front of me. Even though I had no professional experience with Objective C, he had no doubt I could program in Objective C.
Make sure you highlight you desired language first, and they may assume that is what you are the best at, and thus it will be what's most asked about.
I'd put it in the cover letter AND the resume. Some HR people read the letter first and others the resume - they are going to throw your application out if they are looking for a Java Dev and there's nothing Java in there.
In the cover letter put that while your main language was Delphi, you are confident that you'll be a good Java developer, because ... list reasons like you've worked in Java in your free time for example software s for company t, you've always been quick to learn new languages for example at internship x you learned language y and finished project z with it in only 3 month, ... whatever you come up with that you can actually back up. A certificate might help, too.
In the resume just put volunteer work: Developed application to do s for non profit t using Java (+frameworks if you used any).
Building software can be the same for a full-time job, as well as, a part-time job with a non-profit (Linux development has been mainly non-profit and those key-contributors can write their own ticket for job placement.). The main factor is the extent of the project. For example: did you work for a non-profit on a web site with a lot of traffic. Were you working with large data sets?
You have to be able to connect the skills utilized in your non-working projects with what the jobs require. If you can't, you may want to look into additional work to expand on your previous experience. Also, the people at the non-profit should be giving you a very strong reference.
You might want to change your focus. Many tech shops take it for a given that developers come with skills in multiple programming languages. So, first, make sure you are actually proficient in the additional languages you want to work in. Searching for "code interview questions" in Google provides several resources to assess where you might stand in a coding test.
Second, more important than the programming language, show them you understand the problems their products solve. If you can show me you understand accounting (for example), then I'll assume the programming part comes with the rest of your expertise. This makes a big difference down the road. Many developers who identify themselves only by the language(s) they use find themselves limited because they may not ever understand the big picture topics that would make them excellent senior level developers and architects, etc.
On publicly available code... As a project lead and manager who interviews software engineers, I would not penalize you for not having anything in github (or bitbucket, or anywhere online). But if you do have something available for me to look at, I will look at it, and if it's not good, it will count against you. I'd be looking for coding style, design, comments and other documentation, and an overall coherency to the code. Anything that shows me you've paid dues as a software developer and have learned the lessons that experienced developers should learn.
I would also look for any blog posts or contributions to Stack Overflow, Reddit, HackerNews, etc., that demonstrate your understanding of your craft. No, you don't need your own domain. Signing up for Blogger.com or Wordpress.com, or any other blog hosting site is fine. Just share what you know.
FYI, cover letters only impress the resume screener. After that, they get stripped off, and the tech managers and project leads only see the resume. You need a cover letter to catch the screener's attention, so it's better to make it tell your story in as few words as possible. Don't worry about selling your technical skills in the cover letter. Just help them feel like you are the answer to the problems they are trying to solve. (This implies knowing something about the company.)
The great thing about being a programmer is the ease of being able to dive into new technologies.
If I was in your situation, I'd come up with a few mobile app ideas, code them in either Java or C#, and then publish them in app stores. Not only will you be learning a new language you'll also be learning to work in non-Windows environments. Perhaps these apps will need some back end support. That'll give you an excuse to dive into web development languages as well.
Once you have apps published, you now have something concrete to show off as part of your portfolio, and can add the language to your resume.