Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,10 @@ FResult.Add(' TLangTagsMap = class');
FResult.Add('');
FResult.Add('implementation');
FResult.Add('');
FResult.Add('uses');
FResult.Add(' System.Classes,');
FResult.Add(' System.SysUtils;');
FResult.Add('');
FResult.Add('{ TLangTagsMap }');
FResult.Add('');
FResult.Add(Format('const CLangTags: array[0..%d] of TLangTag = (', [FLangTags.Count - IndexOfVersionRecord - 2]));
Expand Down Expand Up @@ -222,32 +226,49 @@ FResult.Add('type TStringMap = record tag, base: string; end;');
FResult.Add('');

FResult.Add('class function TLangTagsMap.GetLangTags: TLangTagsDictionary;');
FResult.Add('var');
FResult.Add(' i: Integer;');
FResult.Add('begin');
FResult.Add(' if not Assigned(FLangTags) then');
FResult.Add(' begin');
FResult.Add(' FLangTags := TLangTagsDictionary.Create;');
FResult.Add(' for i := 0 to High(CLangTags) do');
FResult.Add(' FLangTags.Add(CLangTags[i].tag, CLangTags[i]);');
FResult.Add(' end;');
FResult.Add(' Result := FLangTags;');
FResult.Add('var');
FResult.Add(' i: Integer;');
FResult.Add('begin');
FResult.Add(' if not Assigned(FLangTags) then');
FResult.Add(' begin');
FResult.Add(' FLangTags := TLangTagsDictionary.Create;');
FResult.Add(' for i := 0 to High(CLangTags) do');
FResult.Add(' begin');
FResult.Add(' try');
FResult.Add(' FLangTags.Add(CLangTags[i].tag, CLangTags[i]);');
FResult.Add(' except');
FResult.Add(' on E:EListError do');
FResult.Add(' begin');
FResult.Add(' raise Exception.Create(''Failed to add ''+CLangTags[i].tag+'': ''+E.Message);');
FResult.Add(' end;');
FResult.Add(' end;');
FResult.Add(' end;');
FResult.Add(' end;');
FResult.Add(' Result := FLangTags;');
FResult.Add('end;');
FResult.Add('');

FResult.Add('class function TLangTagsMap.GetAllTags: TAllTagsDictionary;');
FResult.Add('var');
FResult.Add(' i: Integer;');
FResult.Add('begin');
FResult.Add(' if not Assigned(FAllTags) then');
FResult.Add(' begin');
FResult.Add(' FAllTags := TAllTagsDictionary.Create;');
FResult.Add(' for i := 0 to High(CAllTags) do');
FResult.Add(' begin');
FResult.Add(' try');
FResult.Add(' FAllTags.Add(CAllTags[i].tag, CAllTags[i].Base);');
FResult.Add(' except');
FResult.Add(' on E:EListError do');
FResult.Add(' begin');
FResult.Add(' raise Exception.Create(''Failed to add ''+CAllTags[i].tag+''=''+CAllTags[i].Base+'': ''+E.Message);');
FResult.Add(' end;');
FResult.Add(' end;');
FResult.Add(' end;');
FResult.Add(' end;');
FResult.Add(' Result := FAllTags;');
FResult.Add('end;');
FResult.Add('');

FResult.Add('class function TLangTagsMap.GetAllTags: TAllTagsDictionary;');
FResult.Add('var');
FResult.Add(' i: Integer;');
FResult.Add('begin');
FResult.Add(' if not Assigned(FAllTags) then');
FResult.Add(' begin');
FResult.Add(' FAllTags := TAllTagsDictionary.Create;');
FResult.Add(' for i := 0 to High(CAllTags) do');
FResult.Add(' FAllTags.Add(CAllTags[i].tag, CAllTags[i].Base);');
FResult.Add(' end;');
FResult.Add(' Result := FAllTags;');
FResult.Add('end;');

FResult.Add('end.');

FResult.SaveToFile(DestinationFile, TEncoding.UTF8);
Expand Down
2 changes: 1 addition & 1 deletion docs/minimum-versions.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ https://help.keyman.com/developer/engine/android/latest-version/
| KEYMAN_VERSION_ICU | 73.1 |
| KEYMAN_VERSION_ISO639_3 | 2024-05-22 |
| KEYMAN_VERSION_JAVA | 21 |
| KEYMAN_VERSION_LANGTAGS | 2026-02-03 |
| KEYMAN_VERSION_LANGTAGS | 2026-05-05 |
| KEYMAN_VERSION_LANGUAGE_SUBTAG_REGISTRY | 2025-03-10 |
| KEYMAN_VERSION_UNICODE | 17.0.0 |

Expand Down
2 changes: 1 addition & 1 deletion linux/keyman-config/tests/lang_tags_map_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ def test_LookupLangTags_AddsMissingFields(self):
# Execute
tag = LangTagsMap.lookupLangTags('sga')
# Verify
self.assertEqual('sga-Ogam-IE', tag['full'])
self.assertEqual('sga-Latn-IE', tag['full'])
self.assertFalse(tag['suppress'])

def test_LookupLangTags_ScriptSuppress(self):
Expand Down
2 changes: 1 addition & 1 deletion resources/build/minimum-versions.inc.sh
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,6 @@ KEYMAN_DEFAULT_VERSION_UBUNTU_CONTAINER=noble # Ubuntu 24.04 Noble
# Data versions -- see resources/standards-data/readme.md
KEYMAN_VERSION_CLDR=46 # LDML Keyboards version
KEYMAN_VERSION_ISO639_3=2024-05-22 # Date of last import
KEYMAN_VERSION_LANGTAGS=2026-02-03 # _version value
KEYMAN_VERSION_LANGTAGS=2026-05-05 # _version value
KEYMAN_VERSION_LANGUAGE_SUBTAG_REGISTRY=2025-03-10 # Date from first line of language-subtag-registry
KEYMAN_VERSION_UNICODE=17.0.0 # UCD + related data
Loading
Loading