Hi,
Ahh, yes, I had missed that. Then, I reread the whole thread and I understand what's going. I thought that your problem was that the products were not ordered properly, but they do, it's just that the data is not consistent.
Yes, when you have Falang, and you order the listing on the product_name column, the system will order the listings by first ordering the products by their translation and then by their original text. So if you don't fill all the translations, then you'll have strange orderings. We do that so that you can still have the ordering properly when you just have falang but didn't translate the product names at all (because you don't need to).
Try replacing the code:
$on .= ' LEFT JOIN #__'.$trans_table.' AS trans_table ON trans_table.reference_table=\'hikashop_product\' AND trans_table.language_id='.$language_id.' AND trans_table.reference_field=\''.$match[3].'\' AND '.$match[2].'.product_id=trans_table.reference_id';
$order = $match[1].'trans_table.value '. $match[4].', '.$match[2].'.'.$match[3].' '.$match[4].$match[5];
to:
$select2 .= ', CONCAT(trans_table.value, '.$match[2].'.'.$match[3].') AS translation_for_orderby';
$on .= ' LEFT JOIN #__'.$trans_table.' AS trans_table ON trans_table.reference_table=\'hikashop_product\' AND trans_table.language_id='.$language_id.' AND trans_table.reference_field=\''.$match[3].'\' AND '.$match[2].'.product_id=trans_table.reference_id';
$order = $match[1].'translation_for_orderby '. $match[4].$match[5];
in the file components/com_hikashop/views/product/view.html.php
That should allow it to order the products with either the translation or the product_name. However, that query will be much slower, but I don't see any way to do that differently.