@@ -774,6 +774,43 @@ def _xibs(
774774 processed_origins = processed_origins ,
775775 )
776776
777+ def _xcstrings (
778+ * ,
779+ actions ,
780+ apple_mac_toolchain_info ,
781+ files ,
782+ output_discriminator ,
783+ parent_dir ,
784+ platform_prerequisites ,
785+ rule_label ,
786+ ** _kwargs ):
787+ """Process xcstrings files."""
788+ lproj_files = []
789+ processed_origins = {}
790+ for file in files .to_list ():
791+ basename = paths .replace_extension (file .basename , "" )
792+ out_path = paths .join ("xcstrings" , parent_dir or "" , basename )
793+ out_dir = intermediates .directory (
794+ actions = actions ,
795+ target_name = rule_label .name ,
796+ output_discriminator = output_discriminator ,
797+ dir_name = out_path ,
798+ )
799+ processed_origins [out_dir .short_path ] = [file .short_path ]
800+ resource_actions .compile_xcstrings (
801+ actions = actions ,
802+ input_file = file ,
803+ output_dir = out_dir ,
804+ platform_prerequisites = platform_prerequisites ,
805+ xctoolrunner = apple_mac_toolchain_info .xctoolrunner ,
806+ )
807+ lproj_files .append (out_dir )
808+
809+ return struct (
810+ files = [(processor .location .resource , parent_dir , depset (lproj_files ))],
811+ processed_origins = processed_origins ,
812+ )
813+
777814def _noop (
778815 * ,
779816 parent_dir ,
@@ -834,5 +871,6 @@ PROVIDER_TO_FIELD_ACTION = {
834871 "strings" : (_plists_and_strings , False ),
835872 "texture_atlases" : (_texture_atlases , False ),
836873 "unprocessed" : (_noop , False ),
874+ "xcstrings" : (_xcstrings , False ),
837875 "xibs" : (_xibs , True ),
838876}
0 commit comments