Repository navigation
Added Georgian language configuration - #1088
Conversation
PR Summary
|
kingthorin
left a comment
There was a problem hiding this comment.
Are you able to provide any source details? (Just to make future updates etc easier)
| * @return A valid ID Number | ||
| */ | ||
| public String validGeIDNumber() { | ||
| return faker.numerify("###########"); |
There was a problem hiding this comment.
According to wikipedia this should be 9 digits. 🤷♂️
https://en.wikipedia.org/wiki/National_identification_number#Georgia
In Georgia personal number is 9 digits and may contain leading zero. It is assigned to citizens at birth and to residents on demand. Personal number is used for identification in all government and many commercial institutions. Personal number is also reused as taxpayer identification number for Individual entrepreneurs. For citizens first few digits apparently represent place of birth, but format is not public.
There was a problem hiding this comment.
Information in Wikipedia is not accurate and seems like I have to contribute there too. It was not easy to find English versions of the legal acts but fortunately there are some.
Here are legal acts translated in English https://www.geoconsul.gov.ge/en/legal-acts
Please scroll down to "ON APPROVAL OF THE RULES FOR ISSUING ID (RESIDENCE) CARD, PASSPORT, TRAVEL PASSPORT AND TRAVEL DOCUMENT" (Direct link: https://gc-pfiles.mfa.gov.ge/DocFiles//2023/12/14/LegalAct/24/19480459-a1ca-4723-94cd-10a6b3290990.pdf )
This is the =Order of the Minister of Justice, from July 27, 2011.
Article 14 - Assigning a personal number
- A personal number shall consist of eleven digits. The first two digits (from 01 to 99) shall be an administrative unit code, the following digit (from 1 to 9) shall be a check digit obtained by a certain formula from the other ten digits. The following two digits (from 01 to 99) shall be the code of the
territorial office of the Agency that has assigned the personal number to the person and the last six digits shall be the serial number of the record of the assignment of a personal number to a person (from 000001 to 999999), except for the combinations 666XXX, X666XX, XX666X, XXX666. - The chairperson of the Agency, with the agreement of the Minister of Justice of Georgia, shall define the formula for obtaining a check digit.
- The first two digits of a personal number assigned to a citizen of Georgia staying abroad shall denote the Ministry of Foreign Affairs of Georgia, the following digit (from 1 to 9) shall be a check digit, the following two digits shall indicate the diplomatic mission or the consular office of Georgia abroad that has assigned the personal number. The other six digits shall be the serial number of the record of the assignment of a personal number to a person,
except for the combinations 666XXX, X666XX, XX666X, XXX666.
In fact, the "formula" mentioned in the paragraph 6 was never published (I was working in that agency from 2011 and was a deputy chairperson from 2017 to 2019, until my departure. I cannot recall publishing this even in Georgian). Everybody in Georgia now considers the personal number is an arbitrary sequence of 11 digits, defined by the Governmental agency.
The 11-digit personal numbers were established long ago, in 90's, after gaining independence (I have received mine somewhere in 1993 I guess) but unfortunately, I could not find the older legal act. Probably it's not digitized.
In the previous order of the Minister of Justice from 2004 (https://matsne.gov.ge/ka/document/view/59044 - in Georgian) which was substituted with the above-mentoned one in 2011, article 7 says the personal number contains 11 digits, but there is no mention about 666 (You can find "მუხლი 7. პირადი ნომრის მინიჭება" and copy-paste it in Google Translate. But do not expect great quality of the translation).
Since the current "666 rule" is relatively new (and there are people with who was issued ID number in 90s with "666" in it, including one of my relatives), I decided not to implement it for now, for simplicity.
What I can also provide in addition is EU PRADO database where you can browse various types of Georgian identity documents including ones issued in 2002 all containing 11-digit ID number: https://www.consilium.europa.eu/prado/en/prado-documents/geo/index.html
Regarding 9-digit identifier: this is a tax identifier assigned by the tax authority. Nowadays they assign it to legal entities only. However, decades ago, taxpayer natural persons were issued these 9-digit numbers too in addition to the 11-digit personal numbers and probably the guy who was editing Wikipedia article did not pay much attention. Eventually the tax authority gave up this practice and start accepting 11-digit numbers too for natural persons/individual entrepreneurs.
I hope this helps.
Best Regards,
Mikheil
There was a problem hiding this comment.
Thanks that's great!
Any source info for the names etc. if not it isn't a blocker it's just a "nice to have" for the future if anyone wants to update it or if someone asks questions.
There was a problem hiding this comment.
First names and last names were taken from the public sources:
- Most frequent and most rare first and names, official statistics: https://intpass.sda.gov.ge/NameStatistics.aspx?type=popular and https://intpass.sda.gov.ge/NameStatistics.aspx?type=rare
- First and last names of the candidates from two largest political parties (https://civil.ge/ka/archives/372333 and https://civil.ge/ka/archives/372431) - some of them were removed (the rare ones, to ensure any linkage to the particular person using first name or last name only).
- Few others, like names of my children, first and last names of near and distinct relatives, etc. I could recall.
- Some funny last names from "folklore" like "ღობეგლეჯიაშვილი" (means "child of fencedestroyer") and "ჯირკიგლეჯიაშვილი" (means "child of stumpdestroyer") - they sound as the real Georgian family names, but they aren't (to my best knowledge). I frequently use for testing.
City names are number of real cities.
Street names are ... lol... it was the hardest one :) There was an announcement about the electricity outage, containing long list of the streets :-) Here: https://commersant.ge/news/society/tbilisis-quchebi-romlebsats-dghes-eleqtromomarageba-sheutsydeba-17679 so I took ones from Vake region of Tbilisi as it was the longest one, and added few other names I could recall from my memory just not to bind this to Vake only.
I hope I did not violate anything.
There was a problem hiding this comment.
No I think that's fine. Like I said it's just good for future maintenance and support that we know what to point to
|
Hi @mikheil-aisitec , this PR looks great, and thank you for providing some insight in your sources, that was an absolutely great read. I think this PR is ready to be merged unless @kingthorin has any other feedback (thanks for asking those questions, much appreciated!!) Update : seems the build failed, I'll have a look in a moment. |
|
I just re-ran it. I think we have a flaky integration test. |
|
|
Sorry, added states too. |
Codecov ReportAll modified and coverable lines are covered by tests ✅
❗ Your organization needs to install the Codecov GitHub app to enable full functionality. Additional details and impacted files@@ Coverage Diff @@
## main #1088 +/- ##
============================================
- Coverage 92.35% 92.31% -0.04%
- Complexity 2821 2822 +1
============================================
Files 292 292
Lines 5609 5611 +2
Branches 599 598 -1
============================================
Hits 5180 5180
- Misses 275 276 +1
- Partials 154 155 +1 ☔ View full report in Codecov by Sentry. |
|
Great! Thanks all, it's been merged, and should be available as a snapshot release in a few moments. If you need a production release, please let me know, it takes a bit more effort to do a proper release. |
|
@kingthorin seems you were right, it does look like there's a flaky test somewhere, the merge to master failed. |
|
@bodiam @kingthorin does not look like test case failure. JDK17 passed as well as JDK21 on Ubuntu.
|
Country names, addresses, streets, names and phone numbers in Georgian were added. ID number generator was also added. ID numbers in Georgia are 11-digit numbers without any personal data or publicly known dependency between digits. ID numbers can begin with 0.
Compound given and family names are also supported: