Added logic to translate method to assist in user translation from one language to another.

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/gorm/trunk@21299 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Gregory John Casamento 2005-06-11 09:08:47 +00:00
parent 9d70705d9d
commit d6989fa187
3 changed files with 75 additions and 1 deletions

View file

@ -1,3 +1,8 @@
2005-06-11 05:13 Gregory John Casamento <greg_casamento@yahoo.com>
* GormCore/GormDocument.m: Improved translate method.
* Gorm.m: validateMenuItem: add case to handle translate menu.
2005-06-10 07:45 Gregory John Casamento <greg_casamento@yahoo.com>
* English.lproj/Gorm.gorm: Addition of "Translate" menu.

5
Gorm.m
View file

@ -1190,6 +1190,11 @@
if (active == nil)
return NO;
}
else if (sel_eq(action, @selector(translate:)))
{
if (active == nil)
return NO;
}
else if (sel_eq(action, @selector(copy:)))
{
if ([s count] == 0)

View file

@ -3823,14 +3823,57 @@ static NSImage *fileImage = nil;
types: fileTypes];
if (result == NSOKButton)
{
NSMutableArray *allObjects = [NSMutableArray arrayWithArray: [topLevelObjects allObjects]];
NSString *filename = [oPanel filename];
NSDictionary *dictionary = [[NSString stringWithContentsOfFile: filename] propertyListFromStringsFileFormat];
NSEnumerator *en = [[self objects] objectEnumerator];
NSEnumerator *en = [topLevelObjects objectEnumerator];
id obj = nil;
BOOL touched = NO;
// collect all subviews/menus/etc.
while((obj = [en nextObject]) != nil)
{
if([obj isKindOfClass: [NSWindow class]])
{
NSMutableArray *views = [NSMutableArray array];
NSEnumerator *ven = [views objectEnumerator];
id vobj = nil;
subviewsForView([(NSWindow *)obj contentView], views);
[allObjects addObjectsFromArray: views];
while((vobj = [ven nextObject]))
{
if([vobj isKindOfClass: [NSMatrix class]])
{
[allObjects addObjectsFromArray: [vobj cells]];
}
else if([vobj isKindOfClass: [NSPopUpButton class]])
{
[allObjects addObjectsFromArray: [vobj itemArray]];
}
else if([vobj isKindOfClass: [NSTabView class]])
{
[allObjects addObjectsFromArray: [vobj tabViewItems]];
}
[vobj setNeedsDisplay: YES];
}
[obj setViewsNeedDisplay: YES];
}
else if([obj isKindOfClass: [NSMenu class]])
{
[allObjects addObjectsFromArray: findAll(obj)];
}
}
// change to translated values.
en = [allObjects objectEnumerator];
while((obj = [en nextObject]) != nil)
{
BOOL translated = NO;
if([obj respondsToSelector: @selector(setTitle:)] &&
[obj respondsToSelector: @selector(title)])
{
@ -3839,6 +3882,7 @@ static NSImage *fileImage = nil;
{
[obj setTitle: translation];
touched = YES;
translated = YES;
}
}
else if([obj respondsToSelector: @selector(setStringValue:)] &&
@ -3849,6 +3893,26 @@ static NSImage *fileImage = nil;
{
[obj setStringValue: translation];
touched = YES;
translated = YES;
}
}
else if([obj respondsToSelector: @selector(setLabel:)] &&
[obj respondsToSelector: @selector(label)])
{
NSString *translation = [dictionary objectForKey: [obj label]];
if(translation != nil)
{
[obj setLabel: translation];
touched = YES;
translated = YES;
}
}
if(translated)
{
if([obj isKindOfClass: [NSView class]])
{
[obj setNeedsDisplay: YES];
}
}
}