Проблема с импортом текста корейской локализации в xcode

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

.txt, однажды введенный в localizable.strings, работает нормально, но скопированный из документа 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];
        }

person Zeb99    schedule 04.03.2012    source источник


Ответы (2)


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

person Zeb99    schedule 18.03.2012

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

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

person Clafou    schedule 05.03.2012
comment
Спасибо за ответ. Да, это то, что я пытался. С тех пор я обнаружил, что это не имеет ничего общего со словом. Это пользовательский вид, имеющий проблемы с отображением незападных символов. - person Zeb99; 06.03.2012
comment
Я преобразовал корейский текст в UTF-16, но это не решило проблему. Локализованные экраны справки были разработаны не мной, а кем-то другим. То, как они отображаются, похоже, вызывает проблему с незападными символами: - person Zeb99; 11.03.2012