'From etoys2.2 of 27 September 2007 [latest update: #1729] on 25 October 2007 at 3:58:39 pm'! "Change Set: transDom3-tak Date: 25 October 2007 Author: Takashi Yamamiya TextDomainManager >> domainForClass: receives a class instead of class name as its argument var name. "! TestCase subclass: #GettextTest instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'Multilingual-Editor'! !TextDomainManager commentStamp: 'tak 10/25/2007 15:01' prior: 0! I manages mapping from class category to textdomain. Class variables: ClassCategories IdentityDictionary -- classCategory -> domainName Classes IdentityDictionary -- class name (a Symbol) -> domainName DefaultDomain String -- the default domain name DomainInfos Dictionary -- domainName -> a TextDomainInfo TextDomainManager registerCategoryPrefix: 'DrGeoII' domain: 'DrGeoII'. TextDomainManager unregisterDomain: 'DrGeoII'.! !GetTextTranslator class methodsFor: 'private' stamp: 'tak 10/25/2007 15:56'! findMOForLocaleID: id domain: aDomainName | sepa langSubDir path | sepa _ FileDirectory slash. langSubDir _ self langDirNameForLocaleID: id. (self localeDirsForDomain: aDomainName) do: [:each | path _ each , sepa , langSubDir, sepa , (self moNameForDomain: aDomainName). [(FileDirectory default fileExists: path) ifTrue: [^path]] on: InvalidDirectoryError do: [:e | ^nil]]. ^nil.! ! !GettextTest methodsFor: 'testing' stamp: 'tak 10/25/2007 14:28'! testTextDomain "self debug: #testTextDomain" self assert: TextDomainManager defaultDomain = 'etoys'. TextDomainManager registerClassCategory: #'Multilingual-Editor' domain: 'translation'. self assert: (TextDomainManager domainForClassCategory: #'Multilingual-Editor') = 'translation'. self assert: (TextDomainManager domainForClassCategory: #'Kernel-Objects') = 'etoys'. self assert: (TextDomainManager domainForClassCategory: #'anonymous') = 'etoys'. self assert: (TextDomainManager domainForClass: GettextTest) = 'translation'. self assert: (TextDomainManager domainForClass: GettextTest class) = 'translation'. TextDomainManager unregisterDomain: 'translation'. self assert: (TextDomainManager domainForClassCategory: #'Multilingual-Editor') = 'etoys'. TextDomainManager registerCategoryPrefix: 'WS' domain: 'worldtelescope'. self assert: (TextDomainManager domainForClassCategory: #'WS-Gadgets') = 'worldtelescope'. self assert: (TextDomainManager domainForClassCategory: #'WS-Sound-Interface') = 'worldtelescope'. self assert: (TextDomainManager domainForClassCategory: #'WS-Sound-Primitives') = 'worldtelescope'. TextDomainManager unregisterDomain: 'worldtelescope'. self assert: (TextDomainManager domainForClassCategory: #'WS-Gadgets') = 'etoys'. ! ! !String methodsFor: 'translating' stamp: 'tak 10/25/2007 15:27'! translated "answer the receiver translated to the default language" | domain sender selector mclass | [ "Maybe 'selector' is not needed now???" sender _ thisContext sender. selector _ (sender receiver class) selectorAtMethod: sender method setClass: [:c | mclass _ c]. ]. domain := TextDomainManager domainForClass: thisContext sender receiver class. ^ self translatedTo: LocaleID current inDomain: domain! ! !String methodsFor: 'translating' stamp: 'tak 10/25/2007 14:41'! translatedTo: localeID "answer the receiver translated to the given locale id" | domain | domain := TextDomainManager domainForClass: thisContext sender receiver class. ^ self translatedTo: localeID inDomain: domain! ! !TextDomainManager class methodsFor: 'accessing' stamp: 'tak 10/25/2007 14:27'! domainForClass: aClass ^Classes at: aClass theNonMetaClass name ifAbsent: [self defaultDomain]! !