Sí, pero no es lo que piensas.
Puede tomar un archivo de cadenas y cargarlo en un NSString
, y luego transformarlo en un diccionario usando -[NSString propertyListFromStringsFileFormat]
.
Esto le proporcionará una manera de almacenar sus cadenas traducidas a medida en la memoria.
En cuanto a su uso real, deberá definir funciones de traducción personalizadas. IE, no puedes usar NSLocalizedString()
y amigos más. Afortunadamente, genstrings
(la utilidad que se utiliza para la generación de archivos de cuerdas) le permite especificar custom function names:
genstrings -s "JPLocalizedString" ...
Esto significa que en el código, puede definir:
NSString* JPLocalizedString(NSString *key, NSString *comment) {
return [myLoadedStrings objectForKey:key];
}
Así como JPLocalizedStringFromTable()
, JPLocalizedStringFromTableInBundle()
, JPLocalizedStringWithDefaultValue()
. genstrings
recogerá todos esos. (En otras palabras, sólo porque NSLocalizedString
es una macro no significa que su versión tiene que ser)
Si usted hace esto y utiliza estas variantes JPLocalizedString
, a continuación, genstrings
aún generará los archivos de cadenas para usted (siempre que utilice el -s
bandera).
Una vez que se invocan estas funciones, puede usar el mecanismo de búsqueda que desee, volviendo por defecto a las versiones NSLocalizedString
si no puede encontrar nada.
5 años después hay un producto para esto. https://lokalise.co/ "Ya no es necesario volver a enviar su aplicación para su revisión.Use Lokalise iOS y Android SDK para actualizar cadenas y traducciones con unas pocas líneas de código. " – JoePasq