You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
2.0 KiB
46 lines
2.0 KiB
gRPC Internationalization
|
|
=========================
|
|
|
|
As a universal RPC framework, gRPC needs to be fully usable within/across different international environments.
|
|
This document describes gRPC API and behavior specifics when used in a non-english environment.
|
|
|
|
## API Concepts
|
|
|
|
While some API elements need to be able to represent non-english content, some are intentionally left as ASCII-only
|
|
for simplicity & performance reasons.
|
|
|
|
### Method name (in RPC Invocation)
|
|
Method names are ASCII-only and may only contain characters allowed by HTTP/2 text header values. That should not
|
|
be very limiting as most gRPC services will use protobuf which only allows method names from an even more restricted ASCII subset.
|
|
Also, handling method names is a very hot code path so any additional encoding/decoding step is to be avoided.
|
|
|
|
Recommended representation in language-specific APIs: string type.
|
|
|
|
### Host name (in RPC Invocation)
|
|
Host names are punycode encoded, but the user is responsible for providing the punycode-encoded string if she wishes to use an internationalized host name.
|
|
|
|
Recommended representation in language-specific APIs: string/unicode string.
|
|
|
|
NOTE: overriding host name when invoking RPCs is only supported by C-core based gRPC implementations.
|
|
|
|
### Status detail/message (accompanies RPC status code)
|
|
|
|
Status messages are expected to contain national-alphabet characters.
|
|
Allowed values are unicode strings (content will be percent-encoded on the wire).
|
|
|
|
Recommended representation in language-specific APIs: unicode string.
|
|
|
|
### Metadata key
|
|
Allowed values are defined by HTTP/2 standard (metadata keys are represented as HTTP/2 header/trailer names).
|
|
|
|
Recommended representation in language-specific APIs: string.
|
|
|
|
### Metadata value (text-valued metadata)
|
|
Allowed values are defined by HTTP/2 standard (metadata values are represented as HTTP/2 header/trailer text values).
|
|
|
|
Recommended representation in language-specific APIs: string.
|
|
|
|
### Channel target (in channel creation)
|
|
|
|
TBD
|