Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,11 @@ See [CONTRIBUTING.md](./CONTRIBUTING.md) for development guidelines and DCO requ

English · 中文 (简体/繁體) · 日本語 · 한국어 · Français · Español · Deutsch · Português · Tiếng Việt

Want to add a language? [Open a discussion](https://github.com/askimo-ai/askimo/discussions).
Translations are managed on Crowdin. Contributions welcome - no coding required.

[![Crowdin](https://badges.crowdin.net/askimo/localized.svg)](https://crowdin.com/project/askimo)

[Help translate Askimo →](https://askimo.chat/docs/contributing/contributing-localization/)

---

Expand Down
23 changes: 22 additions & 1 deletion crowdin.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,24 @@
# Crowdin configuration for Askimo i18n
# Docs: https://developer.crowdin.com/configuration-file/
#
# CLI usage:
# crowdin upload sources # push updated messages.properties to Crowdin
# crowdin upload translations # push existing translations (one-time catch-up)
# crowdin download # pull translations from Crowdin into this repo

files:
- source: /desktop-shared/src/main/resources/i18n/messages.properties
translation: /desktop-shared/src/main/resources/i18n/%original_file_name%_%two_letters_code%.properties
translation: /desktop-shared/src/main/resources/i18n/messages_%two_letters_code%.properties
languages_mapping:
two_letters_code:
# Crowdin uses IETF tags (hyphen); Java locale file names use underscore
zh-CN: zh_CN
zh-TW: zh_TW
ja: ja_JP
ko: ko_KR
pt-BR: pt_BR
vi: vi_VN
# These map directly (language-only files)
de: de
es: es
fr: fr
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,15 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.LinkAnnotation
import androidx.compose.ui.text.SpanStyle
import androidx.compose.ui.text.TextLinkStyles
import androidx.compose.ui.text.buildAnnotatedString
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.style.TextDecoration
import androidx.compose.ui.text.withLink
import androidx.compose.ui.unit.dp
import io.askimo.core.AppConstants.DOMAIN
import io.askimo.core.config.AppConfig
import io.askimo.core.i18n.LocalizationManager
import io.askimo.ui.common.i18n.stringResource
Expand Down Expand Up @@ -106,7 +113,6 @@ fun generalSettingsSection() {
private fun languageSelectionCard() {
val currentLocale by ThemePreferences.locale.collectAsState()
var languageDropdownExpanded by remember { mutableStateOf(false) }

val availableLanguages = remember { LocalizationManager.availableLocales }

Card(
Expand Down Expand Up @@ -185,6 +191,30 @@ private fun languageSelectionCard() {
}
}

val crowdinUrl = "https://$DOMAIN/docs/contributing/contributing-localization/"
val annotatedString = buildAnnotatedString {
append(stringResource("settings.app.language.translation.help") + " ")
withLink(
LinkAnnotation.Url(
url = crowdinUrl,
styles = TextLinkStyles(
style = SpanStyle(
color = MaterialTheme.colorScheme.primary,
textDecoration = TextDecoration.Underline,
),
),
),
) {
append(stringResource("settings.app.language.translation.contribute"))
}
}
Text(
text = annotatedString,
style = MaterialTheme.typography.bodySmall.copy(
color = MaterialTheme.colorScheme.onSecondaryContainer.copy(alpha = 0.6f),
),
)

HorizontalDivider()

// Preferred AI Response Language
Expand Down
2 changes: 2 additions & 0 deletions desktop-shared/src/main/resources/i18n/messages.properties
Original file line number Diff line number Diff line change
Expand Up @@ -638,6 +638,8 @@ settings.font.size=Font Size
settings.shortcuts=Keyboard Shortcuts
settings.shortcuts.description=View all available keyboard shortcuts to improve your productivity
settings.app.language=Application Language
settings.app.language.translation.help=See something wrong? Help us improve the translation.
settings.app.language.translation.contribute=Contribute on Crowdin
settings.ai.response.language=Preferred response language
settings.ai.response.language.description=Force AI to respond in a specific language (leave empty for auto-detect)
settings.ai.response.language.auto=Auto-detect
Expand Down
2 changes: 2 additions & 0 deletions desktop-shared/src/main/resources/i18n/messages_de.properties
Original file line number Diff line number Diff line change
Expand Up @@ -642,6 +642,8 @@ settings.font.size=Schriftgröße
settings.shortcuts=Tastenkombinationen
settings.shortcuts.description=Alle verfügbaren Tastenkombinationen anzeigen, um Ihre Produktivität zu steigern
settings.app.language=App-Sprache
settings.app.language.translation.help=Sehen Sie einen Fehler? Helfen Sie uns, die Übersetzung zu verbessern.
settings.app.language.translation.contribute=Auf Crowdin beitragen
settings.ai.response.language=Bevorzugte Antwortsprache
settings.ai.response.language.description=KI auf eine bestimmte Sprache für Antworten festlegen (leer lassen für automatische Erkennung)
settings.ai.response.language.auto=Automatische Erkennung
Expand Down
2 changes: 2 additions & 0 deletions desktop-shared/src/main/resources/i18n/messages_es.properties
Original file line number Diff line number Diff line change
Expand Up @@ -641,6 +641,8 @@ settings.font.size=Tamaño de fuente
settings.shortcuts=Atajos
settings.shortcuts.description=Ver todas las combinaciones de teclas disponibles para mejorar su productividad
settings.app.language=Idioma de la aplicación
settings.app.language.translation.help=¿Ves algo incorrecto? Ayúdanos a mejorar la traducción.
settings.app.language.translation.contribute=Contribuir en Crowdin
settings.ai.response.language=Idioma de respuesta preferido
settings.ai.response.language.description=Forzar a la IA a responder en un idioma específico (dejar vacío para detección automática)
settings.ai.response.language.auto=Detección automática
Expand Down
2 changes: 2 additions & 0 deletions desktop-shared/src/main/resources/i18n/messages_fr.properties
Original file line number Diff line number Diff line change
Expand Up @@ -643,6 +643,8 @@ settings.font.size=Taille de police
settings.shortcuts=Raccourcis clavier
settings.shortcuts.description=Afficher tous les raccourcis clavier disponibles pour améliorer votre productivité
settings.app.language=Langue de l'application
settings.app.language.translation.help=Vous voyez une erreur ? Aidez-nous à améliorer la traduction.
settings.app.language.translation.contribute=Contribuer sur Crowdin
settings.ai.response.language=Langue de réponse préférée
settings.ai.response.language.description=Forcer l'IA à répondre dans une langue spécifique (laisser vide pour détection automatique)
settings.ai.response.language.auto=Détection automatique
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -642,6 +642,8 @@ settings.font.size=フォントサイズ
settings.shortcuts=ショートカット
settings.shortcuts.description=生産性を向上させるために、利用可能なすべてのキーボードショートカットを表示します
settings.app.language=アプリ言語
settings.app.language.translation.help=何か間違いがありますか?翻訳の改善にご協力ください。
settings.app.language.translation.contribute=Crowdinで貢献する
settings.ai.response.language=優先応答言語
settings.ai.response.language.description=AIに特定の言語で応答させる(空欄で自動検出)
settings.ai.response.language.auto=自動検出
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -641,6 +641,8 @@ settings.font.size=글꼴 크기
settings.shortcuts=단축키
settings.shortcuts.description=생산성을 높이기 위해 사용 가능한 모든 키보드 단축키를 확인하세요
settings.app.language=애플리케이션 언어
settings.app.language.translation.help=잘못된 부분이 있나요? 번역 개선에 도움을 주세요.
settings.app.language.translation.contribute=Crowdin에서 기여하기
settings.ai.response.language=선호 응답 언어
settings.ai.response.language.description=AI가 특정 언어로 응답하도록 강제 (비워두면 자동 감지)
settings.ai.response.language.auto=자동 감지
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -643,6 +643,8 @@ settings.font.size=Tamanho da Fonte
settings.shortcuts=Atalhos
settings.shortcuts.description=Veja todos os atalhos de teclado disponíveis para melhorar sua produtividade
settings.app.language=Idioma do Aplicativo
settings.app.language.translation.help=Vê algo de errado? Ajude-nos a melhorar a tradução.
settings.app.language.translation.contribute=Contribuir no Crowdin
settings.ai.response.language=Idioma de resposta preferido
settings.ai.response.language.description=Forçar a IA a responder em um idioma específico (deixe vazio para detecção automática)
settings.ai.response.language.auto=Detecção automática
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -638,6 +638,8 @@ settings.font.size=Cỡ chữ
settings.shortcuts=Phím tắt
settings.shortcuts.description=Xem tất cả các phím tắt có sẵn để nâng cao năng suất làm việc
settings.app.language=Ngôn ngữ ứng dụng
settings.app.language.translation.help=Bạn thấy có gì đó sai? Hãy giúp chúng tôi cải thiện bản dịch.
settings.app.language.translation.contribute=Đóng góp trên Crowdin
settings.ai.response.language=Ngôn ngữ phản hồi ưu tiên
settings.ai.response.language.description=Bắt AI phản hồi bằng một ngôn ngữ cụ thể (để trống để tự động phát hiện)
settings.ai.response.language.auto=Tự động phát hiện
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -642,6 +642,8 @@ settings.font.size=字号
settings.shortcuts=快捷键
settings.shortcuts.description=查看所有可用的键盘快捷键,以提升您的工作效率
settings.app.language=应用语言
settings.app.language.translation.help=发现错误?帮助我们改进翻译。
settings.app.language.translation.contribute=在 Crowdin 上贡献
settings.ai.response.language=首选响应语言
settings.ai.response.language.description=强制AI使用特定语言响应(留空则自动检测)
settings.ai.response.language.auto=自动检测
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -642,6 +642,8 @@ settings.font.size=字型大小
settings.shortcuts=快捷鍵
settings.shortcuts.description=查看所有可用的鍵盤快捷鍵,以提升您的工作效率
settings.app.language=應用程式語言
settings.app.language.translation.help=發現錯誤?幫助我們改進翻譯。
settings.app.language.translation.contribute=在 Crowdin 上貢獻
settings.ai.response.language=偏好回應語言
settings.ai.response.language.description=強制AI使用特定語言回應(留空則自動偵測)
settings.ai.response.language.auto=自動偵測
Expand Down
Loading