Szukam listy wszystkich ustawień regionalnych i ich krótkich kodów dla aplikacji PHP, którą piszę. Czy istnieje duże zróżnicowanie tych danych między platformami?
Ponadto, jeśli opracowuję aplikację międzynarodową, czy mogę obsługiwać tylko jedną wersję języka angielskiego lub czy istnieją znaczne różnice w języku angielskim na całym świecie?
php
internationalization
locale
Kirk Ouimet
źródło
źródło
en
zastosowaniem,en_US
aen_GB
z głównych różnic jest, że te ostatnie zazwyczaj używaise
zamiast tego pierwszegoize
, a oryginalne francuskie pisownia wyrazów podobametre
, zamiastmeter
, a nie używać fonetycznych skurcze, stosującsulphur
zamiastsulphur
.en_GB
zazwyczaj obejmuje konwencje pisowni stosowane w byłych koloniach, które nie były zdominowane przez USA kulturowo, takie jaken_AU
ien_NZ
. Zobacz tysto.com/uk-us-spelling-list.html .en_US
jedynejen
lokalizacji nie zmieszają zbyt wielu piór.Odpowiedzi:
Znaczenie ustawień narodowych polega na tym, że środowisko / system operacyjny może zapewniać funkcje formatowania dla wszystkich zainstalowanych ustawień regionalnych, nawet jeśli nie wiesz o nich podczas pisania aplikacji. W moim systemie Windows 7 jest zainstalowanych 211 ustawień regionalnych (wymienionych poniżej), więc prawdopodobnie nie napiszesz żadnego niestandardowego kodu ani tłumaczenia specyficznego dla tak wielu ustawień narodowych.
Najważniejsze w różnych wersjach języka angielskiego jest formatowanie liczb i dat. Inne różnice są znaczące w zakresie, w jakim chcesz i jesteś w stanie zaspokoić określone odmiany.
źródło
MessageFormatter::formatMessage
lub jednorazowomsgfmt_format_message
, jak wmsgfmt_format_message('ar-ye', '{0,date,medium}', array('2017-01-27))
, który będzie produkował٢٧/٠١/٢٠١٧
. Czasami, gdy używamy wartości przechowywanych jako UTC, prawdopodobnie lepiej jest użyćIntlDateFormatter
klasy, ponieważ można ustawić strefę czasową, aby pokazać czas lokalny w języku.en-029
to jestEnglish (Caribbean)
: stackoverflow.com/questions/7192410/…W zaakceptowanej odpowiedzi brakuje niektórych dość znaczących lokalizacji. Na przykład chińskie ustawienia regionalne nie rozróżniają różnych pism świętych (uproszczony han, tradycyjny han). Co jest obywatelem Chin, który chce korzystać z tradycyjnego hana - z Hongkongu?
Wziąłem tę listę ustawień narodowych iOS , usunąłem dziwny wpis POSIX, sformatowałem go jako Javascript i posortowałem według wartości (więc jeśli użyjesz uporządkowanej implementacji obiektu i utworzysz listę, przechodząc przez klucze i zwracając wartość, będzie ona pokaż tekst czytelny dla człowieka we właściwej kolejności). Ponadto ta lista zawiera główny wpis dla każdego języka, a także wszystkie warianty specyficzne dla regionu - w ten sposób zawsze masz wyznaczoną opcję zastępczą, powiedzmy, jeśli twój interfejs zdefiniował tylko opcję „en” - inaczej nie wiedziałbyś na czym polegać niezawodnie.
źródło
zh-hans-hk
izh-hant-hk
.intl
Zestaw obiektów PHP będzie tolerować określanie lokalizacji jako małe litery i myślniki, a także akceptowanielang_COUNTRY
stylów.intl
klas do wszystkich swoich wysiłków, w tym stref czasowych i ustawień regionalnych, ponieważ są one zbudowane na bazie danych CLDR i aktualizowane z każdą wersją PHP. Inne funkcje PHP mogą być zbudowane na izolowanych zestawach danych, które nie wymagają synchronizacji w kompleksowym zbiorze danych CLDR, więc niektóre z tych innych funkcji mogą powodować pewne rozbieżności w stosunku do tych CLDR, zwłaszcza że międzynarodowe wysiłki bardziej standaryzują CLDR . Być może będziesz musiał użyć niektórych z tych innych funkcji jako rezerwowych, jeśli korzystasz z wersji wcześniejszej niż 5.6.intl
klasami, jest to, że będzie on obsługiwał twoje strony w połowie czasu.Chociaż zaakceptowana odpowiedź jest dość kompletna (użyłem siebie w podobnym pytaniu, które mi się pojawiło), myślę, że warto umieścić całe obsługiwane kody i odmiany języka, a także kodowania i wskazać użytkownikowi plik, który jest obecny w prawie wszelkie dystrybucje linuksowe, na wypadek, gdyby chciał po prostu szybszej odpowiedzi, na przykład bez internetu.
To jest plik
/usr/share/i18n/SUPPORTED
i jego zawartość:źródło
From http://www.w3.org/International/articles/language-tags/
AFAIK, większość aplikacji rozpoznających ustawienia regionalne (napisane przez profesjonalistów) przestrzega tego standardu. To nie jest po prostu coś, co ktoś połączył i że różni ludzie interpretują inaczej.
Zdecydowanie sugeruję, abyś zbadał funkcje internacjonalizacji swojego konkretnego języka programowania, ponieważ prawdopodobnie nie skończysz na nowo.
źródło
Jeśli używasz php-intl do lokalizowania aplikacji, prawdopodobnie chcesz użyć ResourceBundle :: getLocales () zamiast listy statycznej, którą sam zarządzasz. Może również udostępniać ustawienia regionalne dla określonego języka.
źródło
Oto dość wyczerpująca lista kodów kultur . O ile wiem, nie różnią się one między językami programowania, ponieważ jest to standard RFC. Jeśli chodzi o angielski, myślę, że jeśli popierasz ogólny
en
lub ewentualnie tenen-US
, powinieneś być w porządku.źródło
en-US
. Po prostu fakt z życia. Wystarczy spojrzeć na to, w jaki sposób większość witryn z gazetami online na całym świecie używa cytatów w stylu amerykańskim, nawet gdy kieruje reklamy do lokalnych odbiorców, tylko z powodu kulturowego zalania materiałami pochodzącymi z USA zastąpiło to, co mogło być w oficjalnym przewodniku po kraju. Publiczność się zmieniła, pomimo tego, że wielu z nas może wykorzystać nasze osobiste preferencje.Lista języków
Lista wszystkich języków z nazwami i kodami ISO 639-1 we wszystkich językach i we wszystkich formatach danych.
Dostępne formaty
https://github.com/umpirsky/language-list
źródło
en_IE
zachowuje się inaczej niżen_US
w wielu aspektach (waluta, miary, pisownia itp.).