Created attachment 82073 [details] List of vCards When verifying the PinYin support for Search using the UnifiedAddressBook Search in SyncEvolution and the Search in Evolution-Data-Server. It appears that the result sort order is not the same. Step 1) Set locale to zh_CN Step 2) Create a number of vCards in (English and Chinese) Step 3) Create a Peer SetPeer (peer_name_test1, files /htmp/zh2) Step 4) SyncPeer (peer-name_test1) Step 5) SetSortOrder(first/last) Step 6) Search ("") This returns a list of vCards, the English vCards are correct but the Chinese vCards are not in correct order. My Dictionary My Dictionary Chinese English Pinyin 鳥 Bird niǎo 犬 Dog quǎn 人 Man rén 人 物 Person rén wù 女 性 Woman nǚ xìng 汽 車 Car qì chē 屋 House wū 物 Thing wù 五 Five wǔ 無 not wú 務 affair wù 任 何 any rèn hé 單 Bill dān VCards and 2 screen shoots attached. Vcards in a mixture of English & Chinese 1 screen shot of results side by side 1 screen shot of part of the problem (item 4/5 in list)
In the archive you say: Entry 4,5 are in reversed order 鳥 = niǎo 女性 = nǚ xìng So the question becomes - which order is correct, and which app does not follow it? According to http://demo.icu-project.org/icu-bin/locexp?_=zh&d_=en&x=col&collation=pinyin 1. 鳥 2. 女性 is correct. Daniel, in your report you have two screen shots, but I can't tell which window shows results from EDS and which one from PIM Manager. Can you please clarify?
The screenshot is composed of multiple windows on view. The Center window (containing the field uid: "pas-id-XXXXXXXXXXXXXX" is from evolution-data-server. The Leftmost window (containing index, fullname, name) is from SyncEvolution.
(In reply to comment #2) > The screenshot is composed of multiple windows on view. > > The Center window (containing the field uid: "pas-id-XXXXXXXXXXXXXX" is from > evolution-data-server. The Leftmost window (containing index, fullname, > name) > is from SyncEvolution. So it is the PIM Manager which sorts it differently. I'll check.
According to http://demo.icu-project.org/icu-bin/locexp?_=zh&d_=en&x=col&collation=pinyin 1. 鳥 2. 女性 is correct. Agreed! However the output of the SyncEvolution does not match this! I believe the issue is in SyncEvolution. Once sorted the correcet order should be this I believe index 0 = Brian index 1 = 單 ( dān) index 2 = Even index 3 = Evenly index 4 = 鳥 (niǎo) index 5 = 女 性 (nǚ xìng) In SyncEval it is not (index 4 & 5 are reversed) index 0 = Brian index 1 = 單 ( dān) index 2 = Even index 3 = Evenly index 4 = 女 性 (nǚ xìng) index 5 = 鳥 (niǎo)
(In reply to comment #4) > However the output of the SyncEvolution does not match this! > > I believe the issue is in SyncEvolution. That's what I said - PIM Manager is the part of SyncEvolution which does the sorting ;-)
I noticed that at least one of the contact files is invalid: BEGIN:VCARD VERSION:3.0 FN:Brian N:Brian;;;; TYPE=WORK,FAX:003538712310010 ORG:18-Brian END:VCARD A "TEL:" is missing in the TYPE=WORK,FAX:003538712310010 line. Several other files had extra white spaces at the end of a line or before/after the vcard. This has nothing to do with the actual problem, I just wonder how the files were created.
These files was manually created using VI on linux for test purposes. They were "Sync" via the the file import (not via bluetooth) I was not testing the Telephone No. feature so I was not worried about the phone no. but thanks for catching it. It will save me time when I come to testing the telephone no.
Created attachment 82186 [details] vcards for testing I've not been able to reproduce this issue. Here's what I have done: $ syncevolution --daemon=no --delete-items backend=evolution-contacts database='' --luids \* $ syncevolution --daemon=no --import /tmp/zh2 backend=evolution-contacts database='' #0: 1.vcf: pas-id-51DAC11400000065 #1: 10.vcf: pas-id-51DAC11400000066 #2: 11.vcf: pas-id-51DAC11400000067 #3: 12.vcf: pas-id-51DAC11400000068 #4: 13.vcf: pas-id-51DAC11400000069 #5: 14.vcf: pas-id-51DAC1140000006A #6: 15.vcf: pas-id-51DAC1140000006B #7: 16.vcf: pas-id-51DAC1140000006C #8: 17.vcf: pas-id-51DAC1140000006D #9: 18.vcf: pas-id-51DAC1140000006E #10: 19.vcf: pas-id-51DAC1140000006F #11: 2.vcf: pas-id-51DAC11400000070 #12: 20.vcf: pas-id-51DAC11400000071 #13: 3.vcf: pas-id-51DAC11400000072 #14: 4.vcf: pas-id-51DAC11400000073 #15: 5.vcf: pas-id-51DAC11400000074 #16: 6.vcf: pas-id-51DAC11400000075 #17: 7.vcf: pas-id-51DAC11400000076 #18: 8.vcf: pas-id-51DAC11400000077 #19: 9.vcf: pas-id-51DAC11400000078 $ LC_TYPE=zh_CN.UTF-8 LC_ALL=zh_CN.UTF-8 LANG=zh_CN.UTF-8 syncevo-dbus-server & [3] 15550 $ ~pohly/src/syncevolution/src/dbus/server/pim/examples/search.py -s '[]' -a '' -r -m -o first/last ... => * 000 Brian {'roles': [{'organisation': '18-Brian'}], 'phones': [('TYPE=WORK,FAX:003538712310010', [])], 'full-name': 'Brian', 'source': [('', 'pas-id-51DAC1140000006E')], 'structured-name': {'family': 'Brian'}, 'id': 'd6e7f928afeffa05a9061e52d7bb6037cf031744'} * 001 單 {'full-name': u'\u55ae', 'source': [('', 'pas-id-51DAC11400000069')], 'structured-name': {'family': u'\u55ae'}, 'id': '981377f4e771e5c27533511777987c2597330ed7', 'roles': [{'organisation': u'13-d\u0101n'}]} * 002 Evan {'roles': [{'organisation': '19-Evan'}], 'phones': [('+3955510010', ['home', 'voice'])], 'full-name': 'Evan', 'source': [('', 'pas-id-51DAC1140000006F')], 'structured-name': {'family': 'Evan'}, 'id': 'd221126a2591ccbb8327dd7da2d8557598dcc24d'} * 003 Evanly {'roles': [{'organisation': '20-Evan'}], 'phones': [('(111) 555-10010', ['voice', 'work'])], 'full-name': 'Evanly', 'source': [('', 'pas-id-51DAC11400000071')], 'structured-name': {'family': 'Evanly'}, 'id': '1d9076397a9052264694385718d0915203d24aba'} * 004 鳥 {'roles': [{'organisation': u'01-ni\u01ceo'}], 'phones': [(' +353 214343730', ['voice', 'work'])], 'full-name': u'\u9ce5', 'source': [('', 'pas-id-51DAC11400000065')], 'structured-name': {'family': u'\u9ce5'}, 'id': '247bc737fa5b823f039e94470e797587af8bb39f'} * 005 女性 {'full-name': u'\u5973\u6027', 'source': [('', 'pas-id-51DAC11400000074')], 'structured-name': {'family': u'\u5973\u6027'}, 'id': '618fe5523a3c74426509233843a17b586ea01f05', 'roles': [{'organisation': u'05-n\u01da x\xecng'}]} * 006 汽車 {'full-name': u'\u6c7d\u8eca', 'source': [('', 'pas-id-51DAC11400000075')], 'structured-name': {'family': u'\u6c7d\u8eca'}, 'id': 'c298e80abd5109d4d0db296b9df3430e823d956d', 'roles': [{'organisation': u'06-q\xec ch\u0113'}]} * 007 犬 {'roles': [{'organisation': u'02-qu\u01cen'}], 'phones': [(' 00353 214343731', ['home', 'voice'])], 'full-name': u'\u72ac', 'source': [('', 'pas-id-51DAC11400000070')], 'structured-name': {'family': u'\u72ac'}, 'id': '34d2594b50b8800664b808db802ef91f33e57f83'} * 008 人 {'roles': [{'organisation': u'03-r\xe9n'}], 'phones': [(' (021) 4343733', ['voice', 'work'])], 'full-name': u'\u4eba', 'source': [('', 'pas-id-51DAC11400000072')], 'structured-name': {'family': u'\u4eba'}, 'id': '505ca0dfc995ee408d68a71ff43c8433f22f6eb2'} * 009 任何 {'full-name': u'\u4efb\u4f55', 'source': [('', 'pas-id-51DAC11400000068')], 'structured-name': {'family': u'\u4efb\u4f55'}, 'id': 'fd358214c039a03c8b87f04162825a983998d395', 'roles': [{'organisation': u'12-r\xe8n h\xe9'}]} * 010 人物 {'roles': [{'organisation': u'04-r\xe9n w\xf9'}], 'phones': [(' 0214343734', ['voice', 'work'])], 'full-name': u'\u4eba\u7269', 'source': [('', 'pas-id-51DAC11400000073')], 'structured-name': {'family': u'\u4eba\u7269'}, 'id': '9d411a655d3df4193ee19a239b06ded4fa1af59b'} * 011 Tom {'full-name': 'Tom', 'source': [('', 'pas-id-51DAC1140000006A')], 'structured-name': {'family': 'Tom'}, 'id': '53c08b49402fb8a362346ce5b4b7be7baddba138', 'roles': [{'organisation': '14-Tom'}]} * 012 Will {'full-name': 'Will', 'source': [('', 'pas-id-51DAC1140000006C')], 'structured-name': {'family': 'Will'}, 'id': '29b20705bffe3411345962f368ea2a3d1c0d18c1', 'roles': [{'organisation': '16-Will'}]} * 013 William {'full-name': 'William', 'source': [('', 'pas-id-51DAC1140000006B')], 'structured-name': {'family': 'William'}, 'id': 'd58628fd36f114205f53fe410da0e2e39903abf3', 'roles': [{'organisation': '15-William'}]} * 014 屋 {'full-name': u'\u5c4b', 'source': [('', 'pas-id-51DAC11400000076')], 'structured-name': {'family': u'\u5c4b'}, 'id': 'eebd8b9d701217a878b78c01a68f384366a63a1d', 'roles': [{'organisation': u'07-w\u016b'}]} * 015 無 {'full-name': u'\u7121', 'source': [('', 'pas-id-51DAC11400000066')], 'structured-name': {'family': u'\u7121'}, 'id': '0c5e6b42b48e7dd0a09b1d40f7811740b9732ec4', 'roles': [{'organisation': u'10-w\xfa'}]} * 016 五 {'full-name': u'\u4e94', 'source': [('', 'pas-id-51DAC11400000078')], 'structured-name': {'family': u'\u4e94'}, 'id': '7984f78af60b238fedea5921f5902f7a2312ee90', 'roles': [{'organisation': '09-wu'}]} * 017 物 {'full-name': u'\u7269', 'source': [('', 'pas-id-51DAC11400000077')], 'structured-name': {'family': u'\u7269'}, 'id': '141631f4f690ba8818f976401891703842dae122', 'roles': [{'organisation': u'08-w\xf9'}]} * 018 務 {'full-name': u'\u52d9', 'source': [('', 'pas-id-51DAC11400000067')], 'structured-name': {'family': u'\u52d9'}, 'id': '51ae00c3ea14e3bd9cd02765467d4d55f4a37ded', 'roles': [{'organisation': u'11-w\xf9'}]} * 019 Wylam {'full-name': 'Wylam', 'source': [('', 'pas-id-51DAC1140000006D')], 'structured-name': {'family': 'Wylam'}, 'id': 'b03593dc24ec111703203a698a08cc135bfc3c10', 'roles': [{'organisation': '17-Wylam'}]} Note that 鳥 comes before 女性 at index 4 resp. 5, as expected. Attached the cleaned up vcards that I was using. Which version of SyncEvolution were you using? See "syncevolution --version". Was the locale set in the environment before starting syncevo-dbus-server? See "strings /proc/`pidof syncevo-dbus-server`/environ | grep zh_CN". Can you try to reproduce it exactly as above? The search.py script is part of the source tree and distribution.
Which version of SyncEvolution were you using? See "syncevolution --version". Syncevolution Version SyncEvolution 1.3.99.3+20130529+SE+b989f69+SYSYNC+3366831 ----------------------------------------------------------- Was the locale set in the environment before starting syncevo-dbus-server? See "strings /proc/`pidof syncevo-dbus-server`/environ | grep zh_CN". Syncevo-dbus-server is started automatically on bootup! I do not have the system at the moment ..so I will back to you with desired information! ----------------------------------------------------------- The method used to create the files was as follows on default locale (POSIX) 1) Created the vcards. (In fact they were copied from another machine to save time) 2) SetPeer test1 files /tmp/zh2 3) SyncPeer test1 4) Listed all the pears via device view 5) List all the pears in Unified Address Book 6) Change Locale zh_CN & reboot 7) Listed all the pears via device view 8) List all the pears in Unified Address Book ----------------------------------------------------------- I will install the search.py and any additional files I need to get your requested information.
> I will install the search.py and any additional files I need to get your > requested information. The fist check should be for the environment of the running syncevo-dbus-server. If it doesn't get the right env variables when it starts, then it will not adapt to changes of those settings later on. Adding that feature is on my list, but wasn't part of the original plan (and delivery). If this issue here turns out to be caused by the lack of runtime adjustment to locale changes, then we can use it to track the feature request.
Sorry for the delay! In answer to your question :- Was the locale set in the environment before starting syncevo-dbus-server? See "strings /proc/`pidof syncevo-dbus-server`/environ | grep zh_CN". No locale was set in /etc/***/environ
(In reply to comment #11) > Sorry for the delay! > > In answer to your question :- > > Was the locale set in the environment before starting syncevo-dbus-server? > See "strings /proc/`pidof syncevo-dbus-server`/environ | grep zh_CN". > > No locale was set in /etc/***/environ That doesn't quite answer the question. Even if nothing is set in /etc, the process might still get spawned with the right environment variables. To be absolutely sure, please run the "strings" command above.
Unable to run exact command .. no pidof So manually ps aux | grep syncevo-dbus root 2717 0.0 1.5 119312 16468 ? S1 14:18 0:00 /usr/libexec/syncevo-dbus-server strings /proc/2717/environ | grep zh_CN nothing!!! strings /proc/2717/environ | grep en_GB nothing!!!
(In reply to comment #13) > Unable to run exact command .. no pidof > > So manually > > ps aux | grep syncevo-dbus > > root 2717 0.0 1.5 119312 16468 ? S1 14:18 0:00 > /usr/libexec/syncevo-dbus-server > > > strings /proc/2717/environ | grep zh_CN > > nothing!!! > > strings /proc/2717/environ | grep en_GB > > nothing!!! That probably explains the problem. Can you double check that running with valid env variable makes the sorting work as expected? Kill the process above, then run it with DBUS_SESSION_BUS_ADDRESS and LC_* variable set. You should also fix your system such that these env variables get set in the environment of all process before they start. For SyncEvolution and in particular with EDS you really want to avoid the situation where it starts with unset env variables, then changes at runtime to the real ones. In EDS, that can lead to rewriting the database twice (go to C locale, back to real one).
Created attachment 82578 [details] [review] introduce utility class for monitoring localed
Created attachment 82579 [details] [review] make usage of system D-Bus optional (for testing)
Created attachment 82580 [details] [review] use the helper class to get and adapt locale settings at runtime
Daniel, what is the status with this issue? Support for localed has been in SyncEvolution for a while. Is that good enough so that we can close this issue?
I believe this is now working! It can be set to closed!
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.