diff options
Diffstat (limited to 'Master/tlpkg/tlperl/lib/Locale/Codes/API.pod')
-rw-r--r-- | Master/tlpkg/tlperl/lib/Locale/Codes/API.pod | 320 |
1 files changed, 320 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl/lib/Locale/Codes/API.pod b/Master/tlpkg/tlperl/lib/Locale/Codes/API.pod new file mode 100644 index 00000000000..110719d18ad --- /dev/null +++ b/Master/tlpkg/tlperl/lib/Locale/Codes/API.pod @@ -0,0 +1,320 @@ +=pod + +=head1 NAME + +Locale::Codes::API - a description of the callable function in each module + +=head1 DESCRIPTION + +Although there are several modules in the Locale-Codes distribution, all of them +(as of version 3.10) use exactly the same API. As a matter of fact, each of the +main callable modules are just wrappers around a central module which does all +the real work. + +=head1 ROUTINES + +In order to maintain the documentation for the modules consistently, +the functions are all documented here, rather than in the documentation +for the separate modules. + +The name of the function depends on the module. For example, every module +contains a function "code2XXX" where XXX refers to the type of data. +The values of XXX are described in the following table: + + XXX MODULE + + country Locale::Codes::Country + language Locale::Codes::Language + currency Locale::Codes::Currency + script Locale::Codes::Script + langext Locale::Codes::LangExt + langvar Locale::Codes::LangVar + langfam Locale::Codes::LangFAM + +So, the Locale::Country module contains the function code2country, the +Locale::Language module contains the function code2language, etc. + +In all of the functions below, CODE refers to a code for one element in +the code set. For example, in the two-letter country codes from ISO 3166-1, +the code 'fi' is used to refer to the country Finland. CODE is always +case insensitive (though when a code is returned, it will always be in +the case as used in the standard), so 'fi', 'FI', and 'Fi' would all +be equivalent. + +CODESET refers to a constant specified in the documentation for each +module to label the various code sets. For example, in the +Locale::Language module, CODESET could be LOCALE_CODE_ALPHA_2 or +LOCALE_CODE_ALPHA_3 (among others). Most functions have a default one, +so they do not need to be specified. So the following calls are valid: + + code2country("fi"); + code2country("fi",LOCALE_CODE_ALPHA_2); + code2country("fin",LOCALE_CODE_ALPHA_3); + +Since LOCALE_CODE_ALPHA_2 is the default code set, the first two are +identical. + +=over 4 + +=item B<code2XXX ( CODE [,CODESET] [,'retired'] )> + +These functions take a code and returns a string which contains +the name of the element identified. If the code is not a valid +code in the CODESET specified then C<undef> will be returned. + +The name of the element is the name as specified in the standard, +and as a result, different variations of an element name may +be returned for different values of CODESET. + +For example, the B<alpha-2> country code set defines the two-letter +code "bo" to be "Bolivia, Plurinational State of", whereas the +B<alpha-3> code set defines the code 'bol' to be the country "Bolivia +(Plurinational State of)". So: + + code2country('bo',LOCALE_CODE_ALPHA_2); + => 'Bolivia, Plurinational State of' + + code2country('bol',LOCALE_CODE_ALPHA_3); + => 'Bolivia (Plurinational State of)' + +By default, only active codes will be used, but if the string +'retired' is passed in as an argument, both active and retired +codes will be examined. + +=item B<XXX2code ( NAME [,CODESET] [,'retired'] )> + +These functions takes the name of an element (or any of it's aliases) +and returns the code that corresponds to it, if it exists. If NAME +could not be identified as the name of one of the elements, then +C<undef> will be returned. + +The name is not case sensitive. Also, any known variation of a name +may be passed in. + +For example, even though the country name returned using +LOCALE_CODE_ALPHA_2 and LOCALE_CODE_ALPHA_3 country codes for Bolivia is different, +either country name may be passed in since for each code set, in addition to +the alias 'Bolivia'. So: + + country2code('Bolivia, Plurinational State of', + LOCALE_CODE_ALPHA_2); + => bo + + country2code('Bolivia (Plurinational State of)', + LOCALE_CODE_ALPHA_2); + => bo + + country2code('Bolivia',LOCALE_CODE_ALPHA_2); + => bo + +By default, only active names will be used, but if the string +'retired' is passed in as an argument, both active and retired +names will be examined. + +=item B<XXX_code2code ( CODE ,CODESET ,CODESET2 )> + +These functions takes a code from one code set, and returns the +corresponding code from another code set. CODE must exists in the code +set specified by CODESET and must have a corresponding code in the +code set specified by CODESET2 or C<undef> will be returned. + +Both CODESETs must be explicitly entered. + + country_code2code('fin', LOCALE_CODE_ALPHA_3, + LOCALE_CODE_ALPHA_2); + => 'fi' + +Note that this function does NOT support retired codes. + +=item B<all_XXX_codes ( [CODESET] [,'retired'] )> + +These returns a list of all code in the code set. The codes will be +sorted. + +By default, only active codes will be returned, but if the string +'retired' is passed in as an argument, both active and retired +codes will be returned. + +=item B<all_XXX_names ( [CODESET] [,'retired'] )> + +These return a list of all elements names for which there is a +corresponding code in the specified code set. + +The names returned are exactly as they are specified in the standard, +and are sorted. + +Since not all elements are listed in all code sets, the list of +elements may differ depending on the code set specified. + +By default, only active names will be returned, but if the string +'retired' is passed in as an argument, both active and retired +names will be returned. + +=back + +=head1 SEMI-PRIVATE ROUTINES + +Additional semi-private routines which may be used to modify the +internal data are also available. Given their status, they aren't +exported, and so need to be called by prefixing the function name with +the package name. + +These routines do not currently work with retired codes. + +=over 4 + +=item B<MODULE::rename_XXX ( CODE ,NEW_NAME [,CODESET] )> + +These routines are used to change the official name of an element. At +that point, the name returned by the code2XXX routine would be +NEW_NAME instead of the name specified in the standard. + +The original name will remain as an alias. + +For example, the official country name for code 'gb' is 'United +Kingdom'. If you want to change that, you might call: + + Locale::Codes::Country::rename_country('gb', 'Great Britain'); + +This means that calling code2country('gb') will now return 'Great +Britain' instead of 'United Kingdom'. + +If any error occurs, a warning is issued and 0 is returned. An error +occurs if CODE doesn't exist in the specified code set, or if +NEW_NAME is already in use but for a different element. + +If the routine succeeds, 1 is returned. + +=item B<MODULE::add_XXX ( CODE ,NAME [,CODESET] )> + +These routines are used to add a new code and name to the data. + +Both CODE and NAME must be unused in the data set or an error +occurs (though NAME may be used in a different data set). + +For example, to create the fictitious country named "Duchy of +Grand Fenwick" with codes "gf" and "fen", use the following: + + Locale::Codes::Country::add_country("fe","Duchy of Grand Fenwick", + LOCALE_CODE_ALPHA_2); + + Locale::Codes::Country::add_country("fen","Duchy of Grand Fenwick", + LOCALE_CODE_ALPHA_3); + +The return value is 1 on success, 0 on an error. + +=item B<MODULE::delete_XXX ( CODE [,CODESET] )> + +These routines are used to delete a code from the data. + +CODE must refer to an existing code in the code set. + +The return value is 1 on success, 0 on an error. + +=item B<MODULE::add_XXX_alias ( NAME ,NEW_NAME )> + +These routines are used to add a new alias to the data. They do +not alter the return value of the code2XXX function. + +NAME must be an existing element name, and NEW_NAME must +be unused or an error occurs. + +The return value is 1 on success, 0 on an error. + +=item B<MODULE::delete_XXX_alias ( NAME )> + +These routines are used to delete an alias from the data. Once +removed, the element may not be referred to by NAME. + +NAME must be one of a list of at least two names that may be used to +specify an element. If the element may only be referred to by a single +name, you'll need to use the add_XXX_alias function to add a new alias +first, or the remove_XXX function to remove the element entirely. + +If the alias is used as the name in any code set, one of the other +names will be used instead. Predicting exactly which one will +be used requires you to know the order in which the standards +were read, which is not reliable, so you may want to use the +rename_XXX function to force one of the alternate names to be +used. + +The return value is 1 on success, 0 on an error. + +=item B<MODULE::rename_XXX_code ( CODE ,NEW_CODE [,CODESET] )> + +These routines are used to change the official code for an element. At +that point, the code returned by the XXX2code routine would be +NEW_CODE instead of the code specified in the standard. + +NEW_CODE may either be a code that is not in use, or it may be an +alias for CODE (in which case, CODE becomes and alias and NEW_CODE +becomes the "real" code). + +The original code is kept as an alias, so that the code2XXX routines +will work with either the code from the standard or the new code. + +However, the all_XXX_codes routine will only return the codes which +are considered "real" (which means that the list of codes will now +contain NEW_CODE, but will not contain CODE). + +=item B<MODULE::add_XXX_code_alias ( CODE ,NEW_CODE [,CODESET] )> + +These routines add an alias for the code. At that point, NEW_CODE and CODE +will both work in the code2XXX routines. However, the XXX2code routines will +still return the original code. + +=item B<MODULE::delete_XXX_code_alias ( CODE [,CODESET] )> + +These routines delete an alias for the code. + +These will only work if CODE is actually an alias. If it is the "real" +code, it will not be deleted. You will need to use the rename_XXX_code +function to switch the real code with one of the aliases, and then +delete the alias. + +=back + +=head1 KNOWN BUGS AND LIMITATIONS + +=over 4 + +=item B<Relationship between code sets> + +Because each code set uses a slightly different list of elements, and +they are not necessarily one-to-one, there may be some confusion +about the relationship between codes from different code sets. + +For example, ISO 3166 assigns one code to the country "United States +Minor Outlying Islands", but the IANA codes give different codes +to different islands (Baker Island, Howland Island, etc.). + +This may cause some confusion... I've done the best that I could do +to minimize it. + +=item B<Non-ASCII characters not supported> + +Currently all names must be all ASCII. I plan on relaxing that +limitation in the future. + +=back + +=head1 SEE ALSO + +Locale::Codes + +=head1 AUTHOR + +See Locale::Codes for full author history. + +Currently maintained by Sullivan Beck (sbeck@cpan.org). + +=head1 COPYRIGHT + + Copyright (c) 1997-2001 Canon Research Centre Europe (CRE). + Copyright (c) 2001-2010 Neil Bowers + Copyright (c) 2010-2014 Sullivan Beck + +This module is free software; you can redistribute it and/or +modify it under the same terms as Perl itself. + +=cut |