RNA to Protein Translation
JavaScript (ES6) 167 177 chars encoded in UTF8 as 167 177 bytes

... so I hope everyone is happy.

Edit In fact, no need for a special case for last block too short. If the last 2 (or 1) chars are not mapped, the result string does not end with '*' and that gives error anyway. 

F=s=&gt;/^M[^*]*\*$/.test(s=s.replace(/.../g,x=&gt;
"KNKNTTTTRSRSIIMIQHQHPPPPRRRRLLLLEDEDAAAAGGGGVVVV*Y*YSSSS*CWCLFLF"
[[for(c of(r=0,x))r=r*4+"ACGU".search(c)]|r]))?s:'Error'


Explained

Each char in a triplet can have 4 values, so there are exactly 4^3 == 64 triplets. The C function map each triplet to a number between 0 and 63. No error check needed as input chars are only ACGU.

C=s=&gt;[for(c of(r=0,s))r=r*4+"ACGU".search(c)]|r


Each triplet maps to an aminoacid identified by a single char. We can encode this in a 64 character string. To obtain the string, start with the Codon Map:

zz=["* UAA UAG UGA","A GCU GCC GCA GCG","C UGU UGC","D GAU GAC","E GAA GAG"
,"F UUU UUC","G GGU GGC GGA GGG","H CAU CAC","I AUU AUC AUA","K AAA AAG"
,"L UUA UUG CUU CUC CUA CUG","M AUG","N AAU AAC","P CCU CCC CCA CCG","Q CAA CAG"
,"R CGU CGC CGA CGG AGA AGG","S UCU UCC UCA UCG AGU AGC","T ACU ACC ACA ACG"
,"V GUU GUC GUA GUG","W UGG","Y UAU UAC"]
a=[],zz.map(v=&gt;v.slice(2).split(' ').map(x=&gt;a[C(x)]=v[0])),a.join('')


...obtaining "KNKNTTTTRSRSIIMIQHQHPPPPRRRRLLLLEDEDAAAAGGGGVVVV*Y*YSSSS*CWCLFLF"

So we can scan the input string and use the same logic of the C function to obtain the code 0..63, and from the code the aminoacid char. The replace function wil split the input string in 3 chars blocks, eventually leaving 1 or 2 chars not managed (that will give an  invalid result string, not ending in '*').

At last, check if the encoded string is valid using a regexp: it must start with 'M', must not contain '*' and must end with '*'

Test In FireBug/FireFox console

;['AUGCUAG','GGGCACUAG','AUGAACGGA','AUGUAGUGA','AAAAAAA',
'AUGUUUGUUCCGUCGAAAUACCUAUGAACACGCUAA',
'AUGAGGUGUAGCUGA','AUGCCAGUCGCACGAUUAGUUCACACGCUCUUGUAA',
'AUGCUGCGGUCCUCGCAUCUAGCGUUGUGGUUAGGGUGUGUAACUUCGAGAACAGUGAGUCCCGUACCAGGUAGCAUAAUGCGAGCAAUGUCGUACGAUUCAUAG']
.forEach(c=&gt;console.log(c,'-&gt;',F(c)))


Output

AUGCUAG -&gt; Error
GGGCACUAG -&gt; Error
AUGAACGGA -&gt; Error
AUGUAGUGA -&gt; Error
AAAAAAA -&gt; Error
AUGUUUGUUCCGUCGAAAUACCUAUGAACACGCUAA -&gt; Error
AUGAGGUGUAGCUGA -&gt; MRCS*
AUGCCAGUCGCACGAUUAGUUCACACGCUCUUGUAA -&gt; MPVARLVHTLL*
AUGCUGCGGUCCUCGCAUCUAGCGUUGUGGUUAGGGUGUGUAACUUCGAGAACAGUGAGUCCCGUACCAGGUAGCAUAAUGCGAGCAAUGUCGUACGAUUCAUAG -&gt; MLRSSHLALWLGCVTSRTVSPVPGSIMRAMSYDS*