Count to 100 in Danish
JavaScript (ES6), 347 336 326 325 308 bytes



for(a=btoa`...`.split(i=0);i&lt;101;i++)alert(i&lt;13?a[i]:i&lt;20?(a[i]||a[i-10])+"teen":i&gt;99?"one hundred":(i%10?a[i%10]+" and ":"")+(i&lt;30?"twenty":i&lt;40?"thirty":i&lt;50?"forty":(i%20&gt;9?"half "+["third","forth","fifth"][i/20-2|0]:a[i/20|0])+" times twenty"))


Before running, replace the ... with the result of running this code:

atob("zero0one0two0three0four0five0six0seven0eight0nine0ten0eleven0twelve0thir00fif000eigh")


Or you could just use the uncompressed version:

for(a="zero0one0two0three0four0five0six0seven0eight0nine0ten0eleven0twelve0thir00fif000eigh".split(i=0);i&lt;101;i++)alert(i&lt;13?a[i]:i&lt;20?(a[i]||a[i-10])+"teen":i&gt;99?"one hundred":(i%10?a[i%10]+" and ":"")+(i&lt;30?"twenty":i&lt;40?"thirty":i&lt;50?"forty":(i%20&gt;9?"half "+["third","forth","fifth"][i/20-2|0]:a[i/20|0])+" times twenty"))


Still probably not optimal. 11 bytes saved in part by @Titus.