는 가장 좋은 방법은 무엇입하는 형식으로 지역화된 문자열에 AppleScript?

StackOverflow https://stackoverflow.com/questions/64146

  •  09-06-2019
  •  | 
  •  

문제

스크립트가 저장된 번들로,사용할 수 있습니다 localized string 명령을 찾기 위해 적절한 문자열로,예를 들어,에 Contents/Resources/English.lproj/Localizable.strings.이것이 형식 문자열에 가장 좋은 방법은 무엇을 채우기에 자리입니까?다시 말해서,어떤 것은 AppleScript 동의 +[NSString stringWithFormat:]?

하나의 아이디어가 사용하는 do shell scriptprintf(1).은 더 나은 방법이 있을까?

도움이 되었습니까?

해결책

이후 OS X10.10, 것이 가능한 모든 AppleScript 스크립트를 사용 목적-C.수있는 몇 가지 방법이 전화를 목표-C 방법 내에서 AppleScript,로에 대한 자세한 이 번역 가이드.Objective-C 개발자 나 같은 것 쪽으로 몰리는 이 구문,는 보간법의 매개 변수들의 값:

use framework "Foundation"

tell the current application's NSWorkspace's sharedWorkspace to openFile:"/Users/me/Desktop/filter.png" withApplication:"Preview"

결과:

true

+[NSString stringWithFormat:] 는 것은 까다로운 경우입니다.그것은며 vararg 목록으로 첫 번째 매개 변수,그래서 당신은 필요한 몇 가지 방법을 강제로 모두 형식 문자열 및 인수로 같은 방법을 매개 변수입니다.다음과 같은 오류가 발생하기 때문에,AppleScript 끝까지 전달하는 단 하나 있기 때문입으로 매개 변수를 기대하고,개념적으로 C 의 배열 NSStrings:

use framework "Foundation"

the current application's NSString's stringWithFormat:{"%lu documents", 8}

결과:

error "-[__NSArrayM length]: unrecognized selector sent to instance 0x7fd8d59f3bf0" number -10000

대신에,당신은 당신을 사용하여 문법이처럼 보이는 AppleScript 처리기 호출보다 Objective-C 메시지입니다.당신이 또한 필요를 강요하는 반환 값(@입 개체)로 text:

use framework "Foundation"

the current application's NSString's stringWithFormat_("%lu documents", 8) as text

결과:

"2087 documents"

The"매개 변수는"구문을@nlanza 언급한 포인트는 사실 AppleScript 은 것을 사용하여 가깝 NSInvocation 습니다.Objective-C,NSInvocation 할 수 있게 메시지를 보내는 개체의 배열과 함께 매개 변수 값없이 반드시 일치하는 각각의 가치를 특정한 매개 변수입니다.(참조하십시오 이 문서 의 몇 가지 예를 사용하여 NSInvocation 직접 있습니다.)

다른 팁

로 못생긴 그대로,전화 printf(1) 일반적인 솔루션입니다.

깨끗하지만,좀 더 복잡한 솔루션을 사용하는 애플 스튜디오,할 수있는 전화로 Objective-C 체/수업에서 당신의 애플 코드 call method 구문 설명 .

으로는,당신이 할 수있을 것을 다음과 같은 코드를 사용하면 됩니다:

call method "stringWithFormat:" of class "NSString" with parameters {formatString, arguments}

의 단점은 물론 이것은 당신이 쓸 필요가 AppleScript 스튜디오 응용 프로그램 대 쓰고 간단한 스크립트입니다.당신은 좋은 좀 더 유연성에서 일반적으로 스튜디오 애플 리케이션에도 불구하고,그것은 모두 함께한 끔찍한 경로 갈 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top