[Pkg] The Trunk: GetText-edc.20.mcz
commits at source.squeak.org
commits at source.squeak.org
Thu Mar 29 10:55:53 UTC 2012
Edgar J. De Cleene uploaded a new version of GetText to project The Trunk:
http://source.squeak.org/trunk/GetText-edc.20.mcz
==================== Summary ====================
Name: GetText-edc.20
Author: edc
Time: 29 March 2012, 7:32:49.142 am
UUID: 958a59da-4fce-4c70-a776-166b3c8237a8
Ancestors: GetText-edc.17
Clean Undeclared.
{InternalTranslator ISOLanguageDefinition Locale LocaleID NaturalLanguageFormTranslator NaturalLanguageTranslator}
Moved back to System-Localization
=============== Diff against GetText-edc.17 ===============
Item was changed:
----- Method: GetTextExporter>>appendStringReceivers:into: (in category 'private') -----
appendStringReceivers: aSymbol into: domains
| literals references domainName methodReference keywords found |
found := TranslatedReceiverFinder new stringReceiversWithContext: aSymbol.
found do: [ :assoc |
methodReference := assoc key.
keywords := assoc value.
domainName := (PackageOrganizer default packageOfMethod: methodReference ifNone: [nil]).
domainName := domainName isNil ifTrue: [TextDomainManager defaultDomain] ifFalse: [domainName name].
+ literals := domains at: domainName ifAbsentPut: [Dictionary new].
- literals _ domains at: domainName ifAbsentPut: [Dictionary new].
keywords do: [ :literal |
+ references := literals at: literal ifAbsentPut: [OrderedCollection new].
- references _ literals at: literal ifAbsentPut: [OrderedCollection new].
references add: methodReference.
].
].
!
Item was changed:
----- Method: GetTextExporter>>appendVocabularies: (in category 'private') -----
appendVocabularies: domains
| literalsForDomain references domainName methodReference |
EToyVocabulary allPhrasesWithContextToTranslate do: [ :r |
methodReference := (MethodReference new setStandardClass: (r second) methodSymbol: (r third)).
+ "domainName := self getTextDomainForPackage: (PackageOrganizer default packageOfMethod: methodReference)".
- "domainName _ self getTextDomainForPackage: (PackageOrganizer default packageOfMethod: methodReference)".
domainName := 'Etoys-Tiles'.
+ literalsForDomain := domains at: domainName ifAbsentPut: [Dictionary new].
- literalsForDomain _ domains at: domainName ifAbsentPut: [Dictionary new].
r fourth do: [ :literal |
+ references := literalsForDomain at: literal ifAbsentPut: [OrderedCollection new].
- references _ literalsForDomain at: literal ifAbsentPut: [OrderedCollection new].
references add: methodReference.
].
].
!
Item was changed:
----- Method: GetTextExporter>>dirNameCategory:translator: (in category 'exporting') -----
dirNameCategory: category translator: translator
"Answer a file name for the category. Make one if it is not exist yet.
Make template file name if translator is nil"
"self new dirNameCategory: 'Morphic-Scripting Support' translator:
NaturalLanguageTranslator current"
"self new dirNameCategory: 'Morphic-Scripting Support' translator: nil"
| safeCategory fileName dirName pathName |
+ safeCategory := category copyReplaceAll: ' ' with: ':='.
- safeCategory := category copyReplaceAll: ' ' with: '_'.
fileName := translator
ifNil: [safeCategory , '.pot']
ifNotNil: [translator localeID posixName , '.po'].
dirName := (safeCategory findTokens: '-')
inject: 'po'
into: [:aString :next | aString , FileDirectory slash , next].
pathName := dirName , FileDirectory slash , fileName.
(FileDirectory default directoryNamed: dirName) assureExistence.
^ pathName!
Item was changed:
----- Method: GetTextExporter>>dirNameDomain:translator: (in category 'exporting') -----
dirNameDomain: domain translator: translator
"Answer a file name for the domain. Make one if it is not exist yet.
Make template file name if translator is nil"
"self new dirNameDomain: 'etoys' translator:
NaturalLanguageTranslator current"
"self new dirNameDomain: 'etoys' translator: nil"
| fileName dirName pathName |
+ "safeCategory := category copyReplaceAll: ' ' with: ':='."
- "safeCategory := category copyReplaceAll: ' ' with: '_'."
fileName := domain,
(translator
ifNil: ['.pot']
ifNotNil: ['.po']).
dirName := 'po', FileDirectory slash,
(translator
ifNil: ['templates']
ifNotNil: [translator localeID posixName]).
pathName := dirName , FileDirectory slash , fileName.
(FileDirectory default directoryNamed: dirName) assureExistence.
^ pathName!
Item was changed:
----- Method: GetTextExporter>>exportBody:translator: (in category 'file out') -----
exportBody: literals translator: translator
"Export a gettext file body. literals is a dictionary of keyword ->
#(MethodReference...) in the textDomain."
"Build {sortKey. comment. msgid } to optimize sorting (getting category is
too slow).
If there are two or more methods for a mgsid, only first method
(alphabetical) is used for sorting."
| sorted msgid sortedMethods category sortKey comment triplets commentUnderLined |
triplets := literals associations
collect: [:assoc |
msgid := assoc key.
sortedMethods := assoc value asArray sort.
category := (Smalltalk at: sortedMethods first classSymbol) category asString.
sortKey := category , ',' , sortedMethods first printString , ',' , msgid.
comment := (sortedMethods
collect: [:each | each actualClass asString , '>>' , each methodSymbol asString])
inject: category
into: [:result :methodName | result , ',' , methodName].
+ "Replace white spaces to := because gettext tool might
- "Replace white spaces to _ because gettext tool might
replace a space to a new line some times, and it makes
difficult to take a diff."
+ commentUnderLined := comment copyReplaceAll: ' ' with: ':='.
- commentUnderLined := comment copyReplaceAll: ' ' with: '_'.
Array
with: sortKey
with: commentUnderLined
with: msgid].
"Sort and output the words"
sorted := triplets
sort: [:a :b | a first <= b first].
sorted
do: [:triplet |
comment := triplet second.
msgid := triplet third.
self exportRecordHeader: comment.
self
exportPhrase: msgid
translation: (self translationFor: msgid in: translator)]!
Item was changed:
----- Method: GetTextExporter>>exportPhrase:translation: (in category 'private') -----
exportPhrase: phraseString translation: translationString
| normalizedTrans tmp transStartsWithCR transEndsWithCR|
phraseString isEmpty
ifTrue: [^ self].
self exportTag: 'msgid' msg: phraseString.
translationString size = 0 ifTrue: [
+ normalizedTrans := ''
- normalizedTrans _ ''
] ifFalse: [
+ transEndsWithCR := translationString last = (Character cr).
- transEndsWithCR _ translationString last = (Character cr).
phraseString last = (Character cr) ifTrue: [
transEndsWithCR ifTrue: [
+ normalizedTrans := translationString
- normalizedTrans _ translationString
] ifFalse: [
+ normalizedTrans := translationString , String cr
- normalizedTrans _ translationString , String cr
]
] ifFalse: [
transEndsWithCR ifTrue: [
+ normalizedTrans := translationString allButLast
- normalizedTrans _ translationString allButLast
] ifFalse: [
+ normalizedTrans := translationString
- normalizedTrans _ translationString
]
].
+ transStartsWithCR := normalizedTrans first = (Character cr).
- transStartsWithCR _ normalizedTrans first = (Character cr).
phraseString first = (Character cr) ifTrue: [
transStartsWithCR ifFalse: [
+ tmp := (Character cr asString) , normalizedTrans.
+ normalizedTrans := tmp.
- tmp _ (Character cr asString) , normalizedTrans.
- normalizedTrans _ tmp.
]
] ifFalse: [
transStartsWithCR ifTrue: [
+ normalizedTrans := normalizedTrans allButFirst
- normalizedTrans _ normalizedTrans allButFirst
]
]
].
self exportTag: 'msgstr' msg: normalizedTrans.
stream cr!
Item was changed:
----- Method: GetTextInterchange>>language: (in category 'accessing') -----
language: translator
+ language := translator!
- language _ translator!
Item was changed:
----- Method: GetTextInterchange>>stream: (in category 'accessing') -----
stream: aStream
+ stream := aStream!
- stream _ aStream!
Item was changed:
----- Method: GetTextTranslator class>>defaultLocaleDirs (in category 'translation data layout') -----
defaultLocaleDirs
| dirs |
+ dirs := OrderedCollection new.
- dirs _ OrderedCollection new.
UserDefaultLocaleDirs ifNotNil: [dirs addAll: UserDefaultLocaleDirs].
dirs addAll: self systemDefaultLocaleDirs.
^dirs
!
Item was changed:
----- Method: GetTextTranslator class>>findMOForLocaleID:domain: (in category 'private') -----
findMOForLocaleID: id domain: aDomainName
| sepa langSubDir path |
+ sepa := FileDirectory slash.
+ langSubDir := self langDirNameForLocaleID: id.
- sepa _ FileDirectory slash.
- langSubDir _ self langDirNameForLocaleID: id.
(self localeDirsForDomain: aDomainName)
do: [:each |
+ path := each , sepa , langSubDir, sepa , (self moNameForDomain: aDomainName).
- path _ each , sepa , langSubDir, sepa , (self moNameForDomain: aDomainName).
[(FileDirectory default fileExists: path)
ifTrue: [^path]] on: InvalidDirectoryError do: [:e | ^nil]].
^nil.!
Item was changed:
----- Method: GetTextTranslator class>>initialize (in category 'class initialization') -----
initialize
+ SystemDefaultLocaleDirs := OrderedCollection new.
+ UserDefaultLocaleDirs := OrderedCollection new.
+ LocaleDirsForDomain := Dictionary new.!
- SystemDefaultLocaleDirs _ OrderedCollection new.
- UserDefaultLocaleDirs _ OrderedCollection new.
- LocaleDirsForDomain _ Dictionary new.!
Item was changed:
----- Method: GetTextTranslator class>>localeDirsForDomain (in category 'private') -----
localeDirsForDomain
+ ^LocaleDirsForDomain ifNil: [LocaleDirsForDomain := Dictionary new]!
- ^LocaleDirsForDomain ifNil: [LocaleDirsForDomain _ Dictionary new]!
Item was changed:
----- Method: GetTextTranslator class>>localeDirsForDomain: (in category 'translation data layout') -----
localeDirsForDomain: aDomainName
"returns collection of locale directories for text domain.
This includes user defined one for the domain, user defaults and system defaults"
| dirs dir |
+ dirs := OrderedCollection new.
+ dir := self localeDirForDomain: aDomainName.
- dirs _ OrderedCollection new.
- dir _ self localeDirForDomain: aDomainName.
dir ifNotNil: [dirs add: dir].
dirs addAll: self defaultLocaleDirs.
^dirs!
Item was changed:
----- Method: GetTextTranslator>>initialize (in category 'initialize-release') -----
initialize
+ moFiles := Dictionary new.!
- moFiles _ Dictionary new.!
Item was changed:
----- Method: GetTextTranslator>>isDomainLoaded: (in category 'accessing') -----
isDomainLoaded: aDomainName
| mo |
+ mo := moFiles at: aDomainName ifAbsent: [nil].
- mo _ moFiles at: aDomainName ifAbsent: [nil].
^mo isNil not.
!
Item was changed:
----- Method: GetTextTranslator>>loadMOFileForDomain: (in category 'private') -----
loadMOFileForDomain: aDomainName
| moName |
+ moName := self class findMOForLocaleID: self localeID
- moName _ self class findMOForLocaleID: self localeID
domain: aDomainName.
moName notNil
ifTrue: [^MOFile new load: moName
localeID: self localeID]
ifFalse: [^nil]
!
Item was changed:
----- Method: GetTextTranslator>>reloadMOFiles (in category 'accessing') -----
reloadMOFiles
+ moFiles := Dictionary new.
- moFiles _ Dictionary new.
self loadMOFiles.!
Item was changed:
----- Method: GetTextTranslator>>translate:inDomain: (in category 'translation') -----
translate: aString inDomain: aDomainName
| mo |
+ mo := self moFileForDomain: aDomainName.
- mo _ self moFileForDomain: aDomainName.
^mo isNil
ifTrue: [aString]
ifFalse: [mo translationFor: aString]
!
Item was removed:
- Object subclass: #ISOLanguageDefinition
- instanceVariableNames: 'iso3 iso2 iso3Alternate language'
- classVariableNames: 'ISO2Countries ISO2Table ISO3Countries ISO3Table'
- poolDictionaries: ''
- category: 'GetText-Localization'!
Item was removed:
- ----- Method: ISOLanguageDefinition class>>buildIso3166CodesTables (in category 'private') -----
- buildIso3166CodesTables
- "ISOLanguageDefinition buildIso3166CodesTables"
- | rawdata stream country isoa2 isoa3 unNumeric macName macCode windowsName windowsCode empty table |
- rawdata := self iso3166Codes.
- table := OrderedCollection new: 200.
- stream := rawdata readStream.
- empty := 160 asCharacter asString.
- [stream atEnd] whileFalse:
- [country := stream nextLine.
- isoa2 := stream nextLine.
- isoa3 := stream nextLine.
- unNumeric := stream nextLine.
- windowsName := stream nextLine.
- windowsName = empty ifTrue: [windowsName := nil].
- windowsCode := stream nextLine.
- windowsCode = empty ifTrue: [windowsCode := nil].
- macName := stream nextLine.
- macName = empty ifTrue: [macName := nil].
- macCode := stream nextLine.
- macCode = empty ifTrue: [macCode := nil].
- table add: { country. isoa2. isoa3. unNumeric. windowsName. windowsCode. macName. macCode. }].
- ^table!
Item was removed:
- ----- Method: ISOLanguageDefinition class>>extraCountryDefinitions (in category 'private') -----
- extraCountryDefinitions
- ^{
- {'Kids'. 'KIDS'. 'KIDS'.}.
- }!
Item was removed:
- ----- Method: ISOLanguageDefinition class>>extraISO3Definitions (in category 'private') -----
- extraISO3Definitions
-
- ^self readISOLanguagesFrom: 'jpk Japanese (Kids)
- ' readStream!
Item was removed:
- ----- Method: ISOLanguageDefinition class>>initISO3LanguageTable (in category 'private') -----
- initISO3LanguageTable
- "ISOLanguageDefinition initIso3LanguageTable"
-
- | table |
- table := ISOLanguageDefinition readISOLanguagesFrom: ISOLanguageDefinition isoLanguages readStream.
- table addAll: self extraISO3Definitions.
- ^table!
Item was removed:
- ----- Method: ISOLanguageDefinition class>>initISOCountries (in category 'private') -----
- initISOCountries
- "ISOLanguageDefinition initISOCountries"
- | iso3166Table |
- iso3166Table := ISOLanguageDefinition buildIso3166CodesTables.
- ISO2Countries := Dictionary new.
- ISO3Countries := Dictionary new.
- iso3166Table do: [:entry |
- ISO2Countries at: (entry at: 2) put: (entry at: 1).
- ISO3Countries at: (entry at: 3) put: (entry at: 1)].
- self extraCountryDefinitions do: [:entry |
- ISO2Countries at: (entry at: 2) put: (entry at: 1).
- ISO3Countries at: (entry at: 3) put: (entry at: 1)]!
Item was removed:
- ----- Method: ISOLanguageDefinition class>>initialize (in category 'class initialization') -----
- initialize
- "ISOLanguageDefinition initialize"
-
- ISO3Table := nil.
- ISO2Table := nil!
Item was removed:
- ----- Method: ISOLanguageDefinition class>>iso2Countries (in category 'private') -----
- iso2Countries
- "ISOLanguageDefinition iso2Countries"
- "ISO2Countries := nil. ISO3Countries := nil"
-
- ISO2Countries ifNil: [self initISOCountries].
- ^ISO2Countries!
Item was removed:
- ----- Method: ISOLanguageDefinition class>>iso2LanguageDefinition: (in category 'accessing') -----
- iso2LanguageDefinition: aString
- ^self iso2LanguageTable at: aString!
Item was removed:
- ----- Method: ISOLanguageDefinition class>>iso2LanguageTable (in category 'private') -----
- iso2LanguageTable
- "ISOLanguageDefinition iso2LanguageTable"
-
- ISO2Table ifNotNil: [^ISO2Table].
- ISO2Table := Dictionary new: self iso3LanguageTable basicSize.
- self iso3LanguageTable do: [:entry |
- ISO2Table at: entry iso2 put: entry].
- ^ISO2Table!
Item was removed:
- ----- Method: ISOLanguageDefinition class>>iso3166Codes (in category 'private') -----
- iso3166Codes
- "http://www.unicode.org/onlinedat/countries.html"
-
- ^'ÅLAND ISLANDS
- AX
-
-
-
-
-
-
- AFGHANISTAN
- AF
- AFG
- 004
-
-
-
-
- ALBANIA
- AL
- ALB
- 008
- CTRY_ALBANIA
- 355
-
-
- ALGERIA
- DZ
- DZA
- 012
- CTRY_ALGERIA
- 213
- verArabic
- 16
- AMERICAN SAMOA
- AS
- ASM
- 016
-
-
-
-
- ANDORRA
- AD
- AND
- 020
-
-
-
-
- ANGOLA
- AO
- AGO
- 024
-
-
-
-
- ANGUILLA
- AI
- AIA
- 660
-
-
-
-
- ANTARCTICA
- AQ
- ATA
- 010
-
-
-
-
- ANTIGUA AND BARBUDA
- AG
- ATG
- 028
-
-
-
-
- ARGENTINA
- AR
- ARG
- 032
- CTRY_ARGENTINA
- 54
-
-
- ARMENIA
- AM
- ARM
- 051
- CTRY_ARMENIA
- 374
- verArmenian
- 84
- ARUBA
- AW
- ABW
- 533
-
-
-
-
- AUSTRALIA
- AU
- AUS
- 036
- CTRY_AUSTRALIA
- 61
- verAustralia
- 15
- AUSTRIA
- AT
- AUT
- 040
- CTRY_AUSTRIA
- 43
- verAustria
- 92
- AZERBAIJAN
- AZ
- AZE
- 031
- CTRY_AZERBAIJAN
- 994
-
-
- BAHAMAS
- BS
- BHS
- 044
-
-
-
-
- BAHRAIN
- BH
- BHR
- 048
- CTRY_BAHRAIN
- 973
-
-
- BANGLADESH
- BD
- BGD
- 050
-
-
- verBengali
- 60
- BARBADOS
- BB
- BRB
- 052
-
-
-
-
- BELARUS
- BY
- BLR
- 112
- CTRY_BELARUS
- 375
-
-
- BELGIUM
- BE
- BEL
- 056
- CTRY_BELGIUM
- 32
- verFrBelgium, verFlemish
- 98
- BELIZE
- BZ
- BLZ
- 084
- CTRY_BELIZE
- 501
-
-
- BENIN
- BJ
- BEN
- 204
-
-
-
-
- BERMUDA
- BM
- BMU
- 060
-
-
-
-
- BHUTAN
- BT
- BTN
- 064
-
-
- verBhutan
- 83
- BOLIVIA
- BO
- BOL
- 068
- CTRY_BOLIVIA
- 591
-
-
- BOSNIA AND HERZEGOVINA
- BA
- BIH
- 070
-
-
-
-
- BOTSWANA
- BW
- BWA
- 072
-
-
-
-
- BOUVET ISLAND
- BV
- BVT
- 074
-
-
-
-
- BRAZIL
- BR
- BRA
- 076
- CTRY_BRAZIL
- 55
- verBrazil
- 71
- BRITISH INDIAN OCEAN TERRITORY
- IO
- IOT
- 086
-
-
-
-
- BRUNEI DARUSSALAM
- BN
- BRN
- 096
- CTRY_BRUNEI_DARUSSALAM
- 673
-
-
- BULGARIA
- BG
- BGR
- 100
- CTRY_BULGARIA
- 359
- verBulgaria
- 72
- BURKINA FASO
- BF
- BFA
- 854
-
-
-
-
- BURUNDI
- BI
- BDI
- 108
-
-
-
-
- CAMBODIA
- KH
- KHM
- 116
-
-
-
-
- CAMEROON
- CM
- CMR
- 120
-
-
-
-
- CANADA
- CA
- CAN
- 124
- CTRY_CANADA
- 2
- verFrCanada, verEndCanada
- 82
- CAPE VERDE
- CV
- CPV
- 132
-
-
-
-
- CAYMAN ISLANDS
- KY
- CYM
- 136
-
-
-
-
- CENTRAL AFRICAN REPUBLIC
- CF
- CAF
- 140
-
-
-
-
- CHAD
- TD
- TCD
- 148
-
-
-
-
- CHILE
- CL
- CHL
- 152
- CTRY_CHILE
- 56
-
-
- CHINA
- CN
- CHN
- 156
- CTRY_PRCHINA
- 86
- verChina
- 52
- CHRISTMAS ISLAND
- CX
- CXR
- 162
-
-
-
-
- COCOS (KEELING) ISLANDS
- CC
- CCK
- 166
-
-
-
-
- COLOMBIA
- CO
- COL
- 170
- CTRY_COLOMBIA
- 57
-
-
- COMOROS
- KM
- COM
- 174
-
-
-
-
- CONGO
- CG
- COG
- 178
-
-
-
-
- CONGO, THE DEMOCRATIC REPUBLIC OF THE
- CD
-
-
-
-
-
-
- COOK ISLANDS
- CK
- COK
- 184
-
-
-
-
- COSTA RICA
- CR
- CRI
- 188
- CTRY_COSTA_RICA
- 506
-
-
- COTE D''IVOIRE
- CI
- CIV
- 384
-
-
-
-
- CROATIA (local name: Hrvatska)
- HR
- HRV
- 191
- CTRY_CROATIA
- 385
- verCroatia, verYugoCroatian
- 68 (c), 25 (y)
- CUBA
- CU
- CUB
- 192
-
-
-
-
- CYPRUS
- CY
- CYP
- 196
-
-
- verCyprus
- 23
- CZECH REPUBLIC
- CZ
- CZE
- 203
- CTRY_CZECH
- 420
- verCzech
- 56
- DENMARK
- DK
- DNK
- 208
- CTRY_DENMARK
- 45
- verDenmark(da), verFaeroeIsl(fo)
- 9(da), 47(fo)
- DJIBOUTI
- DJ
- DJI
- 262
-
-
-
-
- DOMINICA
- DM
- DMA
- 212
-
-
-
-
- DOMINICAN REPUBLIC
- DO
- DOM
- 214
- CTRY_DOMINICAN_REPUBLIC
- 1
-
-
- EAST TIMOR
- TL
- TLS
- 626
-
-
-
-
- ECUADOR
- EC
- ECU
- 218
- CTRY_ECUADOR
- 593
-
-
- EGYPT
- EG
- EGY
- 818
- CTRY_EGYPT
- 20
- verArabic
- 16
- EL SALVADOR
- SV
- SLV
- 222
- CTRY_EL_SALVADOR
- 503
-
-
- EQUATORIAL GUINEA
- GQ
- GNQ
- 226
-
-
-
-
- ERITREA
- ER
- ERI
- 232
-
-
-
-
- ESTONIA
- EE
- EST
- 233
- CTRY_ESTONIA
- 372
- verEstonia
- 44
- ETHIOPIA
- ET
- ETH
- 210
-
-
-
-
- FALKLAND ISLANDS (MALVINAS)
- FK
- FLK
- 238
-
-
-
-
- FAROE ISLANDS
- FO
- FRO
- 234
- CTRY_FAEROE_ISLANDS
- 298
-
-
- FIJI
- FJ
- FJI
- 242
-
-
-
-
- FINLAND
- FI
- FIN
- 246
- CTRY_FINLAND
- 358
- verFinland
- 17
- FRANCE
- FR
- FRA
- 250
- CTRY_FRANCE
- 33
- verFrance
- 1
- FRANCE, METROPOLITAN
- FX
- FXX
- 249
-
-
-
-
- FRENCH GUIANA
- GF
- GUF
- 254
-
-
-
-
- FRENCH POLYNESIA
- PF
- PYF
- 258
-
-
-
-
- FRENCH SOUTHERN TERRITORIES
- TF
- ATF
- 260
-
-
-
-
- GABON
- GA
- GAB
- 266
-
-
-
-
- GAMBIA
- GM
- GMB
- 270
-
-
-
-
- GEORGIA
- GE
- GEO
- 268
- CTRY_GEORGIA
- 995
- verGeorgian
- 85
- GERMANY
- DE
- DEU
- 276
- CTRY_GERMANY
- 49
- verGermany
- 3
- GHANA
- GH
- GHA
- 288
-
-
-
-
- GIBRALTAR
- GI
- GIB
- 292
-
-
-
-
- GREECE
- GR
- GRC
- 300
- CTRY_GREECE
- 30
- verGreece, verGreecePoly
- 20, 40
- GREENLAND
- GL
- GRL
- 304
-
-
- verGreenland
- 107
- GRENADA
- GD
- GRD
- 308
-
-
-
-
- GUADELOUPE
- GP
- GLP
- 312
-
-
-
-
- GUAM
- GU
- GUM
- 316
-
-
-
-
- GUATEMALA
- GT
- GTM
- 320
- CTRY_GUATEMALA
- 502
-
-
- GUINEA
- GN
- GIN
- 324
-
-
-
-
- GUINEA-BISSAU
- GW
- GNB
- 624
-
-
-
-
- GUYANA
- GY
- GUY
- 328
-
-
-
-
- HAITI
- HT
- HTI
- 332
-
-
-
-
- HEARD ISLAND & MCDONALD ISLANDS
- HM
- HMD
- 334
-
-
-
-
- HONDURAS
- HN
- HND
- 340
- CTRY_HONDURAS
- 504
-
-
- HONG KONG
- HK
- HKG
- 344
- CTRY_HONG_KONG
- 852
-
-
- HUNGARY
- HU
- HUN
- 348
- CTRY_HUNGARY
- 36
- verHungary
- 43
- ICELAND
- IS
- ISL
- 352
- CTRY_ICELAND
- 354
- verIceland
- 21
- INDIA
- IN
- IND
- 356
- CTRY_INDIA
- 91
- verIndiaHindi(hi)
- 33
- INDONESIA
- ID
- IDN
- 360
- CTRY_INDONESIA
- 62
-
-
- IRAN, ISLAMIC REPUBLIC OF
- IR
- IRN
- 364
- CTRY_IRAN
- 981
- verIran
- 48
- IRAQ
- IQ
- IRQ
- 368
- CTRY_IRAQ
- 964
- verArabic
- 16
- IRELAND
- IE
- IRL
- 372
- CTRY_IRELAND
- 353
- verIreland
- 50
- ISRAEL
- IL
- ISR
- 376
- CTRY_ISRAEL
- 972
- verIsrael
- 13
- ITALY
- IT
- ITA
- 380
- CTRY_ITALY
- 39
- verItaly
- 4
- JAMAICA
- JM
- JAM
- 388
- CTRY_JAMAICA
- 1
-
-
- JAPAN
- JP
- JPN
- 392
- CTRY_JAPAN
- 81
- verJapan
- 14
- JORDAN
- JO
- JOR
- 400
- CTRY_JORDAN
- 962
-
-
- KAZAKHSTAN
- KZ
- KAZ
- 398
- CTRY_KAZAKSTAN
- 7
-
-
- KENYA
- KE
- KEN
- 404
- CTRY_KENYA
- 254
-
-
- KIRIBATI
- KI
- KIR
- 296
-
-
-
-
- KOREA, DEMOCRATIC PEOPLE''S REPUBLIC OF
- KP
- PRK
- 408
-
-
- verKorea
- 51
- KOREA, REPUBLIC OF
- KR
- KOR
- 410
- CTRY_SOUTH_KOREA
- 82
- verKorea
-
- KUWAIT
- KW
- KWT
- 414
- CTRY_KUWAIT
- 965
-
-
- KYRGYZSTAN
- KG
- KGZ
- 417
- CTRY_KYRGYZSTAN
- 996
-
-
- LAO PEOPLE''S DEMOCRATIC REPUBLIC
- LA
- LAO
- 418
-
-
-
-
- LATVIA
- LV
- LVA
- 428
- CTRY_LATVIA
- 371
- verLatvia
- 45
- LEBANON
- LB
- LBN
- 422
- CTRY_LEBANON
- 961
-
-
- LESOTHO
- LS
- LSO
- 426
-
-
-
-
- LIBERIA
- LR
- LBR
- 430
-
-
-
-
- LIBYAN ARAB JAMAHIRIYA
- LY
- LBY
- 434
- CTRY_LIBYA
- 218
- verArabic
- 16
- LIECHTENSTEIN
- LI
- LIE
- 438
- CTRY_LIECHTENSTEIN
- 41
-
-
- LITHUANIA
- LT
- LTU
- 440
- CTRY_LITHUANIA
- 370
- verLithuania
- 41
- LUXEMBOURG
- LU
- LUX
- 442
- CTRY_LUXEMBOURG
- 352
- verFrBelgiumLux
- 6
- MACAU
- MO
- MAC
- 446
- CTRY_MACAU
- 853
-
-
- MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF
- MK
- MKD
- 807
- CTRY_MACEDONIA
- 389
- verMacedonian
-
- MADAGASCAR
- MG
- MDG
- 450
-
-
-
-
- MALAWI
- MW
- MWI
- 454
-
-
-
-
- MALAYSIA
- MY
- MYS
- 458
- CTRY_MALAYSIA
- 60
-
-
- MALDIVES
- MV
- MDV
- 462
- CTRY_MALDIVES
- 960
-
-
- MALI
- ML
- MLI
- 466
-
-
-
-
- MALTA
- MT
- MLT
- 470
-
-
- verMalta
- 22
- MARSHALL ISLANDS
- MH
- MHL
- 584
-
-
-
-
- MARTINIQUE
- MQ
- MTQ
- 474
-
-
-
-
- MAURITANIA
- MR
- MRT
- 478
-
-
-
-
- MAURITIUS
- MU
- MUS
- 480
-
-
-
-
- MAYOTTE
- YT
- MYT
- 175
-
-
-
-
- MEXICO
- MX
- MEX
- 484
- CTRY_MEXICO
- 52
-
-
- MICRONESIA, FEDERATED STATES OF
- FM
- FSM
- 583
-
-
-
-
- MOLDOVA, REPUBLIC OF
- MD
- MDA
- 498
-
-
-
-
- MONACO
- MC
- MCO
- 492
- CTRY_MONACO
- 33
-
-
- MONGOLIA
- MN
- MNG
- 496
- CTRY_MONGOLIA
- 976
-
-
- MONTSERRAT
- MS
- MSR
- 500
-
-
-
-
- MOROCCO
- MA
- MAR
- 504
- CTRY_MOROCCO
- 212
- verArabic
- 16
- MOZAMBIQUE
- MZ
- MOZ
- 508
-
-
-
-
- MYANMAR
- MM
- MMR
- 104
-
-
-
-
- NAMIBIA
- NA
- NAM
- 516
-
-
-
-
- NAURU
- NR
- NRU
- 520
-
-
-
-
- NEPAL
- NP
- NPL
- 524
-
-
- verNepal
- 106
- NETHERLANDS
- NL
- NLD
- 528
- CTRY_NETHERLANDS
- 31
- verNetherlands
- 5
- NETHERLANDS ANTILLES
- AN
- ANT
- 530
-
-
-
-
- NEW CALEDONIA
- NC
- NCL
- 540
-
-
-
-
- NEW ZEALAND
- NZ
- NZL
- 554
- CTRY_NEW_ZEALAND
- 64
-
-
- NICARAGUA
- NI
- NIC
- 558
- CTRY_NICARAGUA
- 505
-
-
- NIGER
- NE
- NER
- 562
-
-
-
-
- NIGERIA
- NG
- NGA
- 566
-
-
-
-
- NIUE
- NU
- NIU
- 570
-
-
-
-
- NORFOLK ISLAND
- NF
- NFK
- 574
-
-
-
-
- NORTHERN MARIANA ISLANDS
- MP
- MNP
- 580
-
-
-
-
- NORWAY
- NO
- NOR
- 578
- CTRY_NORWAY
- 47
- verNorway
- 12
- OMAN
- OM
- OMN
- 512
- CTRY_OMAN
- 968
-
-
- PAKISTAN
- PK
- PAK
- 586
- CTRY_PAKISTAN
- 92
- verPakistanUrdu, verPunjabi
- 34 (U), 95 (P)
- PALAU
- PW
- PLW
- 585
-
-
-
-
- PANAMA
- PA
- PAN
- 591
- CTRY_PANAMA
- 507
-
-
- PALESTINIAN TERRITORY, OCCUPIED
- PS
-
-
-
-
-
-
- PAPUA NEW GUINEA
- PG
- PNG
- 598
-
-
-
-
- PARAGUAY
- PY
- PRY
- 600
- CTRY_PARAGUAY
- 595
-
-
- PERU
- PE
- PER
- 604
- CTRY_PERU
- 51
-
-
- PHILIPPINES
- PH
- PHL
- 608
- CTRY_PHILIPPINES
- 63
-
-
- PITCAIRN
- PN
- PCN
- 612
-
-
-
-
- POLAND
- PL
- POL
- 616
- CTRY_POLAND
- 48
- verPoland
- 42
- PORTUGAL
- PT
- PRT
- 620
- CTRY_PORTUGAL
- 351
- verPortugal
- 10
- PUERTO RICO
- PR
- PRI
- 630
- CTRY_PUERTO_RICO
- 1
-
-
- QATAR
- QA
- QAT
- 634
- CTRY_QATAR
- 974
-
-
- REUNION
- RE
- REU
- 638
-
-
-
-
- ROMANIA
- RO
- ROU*
- 642
- CTRY_ROMANIA
- 40
- verRomania
- 39
- RUSSIAN FEDERATION
- RU
- RUS
- 643
- CTRY_RUSSIA
- 7
- verRussia
- 49
- RWANDA
- RW
- RWA
- 646
-
-
-
-
- SAINT KITTS AND NEVIS
- KN
- KNA
- 659
-
-
-
-
- SAINT LUCIA
- LC
- LCA
- 662
-
-
-
-
- SAINT VINCENT AND THE GRENADINES
- VC
- VCT
- 670
-
-
-
-
- SAMOA
- WS
- WSM
- 882
-
-
-
-
- SAN MARINO
- SM
- SMR
- 674
-
-
-
-
- SAO TOME AND PRINCIPE
- ST
- STP
- 678
-
-
-
-
- SAUDI ARABIA
- SA
- SAU
- 682
- CTRY_SAUDI_ARABIA
- 966
- verArabic
- 16
- SENEGAL
- SN
- SEN
- 686
-
-
-
-
- SERBIA AND MONTENEGRO
- CS
-
-
- CTRY_SERBIA
- 381
-
-
- SEYCHELLES
- SC
- SYC
- 690
-
-
-
-
- SIERRA LEONE
- SL
- SLE
- 694
-
-
-
-
- SINGAPORE
- SG
- SGP
- 702
- CTRY_SINGAPORE
- 65
- verSingapore
- 100
- SLOVAKIA (Slovak Republic)
- SK
- SVK
- 703
- CTRY_SLOVAK
- 421
- verSlovak
- 57
- SLOVENIA
- SI
- SVN
- 705
- CTRY_SLOVENIA
- 386
- verSlovenian
- 66
- SOLOMON ISLANDS
- SB
- SLB
- 90
-
-
-
-
- SOMALIA
- SO
- SOM
- 706
-
-
-
-
- SOUTH AFRICA
- ZA
- ZAF
- 710
- CTRY_SOUTH_AFRICA
- 27
-
-
- SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS
- GS
-
-
-
-
-
-
- SPAIN
- ES
- ESP
- 724
- CTRY_SPAIN
- 34
- verSpain
- 8
- SRI LANKA
- LK
- LKA
- 144
-
-
-
-
- SAINT HELENA
- SH
- SHN
- 654
-
-
-
-
- SAINT PIERRE AND MIQUELON
- PM
- SPM
- 666
-
-
-
-
- SUDAN
- SD
- SDN
- 736
-
-
-
-
- SURINAME
- SR
- SUR
- 740
-
-
-
-
- SVALBARD AND JAN MAYEN ISLANDS
- SJ
- SJM
- 744
-
-
-
-
- SWAZILAND
- SZ
- SWZ
- 748
-
-
-
-
- SWEDEN
- SE
- SWE
- 752
- CTRY_SWEDEN
- 46
- verSweden
- 7
- SWITZERLAND
- CH
- CHE
- 756
- CTRY_SWITZERLAND
- 41
- verFrSwiss(fr), verGrSwiss(de)
- 18(fr), 19(de)
- SYRIAN ARAB REPUBLIC
- SY
- SYR
- 760
- CTRY_SYRIA
- 963
-
-
- TAIWAN, PROVINCE OF CHINA
- TW
- TWN
- 158
- CTRY_TAIWAN
- 886
- verTaiwan
- 53
- TAJIKISTAN
- TJ
- TJK
- 762
-
-
-
-
- TANZANIA, UNITED REPUBLIC OF
- TZ
- TZA
- 834
-
-
-
-
- TATARSTAN
-
-
-
- CTRY_TATARSTAN
- 7
-
-
- THAILAND
- TH
- THA
- 764
- CTRY_THAILAND
- 66
- verThailand
- 54
- TIMOR-LESTE
- TL
-
-
-
-
-
-
- TOGO
- TG
- TGO
- 768
-
-
-
-
- TOKELAU
- TK
- TKL
- 772
-
-
-
-
- TONGA
- TO
- TON
- 776
-
-
- verTonga
- 88
- TRINIDAD AND TOBAGO
- TT
- TTO
- 780
- CTRY_TRINIDAD_Y_TOBAGO
- 1
-
-
- TUNISIA
- TN
- TUN
- 788
- CTRY_TUNISIA
- 216
- verArabic
- 16
- TURKEY
- TR
- TUR
- 792
- CTRY_TURKEY
- 90
- verTurkey
- 24
- TURKMENISTAN
- TM
- TKM
- 795
-
-
-
-
- TURKS AND CAICOS ISLANDS
- TC
- TCA
- 796
-
-
-
-
- TUVALU
- TV
- TUV
- 798
-
-
-
-
- UGANDA
- UG
- UGA
- 800
-
-
-
-
- UKRAINE
- UA
- UKR
- 804
- CTRY_UKRAINE
- 380
- verUkraine
- 62
- UNITED ARAB EMIRATES
- AE
- ARE
- 784
- CTRY_UAE
- 971
-
-
- UNITED KINGDOM
- GB
- GBR
- 826
- CTRY_UNITED_KINGDOM
- 44
- verBritain
- 2
- UNITED STATES
- US
- USA
- 840
- CTRY_UNITED_STATES
- 1
- verUS
- 0
- UNITED STATES MINOR OUTLYING ISLANDS
- UM
- UMI
- 581
-
-
-
-
- URUGUAY
- UY
- URY
- 858
- CTRY_URUGUAY
- 598
-
-
- UZBEKISTAN
- UZ
- UZB
- 860
- CTRY_UZBEKISTAN
- 7
-
-
- VANUATU
- VU
- VUT
- 548
-
-
-
-
- VATICAN CITY STATE (HOLY SEE)
- VA
- VAT
- 336
-
-
-
-
- VENEZUELA
- VE
- VEN
- 862
- CTRY_VENEZUELA
- 58
-
-
- VIET NAM
- VN
- VNM
- 704
- CTRY_VIET_NAM
- 84
- verVietnam
-
- VIRGIN ISLANDS (BRITISH)
- VG
- VGB
- 92
-
-
-
-
- VIRGIN ISLANDS (U.S.)
- VI
- VIR
- 850
-
-
-
-
- WALLIS AND FUTUNA ISLANDS
- WF
- WLF
- 876
-
-
-
-
- WESTERN SAHARA
- EH
- ESH
- 732
-
-
-
-
- YEMEN
- YE
- YEM
- 887
- CTRY_YEMEN
- 967
-
-
- YUGOSLAVIA
- YU
- YUG
- 891
-
-
-
-
- ZAIRE
- ZR
- ZAR
- 180
-
-
-
-
- ZAMBIA
- ZM
- ZMB
- 894
-
-
-
-
- ZIMBABWE
- ZW
- ZWE
- 716
- CTRY_ZIMBABWE
- 263
-
-
- '!
Item was removed:
- ----- Method: ISOLanguageDefinition class>>iso3Countries (in category 'private') -----
- iso3Countries
- "ISOLanguageDefinition iso3Countries"
- "ISO2Countries := nil. ISO3Countries := nil"
-
- ISO3Countries ifNil: [self initISOCountries].
- ^ISO3Countries!
Item was removed:
- ----- Method: ISOLanguageDefinition class>>iso3LanguageDefinition: (in category 'accessing') -----
- iso3LanguageDefinition: aString
- ^self iso3LanguageTable at: aString!
Item was removed:
- ----- Method: ISOLanguageDefinition class>>iso3LanguageTable (in category 'private') -----
- iso3LanguageTable
- "ISOLanguageDefinition iso3LanguageTable"
-
- ^ISO3Table ifNil: [ISO3Table := self initISO3LanguageTable]!
Item was removed:
- ----- Method: ISOLanguageDefinition class>>isoLanguages (in category 'private') -----
- isoLanguages
- "ISO 639: 3-letter codes"
- ^'aar aa Afar
- abk ab Abkhazian
- ace Achinese
- ach Acoli
- ada Adangme
- ady Adyghe; Adygei
- afa Afro-Asiatic languages
- afh Afrihili
- afr af Afrikaans
- ain Ainu
- aka ak Akan
- akk Akkadian
- alb/sqi sq Albanian
- ale Aleut
- alg Algonquian languages
- alt Southern Altai
- amh am Amharic
- ang English, Old (ca.450-1100)
- anp Angika
- apa Apache languages
- ara ar Arabic
- arc Official Aramaic (700-300 BCE); Imperial Aramaic (700-300 BCE)
- arg an Aragonese
- arm/hye hy Armenian
- arn Mapudungun; Mapuche
- arp Arapaho
- art Artificial languages
- arw Arawak
- asm as Assamese
- ast Asturian; Bable; Leonese; Asturleonese
- ath Athapascan languages
- aus Australian languages
- ava av Avaric
- ave ae Avestan
- awa Awadhi
- aym ay Aymara
- aze az Azerbaijani
- bad Banda languages
- bai Bamileke languages
- bak ba Bashkir
- bal Baluchi
- bam bm Bambara
- ban Balinese
- baq/eus eu Basque
- bas Basa
- bat Baltic languages
- bej Beja; Bedawiyet
- bel be Belarusian
- bem Bemba
- ben bn Bengali
- ber Berber languages)
- bho Bhojpuri
- bih bh Bihari
- bik Bikol
- bin Bini; Edo
- bis bi Bislama
- bla Siksika
- bnt Bantu languages
- bos bs Bosnian
- bra Braj
- bre br Breton
- btk Batak languages
- bua Buriat
- bug Buginese
- bul bg Bulgarian
- bur/mya my Burmese
- byn Blin; Bilin
- cad Caddo
- cai Central American Indian languages
- car Galibi Carib
- cat ca Catalan; Valencian
- cau Caucasian languages
- ceb Cebuano
- cel Celtic languages
- cha ch Chamorro
- chb Chibcha
- che ce Chechen
- chg Chagatai
- chi/zho zh Chinese
- chk Chuukese
- chm Mari
- chn Chinook jargon
- cho Choctaw
- chp Chipewyan; Dene Suline
- chr Cherokee
- chu cu Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic
- chv cv Chuvash
- chy Cheyenne
- cmc Chamic languages
- cop Coptic
- cor kw Cornish
- cos co Corsican
- cpe Creoles and pidgins, English based
- cpf Creoles and pidgins, French-based
- cpp Creoles and pidgins, Portuguese-based
- cre cr Cree
- crh Crimean Tatar; Crimean Turkish
- crp Creoles and pidgins
- csb Kashubian
- cus Cushitic languages
- cze/ces cs Czech
- dak Dakota
- dan da Danish
- dar Dargwa
- day Land Dayak languages
- del Delaware
- den Slave (Athapascan)
- dgr Dogrib
- din Dinka
- div dv Divehi; Dhivehi; Maldivian
- doi Dogri
- dra Dravidian languages
- dsb Lower Sorbian
- dua Duala
- dum Dutch, Middle (ca.1050-1350)
- dut/nld nl Dutch; Flemish
- dyu Dyula
- dzo dz Dzongkha
- efi Efik
- egy Egyptian (Ancient)
- eka Ekajuk
- elx Elamite
- eng en English
- enm English, Middle (1100-1500)
- epo eo Esperanto
- est et Estonian
- ewe ee Ewe
- ewo Ewondo
- fan Fang
- fao fo Faroese
- fat Fanti
- fij fj Fijian
- fil Filipino; Pilipino
- fin fi Finnish
- fiu Finno-Ugrian languages)
- fon Fon
- fre/fra fr French
- frm French, Middle (ca.1400-1600)
- fro French, Old (842-ca.1400)
- frr Northern Frisian
- frs Eastern Frisian
- fry fy Western Frisian
- ful ff Fulah
- fur Friulian
- gaa Ga
- gay Gayo
- gba Gbaya
- gem Germanic languages
- geo/kat ka Georgian
- ger/deu de German
- gez Geez
- gil Gilbertese
- gla gd Gaelic; Scottish Gaelic
- gle ga Irish
- glg gl Galician
- glv gv Manx
- gmh German, Middle High (ca.1050-1500)
- goh German, Old High (ca.750-1050)
- gon Gondi
- gor Gorontalo
- got Gothic
- grb Grebo
- grc Greek, Ancient (to 1453)
- gre/ell el Greek, Modern (1453-)
- grn gn Guarani
- gsw Swiss German; Alemannic; Alsatian
- guj gu Gujarati
- gwi Gwich''in
- hai Haida
- hat ht Haitian; Haitian Creole
- hau ha Hausa
- haw Hawaiian
- heb he Hebrew
- her hz Herero
- hil Hiligaynon
- him Himachali
- hin hi Hindi
- hit Hittite
- hmn Hmong
- hmo ho Hiri Motu
- hrv hr Croatian
- hsb Upper Sorbian
- hun hu Hungarian
- hup Hupa
- iba Iban
- ibo ig Igbo
- ice/isl is Icelandic
- ido io Ido
- iii ii Sichuan Yi; Nuosu
- ijo Ijo languages
- iku iu Inuktitut
- ile ie Interlingue; Occidental
- ilo Iloko
- ina ia Interlingua (International Auxiliary Language Association)
- inc Indic languages
- ind id Indonesian
- ine Indo-European languages
- inh Ingush
- ipk ik Inupiaq
- ira Iranian languages
- iro Iroquoian languages
- ita it Italian
- jav jv Javanese
- jbo Lojban
- jpn ja Japanese
- jpr Judeo-Persian
- jrb Judeo-Arabic
- kaa Kara-Kalpak
- kab Kabyle
- kac Kachin; Jingpho
- kal kl Kalaallisut; Greenlandic
- kam Kamba
- kan kn Kannada
- kar Karen languages
- kas ks Kashmiri
- kau kr Kanuri
- kaw Kawi
- kaz kk Kazakh
- kbd Kabardian
- kha Khasi
- khi Khoisan languages
- khm km Central Khmer
- kho Khotanese; Sakan
- kik ki Kikuyu; Gikuyu
- kin rw Kinyarwanda
- kir ky Kirghiz; Kyrgyz
- kmb Kimbundu
- kok Konkani
- kom kv Komi
- kon kg Kongo
- kor ko Korean
- kos Kosraean
- kpe Kpelle
- krc Karachay-Balkar
- krl Karelian
- kro Kru languages
- kru Kurukh
- kua kj Kuanyama; Kwanyama
- kum Kumyk
- kur ku Kurdish
- kut Kutenai
- lad Ladino
- lah Lahnda
- lam Lamba
- lao lo Lao
- lat la Latin
- lav lv Latvian
- lez Lezghian
- lim li Limburgan; Limburger; Limburgish
- lin ln Lingala
- lit lt Lithuanian
- lol Mongo
- loz Lozi
- ltz lb Luxembourgish; Letzeburgesch
- lua Luba-Lulua
- lub lu Luba-Katanga
- lug lg Ganda
- lui Luiseno
- lun Lunda
- luo Luo (Kenya and Tanzania)
- lus Lushai
- mac/mkd mk Macedonian
- mad Madurese
- mag Magahi
- mah mh Marshallese
- mai Maithili
- mak Makasar
- mal ml Malayalam
- man Mandingo
- mao/mri mi Maori
- map Austronesian languages
- mar mr Marathi
- mas Masai
- may/msa ms Malay
- mdf Moksha
- mdr Mandar
- men Mende
- mga Irish, Middle (900-1200)
- mic Mi''kmaq; Micmac
- min Minangkabau
- mis Uncoded languages
- mkh Mon-Khmer languages
- mlg mg Malagasy
- mlt mt Maltese
- mnc Manchu
- mni Manipuri
- mno Manobo languages
- moh Mohawk
- mon mn Mongolian
- mos Mossi
- mul Multiple languages
- mun Munda languages
- mus Creek
- mwl Mirandese
- mwr Marwari
- myn Mayan languages
- myv Erzya
- nah Nahuatl languages
- nai North American Indian languages
- nap Neapolitan
- nau na Nauru
- nav nv Navajo; Navaho
- nbl nr Ndebele, South; South Ndebele
- nde nd Ndebele, North; North Ndebele
- ndo ng Ndonga
- nds Low German; Low Saxon; German, Low; Saxon, Low
- nep ne Nepali
- new Nepal Bhasa; Newari
- nia Nias
- nic Niger-Kordofanian languages
- niu Niuean
- nno nn Norwegian Nynorsk; Nynorsk, Norwegian
- nob nb Bokmal, Norwegian; Norwegian Bokmal
- nog Nogai
- non Norse, Old
- nor no Norwegian
- nqo N''Ko
- nso Pedi; Sepedi; Northern Sotho
- nub Nubian languages
- nwc Classical Newari; Old Newari; Classical Nepal Bhasa
- nya ny Chichewa; Chewa; Nyanja
- nym Nyamwezi
- nyn Nyankole
- nyo Nyoro
- nzi Nzima
- oci oc Occitan (post 1500)
- oji oj Ojibwa
- ori or Oriya
- orm om Oromo
- osa Osage
- oss os Ossetian; Ossetic
- ota Turkish, Ottoman (1500-1928)
- oto Otomian languages
- paa Papuan languages
- pag Pangasinan
- pal Pahlavi
- pam Pampanga; Kapampangan
- pan pa Panjabi; Punjabi
- pap Papiamento
- pau Palauan
- peo Persian, Old (ca.600-400 B.C.)
- per/fas fa Persian
- phi Philippine languages)
- phn Phoenician
- pli pi Pali
- pol pl Polish
- pon Pohnpeian
- por pt Portuguese
- pra Prakrit languages
- pro Provencal, Old (to 1500);Occitan, Old (to 1500)
- pus ps Pushto; Pashto
- qaa-qtz Reserved for local use
- que qu Quechua
- raj Rajasthani
- rap Rapanui
- rar Rarotongan; Cook Islands Maori
- roa Romance languages
- roh rm Romansh
- rom Romany
- rum/ron ro Romanian; Moldavian; Moldovan
- run rn Rundi
- rup Aromanian; Arumanian; Macedo-Romanian
- rus ru Russian
- sad Sandawe
- sag sg Sango
- sah Yakut
- sai South American Indian languages
- sal Salishan languages
- sam Samaritan Aramaic
- san sa Sanskrit
- sas Sasak
- sat Santali
- scn Sicilian
- sco Scots
- sel Selkup
- sem Semitic languages
- sga Irish, Old (to 900)
- sgn Sign Languages
- shn Shan
- sid Sidamo
- sin si Sinhala; Sinhalese
- sio Siouan languages
- sit Sino-Tibetan languages
- sla Slavic languages
- slo/slk sk Slovak
- slv sl Slovenian
- sma Southern Sami
- sme se Northern Sami
- smi Sami languages
- smj Lule Sami
- smn Inari Sami
- smo sm Samoan
- sms Skolt Sami
- sna sn Shona
- snd sd Sindhi
- snk Soninke
- sog Sogdian
- som so Somali
- son Songhai languages
- sot st Sotho, Southern
- spa es Spanish; Castilian
- srd sc Sardinian
- srn Sranan Tongo
- srp sr Serbian
- srr Serer
- ssa Nilo-Saharan languages
- ssw ss Swati
- suk Sukuma
- sun su Sundanese
- sus Susu
- sux Sumerian
- swa sw Swahili
- swe sv Swedish
- syc Classical Syriac
- syr Syriac
- tah ty Tahitian
- tai Tai languages
- tam ta Tamil
- tat tt Tatar
- tel te Telugu
- tem Timne
- ter Tereno
- tet Tetum
- tgk tg Tajik
- tgl tl Tagalog
- tha th Thai
- tib/bod bo Tibetan
- tig Tigre
- tir ti Tigrinya
- tiv Tiv
- tkl Tokelau
- tlh Klingon; tlhIngan-Hol
- tli Tlingit
- tmh Tamashek
- tog Tonga (Nyasa)
- ton to Tonga (Tonga Islands)
- tpi Tok Pisin
- tsi Tsimshian
- tsn tn Tswana
- tso ts Tsonga
- tuk tk Turkmen
- tum Tumbuka
- tup Tupi languages
- tur tr Turkish
- tut Altaic languages
- tvl Tuvalu
- twi tw Twi
- tyv Tuvinian
- udm Udmurt
- uga Ugaritic
- uig ug Uighur; Uyghur
- ukr uk Ukrainian
- umb Umbundu
- und Undetermined
- urd ur Urdu
- uzb uz Uzbek
- vai Vai
- ven ve Venda
- vie vi Vietnamese
- vol vo Volapuk
- vot Votic
- wak Wakashan languages
- wal Wolaitta; Wolaytta
- war Waray
- was Washo
- wel/cym cy Welsh
- wen Sorbian languages
- wln wa Walloon
- wol wo Wolof
- xal Kalmyk; Oirat
- xho xh Xhosa
- yao Yao
- yap Yapese
- yid yi Yiddish
- yor yo Yoruba
- ypk Yupik languages
- zap Zapotec
- zbl Blissymbols; Blissymbolics; Bliss
- zen Zenaga
- zha za Zhuang; Chuang
- znd Zande languages
- zul zu Zulu
- zun Zuni
- zxx No linguistic content; Not applicable
- zza Zaza; Dimili; Dimli; Kirdki; Kirmanjki; Zazaki'!
Item was removed:
- ----- Method: ISOLanguageDefinition class>>readISOLanguagesFrom: (in category 'private') -----
- readISOLanguagesFrom: stream
- "ISOLanguageDefinition readISOLanguagesFrom: ISOLanguageDefinition isoLanguages readStream "
- | languages language code3 index line |
- languages := Dictionary new.
- [stream atEnd
- or: [(line := stream nextLine readStream) atEnd]]
- whileFalse: [
- language := ISOLanguageDefinition new.
- code3 := line upTo: Character tab.
- (index := code3 indexOf: $/) > 0
- ifTrue: [
- language iso3: (code3 copyFrom: 1 to: index-1).
- language iso3Alternate: (code3 copyFrom: index+1 to: code3 size)]
- ifFalse: [language iso3: code3].
- language
- iso2: (line upTo: Character tab);
- language: line upToEnd.
- languages at: language iso3 put: language].
- ^languages!
Item was removed:
- ----- Method: ISOLanguageDefinition>>iso2 (in category 'accessing') -----
- iso2
- ^iso2 ifNil: [self iso3]!
Item was removed:
- ----- Method: ISOLanguageDefinition>>iso2: (in category 'initialize') -----
- iso2: aString
- iso2 := aString ifEmpty: [nil] ifNotEmpty: [aString]!
Item was removed:
- ----- Method: ISOLanguageDefinition>>iso3 (in category 'accessing') -----
- iso3
- ^iso3 ifNil: ['']!
Item was removed:
- ----- Method: ISOLanguageDefinition>>iso3: (in category 'initialize') -----
- iso3: aString
- iso3 := aString ifEmpty: [nil] ifNotEmpty: [aString]!
Item was removed:
- ----- Method: ISOLanguageDefinition>>iso3Alternate (in category 'accessing') -----
- iso3Alternate
- ^iso3Alternate ifNil: ['']!
Item was removed:
- ----- Method: ISOLanguageDefinition>>iso3Alternate: (in category 'initialize') -----
- iso3Alternate: aString
- iso3Alternate := aString ifEmpty: [nil] ifNotEmpty: [aString]!
Item was removed:
- ----- Method: ISOLanguageDefinition>>language (in category 'accessing') -----
- language
- ^language!
Item was removed:
- ----- Method: ISOLanguageDefinition>>language: (in category 'initialize') -----
- language: aString
- language := aString!
Item was removed:
- NaturalLanguageTranslator subclass: #InternalTranslator
- instanceVariableNames: 'generics'
- classVariableNames: 'AllKnownPhrases CachedTranslations'
- poolDictionaries: ''
- category: 'GetText-Localization'!
-
- !InternalTranslator commentStamp: 'tak 10/19/2007 11:12' prior: 0!
- An InternalTranslator is used a translation dictionary in a image.
- You can use it without any external translation file.
-
- Structure:
- generics Dictionary -- msgid -> msgstr
- !
Item was removed:
- ----- Method: InternalTranslator class>>allKnownPhrases (in category 'private') -----
- allKnownPhrases
- ^AllKnownPhrases ifNil: [AllKnownPhrases := Dictionary new: 2051]!
Item was removed:
- ----- Method: InternalTranslator class>>availableLanguageLocaleIDs (in category 'accessing') -----
- availableLanguageLocaleIDs
- "Return locale ids for the internal translation dictionary."
- "InternalTranslator availableLanguageLocaleIDs"
- ^ self cachedTranslations values collect:[:each | each localeID]!
Item was removed:
- ----- Method: InternalTranslator class>>cachedTranslations (in category 'private') -----
- cachedTranslations
- "CachedTranslations := nil"
- ^CachedTranslations ifNil: [CachedTranslations := Dictionary new]!
Item was removed:
- ----- Method: InternalTranslator class>>directoryForLanguage:country:create: (in category 'private loading') -----
- directoryForLanguage: isoLanguage country: isoCountry create: createDir
- "Try to locate the <prefs>/locale/<language>{/<country>} folder.
- If createDir is set, create the path down to country or language, depending on wether it's specified..
- Return the directory for country or language depending on specification.
- If neither exists, nil"
-
- "NaturalLanguageTranslator directoryForLanguage: 'es' country: nil create: true"
- "NaturalLanguageTranslator directoryForLanguage: 'de' country: 'DE' create: true"
- "NaturalLanguageTranslator directoryForLanguage: 'en' country: 'US' create: false"
- "NaturalLanguageTranslator directoryForLanguage: 'en' country: nil create: true"
-
- "If this fails, there is nothing we can do about it here"
- | localeDir countryDir languageDir |
- localeDir := self localeDirCreate: createDir.
- localeDir ifNil: [^nil].
-
- isoCountry ifNil: [
- languageDir := localeDir directoryNamed: isoLanguage.
- createDir
- ifTrue: [languageDir assureExistence].
- ^languageDir exists
- ifTrue: [languageDir]
- ifFalse: [nil]].
-
- countryDir := languageDir directoryNamed: isoCountry.
- createDir
- ifTrue: [countryDir assureExistence].
-
- ^countryDir exists
- ifTrue: [countryDir]
- ifFalse: [nil]!
Item was removed:
- ----- Method: InternalTranslator class>>directoryForLocaleID:create: (in category 'private loading') -----
- directoryForLocaleID: localeID create: createDir
- "Try to locate the <prefs>/locale/<language>{/<country>} folder.
- If createDir is set, create the path down to country or language, depending on locale.
- Return the directory for country or language depending on locale.
- If neither exists, nil"
-
- "NaturalLanguageTranslator directoryForLanguage: 'de' country: nil readOnly: true"
- "NaturalLanguageTranslator directoryForLanguage: 'de' country: 'DE' readOnly: true"
- "NaturalLanguageTranslator directoryForLanguage: 'en' country: 'US' readOnly: false"
- "NaturalLanguageTranslator directoryForLanguage: 'en' country: nil readOnly: true"
-
- ^self directoryForLanguage: localeID isoLanguage country: localeID isoCountry create: createDir!
Item was removed:
- ----- Method: InternalTranslator class>>discardAllTranslations (in category 'class initialization') -----
- discardAllTranslations
- AllKnownPhrases := nil.
- self resetCaches.!
Item was removed:
- ----- Method: InternalTranslator class>>fileReaderServicesForFile:suffix: (in category 'file-services') -----
- fileReaderServicesForFile: fullName suffix: suffix
- "Answer the file services associated with given file"
- ^ (suffix = self translationSuffix) | (suffix = '*')
- ifTrue: [{self serviceMergeLanguageTranslations}]
- ifFalse: [#()]!
Item was removed:
- ----- Method: InternalTranslator class>>loadAvailableExternalLocales (in category 'private loading') -----
- loadAvailableExternalLocales
- "private - register locales IDs based on the content of the <prefs>/locale/ directory"
- | localeDir |
- localeDir := self localeDirCreate: false.
- localeDir ifNil: [^ #()].
-
- localeDir directoryNames
- do: [:langDirName |
- | langDir |
- langDir := localeDir directoryNamed: langDirName.
-
- (langDir fileNamesMatching: '*.' , self translationSuffix)
- ifNotEmpty: [self loadTranslatorForIsoLanguage: langDirName isoCountry: nil].
-
- langDir directoryNames
- do: [:countryDirName |
- | countryDir |
- countryDir := langDirName directoryNamed: countryDirName.
- (countryDir fileNamesMatching: '*.' , self translationSuffix)
- ifNotEmpty: [self loadTranslatorForIsoLanguage: langDirName isoCountry: countryDirName]
- ]
- ].
- !
Item was removed:
- ----- Method: InternalTranslator class>>loadExternalTranslationsFor: (in category 'private loading') -----
- loadExternalTranslationsFor: translator
- "Try to load translations from external external files.
- The files are located in the <prefs>/locale/<language>{/<country>} folder.
- There can be more than one file for each location, so applications can install their own partial translation tables. All files in the specific folder are loaded."
-
- | translationDir |
- translationDir := self directoryForLocaleID: translator localeID create: false.
- translationDir ifNil: [ ^nil ].
- (translationDir fileNamesMatching: '*.' , self translationSuffix)
- do: [:fileName | translator loadFromFileNamed: (translationDir fullNameFor: fileName)]!
Item was removed:
- ----- Method: InternalTranslator class>>loadForLocaleIsoString:fromGzippedMimeLiteral: (in category 'file-services') -----
- loadForLocaleIsoString: localeString fromGzippedMimeLiteral: mimeString
- "merge the translation from the mime literal."
- | stream localeID translator gs rbStream s currentPlatform |
- s := Base64MimeConverter mimeDecodeToBytes: mimeString readStream.
- s reset.
- gs := GZipReadStream on: s.
- rbStream := MultiByteBinaryOrTextStream with: gs contents asString.
- rbStream converter: UTF8TextConverter new.
- rbStream reset.
- localeID := LocaleID isoString: localeString.
- currentPlatform := Locale currentPlatform.
- [Locale
- currentPlatform: (Locale localeID: localeID).
- stream := ReadStream on: rbStream contents]
- ensure: [Locale currentPlatform: currentPlatform].
- translator := self localeID: localeID.
- translator loadFromStream: stream.
- LanguageEnvironment resetKnownEnvironments!
Item was removed:
- ----- Method: InternalTranslator class>>loadTranslatorForIsoLanguage:isoCountry: (in category 'private loading') -----
- loadTranslatorForIsoLanguage: isoLanguage isoCountry: isoCountry
- "private - load the translations from <prefs>/locale/ directory
- the procedure is to assure the existence of a translator for the
- given language/country and then load the external translations for this translator"
-
- | translator |
- translator := self newLocaleID: (LocaleID isoLanguage: isoLanguage isoCountry: isoCountry).
-
- self loadExternalTranslationsFor: translator!
Item was removed:
- ----- Method: InternalTranslator class>>localeDirCreate: (in category 'private loading') -----
- localeDirCreate: createDir
- "Try to locate the <prefs>/locale/ folder.
- If createDir is set, try to create the path.
- If it doesn't exist, return nil"
-
- "If this fails, there is nothing we can do about it here"
- | prefDir localeDir |
- (createDir not
- and: [ExternalSettings preferenceDirectory isNil])
- ifTrue: [^ nil].
-
- prefDir := ExternalSettings assuredPreferenceDirectory.
- prefDir exists
- ifFalse: [^nil].
-
-
- localeDir := prefDir directoryNamed: 'locale'.
- createDir
- ifTrue: [localeDir assureExistence].
- ^localeDir exists
- ifTrue: [localeDir]
- ifFalse: [nil]!
Item was removed:
- ----- Method: InternalTranslator class>>localeID: (in category 'accessing') -----
- localeID: localeID
- "For backward compatibility, see NaturalLanguageTranslator >> fileOutHeaderOn:."
- ^ self newLocaleID: localeID!
Item was removed:
- ----- Method: InternalTranslator class>>mergeLegacyTranslators (in category 'accessing') -----
- mergeLegacyTranslators
- self availableLanguageLocaleIDs
- do: [:localeID | (NaturalLanguageTranslator translators includesKey: localeID)
- ifFalse: [NaturalLanguageTranslator translators
- at: localeID
- put: (self newLocaleID: localeID)]]!
Item was removed:
- ----- Method: InternalTranslator class>>mergeTranslationFileNamed: (in category 'file-services') -----
- mergeTranslationFileNamed: fileFullNameString
- "merge the translation in the file named fileFullNameString"
-
- | stream localeID translator |
- stream := FileStream readOnlyFileNamed: fileFullNameString.
- [localeID := LocaleID isoString: stream localName sansPeriodSuffix.
- translator := self localeID: localeID.
- translator loadFromStream: stream]
- ensure: [stream close].
- LanguageEnvironment resetKnownEnvironments.
-
- !
Item was removed:
- ----- Method: InternalTranslator class>>newLocaleID: (in category 'accessing') -----
- newLocaleID: localeID
- ^ self cachedTranslations
- at: localeID
- ifAbsentPut: [self new localeID: localeID]!
Item was removed:
- ----- Method: InternalTranslator class>>privateStartUp (in category 'class initialization') -----
- privateStartUp
- self loadAvailableExternalLocales.
- self mergeLegacyTranslators.
- !
Item was removed:
- ----- Method: InternalTranslator class>>registerPhrase: (in category 'private') -----
- registerPhrase: phrase
- "Using a Dictionary so we can lookup existing string instead of creating needless copies when loading a translation."
- self allKnownPhrases at: phrase put: phrase!
Item was removed:
- ----- Method: InternalTranslator class>>registeredPhraseFor: (in category 'private') -----
- registeredPhraseFor: phrase
- "Using a Dictionary so we can lookup existing string instead of creating needless copies when loading a translation."
- ^self allKnownPhrases at: phrase ifAbsentPut: [phrase]!
Item was removed:
- ----- Method: InternalTranslator class>>removeLocaleID: (in category 'accessing') -----
- removeLocaleID: localeID
- "self removeLocaleID: (LocaleID isoString: 'ja-kids')"
- self cachedTranslations
- removeKey: localeID
- ifAbsent: [].
- NaturalLanguageTranslator privateStartUp!
Item was removed:
- ----- Method: InternalTranslator class>>resetCaches (in category 'class initialization') -----
- resetCaches
- CachedTranslations := nil.
- !
Item was removed:
- ----- Method: InternalTranslator class>>serviceMergeLanguageTranslations (in category 'file-services') -----
- serviceMergeLanguageTranslations
- "Answer a service for merging of translation files"
- ^ SimpleServiceEntry
- provider: self
- label: 'merge the translation file' translatedNoop
- selector: #mergeTranslationFileNamed:
- description: 'merge the translation file into the language named like the file' translatedNoop
- buttonLabel: 'merge' translatedNoop!
Item was removed:
- ----- Method: InternalTranslator class>>services (in category 'file-services') -----
- services
- "Answer potential file services associated with this class"
- ^ {self serviceMergeLanguageTranslations}!
Item was removed:
- ----- Method: InternalTranslator class>>translationSuffix (in category 'private') -----
- translationSuffix
- ^'translation'!
Item was removed:
- ----- Method: InternalTranslator>>atRandom (in category 'accessing') -----
- atRandom
-
- ^ generics atRandom value.
- !
Item was removed:
- ----- Method: InternalTranslator>>checkPhrase:translation: (in category 'translation') -----
- checkPhrase: phrase translation: translation!
Item was removed:
- ----- Method: InternalTranslator>>defaultBackgroundColor (in category 'user interface') -----
- defaultBackgroundColor
- "answer the receiver's defaultBackgroundColor for views"
- ^ Color cyan!
Item was removed:
- ----- Method: InternalTranslator>>fileOutHeader (in category 'fileIn/fileOut') -----
- fileOutHeader
- ^ '''Translation dictionary'''!
Item was removed:
- ----- Method: InternalTranslator>>fileOutHeaderOn: (in category 'user interface') -----
- fileOutHeaderOn: aStream
- aStream binary.
- UTF8TextConverter writeBOMOn: aStream.
- aStream text.
- aStream nextChunkPut: self fileOutHeader;
- cr.
- aStream timeStamp; cr.
- aStream nextPut: $!!.
- aStream nextChunkPut: '(' , self class name , ' localeID: ' , id storeString , ')'.
- aStream cr!
Item was removed:
- ----- Method: InternalTranslator>>fileOutHeaderOn:withBOM: (in category 'user interface') -----
- fileOutHeaderOn: aStream withBOM: bomFlag
- bomFlag ifTrue: [
- aStream binary.
- UTF8TextConverter writeBOMOn: aStream.
- aStream text.
- ].
- aStream nextChunkPut: self fileOutHeader;
- cr.
- aStream timeStamp; cr.
- aStream nextPut: $!!.
- aStream nextChunkPut: '(' , self class name , ' localeID: ' , id storeString , ')'.
- aStream cr!
Item was removed:
- ----- Method: InternalTranslator>>fileOutOn: (in category 'fileIn/fileOut') -----
- fileOutOn: aStream
- "self current fileOutOn: Transcript. Transcript endEntry"
- self fileOutOn: aStream keys: nil withBOM: true.
- !
Item was removed:
- ----- Method: InternalTranslator>>fileOutOn:keys:withBOM: (in category 'fileIn/fileOut') -----
- fileOutOn: aStream keys: keys withBOM: bomFlag
- "self current fileOutOn: Transcript. Transcript endEntry"
- self fileOutHeaderOn: aStream withBOM: bomFlag.
- (keys
- ifNil: [generics keys asSortedCollection])
- do: [:key | self
- nextChunkPut: (generics associationAt: key)
- on: aStream].
- keys
- ifNil: [self untranslated
- do: [:each | self nextChunkPut: each -> '' on: aStream]].
- aStream nextPut: $!!;
- cr!
Item was removed:
- ----- Method: InternalTranslator>>generics (in category 'private') -----
- generics
- ^generics ifNil: [generics := Dictionary new]!
Item was removed:
- ----- Method: InternalTranslator>>isDomainLoaded: (in category 'accessing') -----
- isDomainLoaded: aDomainName
- ^true
- !
Item was removed:
- ----- Method: InternalTranslator>>loadFromFileNamed: (in category 'private store-retrieve') -----
- loadFromFileNamed: fileNameString
- "Load translations from an external file"
-
- | stream |
- [stream := FileStream readOnlyFileNamed: fileNameString.
- self loadFromStream: stream]
- ensure: [stream close].
- self changed: #translations.
- self changed: #untranslated.
- !
Item was removed:
- ----- Method: InternalTranslator>>loadFromRefStream: (in category 'private store-retrieve') -----
- loadFromRefStream: stream
- "Load translations from an external file"
- | loadedArray refStream |
- refStream := ReferenceStream on: stream.
- [loadedArray := refStream next]
- ensure: [refStream close].
- self processExternalObject: loadedArray !
Item was removed:
- ----- Method: InternalTranslator>>loadFromStream: (in category 'private store-retrieve') -----
- loadFromStream: stream
- "Load translations from an external file"
- | header isFileIn |
- header := '''Translation dictionary'''.
- isFileIn := (stream next: header size)
- = header.
- stream reset.
- isFileIn
- ifTrue: [stream fileInAnnouncing: 'Loading ' translated, stream localName]
- ifFalse: [self loadFromRefStream: stream]!
Item was removed:
- ----- Method: InternalTranslator>>mergeTranslations: (in category 'private store-retrieve') -----
- mergeTranslations: newTranslations
- "Merge a new set of translations into the exiting table.
- Overwrites existing entries."
-
- newTranslations keysAndValuesDo: [:key :value |
- self rawPhrase: (self class registeredPhraseFor: key) translation: value].
- self changed: #translations.
- self changed: #untranslated.!
Item was removed:
- ----- Method: InternalTranslator>>nextChunkPut:on: (in category 'fileIn/fileOut') -----
- nextChunkPut: anObject on: aStream
- | i remainder terminator |
- terminator := $!!.
- remainder := anObject storeString.
- [(i := remainder indexOf: terminator) = 0]
- whileFalse: [aStream
- nextPutAll: (remainder copyFrom: 1 to: i).
- aStream nextPut: terminator.
- "double imbedded terminators"
- remainder := remainder copyFrom: i + 1 to: remainder size].
- aStream nextPutAll: remainder.
- aStream nextPut: terminator; cr.!
Item was removed:
- ----- Method: InternalTranslator>>phrase:translation: (in category 'translation') -----
- phrase: phraseString translation: translationString
- self generics at: phraseString put: translationString asString.
- self changed: #translations.
- self changed: #untranslated.!
Item was removed:
- ----- Method: InternalTranslator>>processExternalObject: (in category 'private store-retrieve') -----
- processExternalObject: anArray
- "pivate - process the external object"
-
- "new format -> {translations. untranslated}"
-
- anArray second do: [:each | self class registerPhrase: each].
-
- self mergeTranslations: anArray first!
Item was removed:
- ----- Method: InternalTranslator>>rawPhrase:translation: (in category 'translation') -----
- rawPhrase: phraseString translation: translationString
- self generics at: phraseString put: translationString asString.
- !
Item was removed:
- ----- Method: InternalTranslator>>rawRemoveUntranslated: (in category 'translation') -----
- rawRemoveUntranslated: untranslated
-
- self class allKnownPhrases removeKey: untranslated ifAbsent: [].
- self changed: #untranslated.!
Item was removed:
- ----- Method: InternalTranslator>>removeTranslationFor: (in category 'translation') -----
- removeTranslationFor: phraseString
- self generics removeKey: phraseString ifAbsent: [].
- self changed: #translations.
- self changed: #untranslated.!
Item was removed:
- ----- Method: InternalTranslator>>removeUntranslated: (in category 'translation') -----
- removeUntranslated: untranslated
-
- self class allKnownPhrases removeKey: untranslated ifAbsent: [].
- !
Item was removed:
- ----- Method: InternalTranslator>>saveToFileNamed: (in category 'private store-retrieve') -----
- saveToFileNamed: fileNameString
- "save the receiver's translations to a file named fileNameString"
- | stream |
- "Set true if you need to save as binary"
- false
- ifTrue: [stream := ReferenceStream fileNamed: fileNameString.
- stream nextPut: {self translations. self untranslated}.
- stream close.
- ^ self].
- stream := FileStream fileNamed: fileNameString.
- [self fileOutOn: stream]
- ensure: [stream close]!
Item was removed:
- ----- Method: InternalTranslator>>scanFrom: (in category 'fileIn/fileOut') -----
- scanFrom: aStream
- "Read a definition of dictionary.
- Make sure current locale corresponds my locale id"
- | aString newTranslations assoc currentPlatform |
- newTranslations := Dictionary new.
- currentPlatform := Locale currentPlatform.
- [Locale
- currentPlatform: (Locale localeID: id).
- [aString := aStream nextChunk withSqueakLineEndings.
- aString size > 0]
- whileTrue: [assoc := Compiler evaluate: aString.
- assoc value = ''
- ifTrue: [self class registerPhrase: assoc key]
- ifFalse: [newTranslations add: assoc]]]
- ensure: [Locale currentPlatform: currentPlatform].
- self mergeTranslations: newTranslations!
Item was removed:
- ----- Method: InternalTranslator>>translate:inDomain: (in category 'translation') -----
- translate: aString inDomain: aDomainName
- | translator |
- ^ self generics
- at: aString
- ifAbsent: [self localeID hasParent
- ifTrue: [translator := self class cachedTranslations
- at: self localeID parent
- ifAbsent: [^ aString].
- translator translate: aString inDomain: aDomainName]
- ifFalse: [aString]]!
Item was removed:
- ----- Method: InternalTranslator>>translations (in category 'accessing') -----
- translations
- ^self generics!
Item was removed:
- ----- Method: InternalTranslator>>untranslated (in category 'accessing') -----
- untranslated
- | translations |
- translations := self translations.
- ^self class allKnownPhrases reject: [:each | translations includesKey: each]!
Item was changed:
----- Method: LanguageEditor>>checkSpanishPhrase:translation: (in category 'private') -----
checkSpanishPhrase: phraseString translation: translationString
"check the translation and aswer a string with a comment or a
nil meaning no-comments"
| superResult |
superResult := self checkPhrase: phraseString translation: translationString.
superResult isNil
ifFalse: [^ superResult].
"For some reason, MCInstaller couldn't read Spanish character. "
"((translationString includes: $?)
+ and: [(translationString includes: $ø) not])
+ ifTrue: [^ 'øOlvidÛ el signo de pregunta?'].
- and: [(translationString includes: $¿) not])
- ifTrue: [^ '¿Olvidó el signo de pregunta?'].
((translationString includes: $!!)
+ and: [(translationString includes: $°) not])
+ ifTrue: [^ 'øOlvidÛ el signo de admiraciÛn?'].
- and: [(translationString includes: $¡) not])
- ifTrue: [^ '¿Olvidó el signo de admiración?'].
"
^ nil
!
Item was changed:
----- Method: LanguageEditor>>codeSelectedTranslationAsMimeString (in category 'gui methods') -----
codeSelectedTranslationAsMimeString
| keys code tmpStream s2 gzs cont |
keys := selectedTranslations
collect: [:key | self translations at: key].
code := String
streamContents: [:aStream | self translator fileOutOn: aStream keys: keys withBOM: false].
+ tmpStream := MultiByteBinaryOrTextStream on: ''.
- tmpStream _ MultiByteBinaryOrTextStream on: ''.
tmpStream converter: UTF8TextConverter new.
tmpStream nextPutAll: code.
+ s2 := RWBinaryOrTextStream on: ''.
- s2 _ RWBinaryOrTextStream on: ''.
gzs := GZipWriteStream on: s2.
tmpStream reset.
gzs nextPutAll: (tmpStream binary contentsOfEntireFile asString) contents.
gzs close.
s2 reset.
+ cont := String streamContents: [:strm |
- cont _ String streamContents: [:strm |
strm nextPutAll: '"Gzip+Base64 encoded translation for;'; cr.
strm nextPutAll: '#('.
keys do: [:each | strm nextPutAll: '''', each, ''' '.].
strm nextPutAll: ')"'; cr; cr.
strm nextPutAll: 'NaturalLanguageTranslator loadForLocaleIsoString: '.
strm nextPut: $'.
strm nextPutAll: translator localeID isoString.
strm nextPut: $'.
strm nextPutAll: ' fromGzippedMimeLiteral: '.
strm nextPut: $'.
strm nextPutAll: (Base64MimeConverter mimeEncode: s2) contents.
strm nextPutAll: '''.'.
strm cr.
].
(StringHolder new contents: cont)
openLabel: 'exported codes in Gzip+Base64 encoding' translated!
Item was changed:
----- Method: LanguageEditor>>filterTranslations: (in category 'gui methods') -----
filterTranslations: aString
| filter |
filter := aString ifNil:[''].
""
+ translationsFilter := filter.
- translationsFilter _ filter.
self refreshTranslations.
!
Item was changed:
----- Method: LanguageEditor>>getTextExport (in category 'gui methods') -----
getTextExport
Cursor wait
+ showWhile: [GetTextExporter new exportTranslator: self model]!
- showWhile: [GetTextExporter2 new exportTranslator: self model]!
Item was changed:
----- Method: LanguageEditor>>getTextExportTemplate (in category 'gui methods') -----
getTextExportTemplate
Cursor wait
+ showWhile: [GetTextExporter new exportTemplate] !
- showWhile: [GetTextExporter2 new exportTemplate] !
Item was changed:
----- Method: LanguageEditor>>initializeNewerKeys (in category 'initialization') -----
initializeNewerKeys
+ newerKeys := Set new.
- newerKeys _ Set new.
!
Item was changed:
----- Method: LanguageEditor>>selectNewerKeys (in category 'gui methods') -----
selectNewerKeys
| index |
self deselectAllTranslation.
newerKeys do: [:k |
+ index := self translations indexOf: k ifAbsent: [0].
- index _ self translations indexOf: k ifAbsent: [0].
index > 0 ifTrue: [
self selectedTranslationsAt: index put: true
].
].
!
Item was changed:
----- Method: LanguageEditor>>translation: (in category 'accessing') -----
translation: aStringOrText
"change the translation for the selected phrase"
| phrase |
self selectedTranslation isZero
ifTrue: [^ self].
+ phrase := self translations at: self selectedTranslation.
- phrase _ self translations at: self selectedTranslation.
translator
phrase: phrase
translation: aStringOrText asString.
newerKeys add: phrase.
^ true!
Item was changed:
----- Method: LanguageEditor>>translations (in category 'accessing') -----
translations
"answet the translator's translations"
| allTranslations filterString |
translations ifNotNil: [^translations].
allTranslations := self translator translations keys.
""
filterString := self translationsFilter.
""
filterString isEmpty
ifFalse: [allTranslations := allTranslations
select: [:each | ""
('*' , filterString , '*' match: each)
or: ['*' , filterString , '*'
match: (self translator translate: each)]]].
""
+ ^ translations := allTranslations asSortedCollection asArray!
- ^ translations _ allTranslations asSortedCollection asArray!
Item was changed:
----- Method: LanguageEditor>>untranslated (in category 'accessing') -----
untranslated
"answer the translator's untranslated phrases"
| all filterString |
untranslated ifNotNil: [^ untranslated].
all := self translator untranslated.
""
filterString := self untranslatedFilter.
""
filterString isEmpty
ifFalse: [all := all
select: [:each | ""
('*' , filterString , '*' match: each)
or: ['*' , filterString , '*'
match: (self translator translate: each)]]].
""
+ ^ untranslated := all asSortedCollection asArray!
- ^ untranslated _ all asSortedCollection asArray!
Item was removed:
- Object subclass: #Locale
- instanceVariableNames: 'id shortDate longDate time decimalSymbol digitGrouping currencySymbol currencyNotation measurement offsetLocalToUTC offsetVMToUTC dstActive'
- classVariableNames: 'Current CurrentPlatform KnownLocales LanguageSymbols LocaleChangeListeners PlatformEncodings Previous'
- poolDictionaries: ''
- category: 'GetText-Localization'!
-
- !Locale commentStamp: '<historical>' prior: 0!
- Main comment stating the purpose of this class and relevant relationship to other classes.
-
-
-
- http://www.w3.org/WAI/ER/IG/ert/iso639.htm
- http://www.oasis-open.org/cover/iso639a.html
- See also
- http://oss.software.ibm.com/cvs/icu/~checkout~/icuhtml/design/language_code_issues.html
- http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.10
-
- ISO 3166
- http://mitglied.lycos.de/buran/knowhow/codes/locales/
- !
Item was removed:
- ----- Method: Locale class>>addLocalChangedListener: (in category 'notification') -----
- addLocalChangedListener: anObjectOrClass
- self localeChangedListeners add: anObjectOrClass!
Item was removed:
- ----- Method: Locale class>>clipboadInterpreter (in category 'accessing') -----
- clipboadInterpreter
- ^NoConversionClipboardInterpreter new!
Item was removed:
- ----- Method: Locale class>>current (in category 'accessing') -----
- current
- "Current := nil"
- Current ifNil: [
- Current := self determineCurrentLocale.
- "Transcript show: 'Current locale: ' , Current localeID asString; cr"].
- ^Current!
Item was removed:
- ----- Method: Locale class>>currentPlatform (in category 'accessing') -----
- currentPlatform
- "CurrentPlatform := nil"
- CurrentPlatform ifNil: [CurrentPlatform := self determineCurrentLocale].
- ^CurrentPlatform!
Item was removed:
- ----- Method: Locale class>>currentPlatform: (in category 'accessing') -----
- currentPlatform: locale
- CurrentPlatform := locale.
- LanguageEnvironment startUp.
- !
Item was removed:
- ----- Method: Locale class>>currentPlatform:during: (in category 'accessing') -----
- currentPlatform: locale during: aBlock
- "Alter current language platform during a block"
- | backupPlatform |
- backupPlatform := self currentPlatform.
- [self currentPlatform: locale.
- aBlock value]
- ensure: [self currentPlatform: backupPlatform]!
Item was removed:
- ----- Method: Locale class>>defaultEncodingName: (in category 'platform specific') -----
- defaultEncodingName: languageSymbol
- | encodings platformName osVersion |
- platformName := SmalltalkImage current platformName.
- osVersion := SmalltalkImage current getSystemAttribute: 1002.
- encodings := self platformEncodings at: languageSymbol
- ifAbsent: [self platformEncodings at: #default].
- encodings at: platformName ifPresent: [:encoding | ^encoding].
- encodings at: platformName , ' ' , osVersion
- ifPresent: [:encoding | ^encoding].
- ^encodings at: #default!
Item was removed:
- ----- Method: Locale class>>defaultInputInterpreter (in category 'platform specific') -----
- defaultInputInterpreter
- | platformName osVersion |
- platformName := SmalltalkImage current platformName.
- osVersion := SmalltalkImage current getSystemAttribute: 1002.
- (platformName = 'Win32' and: [osVersion = 'CE'])
- ifTrue: [^NoInputInterpreter new].
- platformName = 'Win32' ifTrue: [^MacRomanInputInterpreter new].
- ^NoInputInterpreter new!
Item was removed:
- ----- Method: Locale class>>determineCurrentLocale (in category 'private') -----
- determineCurrentLocale
- "For now just return the default locale.
- A smarter way would be to determine the current platforms default locale."
- "Locale determineCurrentLocale"
-
- ^self new determineLocale!
Item was removed:
- ----- Method: Locale class>>initKnownLocales (in category 'private') -----
- initKnownLocales
- | locales |
- locales := Dictionary new.
-
- "Init the locales for which we have translations"
- InternalTranslator availableLanguageLocaleIDs do: [:id |
- locales at: id put: (Locale new localeID: id)].
- ^locales!
Item was removed:
- ----- Method: Locale class>>initialize (in category 'class initialization') -----
- initialize
- "Locale initialize"
-
- Smalltalk addToStartUpList: Locale.
- Preferences addPreference: #useLocale
- categories: #('general') default: false
- balloonHelp: 'Use the system locale to set the system language etc at startup'.!
Item was removed:
- ----- Method: Locale class>>initializePlatformEncodings (in category 'class initialization') -----
- initializePlatformEncodings
- "Locale initializePlatformEncodings"
-
- | platform |
- PlatformEncodings isNil ifTrue: [ PlatformEncodings := Dictionary new ].
-
- platform := PlatformEncodings at: 'default' ifAbsentPut: Dictionary new.
- platform
- at: 'default' put: 'iso8859-1';
- at: 'Win32 CE' put: 'utf-8';
- yourself.
-
- platform := PlatformEncodings at: 'ja' ifAbsentPut: Dictionary new.
- platform
- at: 'default' put: 'shift-jis';
- at: 'unix' put: 'euc-jp';
- at: 'Win32 CE' put: 'utf-8';
- yourself.
-
- platform := PlatformEncodings at: 'ko' ifAbsentPut: Dictionary new.
- platform
- at: 'default' put: 'euc-kr';
- at: 'Win32 CE' put: 'utf-8';
- yourself.
-
- platform := PlatformEncodings at: 'zh' ifAbsentPut: Dictionary new.
- platform
- at: 'default' put: 'gb2312';
- at: 'unix' put: 'euc-cn';
- at: 'Win32 CE' put: 'utf-8';
- yourself.
- !
Item was removed:
- ----- Method: Locale class>>isoLanguage: (in category 'accessing') -----
- isoLanguage: isoLanguage
- ^self isoLanguage: isoLanguage isoCountry: nil!
Item was removed:
- ----- Method: Locale class>>isoLanguage:isoCountry: (in category 'accessing') -----
- isoLanguage: isoLanguage isoCountry: isoCountry
- ^self localeID: (LocaleID isoLanguage: isoLanguage isoCountry: isoCountry)!
Item was removed:
- ----- Method: Locale class>>isoLocale: (in category 'accessing') -----
- isoLocale: aString
- !
Item was removed:
- ----- Method: Locale class>>knownLocales (in category 'private') -----
- knownLocales
- "KnownLocales := nil"
- ^KnownLocales ifNil: [KnownLocales := self initKnownLocales]!
Item was removed:
- ----- Method: Locale class>>languageSymbol: (in category 'accessing') -----
- languageSymbol: languageSymbol
- "Locale languageSymbol: #Deutsch"
-
- ^self isoLanguage: (LanguageSymbols at: languageSymbol)!
Item was removed:
- ----- Method: Locale class>>localeChanged (in category 'notification') -----
- localeChanged
-
- #(#ParagraphEditor #BitEditor #FormEditor #StandardSystemController )
- do: [:key | Smalltalk
- at: key
- ifPresent: [:class | class initialize]].
- PartsBin localeChanged.
- Project localeChanged.
- PaintBoxMorph localeChanged.
- ColorPickerMorph localeChanged.
- Preferences localeChanged!
Item was removed:
- ----- Method: Locale class>>localeChangedGently (in category 'notification') -----
- localeChangedGently
-
- #(#ParagraphEditor #BitEditor #FormEditor #StandardSystemController )
- do: [:key | Smalltalk
- at: key
- ifPresent: [:class | class initialize]].
- PartsBin localeChangedGently.
- Project localeChangedGently.
- PaintBoxMorph localeChangedGently.
- ColorPickerMorph localeChangedGently.
- Preferences localeChangedGently.
- !
Item was removed:
- ----- Method: Locale class>>localeChangedListeners (in category 'notification') -----
- localeChangedListeners
- ^LocaleChangeListeners ifNil: [LocaleChangeListeners _ OrderedCollection new]!
Item was removed:
- ----- Method: Locale class>>localeID: (in category 'accessing') -----
- localeID: id
- ^self knownLocales at: id ifAbsentPut: [Locale new localeID: id]!
Item was removed:
- ----- Method: Locale class>>migrateSystem (in category 'private') -----
- migrateSystem
- "Locale migrateSystem"
- "Do all the necessary operations to switch to the new Locale environment."
-
- LocaleChangeListeners _ nil.
- self
- addLocalChangedListener: HandMorph;
- addLocalChangedListener: Clipboard;
- addLocalChangedListener: Vocabulary;
- addLocalChangedListener: PartsBin;
- addLocalChangedListener: Project;
- addLocalChangedListener: PaintBoxMorph;
- yourself!
Item was removed:
- ----- Method: Locale class>>platformEncodings (in category 'class initialization') -----
- platformEncodings
- PlatformEncodings isEmptyOrNil ifTrue: [ self initializePlatformEncodings ].
- ^PlatformEncodings
- !
Item was removed:
- ----- Method: Locale class>>previous (in category 'accessing') -----
- previous
-
- ^ Previous
- !
Item was removed:
- ----- Method: Locale class>>resetKnownLocales (in category 'private') -----
- resetKnownLocales
-
- KnownLocales := nil
- !
Item was removed:
- ----- Method: Locale class>>startUp: (in category 'system startUp') -----
- startUp: resuming
- | newID |
- resuming ifFalse: [^self].
- (Preferences valueOfFlag: #useLocale)
- ifTrue: [
- DateAndTime localTimeZone: (TimeZone
- offset: (Duration minutes: Locale current offsetLocalToUTC)
- name: 'Local Time'
- abbreviation: 'LT').
- newID := self current determineLocaleID.
- newID ~= LocaleID current
- ifTrue: [self switchAndInstallFontToID: newID gently: true]]!
Item was removed:
- ----- Method: Locale class>>stringForLanguageNameIs: (in category 'accessing') -----
- stringForLanguageNameIs: localeID
- "Answer a string for a menu determining whether the given
- symbol is the project's natural language"
- ^ (self current localeID = localeID
- ifTrue: ['<yes>']
- ifFalse: ['<no>'])
- , localeID displayName!
Item was removed:
- ----- Method: Locale class>>switchAndInstallFontToID: (in category 'accessing') -----
- switchAndInstallFontToID: localeID
- "Locale switchAndInstallFontToID: (LocaleID isoLanguage: 'de')"
- | locale |
- locale := Locale localeID: localeID.
- locale languageEnvironment isFontAvailable
- ifFalse: [(self confirm: 'This language needs additional fonts.
- Do you want to install the fonts?' translated)
- ifTrue: [locale languageEnvironment installFont]
- ifFalse: [^ self]].
- self
- switchTo: locale!
Item was removed:
- ----- Method: Locale class>>switchAndInstallFontToID:gently: (in category 'accessing') -----
- switchAndInstallFontToID: localeID gently: gentlyFlag
-
- | locale result env envFound ret fontInImage menu |
- "Assumption: Rainbow => can try Pango"
- "Logic:
- - in Sugar, we don't bother asking any questions, and we don't bother automatically loading fonts.
- in Sugar, and if the font is available, use the font.
- in Sugar, and if the font is not in the image, try to enable Pango.
- - if the previous step fails, notify the user that you cannot switch to the language.
- - not in Rainbow,
- - if the font is in the image, use the font.
- - if the font is not in the image,
- - ask to choose:
- - load font
- - try to enable pango, if pango is available
- - or cancel.
- - if the previous step fails, notify the user that you cannot switch to the language.
- Details:
- - how to check non-pango font is available:
- - if the language environment for the locale doesn't exist, the font is not available.
- - if font loading fails, it is not available.
- - how to check if the language environment doesn't exist:
- - if the locales languageEnvironment is Latin1 but the locale isn't it is not available.
- "
- locale := Locale localeID: localeID.
- env := locale languageEnvironment.
- result := true.
- envFound := (Latin1Environment supportedLanguages includes: locale isoLanguage) or: [(env isMemberOf: Latin1Environment) not].
- fontInImage := envFound and: [env isFontAvailable].
- SugarLauncher isRunningInSugar ifTrue: [
- fontInImage ifFalse: [
- "font is not available in the image. Even don't ask for font installation."
- Cursor wait showWhile: [
- Preferences setPreference: #usePangoRenderer toValue: true.
- TextMorph usePango: true]].
- ] ifFalse: [
- fontInImage ifFalse: [
- menu := MenuMorph new.
- menu defaultTarget: menu.
- envFound ifTrue: [menu add: 'load font' translated selector: #modalSelection: argument: #loadFont].
- RomePluginCanvas pangoIsAvailable ifTrue: [menu add: 'enable Pango' translated selector: #modalSelection: argument: #enablePango].
- menu add: 'cancel' translated selector: #modalSelection: argument: #cancel.
- menu addTitle: 'This language needs additional fonts.
- Do you want to install the fonts?' translated.
- ret := menu invokeModal.
- ret = #loadFont ifTrue: [result := env installFont. result ifTrue: [StrikeFont setupDefaultFallbackTextStyle]].
- ret = #enablePango ifTrue: [
- (result := RomePluginCanvas pangoIsAvailable) ifTrue: [
- Cursor wait showWhile: [
- Preferences setPreference: #usePangoRenderer toValue: true.
- TextMorph usePango: true]]].
- (ret ~~ #loadFont and: [ret ~~ #enablePango]) ifTrue: [result := false]]].
-
- result ifFalse: [self inform: 'Cannot load additional fonts' translated] ifTrue: [self switchTo: locale gently: gentlyFlag].
- !
Item was removed:
- ----- Method: Locale class>>switchTo: (in category 'accessing') -----
- switchTo: locale
- self switchTo: locale gently: false.
- !
Item was removed:
- ----- Method: Locale class>>switchTo:gently: (in category 'accessing') -----
- switchTo: locale gently: gentlyFlag
- "Locale switchTo: (Locale isoLanguage: 'de')"
- | availableID |
- availableID := (NaturalLanguageTranslator availableForLocaleID: locale localeID) localeID.
- Current localeID = availableID
- ifFalse: [Previous _ Current.
- CurrentPlatform := Current := Locale localeID: availableID.
- NaturalLanguageTranslator localeChanged.
- gentlyFlag ifTrue: [self localeChangedGently] ifFalse: [self localeChanged]]!
Item was removed:
- ----- Method: Locale class>>switchToID: (in category 'accessing') -----
- switchToID: localeID
- "Locale switchToID: (LocaleID isoLanguage: 'de') "
-
- self switchTo: (Locale localeID: localeID)!
Item was removed:
- ----- Method: Locale>>determineLocale (in category 'accessing') -----
- determineLocale
- self localeID: self determineLocaleID!
Item was removed:
- ----- Method: Locale>>determineLocaleID (in category 'accessing') -----
- determineLocaleID
- "Locale current determineLocaleID"
- | isoLang isoCountry |
- isoLang := self fetchISO2Language
- ifNil: [^ self localeID].
- isoCountry := self fetchISOCountry
- ifNil: [^ LocaleID isoLanguage: isoLang].
- ^ LocaleID isoLanguage: isoLang isoCountry: isoCountry!
Item was removed:
- ----- Method: Locale>>fetchISO2Language (in category 'private') -----
- fetchISO2Language
- "Locale current fetchISO2Language"
- | lang isoLang |
- lang := self primLanguage.
- lang ifNil: [^nil].
- lang := lang copyUpTo: 0 asCharacter.
- lang size == 2
- ifTrue: [^lang].
- isoLang := ISOLanguageDefinition iso3LanguageDefinition: lang.
- ^isoLang
- ifNil: [nil]
- ifNotNil: [isoLang iso2]!
Item was removed:
- ----- Method: Locale>>fetchISOCountry (in category 'private') -----
- fetchISOCountry
- "Locale current fetchISOCountry"
- | countryCode |
- countryCode := self primCountry
- ifNil: [^ nil].
- ^ countryCode copyUpTo: 0 asCharacter!
Item was removed:
- ----- Method: Locale>>iconForNativeLanguage (in category 'accessing') -----
- iconForNativeLanguage
-
- ^ (NaturalLanguageFormTranslator localeID: self localeID) translate: 'LanguageNameInNativeLanguage'.
- !
Item was removed:
- ----- Method: Locale>>isoCountry (in category 'accessing') -----
- isoCountry
- ^self localeID isoCountry!
Item was removed:
- ----- Method: Locale>>isoLanguage (in category 'accessing') -----
- isoLanguage
- ^self localeID isoLanguage!
Item was removed:
- ----- Method: Locale>>isoLocale (in category 'accessing') -----
- isoLocale
- "<language>-<country>"
- ^self isoCountry
- ifNil: [self isoLanguage]
- ifNotNil: [self isoLanguage , '-' , self isoCountry]!
Item was removed:
- ----- Method: Locale>>languageEnvironment (in category 'accessing') -----
- languageEnvironment
- ^LanguageEnvironment localeID: self localeID!
Item was removed:
- ----- Method: Locale>>localeID (in category 'accessing') -----
- localeID
- ^id!
Item was removed:
- ----- Method: Locale>>localeID: (in category 'accessing') -----
- localeID: anID
- id := anID!
Item was removed:
- ----- Method: Locale>>offsetLocalToUTC (in category 'accessing') -----
- offsetLocalToUTC
- ^self primTimezone!
Item was removed:
- ----- Method: Locale>>primCountry (in category 'system primitives') -----
- primCountry
- "Returns string with country tag according to ISO 639"
- <primitive: 'primitiveCountry' module: 'LocalePlugin'>
- ^'US'!
Item was removed:
- ----- Method: Locale>>primCurrencyNotation (in category 'system primitives') -----
- primCurrencyNotation
- "Returns boolean if symbol is pre- (true) or post-fix (false)"
- <primitive: 'primitiveCurrencyNotation' module: 'LocalePlugin'>
- ^true!
Item was removed:
- ----- Method: Locale>>primCurrencySymbol (in category 'system primitives') -----
- primCurrencySymbol
- "Returns string with currency symbol"
- <primitive: 'primitiveCurrencySymbol' module:'LocalePlugin'>
- ^'$'!
Item was removed:
- ----- Method: Locale>>primDST (in category 'system primitives') -----
- primDST
- "Returns boolean if DST (daylight saving time) is active or not"
- <primitive:'primitiveDaylightSavings' module: 'LocalePlugin'>
- ^false!
Item was removed:
- ----- Method: Locale>>primDecimalSymbol (in category 'system primitives') -----
- primDecimalSymbol
- "Returns string with e.g. '.' or ','"
- <primitive:'primitiveDecimalSymbol' module: 'LocalePlugin'>
- ^'.'!
Item was removed:
- ----- Method: Locale>>primDigitGrouping (in category 'system primitives') -----
- primDigitGrouping
- "Returns string with e.g. '.' or ',' (thousands etc)"
- <primitive:'primitiveDigitGroupingSymbol' module: 'LocalePlugin'>
- ^','!
Item was removed:
- ----- Method: Locale>>primLanguage (in category 'system primitives') -----
- primLanguage
- "returns string with language tag according to ISO 639"
- <primitive:'primitiveLanguage' module: 'LocalePlugin'>
- ^'en'
-
- !
Item was removed:
- ----- Method: Locale>>primLongDateFormat (in category 'system primitives') -----
- primLongDateFormat
- "Returns the long date format
- d day, m month, y year,
- double symbol is null padded, single not padded (m=6, mm=06)
- dddd weekday
- mmmm month name"
- <primitive:'primitiveLongDateFormat' module: 'LocalePlugin'>
- ^'dddd, mmmm d, yyyy'!
Item was removed:
- ----- Method: Locale>>primMeasurement (in category 'system primitives') -----
- primMeasurement
- "Returns boolean denoting metric(true) or imperial(false)."
- <primitive:'primitiveMeasurementMetric' module: 'LocalePlugin'>
- ^true
- !
Item was removed:
- ----- Method: Locale>>primShortDateFormat (in category 'system primitives') -----
- primShortDateFormat
- "Returns the short date format
- d day, m month, y year,
- double symbol is null padded, single not padded (m=6, mm=06)
- dddd weekday
- mmmm month name"
- <primitive:'primitiveShortDateFormat' module: 'LocalePlugin'>
- ^'m/d/yy'!
Item was removed:
- ----- Method: Locale>>primTimeFormat (in category 'system primitives') -----
- primTimeFormat
- "Returns string time format
- Format is made up of
- h hour (h 12, H 24), m minute, s seconds, x (am/pm String)
- double symbol is null padded, single not padded (h=6, hh=06)"
- <primitive:'primitiveTimeFormat' module: 'LocalePlugin'>
- ^'h:mmx'!
Item was removed:
- ----- Method: Locale>>primTimezone (in category 'system primitives') -----
- primTimezone
- "The offset from UTC in minutes, with positive offsets being towards the east.
- (San Francisco is in UTC -07*60 and Paris is in UTC +02*60 when daylight savings is in effect)."
- <primitive:'primitiveTimezoneOffset' module: 'LocalePlugin'>
- ^0!
Item was removed:
- ----- Method: Locale>>primVMOffsetToUTC (in category 'system primitives') -----
- primVMOffsetToUTC
- "Returns the offset in minutes between the VM and UTC.
- If the VM does not support UTC times, this is 0.
- Also gives us backward compatibility with old VMs as the primitive will fail and we then can return 0."
- <primitive:'primitiveVMOffsetToUTC' module: 'LocalePlugin'>
- ^0!
Item was removed:
- ----- Method: Locale>>printOn: (in category 'accessing') -----
- printOn: aStream
- super printOn: aStream.
- aStream nextPutAll: '(' , id printString , ')'!
Item was removed:
- Object subclass: #LocaleID
- instanceVariableNames: 'isoLanguage isoCountry'
- classVariableNames: ''
- poolDictionaries: ''
- category: 'GetText-Localization'!
Item was removed:
- ----- Method: LocaleID class>>current (in category 'accessing') -----
- current
- ^Locale current localeID!
Item was removed:
- ----- Method: LocaleID class>>isoLanguage: (in category 'instance creation') -----
- isoLanguage: langString
- ^self isoLanguage: langString isoCountry: nil!
Item was removed:
- ----- Method: LocaleID class>>isoLanguage:isoCountry: (in category 'instance creation') -----
- isoLanguage: langString isoCountry: countryStringOrNil
- ^self new isoLanguage: langString isoCountry: countryStringOrNil!
Item was removed:
- ----- Method: LocaleID class>>isoString: (in category 'instance creation') -----
- isoString: isoString
- "Parse the isoString (<language>-<country>) into its components and return the matching LocaleID"
- "LocaleID isoString: 'en' "
- "LocaleID isoString: 'en-us' "
-
- | parts language country |
- parts := isoString findTokens: #($- ).
- language := parts first.
- parts size > 1
- ifTrue: [country := parts second].
- ^self isoLanguage: language isoCountry: country!
Item was removed:
- ----- Method: LocaleID class>>posixName: (in category 'instance creation') -----
- posixName: aString
- ^ self
- isoString: (aString copyReplaceAll: '_' with: '-')!
Item was removed:
- ----- Method: LocaleID class>>previous (in category 'accessing') -----
- previous
- ^Locale previous localeID!
Item was removed:
- ----- Method: LocaleID>>= (in category 'comparing') -----
- = anotherObject
- self class == anotherObject class
- ifFalse: [^false].
- ^self isoLanguage = anotherObject isoLanguage
- and: [self isoCountry = anotherObject isoCountry]!
Item was removed:
- ----- Method: LocaleID>>displayCountry (in category 'accessing') -----
- displayCountry
- ^(ISOLanguageDefinition iso2Countries at: self isoCountry asUppercase ifAbsent: [ self isoCountry ]) !
Item was removed:
- ----- Method: LocaleID>>displayLanguage (in category 'accessing') -----
- displayLanguage
- | language |
- language := (ISOLanguageDefinition iso2LanguageTable
- at: self isoLanguage
- ifAbsent: [^ self isoLanguage]) language.
- ^ self isoCountry
- ifNil: [language]
- ifNotNil: [language , ' (' , self displayCountry , ')']!
Item was removed:
- ----- Method: LocaleID>>displayName (in category 'accessing') -----
- displayName
- "Answer a proper name to represent the receiver in GUI.
-
- The wording is provided by translations of the magic value
- '<language display name>'.
-
- 'English' -> 'English'
- 'German' -> 'Deutsch'
- "
- | magicPhrase translatedMagicPhrase |
- magicPhrase := '<language display name>'.
- translatedMagicPhrase := GetTextTranslator translateWithoutLoading: magicPhrase toLocaleID: self.
- ^ translatedMagicPhrase = magicPhrase
- ifTrue: [self displayLanguage]
- ifFalse: [translatedMagicPhrase]!
Item was removed:
- ----- Method: LocaleID>>hasParent (in category 'testing') -----
- hasParent
- ^self isoCountry notNil!
Item was removed:
- ----- Method: LocaleID>>hash (in category 'comparing') -----
- hash
- ^self isoLanguage hash bitXor: self isoCountry hash!
Item was removed:
- ----- Method: LocaleID>>isoCountry (in category 'accessing') -----
- isoCountry
- ^isoCountry!
Item was removed:
- ----- Method: LocaleID>>isoLanguage (in category 'accessing') -----
- isoLanguage
- ^isoLanguage!
Item was removed:
- ----- Method: LocaleID>>isoLanguage:isoCountry: (in category 'initialize') -----
- isoLanguage: langString isoCountry: countryStringOrNil
- isoLanguage := langString.
- isoCountry := countryStringOrNil!
Item was removed:
- ----- Method: LocaleID>>isoString (in category 'accessing') -----
- isoString
- ^self asString!
Item was removed:
- ----- Method: LocaleID>>parent (in category 'accessing') -----
- parent
- ^self class isoLanguage: self isoLanguage!
Item was removed:
- ----- Method: LocaleID>>posixName (in category 'printing') -----
- posixName
- "(LocaleID isoString: 'es-MX') posixName"
- "(LocaleID isoString: 'es') posixName"
- "language[_territory]"
- ^ self isoCountry
- ifNil: [self isoLanguage]
- ifNotNil: [self isoLanguage , '_' , self isoCountry]!
Item was removed:
- ----- Method: LocaleID>>printOn: (in category 'printing') -----
- printOn: stream
- "<language>-<country>"
- stream nextPutAll: self isoLanguage.
- self isoCountry
- ifNotNil: [stream nextPut: $-; nextPutAll: self isoCountry]!
Item was removed:
- ----- Method: LocaleID>>storeOn: (in category 'printing') -----
- storeOn: aStream
- aStream nextPut: $(.
- aStream nextPutAll: self class name.
- aStream nextPutAll: ' isoString: '.
- aStream nextPutAll: '''' , self printString , ''''.
- aStream nextPut: $).
- !
Item was removed:
- ----- Method: LocaleID>>translator (in category 'accessing') -----
- translator
- ^ InternalTranslator localeID: self !
Item was changed:
----- Method: MOFile>>fileName: (in category 'public') -----
fileName: path
+ fileName := path!
- fileName _ path!
Item was changed:
----- Method: MOFile>>hashPjw: (in category 'experimental') -----
hashPjw: aString
"So called `hashpjw' function by P.J. Weinberger
[see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
1986, 1987 Bell Telephone Laboratories, Inc.] "
| stringSize hash g |
+ stringSize := aString size.
+ hash := 0.
- stringSize _ aString size.
- hash _ 0.
1 to: stringSize do: [:pos |
+ hash := hash bitShift: 4.
+ hash := hash + ((aString at: pos) asInteger).
+ g := hash bitAnd: 16rF0000000.
- hash _ hash bitShift: 4.
- hash _ hash + ((aString at: pos) asInteger).
- g _ hash bitAnd: 16rF0000000.
g = 0 ifFalse: [
+ hash := hash bitXor: (g bitShift: -24).
+ hash := hash bitXor: g.
- hash _ hash bitXor: (g bitShift: -24).
- hash _ hash bitXor: g.
]
].
^hash.
!
Item was changed:
----- Method: MOFile>>load1:localeID: (in category 'experimental') -----
load1: aFileName localeID: id
"CASE1:
all of strings are loaded.
translation strings are converted to Squeak format on load time.
original-string/index pairs are registerd to Dictionary on load time.
hash search can't be used"
| strm originalTable translatedTable |
+ localeID := id.
- localeID _ id.
strm_ FileStream readOnlyFileNamed: aFileName.
+ fileName := aFileName.
- fileName _ aFileName.
[
self loadHeader: strm.
+ originalTable := self loadStringPointers: strm
- originalTable _ self loadStringPointers: strm
offset: originalTableOffset.
+ originalStrings := self loadStrings: strm
- originalStrings _ self loadStrings: strm
pointers: originalTable.
+ translatedTable := self loadStringPointers: strm
- translatedTable _ self loadStringPointers: strm
offset: translatedTableOffset.
+ translatedStrings := self loadStrings: strm
- translatedStrings _ self loadStrings: strm
pointers: translatedTable
encoding: 'utf8'
languageEnvironment: (Locale localeID: localeID) languageEnvironment .
+ translations := Dictionary new.
- translations _ Dictionary new.
1 to: nStrings do: [:index |
| key |
+ key := originalStrings at: index.
- key _ originalStrings at: index.
translations at: key put: index.
].
+ originalTable := nil.
- originalTable _ nil.
] ensure: [strm close].!
Item was changed:
----- Method: MOFile>>load4:localeID: (in category 'experimental') -----
load4: aFileName localeID: id
"CASE4:
all of strings are loaded.
loading and conversion of translation strings to Squeak format is executed on initialization time.
only hash search can be used"
| strm originalTable translatedTable |
+ localeID := id.
- localeID _ id.
strm_ FileStream readOnlyFileNamed: aFileName.
+ fileName := aFileName.
- fileName _ aFileName.
[
self loadHeader: strm.
self loadHashTable: strm.
+ originalTable := self loadStringPointers: strm
- originalTable _ self loadStringPointers: strm
offset: originalTableOffset.
+ originalStrings := self loadStrings: strm
- originalStrings _ self loadStrings: strm
pointers: originalTable.
+ translatedTable := self loadStringPointers: strm
- translatedTable _ self loadStringPointers: strm
offset: translatedTableOffset.
+ translatedStrings := self loadStrings: strm
- translatedStrings _ self loadStrings: strm
pointers: translatedTable
encoding: 'utf-8'
languageEnvironment: (Locale localeID: localeID) languageEnvironment .
] ensure: [strm close].!
Item was changed:
----- Method: MOFile>>load:localeID: (in category 'public') -----
load: aFileName localeID: id
"all of original/translated strings are loaded.
but conversion of translation string (in utf-8 bytestring) to Squeak format will be defered.
original-string/index pairs are registerd to Dictionary on load time.
hash search can't be used"
| strm originalTable translatedTable |
+ localeID := id.
- localeID _ id.
strm_ FileStream readOnlyFileNamed: aFileName.
+ fileName := aFileName.
- fileName _ aFileName.
[
self loadHeader: strm.
+ originalTable := self loadStringPointers: strm
- originalTable _ self loadStringPointers: strm
offset: originalTableOffset.
+ originalStrings := self loadStrings: strm
- originalStrings _ self loadStrings: strm
pointers: originalTable.
+ translatedTable := self loadStringPointers: strm
- translatedTable _ self loadStringPointers: strm
offset: translatedTableOffset.
+ translatedStrings := self loadStrings: strm
- translatedStrings _ self loadStrings: strm
pointers: translatedTable.
+ translations := Dictionary new: nStrings * 2. "make too enough room to avoid #grow"
- translations _ Dictionary new: nStrings * 2. "make too enough room to avoid #grow"
1 to: nStrings do: [:index |
| key |
+ key := originalStrings at: index.
- key _ originalStrings at: index.
translations at: key put: index.
].
+ originalStrings := nil.
- originalStrings _ nil.
] ensure: [strm close].!
Item was changed:
----- Method: MOFile>>loadHashTable: (in category 'experimental') -----
loadHashTable: strm
| entry |
+ hashTable := IntegerArray ofSize: hashTableSize.
- hashTable _ IntegerArray ofSize: hashTableSize.
strm binary.
strm position: hashTableOffset.
1 to: hashTableSize do: [:index |
+ entry := self nextInt32From: strm.
- entry _ self nextInt32From: strm.
hashTable at: index put: entry.
]!
Item was changed:
----- Method: MOFile>>loadHeader: (in category 'private') -----
loadHeader: strm
strm binary.
+ magic := strm uint32.
- magic _ strm uint32.
magic = 16rDE120495
+ ifTrue: [isLittleEndian := true]
- ifTrue: [isLittleEndian _ true]
ifFalse: [
magic = 16r950412DE
+ ifTrue: [isLittleEndian := false]
- ifTrue: [isLittleEndian _ false]
ifFalse: [ self error: 'invalid MO']
].
+ revision := self nextInt32From: strm.
+ nStrings := self nextInt32From: strm.
+ originalTableOffset := self nextInt32From: strm.
+ translatedTableOffset := self nextInt32From: strm.
+ hashTableSize := self nextInt32From: strm.
+ hashTableOffset := self nextInt32From: strm.
- revision _ self nextInt32From: strm.
- nStrings _ self nextInt32From: strm.
- originalTableOffset _ self nextInt32From: strm.
- translatedTableOffset _ self nextInt32From: strm.
- hashTableSize _ self nextInt32From: strm.
- hashTableOffset _ self nextInt32From: strm.
!
Item was changed:
----- Method: MOFile>>loadString:pointer:length: (in category 'private') -----
loadString: strm pointer: top length: len
| str |
+ str := ByteString new: len.
- str _ ByteString new: len.
strm position: top.
strm nextInto: str.
^str replaceAll: Lf with: Cr.
!
Item was changed:
----- Method: MOFile>>loadStringPointers:offset: (in category 'private') -----
loadStringPointers: strm offset: tableOffset
"returns tupple {arrayOfOffsetToString arrayOfLengthOfString}"
| offsetTable lenTable len offset tupple |
+ offsetTable := IntegerArray new: nStrings.
+ lenTable := IntegerArray new: nStrings.
- offsetTable _ IntegerArray new: nStrings.
- lenTable _ IntegerArray new: nStrings.
strm binary.
strm position: tableOffset.
1 to: nStrings do: [:index |
+ len := self nextInt32From: strm.
+ offset := self nextInt32From: strm.
- len _ self nextInt32From: strm.
- offset _ self nextInt32From: strm.
offsetTable at: index put: offset.
lenTable at: index put: len.
].
+ tupple := Array new: 2.
- tupple _ Array new: 2.
tupple at: 1 put: offsetTable.
tupple at: 2 put: lenTable.
^tupple
!
Item was changed:
----- Method: MOFile>>loadStrings:pointers:encoding:languageEnvironment: (in category 'private') -----
loadStrings: strm pointers: tupple encoding: encodingName languageEnvironment: env
| strings rawStr str offsetTable lenTable |
+ offsetTable := tupple first.
+ lenTable := tupple second.
+ strings := Array new: nStrings.
- offsetTable _ tupple first.
- lenTable _ tupple second.
- strings _ Array new: nStrings.
1 to: nStrings do: [:index |
+ rawStr := self loadString: strm
- rawStr _ self loadString: strm
pointer: (offsetTable at: index)
length: (lenTable at: index).
+ str := encodingName isNil ifTrue: [rawStr]
- str _ encodingName isNil ifTrue: [rawStr]
ifFalse: [ encodingName = 'utf8'
ifTrue: [rawStr utf8ToSqueak applyLanguageInfomation: env]
ifFalse: [self error: 'this encoding isn''t supported']
].
strings at: index put: str.
].
^strings.!
Item was changed:
----- Method: MOFile>>searchByDictionary: (in category 'public') -----
searchByDictionary: aString
| index |
+ index := translations at: aString ifAbsent: [^nil].
- index _ translations at: aString ifAbsent: [^nil].
^self translatedString: index
!
Item was changed:
----- Method: MOFile>>searchByHash: (in category 'experimental') -----
searchByHash: aString
| hashValue nstr index incr key |
+ hashValue := self hashPjw: aString.
+ incr := 1 + (hashValue \\ (hashTableSize -2)).
+ index := (hashValue \\ hashTableSize) .
+ [ nstr := (hashTable at: index +1 ).
- hashValue _ self hashPjw: aString.
- incr _ 1 + (hashValue \\ (hashTableSize -2)).
- index _ (hashValue \\ hashTableSize) .
- [ nstr _ (hashTable at: index +1 ).
nstr = 0 ifTrue: [^nil].
+ key := self originalString: nstr.
- key _ self originalString: nstr.
key = aString ifTrue: [^self translatedString: nstr].
index >= (hashTableSize - incr)
+ ifTrue: [index := index - (hashTableSize - incr) ]
+ ifFalse:[index := index + incr].
- ifTrue: [index _ index - (hashTableSize - incr) ]
- ifFalse:[index _ index + incr].
] doWhileTrue: true.!
Item was changed:
----- Method: MOFile>>translateByHash: (in category 'experimental') -----
translateByHash: aString
| trans |
+ trans := self searchByHash: aString.
- trans _ self searchByHash: aString.
trans isNil ifTrue: [^aString]
ifFalse: [^trans].
!
Item was changed:
----- Method: MOFile>>translatedString: (in category 'private') -----
translatedString: index
"KNOWN PROBLEM: conversion is executed everytimes this method called"
| str |
+ str := translatedStrings at: index.
- str _ translatedStrings at: index.
^str utf8ToSqueak applyLanguageInfomation: (Locale localeID: localeID) languageEnvironment.
!
Item was removed:
- Object subclass: #NaturalLanguageFormTranslator
- instanceVariableNames: 'id generics'
- classVariableNames: 'CachedTranslations'
- poolDictionaries: ''
- category: 'GetText-Localization'!
Item was removed:
- ----- Method: NaturalLanguageFormTranslator class>>bitmapForJapanese (in category 'as yet unclassified') -----
- bitmapForJapanese
-
- ^ (Form
- extent: 54 at 17
- depth: 16
- fromArray: #( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 65536 0 1 65537 65537 65537 65537 0 0 0 0 1 0 0 0 0 65537 65537 1 65537 65537 65536 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 65536 0 0 65536 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 65537 65537 65536 1 0 0 0 1 0 0 65536 0 0 1 0 0 0 1 0 1 65537 65537 65537 65537 65537 65537 0 0 0 1 65537 65537 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 65537 65536 0 0 0 65537 65537 0 65536 1 0 0 0 65536 1 0 0 0 1 65537 65537 65537 65537 0 0 0 1 1 1 0 0 0 0 0 0 65536 1 0 0 0 65536 1 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 65537 65537 65537 65537 65537 65537 0 0 65536 1 0 0 0 1 0 0 0 1 0 0 0 65536 1 0 65536 0 0 0 0 0 0 0 0 0 0 65536 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 65537 65537 1 65537 65537 65536 0 0 65536 1 0 0 0 1 0 0 0 1 0 0 65536 65537 65537 65537 65536 65536 0 65536 1 1 0 0 65536 0 0 65536 0 65536 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 0 65536 1 1 0 0 65536 0 1 0 0 65536 0 0 1 65537 65537 65537 65537 0 0 0 0 1 0 0 0 0 65537 65537 1 65537 65537 65536 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 65536 0 0 0 65536 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0)
- offset: 0 at 0)!
Item was removed:
- ----- Method: NaturalLanguageFormTranslator class>>cachedTranslations (in category 'accessing') -----
- cachedTranslations
- "CachedTranslations := nil"
- ^CachedTranslations ifNil: [CachedTranslations := Dictionary new]!
Item was removed:
- ----- Method: NaturalLanguageFormTranslator class>>cleanUp (in category 'class initialization') -----
- cleanUp
- "Flush caches"
-
- CachedTranslations := nil!
Item was removed:
- ----- Method: NaturalLanguageFormTranslator class>>initializeJapaneseBitmap (in category 'as yet unclassified') -----
- initializeJapaneseBitmap
-
- (self localeID: (LocaleID isoString: 'ja')) name: 'LanguageNameInNativeLanguage' form: self bitmapForJapanese.
- !
Item was removed:
- ----- Method: NaturalLanguageFormTranslator class>>isoLanguage: (in category 'accessing') -----
- isoLanguage: isoLanguage
- "Return the generic language translator as there is no information about the country code"
-
- ^self isoLanguage: isoLanguage isoCountry: nil!
Item was removed:
- ----- Method: NaturalLanguageFormTranslator class>>isoLanguage:isoCountry: (in category 'accessing') -----
- isoLanguage: isoLanguage isoCountry: isoCountry
- ^self localeID: (LocaleID isoLanguage: isoLanguage isoCountry: isoCountry)!
Item was removed:
- ----- Method: NaturalLanguageFormTranslator class>>loadFormsFrom: (in category 'i/o') -----
- loadFormsFrom: aStream
-
- | rr pair inst |
- rr _ ReferenceStream on: aStream.
- pair _ rr next.
- inst _ self localeID: (LocaleID isoString: pair first).
- pair second associationsDo: [:assoc |
- inst name: assoc key form: assoc value.
- ].
- ^ inst.
- !
Item was removed:
- ----- Method: NaturalLanguageFormTranslator class>>localeID: (in category 'accessing') -----
- localeID: localeID
- ^ self cachedTranslations
- at: localeID
- ifAbsentPut: [self new localeID: localeID]!
Item was removed:
- ----- Method: NaturalLanguageFormTranslator>>generics (in category 'accessing') -----
- generics
- ^generics ifNil: [generics := Dictionary new]!
Item was removed:
- ----- Method: NaturalLanguageFormTranslator>>localeID (in category 'accessing') -----
- localeID
- ^id!
Item was removed:
- ----- Method: NaturalLanguageFormTranslator>>localeID: (in category 'accessing') -----
- localeID: anID
- id := anID!
Item was removed:
- ----- Method: NaturalLanguageFormTranslator>>name:form: (in category 'accessing') -----
- name: formName form: translatedForm
- self generics at: formName put: translatedForm.
- !
Item was removed:
- ----- Method: NaturalLanguageFormTranslator>>saveFormsOn: (in category 'i/o') -----
- saveFormsOn: aStream
-
- | rr |
- rr _ ReferenceStream on: aStream.
- rr nextPut: {id isoString. generics}.
- rr close.
- !
Item was removed:
- ----- Method: NaturalLanguageFormTranslator>>translate: (in category 'utilities') -----
- translate: aString
-
- ^ (self generics
- at: aString ifAbsent: [nil]) deepCopy.
-
- "Do you like to write 'form ifNotNil: [form deepCopy]'?"
- !
Item was removed:
- Object subclass: #NaturalLanguageTranslator
- instanceVariableNames: 'id'
- classVariableNames: 'Translators'
- poolDictionaries: ''
- category: 'GetText-Localization'!
-
- !NaturalLanguageTranslator commentStamp: '<historical>' prior: 0!
- abstract class of natural language translator.
- Class side manages and holds loaded instances of concrete classes.!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>availableForLocaleID: (in category 'accessing') -----
- availableForLocaleID: localeID
- "Answer available locale ID.
- If translator is not found for correct locale ID, then isoLanguage is
- attempted for the key."
- ^ self translators
- at: localeID
- ifAbsent: [localeID hasParent
- ifTrue: [self translators
- at: localeID parent
- ifAbsent: [self default]]
- ifFalse: [self default]]!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>availableLanguageLocaleIDs (in category 'accessing') -----
- availableLanguageLocaleIDs
- "Return the locale ids for the currently available languages.
- Meaning those which either internally or externally have
- translations available."
- "NaturalLanguageTranslator availableLanguageLocaleIDs"
- ^ self translators values collect:[:each | each localeID]!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>cleanUpCache (in category 'private') -----
- cleanUpCache
- "NaturalLanguageTranslator cleanUpCache"
-
- self cachedTranslations keys do: [:key |
- key isoLanguage size > 2 ifTrue: [self cachedTranslations removeKey: key]]!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>current (in category 'accessing') -----
- current
- ^ self availableForLocaleID: LocaleID current!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>default (in category 'accessing') -----
- default
- "Answer translator for backstop"
- "self default translate: 'test'"
- ^ self new
- localeID: (LocaleID isoLanguage: 'en')!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>directoryForLanguage:country:create: (in category 'private loading') -----
- directoryForLanguage: isoLanguage country: isoCountry create: createDir
- "Try to locate the <prefs>/locale/<language>{/<country>} folder.
- If createDir is set, create the path down to country or language, depending on wether it's specified..
- Return the directory for country or language depending on specification.
- If neither exists, nil"
-
- "NaturalLanguageTranslator directoryForLanguage: 'es' country: nil create: true"
- "NaturalLanguageTranslator directoryForLanguage: 'de' country: 'DE' create: true"
- "NaturalLanguageTranslator directoryForLanguage: 'en' country: 'US' create: false"
- "NaturalLanguageTranslator directoryForLanguage: 'en' country: nil create: true"
-
- "If this fails, there is nothing we can do about it here"
- | localeDir countryDir languageDir |
- localeDir := self localeDirCreate: createDir.
- localeDir ifNil: [^nil].
-
- isoCountry ifNil: [
- languageDir := localeDir directoryNamed: isoLanguage.
- createDir
- ifTrue: [languageDir assureExistence].
- ^languageDir exists
- ifTrue: [languageDir]
- ifFalse: [nil]].
-
- countryDir := languageDir directoryNamed: isoCountry.
- createDir
- ifTrue: [countryDir assureExistence].
-
- ^countryDir exists
- ifTrue: [countryDir]
- ifFalse: [nil]!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>directoryForLocaleID:create: (in category 'private loading') -----
- directoryForLocaleID: localeID create: createDir
- "Try to locate the <prefs>/locale/<language>{/<country>} folder.
- If createDir is set, create the path down to country or language, depending on locale.
- Return the directory for country or language depending on locale.
- If neither exists, nil"
-
- "NaturalLanguageTranslator directoryForLanguage: 'de' country: nil readOnly: true"
- "NaturalLanguageTranslator directoryForLanguage: 'de' country: 'DE' readOnly: true"
- "NaturalLanguageTranslator directoryForLanguage: 'en' country: 'US' readOnly: false"
- "NaturalLanguageTranslator directoryForLanguage: 'en' country: nil readOnly: true"
-
- ^self directoryForLanguage: localeID isoLanguage country: localeID isoCountry create: createDir!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>domainRegistered: (in category 'accessing') -----
- domainRegistered: aDomainName
- "notify that new TextDomain is registered"
- self translators do: [:each | each domainRegistered: aDomainName]!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>domainUnregistered: (in category 'accessing') -----
- domainUnregistered: aDomainName
- "notify that new TextDomain is unregistered"
- self translators do: [:each | each domainUnregistered: aDomainName]!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>fileReaderServicesForFile:suffix: (in category 'file-services') -----
- fileReaderServicesForFile: fullName suffix: suffix
- "Answer the file services associated with given file"
- ^ (suffix = self translationSuffix) | (suffix = '*')
- ifTrue: [{self serviceMergeLanguageTranslations}]
- ifFalse: [#()]!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>initialize (in category 'class initialization') -----
- initialize
- Smalltalk addToStartUpList: NaturalLanguageTranslator after: FileDirectory.
- !
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>isoLanguage: (in category 'accessing') -----
- isoLanguage: isoLanguage
- "Return the generic language translator as there is no information about the country code"
-
- ^self isoLanguage: isoLanguage isoCountry: nil!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>isoLanguage:isoCountry: (in category 'accessing') -----
- isoLanguage: isoLanguage isoCountry: isoCountry
- ^self localeID: (LocaleID isoLanguage: isoLanguage isoCountry: isoCountry)!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>loadAvailableExternalLocales (in category 'private loading') -----
- loadAvailableExternalLocales
- "private - register locales IDs based on the content of the <prefs>/locale/ directory"
- | localeDir |
- localeDir := self localeDirCreate: false.
- localeDir ifNil: [^ #()].
- localeDir directoryNames
- do: [:langDirName |
- | langDir |
- langDir := localeDir directoryNamed: langDirName.
- (langDir fileNamesMatching: '*.' , self translationSuffix)
- ifNotEmpty: [self loadTranslatorForIsoLanguage: langDirName isoCountry: nil].
- langDir directoryNames
- do: [:countryDirName |
- | countryDir |
- countryDir := langDir directoryNamed: countryDirName.
- (countryDir fileNamesMatching: '*.' , self translationSuffix)
- ifNotEmpty: [self loadTranslatorForIsoLanguage: langDirName isoCountry: countryDirName]
- ]
- ].
- !
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>loadAvailableLocales (in category 'private loading') -----
- loadAvailableLocales
- "This loads the default locale and all external locales"
-
- | defaultID |
- defaultID := LocaleID current.
- self cachedTranslations at: defaultID ifAbsent: [self localeID: defaultID].
- self loadAvailableExternalLocales.!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>loadExternalTranslationsFor: (in category 'private loading') -----
- loadExternalTranslationsFor: translator
- "Try to load translations from external external files.
- The files are located in the <prefs>/locale/<language>{/<country>} folder.
- There can be more than one file for each location, so applications can install their own partial translation tables. All files in the specific folder are loaded."
-
- | translationDir |
- translationDir := self directoryForLocaleID: translator localeID create: false.
- translationDir ifNil: [ ^nil ].
- (translationDir fileNamesMatching: '*.' , self translationSuffix)
- do: [:fileName | translator loadFromFileNamed: (translationDir fullNameFor: fileName)]!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>loadForLocaleIsoString:fromGzippedMimeLiteral: (in category 'file-services') -----
- loadForLocaleIsoString: localeString fromGzippedMimeLiteral: mimeString
- "merge the translation from the mime literal."
- | stream localeID translator gs rbStream s currentPlatform |
- s := Base64MimeConverter mimeDecodeToBytes: mimeString readStream.
- s reset.
- gs := GZipReadStream on: s.
- rbStream := MultiByteBinaryOrTextStream with: gs contents asString.
- rbStream converter: UTF8TextConverter new.
- rbStream reset.
- localeID := LocaleID isoString: localeString.
- currentPlatform := Locale currentPlatform.
- [Locale
- currentPlatform: (Locale localeID: localeID).
- stream := ReadStream on: rbStream contents]
- ensure: [Locale currentPlatform: currentPlatform].
- translator := self localeID: localeID.
- translator loadFromStream: stream.
- LanguageEnvironment resetKnownEnvironments!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>loadTranslatorForIsoLanguage:isoCountry: (in category 'private loading') -----
- loadTranslatorForIsoLanguage: isoLanguage isoCountry: isoCountry
- "private - load the translations from <prefs>/locale/ directory
- the procedure is to assure the existence of a translator for the
- given language/country and then load the external translations for this translator"
-
- | translator |
- translator := self localeID: (LocaleID isoLanguage: isoLanguage isoCountry: isoCountry).
-
- self loadExternalTranslationsFor: translator!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>localeChanged (in category 'accessing') -----
- localeChanged
- "notify some project starts to use this locale.
- this facility may use the event to load translation data dynamically"
- self current setCurrent
- !
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>localeDirCreate: (in category 'private loading') -----
- localeDirCreate: createDir
- "Try to locate the <prefs>/locale/ folder.
- If createDir is set, try to create the path.
- If it doesn't exist, return nil"
-
- "If this fails, there is nothing we can do about it here"
- | prefDir localeDir |
- (createDir not
- and: [ExternalSettings preferenceDirectory isNil])
- ifTrue: [^ nil].
-
- prefDir := ExternalSettings assuredPreferenceDirectory.
- prefDir exists
- ifFalse: [^nil].
-
-
- localeDir := prefDir directoryNamed: 'locale'.
- createDir
- ifTrue: [localeDir assureExistence].
- ^localeDir exists
- ifTrue: [localeDir]
- ifFalse: [nil]!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>localeID: (in category 'accessing') -----
- localeID: localeID
- ^ self cachedTranslations
- at: localeID
- ifAbsentPut: [self new localeID: localeID]!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>mergeTranslationFileNamed: (in category 'file-services') -----
- mergeTranslationFileNamed: fileFullNameString
- "merge the translation in the file named fileFullNameString"
-
- FileStream readOnlyFileNamed: fileFullNameString do: [:stream |
- | localeID translator |
- localeID := LocaleID isoString: stream localName sansPeriodSuffix.
- translator := self localeID: localeID.
- translator loadFromStream: stream].
- LanguageEnvironment resetKnownEnvironments.
-
- !
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>privateStartUp (in category 'class initialization') -----
- privateStartUp
- self resetCaches.
- GetTextTranslator privateStartUp.
- InternalTranslator privateStartUp.
- self localeChanged.!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>registerPhrase: (in category 'private') -----
- registerPhrase: phrase
- "Using a Dictionary so we can lookup existing string instead of creating needless copies when loading a translation."
- self allKnownPhrases at: phrase put: phrase!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>registeredPhraseFor: (in category 'private') -----
- registeredPhraseFor: phrase
- "Using a Dictionary so we can lookup existing string instead of creating needless copies when loading a translation."
- ^self allKnownPhrases at: phrase ifAbsentPut: [phrase]!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>removeLocaleID: (in category 'accessing') -----
- removeLocaleID: localeID
- "self removeLocaleID: (LocaleID isoString: 'ja-kids')"
- ^ self translators
- removeKey: localeID
- ifAbsent: []!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>resetCaches (in category 'class initialization') -----
- resetCaches
- Translators := nil.!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>serviceMergeLanguageTranslations (in category 'file-services') -----
- serviceMergeLanguageTranslations
- "Answer a service for merging of translation files"
- ^ SimpleServiceEntry
- provider: self
- label: 'merge the translation file'
- selector: #mergeTranslationFileNamed:
- description: 'merge the translation file into the language named like the file'
- buttonLabel: 'merge'!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>services (in category 'file-services') -----
- services
- "Answer potential file services associated with this class"
- ^ {self serviceMergeLanguageTranslations}!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>startUp: (in category 'class initialization') -----
- startUp: resuming
- resuming
- ifFalse: [^ self].
- self privateStartUp.!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>translate:toLocaleID: (in category 'translation') -----
- translate: aString toLocaleID: localeID
- "translate for default domain"
- ^ (self availableForLocaleID: localeID)
- translate: aString!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>translate:toLocaleID:inDomain: (in category 'translation') -----
- translate: aString toLocaleID: localeID inDomain: aDomainName
- ^ (self availableForLocaleID: localeID)
- translate: aString inDomain: aDomainName!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>translateWithoutLoading:toLocaleID: (in category 'translation') -----
- translateWithoutLoading: aString toLocaleID: localeID
- "translate for default domain"
- ^self translateWithoutLoading: aString toLocaleID: localeID inDomain: TextDomainManager defaultDomain.
- !
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>translateWithoutLoading:toLocaleID:inDomain: (in category 'translation') -----
- translateWithoutLoading: aString toLocaleID: localeID inDomain: aDomainName
- "try to translate with small footprint:
- if GetTextTranslator hasn't loaded MO, try to use InternalTranslator.
- if InternalTranslator isn't available, then actually load MO and use it"
- | translator |
- translator _ self availableForLocaleID: localeID.
- (translator isDomainLoaded: aDomainName) ifFalse: [
- (InternalTranslator availableLanguageLocaleIDs includes: localeID)
- ifTrue: [translator _ InternalTranslator localeID: localeID].
- ].
- ^translator translate: aString inDomain: aDomainName!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>translationSuffix (in category 'private') -----
- translationSuffix
- ^'translation'!
Item was removed:
- ----- Method: NaturalLanguageTranslator class>>translators (in category 'accessing') -----
- translators
- ^ Translators ifNil: [Translators := Dictionary new] !
Item was removed:
- ----- Method: NaturalLanguageTranslator>>atRandom (in category 'accessing') -----
- atRandom
-
- self subclassResponsibility.
- !
Item was removed:
- ----- Method: NaturalLanguageTranslator>>checkPhrase:translation: (in category 'translation') -----
- checkPhrase: phrase translation: translation!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>defaultBackgroundColor (in category 'user interface') -----
- defaultBackgroundColor
- "answer the receiver's defaultBackgroundColor for views"
- ^ Color cyan!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>displayLanguage (in category 'accessing') -----
- displayLanguage
- ^ id displayLanguage!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>displayName (in category 'accessing') -----
- displayName
- ^ id displayName!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>domainRegistered: (in category 'accessing') -----
- domainRegistered: aDomainName
- "notify that new TextDomain is registered. Concrete subclass can responds to this event if needed"!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>domainUnregistered: (in category 'accessing') -----
- domainUnregistered: aDomainName
- "notify that new TextDomain is unregistered. Concrete subclass can responds to this event if needed"!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>fileOutHeader (in category 'fileIn/fileOut') -----
- fileOutHeader
- ^ '''Translation dictionary'''!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>fileOutHeaderOn: (in category 'fileIn/fileOut') -----
- fileOutHeaderOn: aStream
- aStream nextChunkPut: self fileOutHeader;
- cr.
- aStream timeStamp; cr.
- aStream nextPut: $!!.
- aStream nextChunkPut: '(' , self class name , ' localeID: ' , id storeString , ')'.
- aStream cr!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>fileOutOn: (in category 'fileIn/fileOut') -----
- fileOutOn: aStream
- "self current fileOutOn: Transcript. Transcript endEntry"
- self fileOutHeaderOn: aStream.
- self fileOutOn: aStream keys: nil!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>fileOutOn:keys: (in category 'fileIn/fileOut') -----
- fileOutOn: aStream keys: keys
- "self current fileOutOn: Transcript. Transcript endEntry"
- (keys
- ifNil: [generics keys asArray sort])
- do: [:key | self
- nextChunkPut: (generics associationAt: key)
- on: aStream].
- keys
- ifNil: [self untranslated
- do: [:each | self nextChunkPut: each -> '' on: aStream]].
- aStream nextPut: $!!;
- cr!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>generics (in category 'private') -----
- generics
- ^generics ifNil: [generics := Dictionary new]!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>isDomainLoaded: (in category 'accessing') -----
- isDomainLoaded: aDomainName
- "ask if translation dictionary for the domain has been loaded and available now for use"
- self subclassResponsibility.!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>isoCountry (in category 'accessing') -----
- isoCountry
- ^self localeID isoCountry!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>isoLanguage (in category 'accessing') -----
- isoLanguage
- ^self localeID isoLanguage!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>loadFromFileNamed: (in category 'private store-retrieve') -----
- loadFromFileNamed: fileNameString
- "Load translations from an external file"
-
- FileStream readOnlyFileNamed: fileNameString do: [ :file |
- self loadFromStream: file ].
- self changed: #translations.
- self changed: #untranslated.
- !
Item was removed:
- ----- Method: NaturalLanguageTranslator>>loadFromRefStream: (in category 'private store-retrieve') -----
- loadFromRefStream: stream
- "Load translations from an external file"
- | loadedArray refStream |
- refStream := ReferenceStream on: stream.
- [loadedArray := refStream next]
- ensure: [refStream close].
- self processExternalObject: loadedArray !
Item was removed:
- ----- Method: NaturalLanguageTranslator>>loadFromStream: (in category 'private store-retrieve') -----
- loadFromStream: stream
- "Load translations from an external file"
- | header isFileIn |
- header := '''Translation dictionary'''.
- isFileIn := (stream next: header size)
- = header.
- stream reset.
- isFileIn
- ifTrue: [stream fileInAnnouncing: 'Loading ' translated, stream localName]
- ifFalse: [self loadFromRefStream: stream]!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>localeID (in category 'accessing') -----
- localeID
- ^id!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>localeID: (in category 'initialize-release') -----
- localeID: anID
- id := anID!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>mergeTranslations: (in category 'private store-retrieve') -----
- mergeTranslations: newTranslations
- "Merge a new set of translations into the exiting table.
- Overwrites existing entries."
-
- newTranslations keysAndValuesDo: [:key :value |
- self rawPhrase: (self class registeredPhraseFor: key) translation: value].
- self changed: #translations.
- self changed: #untranslated.!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>nextChunkPut:on: (in category 'fileIn/fileOut') -----
- nextChunkPut: anObject on: aStream
- | i remainder terminator |
- terminator := $!!.
- remainder := anObject storeString.
- [(i := remainder indexOf: terminator) = 0]
- whileFalse: [aStream
- nextPutAll: (remainder copyFrom: 1 to: i).
- aStream nextPut: terminator.
- "double imbedded terminators"
- remainder := remainder copyFrom: i + 1 to: remainder size].
- aStream nextPutAll: remainder.
- aStream nextPut: terminator; cr.!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>phrase:translation: (in category 'translation') -----
- phrase: phraseString translation: translationString
- self generics at: phraseString put: translationString asString.
- self changed: #translations.
- self changed: #untranslated.!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>printOn: (in category 'printing') -----
- printOn: aStream
- aStream nextPutAll: self class name; nextPut: $(; print: self localeID; nextPut: $)!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>processExternalObject: (in category 'private store-retrieve') -----
- processExternalObject: anArray
- "pivate - process the external object"
-
- "new format -> {translations. untranslated}"
-
- anArray second do: [:each | self class registerPhrase: each].
-
- self mergeTranslations: anArray first!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>rawPhrase:translation: (in category 'translation') -----
- rawPhrase: phraseString translation: translationString
- self generics at: phraseString put: translationString asString.
- !
Item was removed:
- ----- Method: NaturalLanguageTranslator>>rawRemoveUntranslated: (in category 'translation') -----
- rawRemoveUntranslated: untranslated
-
- self class allKnownPhrases removeKey: untranslated ifAbsent: [].
- self changed: #untranslated.!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>removeTranslationFor: (in category 'translation') -----
- removeTranslationFor: phraseString
- self generics removeKey: phraseString ifAbsent: [].
- self changed: #translations.
- self changed: #untranslated.!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>removeUntranslated: (in category 'translation') -----
- removeUntranslated: untranslated
-
- self class allKnownPhrases removeKey: untranslated ifAbsent: [].
- !
Item was removed:
- ----- Method: NaturalLanguageTranslator>>saveToFileNamed: (in category 'private store-retrieve') -----
- saveToFileNamed: fileNameString
- "save the receiver's translations to a file named fileNameString"
- | stream |
- "Set true if you need to save as binary"
- false
- ifTrue: [stream := ReferenceStream fileNamed: fileNameString.
- stream nextPut: {self translations. self untranslated}.
- stream close.
- ^ self].
- stream := FileStream fileNamed: fileNameString.
- [self fileOutOn: stream]
- ensure: [stream close]!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>scanFrom: (in category 'fileIn/fileOut') -----
- scanFrom: aStream
- "Read a definition of dictionary.
- Make sure current locale corresponds my locale id"
- | newTranslations currentPlatform |
- newTranslations := Dictionary new.
- currentPlatform := Locale currentPlatform.
- [ | aString assoc |
- Locale
- currentPlatform: (Locale localeID: id).
- [aString := aStream nextChunk withSqueakLineEndings.
- aString size > 0]
- whileTrue: [assoc := Compiler evaluate: aString.
- assoc value = ''
- ifTrue: [self class registerPhrase: assoc key]
- ifFalse: [newTranslations add: assoc]]]
- ensure: [Locale currentPlatform: currentPlatform].
- self mergeTranslations: newTranslations!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>setCurrent (in category 'language switching') -----
- setCurrent
- "notify locale of the translator become current"
- !
Item was removed:
- ----- Method: NaturalLanguageTranslator>>translate: (in category 'translation') -----
- translate: aString
- ^self translate: aString
- inDomain: TextDomainManager defaultDomain!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>translate:in: (in category 'translation') -----
- translate: aString in: aContext!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>translate:inDomain: (in category 'translation') -----
- translate: aString inDomain: aDomainName
- ^ aString!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>translationFor: (in category 'translation') -----
- translationFor: aString
- ^self translate: aString!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>translations (in category 'accessing') -----
- translations
- ^self generics!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>untranslated (in category 'accessing') -----
- untranslated
- | translations |
- translations := self translations.
- ^self class allKnownPhrases reject: [:each | translations includesKey: each]!
Item was removed:
- ----- Method: NaturalLanguageTranslator>>writeAsMimeString (in category 'fileIn/fileOut') -----
- writeAsMimeString
-
- | fileName fileStream tmpStream s2 gzs |
- tmpStream := MultiByteBinaryOrTextStream on: ''.
- tmpStream converter: UTF8TextConverter new.
- self fileOutOn: tmpStream.
- s2 := RWBinaryOrTextStream on: ''.
- gzs := GZipWriteStream on: s2.
- tmpStream reset.
- gzs nextPutAll: (tmpStream binary contentsOfEntireFile asString) contents.
- gzs close.
- s2 reset.
-
- fileName := id isoString, '.translation.gz.mime'.
- fileStream := FileStream newFileNamed: fileName.
- fileStream nextPutAll: (Base64MimeConverter mimeEncode: s2) contents.
- fileStream close.
- !
Item was changed:
----- Method: TranslatedReceiverFinder>>stringReceiversWithContext (in category 'accessing') -----
stringReceiversWithContext
| mrs results rr cls mn t o |
+ mrs := SystemNavigation default allCallsOn: #translated.
+ results := OrderedCollection new.
- mrs _ SystemNavigation default allCallsOn: #translated.
- results _ OrderedCollection new.
mrs do: [:mr |
+ rr := OrderedCollection new.
+ cls := Smalltalk at: mr classSymbol.
- rr _ OrderedCollection new.
- cls _ Smalltalk at: mr classSymbol.
rr add: cls category.
rr add: mr classSymbol.
rr add: mr methodSymbol.
mr classIsMeta ifTrue: [
+ mn := cls class decompile: mr methodSymbol.
- mn _ cls class decompile: mr methodSymbol.
] ifFalse: [
+ mn := cls decompile: mr methodSymbol.
- mn _ cls decompile: mr methodSymbol.
].
+ o := OrderedCollection new.
+ t := Set new.
- o _ OrderedCollection new.
- t _ Set new.
self searchMessageNode: mn addTo: t.
t do: [ :te |
(te receiver isMemberOf: LiteralNode) ifTrue: [
o add: te receiver key.
].
].
o ifNotEmpty: [
rr add: o.
results add: rr.
].
].
^ results.
!
Item was changed:
----- Method: TranslatedReceiverFinder>>stringReceiversWithContext: (in category 'accessing') -----
stringReceiversWithContext: aSymbol
"Find string receivers for a symbol.
Answer a collection of aMethodReference -> {keyword. keyword...}"
"self new stringReceiversWithContext: #translated"
| keywords methodReferences |
+ methodReferences := SystemNavigation default allCallsOn: aSymbol.
- methodReferences _ SystemNavigation default allCallsOn: aSymbol.
^ methodReferences inject: OrderedCollection new into: [:list :next |
keywords := self findWordsWith: aSymbol in: next.
keywords
ifNotEmpty: [list add: next -> keywords].
list]
!
More information about the Packages
mailing list