2016-03-21 46 views
0

你好,我運行命令國際化鏢庫將無法運行

pub run intl:extract_to_arb --output-dir=target/directory 

而是我拿這個錯誤信息:

Package "intl" is not an immediate dependency. 
Cannot run executables in transitive dependencies. 

我遵循這個網站https://www.dartdocs.org/documentation/intl/0.11.9/index.html和我使用的API 1.15.1

還有另一種方法可以做到這一點?

+1

錯誤消息表明您沒有在'pubspec.yaml'中將'intl'添加到您的依賴項中。你是否? –

+0

好的。它解決了我的問題。但輸出文件必須在啓動此命令之前創建?我拿這個:FileSystemException:無法打開文件,路徑='--output-dir = /卷/大小寫敏感部分/項目/ text.dart'(操作系統錯誤:沒有這樣文件或目錄,errno = 2) –

+0

它是否只存在不存在的文件「text.dart」,或者是否存在/ Volumes/Case Sensitive Part/Projects /目錄?我還沒有使用過消息提取。嘗試一個相對目錄而不是絕對的目錄。我假設輸出應該在同一個項目中創建?如果路徑包含空格,則還需要將路徑換成引號。 –

回答

0

最後我有一個解決辦法:

pub run intl:extract_to_arb --output-dir="/Volumes/Case Sensitive Part/Projects/MyProjectFolder/" web/dart/**/*.dart 

此生成一個文件intl_messages.arb(一個JSON的翻譯)。 從翻譯就可以收到一些文件,這樣

  • intl_messages_fr.arb
  • intl_messages_de.arb
  • intl_messages_ {}現場向.arb概括。

在此之後:

pub run intl:generate_from_arb --generated-file-prefix=notneeded web/dart/**/*.dart ./intl_messages_fr.arb ./intl_messages_de.arb ./intl_messages_{locale}.arb 

這生成一個名爲類鏢: 「messages_all.dart」 和飛鏢類名爲 「messages_messages_de.dart」, 「messages_messages_fr.dart」,「messages_messages_ {}的語言環境。鏢」。

只剩下一個問題。我從last命令generate_from_arb收到一些信息:

在intl_messages_it中找不到@@ locale或_locale字段,假定基於文件名的'messages_it'。 在intl_messages_de中找不到@@ locale或_locale字段,假定基於文件名的'messages_de'。

我應該把這個標籤@@ locale(@@ it)放在翻譯arb文件中。