mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-06 08:55:34 +00:00
103 lines
3 KiB
Markdown
103 lines
3 KiB
Markdown
---
|
|
title: LanguageResource protocol
|
|
---
|
|
|
|
## Summary
|
|
|
|
The **LanguageResource** protocol and the types that implement it
|
|
(`InstallableKeyboard` and `InstallableLexicalModel`) represent keyboards and
|
|
lexical models installed within Keyman Engine.
|
|
|
|
Generally speaking, this is a lower-level type than
|
|
[`LanguageResourceFullID`](LanguageResourceFullID), requiring extra metadata
|
|
only discovered during installation from a resource's package and only used
|
|
internally within Keyman Engine.
|
|
|
|
## Syntax
|
|
|
|
```swift
|
|
LanguageResource.fieldName
|
|
```
|
|
|
|
## Description
|
|
|
|
The `LanguageResource` protocol is the base type used to represent specific
|
|
types of installed resources within Keyman Engine, paired with their target
|
|
languages. Both `InstallableKeyboard` and `InstallableLexicalModel` implement
|
|
this protocol, allowing methods to be written that can handle either resource
|
|
type. Also note the existence of `AnyLanguageResource`, which serves a "type
|
|
erasure" role for classes implementing this protocol.
|
|
|
|
Important note: multiple copies of `LanguageResource` for the same underlying
|
|
resource will exist if that resource has been installed for use with multiple
|
|
languages. One instance will exist per target language that was selected for
|
|
installation.
|
|
|
|
## Associated Types
|
|
|
|
`FullID: LanguageResourceFullID`
|
|
|
|
: The [`LanguageResourceFullID`](LanguageResourceFullID) type used to uniquely
|
|
identify the resource, comprised of the resource's ID, type, and paired language
|
|
code. Frequently used within the engine as a unique identifier for the resource
|
|
in searches and comparisons.
|
|
|
|
`Package: KeymanPackage`
|
|
|
|
: The derived type of [KeymanPackage](../KeymanPackage) supporting this type of
|
|
resource.
|
|
|
|
For example, `InstallableKeyboard.Package == KeyboardKeymanPackage`.
|
|
|
|
## Fields
|
|
|
|
`id: String`
|
|
|
|
: The resource's internal name. This must be unique among all resources of the
|
|
same type and follows standard unique ID constraints: a-z, A-Z, 0-9, and
|
|
underscores only.
|
|
|
|
`name: String`
|
|
|
|
: The resource's external name, as displayed to users.
|
|
|
|
`languageID: String`
|
|
|
|
: One language paired with this resource during installation.
|
|
|
|
`packageID: String?`
|
|
|
|
: The ID of the resource's source package. Is 'optional' for legacy reasons.
|
|
|
|
`packageKey: `[`KeymanPackage.Key`](../KeymanPackage/key)
|
|
|
|
: The unique identifier for the resource's source package.
|
|
|
|
`version: String`
|
|
|
|
: The resource's installed version.
|
|
|
|
`sourceFilename: String`
|
|
|
|
: The filename of the package component used internally within Keyman Engine
|
|
to load the resource.
|
|
|
|
`fullID: `[`AnyLanguageResourceFullID`](LanguageResourceFullID)
|
|
|
|
: A unique identifier used in language resource searches and comparisons.
|
|
|
|
## History
|
|
|
|
While the classes that implement the protocol existed before this, the protocol
|
|
itself was added in Keyman Engine for iPhone and iPad 14.0.
|
|
|
|
## See Also
|
|
|
|
[`KeymanPackage`](../KeymanPackage)
|
|
|
|
: Represents packages containing language resources.
|
|
|
|
[`LanguageResourceFullID`](LanguageResourceFullID)
|
|
|
|
: Unique identifiers used in language resource searches and comparisons.
|
|
|