Проблема с импортом корейского текста локализации в xcode - PullRequest
0 голосов
/ 04 марта 2012

Я завершаю финальную часть локализаций для проекта.Переведенный текст вернулся ко мне, разделенный на форматы .txt и .docx.

. После ввода .txt .txt нормально работает, но скопированный из документа word не работает.

Это то, что я пробовал до сих пор:

  • сохранить .docx как .txt и позволить слову кодировать
  • сохранить .txt как корейский (Mac OS X), затемскопируйте этот текст в XCode и заново интерпретируйте как корейский (Mac OS X), а затем конвертируйте в utf-16

Перепробовал много вариантов конвертации в utf-16, но, похоже, его просто не взломать,Любые идеи приветствуются.

Вот локализованная реализация представления справки:

helpText = [NSArray arrayWithObjects:
                [NSDictionary dictionaryWithObjectsAndKeys:
                 NSLocalizedString(@"    The Actions Tab", nil), kHelpTextKeyString,
                 @"Arial", kHelpTextKeyFontName,
                 [NSNumber numberWithInt:20], kHelpTextKeyFontSize,
                 [[UIColor blackColor] CGColor], kHelpTextKeyColor,
                 CGRectCreateDictionaryRepresentation(CGRectMake(30.0, 55.0, 200.0, 28.0)), kHelpTextKeyRect,
                 nil],
                [NSDictionary dictionaryWithObjectsAndKeys:
                 [NSArray arrayWithObjects:
                  NSLocalizedString(@"

- (void)displaySelectedHelpImage:(UIImage *)orgImage withTextArray:(NSArray *)textArr {
CGImageRef cgImage = [orgImage CGImage];
int pixelsWide              = CGImageGetWidth(cgImage);
int pixelsHigh              = CGImageGetHeight(cgImage);
int bitsPerComponent        = CGImageGetBitsPerComponent(cgImage);//8; // fixed
int bitsPerPixel            = CGImageGetBitsPerPixel(cgImage);//bitsPerComponent * numberOfCompnent;
int bytesPerRow             = CGImageGetBytesPerRow(cgImage);//(pixelsWide * bitsPerPixel) // 8; // bytes
int byteCount               = (bytesPerRow * pixelsHigh);
CGColorSpaceRef colorSpace  = CGImageGetColorSpace(cgImage);//CGColorSpaceCreateDeviceRGB();

// Allocate data
NSMutableData *data = [NSMutableData dataWithLength:byteCount];
// Create a bitmap context
CGContextRef context = CGBitmapContextCreate([data mutableBytes], pixelsWide, pixelsHigh, bitsPerComponent, bytesPerRow, colorSpace, kCGImageAlphaPremultipliedLast); //kCGImageAlphaPremultipliedLast);//kCGImageAlphaNoneSkipLast); //kCGImageAlphaOnly);
// Set the blend mode to copy to avoid any alteration of the source data or to invert to invert image
CGContextSetBlendMode(context, kCGBlendModeCopy);
// Set alpha
CGContextSetAlpha(context, 1.0);
// Color image
//CGContextSetRGBFillColor(context, 1 ,1, 1, 1.0);
//CGContextFillRect(context, CGRectMake(0.0, 0.0, pixelsWide, pixelsHigh));
// Draw the image to extract the alpha channel
CGContextDrawImage(context, CGRectMake(0.0, 0.0, pixelsWide, pixelsHigh), cgImage);

// add text to image
// Changes the origin of the user coordinate system in a context
//CGContextTranslateCTM (context, pixelsWide, pixelsHigh);
// Rotate context upright
//CGContextRotateCTM (context, -180. *  M_PI/180);
for (NSDictionary *dic in textArr) {

    CGContextSelectFont (context,
                         //todo
                         [[dic objectForKey:kHelpTextKeyFontName] UTF8String],
                         [[dic objectForKey:kHelpTextKeyFontSize] intValue],
                         kCGEncodingMacRoman);
    CGContextSetCharacterSpacing (context, 2);
    CGContextSetTextDrawingMode (context, kCGTextFillStroke);

    CGColorRef color = (CGColorRef)[dic objectForKey:kHelpTextKeyColor];
    CGRect rect;
    CGRectMakeWithDictionaryRepresentation((CFDictionaryRef)[dic objectForKey:kHelpTextKeyRect], &rect);

    CGContextSetFillColorWithColor(context, color);
    CGContextSetStrokeColorWithColor(context, color); 

    if ([[dic objectForKey:kHelpTextKeyString] isKindOfClass:[NSArray class]]) {
        for (NSString *str in [dic objectForKey:kHelpTextKeyString]) {
            CGContextShowTextAtPoint(context,
                                     rect.origin.x,
                                     pixelsHigh - rect.origin.y,
                                     [str cStringUsingEncoding:[NSString defaultCStringEncoding]],
                                     [str length]);
            rect.origin.y += [[dic objectForKey:kHelpTextKeyFontSize] intValue];
        }

Ответы [ 2 ]

1 голос
/ 18 марта 2012

Для тех, кто сталкивался с этой проблемой, она была решена с помощью базового класса coretext.

0 голосов
/ 05 марта 2012

Что содержат документы Word? Что вы подразумеваете под "не работает?"

Если они содержат строки, не могли бы вы просто добавить их в существующий файл localizable.strings? Поскольку это работает, в этом файле нет проблем с кодировкой, вы можете просто скопировать / вставить их из Word в файл localizable.strings в XCode.

...