nextcloud / contacts

📇 Contacts app for Nextcloud
https://apps.nextcloud.com/apps/contacts
GNU Affero General Public License v3.0
569 stars 173 forks source link

Contacts is missing several of the most popular IM services #1516

Closed ksl1989 closed 4 years ago

ksl1989 commented 4 years ago

Describe the bug

While SIP numbers have been added recently (#1511) the app is still missing support for several of the popular IM services, including QQ and WeChat (the most popular in China and probably the World), KakaoTalk (most popular in Korea) and Line (most popular in Japan). Unlike other clients (such as Android and iOS) it also does not let the user set a custom service which would somewhat make up for the missing entries.

To Reproduce Try to add a QQ, WeChat, Line or KakaoTalk handle to a contact.

Expected behavior At least the most popular services should be found in the drop-down menu. Less common services can be added by selecting "custom".

Actual behavior IM services not available, no way to add a service not on the list.

Note that adding a vCard with IM services not on the list will work correctly, although only when using the invalid property format that NC Contacts is currently using (see #1396); but this can't be done through the app fronted. E.g.:

BEGIN:VCARD
VERSION:4.0
FN:Alice
IMPP:xmpp:alice@example.com
IMPP;TYPE=QQ:alice2020
IMPP:qq:alice2020
IMPP;TYPE=Line:alice2020
IMPP:line:alice2020
IMPP;TYPE=KakaoTalk:alice2020
IMPP:kakaotalk:alice2020
N:Alice;;;;
END:VCARD

Will be displayed as: IMs

skjnldsv commented 4 years ago

Try to add a QQ, WeChat, Line or KakaoTalk handle to a contact.

How did you added those? Because we can add as many as we want, same as we did in #1512, but those needs to be understand by others clients (iOS, android...) :)

ksl1989 commented 4 years ago

How did you added those?

Like I said, you can't add them through the frontend, but if you import a vCard with services that aren't on the list they'll still be displayed. This is the correct behaviour, clients should accept custom services as it's impossible to list all IM services in existence, and most clients have a custom option. The problem is NC Contacts only understands it if it is in the wrong format, with the service name as a TYPE, but that's a different (and more important) issue: #1396.

but those needs to be understand by others clients (iOS, android...)

Any service name is valid, and clients should display any service as long as the format is right. E.g. IMPP:snapface:alice2020 is valid and should be displayed in clients even if they don't recognize a "snapface" service. This is what Contacts is doing also. You should just be careful to use the same service name as other clients, so you don't get repeated services. E.g. if Android is using gtalk you should use the same, not googlet.

iOS has skype, msnim (MSN Messenger), xmpp (separated in the UI into GoogleTalk, Facebook and Jabber), aim (separated in the UI into AIM and ICQ), ymsgr (Yahoo! Messenger). It also has QQ and Gadu-Gadu under the x-apple service name with custom labels.

Android only exports v. 2.1 vCards which doesn't support IMPP but it knows of AIM, MSN (labelled "Windows Live", Yahoo, Skype, QQ, Google Talk (labelled "Hangouts"), ICQ and Jabber. It also accepts custom service names. DAVx5 should know how to deal with this.

Clients should understand any correctly formatted IMPP line, you just have to be careful not to make a new name for services that are more or less standardized, for the others you can use any name that is recognizable. Right now the Contacts frontend already has Telegram and KiK, which aren't listed in Android or iOS but this should be fine.

jancborchardt commented 4 years ago

@ksl1989 do you want to submit a pull request to add the missing services? :) I guess they just have to be added to the list at https://github.com/nextcloud/contacts/blob/a98247e946cbb091ffd24836f98ae2e79d6d6c52/src/models/rfcProps.js#L164-L180

ksl1989 commented 4 years ago

Sure, that much I can do. But I'm just noting four popular services that are important for me. There may be other services that should be added, e.g. those that are by default on Android and iOS or other popular services. In the end you need to decide which ones you want selectable by default on Contacts. And it's ultimately more important to allow the user to add a custom services.

Should I just submit a PR for these four?

Another note: maybe you are already doing this but the names need to be translatable.

jancborchardt commented 4 years ago

Should I just submit a PR for these four?

Yes please do! :) The 4 you mention are very popular so they should be in the list.

Another note: maybe you are already doing this but the names need to be translatable.

Good point – but this is something for a different issue and pull request, feel free to open one with more info like what it should be translated to, and in which languages or character sets translation is definitely needed (as e.g. brand names are usually not translated, but I assume this is about the alphabets, right?)

ksl1989 commented 4 years ago

Yes please do! :) The 4 you mention are very popular so they should be in the list.

Done: #1559

Good point – but this is something for a different issue and pull request, feel free to open one with more info like what it should be translated to, and in which languages or character sets translation is definitely needed (as e.g. brand names are usually not translated, but I assume this is about the alphabets, right?)

You're right, this is a different issue but it is related because I'm adding Asian IMs that I know have different names in their countries of origin. That's why I thought I should mention it here.

For some languages it is an issue of transliteration to different alphabets or writing systems, but for non-alphabetic writing systems, like Chinese, the name can be quite different, not just a transliteration. E.g. "WeChat" is an English name for the Chinese app known in Chinese as 微信 Wēixìn, lit. "Micro Message", it's not a transliteration. Western brands can also have very different Chinese names. A Chinese user will expect to see 微信 in that drop-down menu.

This is not an issue of character sets, but languages. And I only know a couple languages, I can't tell you all languages in which names need to be translated. Translators will know if they should retain the English name or transliterate/translate it.

skjnldsv commented 4 years ago

To enable translations, feel free to change the syntax of the options there from

{ id: 'QQ', name: 'QQ' },

to

{ id: 'QQ', name: t('contacts', 'QQ') },

This will make this string available for translations on transifex after this pr is merged (maybe to it in a separate pr?)

ksl1989 commented 4 years ago

OK, I guess I can do that, but first let's just get these services added.

jancborchardt commented 4 years ago

@ksl1989 your pull request #1559 is merged – congratulations! :) If you like, you can submit another pull request with the localization.