Plex ignores bracketed information, but only when it is reading the filename for metadata. Information in brackets is considered to be file encoding info (x.265, AAC audio, etc) which is all information that Plex can get on its own when it scans it. However, it is still a part of the filename itself, so it is important to include the entirety of the file name (minus the file extension) in the subtitle file.
This is important, because you can have multiple (dozens) of copies of a single movie, each with different content (uncut, directors cut, extended cut, George Lucas cut, etc). You can have movies of the same content, but different codecs (1080p vs 720p, x265 vs x264, etc). If you also have different subtitle tracks that relate only to one movie file (important for different “cuts” of a movie), Plex needs to know which EXACT file to include the subtitle file with. So it must have the full (including bracketed info) of the original filename, plus a tiny bit of explanatory text (EN, FR, GE, etc) to describe the contents.
Internal subs, at least in MKVs, support labels and flags that make this easier. Using MKVToolNix, you can set the language of the subtitle in a movie file, and add a label that Plex will fully support to display with the movie. Plex also supports use of the “Forced” flag, to indicate the subtitle should be displayed only for the same language as the audio track.
Identifying each of these subtitle files in a source can be annoying if they are not properly labeled, as I see you found out. Checking the file size of the subs was a really good idea I hadn’t thought of before. Instead, I usually dump them all into VLC along with my movie, then jump around to parts where there is speaking. If text appears that matches the voices, then it’s a dialogue track. Half the time, the text may include the name of the speaker, and/or non-spoken text, like [Singing], in which case the track is SDH. If there is no text at ALL in a talking spot, I can be pretty sure that it is a forced track.
But the filesize is a good idea. If you have 2 tracks, and one is massively smaller than the other, it’s most likely the forced track. If they are close, like within half the filesize of eachother, then they are Dialogue and SDH, and no forced track was included.