Which term is correct — "Afghan" or "Afghani"?
The correct term is Afghan although Afghani is often used as well.
The wiktionary entry1 for Afghani reads:
Afghani
- A citizen or native of Afghanistan. From an Afghan point of view this name is wrongly being used for Afghans. After the Soviet invasion of Afghanistan millions of Afghans took refuge in neighboring Pakistan. The Pakistanis and the international aid agencies coined this word to speak of Pakistanis versus the Afghans2.
- (usually lowercase) A monetary currency used in Afghanistan, divided into 100 pul.3
Purists will advocate the use of the former (Afghan) while well meaning ethnically minded people will often prefer the latter (Afghani) with no offensive connotation at all. Here is a randomly picked example.
I can see at least two reasons why Afghani could be perceived as offensive.
Its resemblance with Paki, a deliberately derogatory term for Pakistani.
The expression "Afghani Arab". Afghanis are these Muslim fighters (mujahideen) from Arab countries who joined the various resistance movements in the last two decades of Afghan wars. In this sense, the final 'i' is the Arabic suffix marking an origin. The Arabic word for Afghan is also pronounced afġān (افغان). This is probably the meaning that your friend had in mind.
Note 1:
Wiktionary is actually missing a third meaning: Afghani being also a lesser used synonym for the Pashtu language.
Note 2:
To be understood as "The Pakistanis and the international aid agencies coined this word to speak of Pakistanis [Afghans] versus the Afghans [who stayed in Afghanistan]".
Note 3:
Because of the succession of governments in Afghanistan, Afghanis banknotes are often redesigned and are both affordable and appreciated by banknotes collectors. My preferred one.
I would be surprised if your friend were Afghan.
Afghani is simply a Persian/Dari genitive and so in itself is not offensive, though Afghan is better English, while al-Afghani turns up in several people's names. The only real issue is who has previously used it for what purpose. Paki for example is offensive in Britain, solely because of its racist use in the the past, and for obvious reasons is more offensive when aimed at Indians than at Pakistanis.
I am Afghan, and when people say Afghani, we instantly think of the currency. We use Afghan to represent that someone is from Afghanistan.
It's not offensive per se, but it's not correct. It's not that big deal, though. Just try to use the right word, but if you don't, it's not going to be the end of the world.
To refer to Afghans as Afghanis is not offensive at all. In Dari/Persian when we talk about people we say for instance, "Is he Afghani or Pakistani?". Of course we ask this in Dari which goes like this, "Afghani ast ya Pakistani?" Is this offensive? Hell NO!
In Dari Grammar to make an adjective from a noun you put the suffix -i at the end. Example: America is noun to refer to the people of America we say, "Amerikai" or American. Iran is a country and people from Iran are Irani. Of course this is all in Dari. That is how the grammar works.
Finally, the word Afghani which is used for the Afghan currency is a Pashto word which is pronounced differently from Afghani. It is even written differently in Pashto. But because that Pashto sound does not exist in Dari, people say Afghani when they refer to people and when they talk about money they use Afghani. So, it is the context that matters. If you talk about currency you say Afghani and people know you talk about money. When you talk about people you say Afghani and people know you refer to Afghans or Afghanis.
Next time someone corrects you that it is incorrect or offensive to refer to an Afghan as Afghani, refer them to this post!
I lived in Afghanistan for a couple of years and here's the lowdown - you call the inhabitants of Afghanistan (whether they are of Pashtun, Tajik, Uzbek, Hazara, Nuristani etc. ethnic origin)- AFGHANS. The money they use is called an Afghani. It's not offensive per se. Maybe if used in the context where you use these terms for someone who's not an Afghan - it could be offensive.