@Marc B's answer is correct, bu I'll take the liberty of adding a bit of detail. See, as already stated, the brackets you added to your inputs' names basically indicate that those inputs hold one of multiple values, i.e., that input is inside an array, so PHP is actually expecting an array of values for said post argument, like in this case:
<input class="input-small" type="text" id='tamil_1' name='tamil[]' />
<input class="input-small" type="text" id='tamil_2' name='tamil[]' />
<input class="input-small" type="text" id='tamil_2' name='tamil[]' />
When you send this, values will be parsed and placed in $_POST['tamil'], which will be an array with 3 values, the same happens to you, but you're sending only one value (as you understand, an array with one value, is still an array), so you have a structure that looks like this:
$_POST=array(
'tamil'=>array(...),
'english'=>array(...)
);
As stated by @Marc B, you can iterate through that array like so:
foreach($_POST['tamil'] as $k=>$v) {
//Do something with the value stored in $v or the key in $k
}
Now, you stated in a comment that you're new to PHP, so I'll clarify a bit regarding that behavior in which you insert rows with (array, array), when you try to place a variable inside a string, via concatenation or interpretation, like in your example (variables inside double quotes are interpreted by PHP before adding them to the string, as I suppose you're well aware since you used this syntax), said variables are first parsed into strings. Now, PHP is not the kind of fellow who questions what you're doing, so he will go with the flow most of the time and, instead of throwing an exception, he'll just cast your variable (whatever the type) into a string, how does he cast arrays into strings? by just returning 'array', of course.
So, in your code, PHP casts the arrays as strings and you end up having 'insert into table(col1,col2) values('.'array'.','.'array'.')'.