Localizando el menú Cortar | Copiar | Pegar en iOS

Tengo algunos problemas al hacer una aplicación danesa. (El idioma, no la pastelería)

He configurado la CFBundleDevelopmentRegion para da_DK para danés en mi info.plist, pero la ventana emergente que aparece para el ingreso de texto todavía está en inglés, incluso en teléfonos con sistema operativo danés.

enter image description here

¿Cómo en el nombre de Jobs puedo cambiar esto?

El dispositivo de prueba es un iPhone 4S sin jailbreak que ejecuta iOS 5.1 con danés como configuración de iOS y una cuenta de iTunes asociada.

No uso .xibs para diseños. todas las interfaces están progtwigdas como viewcontrollers.

En el árbol de archivos de Xcode (Project Navigator) seleccione su proyecto. en el panel de la derecha, seleccione su proyecto nuevamente. seleccione Información y agregue su idioma.

configurar i18n


Creé un proyecto de muestra , este es el resultado:

enter image description here

Puede hacerlo directamente en info.plist. Algo como esto:

CFBundleDevelopmentRegion en CFBundleLocalizations  en de es ja  

Intente agregar / establecer el indicador “Los recursos traducidos pueden mezclarse” en Info.plist en SÍ.

Debe localizar su aplicación en danés para que los elementos de IU estándar aparezcan en ese idioma. Esto es para evitar tener una IU con idiomas mixtos.

Si no usa xibs, generalmente haría esto agregando un archivo Localizable.strings a su proyecto. En el cuadro de diálogo “Agregar archivo” de Xcode, puede usar la plantilla “Archivo de cadenas” (en “Recursos”) para esto.

Para localizar realmente el archivo de cadenas, abra el inspector de archivos ( 1 ) y haga clic en el botón + en la sección “Localización”. Finalizará con el archivo que se muestra como un grupo en el navegador del proyecto, con una entrada secundaria para cada idioma.

El archivo de cadenas tiene el formato:

 "Label_Text" = "Smørrebrød"; 

(no olvides el punto y coma)

Para utilizar cadenas localizadas en su código, puede usar la macro NSLocalizedString esta manera:

 myLabel.text = NSLocalizedString(@"Label_Text", nil); 

(El segundo parámetro es para un comentario. Esto puede ser útil si usa la herramienta genstrings para extraer cadenas localizables de su código y entregar el archivo resultante a un traductor profesional).

Si usa las cadenas en inglés como claves, puede dejar la versión en inglés de Localizable.strings vacía (pero no la elimine).

Tener un archivo Localizable.strings en el idioma que el usuario ha seleccionado también hará que los elementos de UI estándar, como el menú de edición, el selector de fotos, etc., aparezcan en ese idioma.

Si no puede hacer que funcione de la manera oficial, tal como lo proporciona @vikingosegundo, puede hacerlo con algo de ingeniería creativa (Creative como en, oh dios mío que es peligroso). Descubrí este método cuando accidentalmente [NSBundle localizedStringForKey:value:tableName:] .

1) Agregue una categoría a NSBundle con los siguientes métodos:

 #import  + (void) load { Method original, swizzled; original = class_getInstanceMethod(self, @selector(localizedStringForKey:value:table:)); swizzled = class_getInstanceMethod(self, @selector(swizzled_localizedStringForKey:value:table:)); method_exchangeImplementations(original, swizzled); } - (NSString*) swizzled_localizedStringForKey:(NSString *)key value:(NSString *)value table:(NSString *)tableName { NSLog(@"Key: %@. Value: %@", key, value); return [self swizzled_localizedStringForKey: key value:value table:tableName]; } 

2) Donde simplemente registro la clave / valor, quiere poner un bloque if ([key isEqualToString: xxx]). Allí, desea capturar (al menos algunos de) los siguientes valores clave: Cortar, Copiar [Menú], Seleccionar, Seleccionar todo, Pegar, Eliminar [Menú], Reemplazar …, Definir, Hablar, Pausa. Estos son los valores predeterminados que pueden aparecer allí.

3) Cuando haya capturado el valor, puede buscar en una tabla personalizada o usar valores codificados. Si busca en una tabla personalizada, asegúrese de tener un truco en su método swizzled para evitar el bucle infinito en su tabla personalizada.

NB: ¿Por qué necesitas swizzle? Porque esto anula todo el texto de Apple para su aplicación. Aún querrás los valores predeterminados para todas las demás cadenas, por lo que necesitas usar Swizzle para obtener los valores predeterminados para las cadenas que no te interesan.

Buena suerte. Pablo

Busque si su .xib está localizado (lo encontrará en el inspector en el panel derecho) si es así vaya a su Proyecto / Configuración de destino presione la tecla + -Signar y seleccione “Duplicar inglés a danés” o algo que signifique lo mismo (No puedo verificar el artículo correcto en este momento)

Por cierto, se llama iPhone 4S.