1 頁 (共 1 頁)

請問如何從程式load string

發表於 : 04/14/2008 1:16 pm
mummy
我是剛開始學Cocoa, 1.請問如何從程式修改GUI string (EX: Button上原本)這些String是我先編輯好( 要放哪?? ) 2. 如要支援多國語言, 讓始用著選擇, 就show不同語言?? 有任何example可參考嗎???

發表於 : 04/14/2008 2:00 pm
bryanchang

發表於 : 04/14/2008 3:31 pm
mummy
有找過一些網站跟example( http://developer.apple.com/zh/...),但所有程式都是在開發程式時, UI string就先寫好, 是否可先吧strings 編輯好(要放在哪??plist??) 執行程式後在動態load (EX: like VC++ resource, laodstring),
可以給我一些範例or function name我在去查??

發表於 : 04/14/2008 9:07 pm
atst
mummy 寫:有找過一些網站跟example( http://developer.apple.com/zh/...),但所有程式都是在開發程式時, UI string就先寫好, 是否可先吧strings 編輯好(要放在哪??plist??) 執行程式後在動態load (EX: like VC++ resource, laodstring),
可以給我一些範例or function name我在去查??
//Header
@interface MyObject: NSObject
{
IBOutlet NSControl* aControl;
}
@end

//.m
@implementation MyObject
- (void)awakeFromNib
{
if(aControl)
[aControl setTitle:@"myString"];
}

大概是像這樣...要設Button或Control的字串,請找setTitle or setString or setStringValue.
要從resource 讀字串,請找NSBundle
若是要從檔案讀字串, NSStream, NSFileHandle, NSFileManager都會是你的方向,甚至最簡單的,去查 NSData.
做法百百種,你可能要對自己的問題描述的更清楚一點.

發表於 : 04/15/2008 10:33 am
mummy
thank, 因找了好幾天, 還是沒概念 >_<

因開發Application 都支援多國語言(ex: English, Simplifeied Chinese, Tranditional Chinese, Japanse....),且始用的人自己選擇要使用什麼語言,可隨時更換, 而不用跟著OS, 所以想要事先編輯好多國字串...
1. 是不是要建所有語言 .lproj (?? English.lproj, zh_TW.lproj....)
2. 是不是要從 .lproj load string?? 要如何load??

發表於 : 04/15/2008 11:05 am
rlong
mummy 寫:thank, 因找了好幾天, 還是沒概念 >_<

因開發Application 都支援多國語言(ex: English, Simplifeied Chinese, Tranditional Chinese, Japanse....),且始用的人自己選擇要使用什麼語言,可隨時更換, 而不用跟著OS, 所以想要事先編輯好多國字串...
1. 是不是要建所有語言 .lproj (?? English.lproj, zh_TW.lproj....)
2. 是不是要從 .lproj load string?? 要如何load??
沒錯,您說的完全正確!

例如:
File "xxx.m"

[panel setTitle:[[NSBundle mainBundle] localizedStringForKey:@"chooseFile"
value:@"Choose project file"
table:@"InfoPlist"]];


File "infoPlist.strings"

"chooseFile" = "拜託您,請選擇檔案 !"
:D

發表於 : 04/15/2008 4:59 pm
mummy
真是多謝, 有個方向, 就較容易查詢, 讀了NSBundle...
不過還是有點不等懂 .nib
我如要支援6種語言 不就要建6個(.nib and .strings)然後去編輯每個.nib??
還是有其他方法?? 建6個.nib,好像不太對?
有什麼範例可參考嗎?

發表於 : 04/15/2008 5:21 pm
rlong
您只要建好一種語言的 nib/.strings file 就可以了,
以後可以在這個 nib/.strings file 的 info 視窗去 add localization 其他語言的 nib file 以及 .strings file,
然後到各個語言的 .nib/.strings file 去修改每一個 string 成為該語言的 string

各種語言的 String 當然要您自己去添加囉,
XCODE 又不是翻譯機,他怎麼知道您在其他語言相對映的 string 是什麼東東啊!

發表於 : 04/15/2008 6:00 pm
atst
mummy 寫:真是多謝, 有個方向, 就較容易查詢, 讀了NSBundle...
不過還是有點不等懂 .nib
我如要支援6種語言 不就要建6個(.nib and .strings)然後去編輯每個.nib??
還是有其他方法?? 建6個.nib,好像不太對?
有什麼範例可參考嗎?
你的需求既然是多語系的話,除了NSBundle之外,你還需要一些其他的幫助。
建議你以localization為關鍵字,去查詢一下ADC,相信會有不錯的收獲。

發表於 : 04/16/2008 4:12 pm
mummy
不好意思, 我又來發問

順利建好多個 .lproj
( ex: en.lproj => main.nib InfoPlist.strings
fr.lproj => main.nib InfoPlist.strings
.......
)

但當始用的人, 選擇要使用什麼語言,要如何可隨時更換 GUI and String(ex: en->fr), 查了NSLocate (Available in Mac OS X v10.4 and later.)好像有function可用(setLocale),可是只支援 OS x v10.4, 我要用什麼funtion 才可用在(OS X 10.1.2 and later) 隨時更換 GUI and String