when you say you know a x programming lang. what does that implies to whether you know syntax of the programming lang or all the libraries and method in the programming language
Probably when you've found that you don't have to read the documentation for the base language in a while. Everyone constantly reads docs on infrequently used libraries and for gotcha parts of a language, but that's far different from having to look up how to create/destroy objects, perform all conditionals, use the data types, etc.<p>Equivalently: when you wouldn't be embarrassed in an interview to write something on the board in that language.
I myself would say so if I can write effective code in it (beyond hello world) and understand the syntax. Many of the languages are too deep to know all the libraries, but you have enough skills with it and with a language guide or google to get it to do what you want.
When given any set of requirements you can implement it in said language. You may not know every particular library but you know enough of the concepts to read the API and implement it, without hacking together a maintenance monster.
I would say that you know a programming language when you can contribute to an open source software and add value to the system (as judged by the community).