Becoming proficient in the language's more esoteric edge cases in regards to syntax, etc. is not so important, because that stuff you can look up if you need it. The details of a problem space are often things you won't even know to ask yourself or look up, if you aren't proficient in that problem space. If a prospective employer requires that you know the esoteric details of Golang or Rust in order to get the job, they're probably not a great employer, and there are plenty of others out there who know better than that.
The literal answer to your question is 3 or 4.
I think I could write a toy clone of React in the following languages:
Typescript/JavaScript
Golang
Ruby
Kotlin
Python
I think I would struggle to write a toy clone of React in these languages, but I could probably write an animated gif viewer for the terminal:
Java
C
A lot of the languages on this list are extremely similar - Python, Ruby, JavaScript are all dynamic scripting languages with more or less equivalent expressivity although Ruby is substantially more fun. Golang, Kotlin, Typescript, and Java can all be written with roughly the same “structs with methods” style, although error handling in Go is more verbose, and Kotlin is much more fun.
I think once you have enough experience with the mainstream kind of imperative language listed above, getting up to speed on another variant in that category is pretty quick, especially for languages with modern and accessible tooling like Go.
C is the “most different” language here since it isn’t memory-safe, nor does it have easy access to closures. Without those it’s much more tricky for me to do fancy composition shenanigans… It’s straightforward to implement an OO classical inheritance system in any language with closures. Still, if you know C it’s super easy to understand Go, since Go is basically C on easy mode.
0. assembly and machine languages
1. procedural static typed (C/C++, Java, Go, Kotlin, Obj-C, Swift, Zig, etc)
2. procedural scripting (Python, Ruby, PHP, etc)
3. functional (F#, OCaml) -- to a lesser extent Scala
4. lisp-y (Clojure, Racket)
5. ref. capable: learning Rust (played with Pony, Clean)
Sadly I still cannot grok OO, but not an issue for me. These days and maybe for the past 10 years, OO is a must for people. :(
I hope this is the last switch. Also making one at https://tablam.org.
All of this have been for paying jobs, not counting any other auxiliar thing (like the 5 or 6 SQL dialects) or fun things/experiments I could have done.
But, I'm not "proficient" in all of it, because you forgot after a while, so only can claim some level of proficiency in the last batch.
Moving among languages is not THAT hard actually, in special if you stay around the same-ish paradigms and niches of programming (ie: Most of that languages were using doing the same kind of app: A part of a ERP).
Only moving into serious change of paradigms is rough, for me was: FoxPro -> Everything else (suddenly, making business apps is hard), Delphi -> Everything else (and now, Delphi/Fox were the last languages where making UIs was fun), F# (first touch of functional languages), Obj-C (first re-confirmation of everything wrong with the C family of languages), Rust (first time where I need to unlearn almost everything so far, but then come back with vengeance and now is the most efficient language I have used for non-UI task so far).
And Html/Css/JS, that have never stopped to be bad. And is getting worse. Ok, I lie: I use htmx/tailwindcss to resist as much to touch they...
Lots more depending on your definition of “proficient”.
“How do you be proficient if you study so many languages?”
All programming languages are basically the same if you squint at them.
Each language is better at different things, and can help you see code in different ways. Learning Haskell will help you write better JavaScript, for example.
So really I think the opposite is true: how do you know you’re not boxed into a narrow way of thinking if you’ve only used 1 language?
I am maximally productive in a small handful of languages because I use them the most and am familiar wit the idioms, pitfalls, libraries, etc.
If you use other languages day-to-day I don’t think you’ll be able to maintain maximal productivity with Rust and Golang. But learning them can teach you alternative perspectives, or can give you a leg up if you encounter a problem to solve that lies within their sweet spot.
The goal was never to be proficient in several languages. My work just called for different languages over the years, so I learned them as I went. After a while, once you get the core concepts and general thinking/reasoning down, another language is _largely_ just picking up a new syntax and set of conventions, not a monumental task.
I also know some PHP, Python, etc, but not to a capacity where I can just sit down and write a program without consulting some guides/docs, and no experience with the popular frameworks.
This month I have programmed in the following languages:
D, ECMAscript, python, php, bash, c/c++, Java, powershell, and groovy.
There are other langues I use. as for how? Most of what to do in each language is the same, the Languages just change how you go about doing it. Most of the difference is the keywords and syntax. the tasks you are writing out are the same or similar, with some features of languages making certain parts easier.
I tried Rust, and the borrow checker was a huge red flag for me. The idea of "owning" the value of a variable was too weird.
I'll stick to Free Pascal, C, Assembler and STOIC, it turns out I'm a fan of VERY STRONG type checking.
APL does look interesting
Wut? I love Go but I don't observe that. According to actual hiring patterns it seems like Python, Java, and probably C# are better bets. I am retired so I may have a skewed outlook.