Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
ff295ad
Merge pull request #6784 from TrainLCD/chore/dev-from-master
TinyKitten Aug 29, 2026
127a141
ポートレートモードのデザインを刷新してライト/ダークの配色に対応 (#6783)
TinyKitten Aug 30, 2026
ed34a54
Bump version for canary release (#6786)
github-actions[bot] Aug 30, 2026
782db6c
ライトウェイトテーマをカナリア版限定で追加 (#6787)
TinyKitten Aug 30, 2026
7653f98
Bump version for canary release (#6789)
github-actions[bot] Aug 30, 2026
f9abc56
ポートレートモードのカード注記に起点駅を添えて通過表示を通過中の駅に限定 (#6790)
TinyKitten Aug 30, 2026
f207806
ライトウェイトテーマの寸法をセーフエリアを除いた実効領域から起こしてノッチとの重なりを解消 (#6791)
TinyKitten Aug 30, 2026
6f31aa9
Bump version for canary release (#6793)
github-actions[bot] Aug 30, 2026
413fe5d
ポートレートモードにのりかえ案内を追加してタイマーと画面タップで切り替える (#6794)
TinyKitten Aug 30, 2026
038aa41
Bump version for canary release (#6796)
github-actions[bot] Aug 30, 2026
2cb3f4f
ポートレートのタップ領域をScrollViewの内側へ移して駅一覧のスクロールを戻す (#6797)
TinyKitten Aug 30, 2026
aea7fbb
Bump version for canary release (#6799)
github-actions[bot] Aug 30, 2026
e12e63d
ポートレートモードの停車駅リストに各駅の到着予測を残り分で追加 (#6800)
TinyKitten Aug 30, 2026
1e8ac34
Bump version for canary release (#6802)
github-actions[bot] Aug 30, 2026
97509b3
既存UIのモックで路線ごとに出し分かる要素を実データで確認する規約を追記 (#6803)
TinyKitten Aug 30, 2026
202467c
Androidの端末内蔵TTSで識別子順ではなく音声メタデータを基に音声を選ぶ (#6804)
TinyKitten Aug 30, 2026
846b927
Bump version for canary release (#6806)
github-actions[bot] Aug 30, 2026
d12a19c
ポートレートモードのナンバリングを配色スキームで加工せず路線色のまま表示 (#6807)
TinyKitten Aug 30, 2026
a15af42
Bump version for canary release (#6809)
github-actions[bot] Aug 30, 2026
87423ca
ポートレートモードの列車種別バッジに上下の余白を追加 (#6810)
TinyKitten Aug 30, 2026
ea52724
Bump version for canary release (#6812)
github-actions[bot] Aug 30, 2026
2f40d14
省電力測位モードの説明文をプラットフォーム別に出し分け (#6813)
TinyKitten Aug 30, 2026
34f4299
ナンバリングアイコンの表示ズレを修正 (#6814)
TinyKitten Aug 31, 2026
321a397
バックグラウンドでのビットマップメモリ滞留を解消し画像アセットとスクリーンショット処理を是正 (#6815)
TinyKitten Aug 31, 2026
90fa15b
R8の最適化パスを有効化してDEXサイズを削減 (#6816)
TinyKitten Aug 31, 2026
1813151
Bump version for canary release (#6818)
github-actions[bot] Aug 31, 2026
39767e7
ポートレートの駅リストが環状線で進行方向と逆に並ぶ問題を修正 (#6819)
TinyKitten Aug 31, 2026
67439df
Bump version for canary release (#6821)
github-actions[bot] Aug 31, 2026
db323d1
ポートレートモードを試験的機能から外観設定へ移設して本番でも利用可能にする (#6822)
TinyKitten Aug 31, 2026
e2a9229
ポートレートモードの走行画面で広すぎた文字送りを解除 (#6823)
TinyKitten Aug 31, 2026
b95a0ea
Bump version for canary release (#6825)
github-actions[bot] Aug 31, 2026
4f22871
ライトウェイトテーマの乗換表記を「他N線」にして2行に収まる件数だけ並べる (#6826)
TinyKitten Aug 31, 2026
4808ead
環状線の行先表示を終着駅ではなく方面にする (#6827)
TinyKitten Sep 1, 2026
81d128e
Bump version for canary release (#6829)
github-actions[bot] Sep 1, 2026
ec41495
Bump version for canary release (#6830)
github-actions[bot] Sep 1, 2026
de95536
Bump version for canary release (#6832)
github-actions[bot] Sep 1, 2026
9bdb784
ポートレートモードの訴求導線を追加 (#6833)
TinyKitten Sep 2, 2026
8b2cc4d
Bump version for canary release (#6835)
github-actions[bot] Sep 2, 2026
b6ec2c0
タブレットのポートレートモードで上端の余白を下端と揃える (#6836)
TinyKitten Sep 2, 2026
4464bab
Bump version for canary release (#6838)
github-actions[bot] Sep 2, 2026
0720ef1
LEDテーマでウォークスルーが白いカードで表示される不具合を修正 (#6839)
TinyKitten Sep 2, 2026
6f39943
Bump version for canary release (#6841)
github-actions[bot] Sep 2, 2026
fd371c3
LEDテーマのポートレートモードをダークモードの配色に追従させる (#6842
TinyKitten Sep 2, 2026
6cb3c74
ポートレートモードの行き先表示をアプリの表示言語に追従させる (#6847)
TinyKitten Sep 3, 2026
6c74263
Bump version for canary release (#6844)
github-actions[bot] Sep 3, 2026
4fd0ff3
iOSの権限説明画面で本文の末尾が見切れる不具合を修正 (#6850)
TinyKitten Sep 5, 2026
f36ba94
Bump version for canary release (#6852)
github-actions[bot] Sep 5, 2026
14d6db1
Bump @xmldom/xmldom from 0.8.13 to 0.8.15 (#6846)
dependabot[bot] Sep 5, 2026
1e0f6f0
Bump fast-uri from 3.1.5 to 3.1.7 (#6845)
dependabot[bot] Sep 5, 2026
43d251e
走行画面のテーマ一覧で未公開テーマが本番ビルドにも出る不具合を修正 (#6854)
TinyKitten Sep 5, 2026
4659f0c
Bump browserslist from 4.28.2 to 4.28.9 (#6855)
dependabot[bot] Sep 5, 2026
81e4fcf
ポートレートモードで乗換路線の切り替えが確定しない不具合を修正 (#6856)
TinyKitten Sep 5, 2026
06fec91
Bump version for canary release (#6858)
github-actions[bot] Sep 5, 2026
91c1cc0
v10.15.0 をリリース
TinyKitten Sep 5, 2026
5369581
iOSの権限説明画面で本文末尾が欠ける問題を行送り固定の解除で修正 (#6859)
TinyKitten Sep 5, 2026
54ccad9
Bump version for canary release (#6861)
github-actions[bot] Sep 5, 2026
2f7e28f
権限説明画面の行間を末尾が欠けない上限まで戻す (#6862)
TinyKitten Sep 5, 2026
27b5ee7
Bump version for canary release (#6864)
github-actions[bot] Sep 5, 2026
56725a0
devをrelease/v10.15.0へマージし版数ファイルの衝突をリリース版数とビルド番号最大値で解決
TinyKitten Sep 5, 2026
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
2 changes: 2 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ Command mapping — the skills under `.claude/skills/` follow this table:
- Commands executed locally (e.g., `npm run lint && npm test && npm run typecheck`).
- Linked issues or tickets.
- Visual evidence for UI/UX deltas, each labeled with where the image came from. Any method is acceptable — a device or simulator capture (label it with the device name, e.g., Pixel 8, iPhone 15 Pro), a React Native Web rendering (`npm run web`), or a mockup / generated image. An image that is not a rendering of the implementation must say so in its label, so a reviewer never mistakes an illustration for observed behavior. If no image is attached, state the reason in that section instead of leaving it blank.
- Mockups and illustrations of existing UI must reproduce whatever the real screen branches on. A mockup is read as the spec, so an inaccurate one manufactures a wrong agreement even when the implementation is correct. Before drawing an element that varies by line, theme, or train type — station numbering shape, palette, train-type badge, pass/stop treatment — trace what decides it and take the value for the case you are depicting, instead of reusing the appearance of whichever component file you happened to read for its dimensions. Station numbering shape comes from the API's `lineSymbolShape`, and `src/__fixtures__/station.ts` lists the symbol-to-shape pairs (JR East `JA` / `JB` / `JC` / `JO` / `JS` / `JY` are `SQUARE`; Tokyo Metro and Toei lines are `ROUND`). If you cannot confirm a value, choose a case that does not include that element.
- If CI fails, pause reviews until you add root-cause notes plus reproduction steps or open an issue for blocking infrastructure problems.
- **Keep PR metadata in sync with the bookmark state.** Whenever you push new commits to an open PR, refresh both the PR title and the body:
- **Title**: re-evaluate whether the current title still describes the full scope of the bookmark. If new commits introduce a subject that the title does not cover, propose an updated title and, once approved by the user, apply it via `gh pr edit --title`.
Expand All @@ -178,6 +179,7 @@ Command mapping — the skills under `.claude/skills/` follow this table:
- [ ] Run `npm run lint`, `npm test`, and `npm run typecheck`; record summaries.
- [ ] Update documentation (README, docs/, inline comments) if behaviors shift.
- [ ] Attach visual evidence for UI changes, each labeled with its source (device name, React Native Web, or an explicit 'not a rendering of the implementation' note for mockups); when no image is attached, state why instead of leaving the section blank.
- [ ] For a mockup or illustration of existing UI, confirm the depicted case's real values for anything that branches by line, theme, or train type (e.g., `lineSymbolShape`) rather than reusing another component's appearance.

**For documentation-only tasks**

Expand Down
14 changes: 9 additions & 5 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,11 @@ android {
def enableShrinkResources = findProperty('android.enableShrinkResourcesInReleaseBuilds') ?: 'false'
shrinkResources enableShrinkResources.toBoolean()
minifyEnabled enableMinifyInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
// proguard-android.txt は -dontoptimize を含むため R8 の最適化パスが動かず、
// 収縮と難読化しか効かない。Google Play の技術品質要件 (2027年2月施行) は
// DEX に最適化・圧縮・難読化で最低25%のカバレッジを求めるため、最適化を有効にする。
// wearable モジュールは元から optimize 版を使っており、そちらへ揃える形になる
proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro"
def enablePngCrunchInRelease = findProperty('android.enablePngCrunchInReleaseBuilds') ?: 'true'
crunchPngs enablePngCrunchInRelease.toBoolean()
}
Expand All @@ -150,13 +154,13 @@ android {
dimension "environment"
applicationId "me.tinykitten.trainlcd.dev"
versionNameSuffix "-dev"
versionCode 100000665
versionName "10.14.0"
versionCode 100000711
versionName "10.15.0"
}
prod {
dimension "environment"
versionCode 100000665
versionName "10.14.0"
versionCode 100000711
versionName "10.15.0"
}
}
}
Expand Down
8 changes: 4 additions & 4 deletions android/wearable/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -85,13 +85,13 @@ android {
dimension = "environment"
applicationIdSuffix = ".dev"
versionNameSuffix = "-dev"
versionCode = 100000666
versionName = "10.14.0"
versionCode = 100000712
versionName = "10.15.0"
}
create("prod") {
dimension = "environment"
versionCode = 100000666
versionName = "10.14.0"
versionCode = 100000712
versionName = "10.15.0"
}
}

Expand Down
6 changes: 3 additions & 3 deletions app.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ const IS_DEV = process.env.APP_VARIANT === 'dev';
export default {
name: 'TrainLCD',
slug: 'trainlcd',
version: '10.14.0',
version: '10.15.0',
plugins: [
'expo-image',
'expo-font',
Expand Down Expand Up @@ -52,7 +52,7 @@ export default {
userInterfaceStyle: 'automatic',
// Expo SDK 57 の各モジュール(expo / expo-modules-core ほか)は podspec で iOS 16.4 以上を要求する
deploymentTarget: '16.4',
buildNumber: '2862',
buildNumber: '2885',
scheme: IS_DEV ? 'CanaryTrainLCD' : 'ProdTrainLCD',
bundleIdentifier: IS_DEV
? 'me.tinykitten.trainlcd.dev'
Expand All @@ -62,7 +62,7 @@ export default {
android: {
package: IS_DEV ? 'me.tinykitten.trainlcd.dev' : 'me.tinykitten.trainlcd',
permissions: [],
versionCode: 100000665,
versionCode: 100000711,
},
owner: 'trainlcd',
experiments: {
Expand Down
Binary file added assets/images/themes/low-power-sp.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/themes/low-power-tablet.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/images/themes/tokyo-metro-sp.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/images/themes/tokyo-metro-tablet.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
31 changes: 28 additions & 3 deletions assets/translations/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
"colorSchemeAuto": "Auto (follow system)",
"colorSchemeLight": "Light",
"colorSchemeDark": "Dark",
"colorSchemeDescription": "Changes the colors of screens such as settings and line selection. \"Auto\" follows your device's dark mode setting. The screen shown while riding keeps the colors of the selected theme. While the LED theme is selected, its own colors are used regardless of this setting.",
"colorSchemeDescription": "Changes the colors of screens such as settings and line selection. \"Auto\" follows your device's dark mode setting. The screen shown while riding keeps the colors of the selected theme, except for Portrait Mode, which follows this setting. While the LED theme is selected, its own colors are used regardless of this setting, except for the Portrait Mode display.",
"autoTheme": "Auto",
"themeDescriptionAuto": "Theme changes automatically based on the current line.",
"tokyoMetroLike": "Tokyo Metro",
Expand Down Expand Up @@ -273,6 +273,8 @@
"settingsWalkthroughDescription1": "Here you can customize TrainLCD to your liking. You can change the theme, configure auto announcements, and select display languages.",
"settingsWalkthroughTitle2": "Theme Settings",
"settingsWalkthroughDescription2": "Change your theme here. Choose from various styles like Tokyo Metro, Yamanote Line, or LED display style.",
"settingsWalkthroughColorSchemeTitle": "Appearance",
"settingsWalkthroughColorSchemeDescription": "Switch the app screens between light and dark. Portrait Mode — which shows a portrait layout while you hold your device upright — lives here too.",
"settingsWalkthroughTitle3": "Auto Announcements",
"settingsWalkthroughDescription3": "Configure auto announcement settings. You can receive voice guidance when arriving at stations.",
"settingsWalkthroughTitle4": "Display Languages",
Expand All @@ -298,10 +300,25 @@
"experimentalSettingsNotice": "Experimental features are under development and may change or be removed without notice.",
"portraitModeTitle": "Portrait Mode",
"portraitModeDescription": "When enabled, the running screen switches to a layout optimized for portrait orientation while you hold your device upright.",
"portraitPassLabel": "Pass",
"portraitNextStop": "Next %{station}",
"portraitNextStopFrom": "After %{current}: %{station}",
"portraitPassThrough": "Passing %{station}",
"portraitEtaUnit": "min.",
"portraitEtaSoon": "Soon",
"portraitPromoPromptTitle": "Easier to read held upright",
"portraitPromoPromptDescription": "Turn on Portrait Mode and the running screen switches to a portrait layout while you hold your device upright. Rotate back and the screen returns to its usual layout.",
"portraitPromoPromptDismiss": "Not now",
"portraitPromoPromptEnable": "Turn on",
"portraitPromoBannerTitle": "Portrait Mode is available",
"portraitPromoBannerSubtitle": "A layout made for holding your phone upright",
"portraitPromoSpotlightDescription": "While you hold your device upright, the running screen switches to a portrait layout. Tap here to turn it on.",
"portraitPromoSpotlightDismiss": "Later",
"telemetryDescription": "Your device's geographic coordinates are sent to our analytics server. The information is used only for analytics.",
"batterySettings": "Battery",
"powerSavingLocationTitle": "Power-saving location mode",
"powerSavingLocationDescription": "When enabled, location accuracy is lowered to a battery-friendly level and iOS pauses tracking automatically while you are stopped, further reducing battery drain and heat on long rides. The lower accuracy may delay or shift station detection and arrival announcements. The relaxed update frequency is already part of the default settings. It also turns on automatically while your device is in low-power mode.",
"powerSavingLocationDescriptionIOS": "When enabled, location accuracy is lowered to a battery-friendly level and iOS pauses tracking automatically while you are stopped, further reducing battery drain and heat on long rides. The lower accuracy may delay or shift station detection and arrival announcements. The relaxed update frequency is already part of the default settings. It also turns on automatically while your device is in low-power mode.",
"powerSavingLocationDescriptionAndroid": "When enabled, location accuracy is lowered to a battery-friendly level, further reducing battery drain and heat on long rides. The lower accuracy may delay or shift station detection and arrival announcements. The relaxed update frequency is already part of the default settings. It also turns on automatically while your device is in low-power mode.",
"destinationAgentEntryTitle": "Don't know the station name?",
"destinationAgentEntrySubtitle": "Ask AI where to go",
"destinationAgentTitle": "Ask AI for destinations",
Expand All @@ -318,5 +335,13 @@
"destinationAgentResetShort": "Reset",
"destinationAgentResetConfirm": "Clear this conversation?",
"destinationAgentSuggestionsError": "Failed to load suggestions",
"destinationAgentRetry": "Retry"
"destinationAgentRetry": "Retry",
"lowPowerTheme": "Lightweight",
"themeDescriptionLowPower": "An original theme with no animation that separates information by brightness alone. It stays readable on small screens and in monochrome.",
"arrivingIn": "到着まで",
"arrivingInEn": "Arriving in",
"stopped": "停車中",
"stoppedEn": "Stopped",
"transferShort": "のりかえ",
"transferShortEn": "Transfer"
}
31 changes: 28 additions & 3 deletions assets/translations/ja.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
"colorSchemeAuto": "自動(端末の設定に合わせる)",
"colorSchemeLight": "ライト",
"colorSchemeDark": "ダーク",
"colorSchemeDescription": "設定や路線選択などの操作画面の配色を変更します。「自動」では端末のダークモード設定に合わせて自動的に切り替わります。走行中の画面はテーマ設定の配色のままです。電光掲示板風テーマを選んでいる間は、この設定にかかわらず電光掲示板風テーマの配色が使われます。",
"colorSchemeDescription": "設定や路線選択などの操作画面の配色を変更します。「自動」では端末のダークモード設定に合わせて自動的に切り替わります。走行中の画面はテーマ設定の配色のままですが、ポートレートモードの表示だけはこの設定に追従します。電光掲示板風テーマを選んでいる間は、ポートレートモードの表示を除き、この設定にかかわらず電光掲示板風テーマの配色が使われます。",
"autoTheme": "自動",
"themeDescriptionAuto": "路線に応じて自動的にテーマが変わります。",
"tokyoMetroLike": "東京メトロ風",
Expand Down Expand Up @@ -274,6 +274,8 @@
"settingsWalkthroughDescription1": "ここでは、TrainLCDをあなた好みにカスタマイズできます。テーマの変更、自動アナウンスの設定、表示言語の選択が行えます。",
"settingsWalkthroughTitle2": "テーマ設定",
"settingsWalkthroughDescription2": "ここからテーマを変更できます。東京メトロ風、山手線風、電光掲示板風など、様々なスタイルから選べます。",
"settingsWalkthroughColorSchemeTitle": "外観",
"settingsWalkthroughColorSchemeDescription": "操作画面の配色をライト・ダークで切り替えられます。端末を縦に持っている間だけ縦画面用の表示にするポートレートモードも、ここにあります。",
"settingsWalkthroughTitle3": "自動アナウンス",
"settingsWalkthroughDescription3": "自動アナウンス機能の設定ができます。駅到着時に音声で案内を受け取ることができます。",
"settingsWalkthroughTitle4": "表示言語",
Expand All @@ -299,10 +301,25 @@
"experimentalSettingsNotice": "試験的機能は開発中のため、予告なく変更または削除されることがあります。",
"portraitModeTitle": "ポートレートモード",
"portraitModeDescription": "有効にすると、走行画面で端末を縦向きにした際に、縦画面に最適化されたデザインで表示します。",
"portraitPassLabel": "通過",
"portraitNextStop": "つぎは%{station}",
"portraitNextStopFrom": "%{current}のつぎは%{station}",
"portraitPassThrough": "%{station}を通過中",
"portraitEtaUnit": "分",
"portraitEtaSoon": "まもなく",
"portraitPromoPromptTitle": "縦のままで見やすくできます",
"portraitPromoPromptDescription": "ポートレートモードをオンにすると、端末を縦に持っている間だけ縦画面用の表示に切り替わります。横に戻せば今までどおりです。",
"portraitPromoPromptDismiss": "今はしない",
"portraitPromoPromptEnable": "オンにする",
"portraitPromoBannerTitle": "ポートレートモードが使えます",
"portraitPromoBannerSubtitle": "縦持ちのまま見やすい表示に",
"portraitPromoSpotlightDescription": "端末を縦に持っている間だけ、縦画面用の表示に切り替わります。ここをタップしてオンにしてください。",
"portraitPromoSpotlightDismiss": "あとで",
"telemetryDescription": "お使いの端末の地理的座標を解析用サーバに送信します。送信された情報は解析以外に使用されません。",
"batterySettings": "バッテリー",
"powerSavingLocationTitle": "省電力測位モード",
"powerSavingLocationDescription": "有効にすると、測位精度を電池優先まで下げ、停車中はiOSが測位を自動休止して、長時間の乗車での電池消費と発熱をさらに減らします。精度の低下により駅の判定や到着案内が遅れたりずれたりする場合があります。位置情報の更新頻度の緩和は標準設定に組み込まれています。端末の省電力モード中は自動的に有効になります。",
"powerSavingLocationDescriptionIOS": "有効にすると、測位精度を電池優先まで下げ、停車中はiOSが測位を自動休止して、長時間の乗車での電池消費と発熱をさらに減らします。精度の低下により駅の判定や到着案内が遅れたりずれたりする場合があります。位置情報の更新頻度の緩和は標準設定に組み込まれています。端末の省電力モード中は自動的に有効になります。",
"powerSavingLocationDescriptionAndroid": "有効にすると、測位精度を電池優先まで下げ、長時間の乗車での電池消費と発熱をさらに減らします。精度の低下により駅の判定や到着案内が遅れたりずれたりする場合があります。位置情報の更新頻度の緩和は標準設定に組み込まれています。端末の省電力モード中は自動的に有効になります。",
"destinationAgentEntryTitle": "駅名がわからなくても大丈夫",
"destinationAgentEntrySubtitle": "AIに行き先を相談する",
"destinationAgentTitle": "AIに行き先を相談",
Expand All @@ -319,5 +336,13 @@
"destinationAgentResetShort": "リセット",
"destinationAgentResetConfirm": "会話履歴を消去しますか?",
"destinationAgentSuggestionsError": "候補の取得に失敗しました",
"destinationAgentRetry": "再試行"
"destinationAgentRetry": "再試行",
"lowPowerTheme": "ライトウェイト",
"themeDescriptionLowPower": "アニメーションを使わず、明度の差だけで情報を分ける独自テーマです。小さい画面やモノクロ表示でも読めます。",
"arrivingIn": "到着まで",
"arrivingInEn": "Arriving in",
"stopped": "停車中",
"stoppedEn": "Stopped",
"transferShort": "のりかえ",
"transferShortEn": "Transfer"
}
Loading
Loading