Replace Archive Widget Link Text

You can use regular expression and the preg_replace_callback() function:

function _make_khmer_link_replace_callback( array $matches ) {
    return '<a' . $matches[1] . '>' . convert_numbers_to_khmer( $matches[2] ) . '</a>';
}

function make_khmer_link( $link ) {
    if ( get_bloginfo( 'language' ) == 'km' ) {
        $link = preg_replace_callback( '#<a(.*?)>(.+?)</a>#', '_make_khmer_link_replace_callback', $link );
    }
    return $link;
}
add_filter('get_archives_link', 'make_khmer_link');

PS: You can see the full code (including your existing functions) at Pastebin.