mirror of
https://bitbucket.org/smil3y/kdelibs.git
synced 2025-02-24 10:52:49 +00:00
32 lines
1.4 KiB
Text
32 lines
1.4 KiB
Text
![]() |
How to identify entries
|
||
|
-----------------------
|
||
|
|
||
|
The KNS2::CoreEngine uses id() for entries and pid() for providers to find out
|
||
|
a unique identifier which can be used to compare one of them to another one of
|
||
|
the same kind.
|
||
|
|
||
|
In KNS1, the name and the payload URL were used to compare the entries, as
|
||
|
they're guaranteed to exist. In KNS2, the internationalised nature of those
|
||
|
tags is honoured.
|
||
|
The proposed comparison algorithm is hence called "internationalised
|
||
|
identification" (i18n-id) and is already implemented by Hotstuff.
|
||
|
It will also be implemented by KNewStuff2.
|
||
|
|
||
|
How does i18n-id work?
|
||
|
Out of all the tags of an entry, one is taken randomly. Its content together
|
||
|
with its language form the identity tuple. When an entry is to be compared,
|
||
|
the tag with the same language as used in the id is used for comparison.
|
||
|
Note that i18n-id works even in the absence of a language attribute. However,
|
||
|
in GHNS, a language attribute will almost always be present. It'd be naive to
|
||
|
throw information away when it is present already.
|
||
|
|
||
|
What i18n-id assumes is that translations never vanish, once added. It would
|
||
|
of course be trivial to extend the algorithm to check through all of the
|
||
|
languages once present, hence it would work as long as at least one
|
||
|
translation is kept.
|
||
|
|
||
|
What i18n-id achieves is that one doesn't have to rely on "unique ids"
|
||
|
maintained by the server, which would definitely change if repositories are
|
||
|
merged.
|
||
|
|